{"version":3,"file":"197.ed09e4b16b068af08893.js","mappings":"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","sources":["webpack://spheeres/./js/libs/attrchange.js","webpack://spheeres/./js/libs/attrchange_ext.js","webpack://spheeres/./js/libs/jquery-qrcode-0.18.0.js","webpack://spheeres/./js/libs/knockout-selectize.js","webpack://spheeres/./js/libs/selectize/microplugin.js","webpack://spheeres/./js/libs/selectize/plugins/dropdown_direction.js","webpack://spheeres/./js/libs/selectize/plugins/hidden_textfield.js","webpack://spheeres/./js/libs/selectize/plugins/scroll_parent.js","webpack://spheeres/./js/libs/selectize/selectize.js","webpack://spheeres/./js/libs/selectize/sifter.js"],"sourcesContent":["/*\r\nA simple jQuery function that can add listeners on attribute change.\r\nhttp://meetselva.github.io/attrchange/\r\n\r\nAbout License:\r\nCopyright (C) 2013-2014 Selvakumar Arumugam\r\nYou may use attrchange plugin under the terms of the MIT Licese.\r\nhttps://github.com/meetselva/attrchange/blob/master/MIT-License.txt\r\n */\r\n(function ($) {\r\n\tfunction isDOMAttrModifiedSupported() {\r\n\t\tvar p = document.createElement('p');\r\n\t\tvar flag = false;\r\n\r\n\t\tif (p.addEventListener) {\r\n\t\t\tp.addEventListener('DOMAttrModified', function () {\r\n\t\t\t\tflag = true\r\n\t\t\t}, false);\r\n\t\t} else if (p.attachEvent) {\r\n\t\t\tp.attachEvent('onDOMAttrModified', function () {\r\n\t\t\t\tflag = true\r\n\t\t\t});\r\n\t\t} else { return false; }\r\n\t\tp.setAttribute('id', 'target');\r\n\t\treturn flag;\r\n\t}\r\n\r\n\tfunction checkAttributes(chkAttr, e) {\r\n\t\tif (chkAttr) {\r\n\t\t\tvar attributes = this.data('attr-old-value');\r\n\r\n\t\t\tif (e.attributeName.indexOf('style') >= 0) {\r\n\t\t\t\tif (!attributes['style'])\r\n\t\t\t\t\tattributes['style'] = {}; //initialize\r\n\t\t\t\tvar keys = e.attributeName.split('.');\r\n\t\t\t\te.attributeName = keys[0];\r\n\t\t\t\te.oldValue = attributes['style'][keys[1]]; //old value\r\n\t\t\t\te.newValue = keys[1] + ':'\r\n\t\t\t\t\t\t+ this.prop(\"style\")[$.camelCase(keys[1])]; //new value\r\n\t\t\t\tattributes['style'][keys[1]] = e.newValue;\r\n\t\t\t} else {\r\n\t\t\t\te.oldValue = attributes[e.attributeName];\r\n\t\t\t\te.newValue = this.attr(e.attributeName);\r\n\t\t\t\tattributes[e.attributeName] = e.newValue;\r\n\t\t\t}\r\n\r\n\t\t\tthis.data('attr-old-value', attributes); //update the old value object\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize Mutation Observer\r\n\tvar MutationObserver = window.MutationObserver\r\n\t\t\t|| window.WebKitMutationObserver;\r\n\r\n\t$.fn.attrchange = function (a, b) {\r\n\t\tif (typeof a == 'object') {//core\r\n\t\t\tvar cfg = {\r\n\t\t\t\ttrackValues: false,\r\n\t\t\t\tcallback: $.noop\r\n\t\t\t};\r\n\t\t\t//backward compatibility\r\n\t\t\tif (typeof a === \"function\") { cfg.callback = a; } else { $.extend(cfg, a); }\r\n\r\n\t\t\tif (cfg.trackValues) { //get attributes old value\r\n\t\t\t\tthis.each(function (i, el) {\r\n\t\t\t\t\tvar attributes = {};\r\n\t\t\t\t\tfor (var attr, i = 0, attrs = el.attributes, l = attrs.length; i < l; i++) {\r\n\t\t\t\t\t\tattr = attrs.item(i);\r\n\t\t\t\t\t\tattributes[attr.nodeName] = attr.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$(this).data('attr-old-value', attributes);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (MutationObserver) { //Modern Browsers supporting MutationObserver\r\n\t\t\t\tvar mOptions = {\r\n\t\t\t\t\tsubtree: false,\r\n\t\t\t\t\tattributes: true,\r\n\t\t\t\t\tattributeOldValue: cfg.trackValues\r\n\t\t\t\t};\r\n\t\t\t\tvar observer = new MutationObserver(function (mutations) {\r\n\t\t\t\t\tmutations.forEach(function (e) {\r\n\t\t\t\t\t\tvar _this = e.target;\r\n\t\t\t\t\t\t//get new value if trackValues is true\r\n\t\t\t\t\t\tif (cfg.trackValues) {\r\n\t\t\t\t\t\t\te.newValue = $(_this).attr(e.attributeName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ($(_this).data('attrchange-status') === 'connected') { //execute if connected\r\n\t\t\t\t\t\t\tcfg.callback.call(_this, e);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn this.data('attrchange-method', 'Mutation Observer').data('attrchange-status', 'connected')\r\n\t\t\t\t\t\t.data('attrchange-obs', observer).each(function () {\r\n\t\t\t\t\t\t\tobserver.observe(this, mOptions);\r\n\t\t\t\t\t\t});\r\n\t\t\t} else if (isDOMAttrModifiedSupported()) { //Opera\r\n\t\t\t\t//Good old Mutation Events\r\n\t\t\t\treturn this.data('attrchange-method', 'DOMAttrModified').data('attrchange-status', 'connected').on('DOMAttrModified', function (event) {\r\n\t\t\t\t\tif (event.originalEvent) { event = event.originalEvent; }//jQuery normalization is not required \r\n\t\t\t\t\tevent.attributeName = event.attrName; //property names to be consistent with MutationObserver\r\n\t\t\t\t\tevent.oldValue = event.prevValue; //property names to be consistent with MutationObserver\r\n\t\t\t\t\tif ($(this).data('attrchange-status') === 'connected') { //disconnected logically\r\n\t\t\t\t\t\tcfg.callback.call(this, event);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else if ('onpropertychange' in document.body) { //works only in IE\t\t\r\n\t\t\t\treturn this.data('attrchange-method', 'propertychange').data('attrchange-status', 'connected').on('propertychange', function (e) {\r\n\t\t\t\t\te.attributeName = window.event.propertyName;\r\n\t\t\t\t\t//to set the attr old value\r\n\t\t\t\t\tcheckAttributes.call($(this), cfg.trackValues, e);\r\n\t\t\t\t\tif ($(this).data('attrchange-status') === 'connected') { //disconnected logically\r\n\t\t\t\t\t\tcfg.callback.call(this, e);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t} else if (typeof a == 'string' && $.fn.attrchange.hasOwnProperty('extensions') &&\r\n\t\t\t\t$.fn.attrchange['extensions'].hasOwnProperty(a)) { //extensions/options\r\n\t\t\treturn $.fn.attrchange['extensions'][a].call(this, b);\r\n\t\t}\r\n\t}\r\n})(jQuery);","/*\r\nAn extension for attrchange jQuery plugin\r\nhttp://meetselva.github.io/attrchange/\r\n\r\nAbout License:\r\nCopyright (C) 2013-2014 Selvakumar Arumugam\r\nYou may use attrchange ext plugin under the terms of the MIT Licese.\r\nhttps://github.com/meetselva/attrchange/blob/master/MIT-License.txt\r\n */\r\n$.fn.attrchange.extensions = { /*attrchange option/extension*/\r\n\tdisconnect: function (o) {\r\n\t\tif (typeof o !== 'undefined' && o.isPhysicalDisconnect) {\r\n\t\t\treturn this.each(function () {\r\n\t\t\t\tvar attrchangeMethod = $(this).data('attrchange-method');\r\n\t\t\t\tif (attrchangeMethod == 'propertychange' || attrchangeMethod == 'DOMAttrModified') {\r\n\t\t\t\t\t$(this).off(attrchangeMethod);\r\n\t\t\t\t} else if (attrchangeMethod == 'Mutation Observer') {\r\n\t\t\t\t\t$(this).data('attrchange-obs').disconnect();\r\n\t\t\t\t} else if (attrchangeMethod == 'polling') {\r\n\t\t\t\t\tclearInterval($(this).data('attrchange-polling-timer'));\r\n\t\t\t\t}\r\n\t\t\t}).removeData(['attrchange-method', 'attrchange-status']);\r\n\t\t} else { //logical disconnect\r\n\t\t\treturn this.data('attrchange-status', 'disconnected'); //set a flag that prevents triggering callback onattrchange\r\n\t\t}\r\n\t},\r\n\tremove: function (o) {\r\n\t\treturn $.fn.attrchange.extensions['disconnect'].call(this, { isPhysicalDisconnect: true });\r\n\t},\r\n\tgetProperties: function (o) {\r\n\t\tvar attrchangeMethod = $(this).data('attrchange-method');\r\n\t\tvar pollInterval = $(this).data('attrchange-pollInterval');\r\n\t\treturn {\r\n\t\t\tmethod: attrchangeMethod,\r\n\t\t\tisPolling: (attrchangeMethod == 'polling'),\r\n\t\t\tpollingInterval: (typeof pollInterval === 'undefined') ? 0 : parseInt(pollInterval, 10),\r\n\t\t\tstatus: (typeof attrchangeMethod === 'undefined') ? 'removed' : $(this).data('attrchange-status')\r\n\t\t}\r\n\t},\r\n\treconnect: function (o) {//reconnect possible only when there is a logical disconnect\r\n\t\treturn this.data('attrchange-status', 'connected');\r\n\t},\r\n\tpolling: function (o) {\r\n\t\tif (o.hasOwnProperty('isComputedStyle') && o.isComputedStyle == 'true') { /* extensive and slow - polling to check on computed style properties */\r\n\t\t\treturn this.each(function (i, _this) {\r\n\t\t\t\tif (!o.hasOwnProperty('properties') ||\r\n\t\t\t\t\t\tObject.prototype.toString.call(o.properties) !== '[object Array]' ||\r\n\t\t\t\t\t\t\to.properties.length == 0) { return false; } //return if no properties found\r\n\t\t\t\tvar attributes = {}; //store computed properties\r\n\t\t\t\tfor (var i = 0; i < o.properties.length; i++) {\r\n\t\t\t\t\tattributes[o.properties[i]] = $(this).css(o.properties[i]);\r\n\t\t\t\t}\r\n\t\t\t\tvar _this = this;\r\n\t\t\t\t$(this).data('attrchange-polling-timer', setInterval(function () {\r\n\t\t\t\t\tvar changes = {}, hasChanges = false; // attrName: { oldValue: xxx, newValue: yyy}\t\t\t\t\t\t\r\n\t\t\t\t\tfor (var comuptedVal, i = 0; i < o.properties.length; i++) {\r\n\t\t\t\t\t\tcomuptedVal = $(_this).css(o.properties[i]);\r\n\t\t\t\t\t\tif (attributes[o.properties[i]] !== comuptedVal) {\r\n\t\t\t\t\t\t\thasChanges = true;\r\n\t\t\t\t\t\t\tchanges[o.properties[i]] = { oldValue: attributes[o.properties[i]], newValue: comuptedVal };\r\n\t\t\t\t\t\t\tattributes[o.properties[i]] = comuptedVal //add the attribute to the orig\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (hasChanges && $(_this).data('attrchange-status') === 'connected') { //disconnected logically\r\n\t\t\t\t\t\to.callback.call(_this, changes);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, (o.pollInterval) ? o.pollInterval : 1000)).data('attrchange-method', 'polling').data('attrchange-pollInterval', o.pollInterval).data('attrchange-status', 'connected');\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\treturn this.each(function (i, _this) { /* this one is programmatic polling */\r\n\t\t\t\tvar attributes = {};\r\n\t\t\t\tfor (var attr, i = 0, attrs = _this.attributes, l = attrs.length; i < l; i++) {\r\n\t\t\t\t\tattr = attrs.item(i);\r\n\t\t\t\t\tattributes[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\t$(_this).data('attrchange-polling-timer', setInterval(function () {\r\n\t\t\t\t\tvar changes = {}, hasChanges = false; // attrName: { oldValue: xxx, newValue: yyy}\t\t\t\t\t\t\r\n\t\t\t\t\tfor (var attr, i = 0, attrs = _this.attributes, l = attrs.length; i < l; i++) {\r\n\t\t\t\t\t\tattr = attrs.item(i);\r\n\t\t\t\t\t\tif (attributes.hasOwnProperty(attr.nodeName) &&\r\n\t\t\t\t\t\t\t\tattributes[attr.nodeName] != attr.nodeValue) { //check the values\r\n\t\t\t\t\t\t\tchanges[attr.nodeName] = { oldValue: attributes[attr.nodeName], newValue: attr.nodeValue };\r\n\t\t\t\t\t\t\thasChanges = true;\r\n\t\t\t\t\t\t} else if (!attributes.hasOwnProperty(attr.nodeName)) { //new attribute\r\n\t\t\t\t\t\t\tchanges[attr.nodeName] = { oldValue: '', newValue: attr.nodeValue };\r\n\t\t\t\t\t\t\thasChanges = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tattributes[attr.nodeName] = attr.nodeValue; //add the attribute to the orig\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (hasChanges && $(_this).data('attrchange-status') === 'connected') { //disconnected logically\r\n\t\t\t\t\t\to.callback.call(_this, changes);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, (o.pollInterval) ? o.pollInterval : 1000)).data('attrchange-method', 'polling').data('attrchange-pollInterval', o.pollInterval).data('attrchange-status', 'connected');\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","/*! jquery-qrcode v0.18.0 - https://larsjung.de/jquery-qrcode/ */\r\n(function webpackUniversalModuleDefinition(root, factory) {\r\n\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\tmodule.exports = factory();\r\n\telse if(typeof define === 'function' && define.amd)\r\n\t\tdefine(\"jquery-qrcode\", [], factory);\r\n\telse if(typeof exports === 'object')\r\n\t\texports[\"jquery-qrcode\"] = factory();\r\n\telse\r\n\t\troot[\"jquery-qrcode\"] = factory();\r\n})((typeof self !== 'undefined' ? self : this), function() {\r\nreturn /******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId]) {\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/ \t\t}\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\ti: moduleId,\r\n/******/ \t\t\tl: false,\r\n/******/ \t\t\texports: {}\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.l = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// define getter function for harmony exports\r\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\r\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\r\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\r\n/******/ \t\t}\r\n/******/ \t};\r\n/******/\r\n/******/ \t// define __esModule on exports\r\n/******/ \t__webpack_require__.r = function(exports) {\r\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\r\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\r\n/******/ \t\t}\r\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\r\n/******/ \t};\r\n/******/\r\n/******/ \t// create a fake namespace object\r\n/******/ \t// mode & 1: value is a module id, require it\r\n/******/ \t// mode & 2: merge all properties of value into the ns\r\n/******/ \t// mode & 4: return value when already ns object\r\n/******/ \t// mode & 8|1: behave like require\r\n/******/ \t__webpack_require__.t = function(value, mode) {\r\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\r\n/******/ \t\tif(mode & 8) return value;\r\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\r\n/******/ \t\tvar ns = Object.create(null);\r\n/******/ \t\t__webpack_require__.r(ns);\r\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\r\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\r\n/******/ \t\treturn ns;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\r\n/******/ \t__webpack_require__.n = function(module) {\r\n/******/ \t\tvar getter = module && module.__esModule ?\r\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\r\n/******/ \t\t\tfunction getModuleExports() { return module; };\r\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\r\n/******/ \t\treturn getter;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// Object.prototype.hasOwnProperty.call\r\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nvar WIN = window; // eslint-disable-line\r\n\r\nvar JQ = WIN.jQuery;\r\n\r\nvar is_img_el = function is_img_el(x) {\r\n return x && typeof x.tagName === 'string' && x.tagName.toUpperCase() === 'IMG';\r\n}; // Wrapper for the original QR code generator.\r\n\r\n\r\nvar create_qrcode = function create_qrcode(text, level, version, quiet) {\r\n var qr = {};\r\n\r\n var qr_gen = __webpack_require__(1);\r\n\r\n qr_gen.stringToBytes = qr_gen.stringToBytesFuncs['UTF-8'];\r\n var vqr = qr_gen(version, level);\r\n vqr.addData(text);\r\n vqr.make();\r\n quiet = quiet || 0;\r\n var module_count = vqr.getModuleCount();\r\n var quiet_module_count = module_count + 2 * quiet;\r\n\r\n var is_dark = function is_dark(row, col) {\r\n row -= quiet;\r\n col -= quiet;\r\n return row >= 0 && row < module_count && col >= 0 && col < module_count && vqr.isDark(row, col);\r\n };\r\n\r\n var add_blank = function add_blank(l, t, r, b) {\r\n var prev_is_dark = qr.is_dark;\r\n var module_size = 1 / quiet_module_count;\r\n\r\n qr.is_dark = function (row, col) {\r\n var ml = col * module_size;\r\n var mt = row * module_size;\r\n var mr = ml + module_size;\r\n var mb = mt + module_size;\r\n return prev_is_dark(row, col) && (l > mr || ml > r || t > mb || mt > b);\r\n };\r\n };\r\n\r\n qr.text = text;\r\n qr.level = level;\r\n qr.version = version;\r\n qr.module_count = quiet_module_count;\r\n qr.is_dark = is_dark;\r\n qr.add_blank = add_blank;\r\n return qr;\r\n}; // Returns a minimal QR code for the given text starting with version `min_ver`.\r\n// Returns `undefined` if `text` is too long to be encoded in `max_ver`.\r\n\r\n\r\nvar create_min_qrcode = function create_min_qrcode(text, level, min_ver, max_ver, quiet) {\r\n min_ver = Math.max(1, min_ver || 1);\r\n max_ver = Math.min(40, max_ver || 40);\r\n\r\n for (var ver = min_ver; ver <= max_ver; ver += 1) {\r\n try {\r\n return create_qrcode(text, level, ver, quiet);\r\n } catch (err) {\r\n /* empty */\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nvar draw_background_label = function draw_background_label(qr, ctx, settings) {\r\n var size = settings.size;\r\n var font = 'bold ' + settings.mSize * size + 'px ' + settings.fontname;\r\n var tmp_ctx = JQ('')[0].getContext('2d');\r\n tmp_ctx.font = font;\r\n var w = tmp_ctx.measureText(settings.label).width;\r\n var sh = settings.mSize;\r\n var sw = w / size;\r\n var sl = (1 - sw) * settings.mPosX;\r\n var st = (1 - sh) * settings.mPosY;\r\n var sr = sl + sw;\r\n var sb = st + sh;\r\n var pad = 0.01;\r\n\r\n if (settings.mode === 1) {\r\n // Strip\r\n qr.add_blank(0, st - pad, size, sb + pad);\r\n } else {\r\n // Box\r\n qr.add_blank(sl - pad, st - pad, sr + pad, sb + pad);\r\n }\r\n\r\n ctx.fillStyle = settings.fontcolor;\r\n ctx.font = font;\r\n ctx.fillText(settings.label, sl * size, st * size + 0.75 * settings.mSize * size);\r\n};\r\n\r\nvar draw_background_img = function draw_background_img(qr, ctx, settings) {\r\n var size = settings.size;\r\n var w = settings.image.naturalWidth || 1;\r\n var h = settings.image.naturalHeight || 1;\r\n var sh = settings.mSize;\r\n var sw = sh * w / h;\r\n var sl = (1 - sw) * settings.mPosX;\r\n var st = (1 - sh) * settings.mPosY;\r\n var sr = sl + sw;\r\n var sb = st + sh;\r\n var pad = 0.01;\r\n\r\n if (settings.mode === 3) {\r\n // Strip\r\n qr.add_blank(0, st - pad, size, sb + pad);\r\n } else {\r\n // Box\r\n qr.add_blank(sl - pad, st - pad, sr + pad, sb + pad);\r\n }\r\n\r\n ctx.drawImage(settings.image, sl * size, st * size, sw * size, sh * size);\r\n};\r\n\r\nvar draw_background = function draw_background(qr, ctx, settings) {\r\n if (is_img_el(settings.background)) {\r\n ctx.drawImage(settings.background, 0, 0, settings.size, settings.size);\r\n } else if (settings.background) {\r\n ctx.fillStyle = settings.background;\r\n ctx.fillRect(settings.left, settings.top, settings.size, settings.size);\r\n }\r\n\r\n var mode = settings.mode;\r\n\r\n if (mode === 1 || mode === 2) {\r\n draw_background_label(qr, ctx, settings);\r\n } else if (is_img_el(settings.image) && (mode === 3 || mode === 4)) {\r\n draw_background_img(qr, ctx, settings);\r\n }\r\n};\r\n\r\nvar draw_modules_default = function draw_modules_default(qr, ctx, settings, left, top, width, row, col) {\r\n if (qr.is_dark(row, col)) {\r\n ctx.r(left, top, width, width);\r\n }\r\n};\r\n\r\nvar draw_modules_rounded_dark = function draw_modules_rounded_dark(ctx, l, t, r, b, rad, nw, ne, se, sw) {\r\n if (nw) {\r\n ctx.m(l + rad, t);\r\n } else {\r\n ctx.m(l, t);\r\n }\r\n\r\n if (ne) {\r\n ctx.l(r - rad, t).a(r, t, r, b, rad);\r\n } else {\r\n ctx.l(r, t);\r\n }\r\n\r\n if (se) {\r\n ctx.l(r, b - rad).a(r, b, l, b, rad);\r\n } else {\r\n ctx.l(r, b);\r\n }\r\n\r\n if (sw) {\r\n ctx.l(l + rad, b).a(l, b, l, t, rad);\r\n } else {\r\n ctx.l(l, b);\r\n }\r\n\r\n if (nw) {\r\n ctx.l(l, t + rad).a(l, t, r, t, rad);\r\n } else {\r\n ctx.l(l, t);\r\n }\r\n};\r\n\r\nvar draw_modules_rounded_light = function draw_modules_rounded_light(ctx, l, t, r, b, rad, nw, ne, se, sw) {\r\n if (nw) {\r\n ctx.m(l + rad, t).l(l, t).l(l, t + rad).a(l, t, l + rad, t, rad);\r\n }\r\n\r\n if (ne) {\r\n ctx.m(r - rad, t).l(r, t).l(r, t + rad).a(r, t, r - rad, t, rad);\r\n }\r\n\r\n if (se) {\r\n ctx.m(r - rad, b).l(r, b).l(r, b - rad).a(r, b, r - rad, b, rad);\r\n }\r\n\r\n if (sw) {\r\n ctx.m(l + rad, b).l(l, b).l(l, b - rad).a(l, b, l + rad, b, rad);\r\n }\r\n};\r\n\r\nvar draw_modules_rounded = function draw_modules_rounded(qr, ctx, settings, left, top, width, row, col) {\r\n var right = left + width;\r\n var bottom = top + width;\r\n var rad = settings.radius * width;\r\n var row_n = row - 1;\r\n var row_s = row + 1;\r\n var col_w = col - 1;\r\n var col_e = col + 1;\r\n var is_dark = qr.is_dark;\r\n var d_center = is_dark(row, col);\r\n var d_nw = is_dark(row_n, col_w);\r\n var d_n = is_dark(row_n, col);\r\n var d_ne = is_dark(row_n, col_e);\r\n var d_e = is_dark(row, col_e);\r\n var d_se = is_dark(row_s, col_e);\r\n var d_s = is_dark(row_s, col);\r\n var d_sw = is_dark(row_s, col_w);\r\n var d_w = is_dark(row, col_w);\r\n\r\n if (d_center) {\r\n draw_modules_rounded_dark(ctx, left, top, right, bottom, rad, !d_n && !d_w, !d_n && !d_e, !d_s && !d_e, !d_s && !d_w);\r\n } else {\r\n draw_modules_rounded_light(ctx, left, top, right, bottom, rad, d_n && d_w && d_nw, d_n && d_e && d_ne, d_s && d_e && d_se, d_s && d_w && d_sw);\r\n }\r\n};\r\n\r\nvar draw_modules = function draw_modules(qr, ctx, settings) {\r\n var module_count = qr.module_count;\r\n var module_size = settings.size / module_count;\r\n var fn = draw_modules_default;\r\n\r\n if (settings.radius > 0 && settings.radius <= 0.5) {\r\n fn = draw_modules_rounded;\r\n }\r\n\r\n var draw_ctx = {\r\n m: function m(x, y) {\r\n ctx.moveTo(x, y);\r\n return draw_ctx;\r\n },\r\n l: function l(x, y) {\r\n ctx.lineTo(x, y);\r\n return draw_ctx;\r\n },\r\n a: function a() {\r\n ctx.arcTo.apply(ctx, arguments);\r\n return draw_ctx;\r\n },\r\n r: function r() {\r\n ctx.rect.apply(ctx, arguments);\r\n return draw_ctx;\r\n }\r\n };\r\n ctx.beginPath();\r\n\r\n for (var row = 0; row < module_count; row += 1) {\r\n for (var col = 0; col < module_count; col += 1) {\r\n var l = settings.left + col * module_size;\r\n var t = settings.top + row * module_size;\r\n var w = module_size;\r\n fn(qr, draw_ctx, settings, l, t, w, row, col);\r\n }\r\n }\r\n\r\n if (is_img_el(settings.fill)) {\r\n ctx.strokeStyle = 'rgba(0,0,0,0.5)';\r\n ctx.lineWidth = 2;\r\n ctx.stroke();\r\n var prev = ctx.globalCompositeOperation;\r\n ctx.globalCompositeOperation = 'destination-out';\r\n ctx.fill();\r\n ctx.globalCompositeOperation = prev;\r\n ctx.clip();\r\n ctx.drawImage(settings.fill, 0, 0, settings.size, settings.size);\r\n ctx.restore();\r\n } else {\r\n ctx.fillStyle = settings.fill;\r\n ctx.fill();\r\n }\r\n}; // Draws QR code to the given `canvas` and returns it.\r\n\r\n\r\nvar draw_on_canvas = function draw_on_canvas(canvas, settings) {\r\n var qr = create_min_qrcode(settings.text, settings.ecLevel, settings.minVersion, settings.maxVersion, settings.quiet);\r\n\r\n if (!qr) {\r\n return null;\r\n }\r\n\r\n var $canvas = JQ(canvas).data('qrcode', qr);\r\n var ctx = $canvas[0].getContext('2d');\r\n draw_background(qr, ctx, settings);\r\n draw_modules(qr, ctx, settings);\r\n return $canvas;\r\n}; // Returns a `canvas` element representing the QR code for the given settings.\r\n\r\n\r\nvar create_canvas = function create_canvas(settings) {\r\n var $canvas = JQ('').attr('width', settings.size).attr('height', settings.size);\r\n return draw_on_canvas($canvas, settings);\r\n}; // Returns an `image` element representing the QR code for the given settings.\r\n\r\n\r\nvar create_img = function create_img(settings) {\r\n return JQ('').attr('src', create_canvas(settings)[0].toDataURL('image/png'));\r\n}; // Returns a `div` element representing the QR code for the given settings.\r\n\r\n\r\nvar create_div = function create_div(settings) {\r\n var qr = create_min_qrcode(settings.text, settings.ecLevel, settings.minVersion, settings.maxVersion, settings.quiet);\r\n\r\n if (!qr) {\r\n return null;\r\n } // some shortcuts to improve compression\r\n\r\n\r\n var settings_size = settings.size;\r\n var settings_bgColor = settings.background;\r\n var math_floor = Math.floor;\r\n var module_count = qr.module_count;\r\n var module_size = math_floor(settings_size / module_count);\r\n var offset = math_floor(0.5 * (settings_size - module_size * module_count));\r\n var container_css = {\r\n position: 'relative',\r\n left: 0,\r\n top: 0,\r\n padding: 0,\r\n margin: 0,\r\n width: settings_size,\r\n height: settings_size\r\n };\r\n var dark_css = {\r\n position: 'absolute',\r\n padding: 0,\r\n margin: 0,\r\n width: module_size,\r\n height: module_size,\r\n 'background-color': settings.fill\r\n };\r\n var $div = JQ('
').data('qrcode', qr).css(container_css);\r\n\r\n if (settings_bgColor) {\r\n $div.css('background-color', settings_bgColor);\r\n }\r\n\r\n for (var row = 0; row < module_count; row += 1) {\r\n for (var col = 0; col < module_count; col += 1) {\r\n if (qr.is_dark(row, col)) {\r\n JQ('
').css(dark_css).css({\r\n left: offset + col * module_size,\r\n top: offset + row * module_size\r\n }).appendTo($div);\r\n }\r\n }\r\n }\r\n\r\n return $div;\r\n};\r\n\r\nvar create_html = function create_html(settings) {\r\n if (settings.render === 'canvas') {\r\n return create_canvas(settings);\r\n } else if (settings.render === 'image') {\r\n return create_img(settings);\r\n }\r\n\r\n return create_div(settings);\r\n};\r\n\r\nvar DEFAULTS = {\r\n // render method: `'canvas'`, `'image'` or `'div'`\r\n render: 'canvas',\r\n // version range somewhere in 1 .. 40\r\n minVersion: 1,\r\n maxVersion: 40,\r\n // error correction level: `'L'`, `'M'`, `'Q'` or `'H'`\r\n ecLevel: 'L',\r\n // offset in pixel if drawn onto existing canvas\r\n left: 0,\r\n top: 0,\r\n // size in pixel\r\n size: 200,\r\n // code color or image element\r\n fill: '#000',\r\n // background color or image element, `null` for transparent background\r\n background: '#fff',\r\n // content\r\n text: 'no text',\r\n // corner radius relative to module width: 0.0 .. 0.5\r\n radius: 0,\r\n // quiet zone in modules\r\n quiet: 0,\r\n // modes\r\n // 0: normal\r\n // 1: label strip\r\n // 2: label box\r\n // 3: image strip\r\n // 4: image box\r\n mode: 0,\r\n mSize: 0.1,\r\n mPosX: 0.5,\r\n mPosY: 0.5,\r\n label: 'no label',\r\n fontname: 'sans',\r\n fontcolor: '#000',\r\n image: null\r\n};\r\n\r\nJQ.fn.qrcode = module.exports = function main(options) {\r\n var settings = JQ.extend({}, DEFAULTS, options);\r\n return this.each(function (idx, el) {\r\n if (el.nodeName.toLowerCase() === 'canvas') {\r\n draw_on_canvas(el, settings);\r\n } else {\r\n JQ(el).append(create_html(settings));\r\n }\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 1 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//---------------------------------------------------------------------\r\n//\r\n// QR Code Generator for JavaScript\r\n//\r\n// Copyright (c) 2009 Kazuhiko Arase\r\n//\r\n// URL: http://www.d-project.com/\r\n//\r\n// Licensed under the MIT license:\r\n// http://www.opensource.org/licenses/mit-license.php\r\n//\r\n// The word 'QR Code' is registered trademark of\r\n// DENSO WAVE INCORPORATED\r\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\r\n//\r\n//---------------------------------------------------------------------\r\n\r\nvar qrcode = function() {\r\n\r\n //---------------------------------------------------------------------\r\n // qrcode\r\n //---------------------------------------------------------------------\r\n\r\n /**\r\n * qrcode\r\n * @param typeNumber 1 to 40\r\n * @param errorCorrectionLevel 'L','M','Q','H'\r\n */\r\n var qrcode = function(typeNumber, errorCorrectionLevel) {\r\n\r\n var PAD0 = 0xEC;\r\n var PAD1 = 0x11;\r\n\r\n var _typeNumber = typeNumber;\r\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\r\n var _modules = null;\r\n var _moduleCount = 0;\r\n var _dataCache = null;\r\n var _dataList = [];\r\n\r\n var _this = {};\r\n\r\n var makeImpl = function(test, maskPattern) {\r\n\r\n _moduleCount = _typeNumber * 4 + 17;\r\n _modules = function(moduleCount) {\r\n var modules = new Array(moduleCount);\r\n for (var row = 0; row < moduleCount; row += 1) {\r\n modules[row] = new Array(moduleCount);\r\n for (var col = 0; col < moduleCount; col += 1) {\r\n modules[row][col] = null;\r\n }\r\n }\r\n return modules;\r\n }(_moduleCount);\r\n\r\n setupPositionProbePattern(0, 0);\r\n setupPositionProbePattern(_moduleCount - 7, 0);\r\n setupPositionProbePattern(0, _moduleCount - 7);\r\n setupPositionAdjustPattern();\r\n setupTimingPattern();\r\n setupTypeInfo(test, maskPattern);\r\n\r\n if (_typeNumber >= 7) {\r\n setupTypeNumber(test);\r\n }\r\n\r\n if (_dataCache == null) {\r\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\r\n }\r\n\r\n mapData(_dataCache, maskPattern);\r\n };\r\n\r\n var setupPositionProbePattern = function(row, col) {\r\n\r\n for (var r = -1; r <= 7; r += 1) {\r\n\r\n if (row + r <= -1 || _moduleCount <= row + r) continue;\r\n\r\n for (var c = -1; c <= 7; c += 1) {\r\n\r\n if (col + c <= -1 || _moduleCount <= col + c) continue;\r\n\r\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\r\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\r\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\r\n _modules[row + r][col + c] = true;\r\n } else {\r\n _modules[row + r][col + c] = false;\r\n }\r\n }\r\n }\r\n };\r\n\r\n var getBestMaskPattern = function() {\r\n\r\n var minLostPoint = 0;\r\n var pattern = 0;\r\n\r\n for (var i = 0; i < 8; i += 1) {\r\n\r\n makeImpl(true, i);\r\n\r\n var lostPoint = QRUtil.getLostPoint(_this);\r\n\r\n if (i == 0 || minLostPoint > lostPoint) {\r\n minLostPoint = lostPoint;\r\n pattern = i;\r\n }\r\n }\r\n\r\n return pattern;\r\n };\r\n\r\n var setupTimingPattern = function() {\r\n\r\n for (var r = 8; r < _moduleCount - 8; r += 1) {\r\n if (_modules[r][6] != null) {\r\n continue;\r\n }\r\n _modules[r][6] = (r % 2 == 0);\r\n }\r\n\r\n for (var c = 8; c < _moduleCount - 8; c += 1) {\r\n if (_modules[6][c] != null) {\r\n continue;\r\n }\r\n _modules[6][c] = (c % 2 == 0);\r\n }\r\n };\r\n\r\n var setupPositionAdjustPattern = function() {\r\n\r\n var pos = QRUtil.getPatternPosition(_typeNumber);\r\n\r\n for (var i = 0; i < pos.length; i += 1) {\r\n\r\n for (var j = 0; j < pos.length; j += 1) {\r\n\r\n var row = pos[i];\r\n var col = pos[j];\r\n\r\n if (_modules[row][col] != null) {\r\n continue;\r\n }\r\n\r\n for (var r = -2; r <= 2; r += 1) {\r\n\r\n for (var c = -2; c <= 2; c += 1) {\r\n\r\n if (r == -2 || r == 2 || c == -2 || c == 2\r\n || (r == 0 && c == 0) ) {\r\n _modules[row + r][col + c] = true;\r\n } else {\r\n _modules[row + r][col + c] = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n var setupTypeNumber = function(test) {\r\n\r\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\r\n\r\n for (var i = 0; i < 18; i += 1) {\r\n var mod = (!test && ( (bits >> i) & 1) == 1);\r\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\r\n }\r\n\r\n for (var i = 0; i < 18; i += 1) {\r\n var mod = (!test && ( (bits >> i) & 1) == 1);\r\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\r\n }\r\n };\r\n\r\n var setupTypeInfo = function(test, maskPattern) {\r\n\r\n var data = (_errorCorrectionLevel << 3) | maskPattern;\r\n var bits = QRUtil.getBCHTypeInfo(data);\r\n\r\n // vertical\r\n for (var i = 0; i < 15; i += 1) {\r\n\r\n var mod = (!test && ( (bits >> i) & 1) == 1);\r\n\r\n if (i < 6) {\r\n _modules[i][8] = mod;\r\n } else if (i < 8) {\r\n _modules[i + 1][8] = mod;\r\n } else {\r\n _modules[_moduleCount - 15 + i][8] = mod;\r\n }\r\n }\r\n\r\n // horizontal\r\n for (var i = 0; i < 15; i += 1) {\r\n\r\n var mod = (!test && ( (bits >> i) & 1) == 1);\r\n\r\n if (i < 8) {\r\n _modules[8][_moduleCount - i - 1] = mod;\r\n } else if (i < 9) {\r\n _modules[8][15 - i - 1 + 1] = mod;\r\n } else {\r\n _modules[8][15 - i - 1] = mod;\r\n }\r\n }\r\n\r\n // fixed module\r\n _modules[_moduleCount - 8][8] = (!test);\r\n };\r\n\r\n var mapData = function(data, maskPattern) {\r\n\r\n var inc = -1;\r\n var row = _moduleCount - 1;\r\n var bitIndex = 7;\r\n var byteIndex = 0;\r\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\r\n\r\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\r\n\r\n if (col == 6) col -= 1;\r\n\r\n while (true) {\r\n\r\n for (var c = 0; c < 2; c += 1) {\r\n\r\n if (_modules[row][col - c] == null) {\r\n\r\n var dark = false;\r\n\r\n if (byteIndex < data.length) {\r\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\r\n }\r\n\r\n var mask = maskFunc(row, col - c);\r\n\r\n if (mask) {\r\n dark = !dark;\r\n }\r\n\r\n _modules[row][col - c] = dark;\r\n bitIndex -= 1;\r\n\r\n if (bitIndex == -1) {\r\n byteIndex += 1;\r\n bitIndex = 7;\r\n }\r\n }\r\n }\r\n\r\n row += inc;\r\n\r\n if (row < 0 || _moduleCount <= row) {\r\n row -= inc;\r\n inc = -inc;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n\r\n var createBytes = function(buffer, rsBlocks) {\r\n\r\n var offset = 0;\r\n\r\n var maxDcCount = 0;\r\n var maxEcCount = 0;\r\n\r\n var dcdata = new Array(rsBlocks.length);\r\n var ecdata = new Array(rsBlocks.length);\r\n\r\n for (var r = 0; r < rsBlocks.length; r += 1) {\r\n\r\n var dcCount = rsBlocks[r].dataCount;\r\n var ecCount = rsBlocks[r].totalCount - dcCount;\r\n\r\n maxDcCount = Math.max(maxDcCount, dcCount);\r\n maxEcCount = Math.max(maxEcCount, ecCount);\r\n\r\n dcdata[r] = new Array(dcCount);\r\n\r\n for (var i = 0; i < dcdata[r].length; i += 1) {\r\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\r\n }\r\n offset += dcCount;\r\n\r\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\r\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\r\n\r\n var modPoly = rawPoly.mod(rsPoly);\r\n ecdata[r] = new Array(rsPoly.getLength() - 1);\r\n for (var i = 0; i < ecdata[r].length; i += 1) {\r\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\r\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\r\n }\r\n }\r\n\r\n var totalCodeCount = 0;\r\n for (var i = 0; i < rsBlocks.length; i += 1) {\r\n totalCodeCount += rsBlocks[i].totalCount;\r\n }\r\n\r\n var data = new Array(totalCodeCount);\r\n var index = 0;\r\n\r\n for (var i = 0; i < maxDcCount; i += 1) {\r\n for (var r = 0; r < rsBlocks.length; r += 1) {\r\n if (i < dcdata[r].length) {\r\n data[index] = dcdata[r][i];\r\n index += 1;\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < maxEcCount; i += 1) {\r\n for (var r = 0; r < rsBlocks.length; r += 1) {\r\n if (i < ecdata[r].length) {\r\n data[index] = ecdata[r][i];\r\n index += 1;\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n };\r\n\r\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\r\n\r\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\r\n\r\n var buffer = qrBitBuffer();\r\n\r\n for (var i = 0; i < dataList.length; i += 1) {\r\n var data = dataList[i];\r\n buffer.put(data.getMode(), 4);\r\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\r\n data.write(buffer);\r\n }\r\n\r\n // calc num max data.\r\n var totalDataCount = 0;\r\n for (var i = 0; i < rsBlocks.length; i += 1) {\r\n totalDataCount += rsBlocks[i].dataCount;\r\n }\r\n\r\n if (buffer.getLengthInBits() > totalDataCount * 8) {\r\n throw 'code length overflow. ('\r\n + buffer.getLengthInBits()\r\n + '>'\r\n + totalDataCount * 8\r\n + ')';\r\n }\r\n\r\n // end code\r\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\r\n buffer.put(0, 4);\r\n }\r\n\r\n // padding\r\n while (buffer.getLengthInBits() % 8 != 0) {\r\n buffer.putBit(false);\r\n }\r\n\r\n // padding\r\n while (true) {\r\n\r\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\r\n break;\r\n }\r\n buffer.put(PAD0, 8);\r\n\r\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\r\n break;\r\n }\r\n buffer.put(PAD1, 8);\r\n }\r\n\r\n return createBytes(buffer, rsBlocks);\r\n };\r\n\r\n _this.addData = function(data, mode) {\r\n\r\n mode = mode || 'Byte';\r\n\r\n var newData = null;\r\n\r\n switch(mode) {\r\n case 'Numeric' :\r\n newData = qrNumber(data);\r\n break;\r\n case 'Alphanumeric' :\r\n newData = qrAlphaNum(data);\r\n break;\r\n case 'Byte' :\r\n newData = qr8BitByte(data);\r\n break;\r\n case 'Kanji' :\r\n newData = qrKanji(data);\r\n break;\r\n default :\r\n throw 'mode:' + mode;\r\n }\r\n\r\n _dataList.push(newData);\r\n _dataCache = null;\r\n };\r\n\r\n _this.isDark = function(row, col) {\r\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\r\n throw row + ',' + col;\r\n }\r\n return _modules[row][col];\r\n };\r\n\r\n _this.getModuleCount = function() {\r\n return _moduleCount;\r\n };\r\n\r\n _this.make = function() {\r\n if (_typeNumber < 1) {\r\n var typeNumber = 1;\r\n\r\n for (; typeNumber < 40; typeNumber++) {\r\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\r\n var buffer = qrBitBuffer();\r\n\r\n for (var i = 0; i < _dataList.length; i++) {\r\n var data = _dataList[i];\r\n buffer.put(data.getMode(), 4);\r\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\r\n data.write(buffer);\r\n }\r\n\r\n var totalDataCount = 0;\r\n for (var i = 0; i < rsBlocks.length; i++) {\r\n totalDataCount += rsBlocks[i].dataCount;\r\n }\r\n\r\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\r\n break;\r\n }\r\n }\r\n\r\n _typeNumber = typeNumber;\r\n }\r\n\r\n makeImpl(false, getBestMaskPattern() );\r\n };\r\n\r\n _this.createTableTag = function(cellSize, margin) {\r\n\r\n cellSize = cellSize || 2;\r\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\r\n\r\n var qrHtml = '';\r\n\r\n qrHtml += '' +\r\n escapeXml(title.text) + '' : '';\r\n qrSvg += (alt.text) ? '' +\r\n escapeXml(alt.text) + '' : '';\r\n qrSvg += '';\r\n qrSvg += '': escaped += '>'; break;\r\n case '&': escaped += '&'; break;\r\n case '\"': escaped += '"'; break;\r\n default : escaped += c; break;\r\n }\r\n }\r\n return escaped;\r\n };\r\n\r\n var _createHalfASCII = function(margin) {\r\n var cellSize = 1;\r\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\r\n\r\n var size = _this.getModuleCount() * cellSize + margin * 2;\r\n var min = margin;\r\n var max = size - margin;\r\n\r\n var y, x, r1, r2, p;\r\n\r\n var blocks = {\r\n '██': '█',\r\n '█ ': '▀',\r\n ' █': '▄',\r\n ' ': ' '\r\n };\r\n\r\n var blocksLastLineNoMargin = {\r\n '██': '▀',\r\n '█ ': '▀',\r\n ' █': ' ',\r\n ' ': ' '\r\n };\r\n\r\n var ascii = '';\r\n for (y = 0; y < size; y += 2) {\r\n r1 = Math.floor((y - min) / cellSize);\r\n r2 = Math.floor((y + 1 - min) / cellSize);\r\n for (x = 0; x < size; x += 1) {\r\n p = '█';\r\n\r\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\r\n p = ' ';\r\n }\r\n\r\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\r\n p += ' ';\r\n }\r\n else {\r\n p += '█';\r\n }\r\n\r\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\r\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\r\n }\r\n\r\n ascii += '\\n';\r\n }\r\n\r\n if (size % 2 && margin > 0) {\r\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\r\n }\r\n\r\n return ascii.substring(0, ascii.length-1);\r\n };\r\n\r\n _this.createASCII = function(cellSize, margin) {\r\n cellSize = cellSize || 1;\r\n\r\n if (cellSize < 2) {\r\n return _createHalfASCII(margin);\r\n }\r\n\r\n cellSize -= 1;\r\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\r\n\r\n var size = _this.getModuleCount() * cellSize + margin * 2;\r\n var min = margin;\r\n var max = size - margin;\r\n\r\n var y, x, r, p;\r\n\r\n var white = Array(cellSize+1).join('██');\r\n var black = Array(cellSize+1).join(' ');\r\n\r\n var ascii = '';\r\n var line = '';\r\n for (y = 0; y < size; y += 1) {\r\n r = Math.floor( (y - min) / cellSize);\r\n line = '';\r\n for (x = 0; x < size; x += 1) {\r\n p = 1;\r\n\r\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\r\n p = 0;\r\n }\r\n\r\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\r\n line += p ? white : black;\r\n }\r\n\r\n for (r = 0; r < cellSize; r += 1) {\r\n ascii += line + '\\n';\r\n }\r\n }\r\n\r\n return ascii.substring(0, ascii.length-1);\r\n };\r\n\r\n _this.renderTo2dContext = function(context, cellSize) {\r\n cellSize = cellSize || 2;\r\n var length = _this.getModuleCount();\r\n for (var row = 0; row < length; row++) {\r\n for (var col = 0; col < length; col++) {\r\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\r\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\r\n }\r\n }\r\n }\r\n\r\n return _this;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // qrcode.stringToBytes\r\n //---------------------------------------------------------------------\r\n\r\n qrcode.stringToBytesFuncs = {\r\n 'default' : function(s) {\r\n var bytes = [];\r\n for (var i = 0; i < s.length; i += 1) {\r\n var c = s.charCodeAt(i);\r\n bytes.push(c & 0xff);\r\n }\r\n return bytes;\r\n }\r\n };\r\n\r\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\r\n\r\n //---------------------------------------------------------------------\r\n // qrcode.createStringToBytes\r\n //---------------------------------------------------------------------\r\n\r\n /**\r\n * @param unicodeData base64 string of byte array.\r\n * [16bit Unicode],[16bit Bytes], ...\r\n * @param numChars\r\n */\r\n qrcode.createStringToBytes = function(unicodeData, numChars) {\r\n\r\n // create conversion map.\r\n\r\n var unicodeMap = function() {\r\n\r\n var bin = base64DecodeInputStream(unicodeData);\r\n var read = function() {\r\n var b = bin.read();\r\n if (b == -1) throw 'eof';\r\n return b;\r\n };\r\n\r\n var count = 0;\r\n var unicodeMap = {};\r\n while (true) {\r\n var b0 = bin.read();\r\n if (b0 == -1) break;\r\n var b1 = read();\r\n var b2 = read();\r\n var b3 = read();\r\n var k = String.fromCharCode( (b0 << 8) | b1);\r\n var v = (b2 << 8) | b3;\r\n unicodeMap[k] = v;\r\n count += 1;\r\n }\r\n if (count != numChars) {\r\n throw count + ' != ' + numChars;\r\n }\r\n\r\n return unicodeMap;\r\n }();\r\n\r\n var unknownChar = '?'.charCodeAt(0);\r\n\r\n return function(s) {\r\n var bytes = [];\r\n for (var i = 0; i < s.length; i += 1) {\r\n var c = s.charCodeAt(i);\r\n if (c < 128) {\r\n bytes.push(c);\r\n } else {\r\n var b = unicodeMap[s.charAt(i)];\r\n if (typeof b == 'number') {\r\n if ( (b & 0xff) == b) {\r\n // 1byte\r\n bytes.push(b);\r\n } else {\r\n // 2bytes\r\n bytes.push(b >>> 8);\r\n bytes.push(b & 0xff);\r\n }\r\n } else {\r\n bytes.push(unknownChar);\r\n }\r\n }\r\n }\r\n return bytes;\r\n };\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // QRMode\r\n //---------------------------------------------------------------------\r\n\r\n var QRMode = {\r\n MODE_NUMBER : 1 << 0,\r\n MODE_ALPHA_NUM : 1 << 1,\r\n MODE_8BIT_BYTE : 1 << 2,\r\n MODE_KANJI : 1 << 3\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // QRErrorCorrectionLevel\r\n //---------------------------------------------------------------------\r\n\r\n var QRErrorCorrectionLevel = {\r\n L : 1,\r\n M : 0,\r\n Q : 3,\r\n H : 2\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // QRMaskPattern\r\n //---------------------------------------------------------------------\r\n\r\n var QRMaskPattern = {\r\n PATTERN000 : 0,\r\n PATTERN001 : 1,\r\n PATTERN010 : 2,\r\n PATTERN011 : 3,\r\n PATTERN100 : 4,\r\n PATTERN101 : 5,\r\n PATTERN110 : 6,\r\n PATTERN111 : 7\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // QRUtil\r\n //---------------------------------------------------------------------\r\n\r\n var QRUtil = function() {\r\n\r\n var PATTERN_POSITION_TABLE = [\r\n [],\r\n [6, 18],\r\n [6, 22],\r\n [6, 26],\r\n [6, 30],\r\n [6, 34],\r\n [6, 22, 38],\r\n [6, 24, 42],\r\n [6, 26, 46],\r\n [6, 28, 50],\r\n [6, 30, 54],\r\n [6, 32, 58],\r\n [6, 34, 62],\r\n [6, 26, 46, 66],\r\n [6, 26, 48, 70],\r\n [6, 26, 50, 74],\r\n [6, 30, 54, 78],\r\n [6, 30, 56, 82],\r\n [6, 30, 58, 86],\r\n [6, 34, 62, 90],\r\n [6, 28, 50, 72, 94],\r\n [6, 26, 50, 74, 98],\r\n [6, 30, 54, 78, 102],\r\n [6, 28, 54, 80, 106],\r\n [6, 32, 58, 84, 110],\r\n [6, 30, 58, 86, 114],\r\n [6, 34, 62, 90, 118],\r\n [6, 26, 50, 74, 98, 122],\r\n [6, 30, 54, 78, 102, 126],\r\n [6, 26, 52, 78, 104, 130],\r\n [6, 30, 56, 82, 108, 134],\r\n [6, 34, 60, 86, 112, 138],\r\n [6, 30, 58, 86, 114, 142],\r\n [6, 34, 62, 90, 118, 146],\r\n [6, 30, 54, 78, 102, 126, 150],\r\n [6, 24, 50, 76, 102, 128, 154],\r\n [6, 28, 54, 80, 106, 132, 158],\r\n [6, 32, 58, 84, 110, 136, 162],\r\n [6, 26, 54, 82, 110, 138, 166],\r\n [6, 30, 58, 86, 114, 142, 170]\r\n ];\r\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\r\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\r\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\r\n\r\n var _this = {};\r\n\r\n var getBCHDigit = function(data) {\r\n var digit = 0;\r\n while (data != 0) {\r\n digit += 1;\r\n data >>>= 1;\r\n }\r\n return digit;\r\n };\r\n\r\n _this.getBCHTypeInfo = function(data) {\r\n var d = data << 10;\r\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\r\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\r\n }\r\n return ( (data << 10) | d) ^ G15_MASK;\r\n };\r\n\r\n _this.getBCHTypeNumber = function(data) {\r\n var d = data << 12;\r\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\r\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\r\n }\r\n return (data << 12) | d;\r\n };\r\n\r\n _this.getPatternPosition = function(typeNumber) {\r\n return PATTERN_POSITION_TABLE[typeNumber - 1];\r\n };\r\n\r\n _this.getMaskFunction = function(maskPattern) {\r\n\r\n switch (maskPattern) {\r\n\r\n case QRMaskPattern.PATTERN000 :\r\n return function(i, j) { return (i + j) % 2 == 0; };\r\n case QRMaskPattern.PATTERN001 :\r\n return function(i, j) { return i % 2 == 0; };\r\n case QRMaskPattern.PATTERN010 :\r\n return function(i, j) { return j % 3 == 0; };\r\n case QRMaskPattern.PATTERN011 :\r\n return function(i, j) { return (i + j) % 3 == 0; };\r\n case QRMaskPattern.PATTERN100 :\r\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\r\n case QRMaskPattern.PATTERN101 :\r\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\r\n case QRMaskPattern.PATTERN110 :\r\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\r\n case QRMaskPattern.PATTERN111 :\r\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\r\n\r\n default :\r\n throw 'bad maskPattern:' + maskPattern;\r\n }\r\n };\r\n\r\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\r\n var a = qrPolynomial([1], 0);\r\n for (var i = 0; i < errorCorrectLength; i += 1) {\r\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\r\n }\r\n return a;\r\n };\r\n\r\n _this.getLengthInBits = function(mode, type) {\r\n\r\n if (1 <= type && type < 10) {\r\n\r\n // 1 - 9\r\n\r\n switch(mode) {\r\n case QRMode.MODE_NUMBER : return 10;\r\n case QRMode.MODE_ALPHA_NUM : return 9;\r\n case QRMode.MODE_8BIT_BYTE : return 8;\r\n case QRMode.MODE_KANJI : return 8;\r\n default :\r\n throw 'mode:' + mode;\r\n }\r\n\r\n } else if (type < 27) {\r\n\r\n // 10 - 26\r\n\r\n switch(mode) {\r\n case QRMode.MODE_NUMBER : return 12;\r\n case QRMode.MODE_ALPHA_NUM : return 11;\r\n case QRMode.MODE_8BIT_BYTE : return 16;\r\n case QRMode.MODE_KANJI : return 10;\r\n default :\r\n throw 'mode:' + mode;\r\n }\r\n\r\n } else if (type < 41) {\r\n\r\n // 27 - 40\r\n\r\n switch(mode) {\r\n case QRMode.MODE_NUMBER : return 14;\r\n case QRMode.MODE_ALPHA_NUM : return 13;\r\n case QRMode.MODE_8BIT_BYTE : return 16;\r\n case QRMode.MODE_KANJI : return 12;\r\n default :\r\n throw 'mode:' + mode;\r\n }\r\n\r\n } else {\r\n throw 'type:' + type;\r\n }\r\n };\r\n\r\n _this.getLostPoint = function(qrcode) {\r\n\r\n var moduleCount = qrcode.getModuleCount();\r\n\r\n var lostPoint = 0;\r\n\r\n // LEVEL1\r\n\r\n for (var row = 0; row < moduleCount; row += 1) {\r\n for (var col = 0; col < moduleCount; col += 1) {\r\n\r\n var sameCount = 0;\r\n var dark = qrcode.isDark(row, col);\r\n\r\n for (var r = -1; r <= 1; r += 1) {\r\n\r\n if (row + r < 0 || moduleCount <= row + r) {\r\n continue;\r\n }\r\n\r\n for (var c = -1; c <= 1; c += 1) {\r\n\r\n if (col + c < 0 || moduleCount <= col + c) {\r\n continue;\r\n }\r\n\r\n if (r == 0 && c == 0) {\r\n continue;\r\n }\r\n\r\n if (dark == qrcode.isDark(row + r, col + c) ) {\r\n sameCount += 1;\r\n }\r\n }\r\n }\r\n\r\n if (sameCount > 5) {\r\n lostPoint += (3 + sameCount - 5);\r\n }\r\n }\r\n };\r\n\r\n // LEVEL2\r\n\r\n for (var row = 0; row < moduleCount - 1; row += 1) {\r\n for (var col = 0; col < moduleCount - 1; col += 1) {\r\n var count = 0;\r\n if (qrcode.isDark(row, col) ) count += 1;\r\n if (qrcode.isDark(row + 1, col) ) count += 1;\r\n if (qrcode.isDark(row, col + 1) ) count += 1;\r\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\r\n if (count == 0 || count == 4) {\r\n lostPoint += 3;\r\n }\r\n }\r\n }\r\n\r\n // LEVEL3\r\n\r\n for (var row = 0; row < moduleCount; row += 1) {\r\n for (var col = 0; col < moduleCount - 6; col += 1) {\r\n if (qrcode.isDark(row, col)\r\n && !qrcode.isDark(row, col + 1)\r\n && qrcode.isDark(row, col + 2)\r\n && qrcode.isDark(row, col + 3)\r\n && qrcode.isDark(row, col + 4)\r\n && !qrcode.isDark(row, col + 5)\r\n && qrcode.isDark(row, col + 6) ) {\r\n lostPoint += 40;\r\n }\r\n }\r\n }\r\n\r\n for (var col = 0; col < moduleCount; col += 1) {\r\n for (var row = 0; row < moduleCount - 6; row += 1) {\r\n if (qrcode.isDark(row, col)\r\n && !qrcode.isDark(row + 1, col)\r\n && qrcode.isDark(row + 2, col)\r\n && qrcode.isDark(row + 3, col)\r\n && qrcode.isDark(row + 4, col)\r\n && !qrcode.isDark(row + 5, col)\r\n && qrcode.isDark(row + 6, col) ) {\r\n lostPoint += 40;\r\n }\r\n }\r\n }\r\n\r\n // LEVEL4\r\n\r\n var darkCount = 0;\r\n\r\n for (var col = 0; col < moduleCount; col += 1) {\r\n for (var row = 0; row < moduleCount; row += 1) {\r\n if (qrcode.isDark(row, col) ) {\r\n darkCount += 1;\r\n }\r\n }\r\n }\r\n\r\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\r\n lostPoint += ratio * 10;\r\n\r\n return lostPoint;\r\n };\r\n\r\n return _this;\r\n }();\r\n\r\n //---------------------------------------------------------------------\r\n // QRMath\r\n //---------------------------------------------------------------------\r\n\r\n var QRMath = function() {\r\n\r\n var EXP_TABLE = new Array(256);\r\n var LOG_TABLE = new Array(256);\r\n\r\n // initialize tables\r\n for (var i = 0; i < 8; i += 1) {\r\n EXP_TABLE[i] = 1 << i;\r\n }\r\n for (var i = 8; i < 256; i += 1) {\r\n EXP_TABLE[i] = EXP_TABLE[i - 4]\r\n ^ EXP_TABLE[i - 5]\r\n ^ EXP_TABLE[i - 6]\r\n ^ EXP_TABLE[i - 8];\r\n }\r\n for (var i = 0; i < 255; i += 1) {\r\n LOG_TABLE[EXP_TABLE[i] ] = i;\r\n }\r\n\r\n var _this = {};\r\n\r\n _this.glog = function(n) {\r\n\r\n if (n < 1) {\r\n throw 'glog(' + n + ')';\r\n }\r\n\r\n return LOG_TABLE[n];\r\n };\r\n\r\n _this.gexp = function(n) {\r\n\r\n while (n < 0) {\r\n n += 255;\r\n }\r\n\r\n while (n >= 256) {\r\n n -= 255;\r\n }\r\n\r\n return EXP_TABLE[n];\r\n };\r\n\r\n return _this;\r\n }();\r\n\r\n //---------------------------------------------------------------------\r\n // qrPolynomial\r\n //---------------------------------------------------------------------\r\n\r\n function qrPolynomial(num, shift) {\r\n\r\n if (typeof num.length == 'undefined') {\r\n throw num.length + '/' + shift;\r\n }\r\n\r\n var _num = function() {\r\n var offset = 0;\r\n while (offset < num.length && num[offset] == 0) {\r\n offset += 1;\r\n }\r\n var _num = new Array(num.length - offset + shift);\r\n for (var i = 0; i < num.length - offset; i += 1) {\r\n _num[i] = num[i + offset];\r\n }\r\n return _num;\r\n }();\r\n\r\n var _this = {};\r\n\r\n _this.getAt = function(index) {\r\n return _num[index];\r\n };\r\n\r\n _this.getLength = function() {\r\n return _num.length;\r\n };\r\n\r\n _this.multiply = function(e) {\r\n\r\n var num = new Array(_this.getLength() + e.getLength() - 1);\r\n\r\n for (var i = 0; i < _this.getLength(); i += 1) {\r\n for (var j = 0; j < e.getLength(); j += 1) {\r\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\r\n }\r\n }\r\n\r\n return qrPolynomial(num, 0);\r\n };\r\n\r\n _this.mod = function(e) {\r\n\r\n if (_this.getLength() - e.getLength() < 0) {\r\n return _this;\r\n }\r\n\r\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\r\n\r\n var num = new Array(_this.getLength() );\r\n for (var i = 0; i < _this.getLength(); i += 1) {\r\n num[i] = _this.getAt(i);\r\n }\r\n\r\n for (var i = 0; i < e.getLength(); i += 1) {\r\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\r\n }\r\n\r\n // recursive call\r\n return qrPolynomial(num, 0).mod(e);\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // QRRSBlock\r\n //---------------------------------------------------------------------\r\n\r\n var QRRSBlock = function() {\r\n\r\n var RS_BLOCK_TABLE = [\r\n\r\n // L\r\n // M\r\n // Q\r\n // H\r\n\r\n // 1\r\n [1, 26, 19],\r\n [1, 26, 16],\r\n [1, 26, 13],\r\n [1, 26, 9],\r\n\r\n // 2\r\n [1, 44, 34],\r\n [1, 44, 28],\r\n [1, 44, 22],\r\n [1, 44, 16],\r\n\r\n // 3\r\n [1, 70, 55],\r\n [1, 70, 44],\r\n [2, 35, 17],\r\n [2, 35, 13],\r\n\r\n // 4\r\n [1, 100, 80],\r\n [2, 50, 32],\r\n [2, 50, 24],\r\n [4, 25, 9],\r\n\r\n // 5\r\n [1, 134, 108],\r\n [2, 67, 43],\r\n [2, 33, 15, 2, 34, 16],\r\n [2, 33, 11, 2, 34, 12],\r\n\r\n // 6\r\n [2, 86, 68],\r\n [4, 43, 27],\r\n [4, 43, 19],\r\n [4, 43, 15],\r\n\r\n // 7\r\n [2, 98, 78],\r\n [4, 49, 31],\r\n [2, 32, 14, 4, 33, 15],\r\n [4, 39, 13, 1, 40, 14],\r\n\r\n // 8\r\n [2, 121, 97],\r\n [2, 60, 38, 2, 61, 39],\r\n [4, 40, 18, 2, 41, 19],\r\n [4, 40, 14, 2, 41, 15],\r\n\r\n // 9\r\n [2, 146, 116],\r\n [3, 58, 36, 2, 59, 37],\r\n [4, 36, 16, 4, 37, 17],\r\n [4, 36, 12, 4, 37, 13],\r\n\r\n // 10\r\n [2, 86, 68, 2, 87, 69],\r\n [4, 69, 43, 1, 70, 44],\r\n [6, 43, 19, 2, 44, 20],\r\n [6, 43, 15, 2, 44, 16],\r\n\r\n // 11\r\n [4, 101, 81],\r\n [1, 80, 50, 4, 81, 51],\r\n [4, 50, 22, 4, 51, 23],\r\n [3, 36, 12, 8, 37, 13],\r\n\r\n // 12\r\n [2, 116, 92, 2, 117, 93],\r\n [6, 58, 36, 2, 59, 37],\r\n [4, 46, 20, 6, 47, 21],\r\n [7, 42, 14, 4, 43, 15],\r\n\r\n // 13\r\n [4, 133, 107],\r\n [8, 59, 37, 1, 60, 38],\r\n [8, 44, 20, 4, 45, 21],\r\n [12, 33, 11, 4, 34, 12],\r\n\r\n // 14\r\n [3, 145, 115, 1, 146, 116],\r\n [4, 64, 40, 5, 65, 41],\r\n [11, 36, 16, 5, 37, 17],\r\n [11, 36, 12, 5, 37, 13],\r\n\r\n // 15\r\n [5, 109, 87, 1, 110, 88],\r\n [5, 65, 41, 5, 66, 42],\r\n [5, 54, 24, 7, 55, 25],\r\n [11, 36, 12, 7, 37, 13],\r\n\r\n // 16\r\n [5, 122, 98, 1, 123, 99],\r\n [7, 73, 45, 3, 74, 46],\r\n [15, 43, 19, 2, 44, 20],\r\n [3, 45, 15, 13, 46, 16],\r\n\r\n // 17\r\n [1, 135, 107, 5, 136, 108],\r\n [10, 74, 46, 1, 75, 47],\r\n [1, 50, 22, 15, 51, 23],\r\n [2, 42, 14, 17, 43, 15],\r\n\r\n // 18\r\n [5, 150, 120, 1, 151, 121],\r\n [9, 69, 43, 4, 70, 44],\r\n [17, 50, 22, 1, 51, 23],\r\n [2, 42, 14, 19, 43, 15],\r\n\r\n // 19\r\n [3, 141, 113, 4, 142, 114],\r\n [3, 70, 44, 11, 71, 45],\r\n [17, 47, 21, 4, 48, 22],\r\n [9, 39, 13, 16, 40, 14],\r\n\r\n // 20\r\n [3, 135, 107, 5, 136, 108],\r\n [3, 67, 41, 13, 68, 42],\r\n [15, 54, 24, 5, 55, 25],\r\n [15, 43, 15, 10, 44, 16],\r\n\r\n // 21\r\n [4, 144, 116, 4, 145, 117],\r\n [17, 68, 42],\r\n [17, 50, 22, 6, 51, 23],\r\n [19, 46, 16, 6, 47, 17],\r\n\r\n // 22\r\n [2, 139, 111, 7, 140, 112],\r\n [17, 74, 46],\r\n [7, 54, 24, 16, 55, 25],\r\n [34, 37, 13],\r\n\r\n // 23\r\n [4, 151, 121, 5, 152, 122],\r\n [4, 75, 47, 14, 76, 48],\r\n [11, 54, 24, 14, 55, 25],\r\n [16, 45, 15, 14, 46, 16],\r\n\r\n // 24\r\n [6, 147, 117, 4, 148, 118],\r\n [6, 73, 45, 14, 74, 46],\r\n [11, 54, 24, 16, 55, 25],\r\n [30, 46, 16, 2, 47, 17],\r\n\r\n // 25\r\n [8, 132, 106, 4, 133, 107],\r\n [8, 75, 47, 13, 76, 48],\r\n [7, 54, 24, 22, 55, 25],\r\n [22, 45, 15, 13, 46, 16],\r\n\r\n // 26\r\n [10, 142, 114, 2, 143, 115],\r\n [19, 74, 46, 4, 75, 47],\r\n [28, 50, 22, 6, 51, 23],\r\n [33, 46, 16, 4, 47, 17],\r\n\r\n // 27\r\n [8, 152, 122, 4, 153, 123],\r\n [22, 73, 45, 3, 74, 46],\r\n [8, 53, 23, 26, 54, 24],\r\n [12, 45, 15, 28, 46, 16],\r\n\r\n // 28\r\n [3, 147, 117, 10, 148, 118],\r\n [3, 73, 45, 23, 74, 46],\r\n [4, 54, 24, 31, 55, 25],\r\n [11, 45, 15, 31, 46, 16],\r\n\r\n // 29\r\n [7, 146, 116, 7, 147, 117],\r\n [21, 73, 45, 7, 74, 46],\r\n [1, 53, 23, 37, 54, 24],\r\n [19, 45, 15, 26, 46, 16],\r\n\r\n // 30\r\n [5, 145, 115, 10, 146, 116],\r\n [19, 75, 47, 10, 76, 48],\r\n [15, 54, 24, 25, 55, 25],\r\n [23, 45, 15, 25, 46, 16],\r\n\r\n // 31\r\n [13, 145, 115, 3, 146, 116],\r\n [2, 74, 46, 29, 75, 47],\r\n [42, 54, 24, 1, 55, 25],\r\n [23, 45, 15, 28, 46, 16],\r\n\r\n // 32\r\n [17, 145, 115],\r\n [10, 74, 46, 23, 75, 47],\r\n [10, 54, 24, 35, 55, 25],\r\n [19, 45, 15, 35, 46, 16],\r\n\r\n // 33\r\n [17, 145, 115, 1, 146, 116],\r\n [14, 74, 46, 21, 75, 47],\r\n [29, 54, 24, 19, 55, 25],\r\n [11, 45, 15, 46, 46, 16],\r\n\r\n // 34\r\n [13, 145, 115, 6, 146, 116],\r\n [14, 74, 46, 23, 75, 47],\r\n [44, 54, 24, 7, 55, 25],\r\n [59, 46, 16, 1, 47, 17],\r\n\r\n // 35\r\n [12, 151, 121, 7, 152, 122],\r\n [12, 75, 47, 26, 76, 48],\r\n [39, 54, 24, 14, 55, 25],\r\n [22, 45, 15, 41, 46, 16],\r\n\r\n // 36\r\n [6, 151, 121, 14, 152, 122],\r\n [6, 75, 47, 34, 76, 48],\r\n [46, 54, 24, 10, 55, 25],\r\n [2, 45, 15, 64, 46, 16],\r\n\r\n // 37\r\n [17, 152, 122, 4, 153, 123],\r\n [29, 74, 46, 14, 75, 47],\r\n [49, 54, 24, 10, 55, 25],\r\n [24, 45, 15, 46, 46, 16],\r\n\r\n // 38\r\n [4, 152, 122, 18, 153, 123],\r\n [13, 74, 46, 32, 75, 47],\r\n [48, 54, 24, 14, 55, 25],\r\n [42, 45, 15, 32, 46, 16],\r\n\r\n // 39\r\n [20, 147, 117, 4, 148, 118],\r\n [40, 75, 47, 7, 76, 48],\r\n [43, 54, 24, 22, 55, 25],\r\n [10, 45, 15, 67, 46, 16],\r\n\r\n // 40\r\n [19, 148, 118, 6, 149, 119],\r\n [18, 75, 47, 31, 76, 48],\r\n [34, 54, 24, 34, 55, 25],\r\n [20, 45, 15, 61, 46, 16]\r\n ];\r\n\r\n var qrRSBlock = function(totalCount, dataCount) {\r\n var _this = {};\r\n _this.totalCount = totalCount;\r\n _this.dataCount = dataCount;\r\n return _this;\r\n };\r\n\r\n var _this = {};\r\n\r\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\r\n\r\n switch(errorCorrectionLevel) {\r\n case QRErrorCorrectionLevel.L :\r\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\r\n case QRErrorCorrectionLevel.M :\r\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\r\n case QRErrorCorrectionLevel.Q :\r\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\r\n case QRErrorCorrectionLevel.H :\r\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\r\n default :\r\n return undefined;\r\n }\r\n };\r\n\r\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\r\n\r\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\r\n\r\n if (typeof rsBlock == 'undefined') {\r\n throw 'bad rs block @ typeNumber:' + typeNumber +\r\n '/errorCorrectionLevel:' + errorCorrectionLevel;\r\n }\r\n\r\n var length = rsBlock.length / 3;\r\n\r\n var list = [];\r\n\r\n for (var i = 0; i < length; i += 1) {\r\n\r\n var count = rsBlock[i * 3 + 0];\r\n var totalCount = rsBlock[i * 3 + 1];\r\n var dataCount = rsBlock[i * 3 + 2];\r\n\r\n for (var j = 0; j < count; j += 1) {\r\n list.push(qrRSBlock(totalCount, dataCount) );\r\n }\r\n }\r\n\r\n return list;\r\n };\r\n\r\n return _this;\r\n }();\r\n\r\n //---------------------------------------------------------------------\r\n // qrBitBuffer\r\n //---------------------------------------------------------------------\r\n\r\n var qrBitBuffer = function() {\r\n\r\n var _buffer = [];\r\n var _length = 0;\r\n\r\n var _this = {};\r\n\r\n _this.getBuffer = function() {\r\n return _buffer;\r\n };\r\n\r\n _this.getAt = function(index) {\r\n var bufIndex = Math.floor(index / 8);\r\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\r\n };\r\n\r\n _this.put = function(num, length) {\r\n for (var i = 0; i < length; i += 1) {\r\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\r\n }\r\n };\r\n\r\n _this.getLengthInBits = function() {\r\n return _length;\r\n };\r\n\r\n _this.putBit = function(bit) {\r\n\r\n var bufIndex = Math.floor(_length / 8);\r\n if (_buffer.length <= bufIndex) {\r\n _buffer.push(0);\r\n }\r\n\r\n if (bit) {\r\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\r\n }\r\n\r\n _length += 1;\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // qrNumber\r\n //---------------------------------------------------------------------\r\n\r\n var qrNumber = function(data) {\r\n\r\n var _mode = QRMode.MODE_NUMBER;\r\n var _data = data;\r\n\r\n var _this = {};\r\n\r\n _this.getMode = function() {\r\n return _mode;\r\n };\r\n\r\n _this.getLength = function(buffer) {\r\n return _data.length;\r\n };\r\n\r\n _this.write = function(buffer) {\r\n\r\n var data = _data;\r\n\r\n var i = 0;\r\n\r\n while (i + 2 < data.length) {\r\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\r\n i += 3;\r\n }\r\n\r\n if (i < data.length) {\r\n if (data.length - i == 1) {\r\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\r\n } else if (data.length - i == 2) {\r\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\r\n }\r\n }\r\n };\r\n\r\n var strToNum = function(s) {\r\n var num = 0;\r\n for (var i = 0; i < s.length; i += 1) {\r\n num = num * 10 + chatToNum(s.charAt(i) );\r\n }\r\n return num;\r\n };\r\n\r\n var chatToNum = function(c) {\r\n if ('0' <= c && c <= '9') {\r\n return c.charCodeAt(0) - '0'.charCodeAt(0);\r\n }\r\n throw 'illegal char :' + c;\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // qrAlphaNum\r\n //---------------------------------------------------------------------\r\n\r\n var qrAlphaNum = function(data) {\r\n\r\n var _mode = QRMode.MODE_ALPHA_NUM;\r\n var _data = data;\r\n\r\n var _this = {};\r\n\r\n _this.getMode = function() {\r\n return _mode;\r\n };\r\n\r\n _this.getLength = function(buffer) {\r\n return _data.length;\r\n };\r\n\r\n _this.write = function(buffer) {\r\n\r\n var s = _data;\r\n\r\n var i = 0;\r\n\r\n while (i + 1 < s.length) {\r\n buffer.put(\r\n getCode(s.charAt(i) ) * 45 +\r\n getCode(s.charAt(i + 1) ), 11);\r\n i += 2;\r\n }\r\n\r\n if (i < s.length) {\r\n buffer.put(getCode(s.charAt(i) ), 6);\r\n }\r\n };\r\n\r\n var getCode = function(c) {\r\n\r\n if ('0' <= c && c <= '9') {\r\n return c.charCodeAt(0) - '0'.charCodeAt(0);\r\n } else if ('A' <= c && c <= 'Z') {\r\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\r\n } else {\r\n switch (c) {\r\n case ' ' : return 36;\r\n case '$' : return 37;\r\n case '%' : return 38;\r\n case '*' : return 39;\r\n case '+' : return 40;\r\n case '-' : return 41;\r\n case '.' : return 42;\r\n case '/' : return 43;\r\n case ':' : return 44;\r\n default :\r\n throw 'illegal char :' + c;\r\n }\r\n }\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // qr8BitByte\r\n //---------------------------------------------------------------------\r\n\r\n var qr8BitByte = function(data) {\r\n\r\n var _mode = QRMode.MODE_8BIT_BYTE;\r\n var _data = data;\r\n var _bytes = qrcode.stringToBytes(data);\r\n\r\n var _this = {};\r\n\r\n _this.getMode = function() {\r\n return _mode;\r\n };\r\n\r\n _this.getLength = function(buffer) {\r\n return _bytes.length;\r\n };\r\n\r\n _this.write = function(buffer) {\r\n for (var i = 0; i < _bytes.length; i += 1) {\r\n buffer.put(_bytes[i], 8);\r\n }\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // qrKanji\r\n //---------------------------------------------------------------------\r\n\r\n var qrKanji = function(data) {\r\n\r\n var _mode = QRMode.MODE_KANJI;\r\n var _data = data;\r\n\r\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\r\n if (!stringToBytes) {\r\n throw 'sjis not supported.';\r\n }\r\n !function(c, code) {\r\n // self test for sjis support.\r\n var test = stringToBytes(c);\r\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\r\n throw 'sjis not supported.';\r\n }\r\n }('\\u53cb', 0x9746);\r\n\r\n var _bytes = stringToBytes(data);\r\n\r\n var _this = {};\r\n\r\n _this.getMode = function() {\r\n return _mode;\r\n };\r\n\r\n _this.getLength = function(buffer) {\r\n return ~~(_bytes.length / 2);\r\n };\r\n\r\n _this.write = function(buffer) {\r\n\r\n var data = _bytes;\r\n\r\n var i = 0;\r\n\r\n while (i + 1 < data.length) {\r\n\r\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\r\n\r\n if (0x8140 <= c && c <= 0x9FFC) {\r\n c -= 0x8140;\r\n } else if (0xE040 <= c && c <= 0xEBBF) {\r\n c -= 0xC140;\r\n } else {\r\n throw 'illegal char at ' + (i + 1) + '/' + c;\r\n }\r\n\r\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\r\n\r\n buffer.put(c, 13);\r\n\r\n i += 2;\r\n }\r\n\r\n if (i < data.length) {\r\n throw 'illegal char at ' + (i + 1);\r\n }\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n //=====================================================================\r\n // GIF Support etc.\r\n //\r\n\r\n //---------------------------------------------------------------------\r\n // byteArrayOutputStream\r\n //---------------------------------------------------------------------\r\n\r\n var byteArrayOutputStream = function() {\r\n\r\n var _bytes = [];\r\n\r\n var _this = {};\r\n\r\n _this.writeByte = function(b) {\r\n _bytes.push(b & 0xff);\r\n };\r\n\r\n _this.writeShort = function(i) {\r\n _this.writeByte(i);\r\n _this.writeByte(i >>> 8);\r\n };\r\n\r\n _this.writeBytes = function(b, off, len) {\r\n off = off || 0;\r\n len = len || b.length;\r\n for (var i = 0; i < len; i += 1) {\r\n _this.writeByte(b[i + off]);\r\n }\r\n };\r\n\r\n _this.writeString = function(s) {\r\n for (var i = 0; i < s.length; i += 1) {\r\n _this.writeByte(s.charCodeAt(i) );\r\n }\r\n };\r\n\r\n _this.toByteArray = function() {\r\n return _bytes;\r\n };\r\n\r\n _this.toString = function() {\r\n var s = '';\r\n s += '[';\r\n for (var i = 0; i < _bytes.length; i += 1) {\r\n if (i > 0) {\r\n s += ',';\r\n }\r\n s += _bytes[i];\r\n }\r\n s += ']';\r\n return s;\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // base64EncodeOutputStream\r\n //---------------------------------------------------------------------\r\n\r\n var base64EncodeOutputStream = function() {\r\n\r\n var _buffer = 0;\r\n var _buflen = 0;\r\n var _length = 0;\r\n var _base64 = '';\r\n\r\n var _this = {};\r\n\r\n var writeEncoded = function(b) {\r\n _base64 += String.fromCharCode(encode(b & 0x3f) );\r\n };\r\n\r\n var encode = function(n) {\r\n if (n < 0) {\r\n // error.\r\n } else if (n < 26) {\r\n return 0x41 + n;\r\n } else if (n < 52) {\r\n return 0x61 + (n - 26);\r\n } else if (n < 62) {\r\n return 0x30 + (n - 52);\r\n } else if (n == 62) {\r\n return 0x2b;\r\n } else if (n == 63) {\r\n return 0x2f;\r\n }\r\n throw 'n:' + n;\r\n };\r\n\r\n _this.writeByte = function(n) {\r\n\r\n _buffer = (_buffer << 8) | (n & 0xff);\r\n _buflen += 8;\r\n _length += 1;\r\n\r\n while (_buflen >= 6) {\r\n writeEncoded(_buffer >>> (_buflen - 6) );\r\n _buflen -= 6;\r\n }\r\n };\r\n\r\n _this.flush = function() {\r\n\r\n if (_buflen > 0) {\r\n writeEncoded(_buffer << (6 - _buflen) );\r\n _buffer = 0;\r\n _buflen = 0;\r\n }\r\n\r\n if (_length % 3 != 0) {\r\n // padding\r\n var padlen = 3 - _length % 3;\r\n for (var i = 0; i < padlen; i += 1) {\r\n _base64 += '=';\r\n }\r\n }\r\n };\r\n\r\n _this.toString = function() {\r\n return _base64;\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // base64DecodeInputStream\r\n //---------------------------------------------------------------------\r\n\r\n var base64DecodeInputStream = function(str) {\r\n\r\n var _str = str;\r\n var _pos = 0;\r\n var _buffer = 0;\r\n var _buflen = 0;\r\n\r\n var _this = {};\r\n\r\n _this.read = function() {\r\n\r\n while (_buflen < 8) {\r\n\r\n if (_pos >= _str.length) {\r\n if (_buflen == 0) {\r\n return -1;\r\n }\r\n throw 'unexpected end of file./' + _buflen;\r\n }\r\n\r\n var c = _str.charAt(_pos);\r\n _pos += 1;\r\n\r\n if (c == '=') {\r\n _buflen = 0;\r\n return -1;\r\n } else if (c.match(/^\\s$/) ) {\r\n // ignore if whitespace.\r\n continue;\r\n }\r\n\r\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\r\n _buflen += 6;\r\n }\r\n\r\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\r\n _buflen -= 8;\r\n return n;\r\n };\r\n\r\n var decode = function(c) {\r\n if (0x41 <= c && c <= 0x5a) {\r\n return c - 0x41;\r\n } else if (0x61 <= c && c <= 0x7a) {\r\n return c - 0x61 + 26;\r\n } else if (0x30 <= c && c <= 0x39) {\r\n return c - 0x30 + 52;\r\n } else if (c == 0x2b) {\r\n return 62;\r\n } else if (c == 0x2f) {\r\n return 63;\r\n } else {\r\n throw 'c:' + c;\r\n }\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // gifImage (B/W)\r\n //---------------------------------------------------------------------\r\n\r\n var gifImage = function(width, height) {\r\n\r\n var _width = width;\r\n var _height = height;\r\n var _data = new Array(width * height);\r\n\r\n var _this = {};\r\n\r\n _this.setPixel = function(x, y, pixel) {\r\n _data[y * _width + x] = pixel;\r\n };\r\n\r\n _this.write = function(out) {\r\n\r\n //---------------------------------\r\n // GIF Signature\r\n\r\n out.writeString('GIF87a');\r\n\r\n //---------------------------------\r\n // Screen Descriptor\r\n\r\n out.writeShort(_width);\r\n out.writeShort(_height);\r\n\r\n out.writeByte(0x80); // 2bit\r\n out.writeByte(0);\r\n out.writeByte(0);\r\n\r\n //---------------------------------\r\n // Global Color Map\r\n\r\n // black\r\n out.writeByte(0x00);\r\n out.writeByte(0x00);\r\n out.writeByte(0x00);\r\n\r\n // white\r\n out.writeByte(0xff);\r\n out.writeByte(0xff);\r\n out.writeByte(0xff);\r\n\r\n //---------------------------------\r\n // Image Descriptor\r\n\r\n out.writeString(',');\r\n out.writeShort(0);\r\n out.writeShort(0);\r\n out.writeShort(_width);\r\n out.writeShort(_height);\r\n out.writeByte(0);\r\n\r\n //---------------------------------\r\n // Local Color Map\r\n\r\n //---------------------------------\r\n // Raster Data\r\n\r\n var lzwMinCodeSize = 2;\r\n var raster = getLZWRaster(lzwMinCodeSize);\r\n\r\n out.writeByte(lzwMinCodeSize);\r\n\r\n var offset = 0;\r\n\r\n while (raster.length - offset > 255) {\r\n out.writeByte(255);\r\n out.writeBytes(raster, offset, 255);\r\n offset += 255;\r\n }\r\n\r\n out.writeByte(raster.length - offset);\r\n out.writeBytes(raster, offset, raster.length - offset);\r\n out.writeByte(0x00);\r\n\r\n //---------------------------------\r\n // GIF Terminator\r\n out.writeString(';');\r\n };\r\n\r\n var bitOutputStream = function(out) {\r\n\r\n var _out = out;\r\n var _bitLength = 0;\r\n var _bitBuffer = 0;\r\n\r\n var _this = {};\r\n\r\n _this.write = function(data, length) {\r\n\r\n if ( (data >>> length) != 0) {\r\n throw 'length over';\r\n }\r\n\r\n while (_bitLength + length >= 8) {\r\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\r\n length -= (8 - _bitLength);\r\n data >>>= (8 - _bitLength);\r\n _bitBuffer = 0;\r\n _bitLength = 0;\r\n }\r\n\r\n _bitBuffer = (data << _bitLength) | _bitBuffer;\r\n _bitLength = _bitLength + length;\r\n };\r\n\r\n _this.flush = function() {\r\n if (_bitLength > 0) {\r\n _out.writeByte(_bitBuffer);\r\n }\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n var getLZWRaster = function(lzwMinCodeSize) {\r\n\r\n var clearCode = 1 << lzwMinCodeSize;\r\n var endCode = (1 << lzwMinCodeSize) + 1;\r\n var bitLength = lzwMinCodeSize + 1;\r\n\r\n // Setup LZWTable\r\n var table = lzwTable();\r\n\r\n for (var i = 0; i < clearCode; i += 1) {\r\n table.add(String.fromCharCode(i) );\r\n }\r\n table.add(String.fromCharCode(clearCode) );\r\n table.add(String.fromCharCode(endCode) );\r\n\r\n var byteOut = byteArrayOutputStream();\r\n var bitOut = bitOutputStream(byteOut);\r\n\r\n // clear code\r\n bitOut.write(clearCode, bitLength);\r\n\r\n var dataIndex = 0;\r\n\r\n var s = String.fromCharCode(_data[dataIndex]);\r\n dataIndex += 1;\r\n\r\n while (dataIndex < _data.length) {\r\n\r\n var c = String.fromCharCode(_data[dataIndex]);\r\n dataIndex += 1;\r\n\r\n if (table.contains(s + c) ) {\r\n\r\n s = s + c;\r\n\r\n } else {\r\n\r\n bitOut.write(table.indexOf(s), bitLength);\r\n\r\n if (table.size() < 0xfff) {\r\n\r\n if (table.size() == (1 << bitLength) ) {\r\n bitLength += 1;\r\n }\r\n\r\n table.add(s + c);\r\n }\r\n\r\n s = c;\r\n }\r\n }\r\n\r\n bitOut.write(table.indexOf(s), bitLength);\r\n\r\n // end code\r\n bitOut.write(endCode, bitLength);\r\n\r\n bitOut.flush();\r\n\r\n return byteOut.toByteArray();\r\n };\r\n\r\n var lzwTable = function() {\r\n\r\n var _map = {};\r\n var _size = 0;\r\n\r\n var _this = {};\r\n\r\n _this.add = function(key) {\r\n if (_this.contains(key) ) {\r\n throw 'dup key:' + key;\r\n }\r\n _map[key] = _size;\r\n _size += 1;\r\n };\r\n\r\n _this.size = function() {\r\n return _size;\r\n };\r\n\r\n _this.indexOf = function(key) {\r\n return _map[key];\r\n };\r\n\r\n _this.contains = function(key) {\r\n return typeof _map[key] != 'undefined';\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n return _this;\r\n };\r\n\r\n var createDataURL = function(width, height, getPixel) {\r\n var gif = gifImage(width, height);\r\n for (var y = 0; y < height; y += 1) {\r\n for (var x = 0; x < width; x += 1) {\r\n gif.setPixel(x, y, getPixel(x, y) );\r\n }\r\n }\r\n\r\n var b = byteArrayOutputStream();\r\n gif.write(b);\r\n\r\n var base64 = base64EncodeOutputStream();\r\n var bytes = b.toByteArray();\r\n for (var i = 0; i < bytes.length; i += 1) {\r\n base64.writeByte(bytes[i]);\r\n }\r\n base64.flush();\r\n\r\n return 'data:image/gif;base64,' + base64;\r\n };\r\n\r\n //---------------------------------------------------------------------\r\n // returns qrcode function.\r\n\r\n return qrcode;\r\n}();\r\n\r\n// multibyte support\r\n!function() {\r\n\r\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\r\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\r\n function toUTF8Array(str) {\r\n var utf8 = [];\r\n for (var i=0; i < str.length; i++) {\r\n var charcode = str.charCodeAt(i);\r\n if (charcode < 0x80) utf8.push(charcode);\r\n else if (charcode < 0x800) {\r\n utf8.push(0xc0 | (charcode >> 6),\r\n 0x80 | (charcode & 0x3f));\r\n }\r\n else if (charcode < 0xd800 || charcode >= 0xe000) {\r\n utf8.push(0xe0 | (charcode >> 12),\r\n 0x80 | ((charcode>>6) & 0x3f),\r\n 0x80 | (charcode & 0x3f));\r\n }\r\n // surrogate pair\r\n else {\r\n i++;\r\n // UTF-16 encodes 0x10000-0x10FFFF by\r\n // subtracting 0x10000 and splitting the\r\n // 20 bits of 0x0-0xFFFFF into two halves\r\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\r\n | (str.charCodeAt(i) & 0x3ff));\r\n utf8.push(0xf0 | (charcode >>18),\r\n 0x80 | ((charcode>>12) & 0x3f),\r\n 0x80 | ((charcode>>6) & 0x3f),\r\n 0x80 | (charcode & 0x3f));\r\n }\r\n }\r\n return utf8;\r\n }\r\n return toUTF8Array(s);\r\n };\r\n\r\n}();\r\n\r\n(function (factory) {\r\n if (true) {\r\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\r\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\r\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\r\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n } else {}\r\n}(function () {\r\n return qrcode;\r\n}));\r\n\r\n\r\n/***/ })\r\n/******/ ]);\r\n});","define(['jquery', 'knockout', 'selectize'],\r\n\tfunction ($, ko, selectize) {\r\n\t\tvar inject_binding = function (allBindings, key, value) {\r\n\t\t\t//https://github.com/knockout/knockout/pull/932#issuecomment-26547528\r\n\t\t\treturn {\r\n\t\t\t\thas: function (bindingKey) {\r\n\t\t\t\t\treturn (bindingKey == key) || allBindings.has(bindingKey);\r\n\t\t\t\t},\r\n\t\t\t\tget: function (bindingKey) {\r\n\t\t\t\t\tvar binding = allBindings.get(bindingKey);\r\n\t\t\t\t\tif (bindingKey == key) {\r\n\t\t\t\t\t\tbinding = binding ? [].concat(binding, value) : value;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn binding;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tko.bindingHandlers.selectize = {\r\n\t\t\tinit: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n\t\t\t\tif (!allBindingsAccessor.has('optionsText'))\r\n\t\t\t\t\tallBindingsAccessor = inject_binding(allBindingsAccessor, 'optionsText', 'name');\r\n\t\t\t\tif (!allBindingsAccessor.has('optionsValue'))\r\n\t\t\t\t\tallBindingsAccessor = inject_binding(allBindingsAccessor, 'optionsValue', 'id');\r\n\t\t\t\tif (typeof allBindingsAccessor.get('optionsCaption') == 'undefined')\r\n\t\t\t\t\tallBindingsAccessor = inject_binding(allBindingsAccessor, 'optionsCaption', 'Choose...');\r\n\r\n\t\t\t\tko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);\r\n\r\n\t\t\t\tvar options = {\r\n\t\t\t\t\tvalueField: allBindingsAccessor.get('optionsValue'),\r\n\t\t\t\t\tlabelField: allBindingsAccessor.get('optionsText')//,\r\n\t\t\t\t\t//searchField: allBindingsAccessor.get('optionsSearch')\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif (allBindingsAccessor.has('options')) {\r\n\t\t\t\t\tvar passed_options = allBindingsAccessor.get('options');\r\n\t\t\t\t\tfor (var attr_name in passed_options) {\r\n\t\t\t\t\t\toptions[attr_name] = passed_options[attr_name];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar $select = $(element).selectize(options)[0].selectize;\r\n\r\n\t\t\t\tif (typeof allBindingsAccessor.get('value') == 'function') {\r\n\t\t\t\t\t$select.addItem(allBindingsAccessor.get('value')());\r\n\t\t\t\t\tallBindingsAccessor.get('value').subscribe(function (new_val) {\r\n\t\t\t\t\t\t$select.addItem(new_val);\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (typeof allBindingsAccessor.get('selectedOptions') == 'function') {\r\n\t\t\t\t\tallBindingsAccessor.get('selectedOptions').subscribe(function (new_val) {\r\n\t\t\t\t\t\t// Removing items which are not in new value\r\n\t\t\t\t\t\tvar values = $select.getValue();\r\n\t\t\t\t\t\tvar items_to_remove = [];\r\n\t\t\t\t\t\tfor (var k in values) {\r\n\t\t\t\t\t\t\tif (new_val.indexOf(values[k]) == -1) {\r\n\t\t\t\t\t\t\t\titems_to_remove.push(values[k]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfor (var k in items_to_remove) {\r\n\t\t\t\t\t\t\t$select.removeItem(items_to_remove[k]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfor (var k in new_val) {\r\n\t\t\t\t\t\t\t$select.addItem(new_val[k]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t\tvar selected = allBindingsAccessor.get('selectedOptions')();\r\n\t\t\t\t\tfor (var k in selected) {\r\n\t\t\t\t\t\t$select.addItem(selected[k]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif (typeof init_selectize == 'function') {\r\n\t\t\t\t\tinit_selectize($select);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (typeof valueAccessor().subscribe == 'function') {\r\n\t\t\t\t\tvalueAccessor().subscribe(function (changes) {\r\n\t\t\t\t\t\t// To avoid having duplicate keys, all delete operations will go first\r\n\t\t\t\t\t\tvar addedItems = new Array();\r\n\t\t\t\t\t\tchanges.forEach(function (change) {\r\n\t\t\t\t\t\t\tswitch (change.status) {\r\n\t\t\t\t\t\t\t\tcase 'added':\r\n\t\t\t\t\t\t\t\t\taddedItems.push(change.value);\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase 'deleted':\r\n\t\t\t\t\t\t\t\t\tvar itemId = change.value[options.valueField];\r\n\t\t\t\t\t\t\t\t\tif (itemId != null) $select.removeOption(itemId);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\taddedItems.forEach(function (item) {\r\n\t\t\t\t\t\t\t$select.addOption(item);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}, null, \"arrayChange\");\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\t\t\t},\r\n\t\t\tupdate: function (element, valueAccessor, allBindingsAccessor) {\r\n\r\n\t\t\t\tif (allBindingsAccessor.has('object')) {\r\n\t\t\t\t\tvar optionsValue = allBindingsAccessor.get('optionsValue') || 'id';\r\n\t\t\t\t\tvar value_accessor = valueAccessor();\r\n\t\t\t\t\tvar selected_obj = $.grep(value_accessor(), function (i) {\r\n\t\t\t\t\t\tif (typeof i[optionsValue] == 'function')\r\n\t\t\t\t\t\t\tvar id = i[optionsValue]\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tvar id = i[optionsValue]\r\n\t\t\t\t\t\treturn id == allBindingsAccessor.get('value')();\r\n\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\tif (selected_obj) {\r\n\t\t\t\t\t\tallBindingsAccessor.get('object')(selected_obj);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tallBindingsAccessor.get('options') && $(element).next().find('.item').attr('title', allBindingsAccessor.get('options').title);\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n","/**\r\n * microplugin.js\r\n * Copyright (c) 2013 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory();\r\n } else {\r\n root.MicroPlugin = factory();\r\n }\r\n}(this, function () {\r\n var MicroPlugin = {};\r\n\r\n MicroPlugin.mixin = function (Interface) {\r\n Interface.plugins = {};\r\n\r\n /**\r\n * Initializes the listed plugins (with options).\r\n * Acceptable formats:\r\n *\r\n * List (without options):\r\n * ['a', 'b', 'c']\r\n *\r\n * List (with options):\r\n * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\r\n *\r\n * Hash (with options):\r\n * {'a': { ... }, 'b': { ... }, 'c': { ... }}\r\n *\r\n * @param {mixed} plugins\r\n */\r\n Interface.prototype.initializePlugins = function (plugins) {\r\n var i, n, key;\r\n var self = this;\r\n var queue = [];\r\n\r\n self.plugins = {\r\n names: [],\r\n settings: {},\r\n requested: {},\r\n loaded: {}\r\n };\r\n\r\n if (utils.isArray(plugins)) {\r\n for (i = 0, n = plugins.length; i < n; i++) {\r\n if (typeof plugins[i] === 'string') {\r\n queue.push(plugins[i]);\r\n } else {\r\n self.plugins.settings[plugins[i].name] = plugins[i].options;\r\n queue.push(plugins[i].name);\r\n }\r\n }\r\n } else if (plugins) {\r\n for (key in plugins) {\r\n if (plugins.hasOwnProperty(key)) {\r\n self.plugins.settings[key] = plugins[key];\r\n queue.push(key);\r\n }\r\n }\r\n }\r\n\r\n while (queue.length) {\r\n self.require(queue.shift());\r\n }\r\n };\r\n\r\n Interface.prototype.loadPlugin = function (name) {\r\n var self = this;\r\n var plugins = self.plugins;\r\n var plugin = Interface.plugins[name];\r\n\r\n if (!Interface.plugins.hasOwnProperty(name)) {\r\n throw new Error('Unable to find \"' + name + '\" plugin');\r\n }\r\n\r\n plugins.requested[name] = true;\r\n plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\r\n plugins.names.push(name);\r\n };\r\n\r\n /**\r\n * Initializes a plugin.\r\n *\r\n * @param {string} name\r\n */\r\n Interface.prototype.require = function (name) {\r\n var self = this;\r\n var plugins = self.plugins;\r\n\r\n if (!self.plugins.loaded.hasOwnProperty(name)) {\r\n if (plugins.requested[name]) {\r\n throw new Error('Plugin has circular dependency (\"' + name + '\")');\r\n }\r\n self.loadPlugin(name);\r\n }\r\n\r\n return plugins.loaded[name];\r\n };\r\n\r\n /**\r\n * Registers a plugin.\r\n *\r\n * @param {string} name\r\n * @param {function} fn\r\n */\r\n Interface.define = function (name, fn) {\r\n Interface.plugins[name] = {\r\n 'name': name,\r\n 'fn': fn\r\n };\r\n };\r\n };\r\n\r\n var utils = {\r\n isArray: Array.isArray || function (vArg) {\r\n return Object.prototype.toString.call(vArg) === '[object Array]';\r\n }\r\n };\r\n\r\n return MicroPlugin;\r\n}));","define(\r\n [\r\n 'jquery',\r\n 'selectize',\r\n 'Core/Common/ZIndexManager'\r\n ],\r\n function (\r\n $,\r\n selectize,\r\n zIndexManager\r\n ) {\r\n\r\n /**\r\n * this plugin does not work normally when scrolling\r\n *\r\n * configs: dropdownDirection: 'auto' | 'up' | 'down'\r\n */\r\n\r\n selectize.define('dropdown_direction', function(options) {\r\n var self = this;\r\n\r\n /**\r\n * Calculates and applies the appropriate position of the dropdown.\r\n *\r\n * Supports dropdownDirection up, down and auto. In case menu can't be fitted it's\r\n * height is limited to don't fall out of display.\r\n */\r\n this.positionDropdown = (function() {\r\n return function() {\r\n var $control = this.$control;\r\n var $dropdown = this.$dropdown;\r\n var p = getPositions();\r\n\r\n // direction\r\n var direction = getDropdownDirection(p);\r\n if (direction === 'up') {\r\n $dropdown.addClass('direction-up').removeClass('direction-down');\r\n } else {\r\n $dropdown.addClass('direction-down').removeClass('direction-up');\r\n }\r\n $control.attr('data-dropdown-direction', direction);\r\n\r\n // position\r\n var isParentBody = this.settings.dropdownParent === 'body';\r\n var offset = isParentBody ? $control.offset() : $control.position();\r\n var fittedHeight;\r\n\r\n switch (direction) {\r\n case 'up':\r\n offset.top -= p.dropdown.height;\r\n if (p.dropdown.height > p.control.above) {\r\n fittedHeight = p.control.above - 15;\r\n }\r\n break;\r\n\r\n case 'down':\r\n offset.top += p.control.height;\r\n if (p.dropdown.height > p.control.below) {\r\n fittedHeight = p.control.below - 15;\r\n }\r\n break;\r\n }\r\n\r\n if (fittedHeight) {\r\n this.$dropdown_content.css({ 'max-height' : fittedHeight });\r\n }\r\n\r\n this.$dropdown.css({\r\n width : $control.outerWidth(),\r\n top : offset.top,\r\n left : offset.left,\r\n zIndex: zIndexManager.ZIndexManager.Instance.NextValue\r\n });\r\n };\r\n })();\r\n\r\n /**\r\n * Gets direction to display dropdown in. Either up or down.\r\n */\r\n function getDropdownDirection(positions) {\r\n var direction = self.settings.dropdownDirection;\r\n\r\n if (direction === 'auto') {\r\n // down if dropdown fits\r\n if (positions.control.below > positions.dropdown.height) {\r\n direction = 'down';\r\n }\r\n // otherwise direction with most space\r\n else {\r\n direction = (positions.control.above > positions.control.below) ? 'up' : 'down';\r\n }\r\n }\r\n\r\n return direction;\r\n }\r\n\r\n /**\r\n * Get position information for the control and dropdown element.\r\n */\r\n function getPositions() {\r\n var $control = self.$control;\r\n var $window = $(window);\r\n\r\n var control_height = $control.outerHeight(false);\r\n var control_above = $control.offset().top - $window.scrollTop();\r\n var control_below = $window.height() - control_above - control_height;\r\n\r\n var dropdown_height = self.$dropdown.outerHeight(false);\r\n\r\n /**\r\n * the auto close dropdown at scrolling the popup\r\n */\r\n var eventNS = self.eventNS;\r\n var $jBoxContent = $($control).closest('.jBox-content');\r\n $jBoxContent.on( 'scroll' + eventNS, function(){\r\n if (self.isOpen) self.close();\r\n $jBoxContent.off('scroll' + eventNS);\r\n });\r\n\r\n return {\r\n control : {\r\n height : control_height,\r\n above : control_above,\r\n below : control_below\r\n },\r\n dropdown : {\r\n height : dropdown_height\r\n }\r\n };\r\n }\r\n });\r\n });","define(['jquery', 'selectize'],\r\n\tfunction ($, selectize) {\r\n\t\tselectize.define('hidden_textfield', function (options) {\r\n\t\t\tvar self = this;\r\n\r\n\r\n\t\t\tthis.showInput = function () {\r\n\t\t\t\tthis.$control.css({ cursor: 'pointer' });\r\n\t\t\t\tthis.$control_input.css({ height: 'auto', opacity: 1, cursor: 'pointer', position: 'relative' });\r\n\t\t\t\tthis.isInputHidden = false;\r\n\t\t\t};\r\n\r\n\t\t\tthis.setup = (function () {\r\n\t\t\t\tvar original = self.setup;\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\toriginal.apply(self, arguments);\r\n\t\t\t\t\tthis.$control_input.prop('disabled', 'disabled');\r\n\t\t\t\t};\r\n\t\t\t})();\r\n\t\t});\r\n\t});","define(['jquery', 'selectize'],\r\n\tfunction ($, selectize) {\r\n\t\tselectize.define('scroll_parent', function (options) {\r\n\t\t\tvar self = this;\r\n\t\t\tthis.setup_original = this.setup;\r\n\t\t\tself.setup = (function () {\r\n\t\t\t\tvar original = self.setup;\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\toriginal.apply(self, arguments);\r\n\t\t\t\t\twindow.addEventListener('scroll', function (evt) {\r\n\t\t\t\t\t\tif (!$(evt.target).hasClass('selectize-dropdown-content')) {\r\n\t\t\t\t\t\t\tself.close();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, true);\r\n\t\t\t\t};\r\n\t\t\t})();\r\n\t\t});\r\n\t});","/**\r\n * selectize.js (v0.12.4)\r\n * Copyright (c) 2013–2015 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n/*jshint curly:false */\r\n/*jshint browser:true */\r\n\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery', 'sifter', 'microplugin'], factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory(require('jquery'), require('sifter'), require('microplugin'));\r\n } else {\r\n root.Selectize = factory(root.jQuery, root.Sifter, root.MicroPlugin);\r\n }\r\n}(this, function ($, Sifter, MicroPlugin) {\r\n 'use strict';\r\n\r\n var highlight = function ($element, pattern) {\r\n if (typeof pattern === 'string' && !pattern.length) return;\r\n var regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern;\r\n\r\n var highlight = function (node) {\r\n var skip = 0;\r\n if (node.nodeType === 3) {\r\n var pos = node.data.search(regex);\r\n if (pos >= 0 && node.data.length > 0) {\r\n var match = node.data.match(regex);\r\n var spannode = document.createElement('span');\r\n spannode.className = 'highlight';\r\n var middlebit = node.splitText(pos);\r\n var endbit = middlebit.splitText(match[0].length);\r\n var middleclone = middlebit.cloneNode(true);\r\n spannode.appendChild(middleclone);\r\n middlebit.parentNode.replaceChild(spannode, middlebit);\r\n skip = 1;\r\n }\r\n } else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {\r\n for (var i = 0; i < node.childNodes.length; ++i) {\r\n i += highlight(node.childNodes[i]);\r\n }\r\n }\r\n return skip;\r\n };\r\n\r\n return $element.each(function () {\r\n highlight(this);\r\n });\r\n };\r\n\r\n /**\r\n * removeHighlight fn copied from highlight v5 and\r\n * edited to remove with() and pass js strict mode\r\n */\r\n $.fn.removeHighlight = function () {\r\n return this.find(\"span.highlight\").each(function () {\r\n this.parentNode.firstChild.nodeName;\r\n var parent = this.parentNode;\r\n parent.replaceChild(this.firstChild, this);\r\n parent.normalize();\r\n }).end();\r\n };\r\n\r\n\r\n var MicroEvent = function () { };\r\n MicroEvent.prototype = {\r\n on: function (event, fct) {\r\n this._events = this._events || {};\r\n this._events[event] = this._events[event] || [];\r\n this._events[event].push(fct);\r\n },\r\n off: function (event, fct) {\r\n var n = arguments.length;\r\n if (n === 0) return delete this._events;\r\n if (n === 1) return delete this._events[event];\r\n\r\n this._events = this._events || {};\r\n if (event in this._events === false) return;\r\n this._events[event].splice(this._events[event].indexOf(fct), 1);\r\n },\r\n trigger: function (event /* , args... */) {\r\n this._events = this._events || {};\r\n if (event in this._events === false) return;\r\n for (var i = 0; i < this._events[event].length; i++) {\r\n this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Mixin will delegate all MicroEvent.js function in the destination object.\r\n *\r\n * - MicroEvent.mixin(Foobar) will make Foobar able to use MicroEvent\r\n *\r\n * @param {object} the object which will support MicroEvent\r\n */\r\n MicroEvent.mixin = function (destObject) {\r\n var props = ['on', 'off', 'trigger'];\r\n for (var i = 0; i < props.length; i++) {\r\n destObject.prototype[props[i]] = MicroEvent.prototype[props[i]];\r\n }\r\n };\r\n\r\n var IS_MAC = /Mac/.test(navigator.userAgent);\r\n\r\n var KEY_A = 65;\r\n var KEY_COMMA = 188;\r\n var KEY_RETURN = 13;\r\n var KEY_ESC = 27;\r\n var KEY_LEFT = 37;\r\n var KEY_UP = 38;\r\n var KEY_P = 80;\r\n var KEY_RIGHT = 39;\r\n var KEY_DOWN = 40;\r\n var KEY_N = 78;\r\n var KEY_BACKSPACE = 8;\r\n var KEY_DELETE = 46;\r\n var KEY_SHIFT = 16;\r\n var KEY_CMD = IS_MAC ? 91 : 17;\r\n var KEY_CTRL = IS_MAC ? 18 : 17;\r\n var KEY_TAB = 9;\r\n\r\n var TAG_SELECT = 1;\r\n var TAG_INPUT = 2;\r\n\r\n // for now, android support in general is too spotty to support validity\r\n var SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('input').validity;\r\n\r\n\r\n var isset = function (object) {\r\n return typeof object !== 'undefined';\r\n };\r\n\r\n /**\r\n * Converts a scalar to its best string representation\r\n * for hash keys and HTML attribute values.\r\n *\r\n * Transformations:\r\n * 'str' -> 'str'\r\n * null -> ''\r\n * undefined -> ''\r\n * true -> '1'\r\n * false -> '0'\r\n * 0 -> '0'\r\n * 1 -> '1'\r\n *\r\n * @param {string} value\r\n * @returns {string|null}\r\n */\r\n var hash_key = function (value) {\r\n if (typeof value === 'undefined' || value === null) return null;\r\n if (typeof value === 'boolean') return value ? '1' : '0';\r\n return value + '';\r\n };\r\n\r\n /**\r\n * Escapes a string for use within HTML.\r\n *\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\n var escape_html = function (str) {\r\n return (str + '')\r\n .replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"');\r\n };\r\n\r\n /**\r\n * Escapes \"$\" characters in replacement strings.\r\n *\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\n var escape_replace = function (str) {\r\n return (str + '').replace(/\\$/g, '$$$$');\r\n };\r\n\r\n var hook = {};\r\n\r\n /**\r\n * Wraps `method` on `self` so that `fn`\r\n * is invoked before the original method.\r\n *\r\n * @param {object} self\r\n * @param {string} method\r\n * @param {function} fn\r\n */\r\n hook.before = function (self, method, fn) {\r\n var original = self[method];\r\n self[method] = function () {\r\n fn.apply(self, arguments);\r\n return original.apply(self, arguments);\r\n };\r\n };\r\n\r\n /**\r\n * Wraps `method` on `self` so that `fn`\r\n * is invoked after the original method.\r\n *\r\n * @param {object} self\r\n * @param {string} method\r\n * @param {function} fn\r\n */\r\n hook.after = function (self, method, fn) {\r\n var original = self[method];\r\n self[method] = function () {\r\n var result = original.apply(self, arguments);\r\n fn.apply(self, arguments);\r\n return result;\r\n };\r\n };\r\n\r\n /**\r\n * Wraps `fn` so that it can only be invoked once.\r\n *\r\n * @param {function} fn\r\n * @returns {function}\r\n */\r\n var once = function (fn) {\r\n var called = false;\r\n return function () {\r\n if (called) return;\r\n called = true;\r\n fn.apply(this, arguments);\r\n };\r\n };\r\n\r\n /**\r\n * Wraps `fn` so that it can only be called once\r\n * every `delay` milliseconds (invoked on the falling edge).\r\n *\r\n * @param {function} fn\r\n * @param {int} delay\r\n * @returns {function}\r\n */\r\n var debounce = function (fn, delay) {\r\n var timeout;\r\n return function () {\r\n var self = this;\r\n var args = arguments;\r\n window.clearTimeout(timeout);\r\n timeout = window.setTimeout(function () {\r\n fn.apply(self, args);\r\n }, delay);\r\n };\r\n };\r\n\r\n /**\r\n * Debounce all fired events types listed in `types`\r\n * while executing the provided `fn`.\r\n *\r\n * @param {object} self\r\n * @param {array} types\r\n * @param {function} fn\r\n */\r\n var debounce_events = function (self, types, fn) {\r\n var type;\r\n var trigger = self.trigger;\r\n var event_args = {};\r\n\r\n // override trigger method\r\n self.trigger = function () {\r\n var type = arguments[0];\r\n if (types.indexOf(type) !== -1) {\r\n event_args[type] = arguments;\r\n } else {\r\n return trigger.apply(self, arguments);\r\n }\r\n };\r\n\r\n // invoke provided function\r\n fn.apply(self, []);\r\n self.trigger = trigger;\r\n\r\n // trigger queued events\r\n for (type in event_args) {\r\n if (event_args.hasOwnProperty(type)) {\r\n trigger.apply(self, event_args[type]);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * A workaround for http://bugs.jquery.com/ticket/6696\r\n *\r\n * @param {object} $parent - Parent element to listen on.\r\n * @param {string} event - Event name.\r\n * @param {string} selector - Descendant selector to filter by.\r\n * @param {function} fn - Event handler.\r\n */\r\n var watchChildEvent = function ($parent, event, selector, fn) {\r\n $parent.on(event, selector, function (e) {\r\n var child = e.target;\r\n while (child && child.parentNode !== $parent[0]) {\r\n child = child.parentNode;\r\n }\r\n e.currentTarget = child;\r\n return fn.apply(this, [e]);\r\n });\r\n };\r\n\r\n /**\r\n * Determines the current selection within a text input control.\r\n * Returns an object containing:\r\n * - start\r\n * - length\r\n *\r\n * @param {object} input\r\n * @returns {object}\r\n */\r\n var getSelection = function (input) {\r\n var result = {};\r\n if ('selectionStart' in input) {\r\n result.start = input.selectionStart;\r\n result.length = input.selectionEnd - result.start;\r\n } else if (document.selection) {\r\n input.focus();\r\n var sel = document.selection.createRange();\r\n var selLen = document.selection.createRange().text.length;\r\n sel.moveStart('character', -input.value.length);\r\n result.start = sel.text.length - selLen;\r\n result.length = selLen;\r\n }\r\n return result;\r\n };\r\n\r\n /**\r\n * Copies CSS properties from one element to another.\r\n *\r\n * @param {object} $from\r\n * @param {object} $to\r\n * @param {array} properties\r\n */\r\n var transferStyles = function ($from, $to, properties) {\r\n var i, n, styles = {};\r\n if (properties) {\r\n for (i = 0, n = properties.length; i < n; i++) {\r\n styles[properties[i]] = $from.css(properties[i]);\r\n }\r\n } else {\r\n styles = $from.css();\r\n }\r\n $to.css(styles);\r\n };\r\n\r\n /**\r\n * Measures the width of a string within a\r\n * parent element (in pixels).\r\n *\r\n * @param {string} str\r\n * @param {object} $parent\r\n * @returns {int}\r\n */\r\n var measureString = function (str, $parent) {\r\n if (!str) {\r\n return 0;\r\n }\r\n\r\n var $test = $('').css({\r\n position: 'absolute',\r\n top: -99999,\r\n left: -99999,\r\n width: 'auto',\r\n padding: 0,\r\n whiteSpace: 'pre'\r\n }).text(str).appendTo('body');\r\n\r\n transferStyles($parent, $test, [\r\n 'letterSpacing',\r\n 'fontSize',\r\n 'fontFamily',\r\n 'fontWeight',\r\n 'textTransform'\r\n ]);\r\n\r\n var width = $test.width();\r\n $test.remove();\r\n\r\n return width;\r\n };\r\n\r\n /**\r\n * Sets up an input to grow horizontally as the user\r\n * types. If the value is changed manually, you can\r\n * trigger the \"update\" handler to resize:\r\n *\r\n * $input.trigger('update');\r\n *\r\n * @param {object} $input\r\n */\r\n var autoGrow = function ($input) {\r\n var currentWidth = null;\r\n\r\n var update = function (e, options) {\r\n var value, keyCode, printable, placeholder, width;\r\n var shift, character, selection;\r\n e = e || window.event || {};\r\n options = options || {};\r\n\r\n if (e.metaKey || e.altKey) return;\r\n if (!options.force && $input.data('grow') === false) return;\r\n\r\n value = $input.val();\r\n if (e.type && e.type.toLowerCase() === 'keydown') {\r\n keyCode = e.keyCode;\r\n printable = (\r\n (keyCode >= 97 && keyCode <= 122) || // a-z\r\n (keyCode >= 65 && keyCode <= 90) || // A-Z\r\n (keyCode >= 48 && keyCode <= 57) || // 0-9\r\n keyCode === 32 // space\r\n );\r\n\r\n if (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) {\r\n selection = getSelection($input[0]);\r\n if (selection.length) {\r\n value = value.substring(0, selection.start) + value.substring(selection.start + selection.length);\r\n } else if (keyCode === KEY_BACKSPACE && selection.start) {\r\n value = value.substring(0, selection.start - 1) + value.substring(selection.start + 1);\r\n } else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') {\r\n value = value.substring(0, selection.start) + value.substring(selection.start + 1);\r\n }\r\n } else if (printable) {\r\n shift = e.shiftKey;\r\n character = String.fromCharCode(e.keyCode);\r\n if (shift) character = character.toUpperCase();\r\n else character = character.toLowerCase();\r\n value += character;\r\n }\r\n }\r\n\r\n placeholder = $input.attr('placeholder');\r\n if (!value && placeholder) {\r\n value = placeholder;\r\n }\r\n\r\n width = measureString(value, $input) + 4;\r\n if (width !== currentWidth) {\r\n currentWidth = width;\r\n $input.width(width);\r\n $input.triggerHandler('resize');\r\n }\r\n };\r\n\r\n $input.on('keydown keyup update blur', update);\r\n update();\r\n };\r\n\r\n var domToString = function (d) {\r\n var tmp = document.createElement('div');\r\n\r\n tmp.appendChild(d.cloneNode(true));\r\n\r\n return tmp.innerHTML;\r\n };\r\n\r\n var logError = function (message, options) {\r\n if (!options) options = {};\r\n var component = \"Selectize\";\r\n\r\n console.error(component + \": \" + message)\r\n\r\n if (options.explanation) {\r\n // console.group is undefined in ').addClass(settings.wrapperClass).addClass(classes).addClass(inputMode);\r\n $control = $('
').addClass(settings.inputClass).addClass('items').appendTo($wrapper);\r\n $control_input = $('').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex);\r\n $dropdown_parent = $(settings.dropdownParent || $wrapper);\r\n $dropdown = $('
').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent);\r\n $dropdown_content = $('
').addClass(settings.dropdownContentClass).appendTo($dropdown);\r\n\r\n if (inputId = $input.attr('id')) {\r\n $control_input.attr('id', inputId + '-selectized');\r\n $(\"label[for='\" + inputId + \"']\").attr('for', inputId + '-selectized');\r\n }\r\n\r\n if (self.settings.copyClassesToDropdown) {\r\n $dropdown.addClass(classes);\r\n }\r\n\r\n $wrapper.css({\r\n width: $input[0].style.width\r\n });\r\n\r\n if (self.plugins.names.length) {\r\n classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\r\n $wrapper.addClass(classes_plugins);\r\n $dropdown.addClass(classes_plugins);\r\n }\r\n\r\n if ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) {\r\n $input.attr('multiple', 'multiple');\r\n }\r\n\r\n if (self.settings.placeholder) {\r\n $control_input.attr('placeholder', settings.placeholder);\r\n }\r\n\r\n // if splitOn was not passed in, construct it from the delimiter to allow pasting universally\r\n if (!self.settings.splitOn && self.settings.delimiter) {\r\n var delimiterEscaped = self.settings.delimiter.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n self.settings.splitOn = new RegExp('\\\\s*' + delimiterEscaped + '+\\\\s*');\r\n }\r\n\r\n if ($input.attr('autocorrect')) {\r\n $control_input.attr('autocorrect', $input.attr('autocorrect'));\r\n }\r\n\r\n if ($input.attr('autocapitalize')) {\r\n $control_input.attr('autocapitalize', $input.attr('autocapitalize'));\r\n }\r\n\r\n self.$wrapper = $wrapper;\r\n self.$control = $control;\r\n self.$control_input = $control_input;\r\n self.$dropdown = $dropdown;\r\n self.$dropdown_content = $dropdown_content;\r\n\r\n $dropdown.on('mouseenter', '[data-selectable]', function () { return self.onOptionHover.apply(self, arguments); });\r\n $dropdown.on('mousedown click', '[data-selectable]', function () { return self.onOptionSelect.apply(self, arguments); });\r\n watchChildEvent($control, 'mousedown', '*:not(input)', function () { return self.onItemSelect.apply(self, arguments); });\r\n autoGrow($control_input);\r\n\r\n $control.on({\r\n mousedown: function () { return self.onMouseDown.apply(self, arguments); },\r\n click: function () { return self.onClick.apply(self, arguments); }\r\n });\r\n\r\n $control_input.on({\r\n mousedown: function (e) { e.stopPropagation(); },\r\n keydown: function () { return self.onKeyDown.apply(self, arguments); },\r\n keyup: function () { return self.onKeyUp.apply(self, arguments); },\r\n keypress: function () { return self.onKeyPress.apply(self, arguments); },\r\n resize: function () { self.positionDropdown.apply(self, []); },\r\n blur: function () { return self.onBlur.apply(self, arguments); },\r\n focus: function () { self.ignoreBlur = false; return self.onFocus.apply(self, arguments); },\r\n paste: function () { return self.onPaste.apply(self, arguments); }\r\n });\r\n\r\n $document.on('keydown' + eventNS, function (e) {\r\n self.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey'];\r\n self.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey'];\r\n self.isShiftDown = e.shiftKey;\r\n });\r\n\r\n $document.on('keyup' + eventNS, function (e) {\r\n if (e.keyCode === KEY_CTRL) self.isCtrlDown = false;\r\n if (e.keyCode === KEY_SHIFT) self.isShiftDown = false;\r\n if (e.keyCode === KEY_CMD) self.isCmdDown = false;\r\n });\r\n\r\n $document.on('mousedown' + eventNS, function (e) {\r\n if (self.isFocused) {\r\n // prevent events on the dropdown scrollbar from causing the control to blur\r\n if (e.target === self.$dropdown[0] || e.target.parentNode === self.$dropdown[0]) {\r\n return false;\r\n }\r\n // blur on click outside\r\n if (!self.$control.has(e.target).length && e.target !== self.$control[0]) {\r\n self.blur(e.target);\r\n }\r\n }\r\n });\r\n\r\n $window.on(['scroll' + eventNS, 'resize' + eventNS].join(' '), function () {\r\n if (self.isOpen) {\r\n self.positionDropdown.apply(self, arguments);\r\n }\r\n });\r\n $window.on('mousemove' + eventNS, function () {\r\n self.ignoreHover = false;\r\n });\r\n\r\n // store original children and tab index so that they can be\r\n // restored when the destroy() method is called.\r\n this.revertSettings = {\r\n $children: $input.children().detach(),\r\n tabindex: $input.attr('tabindex')\r\n };\r\n\r\n $input.attr('tabindex', -1).hide().after(self.$wrapper);\r\n\r\n if ($.isArray(settings.items)) {\r\n self.setValue(settings.items);\r\n delete settings.items;\r\n }\r\n\r\n // feature detect for the validation API\r\n if (SUPPORTS_VALIDITY_API) {\r\n $input.on('invalid' + eventNS, function (e) {\r\n e.preventDefault();\r\n self.isInvalid = true;\r\n self.refreshState();\r\n });\r\n }\r\n\r\n self.updateOriginalInput();\r\n self.refreshItems();\r\n self.refreshState();\r\n self.updatePlaceholder();\r\n self.isSetup = true;\r\n\r\n if ($input.is(':disabled')) {\r\n self.disable();\r\n }\r\n\r\n self.on('change', this.onChange);\r\n\r\n $input.data('selectize', self);\r\n $input.addClass('selectized');\r\n self.trigger('initialize');\r\n\r\n // preload options\r\n if (settings.preload === true) {\r\n self.onSearchChange('');\r\n }\r\n\r\n },\r\n\r\n /**\r\n * Sets up default rendering functions.\r\n */\r\n setupTemplates: function () {\r\n var self = this;\r\n var field_label = self.settings.labelField;\r\n var field_optgroup = self.settings.optgroupLabelField;\r\n\r\n var templates = {\r\n 'optgroup': function (data) {\r\n return '
' + data.html + '
';\r\n },\r\n 'optgroup_header': function (data, escape) {\r\n return '
' + escape(data[field_optgroup]) + '
';\r\n },\r\n 'option': function (data, escape) {\r\n return '
' + escape(data[field_label]) + '
';\r\n },\r\n 'item': function (data, escape) {\r\n return '
' + escape(data[field_label]) + '
';\r\n },\r\n 'option_create': function (data, escape) {\r\n return '
Add ' + escape(data.input) + '
';\r\n }\r\n };\r\n\r\n self.settings.render = $.extend({}, templates, self.settings.render);\r\n },\r\n\r\n /**\r\n * Maps fired events to callbacks provided\r\n * in the settings used when creating the control.\r\n */\r\n setupCallbacks: function () {\r\n var key, fn, callbacks = {\r\n 'initialize': 'onInitialize',\r\n 'change': 'onChange',\r\n 'item_add': 'onItemAdd',\r\n 'item_remove': 'onItemRemove',\r\n 'clear': 'onClear',\r\n 'option_add': 'onOptionAdd',\r\n 'option_remove': 'onOptionRemove',\r\n 'option_clear': 'onOptionClear',\r\n 'optgroup_add': 'onOptionGroupAdd',\r\n 'optgroup_remove': 'onOptionGroupRemove',\r\n 'optgroup_clear': 'onOptionGroupClear',\r\n 'dropdown_open': 'onDropdownOpen',\r\n 'dropdown_close': 'onDropdownClose',\r\n 'type': 'onType',\r\n 'load': 'onLoad',\r\n 'focus': 'onFocus',\r\n 'blur': 'onBlur'\r\n };\r\n\r\n for (key in callbacks) {\r\n if (callbacks.hasOwnProperty(key)) {\r\n fn = this.settings[callbacks[key]];\r\n if (fn) this.on(key, fn);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the main control element\r\n * has a click event.\r\n *\r\n * @param {object} e\r\n * @return {boolean}\r\n */\r\n onClick: function (e) {\r\n var self = this;\r\n\r\n // necessary for mobile webkit devices (manual focus triggering\r\n // is ignored unless invoked within a click event)\r\n if (!self.isFocused) {\r\n self.focus();\r\n e.preventDefault();\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the main control element\r\n * has a mouse down event.\r\n *\r\n * @param {object} e\r\n * @return {boolean}\r\n */\r\n onMouseDown: function (e) {\r\n var self = this;\r\n var defaultPrevented = e.isDefaultPrevented();\r\n var $target = $(e.target);\r\n\r\n if (self.isFocused) {\r\n // retain focus by preventing native handling. if the\r\n // event target is the input it should not be modified.\r\n // otherwise, text selection within the input won't work.\r\n if (e.target !== self.$control_input[0]) {\r\n if (self.settings.mode === 'single') {\r\n // toggle dropdown\r\n self.isOpen ? self.close() : self.open();\r\n } else if (!defaultPrevented) {\r\n self.setActiveItem(null);\r\n }\r\n return false;\r\n }\r\n } else {\r\n // give control focus\r\n if (!defaultPrevented) {\r\n window.setTimeout(function () {\r\n self.focus();\r\n }, 0);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the value of the control has been changed.\r\n * This should propagate the event to the original DOM\r\n * input / select element.\r\n */\r\n onChange: function () {\r\n this.$input.trigger('change');\r\n },\r\n\r\n /**\r\n * Triggered on paste.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onPaste: function (e) {\r\n var self = this;\r\n\r\n if (self.isFull() || self.isInputHidden || self.isLocked) {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n // If a regex or string is included, this will split the pasted\r\n // input and create Items for each separate value\r\n if (self.settings.splitOn) {\r\n\r\n // Wait for pasted text to be recognized in value\r\n setTimeout(function () {\r\n var pastedText = self.$control_input.val();\r\n if (!pastedText.match(self.settings.splitOn)) { return }\r\n\r\n var splitInput = $.trim(pastedText).split(self.settings.splitOn);\r\n for (var i = 0, n = splitInput.length; i < n; i++) {\r\n self.createItem(splitInput[i]);\r\n }\r\n }, 0);\r\n }\r\n },\r\n\r\n /**\r\n * Triggered on keypress.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onKeyPress: function (e) {\r\n if (this.isLocked) return e && e.preventDefault();\r\n var character = String.fromCharCode(e.keyCode || e.which);\r\n if (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) {\r\n this.createItem();\r\n e.preventDefault();\r\n return false;\r\n }\r\n },\r\n\r\n /**\r\n * Triggered on keydown.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onKeyDown: function (e) {\r\n var isInput = e.target === this.$control_input[0];\r\n var self = this;\r\n\r\n if (self.isLocked) {\r\n if (e.keyCode !== KEY_TAB) {\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n\r\n switch (e.keyCode) {\r\n case KEY_A:\r\n if (self.isCmdDown) {\r\n self.selectAll();\r\n return;\r\n }\r\n break;\r\n case KEY_ESC:\r\n if (self.isOpen) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n self.close();\r\n }\r\n return;\r\n case KEY_N:\r\n if (!e.ctrlKey || e.altKey) break;\r\n case KEY_DOWN:\r\n if (!self.isOpen && self.hasOptions) {\r\n self.open();\r\n } else if (self.$activeOption) {\r\n self.ignoreHover = true;\r\n var $next = self.getAdjacentOption(self.$activeOption, 1);\r\n if ($next.length) self.setActiveOption($next, true, true);\r\n }\r\n e.preventDefault();\r\n return;\r\n case KEY_P:\r\n if (!e.ctrlKey || e.altKey) break;\r\n case KEY_UP:\r\n if (self.$activeOption) {\r\n self.ignoreHover = true;\r\n var $prev = self.getAdjacentOption(self.$activeOption, -1);\r\n if ($prev.length) self.setActiveOption($prev, true, true);\r\n }\r\n e.preventDefault();\r\n return;\r\n case KEY_RETURN:\r\n if (self.isOpen && self.$activeOption) {\r\n self.onOptionSelect({ currentTarget: self.$activeOption });\r\n e.preventDefault();\r\n }\r\n return;\r\n case KEY_LEFT:\r\n self.advanceSelection(-1, e);\r\n return;\r\n case KEY_RIGHT:\r\n self.advanceSelection(1, e);\r\n return;\r\n case KEY_TAB:\r\n if (self.settings.selectOnTab && self.isOpen && self.$activeOption) {\r\n self.onOptionSelect({ currentTarget: self.$activeOption });\r\n\r\n // Default behaviour is to jump to the next field, we only want this\r\n // if the current field doesn't accept any more entries\r\n if (!self.isFull()) {\r\n e.preventDefault();\r\n }\r\n }\r\n if (self.settings.create && self.createItem()) {\r\n e.preventDefault();\r\n }\r\n return;\r\n case KEY_BACKSPACE:\r\n case KEY_DELETE:\r\n self.deleteSelection(e);\r\n return;\r\n }\r\n\r\n if ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n },\r\n\r\n /**\r\n * Triggered on keyup.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onKeyUp: function (e) {\r\n var self = this;\r\n\r\n if (self.isLocked) return e && e.preventDefault();\r\n var value = self.$control_input.val() || '';\r\n if (self.lastValue !== value) {\r\n self.lastValue = value;\r\n self.onSearchChange(value);\r\n self.refreshOptions();\r\n self.trigger('type', value);\r\n }\r\n },\r\n\r\n /**\r\n * Invokes the user-provide option provider / loader.\r\n *\r\n * Note: this function is debounced in the Selectize\r\n * constructor (by `settings.loadThrottle` milliseconds)\r\n *\r\n * @param {string} value\r\n */\r\n onSearchChange: function (value) {\r\n var self = this;\r\n var fn = self.settings.load;\r\n if (!fn) return;\r\n if (self.loadedSearches.hasOwnProperty(value)) return;\r\n self.loadedSearches[value] = true;\r\n self.load(function (callback) {\r\n fn.apply(self, [value, callback]);\r\n });\r\n },\r\n\r\n /**\r\n * Triggered on focus.\r\n *\r\n * @param {object} e (optional)\r\n * @returns {boolean}\r\n */\r\n onFocus: function (e) {\r\n var self = this;\r\n var wasFocused = self.isFocused;\r\n\r\n if (self.isDisabled) {\r\n self.blur();\r\n e && e.preventDefault();\r\n return false;\r\n }\r\n\r\n if (self.ignoreFocus) return;\r\n self.isFocused = true;\r\n if (self.settings.preload === 'focus') self.onSearchChange('');\r\n\r\n if (!wasFocused) self.trigger('focus');\r\n\r\n if (!self.$activeItems.length) {\r\n self.showInput();\r\n self.setActiveItem(null);\r\n self.refreshOptions(!!self.settings.openOnFocus);\r\n }\r\n\r\n self.refreshState();\r\n },\r\n\r\n /**\r\n * Triggered on blur.\r\n *\r\n * @param {object} e\r\n * @param {Element} dest\r\n */\r\n onBlur: function (e, dest) {\r\n var self = this;\r\n if (!self.isFocused) return;\r\n self.isFocused = false;\r\n\r\n if (self.ignoreFocus) {\r\n return;\r\n } else if (!self.ignoreBlur && document.activeElement === self.$dropdown_content[0]) {\r\n // necessary to prevent IE closing the dropdown when the scrollbar is clicked\r\n self.ignoreBlur = true;\r\n self.onFocus(e);\r\n return;\r\n }\r\n\r\n var deactivate = function () {\r\n self.close();\r\n self.setTextboxValue('');\r\n self.setActiveItem(null);\r\n self.setActiveOption(null);\r\n self.setCaret(self.items.length);\r\n self.refreshState();\r\n\r\n // IE11 bug: element still marked as active\r\n dest && dest.focus && dest.focus();\r\n\r\n self.ignoreFocus = false;\r\n self.trigger('blur');\r\n };\r\n\r\n self.ignoreFocus = true;\r\n if (self.settings.create && self.settings.createOnBlur) {\r\n self.createItem(null, false, deactivate);\r\n } else {\r\n deactivate();\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the user rolls over\r\n * an option in the autocomplete dropdown menu.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onOptionHover: function (e) {\r\n if (this.ignoreHover) return;\r\n this.setActiveOption(e.currentTarget, false);\r\n },\r\n\r\n /**\r\n * Triggered when the user clicks on an option\r\n * in the autocomplete dropdown menu.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onOptionSelect: function (e) {\r\n var value, $target, $option, self = this;\r\n\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n $target = $(e.currentTarget);\r\n if ($target.hasClass('create')) {\r\n self.createItem(null, function () {\r\n if (self.settings.closeAfterSelect) {\r\n self.close();\r\n }\r\n });\r\n } else {\r\n value = $target.attr('data-value');\r\n if (typeof value !== 'undefined') {\r\n self.lastQuery = null;\r\n self.setTextboxValue('');\r\n self.addItem(value);\r\n if (self.settings.closeAfterSelect) {\r\n self.close();\r\n } else if (!self.settings.hideSelected && e.type && /mouse/.test(e.type)) {\r\n self.setActiveOption(self.getOption(value));\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the user clicks on an item\r\n * that has been selected.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onItemSelect: function (e) {\r\n var self = this;\r\n\r\n if (self.isLocked) return;\r\n if (self.settings.mode === 'multi') {\r\n e.preventDefault();\r\n self.setActiveItem(e.currentTarget, e);\r\n }\r\n },\r\n\r\n /**\r\n * Invokes the provided method that provides\r\n * results to a callback---which are then added\r\n * as options to the control.\r\n *\r\n * @param {function} fn\r\n */\r\n load: function (fn) {\r\n var self = this;\r\n var $wrapper = self.$wrapper.addClass(self.settings.loadingClass);\r\n\r\n self.loading++;\r\n fn.apply(self, [function (results) {\r\n self.loading = Math.max(self.loading - 1, 0);\r\n if (results && results.length) {\r\n self.addOption(results);\r\n self.refreshOptions(self.isFocused && !self.isInputHidden);\r\n }\r\n if (!self.loading) {\r\n $wrapper.removeClass(self.settings.loadingClass);\r\n }\r\n self.trigger('load', results);\r\n }]);\r\n },\r\n\r\n /**\r\n * Sets the input field of the control to the specified value.\r\n *\r\n * @param {string} value\r\n */\r\n setTextboxValue: function (value) {\r\n var $input = this.$control_input;\r\n var changed = $input.val() !== value;\r\n if (changed) {\r\n $input.val(value).triggerHandler('update');\r\n this.lastValue = value;\r\n }\r\n },\r\n\r\n /**\r\n * Returns the value of the control. If multiple items\r\n * can be selected (e.g. or \r\n * element to reflect the current state.\r\n */\r\n updateOriginalInput: function (opts) {\r\n var i, n, options, label, self = this;\r\n opts = opts || {};\r\n\r\n if (self.tagType === TAG_SELECT) {\r\n options = [];\r\n for (i = 0, n = self.items.length; i < n; i++) {\r\n label = self.options[self.items[i]][self.settings.labelField] || '';\r\n options.push('');\r\n }\r\n if (!options.length && !this.$input.attr('multiple')) {\r\n options.push('');\r\n }\r\n self.$input.html(options.join(''));\r\n } else {\r\n self.$input.val(self.getValue());\r\n self.$input.attr('value', self.$input.val());\r\n }\r\n\r\n if (self.isSetup) {\r\n if (!opts.silent) {\r\n self.trigger('change', self.$input.val());\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Shows/hide the input placeholder depending\r\n * on if there items in the list already.\r\n */\r\n updatePlaceholder: function () {\r\n if (!this.settings.placeholder) return;\r\n var $input = this.$control_input;\r\n\r\n if (this.items.length) {\r\n $input.removeAttr('placeholder');\r\n } else {\r\n $input.attr('placeholder', this.settings.placeholder);\r\n }\r\n $input.triggerHandler('update', { force: true });\r\n },\r\n\r\n /**\r\n * Shows the autocomplete dropdown containing\r\n * the available options.\r\n */\r\n open: function () {\r\n var self = this;\r\n\r\n if (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\r\n self.focus();\r\n self.isOpen = true;\r\n self.refreshState();\r\n self.$dropdown.css({ visibility: 'hidden', display: 'block' });\r\n self.positionDropdown();\r\n self.$dropdown.css({ visibility: 'visible' });\r\n self.trigger('dropdown_open', self.$dropdown);\r\n },\r\n\r\n /**\r\n * Closes the autocomplete dropdown menu.\r\n */\r\n close: function () {\r\n var self = this;\r\n var trigger = self.isOpen;\r\n\r\n if (self.settings.mode === 'single' && self.items.length) {\r\n self.hideInput();\r\n self.$control_input.blur(); // close keyboard on iOS\r\n }\r\n\r\n self.isOpen = false;\r\n self.$dropdown.hide();\r\n self.setActiveOption(null);\r\n self.refreshState();\r\n\r\n if (trigger) self.trigger('dropdown_close', self.$dropdown);\r\n },\r\n\r\n /**\r\n * Calculates and applies the appropriate\r\n * position of the dropdown.\r\n */\r\n positionDropdown: function () {\r\n var $control = this.$control;\r\n var offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\r\n offset.top += $control.outerHeight(true);\r\n\r\n this.$dropdown.css({\r\n width: $control.outerWidth(),\r\n top: offset.top,\r\n left: offset.left\r\n });\r\n },\r\n\r\n /**\r\n * Resets / clears all selected items\r\n * from the control.\r\n *\r\n * @param {boolean} silent\r\n */\r\n clear: function (silent) {\r\n var self = this;\r\n\r\n if (!self.items.length) return;\r\n self.$control.children(':not(input)').remove();\r\n self.items = [];\r\n self.lastQuery = null;\r\n self.setCaret(0);\r\n self.setActiveItem(null);\r\n self.updatePlaceholder();\r\n self.updateOriginalInput({ silent: silent });\r\n self.refreshState();\r\n self.showInput();\r\n self.trigger('clear');\r\n },\r\n\r\n /**\r\n * A helper method for inserting an element\r\n * at the current caret position.\r\n *\r\n * @param {object} $el\r\n */\r\n insertAtCaret: function ($el) {\r\n var caret = Math.min(this.caretPos, this.items.length);\r\n if (caret === 0) {\r\n this.$control.prepend($el);\r\n } else {\r\n $(this.$control[0].childNodes[caret]).before($el);\r\n }\r\n this.setCaret(caret + 1);\r\n },\r\n\r\n /**\r\n * Removes the current selected item(s).\r\n *\r\n * @param {object} e (optional)\r\n * @returns {boolean}\r\n */\r\n deleteSelection: function (e) {\r\n var i, n, direction, selection, values, caret, option_select, $option_select, $tail;\r\n var self = this;\r\n\r\n direction = (e && e.keyCode === KEY_BACKSPACE) ? -1 : 1;\r\n selection = getSelection(self.$control_input[0]);\r\n\r\n if (self.$activeOption && !self.settings.hideSelected) {\r\n option_select = self.getAdjacentOption(self.$activeOption, -1).attr('data-value');\r\n }\r\n\r\n // determine items that will be removed\r\n values = [];\r\n\r\n if (self.$activeItems.length) {\r\n $tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first'));\r\n caret = self.$control.children(':not(input)').index($tail);\r\n if (direction > 0) { caret++; }\r\n\r\n for (i = 0, n = self.$activeItems.length; i < n; i++) {\r\n values.push($(self.$activeItems[i]).attr('data-value'));\r\n }\r\n if (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n } else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\r\n if (direction < 0 && selection.start === 0 && selection.length === 0) {\r\n values.push(self.items[self.caretPos - 1]);\r\n } else if (direction > 0 && selection.start === self.$control_input.val().length) {\r\n values.push(self.items[self.caretPos]);\r\n }\r\n }\r\n\r\n // allow the callback to abort\r\n if (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false)) {\r\n return false;\r\n }\r\n\r\n // perform removal\r\n if (typeof caret !== 'undefined') {\r\n self.setCaret(caret);\r\n }\r\n while (values.length) {\r\n self.removeItem(values.pop());\r\n }\r\n\r\n self.showInput();\r\n self.positionDropdown();\r\n self.refreshOptions(true);\r\n\r\n // select previous option\r\n if (option_select) {\r\n $option_select = self.getOption(option_select);\r\n if ($option_select.length) {\r\n self.setActiveOption($option_select);\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n /**\r\n * Selects the previous / next item (depending\r\n * on the `direction` argument).\r\n *\r\n * > 0 - right\r\n * < 0 - left\r\n *\r\n * @param {int} direction\r\n * @param {object} e (optional)\r\n */\r\n advanceSelection: function (direction, e) {\r\n var tail, selection, idx, valueLength, cursorAtEdge, $tail;\r\n var self = this;\r\n\r\n if (direction === 0) return;\r\n if (self.rtl) direction *= -1;\r\n\r\n tail = direction > 0 ? 'last' : 'first';\r\n selection = getSelection(self.$control_input[0]);\r\n\r\n if (self.isFocused && !self.isInputHidden) {\r\n valueLength = self.$control_input.val().length;\r\n cursorAtEdge = direction < 0\r\n ? selection.start === 0 && selection.length === 0\r\n : selection.start === valueLength;\r\n\r\n if (cursorAtEdge && !valueLength) {\r\n self.advanceCaret(direction, e);\r\n }\r\n } else {\r\n $tail = self.$control.children('.active:' + tail);\r\n if ($tail.length) {\r\n idx = self.$control.children(':not(input)').index($tail);\r\n self.setActiveItem(null);\r\n self.setCaret(direction > 0 ? idx + 1 : idx);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Moves the caret left / right.\r\n *\r\n * @param {int} direction\r\n * @param {object} e (optional)\r\n */\r\n advanceCaret: function (direction, e) {\r\n var self = this, fn, $adj;\r\n\r\n if (direction === 0) return;\r\n\r\n fn = direction > 0 ? 'next' : 'prev';\r\n if (self.isShiftDown) {\r\n $adj = self.$control_input[fn]();\r\n if ($adj.length) {\r\n self.hideInput();\r\n self.setActiveItem($adj);\r\n e && e.preventDefault();\r\n }\r\n } else {\r\n self.setCaret(self.caretPos + direction);\r\n }\r\n },\r\n\r\n /**\r\n * Moves the caret to the specified index.\r\n *\r\n * @param {int} i\r\n */\r\n setCaret: function (i) {\r\n var self = this;\r\n\r\n if (self.settings.mode === 'single') {\r\n i = self.items.length;\r\n } else {\r\n i = Math.max(0, Math.min(self.items.length, i));\r\n }\r\n\r\n if (!self.isPending) {\r\n // the input must be moved by leaving it in place and moving the\r\n // siblings, due to the fact that focus cannot be restored once lost\r\n // on mobile webkit devices\r\n var j, n, fn, $children, $child;\r\n $children = self.$control.children(':not(input)');\r\n for (j = 0, n = $children.length; j < n; j++) {\r\n $child = $($children[j]).detach();\r\n if (j < i) {\r\n self.$control_input.before($child);\r\n } else {\r\n self.$control.append($child);\r\n }\r\n }\r\n }\r\n\r\n self.caretPos = i;\r\n },\r\n\r\n /**\r\n * Disables user input on the control. Used while\r\n * items are being asynchronously created.\r\n */\r\n lock: function () {\r\n this.close();\r\n this.isLocked = true;\r\n this.refreshState();\r\n },\r\n\r\n /**\r\n * Re-enables user input on the control.\r\n */\r\n unlock: function () {\r\n this.isLocked = false;\r\n this.refreshState();\r\n },\r\n\r\n /**\r\n * Disables user input on the control completely.\r\n * While disabled, it cannot receive focus.\r\n */\r\n disable: function () {\r\n var self = this;\r\n self.$input.prop('disabled', true);\r\n self.$control_input.prop('disabled', true).prop('tabindex', -1);\r\n self.isDisabled = true;\r\n self.lock();\r\n },\r\n\r\n /**\r\n * Enables the control so that it can respond\r\n * to focus and user input.\r\n */\r\n enable: function () {\r\n var self = this;\r\n self.$input.prop('disabled', false);\r\n self.$control_input.prop('disabled', false).prop('tabindex', self.tabIndex);\r\n self.isDisabled = false;\r\n self.unlock();\r\n },\r\n\r\n /**\r\n * Completely destroys the control and\r\n * unbinds all event listeners so that it can\r\n * be garbage collected.\r\n */\r\n destroy: function () {\r\n var self = this;\r\n var eventNS = self.eventNS;\r\n var revertSettings = self.revertSettings;\r\n\r\n self.trigger('destroy');\r\n self.off();\r\n self.$wrapper.remove();\r\n self.$dropdown.remove();\r\n\r\n self.$input\r\n .html('')\r\n .append(revertSettings.$children)\r\n .removeAttr('tabindex')\r\n .removeClass('selectized')\r\n .attr({ tabindex: revertSettings.tabindex })\r\n .show();\r\n\r\n self.$control_input.removeData('grow');\r\n self.$input.removeData('selectize');\r\n\r\n $(window).off(eventNS);\r\n $(document).off(eventNS);\r\n $(document.body).off(eventNS);\r\n\r\n delete self.$input[0].selectize;\r\n },\r\n\r\n /**\r\n * A helper method for rendering \"item\" and\r\n * \"option\" templates, given the data.\r\n *\r\n * @param {string} templateName\r\n * @param {object} data\r\n * @returns {string}\r\n */\r\n render: function (templateName, data) {\r\n var value, id, label;\r\n var html = '';\r\n var cache = false;\r\n var self = this;\r\n var regex_tag = /^[\\t \\r\\n]*<([a-z][a-z0-9\\-_]*(?:\\:[a-z][a-z0-9\\-_]*)?)/i;\r\n\r\n if (templateName === 'option' || templateName === 'item') {\r\n value = hash_key(data[self.settings.valueField]);\r\n cache = !!value;\r\n }\r\n\r\n // pull markup from cache if it exists\r\n if (cache) {\r\n if (!isset(self.renderCache[templateName])) {\r\n self.renderCache[templateName] = {};\r\n }\r\n if (self.renderCache[templateName].hasOwnProperty(value)) {\r\n return self.renderCache[templateName][value];\r\n }\r\n }\r\n\r\n // render markup\r\n html = $(self.settings.render[templateName].apply(this, [data, escape_html]));\r\n\r\n // add mandatory attributes\r\n if (templateName === 'option' || templateName === 'option_create') {\r\n html.attr('data-selectable', '');\r\n }\r\n else if (templateName === 'optgroup') {\r\n id = data[self.settings.optgroupValueField] || '';\r\n html.attr('data-group', id);\r\n }\r\n if (templateName === 'option' || templateName === 'item') {\r\n html.attr('data-value', value || '');\r\n }\r\n\r\n // update cache\r\n if (cache) {\r\n self.renderCache[templateName][value] = html[0];\r\n }\r\n\r\n return html[0];\r\n },\r\n\r\n /**\r\n * Clears the render cache for a template. If\r\n * no template is given, clears all render\r\n * caches.\r\n *\r\n * @param {string} templateName\r\n */\r\n clearCache: function (templateName) {\r\n var self = this;\r\n if (typeof templateName === 'undefined') {\r\n self.renderCache = {};\r\n } else {\r\n delete self.renderCache[templateName];\r\n }\r\n },\r\n\r\n /**\r\n * Determines whether or not to display the\r\n * create item prompt, given a user input.\r\n *\r\n * @param {string} input\r\n * @return {boolean}\r\n */\r\n canCreate: function (input) {\r\n var self = this;\r\n if (!self.settings.create) return false;\r\n var filter = self.settings.createFilter;\r\n return input.length\r\n && (typeof filter !== 'function' || filter.apply(self, [input]))\r\n && (typeof filter !== 'string' || new RegExp(filter).test(input))\r\n && (!(filter instanceof RegExp) || filter.test(input));\r\n }\r\n\r\n });\r\n\r\n\r\n Selectize.count = 0;\r\n Selectize.defaults = {\r\n options: [],\r\n optgroups: [],\r\n\r\n plugins: [],\r\n delimiter: ',',\r\n splitOn: null, // regexp or string for splitting up values from a paste command\r\n persist: true,\r\n diacritics: true,\r\n create: false,\r\n createOnBlur: false,\r\n createFilter: null,\r\n highlight: true,\r\n openOnFocus: true,\r\n maxOptions: 1000,\r\n maxItems: null,\r\n hideSelected: null,\r\n addPrecedence: false,\r\n selectOnTab: false,\r\n preload: false,\r\n allowEmptyOption: false,\r\n closeAfterSelect: false,\r\n\r\n scrollDuration: 60,\r\n loadThrottle: 300,\r\n loadingClass: 'loading',\r\n\r\n dataAttr: 'data-data',\r\n optgroupField: 'optgroup',\r\n valueField: 'value',\r\n labelField: 'text',\r\n optgroupLabelField: 'label',\r\n optgroupValueField: 'value',\r\n lockOptgroupOrder: false,\r\n\r\n sortField: '$order',\r\n searchField: ['text'],\r\n searchConjunction: 'and',\r\n\r\n mode: null,\r\n wrapperClass: 'selectize-control',\r\n inputClass: 'selectize-input',\r\n dropdownClass: 'selectize-dropdown',\r\n dropdownContentClass: 'selectize-dropdown-content',\r\n\r\n dropdownParent: null,\r\n\r\n copyClassesToDropdown: true,\r\n\r\n /*\r\n load : null, // function(query, callback) { ... }\r\n score : null, // function(search) { ... }\r\n onInitialize : null, // function() { ... }\r\n onChange : null, // function(value) { ... }\r\n onItemAdd : null, // function(value, $item) { ... }\r\n onItemRemove : null, // function(value) { ... }\r\n onClear : null, // function() { ... }\r\n onOptionAdd : null, // function(value, data) { ... }\r\n onOptionRemove : null, // function(value) { ... }\r\n onOptionClear : null, // function() { ... }\r\n onOptionGroupAdd : null, // function(id, data) { ... }\r\n onOptionGroupRemove : null, // function(id) { ... }\r\n onOptionGroupClear : null, // function() { ... }\r\n onDropdownOpen : null, // function($dropdown) { ... }\r\n onDropdownClose : null, // function($dropdown) { ... }\r\n onType : null, // function(str) { ... }\r\n onDelete : null, // function(values) { ... }\r\n */\r\n\r\n render: {\r\n /*\r\n item: null,\r\n optgroup: null,\r\n optgroup_header: null,\r\n option: null,\r\n option_create: null\r\n */\r\n }\r\n };\r\n\r\n\r\n $.fn.selectize = function (settings_user) {\r\n var defaults = $.fn.selectize.defaults;\r\n var settings = $.extend({}, defaults, settings_user);\r\n var attr_data = settings.dataAttr;\r\n var field_label = settings.labelField;\r\n var field_value = settings.valueField;\r\n var field_optgroup = settings.optgroupField;\r\n var field_optgroup_label = settings.optgroupLabelField;\r\n var field_optgroup_value = settings.optgroupValueField;\r\n\r\n /**\r\n * Initializes selectize from a element.\r\n *\r\n * @param {object} $input\r\n * @param {object} settings_element\r\n */\r\n var init_textbox = function ($input, settings_element) {\r\n var i, n, values, option;\r\n\r\n var data_raw = $input.attr(attr_data);\r\n\r\n if (!data_raw) {\r\n var value = $.trim($input.val() || '');\r\n if (!settings.allowEmptyOption && !value.length) return;\r\n values = value.split(settings.delimiter);\r\n for (i = 0, n = values.length; i < n; i++) {\r\n option = {};\r\n option[field_label] = values[i];\r\n option[field_value] = values[i];\r\n settings_element.options.push(option);\r\n }\r\n settings_element.items = values;\r\n } else {\r\n settings_element.options = JSON.parse(data_raw);\r\n for (i = 0, n = settings_element.options.length; i < n; i++) {\r\n settings_element.items.push(settings_element.options[i][field_value]);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Initializes selectize from a