{"version":3,"file":"website/application.js","mappings":"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","sources":["webpack://myurls/./app/javascript/app/ sync \\.js.coffee$","webpack://myurls/./app/javascript/controllers/ sync _controller\\.coffee$","webpack://myurls/./app/javascript/vendor/codemirror/display/placeholder.js","webpack://myurls/./app/javascript/vendor/codemirror/edit/closebrackets.js","webpack://myurls/./app/javascript/vendor/codemirror/mode/css.js","webpack://myurls/./app/javascript/vendor/codemirror/selection/active-line.js","webpack://myurls/./node_modules/@braintree/browser-detection/is-android.js","webpack://myurls/./node_modules/@braintree/browser-detection/is-chrome-os.js","webpack://myurls/./node_modules/@braintree/browser-detection/is-chrome.js","webpack://myurls/./node_modules/@braintree/browser-detection/is-edge.js","webpack://myurls/./node_modules/@braintree/browser-detection/is-ie9.js","webpack://myurls/./node_modules/@braintree/browser-detection/is-ios.js","webpack://myurls/./node_modules/@braintree/browser-detection/is-samsung.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/adapters.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/logger.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection_monitor.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/internal.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription_guarantor.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscriptions.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/consumer.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/index.js","webpack://myurls/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack://myurls/./node_modules/animejs/lib/anime.es.js","webpack://myurls/./node_modules/codemirror/lib/codemirror.js","webpack://myurls/","webpack://myurls/./node_modules/cleave.js/dist/cleave-esm.js","webpack://myurls/./node_modules/compressorjs/dist/compressor.js","webpack://myurls/./node_modules/countup.js/dist/countUp.min.js","webpack://myurls/./node_modules/croppie/croppie.js","webpack://myurls/./node_modules/dayjs/dayjs.min.js","webpack://myurls/./node_modules/desandro-matches-selector/matches-selector.js","webpack://myurls/./node_modules/ev-emitter/ev-emitter.js","webpack://myurls/./node_modules/fingerprintjs2/fingerprint2.js","webpack://myurls/./node_modules/fizzy-ui-utils/utils.js","webpack://myurls/./node_modules/flickity/js/add-remove-cell.js","webpack://myurls/./node_modules/flickity/js/animate.js","webpack://myurls/./node_modules/flickity/js/cell.js","webpack://myurls/./node_modules/flickity/js/drag.js","webpack://myurls/./node_modules/flickity/js/flickity.js","webpack://myurls/./node_modules/flickity/js/index.js","webpack://myurls/./node_modules/flickity/js/lazyload.js","webpack://myurls/./node_modules/flickity/js/page-dots.js","webpack://myurls/./node_modules/flickity/js/player.js","webpack://myurls/./node_modules/flickity/js/prev-next-button.js","webpack://myurls/./node_modules/flickity/js/slide.js","webpack://myurls/./node_modules/get-size/get-size.js","webpack://myurls/./node_modules/intl-tel-input/build/js/intlTelInput.js","webpack://myurls/./node_modules/intl-tel-input/index.js","webpack://myurls/./node_modules/jquery-bez/lib/jquery.bez.js","webpack://myurls/./node_modules/mutation-summary/src/mutation-summary.js","webpack://myurls/./node_modules/nouislider/distribute/nouislider.js","webpack://myurls/./node_modules/numeral/numeral.js","webpack://myurls/./node_modules/restricted-input/lib/constants.js","webpack://myurls/./node_modules/restricted-input/lib/device.js","webpack://myurls/./node_modules/restricted-input/lib/formatter/index.js","webpack://myurls/./node_modules/restricted-input/lib/formatter/parse-pattern.js","webpack://myurls/./node_modules/restricted-input/lib/input-selection.js","webpack://myurls/./node_modules/restricted-input/lib/is-backspace.js","webpack://myurls/./node_modules/restricted-input/lib/is-delete.js","webpack://myurls/./node_modules/restricted-input/lib/is-valid-element.js","webpack://myurls/./node_modules/restricted-input/lib/key-cannot-mutate-value.js","webpack://myurls/./node_modules/restricted-input/lib/restricted-input.js","webpack://myurls/./node_modules/restricted-input/lib/strategies/android-chrome.js","webpack://myurls/./node_modules/restricted-input/lib/strategies/base.js","webpack://myurls/./node_modules/restricted-input/lib/strategies/ie9.js","webpack://myurls/./node_modules/restricted-input/lib/strategies/ios.js","webpack://myurls/./node_modules/restricted-input/lib/strategies/kitkat-chromium-based-webview.js","webpack://myurls/./node_modules/restricted-input/lib/strategies/noop.js","webpack://myurls/./node_modules/restricted-input/main.js","webpack://myurls/./node_modules/restricted-input/supports-input-formatting.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/event_listener.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/action.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/binding.js","webpack://myurls/./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack://myurls/./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack://myurls/./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack://myurls/./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack://myurls/./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack://myurls/./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack://myurls/./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/context.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/definition.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/module.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/data_map.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/selectors.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/target_set.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/scope.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/router.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/schema.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/application.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/controller.js","webpack://myurls/./node_modules/@stimulus/core/dist/src/target_properties.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://myurls/./node_modules/@popperjs/core/lib/enums.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://myurls/./node_modules/@popperjs/core/lib/index.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://myurls/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://myurls/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://myurls/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://myurls/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getBorders.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://myurls/./node_modules/@popperjs/core/lib/dom-utils/getDecorations.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/within.js","webpack://myurls/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://myurls/./node_modules/@popperjs/core/lib/popper.js","webpack://myurls/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://myurls/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://myurls/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://myurls/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://myurls/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://myurls/./node_modules/tippy.js/dist/tippy.esm.js","webpack://myurls/./node_modules/unidragger/unidragger.js","webpack://myurls/./node_modules/unipointer/unipointer.js","webpack://myurls/./node_modules/webfontloader/webfontloader.js","webpack://myurls/external var \"jQuery\"","webpack://myurls/./node_modules/element-closest/index.mjs","webpack://myurls/webpack/bootstrap","webpack://myurls/webpack/runtime/amd options","webpack://myurls/webpack/runtime/compat get default export","webpack://myurls/webpack/runtime/define property getters","webpack://myurls/webpack/runtime/global","webpack://myurls/webpack/runtime/hasOwnProperty shorthand","webpack://myurls/webpack/runtime/make namespace object","webpack://myurls/./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack://myurls/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","webpack://myurls/./app/javascript/controllers/index.js","webpack://myurls/./node_modules/@stimulus/webpack-helpers/dist/index.js"],"sourcesContent":["var map = {\n\t\"./app.bugsnag_tracking.js.coffee\": 9751,\n\t\"./app.button_manager.js.coffee\": 8128,\n\t\"./app.channel_subscription_manager.js.coffee\": 3263,\n\t\"./app.conversion_tracking.js.coffee\": 9478,\n\t\"./app.fingerprint.js.coffee\": 8830,\n\t\"./app.form_errors.js.coffee\": 5546,\n\t\"./app.form_manager.js.coffee\": 1370,\n\t\"./app.input_manager.js.coffee\": 8774,\n\t\"./app.listeners.js.coffee\": 1781,\n\t\"./app.modal.js.coffee\": 893,\n\t\"./app.mutations.js.coffee\": 4788,\n\t\"./app.prevent_lost_changes.js.coffee\": 2437,\n\t\"./app.profile_customize.js.coffee\": 4081,\n\t\"./app.profile_edit.js.coffee\": 3778,\n\t\"./app.profile_setup.js.coffee\": 9007,\n\t\"./app.s3_uploader.js.coffee\": 6917,\n\t\"./app.stripe_elements.js.coffee\": 4995,\n\t\"./app.subscriptions.js.coffee\": 4260,\n\t\"./app.unsplash.js.coffee\": 2992\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 8641;","var map = {\n\t\"./profile/all_links_controller.coffee\": 5558,\n\t\"./profile/link_controller.coffee\": 953,\n\t\"./select_controller.coffee\": 9143,\n\t\"./website/analytics_controller.coffee\": 1225,\n\t\"./website/handle_form_controller.coffee\": 4670,\n\t\"./website/nav_controller.coffee\": 9366,\n\t\"./website/service_wheel_controller.coffee\": 5512,\n\t\"./website/signups_controller.coffee\": 4694,\n\t\"./website/sliding_links_controller.coffee\": 8509,\n\t\"./website/theme_showcase_controller.coffee\": 7736,\n\t\"./website/website_controller.coffee\": 5570\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 8773;","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"))\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {Backspace: handleBackspace, Enter: handleEnter};\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\"\n if (!keyMap[key]) keyMap[key] = handler(ch)\n }\n }\n ensureBound(defaults.pairs + \"`\")\n\n function handler(ch) {\n return function(cm) { return handleChar(cm, ch); };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n cm.execCommand(\"goCharLeft\");\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))};\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf,\"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur))\n curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)\n curType = \"skipThree\";\n else\n curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur)\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n cm.execCommand(\"goCharRight\");\n } else if (type == \"skipThree\") {\n for (var i = 0; i < 3; i++)\n cm.execCommand(\"goCharRight\");\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++)\n sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n cm.execCommand(\"goCharLeft\");\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n cm.execCommand(\"goCharRight\");\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))\n return /\\bstring/.test(token.type) && token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/.test(stream.current().toLowerCase())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = \"string-2\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = \"string-2\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backface-visibility\",\n \"background\", \"background-attachment\", \"background-blend-mode\", \"background-clip\",\n \"background-color\", \"background-image\", \"background-origin\", \"background-position\",\n \"background-repeat\", \"background-size\", \"baseline-shift\", \"binding\",\n \"bleed\", \"bookmark-label\", \"bookmark-level\", \"bookmark-state\",\n \"bookmark-target\", \"border\", \"border-bottom\", \"border-bottom-color\",\n \"border-bottom-left-radius\", \"border-bottom-right-radius\",\n \"border-bottom-style\", \"border-bottom-width\", \"border-collapse\",\n \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\",\n \"border-left-style\", \"border-left-width\", \"border-radius\", \"border-right\",\n \"border-right-color\", \"border-right-style\", \"border-right-width\",\n \"border-spacing\", \"border-style\", \"border-top\", \"border-top-color\",\n \"border-top-left-radius\", \"border-top-right-radius\", \"border-top-style\",\n \"border-top-width\", \"border-width\", \"bottom\", \"box-decoration-break\",\n \"box-shadow\", \"box-sizing\", \"break-after\", \"break-before\", \"break-inside\",\n \"caption-side\", \"caret-color\", \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\",\n \"column-fill\", \"column-gap\", \"column-rule\", \"column-rule-color\",\n \"column-rule-style\", \"column-rule-width\", \"column-span\", \"column-width\",\n \"columns\", \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\",\n \"cue-after\", \"cue-before\", \"cursor\", \"direction\", \"display\",\n \"dominant-baseline\", \"drop-initial-after-adjust\",\n \"drop-initial-after-align\", \"drop-initial-before-adjust\",\n \"drop-initial-before-align\", \"drop-initial-size\", \"drop-initial-value\",\n \"elevation\", \"empty-cells\", \"fit\", \"fit-position\", \"flex\", \"flex-basis\",\n \"flex-direction\", \"flex-flow\", \"flex-grow\", \"flex-shrink\", \"flex-wrap\",\n \"float\", \"float-offset\", \"flow-from\", \"flow-into\", \"font\", \"font-feature-settings\",\n \"font-family\", \"font-kerning\", \"font-language-override\", \"font-size\", \"font-size-adjust\",\n \"font-stretch\", \"font-style\", \"font-synthesis\", \"font-variant\",\n \"font-variant-alternates\", \"font-variant-caps\", \"font-variant-east-asian\",\n \"font-variant-ligatures\", \"font-variant-numeric\", \"font-variant-position\",\n \"font-weight\", \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\",\n \"grid-auto-rows\", \"grid-column\", \"grid-column-end\", \"grid-column-gap\",\n \"grid-column-start\", \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\",\n \"grid-row-start\", \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\",\n \"icon\", \"image-orientation\", \"image-rendering\", \"image-resolution\",\n \"inline-box-align\", \"justify-content\", \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\",\n \"line-break\", \"line-height\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\",\n \"marks\", \"marquee-direction\", \"marquee-loop\",\n \"marquee-play-count\", \"marquee-speed\", \"marquee-style\", \"max-height\",\n \"max-width\", \"min-height\", \"min-width\", \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\",\n \"nav-left\", \"nav-right\", \"nav-up\", \"object-fit\", \"object-position\",\n \"opacity\", \"order\", \"orphans\", \"outline\",\n \"outline-color\", \"outline-offset\", \"outline-style\", \"outline-width\",\n \"overflow\", \"overflow-style\", \"overflow-wrap\", \"overflow-x\", \"overflow-y\",\n \"padding\", \"padding-bottom\", \"padding-left\", \"padding-right\", \"padding-top\",\n \"page\", \"page-break-after\", \"page-break-before\", \"page-break-inside\",\n \"page-policy\", \"pause\", \"pause-after\", \"pause-before\", \"perspective\",\n \"perspective-origin\", \"pitch\", \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\", \"position\",\n \"presentation-level\", \"punctuation-trim\", \"quotes\", \"region-break-after\",\n \"region-break-before\", \"region-break-inside\", \"region-fragment\",\n \"rendering-intent\", \"resize\", \"rest\", \"rest-after\", \"rest-before\", \"richness\",\n \"right\", \"rotation\", \"rotation-point\", \"ruby-align\", \"ruby-overhang\",\n \"ruby-position\", \"ruby-span\", \"shape-image-threshold\", \"shape-inside\", \"shape-margin\",\n \"shape-outside\", \"size\", \"speak\", \"speak-as\", \"speak-header\",\n \"speak-numeral\", \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\",\n \"tab-size\", \"table-layout\", \"target\", \"target-name\", \"target-new\",\n \"target-position\", \"text-align\", \"text-align-last\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-style\", \"text-emphasis\", \"text-emphasis-color\",\n \"text-emphasis-position\", \"text-emphasis-style\", \"text-height\",\n \"text-indent\", \"text-justify\", \"text-outline\", \"text-overflow\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\", \"text-underline-position\",\n \"text-wrap\", \"top\", \"transform\", \"transform-origin\", \"transform-style\",\n \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"unicode-bidi\",\n \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\", \"voice-duration\",\n \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\", \"voice-stress\",\n \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\", \"will-change\", \"word-break\",\n \"word-spacing\", \"word-wrap\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\"\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-3d-light-color\", \"scrollbar-track-color\", \"shape-inside\",\n \"searchfield-cancel-button\", \"searchfield-decoration\", \"searchfield-results-button\",\n \"searchfield-results-decoration\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-family\", \"src\", \"unicode-range\", \"font-variant\", \"font-feature-settings\",\n \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"match\", \"matrix\", \"matrix3d\",\n \"media-controls-background\", \"media-current-time-display\",\n \"media-fullscreen-button\", \"media-mute-button\", \"media-play-button\",\n \"media-return-to-realtime-button\", \"media-rewind-button\",\n \"media-seek-back-button\", \"media-seek-forward-button\", \"media-slider\",\n \"media-sliderthumb\", \"media-time-remaining-display\", \"media-volume-slider\",\n \"media-volume-slider-container\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\", \"menulist-text\",\n \"menulist-textfield\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\",\n \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"sub\",\n \"subpixel-antialiased\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n var WRAP_CLASS = \"CodeMirror-activeline\";\n var BACK_CLASS = \"CodeMirror-activeline-background\";\n var GUTT_CLASS = \"CodeMirror-activeline-gutter\";\n\n CodeMirror.defineOption(\"styleActiveLine\", false, function(cm, val, old) {\n var prev = old == CodeMirror.Init ? false : old;\n if (val == prev) return\n if (prev) {\n cm.off(\"beforeSelectionChange\", selectionChange);\n clearActiveLines(cm);\n delete cm.state.activeLines;\n }\n if (val) {\n cm.state.activeLines = [];\n updateActiveLines(cm, cm.listSelections());\n cm.on(\"beforeSelectionChange\", selectionChange);\n }\n });\n\n function clearActiveLines(cm) {\n for (var i = 0; i < cm.state.activeLines.length; i++) {\n cm.removeLineClass(cm.state.activeLines[i], \"wrap\", WRAP_CLASS);\n cm.removeLineClass(cm.state.activeLines[i], \"background\", BACK_CLASS);\n cm.removeLineClass(cm.state.activeLines[i], \"gutter\", GUTT_CLASS);\n }\n }\n\n function sameArray(a, b) {\n if (a.length != b.length) return false;\n for (var i = 0; i < a.length; i++)\n if (a[i] != b[i]) return false;\n return true;\n }\n\n function updateActiveLines(cm, ranges) {\n var active = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var option = cm.getOption(\"styleActiveLine\");\n if (typeof option == \"object\" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty())\n continue\n var line = cm.getLineHandleVisualStart(range.head.line);\n if (active[active.length - 1] != line) active.push(line);\n }\n if (sameArray(cm.state.activeLines, active)) return;\n cm.operation(function() {\n clearActiveLines(cm);\n for (var i = 0; i < active.length; i++) {\n cm.addLineClass(active[i], \"wrap\", WRAP_CLASS);\n cm.addLineClass(active[i], \"background\", BACK_CLASS);\n cm.addLineClass(active[i], \"gutter\", GUTT_CLASS);\n }\n cm.state.activeLines = active;\n });\n }\n\n function selectionChange(cm, sel) {\n updateActiveLines(cm, sel.ranges);\n }\n});\n","'use strict';\n\nmodule.exports = function isAndroid(ua) {\n ua = ua || global.navigator.userAgent;\n\n return /Android/.test(ua);\n};\n","'use strict';\n\nmodule.exports = function isChromeOS(ua) {\n ua = ua || global.navigator.userAgent;\n\n return /CrOS/i.test(ua);\n};\n","'use strict';\n\nvar isEdge = require('./is-edge');\nvar isSamsung = require('./is-samsung');\n\nmodule.exports = function isChrome(ua) {\n ua = ua || navigator.userAgent;\n\n return (ua.indexOf('Chrome') !== -1 || ua.indexOf('CriOS') !== -1) && !isEdge(ua) && !isSamsung(ua);\n};\n","'use strict';\n\nmodule.exports = function isEdge(ua) {\n ua = ua || navigator.userAgent;\n\n return ua.indexOf('Edge/') !== -1;\n};\n","'use strict';\n\nmodule.exports = function isIe9(ua) {\n ua = ua || navigator.userAgent;\n\n return ua.indexOf('MSIE 9') !== -1;\n};\n","'use strict';\n\nmodule.exports = function isIos(ua) {\n ua = ua || global.navigator.userAgent;\n\n return /iPhone|iPod|iPad/i.test(ua);\n};\n","'use strict';\n\nmodule.exports = function isSamsungBrowser(ua) {\n ua = ua || global.navigator.userAgent;\n\n return /SamsungBrowser/i.test(ua);\n};\n","export default {\n logger: typeof console !== \"undefined\" ? console : undefined,\n WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n","import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n// ActionCable.logger.enabled = true\n//\n// Example:\n//\n// import * as ActionCable from '@rails/actioncable'\n//\n// ActionCable.logger.enabled = true\n// ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now())\n adapters.logger.log(\"[ActionCable]\", ...messages)\n }\n },\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this)\n this.connection = connection\n this.reconnectAttempts = 0\n }\n\n start() {\n if (!this.isRunning()) {\n this.startedAt = now()\n delete this.stoppedAt\n this.startPolling()\n addEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n }\n }\n\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now()\n this.stopPolling()\n removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(\"ConnectionMonitor stopped\")\n }\n }\n\n isRunning() {\n return this.startedAt && !this.stoppedAt\n }\n\n recordMessage() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n delete this.disconnectedAt\n logger.log(\"ConnectionMonitor recorded connect\")\n }\n\n recordDisconnect() {\n this.disconnectedAt = now()\n logger.log(\"ConnectionMonitor recorded disconnect\")\n }\n\n // Private\n\n startPolling() {\n this.stopPolling()\n this.poll()\n }\n\n stopPolling() {\n clearTimeout(this.pollTimeout)\n }\n\n poll() {\n this.pollTimeout = setTimeout(() => {\n this.reconnectIfStale()\n this.poll()\n }\n , this.getPollInterval())\n }\n\n getPollInterval() {\n const { staleThreshold, reconnectionBackoffRate } = this.constructor\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n const jitter = jitterMax * Math.random()\n return staleThreshold * 1000 * backoff * (1 + jitter)\n }\n\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n this.reconnectAttempts++\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n } else {\n logger.log(\"ConnectionMonitor reopening\")\n this.connection.reopen()\n }\n }\n }\n\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt\n }\n\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n }\n\n disconnectedRecently() {\n return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n }\n\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout(() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n this.connection.reopen()\n }\n }\n , 200)\n }\n }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n","export default {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"disconnect\": \"disconnect\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"disconnect_reasons\": {\n \"unauthorized\": \"unauthorized\",\n \"invalid_request\": \"invalid_request\",\n \"server_restart\": \"server_restart\",\n \"remote\": \"remote\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\n \"actioncable-v1-json\",\n \"actioncable-unsupported\"\n ]\n}\n","import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this)\n this.consumer = consumer\n this.subscriptions = this.consumer.subscriptions\n this.monitor = new ConnectionMonitor(this)\n this.disconnected = true\n }\n\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data))\n return true\n } else {\n return false\n }\n }\n\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n return false\n } else {\n const socketProtocols = [...protocols, ...this.consumer.subprotocols || []]\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n this.installEventHandlers()\n this.monitor.start()\n return true\n }\n }\n\n close({allowReconnect} = {allowReconnect: true}) {\n if (!allowReconnect) { this.monitor.stop() }\n // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n if (this.isOpen()) {\n return this.webSocket.close()\n }\n }\n\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n if (this.isActive()) {\n try {\n return this.close()\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error)\n }\n finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n setTimeout(this.open, this.constructor.reopenDelay)\n }\n } else {\n return this.open()\n }\n }\n\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol\n }\n }\n\n isOpen() {\n return this.isState(\"open\")\n }\n\n isActive() {\n return this.isState(\"open\", \"connecting\")\n }\n\n triedToReconnect() {\n return this.monitor.reconnectAttempts > 0\n }\n\n // Private\n\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n }\n\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0\n }\n\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase()\n }\n }\n }\n return null\n }\n\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this)\n this.webSocket[`on${eventName}`] = handler\n }\n }\n\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {}\n }\n }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) { return }\n const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n this.monitor.recordMessage()\n switch (type) {\n case message_types.welcome:\n if (this.triedToReconnect()) {\n this.reconnectAttempted = true\n }\n this.monitor.recordConnect()\n return this.subscriptions.reload()\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`)\n return this.close({allowReconnect: reconnect})\n case message_types.ping:\n return null\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n if (this.reconnectAttempted) {\n this.reconnectAttempted = false\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: true})\n } else {\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n }\n case message_types.rejection:\n return this.subscriptions.reject(identifier)\n default:\n return this.subscriptions.notify(identifier, \"received\", message)\n }\n },\n\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n this.disconnected = false\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n return this.close({allowReconnect: false})\n }\n },\n\n close(event) {\n logger.log(\"WebSocket onclose event\")\n if (this.disconnected) { return }\n this.disconnected = true\n this.monitor.recordDisconnect()\n return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n },\n\n error() {\n logger.log(\"WebSocket onerror event\")\n }\n}\n\nexport default Connection\n","// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n// connected() {\n// // Called once the subscription has been successfully completed\n// },\n//\n// disconnected({ willAttemptReconnect: boolean }) {\n// // Called when the client has disconnected with the server.\n// // The object will have an `willAttemptReconnect` property which\n// // says whether the client has the intention of attempting\n// // to reconnect.\n// },\n//\n// appear() {\n// this.perform('appear', {appearing_on: this.appearingOn()})\n// },\n//\n// away() {\n// this.perform('away')\n// },\n//\n// appearingOn() {\n// $('main').data('appearing-on')\n// }\n// })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n// class AppearanceChannel < ApplicationActionCable::Channel\n// def subscribed\n// current_user.appear\n// end\n//\n// def unsubscribed\n// current_user.disappear\n// end\n//\n// def appear(data)\n// current_user.appear on: data['appearing_on']\n// end\n//\n// def away\n// current_user.away\n// end\n// end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key]\n object[key] = value\n }\n }\n return object\n}\n\nexport default class Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer\n this.identifier = JSON.stringify(params)\n extend(this, mixin)\n }\n\n // Perform a channel action with the optional data passed as an attribute\n perform(action, data = {}) {\n data.action = action\n return this.send(data)\n }\n\n send(data) {\n return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n }\n\n unsubscribe() {\n return this.consumer.subscriptions.remove(this)\n }\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions\n this.pendingSubscriptions = []\n }\n\n guarantee(subscription) {\n if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n this.pendingSubscriptions.push(subscription) \n }\n else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n }\n this.startGuaranteeing()\n }\n\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n }\n\n startGuaranteeing() {\n this.stopGuaranteeing()\n this.retrySubscribing()\n }\n \n stopGuaranteeing() {\n clearTimeout(this.retryTimeout)\n }\n\n retrySubscribing() {\n this.retryTimeout = setTimeout(() => {\n if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n this.pendingSubscriptions.map((subscription) => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n this.subscriptions.subscribe(subscription)\n })\n }\n }\n , 500)\n }\n}\n\nexport default SubscriptionGuarantor","import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n constructor(consumer) {\n this.consumer = consumer\n this.guarantor = new SubscriptionGuarantor(this)\n this.subscriptions = []\n }\n\n create(channelName, mixin) {\n const channel = channelName\n const params = typeof channel === \"object\" ? channel : {channel}\n const subscription = new Subscription(this.consumer, params, mixin)\n return this.add(subscription)\n }\n\n // Private\n\n add(subscription) {\n this.subscriptions.push(subscription)\n this.consumer.ensureActiveConnection()\n this.notify(subscription, \"initialized\")\n this.subscribe(subscription)\n return subscription\n }\n\n remove(subscription) {\n this.forget(subscription)\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\")\n }\n return subscription\n }\n\n reject(identifier) {\n return this.findAll(identifier).map((subscription) => {\n this.forget(subscription)\n this.notify(subscription, \"rejected\")\n return subscription\n })\n }\n\n forget(subscription) {\n this.guarantor.forget(subscription)\n this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n return subscription\n }\n\n findAll(identifier) {\n return this.subscriptions.filter((s) => s.identifier === identifier)\n }\n\n reload() {\n return this.subscriptions.map((subscription) =>\n this.subscribe(subscription))\n }\n\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription) =>\n this.notify(subscription, callbackName, ...args))\n }\n\n notify(subscription, callbackName, ...args) {\n let subscriptions\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription)\n } else {\n subscriptions = [subscription]\n }\n\n return subscriptions.map((subscription) =>\n (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n }\n\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription)\n }\n }\n\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`)\n this.findAll(identifier).map((subscription) =>\n this.guarantor.forget(subscription))\n }\n\n sendCommand(subscription, command) {\n const {identifier} = subscription\n return this.consumer.send({command, identifier})\n }\n}\n","import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n// App.cable.disconnect()\n//\n// and to restart the connection:\n//\n// App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n constructor(url) {\n this._url = url\n this.subscriptions = new Subscriptions(this)\n this.connection = new Connection(this)\n this.subprotocols = []\n }\n\n get url() {\n return createWebSocketURL(this._url)\n }\n\n send(data) {\n return this.connection.send(data)\n }\n\n connect() {\n return this.connection.open()\n }\n\n disconnect() {\n return this.connection.close({allowReconnect: false})\n }\n\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open()\n }\n }\n\n addSubProtocol(subprotocol) {\n this.subprotocols = [...this.subprotocols, subprotocol]\n }\n}\n\nexport function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url()\n }\n\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\")\n a.href = url\n // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n a.href = a.href\n a.protocol = a.protocol.replace(\"http\", \"ws\")\n return a.href\n } else {\n return url\n }\n}\n","import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n Connection,\n ConnectionMonitor,\n Consumer,\n INTERNAL,\n Subscription,\n Subscriptions,\n SubscriptionGuarantor,\n adapters,\n createWebSocketURL,\n logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url)\n}\n\nexport function getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n}\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n var context = this;\n\n (function() {\n (function() {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n\n }).call(this);\n }).call(context);\n\n var Rails = context.Rails;\n\n (function() {\n (function() {\n var nonce;\n\n nonce = null;\n\n Rails.loadCSPNonce = function() {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function() {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n\n }).call(this);\n (function() {\n var expando, m;\n\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function(element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function(element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function(element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n\n Rails.isContentEditable = function(element) {\n var isEditable;\n isEditable = false;\n while (true) {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n if (!element) {\n break;\n }\n }\n return isEditable;\n };\n\n Rails.$ = function(selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n\n }).call(this);\n (function() {\n var $, csrfParam, csrfToken;\n\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function(xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function() {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if ((token != null) && (param != null)) {\n return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n return input.value = token;\n });\n }\n };\n\n }).call(this);\n (function() {\n var CustomEvent, fire, matches, preventDefault;\n\n matches = Rails.matches;\n\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function() {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n }\n return result;\n };\n }\n\n fire = Rails.fire = function(obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function(e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function(element, selector, eventType, handler) {\n return element.addEventListener(eventType, function(e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n\n }).call(this);\n (function() {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function(options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function() {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n\n createXHR = function(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n\n processResponse = function(response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n\n Rails.href = function(element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function(url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (error) {\n e = error;\n return true;\n }\n };\n\n }).call(this);\n (function() {\n var matches, toArray;\n\n matches = Rails.matches;\n\n toArray = function(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function(element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function(option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function(param) {\n if (param.name != null) {\n return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function(form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function(el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n\n }).call(this);\n (function() {\n var allowAction, fire, stopEverything;\n\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function(e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function(message, element) {\n return confirm(message);\n };\n\n allowAction = function(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n\n }).call(this);\n (function() {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;\n\n Rails.handleDisabledElement = function(e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function(e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n\n }).call(this);\n (function() {\n var isContentEditable, stopEverything;\n\n stopEverything = Rails.stopEverything;\n\n isContentEditable = Rails.isContentEditable;\n\n Rails.handleMethod = function(e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \" \";\n if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n formContent += \" \";\n }\n formContent += ' ';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n\n }).call(this);\n (function() {\n var ajax, fire, getData, isContentEditable, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n slice = [].slice;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;\n\n isRemote = function(element) {\n var value;\n value = element.getAttribute('data-remote');\n return (value != null) && value !== 'false';\n };\n\n Rails.handleRemote = function(e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: (withCredentials != null) && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function(e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function(e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n\n }).call(this);\n (function() {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function() {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function() {\n $(Rails.formEnableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n return setTimeout((function() {\n return disableElement(e);\n }), 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);\n","/*\n * anime.js v3.2.0\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; }\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (getAttribute(el, prop) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width / viewBox[2],\n h: height / viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n switch (path.property) {\n case 'x': return (p.x - svg.x) * svg.w;\n case 'y': return (p.y - svg.y) * svg.h;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\nvar pausedInstances = [];\nvar raf;\n\nvar engine = (function () {\n function play() { \n raf = requestAnimationFrame(step);\n }\n function step(t) {\n var activeInstancesLength = activeInstances.length;\n if (activeInstancesLength) {\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n } else {\n var instanceIndex = activeInstances.indexOf(activeInstance);\n if (instanceIndex > -1) {\n activeInstances.splice(instanceIndex, 1);\n activeInstancesLength = activeInstances.length;\n }\n }\n i++;\n }\n play();\n } else {\n raf = cancelAnimationFrame(raf);\n }\n }\n return play;\n})();\n\nfunction handleVisibilityChange() {\n if (document.hidden) {\n activeInstances.forEach(function (ins) { return ins.pause(); });\n pausedInstances = activeInstances.slice(0);\n anime.running = activeInstances = [];\n } else {\n pausedInstances.forEach(function (ins) { return ins.play(); });\n }\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n if (!raf) { engine(); }\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargets(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.0';\nanime.speed = 1;\nanime.running = activeInstances;\nanime.remove = removeTargets;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n // Add a span to a line.\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n onBlur(cm);\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(startGen) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = startGen || 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm)\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null));\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history.maxGeneration);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history.maxGeneration);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n delayBlurEvent(cm);\n setTimeout(function () { return display.input.focus(); }, 20);\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200c\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (unit > 0 ? 0 : -1));\n if (isNaN(ch)) { next = null; }\n else { next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (ch >= 0xD800 && ch < 0xDC00 ? 2 : 1))),\n -dir); }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = document.activeElement;\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = document.activeElement == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || document.activeElement != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n if (this.selectionInEditor())\n { this.pollSelection(); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.58.2\";\n\n return CodeMirror;\n\n})));\n",null,"var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar NumeralFormatter = function (numeralDecimalMark,\n numeralIntegerScale,\n numeralDecimalScale,\n numeralThousandsGroupStyle,\n numeralPositiveOnly,\n stripLeadingZeroes,\n prefix,\n signBeforePrefix,\n tailPrefix,\n delimiter) {\n var owner = this;\n\n owner.numeralDecimalMark = numeralDecimalMark || '.';\n owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0;\n owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2;\n owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;\n owner.numeralPositiveOnly = !!numeralPositiveOnly;\n owner.stripLeadingZeroes = stripLeadingZeroes !== false;\n owner.prefix = (prefix || prefix === '') ? prefix : '';\n owner.signBeforePrefix = !!signBeforePrefix;\n owner.tailPrefix = !!tailPrefix;\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n};\n\nNumeralFormatter.groupStyle = {\n thousand: 'thousand',\n lakh: 'lakh',\n wan: 'wan',\n none: 'none' \n};\n\nNumeralFormatter.prototype = {\n getRawValue: function (value) {\n return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');\n },\n\n format: function (value) {\n var owner = this, parts, partSign, partSignAndPrefix, partInteger, partDecimal = '';\n\n // strip alphabet letters\n value = value.replace(/[A-Za-z]/g, '')\n // replace the first decimal mark with reserved placeholder\n .replace(owner.numeralDecimalMark, 'M')\n\n // strip non numeric letters except minus and \"M\"\n // this is to ensure prefix has been stripped\n .replace(/[^\\dM-]/g, '')\n\n // replace the leading minus with reserved placeholder\n .replace(/^\\-/, 'N')\n\n // strip the other minus sign (if present)\n .replace(/\\-/g, '')\n\n // replace the minus sign (if present)\n .replace('N', owner.numeralPositiveOnly ? '' : '-')\n\n // replace decimal mark\n .replace('M', owner.numeralDecimalMark);\n\n // strip any leading zeros\n if (owner.stripLeadingZeroes) {\n value = value.replace(/^(-)?0+(?=\\d)/, '$1');\n }\n\n partSign = value.slice(0, 1) === '-' ? '-' : '';\n if (typeof owner.prefix != 'undefined') {\n if (owner.signBeforePrefix) {\n partSignAndPrefix = partSign + owner.prefix;\n } else {\n partSignAndPrefix = owner.prefix + partSign;\n }\n } else {\n partSignAndPrefix = partSign;\n }\n \n partInteger = value;\n\n if (value.indexOf(owner.numeralDecimalMark) >= 0) {\n parts = value.split(owner.numeralDecimalMark);\n partInteger = parts[0];\n partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale);\n }\n\n if(partSign === '-') {\n partInteger = partInteger.slice(1);\n }\n\n if (owner.numeralIntegerScale > 0) {\n partInteger = partInteger.slice(0, owner.numeralIntegerScale);\n }\n\n switch (owner.numeralThousandsGroupStyle) {\n case NumeralFormatter.groupStyle.lakh:\n partInteger = partInteger.replace(/(\\d)(?=(\\d\\d)+\\d$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.wan:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{4})+$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.thousand:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{3})+$)/g, '$1' + owner.delimiter);\n\n break;\n }\n\n if (owner.tailPrefix) {\n return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;\n }\n\n return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');\n }\n};\n\nvar NumeralFormatter_1 = NumeralFormatter;\n\nvar DateFormatter = function (datePattern, dateMin, dateMax) {\n var owner = this;\n\n owner.date = [];\n owner.blocks = [];\n owner.datePattern = datePattern;\n owner.dateMin = dateMin\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMin.length === 2) owner.dateMin.unshift(0);\n\n owner.dateMax = dateMax\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMax.length === 2) owner.dateMax.unshift(0);\n \n owner.initBlocks();\n};\n\nDateFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.datePattern.forEach(function (value) {\n if (value === 'Y') {\n owner.blocks.push(4);\n } else {\n owner.blocks.push(2);\n }\n });\n },\n\n getISOFormatDate: function () {\n var owner = this,\n date = owner.date;\n\n return date[2] ? (\n date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getValidatedDate: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.datePattern[index]) {\n case 'd':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 3) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 31) {\n sub = '31';\n }\n\n break;\n\n case 'm':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 1) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 12) {\n sub = '12';\n }\n\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedDateString(result);\n },\n\n getFixedDateString: function (value) {\n var owner = this, datePattern = owner.datePattern, date = [],\n dayIndex = 0, monthIndex = 0, yearIndex = 0,\n dayStartIndex = 0, monthStartIndex = 0, yearStartIndex = 0,\n day, month, year, fullYearDone = false;\n\n // mm-dd || dd-mm\n if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') {\n dayStartIndex = datePattern[0] === 'd' ? 0 : 2;\n monthStartIndex = 2 - dayStartIndex;\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\n date = this.getFixedDate(day, month, 0);\n }\n\n // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd\n if (value.length === 8) {\n datePattern.forEach(function (type, index) {\n switch (type) {\n case 'd':\n dayIndex = index;\n break;\n case 'm':\n monthIndex = index;\n break;\n default:\n yearIndex = index;\n break;\n }\n });\n\n yearStartIndex = yearIndex * 2;\n dayStartIndex = (dayIndex <= yearIndex) ? dayIndex * 2 : (dayIndex * 2 + 2);\n monthStartIndex = (monthIndex <= yearIndex) ? monthIndex * 2 : (monthIndex * 2 + 2);\n\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = this.getFixedDate(day, month, year);\n }\n\n // mm-yy || yy-mm\n if (value.length === 4 && (datePattern[0] === 'y' || datePattern[1] === 'y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 2;\n yearStartIndex = 2 - monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 2), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 2).length === 2;\n\n date = [0, month, year];\n }\n\n // mm-yyyy || yyyy-mm\n if (value.length === 6 && (datePattern[0] === 'Y' || datePattern[1] === 'Y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 4;\n yearStartIndex = 2 - 0.5 * monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = [0, month, year];\n }\n\n date = owner.getRangeFixedDate(date);\n owner.date = date;\n\n var result = date.length === 0 ? value : datePattern.reduce(function (previous, current) {\n switch (current) {\n case 'd':\n return previous + (date[0] === 0 ? '' : owner.addLeadingZero(date[0]));\n case 'm':\n return previous + (date[1] === 0 ? '' : owner.addLeadingZero(date[1]));\n case 'y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], false) : '');\n case 'Y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], true) : '');\n }\n }, '');\n\n return result;\n },\n\n getRangeFixedDate: function (date) {\n var owner = this,\n datePattern = owner.datePattern,\n dateMin = owner.dateMin || [],\n dateMax = owner.dateMax || [];\n\n if (!date.length || (dateMin.length < 3 && dateMax.length < 3)) return date;\n\n if (\n datePattern.find(function(x) {\n return x.toLowerCase() === 'y';\n }) &&\n date[2] === 0\n ) return date;\n\n if (dateMax.length && (dateMax[2] < date[2] || (\n dateMax[2] === date[2] && (dateMax[1] < date[1] || (\n dateMax[1] === date[1] && dateMax[0] < date[0]\n ))\n ))) return dateMax;\n\n if (dateMin.length && (dateMin[2] > date[2] || (\n dateMin[2] === date[2] && (dateMin[1] > date[1] || (\n dateMin[1] === date[1] && dateMin[0] > date[0]\n ))\n ))) return dateMin;\n\n return date;\n },\n\n getFixedDate: function (day, month, year) {\n day = Math.min(day, 31);\n month = Math.min(month, 12);\n year = parseInt((year || 0), 10);\n\n if ((month < 7 && month % 2 === 0) || (month > 8 && month % 2 === 1)) {\n day = Math.min(day, month === 2 ? (this.isLeapYear(year) ? 29 : 28) : 30);\n }\n\n return [day, month, year];\n },\n\n isLeapYear: function (year) {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n },\n\n addLeadingZeroForYear: function (number, fullYearMode) {\n if (fullYearMode) {\n return (number < 10 ? '000' : (number < 100 ? '00' : (number < 1000 ? '0' : ''))) + number;\n }\n\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar DateFormatter_1 = DateFormatter;\n\nvar TimeFormatter = function (timePattern, timeFormat) {\n var owner = this;\n\n owner.time = [];\n owner.blocks = [];\n owner.timePattern = timePattern;\n owner.timeFormat = timeFormat;\n owner.initBlocks();\n};\n\nTimeFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.timePattern.forEach(function () {\n owner.blocks.push(2);\n });\n },\n\n getISOFormatTime: function () {\n var owner = this,\n time = owner.time;\n\n return time[2] ? (\n owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getTimeFormatOptions: function () {\n var owner = this;\n if (String(owner.timeFormat) === '12') {\n return {\n maxHourFirstDigit: 1,\n maxHours: 12,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n }\n\n return {\n maxHourFirstDigit: 2,\n maxHours: 23,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n },\n\n getValidatedTime: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n var timeFormatOptions = owner.getTimeFormatOptions();\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.timePattern[index]) {\n\n case 'h':\n if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) {\n sub = timeFormatOptions.maxHours + '';\n }\n\n break;\n\n case 'm':\n case 's':\n if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) {\n sub = timeFormatOptions.maxMinutes + '';\n }\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedTimeString(result);\n },\n\n getFixedTimeString: function (value) {\n var owner = this, timePattern = owner.timePattern, time = [],\n secondIndex = 0, minuteIndex = 0, hourIndex = 0,\n secondStartIndex = 0, minuteStartIndex = 0, hourStartIndex = 0,\n second, minute, hour;\n\n if (value.length === 6) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 's':\n secondIndex = index * 2;\n break;\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n secondStartIndex = secondIndex;\n\n second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10);\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n if (value.length === 4 && owner.timePattern.indexOf('s') < 0) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n\n second = 0;\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n owner.time = time;\n\n return time.length === 0 ? value : timePattern.reduce(function (previous, current) {\n switch (current) {\n case 's':\n return previous + owner.addLeadingZero(time[2]);\n case 'm':\n return previous + owner.addLeadingZero(time[1]);\n case 'h':\n return previous + owner.addLeadingZero(time[0]);\n }\n }, '');\n },\n\n getFixedTime: function (hour, minute, second) {\n second = Math.min(parseInt(second || 0, 10), 60);\n minute = Math.min(minute, 60);\n hour = Math.min(hour, 60);\n\n return [hour, minute, second];\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar TimeFormatter_1 = TimeFormatter;\n\nvar PhoneFormatter = function (formatter, delimiter) {\n var owner = this;\n\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' ';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\n owner.formatter = formatter;\n};\n\nPhoneFormatter.prototype = {\n setFormatter: function (formatter) {\n this.formatter = formatter;\n },\n\n format: function (phoneNumber) {\n var owner = this;\n\n owner.formatter.clear();\n\n // only keep number and +\n phoneNumber = phoneNumber.replace(/[^\\d+]/g, '');\n\n // strip non-leading +\n phoneNumber = phoneNumber.replace(/^\\+/, 'B').replace(/\\+/g, '').replace('B', '+');\n\n // strip delimiter\n phoneNumber = phoneNumber.replace(owner.delimiterRE, '');\n\n var result = '', current, validated = false;\n\n for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {\n current = owner.formatter.inputDigit(phoneNumber.charAt(i));\n\n // has ()- or space inside\n if (/[\\s()-]/g.test(current)) {\n result = current;\n\n validated = true;\n } else {\n if (!validated) {\n result = current;\n }\n // else: over length input\n // it turns to invalid number again\n }\n }\n\n // strip ()\n // e.g. US: 7161234567 returns (716) 123-4567\n result = result.replace(/[()]/g, '');\n // replace library delimiter with user customized delimiter\n result = result.replace(/[\\s-]/g, owner.delimiter);\n\n return result;\n }\n};\n\nvar PhoneFormatter_1 = PhoneFormatter;\n\nvar CreditCardDetector = {\n blocks: {\n uatp: [4, 5, 6],\n amex: [4, 6, 5],\n diners: [4, 6, 4],\n discover: [4, 4, 4, 4],\n mastercard: [4, 4, 4, 4],\n dankort: [4, 4, 4, 4],\n instapayment: [4, 4, 4, 4],\n jcb15: [4, 6, 5],\n jcb: [4, 4, 4, 4],\n maestro: [4, 4, 4, 4],\n visa: [4, 4, 4, 4],\n mir: [4, 4, 4, 4],\n unionPay: [4, 4, 4, 4],\n general: [4, 4, 4, 4]\n },\n\n re: {\n // starts with 1; 15 digits, not starts with 1800 (jcb card)\n uatp: /^(?!1800)1\\d{0,14}/,\n\n // starts with 34/37; 15 digits\n amex: /^3[47]\\d{0,13}/,\n\n // starts with 6011/65/644-649; 16 digits\n discover: /^(?:6011|65\\d{0,2}|64[4-9]\\d?)\\d{0,12}/,\n\n // starts with 300-305/309 or 36/38/39; 14 digits\n diners: /^3(?:0([0-5]|9)|[689]\\d?)\\d{0,11}/,\n\n // starts with 51-55/2221–2720; 16 digits\n mastercard: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}/,\n\n // starts with 5019/4175/4571; 16 digits\n dankort: /^(5019|4175|4571)\\d{0,12}/,\n\n // starts with 637-639; 16 digits\n instapayment: /^63[7-9]\\d{0,13}/,\n\n // starts with 2131/1800; 15 digits\n jcb15: /^(?:2131|1800)\\d{0,11}/,\n\n // starts with 2131/1800/35; 16 digits\n jcb: /^(?:35\\d{0,2})\\d{0,12}/,\n\n // starts with 50/56-58/6304/67; 16 digits\n maestro: /^(?:5[0678]\\d{0,2}|6304|67\\d{0,2})\\d{0,12}/,\n\n // starts with 22; 16 digits\n mir: /^220[0-4]\\d{0,12}/,\n\n // starts with 4; 16 digits\n visa: /^4\\d{0,15}/,\n\n // starts with 62/81; 16 digits\n unionPay: /^(62|81)\\d{0,14}/\n },\n\n getStrictBlocks: function (block) {\n var total = block.reduce(function (prev, current) {\n return prev + current;\n }, 0);\n\n return block.concat(19 - total);\n },\n\n getInfo: function (value, strictMode) {\n var blocks = CreditCardDetector.blocks,\n re = CreditCardDetector.re;\n\n // Some credit card can have up to 19 digits number.\n // Set strictMode to true will remove the 16 max-length restrain,\n // however, I never found any website validate card number like\n // this, hence probably you don't want to enable this option.\n strictMode = !!strictMode;\n\n for (var key in re) {\n if (re[key].test(value)) {\n var matchedBlocks = blocks[key];\n return {\n type: key,\n blocks: strictMode ? this.getStrictBlocks(matchedBlocks) : matchedBlocks\n };\n }\n }\n\n return {\n type: 'unknown',\n blocks: strictMode ? this.getStrictBlocks(blocks.general) : blocks.general\n };\n }\n};\n\nvar CreditCardDetector_1 = CreditCardDetector;\n\nvar Util = {\n noop: function () {\n },\n\n strip: function (value, re) {\n return value.replace(re, '');\n },\n\n getPostDelimiter: function (value, delimiter, delimiters) {\n // single delimiter\n if (delimiters.length === 0) {\n return value.slice(-delimiter.length) === delimiter ? delimiter : '';\n }\n\n // multiple delimiters\n var matchedDelimiter = '';\n delimiters.forEach(function (current) {\n if (value.slice(-current.length) === current) {\n matchedDelimiter = current;\n }\n });\n\n return matchedDelimiter;\n },\n\n getDelimiterREByDelimiter: function (delimiter) {\n return new RegExp(delimiter.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1'), 'g');\n },\n\n getNextCursorPosition: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n // If cursor was at the end of value, just place it back.\n // Because new value could contain additional chars.\n if (oldValue.length === prevPos) {\n return newValue.length;\n }\n\n return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter ,delimiters);\n },\n\n getPositionOffset: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n var oldRawValue, newRawValue, lengthOffset;\n\n oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters);\n newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters);\n lengthOffset = oldRawValue.length - newRawValue.length;\n\n return (lengthOffset !== 0) ? (lengthOffset / Math.abs(lengthOffset)) : 0;\n },\n\n stripDelimiters: function (value, delimiter, delimiters) {\n var owner = this;\n\n // single delimiter\n if (delimiters.length === 0) {\n var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';\n\n return value.replace(delimiterRE, '');\n }\n\n // multiple delimiters\n delimiters.forEach(function (current) {\n current.split('').forEach(function (letter) {\n value = value.replace(owner.getDelimiterREByDelimiter(letter), '');\n });\n });\n\n return value;\n },\n\n headStr: function (str, length) {\n return str.slice(0, length);\n },\n\n getMaxLength: function (blocks) {\n return blocks.reduce(function (previous, current) {\n return previous + current;\n }, 0);\n },\n\n // strip prefix\n // Before type | After type | Return value\n // PEFIX-... | PEFIX-... | ''\n // PREFIX-123 | PEFIX-123 | 123\n // PREFIX-123 | PREFIX-23 | 23\n // PREFIX-123 | PREFIX-1234 | 1234\n getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix) {\n // No prefix\n if (prefixLength === 0) {\n return value;\n }\n\n // Value is prefix\n if (value === prefix && value !== '') {\n return '';\n }\n\n if (signBeforePrefix && (value.slice(0, 1) == '-')) {\n var prev = (prevResult.slice(0, 1) == '-') ? prevResult.slice(1) : prevResult;\n return '-' + this.getPrefixStrippedValue(value.slice(1), prefix, prefixLength, prev, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix);\n }\n\n // Pre result prefix string does not match pre-defined prefix\n if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n } else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n }\n\n var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);\n\n // New value has issue, someone typed in between prefix letters\n // Revert to pre value\n if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {\n return prevValue.slice(prefixLength);\n } else if (value.slice(-prefixLength) !== prefix && tailPrefix) {\n return prevValue.slice(0, -prefixLength - 1);\n }\n\n // No issue, strip prefix for new value\n return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);\n },\n\n getFirstDiffIndex: function (prev, current) {\n var index = 0;\n\n while (prev.charAt(index) === current.charAt(index)) {\n if (prev.charAt(index++) === '') {\n return -1;\n }\n }\n\n return index;\n },\n\n getFormattedValue: function (value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) {\n var result = '',\n multipleDelimiters = delimiters.length > 0,\n currentDelimiter = '';\n\n // no options, normal input\n if (blocksLength === 0) {\n return value;\n }\n\n blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n rest = value.slice(length);\n\n if (multipleDelimiters) {\n currentDelimiter = delimiters[delimiterLazyShow ? (index - 1) : index] || currentDelimiter;\n } else {\n currentDelimiter = delimiter;\n }\n\n if (delimiterLazyShow) {\n if (index > 0) {\n result += currentDelimiter;\n }\n\n result += sub;\n } else {\n result += sub;\n\n if (sub.length === length && index < blocksLength - 1) {\n result += currentDelimiter;\n }\n }\n\n // update remaining string\n value = rest;\n }\n });\n\n return result;\n },\n\n // move cursor to the end\n // the first time user focuses on an input with prefix\n fixPrefixCursor: function (el, prefix, delimiter, delimiters) {\n if (!el) {\n return;\n }\n\n var val = el.value,\n appendix = delimiter || (delimiters[0] || ' ');\n\n if (!el.setSelectionRange || !prefix || (prefix.length + appendix.length) <= val.length) {\n return;\n }\n\n var len = val.length * 2;\n\n // set timeout to avoid blink\n setTimeout(function () {\n el.setSelectionRange(len, len);\n }, 1);\n },\n\n // Check if input field is fully selected\n checkFullSelection: function(value) {\n try {\n var selection = window.getSelection() || document.getSelection() || {};\n return selection.toString().length === value.length;\n } catch (ex) {\n // Ignore\n }\n\n return false;\n },\n\n setSelection: function (element, position, doc) {\n if (element !== this.getActiveElement(doc)) {\n return;\n }\n\n // cursor is already in the end\n if (element && element.value.length <= position) {\n return;\n }\n\n if (element.createTextRange) {\n var range = element.createTextRange();\n\n range.move('character', position);\n range.select();\n } else {\n try {\n element.setSelectionRange(position, position);\n } catch (e) {\n // eslint-disable-next-line\n console.warn('The input element type does not support selection');\n }\n }\n },\n\n getActiveElement: function(parent) {\n var activeElement = parent.activeElement;\n if (activeElement && activeElement.shadowRoot) {\n return this.getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n },\n\n isAndroid: function () {\n return navigator && /android/i.test(navigator.userAgent);\n },\n\n // On Android chrome, the keyup and keydown events\n // always return key code 229 as a composition that\n // buffers the user’s keystrokes\n // see https://github.com/nosir/cleave.js/issues/147\n isAndroidBackspaceKeydown: function (lastInputValue, currentInputValue) {\n if (!this.isAndroid() || !lastInputValue || !currentInputValue) {\n return false;\n }\n\n return currentInputValue === lastInputValue.slice(0, -1);\n }\n};\n\nvar Util_1 = Util;\n\n/**\n * Props Assignment\n *\n * Separate this, so react module can share the usage\n */\nvar DefaultProperties = {\n // Maybe change to object-assign\n // for now just keep it as simple\n assign: function (target, opts) {\n target = target || {};\n opts = opts || {};\n\n // credit card\n target.creditCard = !!opts.creditCard;\n target.creditCardStrictMode = !!opts.creditCardStrictMode;\n target.creditCardType = '';\n target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || (function () {});\n\n // phone\n target.phone = !!opts.phone;\n target.phoneRegionCode = opts.phoneRegionCode || 'AU';\n target.phoneFormatter = {};\n\n // time\n target.time = !!opts.time;\n target.timePattern = opts.timePattern || ['h', 'm', 's'];\n target.timeFormat = opts.timeFormat || '24';\n target.timeFormatter = {};\n\n // date\n target.date = !!opts.date;\n target.datePattern = opts.datePattern || ['d', 'm', 'Y'];\n target.dateMin = opts.dateMin || '';\n target.dateMax = opts.dateMax || '';\n target.dateFormatter = {};\n\n // numeral\n target.numeral = !!opts.numeral;\n target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0;\n target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2;\n target.numeralDecimalMark = opts.numeralDecimalMark || '.';\n target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand';\n target.numeralPositiveOnly = !!opts.numeralPositiveOnly;\n target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;\n target.signBeforePrefix = !!opts.signBeforePrefix;\n target.tailPrefix = !!opts.tailPrefix;\n\n // others\n target.swapHiddenInput = !!opts.swapHiddenInput;\n \n target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;\n\n target.uppercase = !!opts.uppercase;\n target.lowercase = !!opts.lowercase;\n\n target.prefix = (target.creditCard || target.date) ? '' : (opts.prefix || '');\n target.noImmediatePrefix = !!opts.noImmediatePrefix;\n target.prefixLength = target.prefix.length;\n target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;\n target.copyDelimiter = !!opts.copyDelimiter;\n\n target.initValue = (opts.initValue !== undefined && opts.initValue !== null) ? opts.initValue.toString() : '';\n\n target.delimiter =\n (opts.delimiter || opts.delimiter === '') ? opts.delimiter :\n (opts.date ? '/' :\n (opts.time ? ':' :\n (opts.numeral ? ',' :\n (opts.phone ? ' ' :\n ' '))));\n target.delimiterLength = target.delimiter.length;\n target.delimiterLazyShow = !!opts.delimiterLazyShow;\n target.delimiters = opts.delimiters || [];\n\n target.blocks = opts.blocks || [];\n target.blocksLength = target.blocks.length;\n\n target.root = (typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window;\n target.document = opts.document || target.root.document;\n\n target.maxLength = 0;\n\n target.backspace = false;\n target.result = '';\n\n target.onValueChanged = opts.onValueChanged || (function () {});\n\n return target;\n }\n};\n\nvar DefaultProperties_1 = DefaultProperties;\n\n/**\n * Construct a new Cleave instance by passing the configuration object\n *\n * @param {String | HTMLElement} element\n * @param {Object} opts\n */\nvar Cleave = function (element, opts) {\n var owner = this;\n var hasMultipleElements = false;\n\n if (typeof element === 'string') {\n owner.element = document.querySelector(element);\n hasMultipleElements = document.querySelectorAll(element).length > 1;\n } else {\n if (typeof element.length !== 'undefined' && element.length > 0) {\n owner.element = element[0];\n hasMultipleElements = element.length > 1;\n } else {\n owner.element = element;\n }\n }\n\n if (!owner.element) {\n throw new Error('[cleave.js] Please check the element');\n }\n\n if (hasMultipleElements) {\n try {\n // eslint-disable-next-line\n console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');\n } catch (e) {\n // Old IE\n }\n }\n\n opts.initValue = owner.element.value;\n\n owner.properties = Cleave.DefaultProperties.assign({}, opts);\n\n owner.init();\n};\n\nCleave.prototype = {\n init: function () {\n var owner = this, pps = owner.properties;\n\n // no need to use this lib\n if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && (pps.blocksLength === 0 && !pps.prefix)) {\n owner.onInput(pps.initValue);\n\n return;\n }\n\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n\n owner.isAndroid = Cleave.Util.isAndroid();\n owner.lastInputValue = '';\n owner.isBackward = '';\n\n owner.onChangeListener = owner.onChange.bind(owner);\n owner.onKeyDownListener = owner.onKeyDown.bind(owner);\n owner.onFocusListener = owner.onFocus.bind(owner);\n owner.onCutListener = owner.onCut.bind(owner);\n owner.onCopyListener = owner.onCopy.bind(owner);\n\n owner.initSwapHiddenInput();\n\n owner.element.addEventListener('input', owner.onChangeListener);\n owner.element.addEventListener('keydown', owner.onKeyDownListener);\n owner.element.addEventListener('focus', owner.onFocusListener);\n owner.element.addEventListener('cut', owner.onCutListener);\n owner.element.addEventListener('copy', owner.onCopyListener);\n\n\n owner.initPhoneFormatter();\n owner.initDateFormatter();\n owner.initTimeFormatter();\n owner.initNumeralFormatter();\n\n // avoid touch input field if value is null\n // otherwise Firefox will add red box-shadow for \n if (pps.initValue || (pps.prefix && !pps.noImmediatePrefix)) {\n owner.onInput(pps.initValue);\n }\n },\n\n initSwapHiddenInput: function () {\n var owner = this, pps = owner.properties;\n if (!pps.swapHiddenInput) return;\n\n var inputFormatter = owner.element.cloneNode(true);\n owner.element.parentNode.insertBefore(inputFormatter, owner.element);\n\n owner.elementSwapHidden = owner.element;\n owner.elementSwapHidden.type = 'hidden';\n\n owner.element = inputFormatter;\n owner.element.id = '';\n },\n\n initNumeralFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.numeral) {\n return;\n }\n\n pps.numeralFormatter = new Cleave.NumeralFormatter(\n pps.numeralDecimalMark,\n pps.numeralIntegerScale,\n pps.numeralDecimalScale,\n pps.numeralThousandsGroupStyle,\n pps.numeralPositiveOnly,\n pps.stripLeadingZeroes,\n pps.prefix,\n pps.signBeforePrefix,\n pps.tailPrefix,\n pps.delimiter\n );\n },\n\n initTimeFormatter: function() {\n var owner = this, pps = owner.properties;\n\n if (!pps.time) {\n return;\n }\n\n pps.timeFormatter = new Cleave.TimeFormatter(pps.timePattern, pps.timeFormat);\n pps.blocks = pps.timeFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initDateFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.date) {\n return;\n }\n\n pps.dateFormatter = new Cleave.DateFormatter(pps.datePattern, pps.dateMin, pps.dateMax);\n pps.blocks = pps.dateFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initPhoneFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.phone) {\n return;\n }\n\n // Cleave.AsYouTypeFormatter should be provided by\n // external google closure lib\n try {\n pps.phoneFormatter = new Cleave.PhoneFormatter(\n new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode),\n pps.delimiter\n );\n } catch (ex) {\n throw new Error('[cleave.js] Please include phone-type-formatter.{country}.js lib');\n }\n },\n\n onKeyDown: function (event) {\n var owner = this,\n charCode = event.which || event.keyCode;\n\n owner.lastInputValue = owner.element.value;\n owner.isBackward = charCode === 8;\n },\n\n onChange: function (event) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n owner.isBackward = owner.isBackward || event.inputType === 'deleteContentBackward';\n\n var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters);\n\n if (owner.isBackward && postDelimiter) {\n pps.postDelimiterBackspace = postDelimiter;\n } else {\n pps.postDelimiterBackspace = false;\n }\n\n this.onInput(this.element.value);\n },\n\n onFocus: function () {\n var owner = this,\n pps = owner.properties;\n owner.lastInputValue = owner.element.value;\n\n if (pps.prefix && pps.noImmediatePrefix && !owner.element.value) {\n this.onInput(pps.prefix);\n }\n\n Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);\n },\n\n onCut: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n this.onInput('');\n },\n\n onCopy: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n },\n\n copyClipboardData: function (e) {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n inputValue = owner.element.value,\n textToCopy = '';\n\n if (!pps.copyDelimiter) {\n textToCopy = Util.stripDelimiters(inputValue, pps.delimiter, pps.delimiters);\n } else {\n textToCopy = inputValue;\n }\n\n try {\n if (e.clipboardData) {\n e.clipboardData.setData('Text', textToCopy);\n } else {\n window.clipboardData.setData('Text', textToCopy);\n }\n\n e.preventDefault();\n } catch (ex) {\n // empty\n }\n },\n\n onInput: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n // case 1: delete one more character \"4\"\n // 1234*| -> hit backspace -> 123|\n // case 2: last character is not delimiter which is:\n // 12|34* -> hit backspace -> 1|34*\n // note: no need to apply this for numeral mode\n var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters);\n if (!pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) {\n value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length);\n }\n\n // phone formatter\n if (pps.phone) {\n if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {\n pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length);\n } else {\n pps.result = pps.phoneFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // numeral formatter\n if (pps.numeral) {\n // Do not show prefix when noImmediatePrefix is specified\n // This mostly because we need to show user the native input placeholder\n if (pps.prefix && pps.noImmediatePrefix && value.length === 0) {\n pps.result = '';\n } else {\n pps.result = pps.numeralFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // date\n if (pps.date) {\n value = pps.dateFormatter.getValidatedDate(value);\n }\n\n // time\n if (pps.time) {\n value = pps.timeFormatter.getValidatedTime(value);\n }\n\n // strip delimiters\n value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);\n\n // strip prefix\n value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\n // strip non-numeric characters\n value = pps.numericOnly ? Util.strip(value, /[^\\d]/g) : value;\n\n // convert case\n value = pps.uppercase ? value.toUpperCase() : value;\n value = pps.lowercase ? value.toLowerCase() : value;\n\n // prevent from showing prefix when no immediate option enabled with empty input value\n if (pps.prefix) {\n if (pps.tailPrefix) {\n value = value + pps.prefix;\n } else {\n value = pps.prefix + value;\n }\n\n\n // no blocks specified, no need to do formatting\n if (pps.blocksLength === 0) {\n pps.result = value;\n owner.updateValueState();\n\n return;\n }\n }\n\n // update credit card props\n if (pps.creditCard) {\n owner.updateCreditCardPropsByValue(value);\n }\n\n // strip over length characters\n value = Util.headStr(value, pps.maxLength);\n\n // apply blocks\n pps.result = Util.getFormattedValue(\n value,\n pps.blocks, pps.blocksLength,\n pps.delimiter, pps.delimiters, pps.delimiterLazyShow\n );\n\n owner.updateValueState();\n },\n\n updateCreditCardPropsByValue: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util,\n creditCardInfo;\n\n // At least one of the first 4 characters has changed\n if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) {\n return;\n }\n\n creditCardInfo = Cleave.CreditCardDetector.getInfo(value, pps.creditCardStrictMode);\n\n pps.blocks = creditCardInfo.blocks;\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Util.getMaxLength(pps.blocks);\n\n // credit card type changed\n if (pps.creditCardType !== creditCardInfo.type) {\n pps.creditCardType = creditCardInfo.type;\n\n pps.onCreditCardTypeChanged.call(owner, pps.creditCardType);\n }\n },\n\n updateValueState: function () {\n var owner = this,\n Util = Cleave.Util,\n pps = owner.properties;\n\n if (!owner.element) {\n return;\n }\n\n var endPos = owner.element.selectionEnd;\n var oldValue = owner.element.value;\n var newValue = pps.result;\n\n endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters);\n\n // fix Android browser type=\"text\" input field\n // cursor not jumping issue\n if (owner.isAndroid) {\n window.setTimeout(function () {\n owner.element.value = newValue;\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n }, 1);\n\n return;\n }\n\n owner.element.value = newValue;\n if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue();\n\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n },\n\n callOnValueChanged: function () {\n var owner = this,\n pps = owner.properties;\n\n pps.onValueChanged.call(owner, {\n target: {\n name: owner.element.name,\n value: pps.result,\n rawValue: owner.getRawValue()\n }\n });\n },\n\n setPhoneRegionCode: function (phoneRegionCode) {\n var owner = this, pps = owner.properties;\n\n pps.phoneRegionCode = phoneRegionCode;\n owner.initPhoneFormatter();\n owner.onChange();\n },\n\n setRawValue: function (value) {\n var owner = this, pps = owner.properties;\n\n value = value !== undefined && value !== null ? value.toString() : '';\n\n if (pps.numeral) {\n value = value.replace('.', pps.numeralDecimalMark);\n }\n\n pps.postDelimiterBackspace = false;\n\n owner.element.value = value;\n owner.onInput(value);\n },\n\n getRawValue: function () {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n rawValue = owner.element.value;\n\n if (pps.rawValueTrimPrefix) {\n rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n }\n\n if (pps.numeral) {\n rawValue = pps.numeralFormatter.getRawValue(rawValue);\n } else {\n rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters);\n }\n\n return rawValue;\n },\n\n getISOFormatDate: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.date ? pps.dateFormatter.getISOFormatDate() : '';\n },\n\n getISOFormatTime: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.time ? pps.timeFormatter.getISOFormatTime() : '';\n },\n\n getFormattedValue: function () {\n return this.element.value;\n },\n\n destroy: function () {\n var owner = this;\n\n owner.element.removeEventListener('input', owner.onChangeListener);\n owner.element.removeEventListener('keydown', owner.onKeyDownListener);\n owner.element.removeEventListener('focus', owner.onFocusListener);\n owner.element.removeEventListener('cut', owner.onCutListener);\n owner.element.removeEventListener('copy', owner.onCopyListener);\n },\n\n toString: function () {\n return '[Cleave Object]';\n }\n};\n\nCleave.NumeralFormatter = NumeralFormatter_1;\nCleave.DateFormatter = DateFormatter_1;\nCleave.TimeFormatter = TimeFormatter_1;\nCleave.PhoneFormatter = PhoneFormatter_1;\nCleave.CreditCardDetector = CreditCardDetector_1;\nCleave.Util = Util_1;\nCleave.DefaultProperties = DefaultProperties_1;\n\n// for angular directive\n((typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window)['Cleave'] = Cleave;\n\n// CommonJS\nvar Cleave_1 = Cleave;\n\nexport default Cleave_1;\n","/*!\n * Compressor.js v1.0.6\n * https://fengyuanchen.github.io/compressorjs\n *\n * Copyright 2018-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2019-11-23T04:43:12.442Z\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Compressor = factory());\n}(this, (function () { 'use strict';\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n var canvasToBlob = createCommonjsModule(function (module) {\n if (typeof window === 'undefined') {\n return;\n }\n\n (function (window) {\n\n var CanvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;\n\n var hasBlobConstructor = window.Blob && function () {\n try {\n return Boolean(new Blob());\n } catch (e) {\n return false;\n }\n }();\n\n var hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100;\n } catch (e) {\n return false;\n }\n }();\n\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/;\n\n var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array && function (dataURI) {\n var matches, mediaType, isBase64, dataString, byteString, arrayBuffer, intArray, i, bb; // Parse the dataURI components as per RFC 2397\n\n matches = dataURI.match(dataURIPattern);\n\n if (!matches) {\n throw new Error('invalid data URI');\n } // Default to text/plain;charset=US-ASCII\n\n\n mediaType = matches[2] ? matches[1] : 'text/plain' + (matches[3] || ';charset=US-ASCII');\n isBase64 = !!matches[4];\n dataString = dataURI.slice(matches[0].length);\n\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString);\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString);\n } // Write the bytes of the string to an ArrayBuffer:\n\n\n arrayBuffer = new ArrayBuffer(byteString.length);\n intArray = new Uint8Array(arrayBuffer);\n\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i);\n } // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n\n\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n });\n }\n\n bb = new BlobBuilder();\n bb.append(arrayBuffer);\n return bb.getBlob(mediaType);\n };\n\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n } else {\n callback(self.mozGetAsFile('blob', type));\n }\n });\n };\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n });\n };\n }\n }\n\n if ( module.exports) {\n module.exports = dataURLtoBlob;\n } else {\n window.dataURLtoBlob = dataURLtoBlob;\n }\n })(window);\n });\n\n var isBlob = function isBlob(input) {\n if (typeof Blob === 'undefined') {\n return false;\n }\n\n return input instanceof Blob || Object.prototype.toString.call(input) === '[object Blob]';\n };\n\n var DEFAULTS = {\n /**\n * Indicates if output the original image instead of the compressed one\n * when the size of the compressed image is greater than the original one's\n * @type {boolean}\n */\n strict: true,\n\n /**\n * Indicates if read the image's Exif Orientation information,\n * and then rotate or flip the image automatically.\n * @type {boolean}\n */\n checkOrientation: true,\n\n /**\n * The max width of the output image.\n * @type {number}\n */\n maxWidth: Infinity,\n\n /**\n * The max height of the output image.\n * @type {number}\n */\n maxHeight: Infinity,\n\n /**\n * The min width of the output image.\n * @type {number}\n */\n minWidth: 0,\n\n /**\n * The min height of the output image.\n * @type {number}\n */\n minHeight: 0,\n\n /**\n * The width of the output image.\n * If not specified, the natural width of the source image will be used.\n * @type {number}\n */\n width: undefined,\n\n /**\n * The height of the output image.\n * If not specified, the natural height of the source image will be used.\n * @type {number}\n */\n height: undefined,\n\n /**\n * The quality of the output image.\n * It must be a number between `0` and `1`,\n * and only available for `image/jpeg` and `image/webp` images.\n * Check out {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob canvas.toBlob}.\n * @type {number}\n */\n quality: 0.8,\n\n /**\n * The mime type of the output image.\n * By default, the original mime type of the source image file will be used.\n * @type {string}\n */\n mimeType: 'auto',\n\n /**\n * PNG files over this value (5 MB by default) will be converted to JPEGs.\n * To disable this, just set the value to `Infinity`.\n * @type {number}\n */\n convertSize: 5000000,\n\n /**\n * The hook function to execute before draw the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.fillStyle = '#fff';\n * }\n */\n beforeDraw: null,\n\n /**\n * The hook function to execute after drew the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.filter = 'grayscale(100%)';\n * }\n */\n drew: null,\n\n /**\n * The hook function to execute when success to compress the image.\n * @type {Function}\n * @param {File} file - The compressed image File object.\n * @example\n * function (file) {\n * console.log(file);\n * }\n */\n success: null,\n\n /**\n * The hook function to execute when fail to compress the image.\n * @type {Function}\n * @param {Error} err - An Error object.\n * @example\n * function (err) {\n * console.log(err.message);\n * }\n */\n error: null\n };\n\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var WINDOW = IS_BROWSER ? window : {};\n\n var slice = Array.prototype.slice;\n /**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\n\n function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n }\n var REGEXP_IMAGE_TYPE = /^image\\/.+$/;\n /**\n * Check if the given value is a mime type of image.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given is a mime type of image, else `false`.\n */\n\n function isImageType(value) {\n return REGEXP_IMAGE_TYPE.test(value);\n }\n /**\n * Convert image type to extension.\n * @param {string} value - The image type to convert.\n * @returns {boolean} Returns the image extension.\n */\n\n function imageTypeToExtension(value) {\n var extension = isImageType(value) ? value.substr(6) : '';\n\n if (extension === 'jpeg') {\n extension = 'jpg';\n }\n\n return \".\".concat(extension);\n }\n var fromCharCode = String.fromCharCode;\n /**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\n\n function getStringFromCharCode(dataView, start, length) {\n var str = '';\n var i;\n length += start;\n\n for (i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n\n return str;\n }\n var btoa = WINDOW.btoa;\n /**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\n\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = [];\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n }\n /**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\n\n function resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation; // Ignores range error when the image does not have correct Exif information\n\n try {\n var littleEndian;\n var app1Start;\n var ifdStart; // Only handle JPEG image (start by 0xFFD8)\n\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n\n offset += 1;\n }\n }\n\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n\n if (littleEndian || endianness === 0x4D4D\n /* bigEndian */\n ) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n\n var _offset;\n\n var i;\n\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n\n if (dataView.getUint16(_offset, littleEndian) === 0x0112\n /* Orientation */\n ) {\n // 8 is the offset of the current tag's value\n _offset += 8; // Get the original orientation value\n\n orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value\n\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (e) {\n orientation = 1;\n }\n\n return orientation;\n }\n /**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\n\n function parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n // Rotate left 180°\n\n case 3:\n rotate = -180;\n break;\n // Flip vertical\n\n case 4:\n scaleY = -1;\n break;\n // Flip vertical and rotate right 90°\n\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n // Rotate right 90°\n\n case 6:\n rotate = 90;\n break;\n // Flip horizontal and rotate right 90°\n\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n // Rotate left 90°\n\n case 8:\n rotate = -90;\n break;\n }\n\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n /**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\n\n function normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n }\n\n var ArrayBuffer$1 = WINDOW.ArrayBuffer,\n FileReader = WINDOW.FileReader;\n var URL = WINDOW.URL || WINDOW.webkitURL;\n var REGEXP_EXTENSION = /\\.\\w+$/;\n var AnotherCompressor = WINDOW.Compressor;\n /**\n * Creates a new image compressor.\n * @class\n */\n\n var Compressor =\n /*#__PURE__*/\n function () {\n /**\n * The constructor of Compressor.\n * @param {File|Blob} file - The target image file for compressing.\n * @param {Object} [options] - The options for compressing.\n */\n function Compressor(file, options) {\n _classCallCheck(this, Compressor);\n\n this.file = file;\n this.image = new Image();\n this.options = _objectSpread2({}, DEFAULTS, {}, options);\n this.aborted = false;\n this.result = null;\n this.init();\n }\n\n _createClass(Compressor, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n\n var file = this.file,\n options = this.options;\n\n if (!isBlob(file)) {\n this.fail(new Error('The first argument must be a File or Blob object.'));\n return;\n }\n\n var mimeType = file.type;\n\n if (!isImageType(mimeType)) {\n this.fail(new Error('The first argument must be an image File or Blob object.'));\n return;\n }\n\n if (!URL || !FileReader) {\n this.fail(new Error('The current browser does not support image compression.'));\n return;\n }\n\n if (!ArrayBuffer$1) {\n options.checkOrientation = false;\n }\n\n if (URL && !options.checkOrientation) {\n this.load({\n url: URL.createObjectURL(file)\n });\n } else {\n var reader = new FileReader();\n var checkOrientation = options.checkOrientation && mimeType === 'image/jpeg';\n this.reader = reader;\n\n reader.onload = function (_ref) {\n var target = _ref.target;\n var result = target.result;\n var data = {};\n\n if (checkOrientation) {\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n var orientation = resetAndGetOrientation(result);\n\n if (orientation > 1 || !URL) {\n // Generate a new URL which has the default orientation value\n data.url = arrayBufferToDataURL(result, mimeType);\n\n if (orientation > 1) {\n _extends(data, parseOrientation(orientation));\n }\n } else {\n data.url = URL.createObjectURL(file);\n }\n } else {\n data.url = result;\n }\n\n _this.load(data);\n };\n\n reader.onabort = function () {\n _this.fail(new Error('Aborted to read the image with FileReader.'));\n };\n\n reader.onerror = function () {\n _this.fail(new Error('Failed to read the image with FileReader.'));\n };\n\n reader.onloadend = function () {\n _this.reader = null;\n };\n\n if (checkOrientation) {\n reader.readAsArrayBuffer(file);\n } else {\n reader.readAsDataURL(file);\n }\n }\n }\n }, {\n key: \"load\",\n value: function load(data) {\n var _this2 = this;\n\n var file = this.file,\n image = this.image;\n\n image.onload = function () {\n _this2.draw(_objectSpread2({}, data, {\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight\n }));\n };\n\n image.onabort = function () {\n _this2.fail(new Error('Aborted to load the image.'));\n };\n\n image.onerror = function () {\n _this2.fail(new Error('Failed to load the image.'));\n }; // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n\n\n if (WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent)) {\n // Fix the `The operation is insecure` error (#57)\n image.crossOrigin = 'anonymous';\n }\n\n image.alt = file.name;\n image.src = data.url;\n }\n }, {\n key: \"draw\",\n value: function draw(_ref2) {\n var _this3 = this;\n\n var naturalWidth = _ref2.naturalWidth,\n naturalHeight = _ref2.naturalHeight,\n _ref2$rotate = _ref2.rotate,\n rotate = _ref2$rotate === void 0 ? 0 : _ref2$rotate,\n _ref2$scaleX = _ref2.scaleX,\n scaleX = _ref2$scaleX === void 0 ? 1 : _ref2$scaleX,\n _ref2$scaleY = _ref2.scaleY,\n scaleY = _ref2$scaleY === void 0 ? 1 : _ref2$scaleY;\n var file = this.file,\n image = this.image,\n options = this.options;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var aspectRatio = naturalWidth / naturalHeight;\n var is90DegreesRotated = Math.abs(rotate) % 180 === 90;\n var maxWidth = Math.max(options.maxWidth, 0) || Infinity;\n var maxHeight = Math.max(options.maxHeight, 0) || Infinity;\n var minWidth = Math.max(options.minWidth, 0) || 0;\n var minHeight = Math.max(options.minHeight, 0) || 0;\n var width = Math.max(options.width, 0) || naturalWidth;\n var height = Math.max(options.height, 0) || naturalHeight;\n\n if (is90DegreesRotated) {\n var _ref3 = [maxHeight, maxWidth];\n maxWidth = _ref3[0];\n maxHeight = _ref3[1];\n var _ref4 = [minHeight, minWidth];\n minWidth = _ref4[0];\n minHeight = _ref4[1];\n var _ref5 = [height, width];\n width = _ref5[0];\n height = _ref5[1];\n }\n\n if (maxWidth < Infinity && maxHeight < Infinity) {\n if (maxHeight * aspectRatio > maxWidth) {\n maxHeight = maxWidth / aspectRatio;\n } else {\n maxWidth = maxHeight * aspectRatio;\n }\n } else if (maxWidth < Infinity) {\n maxHeight = maxWidth / aspectRatio;\n } else if (maxHeight < Infinity) {\n maxWidth = maxHeight * aspectRatio;\n }\n\n if (minWidth > 0 && minHeight > 0) {\n if (minHeight * aspectRatio > minWidth) {\n minHeight = minWidth / aspectRatio;\n } else {\n minWidth = minHeight * aspectRatio;\n }\n } else if (minWidth > 0) {\n minHeight = minWidth / aspectRatio;\n } else if (minHeight > 0) {\n minWidth = minHeight * aspectRatio;\n }\n\n if (height * aspectRatio > width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n\n width = Math.floor(normalizeDecimalNumber(Math.min(Math.max(width, minWidth), maxWidth)));\n height = Math.floor(normalizeDecimalNumber(Math.min(Math.max(height, minHeight), maxHeight)));\n var destX = -width / 2;\n var destY = -height / 2;\n var destWidth = width;\n var destHeight = height;\n\n if (is90DegreesRotated) {\n var _ref6 = [height, width];\n width = _ref6[0];\n height = _ref6[1];\n }\n\n canvas.width = width;\n canvas.height = height;\n\n if (!isImageType(options.mimeType)) {\n options.mimeType = file.type;\n }\n\n var fillStyle = 'transparent'; // Converts PNG files over the `convertSize` to JPEGs.\n\n if (file.size > options.convertSize && options.mimeType === 'image/png') {\n fillStyle = '#fff';\n options.mimeType = 'image/jpeg';\n } // Override the default fill color (#000, black)\n\n\n context.fillStyle = fillStyle;\n context.fillRect(0, 0, width, height);\n\n if (options.beforeDraw) {\n options.beforeDraw.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.drawImage(image, destX, destY, destWidth, destHeight);\n context.restore();\n\n if (options.drew) {\n options.drew.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n var done = function done(result) {\n if (!_this3.aborted) {\n _this3.done({\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n result: result\n });\n }\n };\n\n if (canvas.toBlob) {\n canvas.toBlob(done, options.mimeType, options.quality);\n } else {\n done(canvasToBlob(canvas.toDataURL(options.mimeType, options.quality)));\n }\n }\n }, {\n key: \"done\",\n value: function done(_ref7) {\n var naturalWidth = _ref7.naturalWidth,\n naturalHeight = _ref7.naturalHeight,\n result = _ref7.result;\n var file = this.file,\n image = this.image,\n options = this.options;\n\n if (URL && !options.checkOrientation) {\n URL.revokeObjectURL(image.src);\n }\n\n if (result) {\n // Returns original file if the result is greater than it and without size related options\n if (options.strict && result.size > file.size && options.mimeType === file.type && !(options.width > naturalWidth || options.height > naturalHeight || options.minWidth > naturalWidth || options.minHeight > naturalHeight)) {\n result = file;\n } else {\n var date = new Date();\n result.lastModified = date.getTime();\n result.lastModifiedDate = date;\n result.name = file.name; // Convert the extension to match its type\n\n if (result.name && result.type !== file.type) {\n result.name = result.name.replace(REGEXP_EXTENSION, imageTypeToExtension(result.type));\n }\n }\n } else {\n // Returns original file if the result is null in some cases.\n result = file;\n }\n\n this.result = result;\n\n if (options.success) {\n options.success.call(this, result);\n }\n }\n }, {\n key: \"fail\",\n value: function fail(err) {\n var options = this.options;\n\n if (options.error) {\n options.error.call(this, err);\n } else {\n throw err;\n }\n }\n }, {\n key: \"abort\",\n value: function abort() {\n if (!this.aborted) {\n this.aborted = true;\n\n if (this.reader) {\n this.reader.abort();\n } else if (!this.image.complete) {\n this.image.onload = null;\n this.image.onabort();\n } else {\n this.fail(new Error('The compression process has been aborted.'));\n }\n }\n }\n /**\n * Get the no conflict compressor class.\n * @returns {Compressor} The compressor class.\n */\n\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Compressor = AnotherCompressor;\n return Compressor;\n }\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n _extends(DEFAULTS, options);\n }\n }]);\n\n return Compressor;\n }();\n\n return Compressor;\n\n})));\n","var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var i,a=1,s=arguments.length;as.endVal?s.endVal:s.frameVal,s.frameVal=Number(s.frameVal.toFixed(s.options.decimalPlaces)),s.printValue(s.frameVal),i1?s.options.decimal+a[1]:\"\",s.options.useGrouping){r=\"\";for(var l=0,h=n.length;lt;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold){this.finalEndVal=t;var a=this.countDown?1:-1;this.endVal=t+a*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.callback=t,this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,this.finalEndVal||this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i=this.formattingFn(t);\"INPUT\"===this.el.tagName?this.el.value=i:\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i},t.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \"+t,null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();export{CountUp};","/*************************\r\n * Croppie\r\n * Copyright 2019\r\n * Foliotek\r\n * Version: 2.6.4\r\n *************************/\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(factory);\r\n } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n root.Croppie = factory();\r\n }\r\n}(typeof self !== 'undefined' ? self : this, function () {\r\n\r\n /* Polyfills */\r\n if (typeof Promise !== 'function') {\r\n /*! promise-polyfill 3.1.0 */\r\n !function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if(\"object\"!==typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!==typeof a)throw new TypeError(\"not a function\");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void k(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError(\"A promise cannot be resolved with itself.\");if(a&&(\"object\"===typeof a||\"function\"===typeof a)){var c=a.then;if(\"function\"===typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled=\"function\"===typeof a?a:null,this.onRejected=\"function\"===typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j=setTimeout,k=\"function\"===typeof setImmediate&&setImmediate||function(a){j(a,1)},l=Array.isArray||function(a){return\"[object Array]\"===Object.prototype.toString.call(a)};c.prototype[\"catch\"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&l(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&(\"object\"===typeof g||\"function\"===typeof g)){var h=g.then;if(\"function\"===typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;fd;d++)a[d].then(b,c)})},c._setImmediateFn=function(a){k=a},\"undefined\"!==typeof module&&module.exports?module.exports=c:a.Promise||(a.Promise=c)}(this);\r\n }\r\n\r\n if ( typeof window.CustomEvent !== \"function\" ) {\r\n (function(){\r\n function CustomEvent ( event, params ) {\r\n params = params || { bubbles: false, cancelable: false, detail: undefined };\r\n var evt = document.createEvent( 'CustomEvent' );\r\n evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\r\n return evt;\r\n }\r\n CustomEvent.prototype = window.Event.prototype;\r\n window.CustomEvent = CustomEvent;\r\n }());\r\n }\r\n\r\n if (!HTMLCanvasElement.prototype.toBlob) {\r\n Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\r\n value: function (callback, type, quality) {\r\n var binStr = atob( this.toDataURL(type, quality).split(',')[1] ),\r\n len = binStr.length,\r\n arr = new Uint8Array(len);\r\n\r\n for (var i=0; i -1 ? EXIF_NORM : EXIF_FLIP,\r\n index = arr.indexOf(ornt),\r\n offset = (rotate / 90) % arr.length;// 180 = 2%4 = 2 shift exif by 2 indexes\r\n\r\n return arr[(arr.length + index + (offset % arr.length)) % arr.length];\r\n }\r\n\r\n // Credits to : Andrew Dupont - http://andrewdupont.net/2009/08/28/deep-extending-objects-in-javascript/\r\n function deepExtend(destination, source) {\r\n destination = destination || {};\r\n for (var property in source) {\r\n if (source[property] && source[property].constructor && source[property].constructor === Object) {\r\n destination[property] = destination[property] || {};\r\n deepExtend(destination[property], source[property]);\r\n } else {\r\n destination[property] = source[property];\r\n }\r\n }\r\n return destination;\r\n }\r\n\r\n function clone(object) {\r\n return deepExtend({}, object);\r\n }\r\n\r\n function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n }\r\n\r\n function dispatchChange(element) {\r\n if (\"createEvent\" in document) {\r\n var evt = document.createEvent(\"HTMLEvents\");\r\n evt.initEvent(\"change\", false, true);\r\n element.dispatchEvent(evt);\r\n }\r\n else {\r\n element.fireEvent(\"onchange\");\r\n }\r\n }\r\n\r\n //http://jsperf.com/vanilla-css\r\n function css(el, styles, val) {\r\n if (typeof (styles) === 'string') {\r\n var tmp = styles;\r\n styles = {};\r\n styles[tmp] = val;\r\n }\r\n\r\n for (var prop in styles) {\r\n el.style[prop] = styles[prop];\r\n }\r\n }\r\n\r\n function addClass(el, c) {\r\n if (el.classList) {\r\n el.classList.add(c);\r\n }\r\n else {\r\n el.className += ' ' + c;\r\n }\r\n }\r\n\r\n function removeClass(el, c) {\r\n if (el.classList) {\r\n el.classList.remove(c);\r\n }\r\n else {\r\n el.className = el.className.replace(c, '');\r\n }\r\n }\r\n\r\n function setAttributes(el, attrs) {\r\n for (var key in attrs) {\r\n el.setAttribute(key, attrs[key]);\r\n }\r\n }\r\n\r\n function num(v) {\r\n return parseInt(v, 10);\r\n }\r\n\r\n /* Utilities */\r\n function loadImage(src, doExif) {\r\n var img = new Image();\r\n img.style.opacity = '0';\r\n return new Promise(function (resolve, reject) {\r\n function _resolve() {\r\n img.style.opacity = '1';\r\n setTimeout(function () {\r\n resolve(img);\r\n }, 1);\r\n }\r\n\r\n img.removeAttribute('crossOrigin');\r\n if (src.match(/^https?:\\/\\/|^\\/\\//)) {\r\n img.setAttribute('crossOrigin', 'anonymous');\r\n }\r\n\r\n img.onload = function () {\r\n if (doExif) {\r\n EXIF.getData(img, function () {\r\n _resolve();\r\n });\r\n }\r\n else {\r\n _resolve();\r\n }\r\n };\r\n img.onerror = function (ev) {\r\n img.style.opacity = 1;\r\n setTimeout(function () {\r\n reject(ev);\r\n }, 1);\r\n };\r\n img.src = src;\r\n });\r\n }\r\n\r\n function naturalImageDimensions(img, ornt) {\r\n var w = img.naturalWidth;\r\n var h = img.naturalHeight;\r\n var orient = ornt || getExifOrientation(img);\r\n if (orient && orient >= 5) {\r\n var x= w;\r\n w = h;\r\n h = x;\r\n }\r\n return { width: w, height: h };\r\n }\r\n\r\n /* CSS Transform Prototype */\r\n var TRANSLATE_OPTS = {\r\n 'translate3d': {\r\n suffix: ', 0px'\r\n },\r\n 'translate': {\r\n suffix: ''\r\n }\r\n };\r\n var Transform = function (x, y, scale) {\r\n this.x = parseFloat(x);\r\n this.y = parseFloat(y);\r\n this.scale = parseFloat(scale);\r\n };\r\n\r\n Transform.parse = function (v) {\r\n if (v.style) {\r\n return Transform.parse(v.style[CSS_TRANSFORM]);\r\n }\r\n else if (v.indexOf('matrix') > -1 || v.indexOf('none') > -1) {\r\n return Transform.fromMatrix(v);\r\n }\r\n else {\r\n return Transform.fromString(v);\r\n }\r\n };\r\n\r\n Transform.fromMatrix = function (v) {\r\n var vals = v.substring(7).split(',');\r\n if (!vals.length || v === 'none') {\r\n vals = [1, 0, 0, 1, 0, 0];\r\n }\r\n\r\n return new Transform(num(vals[4]), num(vals[5]), parseFloat(vals[0]));\r\n };\r\n\r\n Transform.fromString = function (v) {\r\n var values = v.split(') '),\r\n translate = values[0].substring(Croppie.globals.translate.length + 1).split(','),\r\n scale = values.length > 1 ? values[1].substring(6) : 1,\r\n x = translate.length > 1 ? translate[0] : 0,\r\n y = translate.length > 1 ? translate[1] : 0;\r\n\r\n return new Transform(x, y, scale);\r\n };\r\n\r\n Transform.prototype.toString = function () {\r\n var suffix = TRANSLATE_OPTS[Croppie.globals.translate].suffix || '';\r\n return Croppie.globals.translate + '(' + this.x + 'px, ' + this.y + 'px' + suffix + ') scale(' + this.scale + ')';\r\n };\r\n\r\n var TransformOrigin = function (el) {\r\n if (!el || !el.style[CSS_TRANS_ORG]) {\r\n this.x = 0;\r\n this.y = 0;\r\n return;\r\n }\r\n var css = el.style[CSS_TRANS_ORG].split(' ');\r\n this.x = parseFloat(css[0]);\r\n this.y = parseFloat(css[1]);\r\n };\r\n\r\n TransformOrigin.prototype.toString = function () {\r\n return this.x + 'px ' + this.y + 'px';\r\n };\r\n\r\n function getExifOrientation (img) {\r\n return img.exifdata && img.exifdata.Orientation ? num(img.exifdata.Orientation) : 1;\r\n }\r\n\r\n function drawCanvas(canvas, img, orientation) {\r\n var width = img.width,\r\n height = img.height,\r\n ctx = canvas.getContext('2d');\r\n\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n\r\n ctx.save();\r\n switch (orientation) {\r\n case 2:\r\n ctx.translate(width, 0);\r\n ctx.scale(-1, 1);\r\n break;\r\n\r\n case 3:\r\n ctx.translate(width, height);\r\n ctx.rotate(180*Math.PI/180);\r\n break;\r\n\r\n case 4:\r\n ctx.translate(0, height);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 5:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.rotate(90*Math.PI/180);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 6:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.rotate(90*Math.PI/180);\r\n ctx.translate(0, -height);\r\n break;\r\n\r\n case 7:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.rotate(-90*Math.PI/180);\r\n ctx.translate(-width, height);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 8:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.translate(0, width);\r\n ctx.rotate(-90*Math.PI/180);\r\n break;\r\n }\r\n ctx.drawImage(img, 0,0, width, height);\r\n ctx.restore();\r\n }\r\n\r\n /* Private Methods */\r\n function _create() {\r\n var self = this,\r\n contClass = 'croppie-container',\r\n customViewportClass = self.options.viewport.type ? 'cr-vp-' + self.options.viewport.type : null,\r\n boundary, img, viewport, overlay, bw, bh;\r\n\r\n self.options.useCanvas = self.options.enableOrientation || _hasExif.call(self);\r\n // Properties on class\r\n self.data = {};\r\n self.elements = {};\r\n\r\n boundary = self.elements.boundary = document.createElement('div');\r\n viewport = self.elements.viewport = document.createElement('div');\r\n img = self.elements.img = document.createElement('img');\r\n overlay = self.elements.overlay = document.createElement('div');\r\n\r\n if (self.options.useCanvas) {\r\n self.elements.canvas = document.createElement('canvas');\r\n self.elements.preview = self.elements.canvas;\r\n }\r\n else {\r\n self.elements.preview = img;\r\n }\r\n\r\n addClass(boundary, 'cr-boundary');\r\n boundary.setAttribute('aria-dropeffect', 'none');\r\n bw = self.options.boundary.width;\r\n bh = self.options.boundary.height;\r\n css(boundary, {\r\n width: (bw + (isNaN(bw) ? '' : 'px')),\r\n height: (bh + (isNaN(bh) ? '' : 'px'))\r\n });\r\n\r\n addClass(viewport, 'cr-viewport');\r\n if (customViewportClass) {\r\n addClass(viewport, customViewportClass);\r\n }\r\n css(viewport, {\r\n width: self.options.viewport.width + 'px',\r\n height: self.options.viewport.height + 'px'\r\n });\r\n viewport.setAttribute('tabindex', 0);\r\n\r\n addClass(self.elements.preview, 'cr-image');\r\n setAttributes(self.elements.preview, { 'alt': 'preview', 'aria-grabbed': 'false' });\r\n addClass(overlay, 'cr-overlay');\r\n\r\n self.element.appendChild(boundary);\r\n boundary.appendChild(self.elements.preview);\r\n boundary.appendChild(viewport);\r\n boundary.appendChild(overlay);\r\n\r\n addClass(self.element, contClass);\r\n if (self.options.customClass) {\r\n addClass(self.element, self.options.customClass);\r\n }\r\n\r\n _initDraggable.call(this);\r\n\r\n if (self.options.enableZoom) {\r\n _initializeZoom.call(self);\r\n }\r\n\r\n // if (self.options.enableOrientation) {\r\n // _initRotationControls.call(self);\r\n // }\r\n\r\n if (self.options.enableResize) {\r\n _initializeResize.call(self);\r\n }\r\n }\r\n\r\n // function _initRotationControls () {\r\n // var self = this,\r\n // wrap, btnLeft, btnRight, iLeft, iRight;\r\n\r\n // wrap = document.createElement('div');\r\n // self.elements.orientationBtnLeft = btnLeft = document.createElement('button');\r\n // self.elements.orientationBtnRight = btnRight = document.createElement('button');\r\n\r\n // wrap.appendChild(btnLeft);\r\n // wrap.appendChild(btnRight);\r\n\r\n // iLeft = document.createElement('i');\r\n // iRight = document.createElement('i');\r\n // btnLeft.appendChild(iLeft);\r\n // btnRight.appendChild(iRight);\r\n\r\n // addClass(wrap, 'cr-rotate-controls');\r\n // addClass(btnLeft, 'cr-rotate-l');\r\n // addClass(btnRight, 'cr-rotate-r');\r\n\r\n // self.elements.boundary.appendChild(wrap);\r\n\r\n // btnLeft.addEventListener('click', function () {\r\n // self.rotate(-90);\r\n // });\r\n // btnRight.addEventListener('click', function () {\r\n // self.rotate(90);\r\n // });\r\n // }\r\n\r\n function _hasExif() {\r\n return this.options.enableExif && window.EXIF;\r\n }\r\n\r\n function _initializeResize () {\r\n var self = this;\r\n var wrap = document.createElement('div');\r\n var isDragging = false;\r\n var direction;\r\n var originalX;\r\n var originalY;\r\n var minSize = 50;\r\n var maxWidth;\r\n var maxHeight;\r\n var vr;\r\n var hr;\r\n\r\n addClass(wrap, 'cr-resizer');\r\n css(wrap, {\r\n width: this.options.viewport.width + 'px',\r\n height: this.options.viewport.height + 'px'\r\n });\r\n\r\n if (this.options.resizeControls.height) {\r\n vr = document.createElement('div');\r\n addClass(vr, 'cr-resizer-vertical');\r\n wrap.appendChild(vr);\r\n }\r\n\r\n if (this.options.resizeControls.width) {\r\n hr = document.createElement('div');\r\n addClass(hr, 'cr-resizer-horisontal');\r\n wrap.appendChild(hr);\r\n }\r\n\r\n function mouseDown(ev) {\r\n if (ev.button !== undefined && ev.button !== 0) return;\r\n\r\n ev.preventDefault();\r\n if (isDragging) {\r\n return;\r\n }\r\n\r\n var overlayRect = self.elements.overlay.getBoundingClientRect();\r\n\r\n isDragging = true;\r\n originalX = ev.pageX;\r\n originalY = ev.pageY;\r\n direction = ev.currentTarget.className.indexOf('vertical') !== -1 ? 'v' : 'h';\r\n maxWidth = overlayRect.width;\r\n maxHeight = overlayRect.height;\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n originalX = touches.pageX;\r\n originalY = touches.pageY;\r\n }\r\n\r\n window.addEventListener('mousemove', mouseMove);\r\n window.addEventListener('touchmove', mouseMove);\r\n window.addEventListener('mouseup', mouseUp);\r\n window.addEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = 'none';\r\n }\r\n\r\n function mouseMove(ev) {\r\n var pageX = ev.pageX;\r\n var pageY = ev.pageY;\r\n\r\n ev.preventDefault();\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n pageX = touches.pageX;\r\n pageY = touches.pageY;\r\n }\r\n\r\n var deltaX = pageX - originalX;\r\n var deltaY = pageY - originalY;\r\n var newHeight = self.options.viewport.height + deltaY;\r\n var newWidth = self.options.viewport.width + deltaX;\r\n\r\n if (direction === 'v' && newHeight >= minSize && newHeight <= maxHeight) {\r\n css(wrap, {\r\n height: newHeight + 'px'\r\n });\r\n\r\n self.options.boundary.height += deltaY;\r\n css(self.elements.boundary, {\r\n height: self.options.boundary.height + 'px'\r\n });\r\n\r\n self.options.viewport.height += deltaY;\r\n css(self.elements.viewport, {\r\n height: self.options.viewport.height + 'px'\r\n });\r\n }\r\n else if (direction === 'h' && newWidth >= minSize && newWidth <= maxWidth) {\r\n css(wrap, {\r\n width: newWidth + 'px'\r\n });\r\n\r\n self.options.boundary.width += deltaX;\r\n css(self.elements.boundary, {\r\n width: self.options.boundary.width + 'px'\r\n });\r\n\r\n self.options.viewport.width += deltaX;\r\n css(self.elements.viewport, {\r\n width: self.options.viewport.width + 'px'\r\n });\r\n }\r\n\r\n _updateOverlay.call(self);\r\n _updateZoomLimits.call(self);\r\n _updateCenterPoint.call(self);\r\n _triggerUpdate.call(self);\r\n originalY = pageY;\r\n originalX = pageX;\r\n }\r\n\r\n function mouseUp() {\r\n isDragging = false;\r\n window.removeEventListener('mousemove', mouseMove);\r\n window.removeEventListener('touchmove', mouseMove);\r\n window.removeEventListener('mouseup', mouseUp);\r\n window.removeEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = '';\r\n }\r\n\r\n if (vr) {\r\n vr.addEventListener('mousedown', mouseDown);\r\n vr.addEventListener('touchstart', mouseDown);\r\n }\r\n\r\n if (hr) {\r\n hr.addEventListener('mousedown', mouseDown);\r\n hr.addEventListener('touchstart', mouseDown);\r\n }\r\n\r\n this.elements.boundary.appendChild(wrap);\r\n }\r\n\r\n function _setZoomerVal(v) {\r\n if (this.options.enableZoom) {\r\n var z = this.elements.zoomer,\r\n val = fix(v, 4);\r\n\r\n z.value = Math.max(parseFloat(z.min), Math.min(parseFloat(z.max), val)).toString();\r\n }\r\n }\r\n\r\n function _initializeZoom() {\r\n var self = this,\r\n wrap = self.elements.zoomerWrap = document.createElement('div'),\r\n zoomer = self.elements.zoomer = document.createElement('input');\r\n\r\n addClass(wrap, 'cr-slider-wrap');\r\n addClass(zoomer, 'cr-slider');\r\n zoomer.type = 'range';\r\n zoomer.step = '0.0001';\r\n zoomer.value = '1';\r\n zoomer.style.display = self.options.showZoomer ? '' : 'none';\r\n zoomer.setAttribute('aria-label', 'zoom');\r\n\r\n self.element.appendChild(wrap);\r\n wrap.appendChild(zoomer);\r\n\r\n self._currentZoom = 1;\r\n\r\n function change() {\r\n _onZoom.call(self, {\r\n value: parseFloat(zoomer.value),\r\n origin: new TransformOrigin(self.elements.preview),\r\n viewportRect: self.elements.viewport.getBoundingClientRect(),\r\n transform: Transform.parse(self.elements.preview)\r\n });\r\n }\r\n\r\n function scroll(ev) {\r\n var delta, targetZoom;\r\n\r\n if(self.options.mouseWheelZoom === 'ctrl' && ev.ctrlKey !== true){\r\n return 0; \r\n } else if (ev.wheelDelta) {\r\n delta = ev.wheelDelta / 1200; //wheelDelta min: -120 max: 120 // max x 10 x 2\r\n } else if (ev.deltaY) {\r\n delta = ev.deltaY / 1060; //deltaY min: -53 max: 53 // max x 10 x 2\r\n } else if (ev.detail) {\r\n delta = ev.detail / -60; //delta min: -3 max: 3 // max x 10 x 2\r\n } else {\r\n delta = 0;\r\n }\r\n\r\n targetZoom = self._currentZoom + (delta * self._currentZoom);\r\n\r\n ev.preventDefault();\r\n _setZoomerVal.call(self, targetZoom);\r\n change.call(self);\r\n }\r\n\r\n self.elements.zoomer.addEventListener('input', change);// this is being fired twice on keypress\r\n self.elements.zoomer.addEventListener('change', change);\r\n\r\n if (self.options.mouseWheelZoom) {\r\n self.elements.boundary.addEventListener('mousewheel', scroll);\r\n self.elements.boundary.addEventListener('DOMMouseScroll', scroll);\r\n }\r\n }\r\n\r\n function _onZoom(ui) {\r\n var self = this,\r\n transform = ui ? ui.transform : Transform.parse(self.elements.preview),\r\n vpRect = ui ? ui.viewportRect : self.elements.viewport.getBoundingClientRect(),\r\n origin = ui ? ui.origin : new TransformOrigin(self.elements.preview);\r\n\r\n function applyCss() {\r\n var transCss = {};\r\n transCss[CSS_TRANSFORM] = transform.toString();\r\n transCss[CSS_TRANS_ORG] = origin.toString();\r\n css(self.elements.preview, transCss);\r\n }\r\n\r\n self._currentZoom = ui ? ui.value : self._currentZoom;\r\n transform.scale = self._currentZoom;\r\n self.elements.zoomer.setAttribute('aria-valuenow', self._currentZoom);\r\n applyCss();\r\n\r\n if (self.options.enforceBoundary) {\r\n var boundaries = _getVirtualBoundaries.call(self, vpRect),\r\n transBoundaries = boundaries.translate,\r\n oBoundaries = boundaries.origin;\r\n\r\n if (transform.x >= transBoundaries.maxX) {\r\n origin.x = oBoundaries.minX;\r\n transform.x = transBoundaries.maxX;\r\n }\r\n\r\n if (transform.x <= transBoundaries.minX) {\r\n origin.x = oBoundaries.maxX;\r\n transform.x = transBoundaries.minX;\r\n }\r\n\r\n if (transform.y >= transBoundaries.maxY) {\r\n origin.y = oBoundaries.minY;\r\n transform.y = transBoundaries.maxY;\r\n }\r\n\r\n if (transform.y <= transBoundaries.minY) {\r\n origin.y = oBoundaries.maxY;\r\n transform.y = transBoundaries.minY;\r\n }\r\n }\r\n applyCss();\r\n _debouncedOverlay.call(self);\r\n _triggerUpdate.call(self);\r\n }\r\n\r\n function _getVirtualBoundaries(viewport) {\r\n var self = this,\r\n scale = self._currentZoom,\r\n vpWidth = viewport.width,\r\n vpHeight = viewport.height,\r\n centerFromBoundaryX = self.elements.boundary.clientWidth / 2,\r\n centerFromBoundaryY = self.elements.boundary.clientHeight / 2,\r\n imgRect = self.elements.preview.getBoundingClientRect(),\r\n curImgWidth = imgRect.width,\r\n curImgHeight = imgRect.height,\r\n halfWidth = vpWidth / 2,\r\n halfHeight = vpHeight / 2;\r\n\r\n var maxX = ((halfWidth / scale) - centerFromBoundaryX) * -1;\r\n var minX = maxX - ((curImgWidth * (1 / scale)) - (vpWidth * (1 / scale)));\r\n\r\n var maxY = ((halfHeight / scale) - centerFromBoundaryY) * -1;\r\n var minY = maxY - ((curImgHeight * (1 / scale)) - (vpHeight * (1 / scale)));\r\n\r\n var originMinX = (1 / scale) * halfWidth;\r\n var originMaxX = (curImgWidth * (1 / scale)) - originMinX;\r\n\r\n var originMinY = (1 / scale) * halfHeight;\r\n var originMaxY = (curImgHeight * (1 / scale)) - originMinY;\r\n\r\n return {\r\n translate: {\r\n maxX: maxX,\r\n minX: minX,\r\n maxY: maxY,\r\n minY: minY\r\n },\r\n origin: {\r\n maxX: originMaxX,\r\n minX: originMinX,\r\n maxY: originMaxY,\r\n minY: originMinY\r\n }\r\n };\r\n }\r\n\r\n function _updateCenterPoint(rotate) {\r\n var self = this,\r\n scale = self._currentZoom,\r\n data = self.elements.preview.getBoundingClientRect(),\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n transform = Transform.parse(self.elements.preview.style[CSS_TRANSFORM]),\r\n pc = new TransformOrigin(self.elements.preview),\r\n top = (vpData.top - data.top) + (vpData.height / 2),\r\n left = (vpData.left - data.left) + (vpData.width / 2),\r\n center = {},\r\n adj = {};\r\n\r\n if (rotate) {\r\n var cx = pc.x;\r\n var cy = pc.y;\r\n var tx = transform.x;\r\n var ty = transform.y;\r\n\r\n center.y = cx;\r\n center.x = cy;\r\n transform.y = tx;\r\n transform.x = ty;\r\n }\r\n else {\r\n center.y = top / scale;\r\n center.x = left / scale;\r\n\r\n adj.y = (center.y - pc.y) * (1 - scale);\r\n adj.x = (center.x - pc.x) * (1 - scale);\r\n\r\n transform.x -= adj.x;\r\n transform.y -= adj.y;\r\n }\r\n\r\n var newCss = {};\r\n newCss[CSS_TRANS_ORG] = center.x + 'px ' + center.y + 'px';\r\n newCss[CSS_TRANSFORM] = transform.toString();\r\n css(self.elements.preview, newCss);\r\n }\r\n\r\n function _initDraggable() {\r\n var self = this,\r\n isDragging = false,\r\n originalX,\r\n originalY,\r\n originalDistance,\r\n vpRect,\r\n transform;\r\n\r\n function assignTransformCoordinates(deltaX, deltaY) {\r\n var imgRect = self.elements.preview.getBoundingClientRect(),\r\n top = transform.y + deltaY,\r\n left = transform.x + deltaX;\r\n\r\n if (self.options.enforceBoundary) {\r\n if (vpRect.top > imgRect.top + deltaY && vpRect.bottom < imgRect.bottom + deltaY) {\r\n transform.y = top;\r\n }\r\n\r\n if (vpRect.left > imgRect.left + deltaX && vpRect.right < imgRect.right + deltaX) {\r\n transform.x = left;\r\n }\r\n }\r\n else {\r\n transform.y = top;\r\n transform.x = left;\r\n }\r\n }\r\n\r\n function toggleGrabState(isDragging) {\r\n self.elements.preview.setAttribute('aria-grabbed', isDragging);\r\n self.elements.boundary.setAttribute('aria-dropeffect', isDragging? 'move': 'none');\r\n }\r\n\r\n function keyDown(ev) {\r\n var LEFT_ARROW = 37,\r\n UP_ARROW = 38,\r\n RIGHT_ARROW = 39,\r\n DOWN_ARROW = 40;\r\n\r\n if (ev.shiftKey && (ev.keyCode === UP_ARROW || ev.keyCode === DOWN_ARROW)) {\r\n var zoom;\r\n if (ev.keyCode === UP_ARROW) {\r\n zoom = parseFloat(self.elements.zoomer.value) + parseFloat(self.elements.zoomer.step)\r\n }\r\n else {\r\n zoom = parseFloat(self.elements.zoomer.value) - parseFloat(self.elements.zoomer.step)\r\n }\r\n self.setZoom(zoom);\r\n }\r\n else if (self.options.enableKeyMovement && (ev.keyCode >= 37 && ev.keyCode <= 40)) {\r\n ev.preventDefault();\r\n var movement = parseKeyDown(ev.keyCode);\r\n\r\n transform = Transform.parse(self.elements.preview);\r\n document.body.style[CSS_USERSELECT] = 'none';\r\n vpRect = self.elements.viewport.getBoundingClientRect();\r\n keyMove(movement);\r\n }\r\n\r\n function parseKeyDown(key) {\r\n switch (key) {\r\n case LEFT_ARROW:\r\n return [1, 0];\r\n case UP_ARROW:\r\n return [0, 1];\r\n case RIGHT_ARROW:\r\n return [-1, 0];\r\n case DOWN_ARROW:\r\n return [0, -1];\r\n }\r\n }\r\n }\r\n\r\n function keyMove(movement) {\r\n var deltaX = movement[0],\r\n deltaY = movement[1],\r\n newCss = {};\r\n\r\n assignTransformCoordinates(deltaX, deltaY);\r\n\r\n newCss[CSS_TRANSFORM] = transform.toString();\r\n css(self.elements.preview, newCss);\r\n _updateOverlay.call(self);\r\n document.body.style[CSS_USERSELECT] = '';\r\n _updateCenterPoint.call(self);\r\n _triggerUpdate.call(self);\r\n originalDistance = 0;\r\n }\r\n\r\n function mouseDown(ev) {\r\n if (ev.button !== undefined && ev.button !== 0) return;\r\n\r\n ev.preventDefault();\r\n if (isDragging) return;\r\n isDragging = true;\r\n originalX = ev.pageX;\r\n originalY = ev.pageY;\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n originalX = touches.pageX;\r\n originalY = touches.pageY;\r\n }\r\n toggleGrabState(isDragging);\r\n transform = Transform.parse(self.elements.preview);\r\n window.addEventListener('mousemove', mouseMove);\r\n window.addEventListener('touchmove', mouseMove);\r\n window.addEventListener('mouseup', mouseUp);\r\n window.addEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = 'none';\r\n vpRect = self.elements.viewport.getBoundingClientRect();\r\n }\r\n\r\n function mouseMove(ev) {\r\n ev.preventDefault();\r\n var pageX = ev.pageX,\r\n pageY = ev.pageY;\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n pageX = touches.pageX;\r\n pageY = touches.pageY;\r\n }\r\n\r\n var deltaX = pageX - originalX,\r\n deltaY = pageY - originalY,\r\n newCss = {};\r\n\r\n if (ev.type === 'touchmove') {\r\n if (ev.touches.length > 1) {\r\n var touch1 = ev.touches[0];\r\n var touch2 = ev.touches[1];\r\n var dist = Math.sqrt((touch1.pageX - touch2.pageX) * (touch1.pageX - touch2.pageX) + (touch1.pageY - touch2.pageY) * (touch1.pageY - touch2.pageY));\r\n\r\n if (!originalDistance) {\r\n originalDistance = dist / self._currentZoom;\r\n }\r\n\r\n var scale = dist / originalDistance;\r\n\r\n _setZoomerVal.call(self, scale);\r\n dispatchChange(self.elements.zoomer);\r\n return;\r\n }\r\n }\r\n\r\n assignTransformCoordinates(deltaX, deltaY);\r\n\r\n newCss[CSS_TRANSFORM] = transform.toString();\r\n css(self.elements.preview, newCss);\r\n _updateOverlay.call(self);\r\n originalY = pageY;\r\n originalX = pageX;\r\n }\r\n\r\n function mouseUp() {\r\n isDragging = false;\r\n toggleGrabState(isDragging);\r\n window.removeEventListener('mousemove', mouseMove);\r\n window.removeEventListener('touchmove', mouseMove);\r\n window.removeEventListener('mouseup', mouseUp);\r\n window.removeEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = '';\r\n _updateCenterPoint.call(self);\r\n _triggerUpdate.call(self);\r\n originalDistance = 0;\r\n }\r\n\r\n self.elements.overlay.addEventListener('mousedown', mouseDown);\r\n self.elements.viewport.addEventListener('keydown', keyDown);\r\n self.elements.overlay.addEventListener('touchstart', mouseDown);\r\n }\r\n\r\n function _updateOverlay() {\r\n if (!this.elements) return; // since this is debounced, it can be fired after destroy\r\n var self = this,\r\n boundRect = self.elements.boundary.getBoundingClientRect(),\r\n imgData = self.elements.preview.getBoundingClientRect();\r\n\r\n css(self.elements.overlay, {\r\n width: imgData.width + 'px',\r\n height: imgData.height + 'px',\r\n top: (imgData.top - boundRect.top) + 'px',\r\n left: (imgData.left - boundRect.left) + 'px'\r\n });\r\n }\r\n var _debouncedOverlay = debounce(_updateOverlay, 500);\r\n\r\n function _triggerUpdate() {\r\n var self = this,\r\n data = self.get();\r\n\r\n if (!_isVisible.call(self)) {\r\n return;\r\n }\r\n\r\n self.options.update.call(self, data);\r\n if (self.$ && typeof Prototype === 'undefined') {\r\n self.$(self.element).trigger('update.croppie', data);\r\n }\r\n else {\r\n var ev;\r\n if (window.CustomEvent) {\r\n ev = new CustomEvent('update', { detail: data });\r\n } else {\r\n ev = document.createEvent('CustomEvent');\r\n ev.initCustomEvent('update', true, true, data);\r\n }\r\n\r\n self.element.dispatchEvent(ev);\r\n }\r\n }\r\n\r\n function _isVisible() {\r\n return this.elements.preview.offsetHeight > 0 && this.elements.preview.offsetWidth > 0;\r\n }\r\n\r\n function _updatePropertiesFromImage() {\r\n var self = this,\r\n initialZoom = 1,\r\n cssReset = {},\r\n img = self.elements.preview,\r\n imgData,\r\n transformReset = new Transform(0, 0, initialZoom),\r\n originReset = new TransformOrigin(),\r\n isVisible = _isVisible.call(self);\r\n\r\n if (!isVisible || self.data.bound) {// if the croppie isn't visible or it doesn't need binding\r\n return;\r\n }\r\n\r\n self.data.bound = true;\r\n cssReset[CSS_TRANSFORM] = transformReset.toString();\r\n cssReset[CSS_TRANS_ORG] = originReset.toString();\r\n cssReset['opacity'] = 1;\r\n css(img, cssReset);\r\n\r\n imgData = self.elements.preview.getBoundingClientRect();\r\n\r\n self._originalImageWidth = imgData.width;\r\n self._originalImageHeight = imgData.height;\r\n self.data.orientation = getExifOrientation(self.elements.img);\r\n\r\n if (self.options.enableZoom) {\r\n _updateZoomLimits.call(self, true);\r\n }\r\n else {\r\n self._currentZoom = initialZoom;\r\n }\r\n\r\n transformReset.scale = self._currentZoom;\r\n cssReset[CSS_TRANSFORM] = transformReset.toString();\r\n css(img, cssReset);\r\n\r\n if (self.data.points.length) {\r\n _bindPoints.call(self, self.data.points);\r\n }\r\n else {\r\n _centerImage.call(self);\r\n }\r\n\r\n _updateCenterPoint.call(self);\r\n _updateOverlay.call(self);\r\n }\r\n\r\n function _updateZoomLimits (initial) {\r\n var self = this,\r\n minZoom = Math.max(self.options.minZoom, 0) || 0,\r\n maxZoom = self.options.maxZoom || 1.5,\r\n initialZoom,\r\n defaultInitialZoom,\r\n zoomer = self.elements.zoomer,\r\n scale = parseFloat(zoomer.value),\r\n boundaryData = self.elements.boundary.getBoundingClientRect(),\r\n imgData = naturalImageDimensions(self.elements.img, self.data.orientation),\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n minW,\r\n minH;\r\n if (self.options.enforceBoundary) {\r\n minW = vpData.width / imgData.width;\r\n minH = vpData.height / imgData.height;\r\n minZoom = Math.max(minW, minH);\r\n }\r\n\r\n if (minZoom >= maxZoom) {\r\n maxZoom = minZoom + 1;\r\n }\r\n\r\n zoomer.min = fix(minZoom, 4);\r\n zoomer.max = fix(maxZoom, 4);\r\n \r\n if (!initial && (scale < zoomer.min || scale > zoomer.max)) {\r\n _setZoomerVal.call(self, scale < zoomer.min ? zoomer.min : zoomer.max);\r\n }\r\n else if (initial) {\r\n defaultInitialZoom = Math.max((boundaryData.width / imgData.width), (boundaryData.height / imgData.height));\r\n initialZoom = self.data.boundZoom !== null ? self.data.boundZoom : defaultInitialZoom;\r\n _setZoomerVal.call(self, initialZoom);\r\n }\r\n\r\n dispatchChange(zoomer);\r\n }\r\n\r\n function _bindPoints(points) {\r\n if (points.length !== 4) {\r\n throw \"Croppie - Invalid number of points supplied: \" + points;\r\n }\r\n var self = this,\r\n pointsWidth = points[2] - points[0],\r\n // pointsHeight = points[3] - points[1],\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n boundRect = self.elements.boundary.getBoundingClientRect(),\r\n vpOffset = {\r\n left: vpData.left - boundRect.left,\r\n top: vpData.top - boundRect.top\r\n },\r\n scale = vpData.width / pointsWidth,\r\n originTop = points[1],\r\n originLeft = points[0],\r\n transformTop = (-1 * points[1]) + vpOffset.top,\r\n transformLeft = (-1 * points[0]) + vpOffset.left,\r\n newCss = {};\r\n\r\n newCss[CSS_TRANS_ORG] = originLeft + 'px ' + originTop + 'px';\r\n newCss[CSS_TRANSFORM] = new Transform(transformLeft, transformTop, scale).toString();\r\n css(self.elements.preview, newCss);\r\n\r\n _setZoomerVal.call(self, scale);\r\n self._currentZoom = scale;\r\n }\r\n\r\n function _centerImage() {\r\n var self = this,\r\n imgDim = self.elements.preview.getBoundingClientRect(),\r\n vpDim = self.elements.viewport.getBoundingClientRect(),\r\n boundDim = self.elements.boundary.getBoundingClientRect(),\r\n vpLeft = vpDim.left - boundDim.left,\r\n vpTop = vpDim.top - boundDim.top,\r\n w = vpLeft - ((imgDim.width - vpDim.width) / 2),\r\n h = vpTop - ((imgDim.height - vpDim.height) / 2),\r\n transform = new Transform(w, h, self._currentZoom);\r\n\r\n css(self.elements.preview, CSS_TRANSFORM, transform.toString());\r\n }\r\n\r\n function _transferImageToCanvas(customOrientation) {\r\n var self = this,\r\n canvas = self.elements.canvas,\r\n img = self.elements.img,\r\n ctx = canvas.getContext('2d');\r\n\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n\r\n var orientation = self.options.enableOrientation && customOrientation || getExifOrientation(img);\r\n drawCanvas(canvas, img, orientation);\r\n }\r\n\r\n function _getCanvas(data) {\r\n var self = this,\r\n points = data.points,\r\n left = num(points[0]),\r\n top = num(points[1]),\r\n right = num(points[2]),\r\n bottom = num(points[3]),\r\n width = right-left,\r\n height = bottom-top,\r\n circle = data.circle,\r\n canvas = document.createElement('canvas'),\r\n ctx = canvas.getContext('2d'),\r\n startX = 0,\r\n startY = 0,\r\n canvasWidth = data.outputWidth || width,\r\n canvasHeight = data.outputHeight || height;\r\n\r\n canvas.width = canvasWidth;\r\n canvas.height = canvasHeight;\r\n\r\n if (data.backgroundColor) {\r\n ctx.fillStyle = data.backgroundColor;\r\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\r\n }\r\n\r\n // By default assume we're going to draw the entire\r\n // source image onto the destination canvas.\r\n var sx = left,\r\n sy = top,\r\n sWidth = width,\r\n sHeight = height,\r\n dx = 0,\r\n dy = 0,\r\n dWidth = canvasWidth,\r\n dHeight = canvasHeight;\r\n\r\n //\r\n // Do not go outside of the original image's bounds along the x-axis.\r\n // Handle translations when projecting onto the destination canvas.\r\n //\r\n\r\n // The smallest possible source x-position is 0.\r\n if (left < 0) {\r\n sx = 0;\r\n dx = (Math.abs(left) / width) * canvasWidth;\r\n }\r\n\r\n // The largest possible source width is the original image's width.\r\n if (sWidth + sx > self._originalImageWidth) {\r\n sWidth = self._originalImageWidth - sx;\r\n dWidth = (sWidth / width) * canvasWidth;\r\n }\r\n\r\n //\r\n // Do not go outside of the original image's bounds along the y-axis.\r\n //\r\n\r\n // The smallest possible source y-position is 0.\r\n if (top < 0) {\r\n sy = 0;\r\n dy = (Math.abs(top) / height) * canvasHeight;\r\n }\r\n\r\n // The largest possible source height is the original image's height.\r\n if (sHeight + sy > self._originalImageHeight) {\r\n sHeight = self._originalImageHeight - sy;\r\n dHeight = (sHeight / height) * canvasHeight;\r\n }\r\n\r\n // console.table({ left, right, top, bottom, canvasWidth, canvasHeight, width, height, startX, startY, circle, sx, sy, dx, dy, sWidth, sHeight, dWidth, dHeight });\r\n\r\n ctx.drawImage(this.elements.preview, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\r\n if (circle) {\r\n ctx.fillStyle = '#fff';\r\n ctx.globalCompositeOperation = 'destination-in';\r\n ctx.beginPath();\r\n ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2, true);\r\n ctx.closePath();\r\n ctx.fill();\r\n }\r\n return canvas;\r\n }\r\n\r\n function _getHtmlResult(data) {\r\n var points = data.points,\r\n div = document.createElement('div'),\r\n img = document.createElement('img'),\r\n width = points[2] - points[0],\r\n height = points[3] - points[1];\r\n\r\n addClass(div, 'croppie-result');\r\n div.appendChild(img);\r\n css(img, {\r\n left: (-1 * points[0]) + 'px',\r\n top: (-1 * points[1]) + 'px'\r\n });\r\n img.src = data.url;\r\n css(div, {\r\n width: width + 'px',\r\n height: height + 'px'\r\n });\r\n\r\n return div;\r\n }\r\n\r\n function _getBase64Result(data) {\r\n return _getCanvas.call(this, data).toDataURL(data.format, data.quality);\r\n }\r\n\r\n function _getBlobResult(data) {\r\n var self = this;\r\n return new Promise(function (resolve) {\r\n _getCanvas.call(self, data).toBlob(function (blob) {\r\n resolve(blob);\r\n }, data.format, data.quality);\r\n });\r\n }\r\n\r\n function _replaceImage(img) {\r\n if (this.elements.img.parentNode) {\r\n Array.prototype.forEach.call(this.elements.img.classList, function(c) { img.classList.add(c); });\r\n this.elements.img.parentNode.replaceChild(img, this.elements.img);\r\n this.elements.preview = img; // if the img is attached to the DOM, they're not using the canvas\r\n }\r\n this.elements.img = img;\r\n }\r\n\r\n function _bind(options, cb) {\r\n var self = this,\r\n url,\r\n points = [],\r\n zoom = null,\r\n hasExif = _hasExif.call(self);\r\n\r\n if (typeof (options) === 'string') {\r\n url = options;\r\n options = {};\r\n }\r\n else if (Array.isArray(options)) {\r\n points = options.slice();\r\n }\r\n else if (typeof (options) === 'undefined' && self.data.url) { //refreshing\r\n _updatePropertiesFromImage.call(self);\r\n _triggerUpdate.call(self);\r\n return null;\r\n }\r\n else {\r\n url = options.url;\r\n points = options.points || [];\r\n zoom = typeof(options.zoom) === 'undefined' ? null : options.zoom;\r\n }\r\n\r\n self.data.bound = false;\r\n self.data.url = url || self.data.url;\r\n self.data.boundZoom = zoom;\r\n\r\n return loadImage(url, hasExif).then(function (img) {\r\n _replaceImage.call(self, img);\r\n if (!points.length) {\r\n var natDim = naturalImageDimensions(img);\r\n var rect = self.elements.viewport.getBoundingClientRect();\r\n var aspectRatio = rect.width / rect.height;\r\n var imgAspectRatio = natDim.width / natDim.height;\r\n var width, height;\r\n\r\n if (imgAspectRatio > aspectRatio) {\r\n height = natDim.height;\r\n width = height * aspectRatio;\r\n }\r\n else {\r\n width = natDim.width;\r\n height = natDim.height / aspectRatio;\r\n }\r\n\r\n var x0 = (natDim.width - width) / 2;\r\n var y0 = (natDim.height - height) / 2;\r\n var x1 = x0 + width;\r\n var y1 = y0 + height;\r\n self.data.points = [x0, y0, x1, y1];\r\n }\r\n else if (self.options.relative) {\r\n points = [\r\n points[0] * img.naturalWidth / 100,\r\n points[1] * img.naturalHeight / 100,\r\n points[2] * img.naturalWidth / 100,\r\n points[3] * img.naturalHeight / 100\r\n ];\r\n }\r\n\r\n self.data.points = points.map(function (p) {\r\n return parseFloat(p);\r\n });\r\n if (self.options.useCanvas) {\r\n _transferImageToCanvas.call(self, options.orientation);\r\n }\r\n _updatePropertiesFromImage.call(self);\r\n _triggerUpdate.call(self);\r\n cb && cb();\r\n });\r\n }\r\n\r\n function fix(v, decimalPoints) {\r\n return parseFloat(v).toFixed(decimalPoints || 0);\r\n }\r\n\r\n function _get() {\r\n var self = this,\r\n imgData = self.elements.preview.getBoundingClientRect(),\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n x1 = vpData.left - imgData.left,\r\n y1 = vpData.top - imgData.top,\r\n widthDiff = (vpData.width - self.elements.viewport.offsetWidth) / 2, //border\r\n heightDiff = (vpData.height - self.elements.viewport.offsetHeight) / 2,\r\n x2 = x1 + self.elements.viewport.offsetWidth + widthDiff,\r\n y2 = y1 + self.elements.viewport.offsetHeight + heightDiff,\r\n scale = self._currentZoom;\r\n\r\n if (scale === Infinity || isNaN(scale)) {\r\n scale = 1;\r\n }\r\n\r\n var max = self.options.enforceBoundary ? 0 : Number.NEGATIVE_INFINITY;\r\n x1 = Math.max(max, x1 / scale);\r\n y1 = Math.max(max, y1 / scale);\r\n x2 = Math.max(max, x2 / scale);\r\n y2 = Math.max(max, y2 / scale);\r\n\r\n return {\r\n points: [fix(x1), fix(y1), fix(x2), fix(y2)],\r\n zoom: scale,\r\n orientation: self.data.orientation\r\n };\r\n }\r\n\r\n var RESULT_DEFAULTS = {\r\n type: 'canvas',\r\n format: 'png',\r\n quality: 1\r\n },\r\n RESULT_FORMATS = ['jpeg', 'webp', 'png'];\r\n\r\n function _result(options) {\r\n var self = this,\r\n data = _get.call(self),\r\n opts = deepExtend(clone(RESULT_DEFAULTS), clone(options)),\r\n resultType = (typeof (options) === 'string' ? options : (opts.type || 'base64')),\r\n size = opts.size || 'viewport',\r\n format = opts.format,\r\n quality = opts.quality,\r\n backgroundColor = opts.backgroundColor,\r\n circle = typeof opts.circle === 'boolean' ? opts.circle : (self.options.viewport.type === 'circle'),\r\n vpRect = self.elements.viewport.getBoundingClientRect(),\r\n ratio = vpRect.width / vpRect.height,\r\n prom;\r\n\r\n if (size === 'viewport') {\r\n data.outputWidth = vpRect.width;\r\n data.outputHeight = vpRect.height;\r\n } else if (typeof size === 'object') {\r\n if (size.width && size.height) {\r\n data.outputWidth = size.width;\r\n data.outputHeight = size.height;\r\n } else if (size.width) {\r\n data.outputWidth = size.width;\r\n data.outputHeight = size.width / ratio;\r\n } else if (size.height) {\r\n data.outputWidth = size.height * ratio;\r\n data.outputHeight = size.height;\r\n }\r\n }\r\n\r\n if (RESULT_FORMATS.indexOf(format) > -1) {\r\n data.format = 'image/' + format;\r\n data.quality = quality;\r\n }\r\n\r\n data.circle = circle;\r\n data.url = self.data.url;\r\n data.backgroundColor = backgroundColor;\r\n\r\n prom = new Promise(function (resolve) {\r\n switch(resultType.toLowerCase())\r\n {\r\n case 'rawcanvas':\r\n resolve(_getCanvas.call(self, data));\r\n break;\r\n case 'canvas':\r\n case 'base64':\r\n resolve(_getBase64Result.call(self, data));\r\n break;\r\n case 'blob':\r\n _getBlobResult.call(self, data).then(resolve);\r\n break;\r\n default:\r\n resolve(_getHtmlResult.call(self, data));\r\n break;\r\n }\r\n });\r\n return prom;\r\n }\r\n\r\n function _refresh() {\r\n _updatePropertiesFromImage.call(this);\r\n }\r\n\r\n function _rotate(deg) {\r\n if (!this.options.useCanvas || !this.options.enableOrientation) {\r\n throw 'Croppie: Cannot rotate without enableOrientation && EXIF.js included';\r\n }\r\n\r\n var self = this,\r\n canvas = self.elements.canvas;\r\n\r\n self.data.orientation = getExifOffset(self.data.orientation, deg);\r\n drawCanvas(canvas, self.elements.img, self.data.orientation);\r\n _updateCenterPoint.call(self, true);\r\n _updateZoomLimits.call(self);\r\n }\r\n\r\n function _destroy() {\r\n var self = this;\r\n self.element.removeChild(self.elements.boundary);\r\n removeClass(self.element, 'croppie-container');\r\n if (self.options.enableZoom) {\r\n self.element.removeChild(self.elements.zoomerWrap);\r\n }\r\n delete self.elements;\r\n }\r\n\r\n if (window.jQuery) {\r\n var $ = window.jQuery;\r\n $.fn.croppie = function (opts) {\r\n var ot = typeof opts;\r\n\r\n if (ot === 'string') {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n var singleInst = $(this).data('croppie');\r\n\r\n if (opts === 'get') {\r\n return singleInst.get();\r\n }\r\n else if (opts === 'result') {\r\n return singleInst.result.apply(singleInst, args);\r\n }\r\n else if (opts === 'bind') {\r\n return singleInst.bind.apply(singleInst, args);\r\n }\r\n\r\n return this.each(function () {\r\n var i = $(this).data('croppie');\r\n if (!i) return;\r\n\r\n var method = i[opts];\r\n if ($.isFunction(method)) {\r\n method.apply(i, args);\r\n if (opts === 'destroy') {\r\n $(this).removeData('croppie');\r\n }\r\n }\r\n else {\r\n throw 'Croppie ' + opts + ' method not found';\r\n }\r\n });\r\n }\r\n else {\r\n return this.each(function () {\r\n var i = new Croppie(this, opts);\r\n i.$ = $;\r\n $(this).data('croppie', i);\r\n });\r\n }\r\n };\r\n }\r\n\r\n function Croppie(element, opts) {\r\n if (element.className.indexOf('croppie-container') > -1) {\r\n throw new Error(\"Croppie: Can't initialize croppie more than once\");\r\n }\r\n this.element = element;\r\n this.options = deepExtend(clone(Croppie.defaults), opts);\r\n\r\n if (this.element.tagName.toLowerCase() === 'img') {\r\n var origImage = this.element;\r\n addClass(origImage, 'cr-original-image');\r\n setAttributes(origImage, {'aria-hidden' : 'true', 'alt' : '' });\r\n var replacementDiv = document.createElement('div');\r\n this.element.parentNode.appendChild(replacementDiv);\r\n replacementDiv.appendChild(origImage);\r\n this.element = replacementDiv;\r\n this.options.url = this.options.url || origImage.src;\r\n }\r\n\r\n _create.call(this);\r\n if (this.options.url) {\r\n var bindOpts = {\r\n url: this.options.url,\r\n points: this.options.points\r\n };\r\n delete this.options['url'];\r\n delete this.options['points'];\r\n _bind.call(this, bindOpts);\r\n }\r\n }\r\n\r\n Croppie.defaults = {\r\n viewport: {\r\n width: 100,\r\n height: 100,\r\n type: 'square'\r\n },\r\n boundary: { },\r\n orientationControls: {\r\n enabled: true,\r\n leftClass: '',\r\n rightClass: ''\r\n },\r\n resizeControls: {\r\n width: true,\r\n height: true\r\n },\r\n customClass: '',\r\n showZoomer: true,\r\n enableZoom: true,\r\n enableResize: false,\r\n mouseWheelZoom: true,\r\n enableExif: false,\r\n enforceBoundary: true,\r\n enableOrientation: false,\r\n enableKeyMovement: true,\r\n update: function () { }\r\n };\r\n\r\n Croppie.globals = {\r\n translate: 'translate3d'\r\n };\r\n\r\n deepExtend(Croppie.prototype, {\r\n bind: function (options, cb) {\r\n return _bind.call(this, options, cb);\r\n },\r\n get: function () {\r\n var data = _get.call(this);\r\n var points = data.points;\r\n if (this.options.relative) {\r\n points[0] /= this.elements.img.naturalWidth / 100;\r\n points[1] /= this.elements.img.naturalHeight / 100;\r\n points[2] /= this.elements.img.naturalWidth / 100;\r\n points[3] /= this.elements.img.naturalHeight / 100;\r\n }\r\n return data;\r\n },\r\n result: function (type) {\r\n return _result.call(this, type);\r\n },\r\n refresh: function () {\r\n return _refresh.call(this);\r\n },\r\n setZoom: function (v) {\r\n _setZoomerVal.call(this, v);\r\n dispatchChange(this.elements.zoomer);\r\n },\r\n rotate: function (deg) {\r\n _rotate.call(this, deg);\r\n },\r\n destroy: function () {\r\n return _destroy.call(this);\r\n }\r\n });\r\n return Croppie;\r\n}));\r\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.dayjs=e()}(this,function(){\"use strict\";var t=\"millisecond\",e=\"second\",n=\"minute\",r=\"hour\",i=\"day\",s=\"week\",u=\"month\",o=\"quarter\",a=\"year\",h=/^(\\d{4})-?(\\d{1,2})-?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?.?(\\d{1,3})?$/,f=/\\[([^\\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},d={s:c,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+c(r,2,\"0\")+\":\"+c(i,2,\"0\")},m:function(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,u),i=e-r<0,s=t.clone().add(n+(i?-1:1),u);return Number(-(n+(e-r)/(i?r-s:s-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:a,w:s,d:i,D:\"date\",h:r,m:n,s:e,ms:t,Q:o}[h]||String(h||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},$={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},l=\"en\",m={};m[l]=$;var y=function(t){return t instanceof v},M=function(t,e,n){var r;if(!t)return l;if(\"string\"==typeof t)m[t]&&(r=t),e&&(m[t]=e,r=t);else{var i=t.name;m[i]=t,r=i}return!n&&r&&(l=r),r||!n&&l},g=function(t,e){if(y(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new v(n)},D=d;D.l=M,D.i=y,D.w=function(t,e){return g(t,{locale:e.$L,utc:e.$u,$offset:e.$offset})};var v=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0),this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(D.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(h);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(e)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!(\"Invalid Date\"===this.$d.toString())},d.isSame=function(t,e){var n=g(t);return this.startOf(e)<=n&&n<=this.endOf(e)},d.isAfter=function(t,e){return g(t)>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]\n var o = [0, 0, 0, 0]\n o[3] += m[3] + n[3]\n o[2] += o[3] >>> 16\n o[3] &= 0xffff\n o[2] += m[2] + n[2]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[1] += m[1] + n[1]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[0] += m[0] + n[0]\n o[0] &= 0xffff\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]\n }\n\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // multiplied together as a 64bit int (as an array of two 32bit ints).\n //\n var x64Multiply = function (m, n) {\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]\n var o = [0, 0, 0, 0]\n o[3] += m[3] * n[3]\n o[2] += o[3] >>> 16\n o[3] &= 0xffff\n o[2] += m[2] * n[3]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[2] += m[3] * n[2]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[1] += m[1] * n[3]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[1] += m[2] * n[2]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[1] += m[3] * n[1]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0])\n o[0] &= 0xffff\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]\n }\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) rotated left by that number of positions.\n //\n var x64Rotl = function (m, n) {\n n %= 64\n if (n === 32) {\n return [m[1], m[0]]\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))]\n } else {\n n -= 32\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))]\n }\n }\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) shifted left by that number of positions.\n //\n var x64LeftShift = function (m, n) {\n n %= 64\n if (n === 0) {\n return m\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n]\n } else {\n return [m[1] << (n - 32), 0]\n }\n }\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // xored together as a 64bit int (as an array of two 32bit ints).\n //\n var x64Xor = function (m, n) {\n return [m[0] ^ n[0], m[1] ^ n[1]]\n }\n //\n // Given a block, returns murmurHash3's final x64 mix of that block.\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n // only place where we need to right shift 64bit ints.)\n //\n var x64Fmix = function (h) {\n h = x64Xor(h, [0, h[0] >>> 1])\n h = x64Multiply(h, [0xff51afd7, 0xed558ccd])\n h = x64Xor(h, [0, h[0] >>> 1])\n h = x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53])\n h = x64Xor(h, [0, h[0] >>> 1])\n return h\n }\n\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n //\n var x64hash128 = function (key, seed) {\n key = key || ''\n seed = seed || 0\n var remainder = key.length % 16\n var bytes = key.length - remainder\n var h1 = [0, seed]\n var h2 = [0, seed]\n var k1 = [0, 0]\n var k2 = [0, 0]\n var c1 = [0x87c37b91, 0x114253d5]\n var c2 = [0x4cf5ad43, 0x2745937f]\n for (var i = 0; i < bytes; i = i + 16) {\n k1 = [((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24), ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24)]\n k2 = [((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24), ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24)]\n k1 = x64Multiply(k1, c1)\n k1 = x64Rotl(k1, 31)\n k1 = x64Multiply(k1, c2)\n h1 = x64Xor(h1, k1)\n h1 = x64Rotl(h1, 27)\n h1 = x64Add(h1, h2)\n h1 = x64Add(x64Multiply(h1, [0, 5]), [0, 0x52dce729])\n k2 = x64Multiply(k2, c2)\n k2 = x64Rotl(k2, 33)\n k2 = x64Multiply(k2, c1)\n h2 = x64Xor(h2, k2)\n h2 = x64Rotl(h2, 31)\n h2 = x64Add(h2, h1)\n h2 = x64Add(x64Multiply(h2, [0, 5]), [0, 0x38495ab5])\n }\n k1 = [0, 0]\n k2 = [0, 0]\n switch (remainder) {\n case 15:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 14)], 48))\n // fallthrough\n case 14:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 13)], 40))\n // fallthrough\n case 13:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 12)], 32))\n // fallthrough\n case 12:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 11)], 24))\n // fallthrough\n case 11:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 10)], 16))\n // fallthrough\n case 10:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 9)], 8))\n // fallthrough\n case 9:\n k2 = x64Xor(k2, [0, key.charCodeAt(i + 8)])\n k2 = x64Multiply(k2, c2)\n k2 = x64Rotl(k2, 33)\n k2 = x64Multiply(k2, c1)\n h2 = x64Xor(h2, k2)\n // fallthrough\n case 8:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 7)], 56))\n // fallthrough\n case 7:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 6)], 48))\n // fallthrough\n case 6:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 5)], 40))\n // fallthrough\n case 5:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 4)], 32))\n // fallthrough\n case 4:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 3)], 24))\n // fallthrough\n case 3:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 2)], 16))\n // fallthrough\n case 2:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 1)], 8))\n // fallthrough\n case 1:\n k1 = x64Xor(k1, [0, key.charCodeAt(i)])\n k1 = x64Multiply(k1, c1)\n k1 = x64Rotl(k1, 31)\n k1 = x64Multiply(k1, c2)\n h1 = x64Xor(h1, k1)\n // fallthrough\n }\n h1 = x64Xor(h1, [0, key.length])\n h2 = x64Xor(h2, [0, key.length])\n h1 = x64Add(h1, h2)\n h2 = x64Add(h2, h1)\n h1 = x64Fmix(h1)\n h2 = x64Fmix(h2)\n h1 = x64Add(h1, h2)\n h2 = x64Add(h2, h1)\n return ('00000000' + (h1[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h1[1] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[1] >>> 0).toString(16)).slice(-8)\n }\n\n var defaultOptions = {\n preprocessor: null,\n audio: {\n timeout: 1000,\n // On iOS 11, audio context can only be used in response to user interaction.\n // We require users to explicitly enable audio fingerprinting on iOS 11.\n // See https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n excludeIOS11: true\n },\n fonts: {\n swfContainerId: 'fingerprintjs2',\n swfPath: 'flash/compiled/FontList.swf',\n userDefinedFonts: [],\n extendedJsFonts: false\n },\n screen: {\n // To ensure consistent fingerprints when users rotate their mobile devices\n detectScreenOrientation: true\n },\n plugins: {\n sortPluginsFor: [/palemoon/i],\n excludeIE: false\n },\n extraComponents: [],\n excludes: {\n // Unreliable on Windows, see https://github.com/Valve/fingerprintjs2/issues/375\n 'enumerateDevices': true,\n // devicePixelRatio depends on browser zoom, and it's impossible to detect browser zoom\n 'pixelRatio': true,\n // DNT depends on incognito mode for some browsers (Chrome) and it's impossible to detect incognito mode\n 'doNotTrack': true,\n // uses js fonts already\n 'fontsFlash': true\n },\n NOT_AVAILABLE: 'not available',\n ERROR: 'error',\n EXCLUDED: 'excluded'\n }\n\n var each = function (obj, iterator) {\n if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) {\n obj.forEach(iterator)\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n iterator(obj[i], i, obj)\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator(obj[key], key, obj)\n }\n }\n }\n }\n\n var map = function (obj, iterator) {\n var results = []\n // Not using strict equality so that this acts as a\n // shortcut to checking for `null` and `undefined`.\n if (obj == null) {\n return results\n }\n if (Array.prototype.map && obj.map === Array.prototype.map) { return obj.map(iterator) }\n each(obj, function (value, index, list) {\n results.push(iterator(value, index, list))\n })\n return results\n }\n\n var extendSoft = function (target, source) {\n if (source == null) { return target }\n var value\n var key\n for (key in source) {\n value = source[key]\n if (value != null && !(Object.prototype.hasOwnProperty.call(target, key))) {\n target[key] = value\n }\n }\n return target\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices\n var enumerateDevicesKey = function (done, options) {\n if (!isEnumerateDevicesSupported()) {\n return done(options.NOT_AVAILABLE)\n }\n navigator.mediaDevices.enumerateDevices().then(function (devices) {\n done(devices.map(function (device) {\n return 'id=' + device.deviceId + ';gid=' + device.groupId + ';' + device.kind + ';' + device.label\n }))\n })\n .catch(function (error) {\n done(error)\n })\n }\n\n var isEnumerateDevicesSupported = function () {\n return (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices)\n }\n // Inspired by and based on https://github.com/cozylife/audio-fingerprint\n var audioKey = function (done, options) {\n var audioOptions = options.audio\n if (audioOptions.excludeIOS11 && navigator.userAgent.match(/OS 11.+Version\\/11.+Safari/)) {\n // See comment for excludeUserAgent and https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n return done(options.EXCLUDED)\n }\n\n var AudioContext = window.OfflineAudioContext || window.webkitOfflineAudioContext\n\n if (AudioContext == null) {\n return done(options.NOT_AVAILABLE)\n }\n\n var context = new AudioContext(1, 44100, 44100)\n\n var oscillator = context.createOscillator()\n oscillator.type = 'triangle'\n oscillator.frequency.setValueAtTime(10000, context.currentTime)\n\n var compressor = context.createDynamicsCompressor()\n each([\n ['threshold', -50],\n ['knee', 40],\n ['ratio', 12],\n ['reduction', -20],\n ['attack', 0],\n ['release', 0.25]\n ], function (item) {\n if (compressor[item[0]] !== undefined && typeof compressor[item[0]].setValueAtTime === 'function') {\n compressor[item[0]].setValueAtTime(item[1], context.currentTime)\n }\n })\n\n oscillator.connect(compressor)\n compressor.connect(context.destination)\n oscillator.start(0)\n context.startRendering()\n\n var audioTimeoutId = setTimeout(function () {\n console.warn('Audio fingerprint timed out. Please report bug at https://github.com/Valve/fingerprintjs2 with your user agent: \"' + navigator.userAgent + '\".')\n context.oncomplete = function () { }\n context = null\n return done('audioTimeout')\n }, audioOptions.timeout)\n\n context.oncomplete = function (event) {\n var fingerprint\n try {\n clearTimeout(audioTimeoutId)\n fingerprint = event.renderedBuffer.getChannelData(0)\n .slice(4500, 5000)\n .reduce(function (acc, val) { return acc + Math.abs(val) }, 0)\n .toString()\n oscillator.disconnect()\n compressor.disconnect()\n } catch (error) {\n done(error)\n return\n }\n done(fingerprint)\n }\n }\n var UserAgent = function (done) {\n done(navigator.userAgent)\n }\n var webdriver = function (done, options) {\n done(navigator.webdriver == null ? options.NOT_AVAILABLE : navigator.webdriver)\n }\n var languageKey = function (done, options) {\n done(navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || options.NOT_AVAILABLE)\n }\n var colorDepthKey = function (done, options) {\n done(window.screen.colorDepth || options.NOT_AVAILABLE)\n }\n var deviceMemoryKey = function (done, options) {\n done(navigator.deviceMemory || options.NOT_AVAILABLE)\n }\n var pixelRatioKey = function (done, options) {\n done(window.devicePixelRatio || options.NOT_AVAILABLE)\n }\n var screenResolutionKey = function (done, options) {\n done(getScreenResolution(options))\n }\n var getScreenResolution = function (options) {\n var resolution = [window.screen.width, window.screen.height]\n if (options.screen.detectScreenOrientation) {\n resolution.sort().reverse()\n }\n return resolution\n }\n var availableScreenResolutionKey = function (done, options) {\n done(getAvailableScreenResolution(options))\n }\n var getAvailableScreenResolution = function (options) {\n if (window.screen.availWidth && window.screen.availHeight) {\n var available = [window.screen.availHeight, window.screen.availWidth]\n if (options.screen.detectScreenOrientation) {\n available.sort().reverse()\n }\n return available\n }\n // headless browsers\n return options.NOT_AVAILABLE\n }\n var timezoneOffset = function (done) {\n done(new Date().getTimezoneOffset())\n }\n var timezone = function (done, options) {\n if (window.Intl && window.Intl.DateTimeFormat) {\n done(new window.Intl.DateTimeFormat().resolvedOptions().timeZone)\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var sessionStorageKey = function (done, options) {\n done(hasSessionStorage(options))\n }\n var localStorageKey = function (done, options) {\n done(hasLocalStorage(options))\n }\n var indexedDbKey = function (done, options) {\n done(hasIndexedDB(options))\n }\n var addBehaviorKey = function (done) {\n // body might not be defined at this point or removed programmatically\n done(!!(document.body && document.body.addBehavior))\n }\n var openDatabaseKey = function (done) {\n done(!!window.openDatabase)\n }\n var cpuClassKey = function (done, options) {\n done(getNavigatorCpuClass(options))\n }\n var platformKey = function (done, options) {\n done(getNavigatorPlatform(options))\n }\n var doNotTrackKey = function (done, options) {\n done(getDoNotTrack(options))\n }\n var canvasKey = function (done, options) {\n if (isCanvasSupported()) {\n done(getCanvasFp(options))\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglKey = function (done, options) {\n if (isWebGlSupported()) {\n done(getWebglFp())\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglVendorAndRendererKey = function (done) {\n if (isWebGlSupported()) {\n done(getWebglVendorAndRenderer())\n return\n }\n done()\n }\n var adBlockKey = function (done) {\n done(getAdBlock())\n }\n var hasLiedLanguagesKey = function (done) {\n done(getHasLiedLanguages())\n }\n var hasLiedResolutionKey = function (done) {\n done(getHasLiedResolution())\n }\n var hasLiedOsKey = function (done) {\n done(getHasLiedOs())\n }\n var hasLiedBrowserKey = function (done) {\n done(getHasLiedBrowser())\n }\n // flash fonts (will increase fingerprinting time 20X to ~ 130-150ms)\n var flashFontsKey = function (done, options) {\n // we do flash if swfobject is loaded\n if (!hasSwfObjectLoaded()) {\n return done('swf object not loaded')\n }\n if (!hasMinFlashInstalled()) {\n return done('flash not installed')\n }\n if (!options.fonts.swfPath) {\n return done('missing options.fonts.swfPath')\n }\n loadSwfAndDetectFonts(function (fonts) {\n done(fonts)\n }, options)\n }\n // kudos to http://www.lalit.org/lab/javascript-css-font-detect/\n var jsFontsKey = function (done, options) {\n // a font will be compared against all the three default fonts.\n // and if it doesn't match all 3 then that font is not available.\n var baseFonts = ['monospace', 'sans-serif', 'serif']\n\n var fontList = [\n 'Andale Mono', 'Arial', 'Arial Black', 'Arial Hebrew', 'Arial MT', 'Arial Narrow', 'Arial Rounded MT Bold', 'Arial Unicode MS',\n 'Bitstream Vera Sans Mono', 'Book Antiqua', 'Bookman Old Style',\n 'Calibri', 'Cambria', 'Cambria Math', 'Century', 'Century Gothic', 'Century Schoolbook', 'Comic Sans', 'Comic Sans MS', 'Consolas', 'Courier', 'Courier New',\n 'Geneva', 'Georgia',\n 'Helvetica', 'Helvetica Neue',\n 'Impact',\n 'Lucida Bright', 'Lucida Calligraphy', 'Lucida Console', 'Lucida Fax', 'LUCIDA GRANDE', 'Lucida Handwriting', 'Lucida Sans', 'Lucida Sans Typewriter', 'Lucida Sans Unicode',\n 'Microsoft Sans Serif', 'Monaco', 'Monotype Corsiva', 'MS Gothic', 'MS Outlook', 'MS PGothic', 'MS Reference Sans Serif', 'MS Sans Serif', 'MS Serif', 'MYRIAD', 'MYRIAD PRO',\n 'Palatino', 'Palatino Linotype',\n 'Segoe Print', 'Segoe Script', 'Segoe UI', 'Segoe UI Light', 'Segoe UI Semibold', 'Segoe UI Symbol',\n 'Tahoma', 'Times', 'Times New Roman', 'Times New Roman PS', 'Trebuchet MS',\n 'Verdana', 'Wingdings', 'Wingdings 2', 'Wingdings 3'\n ]\n\n if (options.fonts.extendedJsFonts) {\n var extendedFontList = [\n 'Abadi MT Condensed Light', 'Academy Engraved LET', 'ADOBE CASLON PRO', 'Adobe Garamond', 'ADOBE GARAMOND PRO', 'Agency FB', 'Aharoni', 'Albertus Extra Bold', 'Albertus Medium', 'Algerian', 'Amazone BT', 'American Typewriter',\n 'American Typewriter Condensed', 'AmerType Md BT', 'Andalus', 'Angsana New', 'AngsanaUPC', 'Antique Olive', 'Aparajita', 'Apple Chancery', 'Apple Color Emoji', 'Apple SD Gothic Neo', 'Arabic Typesetting', 'ARCHER',\n 'ARNO PRO', 'Arrus BT', 'Aurora Cn BT', 'AvantGarde Bk BT', 'AvantGarde Md BT', 'AVENIR', 'Ayuthaya', 'Bandy', 'Bangla Sangam MN', 'Bank Gothic', 'BankGothic Md BT', 'Baskerville',\n 'Baskerville Old Face', 'Batang', 'BatangChe', 'Bauer Bodoni', 'Bauhaus 93', 'Bazooka', 'Bell MT', 'Bembo', 'Benguiat Bk BT', 'Berlin Sans FB', 'Berlin Sans FB Demi', 'Bernard MT Condensed', 'BernhardFashion BT', 'BernhardMod BT', 'Big Caslon', 'BinnerD',\n 'Blackadder ITC', 'BlairMdITC TT', 'Bodoni 72', 'Bodoni 72 Oldstyle', 'Bodoni 72 Smallcaps', 'Bodoni MT', 'Bodoni MT Black', 'Bodoni MT Condensed', 'Bodoni MT Poster Compressed',\n 'Bookshelf Symbol 7', 'Boulder', 'Bradley Hand', 'Bradley Hand ITC', 'Bremen Bd BT', 'Britannic Bold', 'Broadway', 'Browallia New', 'BrowalliaUPC', 'Brush Script MT', 'Californian FB', 'Calisto MT', 'Calligrapher', 'Candara',\n 'CaslonOpnface BT', 'Castellar', 'Centaur', 'Cezanne', 'CG Omega', 'CG Times', 'Chalkboard', 'Chalkboard SE', 'Chalkduster', 'Charlesworth', 'Charter Bd BT', 'Charter BT', 'Chaucer',\n 'ChelthmITC Bk BT', 'Chiller', 'Clarendon', 'Clarendon Condensed', 'CloisterBlack BT', 'Cochin', 'Colonna MT', 'Constantia', 'Cooper Black', 'Copperplate', 'Copperplate Gothic', 'Copperplate Gothic Bold',\n 'Copperplate Gothic Light', 'CopperplGoth Bd BT', 'Corbel', 'Cordia New', 'CordiaUPC', 'Cornerstone', 'Coronet', 'Cuckoo', 'Curlz MT', 'DaunPenh', 'Dauphin', 'David', 'DB LCD Temp', 'DELICIOUS', 'Denmark',\n 'DFKai-SB', 'Didot', 'DilleniaUPC', 'DIN', 'DokChampa', 'Dotum', 'DotumChe', 'Ebrima', 'Edwardian Script ITC', 'Elephant', 'English 111 Vivace BT', 'Engravers MT', 'EngraversGothic BT', 'Eras Bold ITC', 'Eras Demi ITC', 'Eras Light ITC', 'Eras Medium ITC',\n 'EucrosiaUPC', 'Euphemia', 'Euphemia UCAS', 'EUROSTILE', 'Exotc350 Bd BT', 'FangSong', 'Felix Titling', 'Fixedsys', 'FONTIN', 'Footlight MT Light', 'Forte',\n 'FrankRuehl', 'Fransiscan', 'Freefrm721 Blk BT', 'FreesiaUPC', 'Freestyle Script', 'French Script MT', 'FrnkGothITC Bk BT', 'Fruitger', 'FRUTIGER',\n 'Futura', 'Futura Bk BT', 'Futura Lt BT', 'Futura Md BT', 'Futura ZBlk BT', 'FuturaBlack BT', 'Gabriola', 'Galliard BT', 'Gautami', 'Geeza Pro', 'Geometr231 BT', 'Geometr231 Hv BT', 'Geometr231 Lt BT', 'GeoSlab 703 Lt BT',\n 'GeoSlab 703 XBd BT', 'Gigi', 'Gill Sans', 'Gill Sans MT', 'Gill Sans MT Condensed', 'Gill Sans MT Ext Condensed Bold', 'Gill Sans Ultra Bold', 'Gill Sans Ultra Bold Condensed', 'Gisha', 'Gloucester MT Extra Condensed', 'GOTHAM', 'GOTHAM BOLD',\n 'Goudy Old Style', 'Goudy Stout', 'GoudyHandtooled BT', 'GoudyOLSt BT', 'Gujarati Sangam MN', 'Gulim', 'GulimChe', 'Gungsuh', 'GungsuhChe', 'Gurmukhi MN', 'Haettenschweiler', 'Harlow Solid Italic', 'Harrington', 'Heather', 'Heiti SC', 'Heiti TC', 'HELV',\n 'Herald', 'High Tower Text', 'Hiragino Kaku Gothic ProN', 'Hiragino Mincho ProN', 'Hoefler Text', 'Humanst 521 Cn BT', 'Humanst521 BT', 'Humanst521 Lt BT', 'Imprint MT Shadow', 'Incised901 Bd BT', 'Incised901 BT',\n 'Incised901 Lt BT', 'INCONSOLATA', 'Informal Roman', 'Informal011 BT', 'INTERSTATE', 'IrisUPC', 'Iskoola Pota', 'JasmineUPC', 'Jazz LET', 'Jenson', 'Jester', 'Jokerman', 'Juice ITC', 'Kabel Bk BT', 'Kabel Ult BT', 'Kailasa', 'KaiTi', 'Kalinga', 'Kannada Sangam MN',\n 'Kartika', 'Kaufmann Bd BT', 'Kaufmann BT', 'Khmer UI', 'KodchiangUPC', 'Kokila', 'Korinna BT', 'Kristen ITC', 'Krungthep', 'Kunstler Script', 'Lao UI', 'Latha', 'Leelawadee', 'Letter Gothic', 'Levenim MT', 'LilyUPC', 'Lithograph', 'Lithograph Light', 'Long Island',\n 'Lydian BT', 'Magneto', 'Maiandra GD', 'Malayalam Sangam MN', 'Malgun Gothic',\n 'Mangal', 'Marigold', 'Marion', 'Marker Felt', 'Market', 'Marlett', 'Matisse ITC', 'Matura MT Script Capitals', 'Meiryo', 'Meiryo UI', 'Microsoft Himalaya', 'Microsoft JhengHei', 'Microsoft New Tai Lue', 'Microsoft PhagsPa', 'Microsoft Tai Le',\n 'Microsoft Uighur', 'Microsoft YaHei', 'Microsoft Yi Baiti', 'MingLiU', 'MingLiU_HKSCS', 'MingLiU_HKSCS-ExtB', 'MingLiU-ExtB', 'Minion', 'Minion Pro', 'Miriam', 'Miriam Fixed', 'Mistral', 'Modern', 'Modern No. 20', 'Mona Lisa Solid ITC TT', 'Mongolian Baiti',\n 'MONO', 'MoolBoran', 'Mrs Eaves', 'MS LineDraw', 'MS Mincho', 'MS PMincho', 'MS Reference Specialty', 'MS UI Gothic', 'MT Extra', 'MUSEO', 'MV Boli',\n 'Nadeem', 'Narkisim', 'NEVIS', 'News Gothic', 'News GothicMT', 'NewsGoth BT', 'Niagara Engraved', 'Niagara Solid', 'Noteworthy', 'NSimSun', 'Nyala', 'OCR A Extended', 'Old Century', 'Old English Text MT', 'Onyx', 'Onyx BT', 'OPTIMA', 'Oriya Sangam MN',\n 'OSAKA', 'OzHandicraft BT', 'Palace Script MT', 'Papyrus', 'Parchment', 'Party LET', 'Pegasus', 'Perpetua', 'Perpetua Titling MT', 'PetitaBold', 'Pickwick', 'Plantagenet Cherokee', 'Playbill', 'PMingLiU', 'PMingLiU-ExtB',\n 'Poor Richard', 'Poster', 'PosterBodoni BT', 'PRINCETOWN LET', 'Pristina', 'PTBarnum BT', 'Pythagoras', 'Raavi', 'Rage Italic', 'Ravie', 'Ribbon131 Bd BT', 'Rockwell', 'Rockwell Condensed', 'Rockwell Extra Bold', 'Rod', 'Roman', 'Sakkal Majalla',\n 'Santa Fe LET', 'Savoye LET', 'Sceptre', 'Script', 'Script MT Bold', 'SCRIPTINA', 'Serifa', 'Serifa BT', 'Serifa Th BT', 'ShelleyVolante BT', 'Sherwood',\n 'Shonar Bangla', 'Showcard Gothic', 'Shruti', 'Signboard', 'SILKSCREEN', 'SimHei', 'Simplified Arabic', 'Simplified Arabic Fixed', 'SimSun', 'SimSun-ExtB', 'Sinhala Sangam MN', 'Sketch Rockwell', 'Skia', 'Small Fonts', 'Snap ITC', 'Snell Roundhand', 'Socket',\n 'Souvenir Lt BT', 'Staccato222 BT', 'Steamer', 'Stencil', 'Storybook', 'Styllo', 'Subway', 'Swis721 BlkEx BT', 'Swiss911 XCm BT', 'Sylfaen', 'Synchro LET', 'System', 'Tamil Sangam MN', 'Technical', 'Teletype', 'Telugu Sangam MN', 'Tempus Sans ITC',\n 'Terminal', 'Thonburi', 'Traditional Arabic', 'Trajan', 'TRAJAN PRO', 'Tristan', 'Tubular', 'Tunga', 'Tw Cen MT', 'Tw Cen MT Condensed', 'Tw Cen MT Condensed Extra Bold',\n 'TypoUpright BT', 'Unicorn', 'Univers', 'Univers CE 55 Medium', 'Univers Condensed', 'Utsaah', 'Vagabond', 'Vani', 'Vijaya', 'Viner Hand ITC', 'VisualUI', 'Vivaldi', 'Vladimir Script', 'Vrinda', 'Westminster', 'WHITNEY', 'Wide Latin',\n 'ZapfEllipt BT', 'ZapfHumnst BT', 'ZapfHumnst Dm BT', 'Zapfino', 'Zurich BlkEx BT', 'Zurich Ex BT', 'ZWAdobeF']\n fontList = fontList.concat(extendedFontList)\n }\n\n fontList = fontList.concat(options.fonts.userDefinedFonts)\n\n // remove duplicate fonts\n fontList = fontList.filter(function (font, position) {\n return fontList.indexOf(font) === position\n })\n\n // we use m or w because these two characters take up the maximum width.\n // And we use a LLi so that the same matching fonts can get separated\n var testString = 'mmmmmmmmmmlli'\n\n // we test using 72px font size, we may use any size. I guess larger the better.\n var testSize = '72px'\n\n var h = document.getElementsByTagName('body')[0]\n\n // div to load spans for the base fonts\n var baseFontsDiv = document.createElement('div')\n\n // div to load spans for the fonts to detect\n var fontsDiv = document.createElement('div')\n\n var defaultWidth = {}\n var defaultHeight = {}\n\n // creates a span where the fonts will be loaded\n var createSpan = function () {\n var s = document.createElement('span')\n /*\n * We need this css as in some weird browser this\n * span elements shows up for a microSec which creates a\n * bad user experience\n */\n s.style.position = 'absolute'\n s.style.left = '-9999px'\n s.style.fontSize = testSize\n\n // css font reset to reset external styles\n s.style.fontStyle = 'normal'\n s.style.fontWeight = 'normal'\n s.style.letterSpacing = 'normal'\n s.style.lineBreak = 'auto'\n s.style.lineHeight = 'normal'\n s.style.textTransform = 'none'\n s.style.textAlign = 'left'\n s.style.textDecoration = 'none'\n s.style.textShadow = 'none'\n s.style.whiteSpace = 'normal'\n s.style.wordBreak = 'normal'\n s.style.wordSpacing = 'normal'\n\n s.innerHTML = testString\n return s\n }\n\n // creates a span and load the font to detect and a base font for fallback\n var createSpanWithFonts = function (fontToDetect, baseFont) {\n var s = createSpan()\n s.style.fontFamily = \"'\" + fontToDetect + \"',\" + baseFont\n return s\n }\n\n // creates spans for the base fonts and adds them to baseFontsDiv\n var initializeBaseFontsSpans = function () {\n var spans = []\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n var s = createSpan()\n s.style.fontFamily = baseFonts[index]\n baseFontsDiv.appendChild(s)\n spans.push(s)\n }\n return spans\n }\n\n // creates spans for the fonts to detect and adds them to fontsDiv\n var initializeFontsSpans = function () {\n var spans = {}\n for (var i = 0, l = fontList.length; i < l; i++) {\n var fontSpans = []\n for (var j = 0, numDefaultFonts = baseFonts.length; j < numDefaultFonts; j++) {\n var s = createSpanWithFonts(fontList[i], baseFonts[j])\n fontsDiv.appendChild(s)\n fontSpans.push(s)\n }\n spans[fontList[i]] = fontSpans // Stores {fontName : [spans for that font]}\n }\n return spans\n }\n\n // checks if a font is available\n var isFontAvailable = function (fontSpans) {\n var detected = false\n for (var i = 0; i < baseFonts.length; i++) {\n detected = (fontSpans[i].offsetWidth !== defaultWidth[baseFonts[i]] || fontSpans[i].offsetHeight !== defaultHeight[baseFonts[i]])\n if (detected) {\n return detected\n }\n }\n return detected\n }\n\n // create spans for base fonts\n var baseFontsSpans = initializeBaseFontsSpans()\n\n // add the spans to the DOM\n h.appendChild(baseFontsDiv)\n\n // get the default width for the three base fonts\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n defaultWidth[baseFonts[index]] = baseFontsSpans[index].offsetWidth // width for the default font\n defaultHeight[baseFonts[index]] = baseFontsSpans[index].offsetHeight // height for the default font\n }\n\n // create spans for fonts to detect\n var fontsSpans = initializeFontsSpans()\n\n // add all the spans to the DOM\n h.appendChild(fontsDiv)\n\n // check available fonts\n var available = []\n for (var i = 0, l = fontList.length; i < l; i++) {\n if (isFontAvailable(fontsSpans[fontList[i]])) {\n available.push(fontList[i])\n }\n }\n\n // remove spans from DOM\n h.removeChild(fontsDiv)\n h.removeChild(baseFontsDiv)\n done(available)\n }\n var pluginsComponent = function (done, options) {\n if (isIE()) {\n if (!options.plugins.excludeIE) {\n done(getIEPlugins(options))\n } else {\n done(options.EXCLUDED)\n }\n } else {\n done(getRegularPlugins(options))\n }\n }\n var getRegularPlugins = function (options) {\n if (navigator.plugins == null) {\n return options.NOT_AVAILABLE\n }\n\n var plugins = []\n // plugins isn't defined in Node envs.\n for (var i = 0, l = navigator.plugins.length; i < l; i++) {\n if (navigator.plugins[i]) { plugins.push(navigator.plugins[i]) }\n }\n\n // sorting plugins only for those user agents, that we know randomize the plugins\n // every time we try to enumerate them\n if (pluginsShouldBeSorted(options)) {\n plugins = plugins.sort(function (a, b) {\n if (a.name > b.name) { return 1 }\n if (a.name < b.name) { return -1 }\n return 0\n })\n }\n return map(plugins, function (p) {\n var mimeTypes = map(p, function (mt) {\n return [mt.type, mt.suffixes]\n })\n return [p.name, p.description, mimeTypes]\n })\n }\n var getIEPlugins = function (options) {\n var result = []\n if ((Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(window, 'ActiveXObject')) || ('ActiveXObject' in window)) {\n var names = [\n 'AcroPDF.PDF', // Adobe PDF reader 7+\n 'Adodb.Stream',\n 'AgControl.AgControl', // Silverlight\n 'DevalVRXCtrl.DevalVRXCtrl.1',\n 'MacromediaFlashPaper.MacromediaFlashPaper',\n 'Msxml2.DOMDocument',\n 'Msxml2.XMLHTTP',\n 'PDF.PdfCtrl', // Adobe PDF reader 6 and earlier, brrr\n 'QuickTime.QuickTime', // QuickTime\n 'QuickTimeCheckObject.QuickTimeCheck.1',\n 'RealPlayer',\n 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)',\n 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)',\n 'Scripting.Dictionary',\n 'SWCtl.SWCtl', // ShockWave player\n 'Shell.UIHelper',\n 'ShockwaveFlash.ShockwaveFlash', // flash plugin\n 'Skype.Detection',\n 'TDCCtl.TDCCtl',\n 'WMPlayer.OCX', // Windows media player\n 'rmocx.RealPlayer G2 Control',\n 'rmocx.RealPlayer G2 Control.1'\n ]\n // starting to detect plugins in IE\n result = map(names, function (name) {\n try {\n // eslint-disable-next-line no-new\n new window.ActiveXObject(name)\n return name\n } catch (e) {\n return options.ERROR\n }\n })\n } else {\n result.push(options.NOT_AVAILABLE)\n }\n if (navigator.plugins) {\n result = result.concat(getRegularPlugins(options))\n }\n return result\n }\n var pluginsShouldBeSorted = function (options) {\n var should = false\n for (var i = 0, l = options.plugins.sortPluginsFor.length; i < l; i++) {\n var re = options.plugins.sortPluginsFor[i]\n if (navigator.userAgent.match(re)) {\n should = true\n break\n }\n }\n return should\n }\n var touchSupportKey = function (done) {\n done(getTouchSupport())\n }\n var hardwareConcurrencyKey = function (done, options) {\n done(getHardwareConcurrency(options))\n }\n var hasSessionStorage = function (options) {\n try {\n return !!window.sessionStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n\n // https://bugzilla.mozilla.org/show_bug.cgi?id=781447\n var hasLocalStorage = function (options) {\n try {\n return !!window.localStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var hasIndexedDB = function (options) {\n try {\n return !!window.indexedDB\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var getHardwareConcurrency = function (options) {\n if (navigator.hardwareConcurrency) {\n return navigator.hardwareConcurrency\n }\n return options.NOT_AVAILABLE\n }\n var getNavigatorCpuClass = function (options) {\n return navigator.cpuClass || options.NOT_AVAILABLE\n }\n var getNavigatorPlatform = function (options) {\n if (navigator.platform) {\n return navigator.platform\n } else {\n return options.NOT_AVAILABLE\n }\n }\n var getDoNotTrack = function (options) {\n if (navigator.doNotTrack) {\n return navigator.doNotTrack\n } else if (navigator.msDoNotTrack) {\n return navigator.msDoNotTrack\n } else if (window.doNotTrack) {\n return window.doNotTrack\n } else {\n return options.NOT_AVAILABLE\n }\n }\n // This is a crude and primitive touch screen detection.\n // It's not possible to currently reliably detect the availability of a touch screen\n // with a JS, without actually subscribing to a touch event.\n // http://www.stucox.com/blog/you-cant-detect-a-touchscreen/\n // https://github.com/Modernizr/Modernizr/issues/548\n // method returns an array of 3 values:\n // maxTouchPoints, the success or failure of creating a TouchEvent,\n // and the availability of the 'ontouchstart' property\n\n var getTouchSupport = function () {\n var maxTouchPoints = 0\n var touchEvent\n if (typeof navigator.maxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.maxTouchPoints\n } else if (typeof navigator.msMaxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.msMaxTouchPoints\n }\n try {\n document.createEvent('TouchEvent')\n touchEvent = true\n } catch (_) {\n touchEvent = false\n }\n var touchStart = 'ontouchstart' in window\n return [maxTouchPoints, touchEvent, touchStart]\n }\n // https://www.browserleaks.com/canvas#how-does-it-work\n\n var getCanvasFp = function (options) {\n var result = []\n // Very simple now, need to make it more complex (geo shapes etc)\n var canvas = document.createElement('canvas')\n canvas.width = 2000\n canvas.height = 200\n canvas.style.display = 'inline'\n var ctx = canvas.getContext('2d')\n // detect browser support of canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/canvas/winding.js\n ctx.rect(0, 0, 10, 10)\n ctx.rect(2, 2, 6, 6)\n result.push('canvas winding:' + ((ctx.isPointInPath(5, 5, 'evenodd') === false) ? 'yes' : 'no'))\n\n ctx.textBaseline = 'alphabetic'\n ctx.fillStyle = '#f60'\n ctx.fillRect(125, 1, 62, 20)\n ctx.fillStyle = '#069'\n // https://github.com/Valve/fingerprintjs2/issues/66\n if (options.dontUseFakeFontInCanvas) {\n ctx.font = '11pt Arial'\n } else {\n ctx.font = '11pt no-real-font-123'\n }\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 2, 15)\n ctx.fillStyle = 'rgba(102, 204, 0, 0.2)'\n ctx.font = '18pt Arial'\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 4, 45)\n\n // canvas blending\n // http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/\n // http://jsfiddle.net/NDYV8/16/\n ctx.globalCompositeOperation = 'multiply'\n ctx.fillStyle = 'rgb(255,0,255)'\n ctx.beginPath()\n ctx.arc(50, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(0,255,255)'\n ctx.beginPath()\n ctx.arc(100, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,255,0)'\n ctx.beginPath()\n ctx.arc(75, 100, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,0,255)'\n // canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // http://jsfiddle.net/NDYV8/19/\n ctx.arc(75, 75, 75, 0, Math.PI * 2, true)\n ctx.arc(75, 75, 25, 0, Math.PI * 2, true)\n ctx.fill('evenodd')\n\n if (canvas.toDataURL) { result.push('canvas fp:' + canvas.toDataURL()) }\n return result\n }\n var getWebglFp = function () {\n var gl\n var fa2s = function (fa) {\n gl.clearColor(0.0, 0.0, 0.0, 1.0)\n gl.enable(gl.DEPTH_TEST)\n gl.depthFunc(gl.LEQUAL)\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)\n return '[' + fa[0] + ', ' + fa[1] + ']'\n }\n var maxAnisotropy = function (gl) {\n var ext = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic')\n if (ext) {\n var anisotropy = gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT)\n if (anisotropy === 0) {\n anisotropy = 2\n }\n return anisotropy\n } else {\n return null\n }\n }\n\n gl = getWebglCanvas()\n if (!gl) { return null }\n // WebGL fingerprinting is a combination of techniques, found in MaxMind antifraud script & Augur fingerprinting.\n // First it draws a gradient object with shaders and convers the image to the Base64 string.\n // Then it enumerates all WebGL extensions & capabilities and appends them to the Base64 string, resulting in a huge WebGL string, potentially very unique on each device\n // Since iOS supports webgl starting from version 8.1 and 8.1 runs on several graphics chips, the results may be different across ios devices, but we need to verify it.\n var result = []\n var vShaderTemplate = 'attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}'\n var fShaderTemplate = 'precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}'\n var vertexPosBuffer = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer)\n var vertices = new Float32Array([-0.2, -0.9, 0, 0.4, -0.26, 0, 0, 0.732134444, 0])\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW)\n vertexPosBuffer.itemSize = 3\n vertexPosBuffer.numItems = 3\n var program = gl.createProgram()\n var vshader = gl.createShader(gl.VERTEX_SHADER)\n gl.shaderSource(vshader, vShaderTemplate)\n gl.compileShader(vshader)\n var fshader = gl.createShader(gl.FRAGMENT_SHADER)\n gl.shaderSource(fshader, fShaderTemplate)\n gl.compileShader(fshader)\n gl.attachShader(program, vshader)\n gl.attachShader(program, fshader)\n gl.linkProgram(program)\n gl.useProgram(program)\n program.vertexPosAttrib = gl.getAttribLocation(program, 'attrVertex')\n program.offsetUniform = gl.getUniformLocation(program, 'uniformOffset')\n gl.enableVertexAttribArray(program.vertexPosArray)\n gl.vertexAttribPointer(program.vertexPosAttrib, vertexPosBuffer.itemSize, gl.FLOAT, !1, 0, 0)\n gl.uniform2f(program.offsetUniform, 1, 1)\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexPosBuffer.numItems)\n try {\n result.push(gl.canvas.toDataURL())\n } catch (e) {\n /* .toDataURL may be absent or broken (blocked by extension) */\n }\n result.push('extensions:' + (gl.getSupportedExtensions() || []).join(';'))\n result.push('webgl aliased line width range:' + fa2s(gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)))\n result.push('webgl aliased point size range:' + fa2s(gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)))\n result.push('webgl alpha bits:' + gl.getParameter(gl.ALPHA_BITS))\n result.push('webgl antialiasing:' + (gl.getContextAttributes().antialias ? 'yes' : 'no'))\n result.push('webgl blue bits:' + gl.getParameter(gl.BLUE_BITS))\n result.push('webgl depth bits:' + gl.getParameter(gl.DEPTH_BITS))\n result.push('webgl green bits:' + gl.getParameter(gl.GREEN_BITS))\n result.push('webgl max anisotropy:' + maxAnisotropy(gl))\n result.push('webgl max combined texture image units:' + gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS))\n result.push('webgl max cube map texture size:' + gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE))\n result.push('webgl max fragment uniform vectors:' + gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS))\n result.push('webgl max render buffer size:' + gl.getParameter(gl.MAX_RENDERBUFFER_SIZE))\n result.push('webgl max texture image units:' + gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max texture size:' + gl.getParameter(gl.MAX_TEXTURE_SIZE))\n result.push('webgl max varying vectors:' + gl.getParameter(gl.MAX_VARYING_VECTORS))\n result.push('webgl max vertex attribs:' + gl.getParameter(gl.MAX_VERTEX_ATTRIBS))\n result.push('webgl max vertex texture image units:' + gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max vertex uniform vectors:' + gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS))\n result.push('webgl max viewport dims:' + fa2s(gl.getParameter(gl.MAX_VIEWPORT_DIMS)))\n result.push('webgl red bits:' + gl.getParameter(gl.RED_BITS))\n result.push('webgl renderer:' + gl.getParameter(gl.RENDERER))\n result.push('webgl shading language version:' + gl.getParameter(gl.SHADING_LANGUAGE_VERSION))\n result.push('webgl stencil bits:' + gl.getParameter(gl.STENCIL_BITS))\n result.push('webgl vendor:' + gl.getParameter(gl.VENDOR))\n result.push('webgl version:' + gl.getParameter(gl.VERSION))\n\n try {\n // Add the unmasked vendor and unmasked renderer if the debug_renderer_info extension is available\n var extensionDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info')\n if (extensionDebugRendererInfo) {\n result.push('webgl unmasked vendor:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL))\n result.push('webgl unmasked renderer:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL))\n }\n } catch (e) { /* squelch */ }\n\n if (!gl.getShaderPrecisionFormat) {\n return result\n }\n\n each(['FLOAT', 'INT'], function (numType) {\n each(['VERTEX', 'FRAGMENT'], function (shader) {\n each(['HIGH', 'MEDIUM', 'LOW'], function (numSize) {\n each(['precision', 'rangeMin', 'rangeMax'], function (key) {\n var format = gl.getShaderPrecisionFormat(gl[shader + '_SHADER'], gl[numSize + '_' + numType])[key]\n if (key !== 'precision') {\n key = 'precision ' + key\n }\n var line = ['webgl ', shader.toLowerCase(), ' shader ', numSize.toLowerCase(), ' ', numType.toLowerCase(), ' ', key, ':', format].join('')\n result.push(line)\n })\n })\n })\n })\n return result\n }\n var getWebglVendorAndRenderer = function () {\n /* This a subset of the WebGL fingerprint with a lot of entropy, while being reasonably browser-independent */\n try {\n var glContext = getWebglCanvas()\n var extensionDebugRendererInfo = glContext.getExtension('WEBGL_debug_renderer_info')\n return glContext.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL) + '~' + glContext.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL)\n } catch (e) {\n return null\n }\n }\n var getAdBlock = function () {\n var ads = document.createElement('div')\n ads.innerHTML = ' '\n ads.className = 'adsbox'\n var result = false\n try {\n // body may not exist, that's why we need try/catch\n document.body.appendChild(ads)\n result = document.getElementsByClassName('adsbox')[0].offsetHeight === 0\n document.body.removeChild(ads)\n } catch (e) {\n result = false\n }\n return result\n }\n var getHasLiedLanguages = function () {\n // We check if navigator.language is equal to the first language of navigator.languages\n // navigator.languages is undefined on IE11 (and potentially older IEs)\n if (typeof navigator.languages !== 'undefined') {\n try {\n var firstLanguages = navigator.languages[0].substr(0, 2)\n if (firstLanguages !== navigator.language.substr(0, 2)) {\n return true\n }\n } catch (err) {\n return true\n }\n }\n return false\n }\n var getHasLiedResolution = function () {\n return window.screen.width < window.screen.availWidth || window.screen.height < window.screen.availHeight\n }\n var getHasLiedOs = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var oscpu = navigator.oscpu\n var platform = navigator.platform.toLowerCase()\n var os\n // We extract the OS from the user agent (respect the order of the if else if statement)\n if (userAgent.indexOf('windows phone') >= 0) {\n os = 'Windows Phone'\n } else if (userAgent.indexOf('win') >= 0) {\n os = 'Windows'\n } else if (userAgent.indexOf('android') >= 0) {\n os = 'Android'\n } else if (userAgent.indexOf('linux') >= 0 || userAgent.indexOf('cros') >= 0) {\n os = 'Linux'\n } else if (userAgent.indexOf('iphone') >= 0 || userAgent.indexOf('ipad') >= 0) {\n os = 'iOS'\n } else if (userAgent.indexOf('mac') >= 0) {\n os = 'Mac'\n } else {\n os = 'Other'\n }\n // We detect if the person uses a mobile device\n var mobileDevice = (('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0))\n\n if (mobileDevice && os !== 'Windows Phone' && os !== 'Android' && os !== 'iOS' && os !== 'Other') {\n return true\n }\n\n // We compare oscpu with the OS extracted from the UA\n if (typeof oscpu !== 'undefined') {\n oscpu = oscpu.toLowerCase()\n if (oscpu.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if (oscpu.indexOf('linux') >= 0 && os !== 'Linux' && os !== 'Android') {\n return true\n } else if (oscpu.indexOf('mac') >= 0 && os !== 'Mac' && os !== 'iOS') {\n return true\n } else if ((oscpu.indexOf('win') === -1 && oscpu.indexOf('linux') === -1 && oscpu.indexOf('mac') === -1) !== (os === 'Other')) {\n return true\n }\n }\n\n // We compare platform with the OS extracted from the UA\n if (platform.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if ((platform.indexOf('linux') >= 0 || platform.indexOf('android') >= 0 || platform.indexOf('pike') >= 0) && os !== 'Linux' && os !== 'Android') {\n return true\n } else if ((platform.indexOf('mac') >= 0 || platform.indexOf('ipad') >= 0 || platform.indexOf('ipod') >= 0 || platform.indexOf('iphone') >= 0) && os !== 'Mac' && os !== 'iOS') {\n return true\n } else {\n var platformIsOther = platform.indexOf('win') < 0 &&\n platform.indexOf('linux') < 0 &&\n platform.indexOf('mac') < 0 &&\n platform.indexOf('iphone') < 0 &&\n platform.indexOf('ipad') < 0\n if (platformIsOther !== (os === 'Other')) {\n return true\n }\n }\n\n return typeof navigator.plugins === 'undefined' && os !== 'Windows' && os !== 'Windows Phone'\n }\n var getHasLiedBrowser = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var productSub = navigator.productSub\n\n // we extract the browser from the user agent (respect the order of the tests)\n var browser\n if (userAgent.indexOf('firefox') >= 0) {\n browser = 'Firefox'\n } else if (userAgent.indexOf('opera') >= 0 || userAgent.indexOf('opr') >= 0) {\n browser = 'Opera'\n } else if (userAgent.indexOf('chrome') >= 0) {\n browser = 'Chrome'\n } else if (userAgent.indexOf('safari') >= 0) {\n browser = 'Safari'\n } else if (userAgent.indexOf('trident') >= 0) {\n browser = 'Internet Explorer'\n } else {\n browser = 'Other'\n }\n\n if ((browser === 'Chrome' || browser === 'Safari' || browser === 'Opera') && productSub !== '20030107') {\n return true\n }\n\n // eslint-disable-next-line no-eval\n var tempRes = eval.toString().length\n if (tempRes === 37 && browser !== 'Safari' && browser !== 'Firefox' && browser !== 'Other') {\n return true\n } else if (tempRes === 39 && browser !== 'Internet Explorer' && browser !== 'Other') {\n return true\n } else if (tempRes === 33 && browser !== 'Chrome' && browser !== 'Opera' && browser !== 'Other') {\n return true\n }\n\n // We create an error to see how it is handled\n var errFirefox\n try {\n // eslint-disable-next-line no-throw-literal\n throw 'a'\n } catch (err) {\n try {\n err.toSource()\n errFirefox = true\n } catch (errOfErr) {\n errFirefox = false\n }\n }\n return errFirefox && browser !== 'Firefox' && browser !== 'Other'\n }\n var isCanvasSupported = function () {\n var elem = document.createElement('canvas')\n return !!(elem.getContext && elem.getContext('2d'))\n }\n var isWebGlSupported = function () {\n // code taken from Modernizr\n if (!isCanvasSupported()) {\n return false\n }\n\n var glContext = getWebglCanvas()\n return !!window.WebGLRenderingContext && !!glContext\n }\n var isIE = function () {\n if (navigator.appName === 'Microsoft Internet Explorer') {\n return true\n } else if (navigator.appName === 'Netscape' && /Trident/.test(navigator.userAgent)) { // IE 11\n return true\n }\n return false\n }\n var hasSwfObjectLoaded = function () {\n return typeof window.swfobject !== 'undefined'\n }\n var hasMinFlashInstalled = function () {\n return window.swfobject.hasFlashPlayerVersion('9.0.0')\n }\n var addFlashDivNode = function (options) {\n var node = document.createElement('div')\n node.setAttribute('id', options.fonts.swfContainerId)\n document.body.appendChild(node)\n }\n var loadSwfAndDetectFonts = function (done, options) {\n var hiddenCallback = '___fp_swf_loaded'\n window[hiddenCallback] = function (fonts) {\n done(fonts)\n }\n var id = options.fonts.swfContainerId\n addFlashDivNode()\n var flashvars = { onReady: hiddenCallback }\n var flashparams = { allowScriptAccess: 'always', menu: 'false' }\n window.swfobject.embedSWF(options.fonts.swfPath, id, '1', '1', '9.0.0', false, flashvars, flashparams, {})\n }\n var getWebglCanvas = function () {\n var canvas = document.createElement('canvas')\n var gl = null\n try {\n gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl')\n } catch (e) { /* squelch */ }\n if (!gl) { gl = null }\n return gl\n }\n\n var components = [\n { key: 'userAgent', getData: UserAgent },\n { key: 'webdriver', getData: webdriver },\n { key: 'language', getData: languageKey },\n { key: 'colorDepth', getData: colorDepthKey },\n { key: 'deviceMemory', getData: deviceMemoryKey },\n { key: 'pixelRatio', getData: pixelRatioKey },\n { key: 'hardwareConcurrency', getData: hardwareConcurrencyKey },\n { key: 'screenResolution', getData: screenResolutionKey },\n { key: 'availableScreenResolution', getData: availableScreenResolutionKey },\n { key: 'timezoneOffset', getData: timezoneOffset },\n { key: 'timezone', getData: timezone },\n { key: 'sessionStorage', getData: sessionStorageKey },\n { key: 'localStorage', getData: localStorageKey },\n { key: 'indexedDb', getData: indexedDbKey },\n { key: 'addBehavior', getData: addBehaviorKey },\n { key: 'openDatabase', getData: openDatabaseKey },\n { key: 'cpuClass', getData: cpuClassKey },\n { key: 'platform', getData: platformKey },\n { key: 'doNotTrack', getData: doNotTrackKey },\n { key: 'plugins', getData: pluginsComponent },\n { key: 'canvas', getData: canvasKey },\n { key: 'webgl', getData: webglKey },\n { key: 'webglVendorAndRenderer', getData: webglVendorAndRendererKey },\n { key: 'adBlock', getData: adBlockKey },\n { key: 'hasLiedLanguages', getData: hasLiedLanguagesKey },\n { key: 'hasLiedResolution', getData: hasLiedResolutionKey },\n { key: 'hasLiedOs', getData: hasLiedOsKey },\n { key: 'hasLiedBrowser', getData: hasLiedBrowserKey },\n { key: 'touchSupport', getData: touchSupportKey },\n { key: 'fonts', getData: jsFontsKey, pauseBefore: true },\n { key: 'fontsFlash', getData: flashFontsKey, pauseBefore: true },\n { key: 'audio', getData: audioKey },\n { key: 'enumerateDevices', getData: enumerateDevicesKey }\n ]\n\n var Fingerprint2 = function (options) {\n throw new Error(\"'new Fingerprint()' is deprecated, see https://github.com/Valve/fingerprintjs2#upgrade-guide-from-182-to-200\")\n }\n\n Fingerprint2.get = function (options, callback) {\n if (!callback) {\n callback = options\n options = {}\n } else if (!options) {\n options = {}\n }\n extendSoft(options, defaultOptions)\n options.components = options.extraComponents.concat(components)\n\n var keys = {\n data: [],\n addPreprocessedComponent: function (key, value) {\n if (typeof options.preprocessor === 'function') {\n value = options.preprocessor(key, value)\n }\n keys.data.push({ key: key, value: value })\n }\n }\n\n var i = -1\n var chainComponents = function (alreadyWaited) {\n i += 1\n if (i >= options.components.length) { // on finish\n callback(keys.data)\n return\n }\n var component = options.components[i]\n\n if (options.excludes[component.key]) {\n chainComponents(false) // skip\n return\n }\n\n if (!alreadyWaited && component.pauseBefore) {\n i -= 1\n setTimeout(function () {\n chainComponents(true)\n }, 1)\n return\n }\n\n try {\n component.getData(function (value) {\n keys.addPreprocessedComponent(component.key, value)\n chainComponents(false)\n }, options)\n } catch (error) {\n // main body error\n keys.addPreprocessedComponent(component.key, String(error))\n chainComponents(false)\n }\n }\n\n chainComponents(false)\n }\n\n Fingerprint2.getPromise = function (options) {\n return new Promise(function (resolve, reject) {\n Fingerprint2.get(options, resolve)\n })\n }\n\n Fingerprint2.getV18 = function (options, callback) {\n if (callback == null) {\n callback = options\n options = {}\n }\n return Fingerprint2.get(options, function (components) {\n var newComponents = []\n for (var i = 0; i < components.length; i++) {\n var component = components[i]\n if (component.value === (options.NOT_AVAILABLE || 'not available')) {\n newComponents.push({ key: component.key, value: 'unknown' })\n } else if (component.key === 'plugins') {\n newComponents.push({\n key: 'plugins',\n value: map(component.value, function (p) {\n var mimeTypes = map(p[2], function (mt) {\n if (mt.join) { return mt.join('~') }\n return mt\n }).join(',')\n return [p[0], p[1], mimeTypes].join('::')\n })\n })\n } else if (['canvas', 'webgl'].indexOf(component.key) !== -1) {\n newComponents.push({ key: component.key, value: component.value.join('~') })\n } else if (['sessionStorage', 'localStorage', 'indexedDb', 'addBehavior', 'openDatabase'].indexOf(component.key) !== -1) {\n if (component.value) {\n newComponents.push({ key: component.key, value: 1 })\n } else {\n // skip\n continue\n }\n } else {\n if (component.value) {\n newComponents.push(component.value.join ? { key: component.key, value: component.value.join(';') } : component)\n } else {\n newComponents.push({ key: component.key, value: component.value })\n }\n }\n }\n var murmur = x64hash128(map(newComponents, function (component) { return component.value }).join('~~~'), 31)\n callback(murmur, newComponents)\n })\n }\n\n Fingerprint2.x64hash128 = x64hash128\n Fingerprint2.VERSION = '2.1.0'\n return Fingerprint2\n})\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n });\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {Element, Array, NodeList} elems\n * @param {Integer} index\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {Element, Array, NodeList} elems\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n","// animate\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils'\n ], function( utils ) {\n return factory( window, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n });\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x = x - this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D tranforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i=0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i=0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n}));\n","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size'\n ], function( getSize ) {\n return factory( window, getSize );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var side = this.parent.originSide;\n this.element.style[ side ] = this.parent.getPositionValue( x );\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} factor - 0, 1, or -1\n**/\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n}));\n","// drag\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n // #457, RubaXa/Sortable#973\n if ( isTouch && !isTouchmoveScrollCanceled ) {\n window.addEventListener( 'touchmove', function() {});\n isTouchmoveScrollCanceled = true;\n }\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x = moveVector.x % this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x\n * @param {Integer} index - slide index\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n","// Flickity main\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate'\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i=index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n });\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match(/^(\\d+)%$/);\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5\n },\n left: {\n left: 0,\n right: 1\n },\n right: {\n right: 0,\n left: 1\n }\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {Element or Number} elem\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i=0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem\n * @returns {Flickity.Cell} item\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i=0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {Element, Array, NodeList} elems\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n });\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem\n * @returns {Flickit.Cell} cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {Element, Selector String, or Number} selector\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match(/^[#\\.]?[\\d\\/]/) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n if ( !this.isActive ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility ||isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n });\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {Element} elem\n * @returns {Flickity}\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n}));\n","/*!\n * Flickity v2.2.1\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2019 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n})( window, function factory( Flickity ) {\n /*jshint strict: false*/\n return Flickity;\n});\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n });\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n}));\n","// page dots\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true\n});\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n}));\n","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity'\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true\n});\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n}));\n","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg');\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path');\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30\n }\n});\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n}));\n","// slide\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n });\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n });\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n });\n};\n\nreturn Slide;\n\n}));\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","/*\n * International Telephone Input v17.0.2\n * https://github.com/jackocnr/intl-tel-input.git\n * Licensed under the MIT license\n */\n\n// wrap in UMD\n(function(factory) {\n if (typeof module === \"object\" && module.exports) module.exports = factory(); else window.intlTelInput = factory();\n})(function(undefined) {\n \"use strict\";\n return function() {\n // Array of country objects for the flag dropdown.\n // Here is the criteria for the plugin to support a given country/territory\n // - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n // - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n // - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n // - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n // Each country array has the following information:\n // [\n // Country name,\n // iso2 code,\n // International dial code,\n // Order (if >1 country with same dial code),\n // Area codes\n // ]\n var allCountries = [ [ \"Afghanistan (افغانستان)\", \"af\", \"93\" ], [ \"Albania (Shqipëri)\", \"al\", \"355\" ], [ \"Algeria (الجزائر)\", \"dz\", \"213\" ], [ \"American Samoa\", \"as\", \"1\", 5, [ \"684\" ] ], [ \"Andorra\", \"ad\", \"376\" ], [ \"Angola\", \"ao\", \"244\" ], [ \"Anguilla\", \"ai\", \"1\", 6, [ \"264\" ] ], [ \"Antigua and Barbuda\", \"ag\", \"1\", 7, [ \"268\" ] ], [ \"Argentina\", \"ar\", \"54\" ], [ \"Armenia (Հայաստան)\", \"am\", \"374\" ], [ \"Aruba\", \"aw\", \"297\" ], [ \"Australia\", \"au\", \"61\", 0 ], [ \"Austria (Österreich)\", \"at\", \"43\" ], [ \"Azerbaijan (Azərbaycan)\", \"az\", \"994\" ], [ \"Bahamas\", \"bs\", \"1\", 8, [ \"242\" ] ], [ \"Bahrain (البحرين)\", \"bh\", \"973\" ], [ \"Bangladesh (বাংলাদেশ)\", \"bd\", \"880\" ], [ \"Barbados\", \"bb\", \"1\", 9, [ \"246\" ] ], [ \"Belarus (Беларусь)\", \"by\", \"375\" ], [ \"Belgium (België)\", \"be\", \"32\" ], [ \"Belize\", \"bz\", \"501\" ], [ \"Benin (Bénin)\", \"bj\", \"229\" ], [ \"Bermuda\", \"bm\", \"1\", 10, [ \"441\" ] ], [ \"Bhutan (འབྲུག)\", \"bt\", \"975\" ], [ \"Bolivia\", \"bo\", \"591\" ], [ \"Bosnia and Herzegovina (Босна и Херцеговина)\", \"ba\", \"387\" ], [ \"Botswana\", \"bw\", \"267\" ], [ \"Brazil (Brasil)\", \"br\", \"55\" ], [ \"British Indian Ocean Territory\", \"io\", \"246\" ], [ \"British Virgin Islands\", \"vg\", \"1\", 11, [ \"284\" ] ], [ \"Brunei\", \"bn\", \"673\" ], [ \"Bulgaria (България)\", \"bg\", \"359\" ], [ \"Burkina Faso\", \"bf\", \"226\" ], [ \"Burundi (Uburundi)\", \"bi\", \"257\" ], [ \"Cambodia (កម្ពុជា)\", \"kh\", \"855\" ], [ \"Cameroon (Cameroun)\", \"cm\", \"237\" ], [ \"Canada\", \"ca\", \"1\", 1, [ \"204\", \"226\", \"236\", \"249\", \"250\", \"289\", \"306\", \"343\", \"365\", \"387\", \"403\", \"416\", \"418\", \"431\", \"437\", \"438\", \"450\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"705\", \"709\", \"742\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\" ] ], [ \"Cape Verde (Kabu Verdi)\", \"cv\", \"238\" ], [ \"Caribbean Netherlands\", \"bq\", \"599\", 1, [ \"3\", \"4\", \"7\" ] ], [ \"Cayman Islands\", \"ky\", \"1\", 12, [ \"345\" ] ], [ \"Central African Republic (République centrafricaine)\", \"cf\", \"236\" ], [ \"Chad (Tchad)\", \"td\", \"235\" ], [ \"Chile\", \"cl\", \"56\" ], [ \"China (中国)\", \"cn\", \"86\" ], [ \"Christmas Island\", \"cx\", \"61\", 2, [ \"89164\" ] ], [ \"Cocos (Keeling) Islands\", \"cc\", \"61\", 1, [ \"89162\" ] ], [ \"Colombia\", \"co\", \"57\" ], [ \"Comoros (جزر القمر)\", \"km\", \"269\" ], [ \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\", \"cd\", \"243\" ], [ \"Congo (Republic) (Congo-Brazzaville)\", \"cg\", \"242\" ], [ \"Cook Islands\", \"ck\", \"682\" ], [ \"Costa Rica\", \"cr\", \"506\" ], [ \"Côte d’Ivoire\", \"ci\", \"225\" ], [ \"Croatia (Hrvatska)\", \"hr\", \"385\" ], [ \"Cuba\", \"cu\", \"53\" ], [ \"Curaçao\", \"cw\", \"599\", 0 ], [ \"Cyprus (Κύπρος)\", \"cy\", \"357\" ], [ \"Czech Republic (Česká republika)\", \"cz\", \"420\" ], [ \"Denmark (Danmark)\", \"dk\", \"45\" ], [ \"Djibouti\", \"dj\", \"253\" ], [ \"Dominica\", \"dm\", \"1\", 13, [ \"767\" ] ], [ \"Dominican Republic (República Dominicana)\", \"do\", \"1\", 2, [ \"809\", \"829\", \"849\" ] ], [ \"Ecuador\", \"ec\", \"593\" ], [ \"Egypt (مصر)\", \"eg\", \"20\" ], [ \"El Salvador\", \"sv\", \"503\" ], [ \"Equatorial Guinea (Guinea Ecuatorial)\", \"gq\", \"240\" ], [ \"Eritrea\", \"er\", \"291\" ], [ \"Estonia (Eesti)\", \"ee\", \"372\" ], [ \"Ethiopia\", \"et\", \"251\" ], [ \"Falkland Islands (Islas Malvinas)\", \"fk\", \"500\" ], [ \"Faroe Islands (Føroyar)\", \"fo\", \"298\" ], [ \"Fiji\", \"fj\", \"679\" ], [ \"Finland (Suomi)\", \"fi\", \"358\", 0 ], [ \"France\", \"fr\", \"33\" ], [ \"French Guiana (Guyane française)\", \"gf\", \"594\" ], [ \"French Polynesia (Polynésie française)\", \"pf\", \"689\" ], [ \"Gabon\", \"ga\", \"241\" ], [ \"Gambia\", \"gm\", \"220\" ], [ \"Georgia (საქართველო)\", \"ge\", \"995\" ], [ \"Germany (Deutschland)\", \"de\", \"49\" ], [ \"Ghana (Gaana)\", \"gh\", \"233\" ], [ \"Gibraltar\", \"gi\", \"350\" ], [ \"Greece (Ελλάδα)\", \"gr\", \"30\" ], [ \"Greenland (Kalaallit Nunaat)\", \"gl\", \"299\" ], [ \"Grenada\", \"gd\", \"1\", 14, [ \"473\" ] ], [ \"Guadeloupe\", \"gp\", \"590\", 0 ], [ \"Guam\", \"gu\", \"1\", 15, [ \"671\" ] ], [ \"Guatemala\", \"gt\", \"502\" ], [ \"Guernsey\", \"gg\", \"44\", 1, [ \"1481\", \"7781\", \"7839\", \"7911\" ] ], [ \"Guinea (Guinée)\", \"gn\", \"224\" ], [ \"Guinea-Bissau (Guiné Bissau)\", \"gw\", \"245\" ], [ \"Guyana\", \"gy\", \"592\" ], [ \"Haiti\", \"ht\", \"509\" ], [ \"Honduras\", \"hn\", \"504\" ], [ \"Hong Kong (香港)\", \"hk\", \"852\" ], [ \"Hungary (Magyarország)\", \"hu\", \"36\" ], [ \"Iceland (Ísland)\", \"is\", \"354\" ], [ \"India (भारत)\", \"in\", \"91\" ], [ \"Indonesia\", \"id\", \"62\" ], [ \"Iran (ایران)\", \"ir\", \"98\" ], [ \"Iraq (العراق)\", \"iq\", \"964\" ], [ \"Ireland\", \"ie\", \"353\" ], [ \"Isle of Man\", \"im\", \"44\", 2, [ \"1624\", \"74576\", \"7524\", \"7924\", \"7624\" ] ], [ \"Israel (ישראל)\", \"il\", \"972\" ], [ \"Italy (Italia)\", \"it\", \"39\", 0 ], [ \"Jamaica\", \"jm\", \"1\", 4, [ \"876\", \"658\" ] ], [ \"Japan (日本)\", \"jp\", \"81\" ], [ \"Jersey\", \"je\", \"44\", 3, [ \"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\" ] ], [ \"Jordan (الأردن)\", \"jo\", \"962\" ], [ \"Kazakhstan (Казахстан)\", \"kz\", \"7\", 1, [ \"33\", \"7\" ] ], [ \"Kenya\", \"ke\", \"254\" ], [ \"Kiribati\", \"ki\", \"686\" ], [ \"Kosovo\", \"xk\", \"383\" ], [ \"Kuwait (الكويت)\", \"kw\", \"965\" ], [ \"Kyrgyzstan (Кыргызстан)\", \"kg\", \"996\" ], [ \"Laos (ລາວ)\", \"la\", \"856\" ], [ \"Latvia (Latvija)\", \"lv\", \"371\" ], [ \"Lebanon (لبنان)\", \"lb\", \"961\" ], [ \"Lesotho\", \"ls\", \"266\" ], [ \"Liberia\", \"lr\", \"231\" ], [ \"Libya (ليبيا)\", \"ly\", \"218\" ], [ \"Liechtenstein\", \"li\", \"423\" ], [ \"Lithuania (Lietuva)\", \"lt\", \"370\" ], [ \"Luxembourg\", \"lu\", \"352\" ], [ \"Macau (澳門)\", \"mo\", \"853\" ], [ \"Macedonia (FYROM) (Македонија)\", \"mk\", \"389\" ], [ \"Madagascar (Madagasikara)\", \"mg\", \"261\" ], [ \"Malawi\", \"mw\", \"265\" ], [ \"Malaysia\", \"my\", \"60\" ], [ \"Maldives\", \"mv\", \"960\" ], [ \"Mali\", \"ml\", \"223\" ], [ \"Malta\", \"mt\", \"356\" ], [ \"Marshall Islands\", \"mh\", \"692\" ], [ \"Martinique\", \"mq\", \"596\" ], [ \"Mauritania (موريتانيا)\", \"mr\", \"222\" ], [ \"Mauritius (Moris)\", \"mu\", \"230\" ], [ \"Mayotte\", \"yt\", \"262\", 1, [ \"269\", \"639\" ] ], [ \"Mexico (México)\", \"mx\", \"52\" ], [ \"Micronesia\", \"fm\", \"691\" ], [ \"Moldova (Republica Moldova)\", \"md\", \"373\" ], [ \"Monaco\", \"mc\", \"377\" ], [ \"Mongolia (Монгол)\", \"mn\", \"976\" ], [ \"Montenegro (Crna Gora)\", \"me\", \"382\" ], [ \"Montserrat\", \"ms\", \"1\", 16, [ \"664\" ] ], [ \"Morocco (المغرب)\", \"ma\", \"212\", 0 ], [ \"Mozambique (Moçambique)\", \"mz\", \"258\" ], [ \"Myanmar (Burma) (မြန်မာ)\", \"mm\", \"95\" ], [ \"Namibia (Namibië)\", \"na\", \"264\" ], [ \"Nauru\", \"nr\", \"674\" ], [ \"Nepal (नेपाल)\", \"np\", \"977\" ], [ \"Netherlands (Nederland)\", \"nl\", \"31\" ], [ \"New Caledonia (Nouvelle-Calédonie)\", \"nc\", \"687\" ], [ \"New Zealand\", \"nz\", \"64\" ], [ \"Nicaragua\", \"ni\", \"505\" ], [ \"Niger (Nijar)\", \"ne\", \"227\" ], [ \"Nigeria\", \"ng\", \"234\" ], [ \"Niue\", \"nu\", \"683\" ], [ \"Norfolk Island\", \"nf\", \"672\" ], [ \"North Korea (조선 민주주의 인민 공화국)\", \"kp\", \"850\" ], [ \"Northern Mariana Islands\", \"mp\", \"1\", 17, [ \"670\" ] ], [ \"Norway (Norge)\", \"no\", \"47\", 0 ], [ \"Oman (عُمان)\", \"om\", \"968\" ], [ \"Pakistan (پاکستان)\", \"pk\", \"92\" ], [ \"Palau\", \"pw\", \"680\" ], [ \"Palestine (فلسطين)\", \"ps\", \"970\" ], [ \"Panama (Panamá)\", \"pa\", \"507\" ], [ \"Papua New Guinea\", \"pg\", \"675\" ], [ \"Paraguay\", \"py\", \"595\" ], [ \"Peru (Perú)\", \"pe\", \"51\" ], [ \"Philippines\", \"ph\", \"63\" ], [ \"Poland (Polska)\", \"pl\", \"48\" ], [ \"Portugal\", \"pt\", \"351\" ], [ \"Puerto Rico\", \"pr\", \"1\", 3, [ \"787\", \"939\" ] ], [ \"Qatar (قطر)\", \"qa\", \"974\" ], [ \"Réunion (La Réunion)\", \"re\", \"262\", 0 ], [ \"Romania (România)\", \"ro\", \"40\" ], [ \"Russia (Россия)\", \"ru\", \"7\", 0 ], [ \"Rwanda\", \"rw\", \"250\" ], [ \"Saint Barthélemy\", \"bl\", \"590\", 1 ], [ \"Saint Helena\", \"sh\", \"290\" ], [ \"Saint Kitts and Nevis\", \"kn\", \"1\", 18, [ \"869\" ] ], [ \"Saint Lucia\", \"lc\", \"1\", 19, [ \"758\" ] ], [ \"Saint Martin (Saint-Martin (partie française))\", \"mf\", \"590\", 2 ], [ \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\", \"pm\", \"508\" ], [ \"Saint Vincent and the Grenadines\", \"vc\", \"1\", 20, [ \"784\" ] ], [ \"Samoa\", \"ws\", \"685\" ], [ \"San Marino\", \"sm\", \"378\" ], [ \"São Tomé and Príncipe (São Tomé e Príncipe)\", \"st\", \"239\" ], [ \"Saudi Arabia (المملكة العربية السعودية)\", \"sa\", \"966\" ], [ \"Senegal (Sénégal)\", \"sn\", \"221\" ], [ \"Serbia (Србија)\", \"rs\", \"381\" ], [ \"Seychelles\", \"sc\", \"248\" ], [ \"Sierra Leone\", \"sl\", \"232\" ], [ \"Singapore\", \"sg\", \"65\" ], [ \"Sint Maarten\", \"sx\", \"1\", 21, [ \"721\" ] ], [ \"Slovakia (Slovensko)\", \"sk\", \"421\" ], [ \"Slovenia (Slovenija)\", \"si\", \"386\" ], [ \"Solomon Islands\", \"sb\", \"677\" ], [ \"Somalia (Soomaaliya)\", \"so\", \"252\" ], [ \"South Africa\", \"za\", \"27\" ], [ \"South Korea (대한민국)\", \"kr\", \"82\" ], [ \"South Sudan (جنوب السودان)\", \"ss\", \"211\" ], [ \"Spain (España)\", \"es\", \"34\" ], [ \"Sri Lanka (ශ්රී ලංකාව)\", \"lk\", \"94\" ], [ \"Sudan (السودان)\", \"sd\", \"249\" ], [ \"Suriname\", \"sr\", \"597\" ], [ \"Svalbard and Jan Mayen\", \"sj\", \"47\", 1, [ \"79\" ] ], [ \"Swaziland\", \"sz\", \"268\" ], [ \"Sweden (Sverige)\", \"se\", \"46\" ], [ \"Switzerland (Schweiz)\", \"ch\", \"41\" ], [ \"Syria (سوريا)\", \"sy\", \"963\" ], [ \"Taiwan (台灣)\", \"tw\", \"886\" ], [ \"Tajikistan\", \"tj\", \"992\" ], [ \"Tanzania\", \"tz\", \"255\" ], [ \"Thailand (ไทย)\", \"th\", \"66\" ], [ \"Timor-Leste\", \"tl\", \"670\" ], [ \"Togo\", \"tg\", \"228\" ], [ \"Tokelau\", \"tk\", \"690\" ], [ \"Tonga\", \"to\", \"676\" ], [ \"Trinidad and Tobago\", \"tt\", \"1\", 22, [ \"868\" ] ], [ \"Tunisia (تونس)\", \"tn\", \"216\" ], [ \"Turkey (Türkiye)\", \"tr\", \"90\" ], [ \"Turkmenistan\", \"tm\", \"993\" ], [ \"Turks and Caicos Islands\", \"tc\", \"1\", 23, [ \"649\" ] ], [ \"Tuvalu\", \"tv\", \"688\" ], [ \"U.S. Virgin Islands\", \"vi\", \"1\", 24, [ \"340\" ] ], [ \"Uganda\", \"ug\", \"256\" ], [ \"Ukraine (Україна)\", \"ua\", \"380\" ], [ \"United Arab Emirates (الإمارات العربية المتحدة)\", \"ae\", \"971\" ], [ \"United Kingdom\", \"gb\", \"44\", 0 ], [ \"United States\", \"us\", \"1\", 0 ], [ \"Uruguay\", \"uy\", \"598\" ], [ \"Uzbekistan (Oʻzbekiston)\", \"uz\", \"998\" ], [ \"Vanuatu\", \"vu\", \"678\" ], [ \"Vatican City (Città del Vaticano)\", \"va\", \"39\", 1, [ \"06698\" ] ], [ \"Venezuela\", \"ve\", \"58\" ], [ \"Vietnam (Việt Nam)\", \"vn\", \"84\" ], [ \"Wallis and Futuna (Wallis-et-Futuna)\", \"wf\", \"681\" ], [ \"Western Sahara (الصحراء الغربية)\", \"eh\", \"212\", 1, [ \"5288\", \"5289\" ] ], [ \"Yemen (اليمن)\", \"ye\", \"967\" ], [ \"Zambia\", \"zm\", \"260\" ], [ \"Zimbabwe\", \"zw\", \"263\" ], [ \"Åland Islands\", \"ax\", \"358\", 1, [ \"18\" ] ] ];\n // loop over all of the countries above, restructuring the data to be objects with named keys\n for (var i = 0; i < allCountries.length; i++) {\n var c = allCountries[i];\n allCountries[i] = {\n name: c[0],\n iso2: c[1],\n dialCode: c[2],\n priority: c[3] || 0,\n areaCodes: c[4] || null\n };\n }\n \"use strict\";\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n var intlTelInputGlobals = {\n getInstance: function getInstance(input) {\n var id = input.getAttribute(\"data-intl-tel-input-id\");\n return window.intlTelInputGlobals.instances[id];\n },\n instances: {}\n };\n if (typeof window === \"object\") window.intlTelInputGlobals = intlTelInputGlobals;\n // these vars persist through all instances of the plugin\n var id = 0;\n var defaults = {\n // whether or not to allow the dropdown\n allowDropdown: true,\n // if there is just a dial code in the input: remove it on blur\n autoHideDialCode: true,\n // add a placeholder in the input with an example number for the selected country\n autoPlaceholder: \"polite\",\n // modify the parentClass\n customContainer: \"\",\n // modify the auto placeholder\n customPlaceholder: null,\n // append menu to specified element\n dropdownContainer: null,\n // don't display these countries\n excludeCountries: [],\n // format the input value during initialisation and on setNumber\n formatOnDisplay: true,\n // geoIp lookup function\n geoIpLookup: null,\n // inject a hidden input with this name, and on submit, populate it with the result of getNumber\n hiddenInput: \"\",\n // initial country\n initialCountry: \"\",\n // localized country names e.g. { 'de': 'Deutschland' }\n localizedCountries: null,\n // don't insert international dial codes\n nationalMode: true,\n // display only these countries\n onlyCountries: [],\n // number type to use for placeholders\n placeholderNumberType: \"MOBILE\",\n // the countries at the top of the list. defaults to united states and united kingdom\n preferredCountries: [ \"us\", \"gb\" ],\n // display the country dial code next to the selected flag so it's not part of the typed number\n separateDialCode: false,\n // specify the path to the libphonenumber script to enable validation/formatting\n utilsScript: \"\"\n };\n // https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes\n var regionlessNanpNumbers = [ \"800\", \"822\", \"833\", \"844\", \"855\", \"866\", \"877\", \"880\", \"881\", \"882\", \"883\", \"884\", \"885\", \"886\", \"887\", \"888\", \"889\" ];\n if (typeof window === \"object\") {\n // keep track of if the window.load event has fired as impossible to check after the fact\n window.addEventListener(\"load\", function() {\n // UPDATE: use a public static field so we can fudge it in the tests\n window.intlTelInputGlobals.windowLoaded = true;\n });\n }\n // utility function to iterate over an object. can't use Object.entries or native forEach because\n // of IE11\n var forEachProp = function forEachProp(obj, callback) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n callback(keys[i], obj[keys[i]]);\n }\n };\n // run a method on each instance of the plugin\n var forEachInstance = function forEachInstance(method) {\n forEachProp(window.intlTelInputGlobals.instances, function(key) {\n window.intlTelInputGlobals.instances[key][method]();\n });\n };\n // this is our plugin class that we will create an instance of\n // eslint-disable-next-line no-unused-vars\n var Iti = /*#__PURE__*/\n function() {\n function Iti(input, options) {\n var _this = this;\n _classCallCheck(this, Iti);\n this.id = id++;\n this.telInput = input;\n this.activeItem = null;\n this.highlightedItem = null;\n // process specified options / defaults\n // alternative to Object.assign, which isn't supported by IE11\n var customOptions = options || {};\n this.options = {};\n forEachProp(defaults, function(key, value) {\n _this.options[key] = customOptions.hasOwnProperty(key) ? customOptions[key] : value;\n });\n this.hadInitialPlaceholder = Boolean(input.getAttribute(\"placeholder\"));\n }\n _createClass(Iti, [ {\n key: \"_init\",\n value: function _init() {\n var _this2 = this;\n // if in nationalMode, disable options relating to dial codes\n if (this.options.nationalMode) this.options.autoHideDialCode = false;\n // if separateDialCode then doesn't make sense to A) insert dial code into input\n // (autoHideDialCode), and B) display national numbers (because we're displaying the country\n // dial code next to them)\n if (this.options.separateDialCode) {\n this.options.autoHideDialCode = this.options.nationalMode = false;\n }\n // we cannot just test screen size as some smartphones/website meta tags will report desktop\n // resolutions\n // Note: for some reason jasmine breaks if you put this in the main Plugin function with the\n // rest of these declarations\n // Note: to target Android Mobiles (and not Tablets), we must find 'Android' and 'Mobile'\n this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n if (this.isMobile) {\n // trigger the mobile dropdown css\n document.body.classList.add(\"iti-mobile\");\n // on mobile, we want a full screen dropdown, so we must append it to the body\n if (!this.options.dropdownContainer) this.options.dropdownContainer = document.body;\n }\n // these promises get resolved when their individual requests complete\n // this way the dev can do something like iti.promise.then(...) to know when all requests are\n // complete\n if (typeof Promise !== \"undefined\") {\n var autoCountryPromise = new Promise(function(resolve, reject) {\n _this2.resolveAutoCountryPromise = resolve;\n _this2.rejectAutoCountryPromise = reject;\n });\n var utilsScriptPromise = new Promise(function(resolve, reject) {\n _this2.resolveUtilsScriptPromise = resolve;\n _this2.rejectUtilsScriptPromise = reject;\n });\n this.promise = Promise.all([ autoCountryPromise, utilsScriptPromise ]);\n } else {\n // prevent errors when Promise doesn't exist\n this.resolveAutoCountryPromise = this.rejectAutoCountryPromise = function() {};\n this.resolveUtilsScriptPromise = this.rejectUtilsScriptPromise = function() {};\n }\n // in various situations there could be no country selected initially, but we need to be able\n // to assume this variable exists\n this.selectedCountryData = {};\n // process all the data: onlyCountries, excludeCountries, preferredCountries etc\n this._processCountryData();\n // generate the markup\n this._generateMarkup();\n // set the initial state of the input value and the selected flag\n this._setInitialState();\n // start all of the event listeners: autoHideDialCode, input keydown, selectedFlag click\n this._initListeners();\n // utils script, and auto country\n this._initRequests();\n }\n }, {\n key: \"_processCountryData\",\n value: function _processCountryData() {\n // process onlyCountries or excludeCountries array if present\n this._processAllCountries();\n // process the countryCodes map\n this._processCountryCodes();\n // process the preferredCountries\n this._processPreferredCountries();\n // translate countries according to localizedCountries option\n if (this.options.localizedCountries) this._translateCountriesByLocale();\n // sort countries by name\n if (this.options.onlyCountries.length || this.options.localizedCountries) {\n this.countries.sort(this._countryNameSort);\n }\n }\n }, {\n key: \"_addCountryCode\",\n value: function _addCountryCode(iso2, dialCode, priority) {\n if (dialCode.length > this.dialCodeMaxLen) {\n this.dialCodeMaxLen = dialCode.length;\n }\n if (!this.countryCodes.hasOwnProperty(dialCode)) {\n this.countryCodes[dialCode] = [];\n }\n // bail if we already have this country for this dialCode\n for (var i = 0; i < this.countryCodes[dialCode].length; i++) {\n if (this.countryCodes[dialCode][i] === iso2) return;\n }\n // check for undefined as 0 is falsy\n var index = priority !== undefined ? priority : this.countryCodes[dialCode].length;\n this.countryCodes[dialCode][index] = iso2;\n }\n }, {\n key: \"_processAllCountries\",\n value: function _processAllCountries() {\n if (this.options.onlyCountries.length) {\n var lowerCaseOnlyCountries = this.options.onlyCountries.map(function(country) {\n return country.toLowerCase();\n });\n this.countries = allCountries.filter(function(country) {\n return lowerCaseOnlyCountries.indexOf(country.iso2) > -1;\n });\n } else if (this.options.excludeCountries.length) {\n var lowerCaseExcludeCountries = this.options.excludeCountries.map(function(country) {\n return country.toLowerCase();\n });\n this.countries = allCountries.filter(function(country) {\n return lowerCaseExcludeCountries.indexOf(country.iso2) === -1;\n });\n } else {\n this.countries = allCountries;\n }\n }\n }, {\n key: \"_translateCountriesByLocale\",\n value: function _translateCountriesByLocale() {\n for (var i = 0; i < this.countries.length; i++) {\n var iso = this.countries[i].iso2.toLowerCase();\n if (this.options.localizedCountries.hasOwnProperty(iso)) {\n this.countries[i].name = this.options.localizedCountries[iso];\n }\n }\n }\n }, {\n key: \"_countryNameSort\",\n value: function _countryNameSort(a, b) {\n return a.name.localeCompare(b.name);\n }\n }, {\n key: \"_processCountryCodes\",\n value: function _processCountryCodes() {\n this.dialCodeMaxLen = 0;\n this.countryCodes = {};\n // first: add dial codes\n for (var i = 0; i < this.countries.length; i++) {\n var c = this.countries[i];\n this._addCountryCode(c.iso2, c.dialCode, c.priority);\n }\n // next: add area codes\n // this is a second loop over countries, to make sure we have all of the \"root\" countries\n // already in the map, so that we can access them, as each time we add an area code substring\n // to the map, we also need to include the \"root\" country's code, as that also matches\n for (var _i = 0; _i < this.countries.length; _i++) {\n var _c = this.countries[_i];\n // area codes\n if (_c.areaCodes) {\n var rootCountryCode = this.countryCodes[_c.dialCode][0];\n // for each area code\n for (var j = 0; j < _c.areaCodes.length; j++) {\n var areaCode = _c.areaCodes[j];\n // for each digit in the area code to add all partial matches as well\n for (var k = 1; k < areaCode.length; k++) {\n var partialDialCode = _c.dialCode + areaCode.substr(0, k);\n // start with the root country, as that also matches this dial code\n this._addCountryCode(rootCountryCode, partialDialCode);\n this._addCountryCode(_c.iso2, partialDialCode);\n }\n // add the full area code\n this._addCountryCode(_c.iso2, _c.dialCode + areaCode);\n }\n }\n }\n }\n }, {\n key: \"_processPreferredCountries\",\n value: function _processPreferredCountries() {\n this.preferredCountries = [];\n for (var i = 0; i < this.options.preferredCountries.length; i++) {\n var countryCode = this.options.preferredCountries[i].toLowerCase();\n var countryData = this._getCountryData(countryCode, false, true);\n if (countryData) this.preferredCountries.push(countryData);\n }\n }\n }, {\n key: \"_createEl\",\n value: function _createEl(name, attrs, container) {\n var el = document.createElement(name);\n if (attrs) forEachProp(attrs, function(key, value) {\n return el.setAttribute(key, value);\n });\n if (container) container.appendChild(el);\n return el;\n }\n }, {\n key: \"_generateMarkup\",\n value: function _generateMarkup() {\n // if autocomplete does not exist on the element and its form, then\n // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can\n // easily put the plugin in an inconsistent state e.g. the wrong flag selected for the\n // autocompleted number, which on submit could mean wrong number is saved (esp in nationalMode)\n if (!this.telInput.hasAttribute(\"autocomplete\") && !(this.telInput.form && this.telInput.form.hasAttribute(\"autocomplete\"))) {\n this.telInput.setAttribute(\"autocomplete\", \"off\");\n }\n // containers (mostly for positioning)\n var parentClass = \"iti\";\n if (this.options.allowDropdown) parentClass += \" iti--allow-dropdown\";\n if (this.options.separateDialCode) parentClass += \" iti--separate-dial-code\";\n if (this.options.customContainer) {\n parentClass += \" \";\n parentClass += this.options.customContainer;\n }\n var wrapper = this._createEl(\"div\", {\n \"class\": parentClass\n });\n this.telInput.parentNode.insertBefore(wrapper, this.telInput);\n this.flagsContainer = this._createEl(\"div\", {\n \"class\": \"iti__flag-container\"\n }, wrapper);\n wrapper.appendChild(this.telInput);\n // selected flag (displayed to left of input)\n this.selectedFlag = this._createEl(\"div\", {\n \"class\": \"iti__selected-flag\",\n role: \"combobox\",\n \"aria-owns\": \"iti-\".concat(this.id, \"__country-listbox\"),\n \"aria-expanded\": \"false\"\n }, this.flagsContainer);\n this.selectedFlagInner = this._createEl(\"div\", {\n \"class\": \"iti__flag\"\n }, this.selectedFlag);\n if (this.options.separateDialCode) {\n this.selectedDialCode = this._createEl(\"div\", {\n \"class\": \"iti__selected-dial-code\"\n }, this.selectedFlag);\n }\n if (this.options.allowDropdown) {\n // make element focusable and tab navigable\n this.selectedFlag.setAttribute(\"tabindex\", \"0\");\n this.dropdownArrow = this._createEl(\"div\", {\n \"class\": \"iti__arrow\"\n }, this.selectedFlag);\n // country dropdown: preferred countries, then divider, then all countries\n this.countryList = this._createEl(\"ul\", {\n \"class\": \"iti__country-list iti__hide\",\n id: \"iti-\".concat(this.id, \"__country-listbox\"),\n role: \"listbox\"\n });\n if (this.preferredCountries.length) {\n this._appendListItems(this.preferredCountries, \"iti__preferred\", true);\n this._createEl(\"li\", {\n \"class\": \"iti__divider\",\n role: \"separator\",\n \"aria-disabled\": \"true\"\n }, this.countryList);\n }\n this._appendListItems(this.countries, \"iti__standard\");\n // create dropdownContainer markup\n if (this.options.dropdownContainer) {\n this.dropdown = this._createEl(\"div\", {\n \"class\": \"iti iti--container\"\n });\n this.dropdown.appendChild(this.countryList);\n } else {\n this.flagsContainer.appendChild(this.countryList);\n }\n }\n if (this.options.hiddenInput) {\n var hiddenInputName = this.options.hiddenInput;\n var name = this.telInput.getAttribute(\"name\");\n if (name) {\n var i = name.lastIndexOf(\"[\");\n // if input name contains square brackets, then give the hidden input the same name,\n // replacing the contents of the last set of brackets with the given hiddenInput name\n if (i !== -1) hiddenInputName = \"\".concat(name.substr(0, i), \"[\").concat(hiddenInputName, \"]\");\n }\n this.hiddenInput = this._createEl(\"input\", {\n type: \"hidden\",\n name: hiddenInputName\n });\n wrapper.appendChild(this.hiddenInput);\n }\n }\n }, {\n key: \"_appendListItems\",\n value: function _appendListItems(countries, className, preferred) {\n // we create so many DOM elements, it is faster to build a temp string\n // and then add everything to the DOM in one go at the end\n var tmp = \"\";\n // for each country\n for (var i = 0; i < countries.length; i++) {\n var c = countries[i];\n var idSuffix = preferred ? \"-preferred\" : \"\";\n // open the list item\n tmp += \"\");\n // add the flag\n tmp += \"\");\n // and the country name and dial code\n tmp += \"\".concat(c.name, \" \");\n tmp += \"+\".concat(c.dialCode, \" \");\n // close the list item\n tmp += \" \";\n }\n this.countryList.insertAdjacentHTML(\"beforeend\", tmp);\n }\n }, {\n key: \"_setInitialState\",\n value: function _setInitialState() {\n var val = this.telInput.value;\n var dialCode = this._getDialCode(val);\n var isRegionlessNanp = this._isRegionlessNanp(val);\n var _this$options = this.options, initialCountry = _this$options.initialCountry, nationalMode = _this$options.nationalMode, autoHideDialCode = _this$options.autoHideDialCode, separateDialCode = _this$options.separateDialCode;\n // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the\n // flag, else fall back to the default country\n if (dialCode && !isRegionlessNanp) {\n this._updateFlagFromNumber(val);\n } else if (initialCountry !== \"auto\") {\n // see if we should select a flag\n if (initialCountry) {\n this._setFlag(initialCountry.toLowerCase());\n } else {\n if (dialCode && isRegionlessNanp) {\n // has intl dial code, is regionless nanp, and no initialCountry, so default to US\n this._setFlag(\"us\");\n } else {\n // no dial code and no initialCountry, so default to first in list\n this.defaultCountry = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.countries[0].iso2;\n if (!val) {\n this._setFlag(this.defaultCountry);\n }\n }\n }\n // if empty and no nationalMode and no autoHideDialCode then insert the default dial code\n if (!val && !nationalMode && !autoHideDialCode && !separateDialCode) {\n this.telInput.value = \"+\".concat(this.selectedCountryData.dialCode);\n }\n }\n // NOTE: if initialCountry is set to auto, that will be handled separately\n // format - note this wont be run after _updateDialCode as that's only called if no val\n if (val) this._updateValFromNumber(val);\n }\n }, {\n key: \"_initListeners\",\n value: function _initListeners() {\n this._initKeyListeners();\n if (this.options.autoHideDialCode) this._initBlurListeners();\n if (this.options.allowDropdown) this._initDropdownListeners();\n if (this.hiddenInput) this._initHiddenInputListener();\n }\n }, {\n key: \"_initHiddenInputListener\",\n value: function _initHiddenInputListener() {\n var _this3 = this;\n this._handleHiddenInputSubmit = function() {\n _this3.hiddenInput.value = _this3.getNumber();\n };\n if (this.telInput.form) this.telInput.form.addEventListener(\"submit\", this._handleHiddenInputSubmit);\n }\n }, {\n key: \"_getClosestLabel\",\n value: function _getClosestLabel() {\n var el = this.telInput;\n while (el && el.tagName !== \"LABEL\") {\n el = el.parentNode;\n }\n return el;\n }\n }, {\n key: \"_initDropdownListeners\",\n value: function _initDropdownListeners() {\n var _this4 = this;\n // hack for input nested inside label (which is valid markup): clicking the selected-flag to\n // open the dropdown would then automatically trigger a 2nd click on the input which would\n // close it again\n this._handleLabelClick = function(e) {\n // if the dropdown is closed, then focus the input, else ignore the click\n if (_this4.countryList.classList.contains(\"iti__hide\")) _this4.telInput.focus(); else e.preventDefault();\n };\n var label = this._getClosestLabel();\n if (label) label.addEventListener(\"click\", this._handleLabelClick);\n // toggle country dropdown on click\n this._handleClickSelectedFlag = function() {\n // only intercept this event if we're opening the dropdown\n // else let it bubble up to the top (\"click-off-to-close\" listener)\n // we cannot just stopPropagation as it may be needed to close another instance\n if (_this4.countryList.classList.contains(\"iti__hide\") && !_this4.telInput.disabled && !_this4.telInput.readOnly) {\n _this4._showDropdown();\n }\n };\n this.selectedFlag.addEventListener(\"click\", this._handleClickSelectedFlag);\n // open dropdown list if currently focused\n this._handleFlagsContainerKeydown = function(e) {\n var isDropdownHidden = _this4.countryList.classList.contains(\"iti__hide\");\n if (isDropdownHidden && [ \"ArrowUp\", \"Up\", \"ArrowDown\", \"Down\", \" \", \"Enter\" ].indexOf(e.key) !== -1) {\n // prevent form from being submitted if \"ENTER\" was pressed\n e.preventDefault();\n // prevent event from being handled again by document\n e.stopPropagation();\n _this4._showDropdown();\n }\n // allow navigation from dropdown to input on TAB\n if (e.key === \"Tab\") _this4._closeDropdown();\n };\n this.flagsContainer.addEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n }\n }, {\n key: \"_initRequests\",\n value: function _initRequests() {\n var _this5 = this;\n // if the user has specified the path to the utils script, fetch it on window.load, else resolve\n if (this.options.utilsScript && !window.intlTelInputUtils) {\n // if the plugin is being initialised after the window.load event has already been fired\n if (window.intlTelInputGlobals.windowLoaded) {\n window.intlTelInputGlobals.loadUtils(this.options.utilsScript);\n } else {\n // wait until the load event so we don't block any other requests e.g. the flags image\n window.addEventListener(\"load\", function() {\n window.intlTelInputGlobals.loadUtils(_this5.options.utilsScript);\n });\n }\n } else this.resolveUtilsScriptPromise();\n if (this.options.initialCountry === \"auto\") this._loadAutoCountry(); else this.resolveAutoCountryPromise();\n }\n }, {\n key: \"_loadAutoCountry\",\n value: function _loadAutoCountry() {\n // 3 options:\n // 1) already loaded (we're done)\n // 2) not already started loading (start)\n // 3) already started loading (do nothing - just wait for loading callback to fire)\n if (window.intlTelInputGlobals.autoCountry) {\n this.handleAutoCountry();\n } else if (!window.intlTelInputGlobals.startedLoadingAutoCountry) {\n // don't do this twice!\n window.intlTelInputGlobals.startedLoadingAutoCountry = true;\n if (typeof this.options.geoIpLookup === \"function\") {\n this.options.geoIpLookup(function(countryCode) {\n window.intlTelInputGlobals.autoCountry = countryCode.toLowerCase();\n // tell all instances the auto country is ready\n // TODO: this should just be the current instances\n // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight\n // away (e.g. if they have already done the geo ip lookup somewhere else). Using\n // setTimeout means that the current thread of execution will finish before executing\n // this, which allows the plugin to finish initialising.\n setTimeout(function() {\n return forEachInstance(\"handleAutoCountry\");\n });\n }, function() {\n return forEachInstance(\"rejectAutoCountryPromise\");\n });\n }\n }\n }\n }, {\n key: \"_initKeyListeners\",\n value: function _initKeyListeners() {\n var _this6 = this;\n // update flag on keyup\n this._handleKeyupEvent = function() {\n if (_this6._updateFlagFromNumber(_this6.telInput.value)) {\n _this6._triggerCountryChange();\n }\n };\n this.telInput.addEventListener(\"keyup\", this._handleKeyupEvent);\n // update flag on cut/paste events (now supported in all major browsers)\n this._handleClipboardEvent = function() {\n // hack because \"paste\" event is fired before input is updated\n setTimeout(_this6._handleKeyupEvent);\n };\n this.telInput.addEventListener(\"cut\", this._handleClipboardEvent);\n this.telInput.addEventListener(\"paste\", this._handleClipboardEvent);\n }\n }, {\n key: \"_cap\",\n value: function _cap(number) {\n var max = this.telInput.getAttribute(\"maxlength\");\n return max && number.length > max ? number.substr(0, max) : number;\n }\n }, {\n key: \"_initBlurListeners\",\n value: function _initBlurListeners() {\n var _this7 = this;\n // on blur or form submit: if just a dial code then remove it\n this._handleSubmitOrBlurEvent = function() {\n _this7._removeEmptyDialCode();\n };\n if (this.telInput.form) this.telInput.form.addEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n this.telInput.addEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n }\n }, {\n key: \"_removeEmptyDialCode\",\n value: function _removeEmptyDialCode() {\n if (this.telInput.value.charAt(0) === \"+\") {\n var numeric = this._getNumeric(this.telInput.value);\n // if just a plus, or if just a dial code\n if (!numeric || this.selectedCountryData.dialCode === numeric) {\n this.telInput.value = \"\";\n }\n }\n }\n }, {\n key: \"_getNumeric\",\n value: function _getNumeric(s) {\n return s.replace(/\\D/g, \"\");\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(name) {\n // have to use old school document.createEvent as IE11 doesn't support `new Event()` syntax\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n // can bubble, and is cancellable\n this.telInput.dispatchEvent(e);\n }\n }, {\n key: \"_showDropdown\",\n value: function _showDropdown() {\n this.countryList.classList.remove(\"iti__hide\");\n this.selectedFlag.setAttribute(\"aria-expanded\", \"true\");\n this._setDropdownPosition();\n // update highlighting and scroll to active list item\n if (this.activeItem) {\n this._highlightListItem(this.activeItem, false);\n this._scrollTo(this.activeItem, true);\n }\n // bind all the dropdown-related listeners: mouseover, click, click-off, keydown\n this._bindDropdownListeners();\n // update the arrow\n this.dropdownArrow.classList.add(\"iti__arrow--up\");\n this._trigger(\"open:countrydropdown\");\n }\n }, {\n key: \"_toggleClass\",\n value: function _toggleClass(el, className, shouldHaveClass) {\n if (shouldHaveClass && !el.classList.contains(className)) el.classList.add(className); else if (!shouldHaveClass && el.classList.contains(className)) el.classList.remove(className);\n }\n }, {\n key: \"_setDropdownPosition\",\n value: function _setDropdownPosition() {\n var _this8 = this;\n if (this.options.dropdownContainer) {\n this.options.dropdownContainer.appendChild(this.dropdown);\n }\n if (!this.isMobile) {\n var pos = this.telInput.getBoundingClientRect();\n // windowTop from https://stackoverflow.com/a/14384091/217866\n var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n var inputTop = pos.top + windowTop;\n var dropdownHeight = this.countryList.offsetHeight;\n // dropdownFitsBelow = (dropdownBottom < windowBottom)\n var dropdownFitsBelow = inputTop + this.telInput.offsetHeight + dropdownHeight < windowTop + window.innerHeight;\n var dropdownFitsAbove = inputTop - dropdownHeight > windowTop;\n // by default, the dropdown will be below the input. If we want to position it above the\n // input, we add the dropup class.\n this._toggleClass(this.countryList, \"iti__country-list--dropup\", !dropdownFitsBelow && dropdownFitsAbove);\n // if dropdownContainer is enabled, calculate postion\n if (this.options.dropdownContainer) {\n // by default the dropdown will be directly over the input because it's not in the flow.\n // If we want to position it below, we need to add some extra top value.\n var extraTop = !dropdownFitsBelow && dropdownFitsAbove ? 0 : this.telInput.offsetHeight;\n // calculate placement\n this.dropdown.style.top = \"\".concat(inputTop + extraTop, \"px\");\n this.dropdown.style.left = \"\".concat(pos.left + document.body.scrollLeft, \"px\");\n // close menu on window scroll\n this._handleWindowScroll = function() {\n return _this8._closeDropdown();\n };\n window.addEventListener(\"scroll\", this._handleWindowScroll);\n }\n }\n }\n }, {\n key: \"_getClosestListItem\",\n value: function _getClosestListItem(target) {\n var el = target;\n while (el && el !== this.countryList && !el.classList.contains(\"iti__country\")) {\n el = el.parentNode;\n }\n // if we reached the countryList element, then return null\n return el === this.countryList ? null : el;\n }\n }, {\n key: \"_bindDropdownListeners\",\n value: function _bindDropdownListeners() {\n var _this9 = this;\n // when mouse over a list item, just highlight that one\n // we add the class \"highlight\", so if they hit \"enter\" we know which one to select\n this._handleMouseoverCountryList = function(e) {\n // handle event delegation, as we're listening for this event on the countryList\n var listItem = _this9._getClosestListItem(e.target);\n if (listItem) _this9._highlightListItem(listItem, false);\n };\n this.countryList.addEventListener(\"mouseover\", this._handleMouseoverCountryList);\n // listen for country selection\n this._handleClickCountryList = function(e) {\n var listItem = _this9._getClosestListItem(e.target);\n if (listItem) _this9._selectListItem(listItem);\n };\n this.countryList.addEventListener(\"click\", this._handleClickCountryList);\n // click off to close\n // (except when this initial opening click is bubbling up)\n // we cannot just stopPropagation as it may be needed to close another instance\n var isOpening = true;\n this._handleClickOffToClose = function() {\n if (!isOpening) _this9._closeDropdown();\n isOpening = false;\n };\n document.documentElement.addEventListener(\"click\", this._handleClickOffToClose);\n // listen for up/down scrolling, enter to select, or letters to jump to country name.\n // use keydown as keypress doesn't fire for non-char keys and we want to catch if they\n // just hit down and hold it to scroll down (no keyup event).\n // listen on the document because that's where key events are triggered if no input has focus\n var query = \"\";\n var queryTimer = null;\n this._handleKeydownOnDropdown = function(e) {\n // prevent down key from scrolling the whole page,\n // and enter key from submitting a form etc\n e.preventDefault();\n // up and down to navigate\n if (e.key === \"ArrowUp\" || e.key === \"Up\" || e.key === \"ArrowDown\" || e.key === \"Down\") _this9._handleUpDownKey(e.key); else if (e.key === \"Enter\") _this9._handleEnterKey(); else if (e.key === \"Escape\") _this9._closeDropdown(); else if (/^[a-zA-ZÀ-ÿа-яА-Я ]$/.test(e.key)) {\n // jump to countries that start with the query string\n if (queryTimer) clearTimeout(queryTimer);\n query += e.key.toLowerCase();\n _this9._searchForCountry(query);\n // if the timer hits 1 second, reset the query\n queryTimer = setTimeout(function() {\n query = \"\";\n }, 1e3);\n }\n };\n document.addEventListener(\"keydown\", this._handleKeydownOnDropdown);\n }\n }, {\n key: \"_handleUpDownKey\",\n value: function _handleUpDownKey(key) {\n var next = key === \"ArrowUp\" || key === \"Up\" ? this.highlightedItem.previousElementSibling : this.highlightedItem.nextElementSibling;\n if (next) {\n // skip the divider\n if (next.classList.contains(\"iti__divider\")) {\n next = key === \"ArrowUp\" || key === \"Up\" ? next.previousElementSibling : next.nextElementSibling;\n }\n this._highlightListItem(next, true);\n }\n }\n }, {\n key: \"_handleEnterKey\",\n value: function _handleEnterKey() {\n if (this.highlightedItem) this._selectListItem(this.highlightedItem);\n }\n }, {\n key: \"_searchForCountry\",\n value: function _searchForCountry(query) {\n for (var i = 0; i < this.countries.length; i++) {\n if (this._startsWith(this.countries[i].name, query)) {\n var listItem = this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(this.countries[i].iso2));\n // update highlighting and scroll\n this._highlightListItem(listItem, false);\n this._scrollTo(listItem, true);\n break;\n }\n }\n }\n }, {\n key: \"_startsWith\",\n value: function _startsWith(a, b) {\n return a.substr(0, b.length).toLowerCase() === b;\n }\n }, {\n key: \"_updateValFromNumber\",\n value: function _updateValFromNumber(originalNumber) {\n var number = originalNumber;\n if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) {\n var useNational = !this.options.separateDialCode && (this.options.nationalMode || number.charAt(0) !== \"+\");\n var _intlTelInputUtils$nu = intlTelInputUtils.numberFormat, NATIONAL = _intlTelInputUtils$nu.NATIONAL, INTERNATIONAL = _intlTelInputUtils$nu.INTERNATIONAL;\n var format = useNational ? NATIONAL : INTERNATIONAL;\n number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format);\n }\n number = this._beforeSetNumber(number);\n this.telInput.value = number;\n }\n }, {\n key: \"_updateFlagFromNumber\",\n value: function _updateFlagFromNumber(originalNumber) {\n // if we're in nationalMode and we already have US/Canada selected, make sure the number starts\n // with a +1 so _getDialCode will be able to extract the area code\n // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag\n // from the number), that means we're initialising the plugin with a number that already has a\n // dial code, so fine to ignore this bit\n var number = originalNumber;\n var selectedDialCode = this.selectedCountryData.dialCode;\n var isNanp = selectedDialCode === \"1\";\n if (number && this.options.nationalMode && isNanp && number.charAt(0) !== \"+\") {\n if (number.charAt(0) !== \"1\") number = \"1\".concat(number);\n number = \"+\".concat(number);\n }\n // update flag if user types area code for another country\n if (this.options.separateDialCode && selectedDialCode && number.charAt(0) !== \"+\") {\n number = \"+\".concat(selectedDialCode).concat(number);\n }\n // try and extract valid dial code from input\n var dialCode = this._getDialCode(number);\n var numeric = this._getNumeric(number);\n var countryCode = null;\n if (dialCode) {\n var countryCodes = this.countryCodes[this._getNumeric(dialCode)];\n // check if the right country is already selected. this should be false if the number is\n // longer than the matched dial code because in this case we need to make sure that if\n // there are multiple country matches, that the first one is selected (note: we could\n // just check that here, but it requires the same loop that we already have later)\n var alreadySelected = countryCodes.indexOf(this.selectedCountryData.iso2) !== -1 && numeric.length <= dialCode.length - 1;\n var isRegionlessNanpNumber = selectedDialCode === \"1\" && this._isRegionlessNanp(numeric);\n // only update the flag if:\n // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp)\n // AND\n // B) the right country is not already selected\n if (!isRegionlessNanpNumber && !alreadySelected) {\n // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first\n // non-empty index\n for (var j = 0; j < countryCodes.length; j++) {\n if (countryCodes[j]) {\n countryCode = countryCodes[j];\n break;\n }\n }\n }\n } else if (number.charAt(0) === \"+\" && numeric.length) {\n // invalid dial code, so empty\n // Note: use getNumeric here because the number has not been formatted yet, so could contain\n // bad chars\n countryCode = \"\";\n } else if (!number || number === \"+\") {\n // empty, or just a plus, so default\n countryCode = this.defaultCountry;\n }\n if (countryCode !== null) {\n return this._setFlag(countryCode);\n }\n return false;\n }\n }, {\n key: \"_isRegionlessNanp\",\n value: function _isRegionlessNanp(number) {\n var numeric = this._getNumeric(number);\n if (numeric.charAt(0) === \"1\") {\n var areaCode = numeric.substr(1, 3);\n return regionlessNanpNumbers.indexOf(areaCode) !== -1;\n }\n return false;\n }\n }, {\n key: \"_highlightListItem\",\n value: function _highlightListItem(listItem, shouldFocus) {\n var prevItem = this.highlightedItem;\n if (prevItem) prevItem.classList.remove(\"iti__highlight\");\n this.highlightedItem = listItem;\n this.highlightedItem.classList.add(\"iti__highlight\");\n if (shouldFocus) this.highlightedItem.focus();\n }\n }, {\n key: \"_getCountryData\",\n value: function _getCountryData(countryCode, ignoreOnlyCountriesOption, allowFail) {\n var countryList = ignoreOnlyCountriesOption ? allCountries : this.countries;\n for (var i = 0; i < countryList.length; i++) {\n if (countryList[i].iso2 === countryCode) {\n return countryList[i];\n }\n }\n if (allowFail) {\n return null;\n }\n throw new Error(\"No country data for '\".concat(countryCode, \"'\"));\n }\n }, {\n key: \"_setFlag\",\n value: function _setFlag(countryCode) {\n var prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {};\n // do this first as it will throw an error and stop if countryCode is invalid\n this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {};\n // update the defaultCountry - we only need the iso2 from now on, so just store that\n if (this.selectedCountryData.iso2) {\n this.defaultCountry = this.selectedCountryData.iso2;\n }\n this.selectedFlagInner.setAttribute(\"class\", \"iti__flag iti__\".concat(countryCode));\n // update the selected country's title attribute\n var title = countryCode ? \"\".concat(this.selectedCountryData.name, \": +\").concat(this.selectedCountryData.dialCode) : \"Unknown\";\n this.selectedFlag.setAttribute(\"title\", title);\n if (this.options.separateDialCode) {\n var dialCode = this.selectedCountryData.dialCode ? \"+\".concat(this.selectedCountryData.dialCode) : \"\";\n this.selectedDialCode.innerHTML = dialCode;\n // offsetWidth is zero if input is in a hidden container during initialisation\n var selectedFlagWidth = this.selectedFlag.offsetWidth || this._getHiddenSelectedFlagWidth();\n // add 6px of padding after the grey selected-dial-code box, as this is what we use in the css\n this.telInput.style.paddingLeft = \"\".concat(selectedFlagWidth + 6, \"px\");\n }\n // and the input's placeholder\n this._updatePlaceholder();\n // update the active list item\n if (this.options.allowDropdown) {\n var prevItem = this.activeItem;\n if (prevItem) {\n prevItem.classList.remove(\"iti__active\");\n prevItem.setAttribute(\"aria-selected\", \"false\");\n }\n if (countryCode) {\n // check if there is a preferred item first, else fall back to standard\n var nextItem = this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode, \"-preferred\")) || this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode));\n nextItem.setAttribute(\"aria-selected\", \"true\");\n nextItem.classList.add(\"iti__active\");\n this.activeItem = nextItem;\n this.selectedFlag.setAttribute(\"aria-activedescendant\", nextItem.getAttribute(\"id\"));\n }\n }\n // return if the flag has changed or not\n return prevCountry.iso2 !== countryCode;\n }\n }, {\n key: \"_getHiddenSelectedFlagWidth\",\n value: function _getHiddenSelectedFlagWidth() {\n // to get the right styling to apply, all we need is a shallow clone of the container,\n // and then to inject a deep clone of the selectedFlag element\n var containerClone = this.telInput.parentNode.cloneNode();\n containerClone.style.visibility = \"hidden\";\n document.body.appendChild(containerClone);\n var selectedFlagClone = this.selectedFlag.cloneNode(true);\n containerClone.appendChild(selectedFlagClone);\n var width = selectedFlagClone.offsetWidth;\n containerClone.parentNode.removeChild(containerClone);\n return width;\n }\n }, {\n key: \"_updatePlaceholder\",\n value: function _updatePlaceholder() {\n var shouldSetPlaceholder = this.options.autoPlaceholder === \"aggressive\" || !this.hadInitialPlaceholder && this.options.autoPlaceholder === \"polite\";\n if (window.intlTelInputUtils && shouldSetPlaceholder) {\n var numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType];\n var placeholder = this.selectedCountryData.iso2 ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType) : \"\";\n placeholder = this._beforeSetNumber(placeholder);\n if (typeof this.options.customPlaceholder === \"function\") {\n placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData);\n }\n this.telInput.setAttribute(\"placeholder\", placeholder);\n }\n }\n }, {\n key: \"_selectListItem\",\n value: function _selectListItem(listItem) {\n // update selected flag and active list item\n var flagChanged = this._setFlag(listItem.getAttribute(\"data-country-code\"));\n this._closeDropdown();\n this._updateDialCode(listItem.getAttribute(\"data-dial-code\"), true);\n // focus the input\n this.telInput.focus();\n // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto\n // inserting dial code), who try to put the cursor at the beginning the first time\n var len = this.telInput.value.length;\n this.telInput.setSelectionRange(len, len);\n if (flagChanged) {\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"_closeDropdown\",\n value: function _closeDropdown() {\n this.countryList.classList.add(\"iti__hide\");\n this.selectedFlag.setAttribute(\"aria-expanded\", \"false\");\n // update the arrow\n this.dropdownArrow.classList.remove(\"iti__arrow--up\");\n // unbind key events\n document.removeEventListener(\"keydown\", this._handleKeydownOnDropdown);\n document.documentElement.removeEventListener(\"click\", this._handleClickOffToClose);\n this.countryList.removeEventListener(\"mouseover\", this._handleMouseoverCountryList);\n this.countryList.removeEventListener(\"click\", this._handleClickCountryList);\n // remove menu from container\n if (this.options.dropdownContainer) {\n if (!this.isMobile) window.removeEventListener(\"scroll\", this._handleWindowScroll);\n if (this.dropdown.parentNode) this.dropdown.parentNode.removeChild(this.dropdown);\n }\n this._trigger(\"close:countrydropdown\");\n }\n }, {\n key: \"_scrollTo\",\n value: function _scrollTo(element, middle) {\n var container = this.countryList;\n // windowTop from https://stackoverflow.com/a/14384091/217866\n var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n var containerHeight = container.offsetHeight;\n var containerTop = container.getBoundingClientRect().top + windowTop;\n var containerBottom = containerTop + containerHeight;\n var elementHeight = element.offsetHeight;\n var elementTop = element.getBoundingClientRect().top + windowTop;\n var elementBottom = elementTop + elementHeight;\n var newScrollTop = elementTop - containerTop + container.scrollTop;\n var middleOffset = containerHeight / 2 - elementHeight / 2;\n if (elementTop < containerTop) {\n // scroll up\n if (middle) newScrollTop -= middleOffset;\n container.scrollTop = newScrollTop;\n } else if (elementBottom > containerBottom) {\n // scroll down\n if (middle) newScrollTop += middleOffset;\n var heightDifference = containerHeight - elementHeight;\n container.scrollTop = newScrollTop - heightDifference;\n }\n }\n }, {\n key: \"_updateDialCode\",\n value: function _updateDialCode(newDialCodeBare, hasSelectedListItem) {\n var inputVal = this.telInput.value;\n // save having to pass this every time\n var newDialCode = \"+\".concat(newDialCodeBare);\n var newNumber;\n if (inputVal.charAt(0) === \"+\") {\n // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not)\n var prevDialCode = this._getDialCode(inputVal);\n if (prevDialCode) {\n // current number contains a valid dial code, so replace it\n newNumber = inputVal.replace(prevDialCode, newDialCode);\n } else {\n // current number contains an invalid dial code, so ditch it\n // (no way to determine where the invalid dial code ends and the rest of the number begins)\n newNumber = newDialCode;\n }\n } else if (this.options.nationalMode || this.options.separateDialCode) {\n // don't do anything\n return;\n } else {\n // nationalMode is disabled\n if (inputVal) {\n // there is an existing value with no dial code: prefix the new dial code\n newNumber = newDialCode + inputVal;\n } else if (hasSelectedListItem || !this.options.autoHideDialCode) {\n // no existing value and either they've just selected a list item, or autoHideDialCode is\n // disabled: insert new dial code\n newNumber = newDialCode;\n } else {\n return;\n }\n }\n this.telInput.value = newNumber;\n }\n }, {\n key: \"_getDialCode\",\n value: function _getDialCode(number) {\n var dialCode = \"\";\n // only interested in international numbers (starting with a plus)\n if (number.charAt(0) === \"+\") {\n var numericChars = \"\";\n // iterate over chars\n for (var i = 0; i < number.length; i++) {\n var c = number.charAt(i);\n // if char is number (https://stackoverflow.com/a/8935649/217866)\n if (!isNaN(parseInt(c, 10))) {\n numericChars += c;\n // if current numericChars make a valid dial code\n if (this.countryCodes[numericChars]) {\n // store the actual raw string (useful for matching later)\n dialCode = number.substr(0, i + 1);\n }\n if (numericChars.length === this.dialCodeMaxLen) {\n break;\n }\n }\n }\n }\n return dialCode;\n }\n }, {\n key: \"_getFullNumber\",\n value: function _getFullNumber() {\n var val = this.telInput.value.trim();\n var dialCode = this.selectedCountryData.dialCode;\n var prefix;\n var numericVal = this._getNumeric(val);\n if (this.options.separateDialCode && val.charAt(0) !== \"+\" && dialCode && numericVal) {\n // when using separateDialCode, it is visible so is effectively part of the typed number\n prefix = \"+\".concat(dialCode);\n } else {\n prefix = \"\";\n }\n return prefix + val;\n }\n }, {\n key: \"_beforeSetNumber\",\n value: function _beforeSetNumber(originalNumber) {\n var number = originalNumber;\n if (this.options.separateDialCode) {\n var dialCode = this._getDialCode(number);\n // if there is a valid dial code\n if (dialCode) {\n // in case _getDialCode returned an area code as well\n dialCode = \"+\".concat(this.selectedCountryData.dialCode);\n // a lot of numbers will have a space separating the dial code and the main number, and\n // some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get\n // rid of it\n // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc\n var start = number[dialCode.length] === \" \" || number[dialCode.length] === \"-\" ? dialCode.length + 1 : dialCode.length;\n number = number.substr(start);\n }\n }\n return this._cap(number);\n }\n }, {\n key: \"_triggerCountryChange\",\n value: function _triggerCountryChange() {\n this._trigger(\"countrychange\");\n }\n }, {\n key: \"handleAutoCountry\",\n value: function handleAutoCountry() {\n if (this.options.initialCountry === \"auto\") {\n // we must set this even if there is an initial val in the input: in case the initial val is\n // invalid and they delete it - they should see their auto country\n this.defaultCountry = window.intlTelInputGlobals.autoCountry;\n // if there's no initial value in the input, then update the flag\n if (!this.telInput.value) {\n this.setCountry(this.defaultCountry);\n }\n this.resolveAutoCountryPromise();\n }\n }\n }, {\n key: \"handleUtils\",\n value: function handleUtils() {\n // if the request was successful\n if (window.intlTelInputUtils) {\n // if there's an initial value in the input, then format it\n if (this.telInput.value) {\n this._updateValFromNumber(this.telInput.value);\n }\n this._updatePlaceholder();\n }\n this.resolveUtilsScriptPromise();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var form = this.telInput.form;\n if (this.options.allowDropdown) {\n // make sure the dropdown is closed (and unbind listeners)\n this._closeDropdown();\n this.selectedFlag.removeEventListener(\"click\", this._handleClickSelectedFlag);\n this.flagsContainer.removeEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n // label click hack\n var label = this._getClosestLabel();\n if (label) label.removeEventListener(\"click\", this._handleLabelClick);\n }\n // unbind hiddenInput listeners\n if (this.hiddenInput && form) form.removeEventListener(\"submit\", this._handleHiddenInputSubmit);\n // unbind autoHideDialCode listeners\n if (this.options.autoHideDialCode) {\n if (form) form.removeEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n this.telInput.removeEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n }\n // unbind key events, and cut/paste events\n this.telInput.removeEventListener(\"keyup\", this._handleKeyupEvent);\n this.telInput.removeEventListener(\"cut\", this._handleClipboardEvent);\n this.telInput.removeEventListener(\"paste\", this._handleClipboardEvent);\n // remove attribute of id instance: data-intl-tel-input-id\n this.telInput.removeAttribute(\"data-intl-tel-input-id\");\n // remove markup (but leave the original input)\n var wrapper = this.telInput.parentNode;\n wrapper.parentNode.insertBefore(this.telInput, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n delete window.intlTelInputGlobals.instances[this.id];\n }\n }, {\n key: \"getExtension\",\n value: function getExtension() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return \"\";\n }\n }, {\n key: \"getNumber\",\n value: function getNumber(format) {\n if (window.intlTelInputUtils) {\n var iso2 = this.selectedCountryData.iso2;\n return intlTelInputUtils.formatNumber(this._getFullNumber(), iso2, format);\n }\n return \"\";\n }\n }, {\n key: \"getNumberType\",\n value: function getNumberType() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return -99;\n }\n }, {\n key: \"getSelectedCountryData\",\n value: function getSelectedCountryData() {\n return this.selectedCountryData;\n }\n }, {\n key: \"getValidationError\",\n value: function getValidationError() {\n if (window.intlTelInputUtils) {\n var iso2 = this.selectedCountryData.iso2;\n return intlTelInputUtils.getValidationError(this._getFullNumber(), iso2);\n }\n return -99;\n }\n }, {\n key: \"isValidNumber\",\n value: function isValidNumber() {\n var val = this._getFullNumber().trim();\n var countryCode = this.options.nationalMode ? this.selectedCountryData.iso2 : \"\";\n return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null;\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(originalCountryCode) {\n var countryCode = originalCountryCode.toLowerCase();\n // check if already selected\n if (!this.selectedFlagInner.classList.contains(\"iti__\".concat(countryCode))) {\n this._setFlag(countryCode);\n this._updateDialCode(this.selectedCountryData.dialCode, false);\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"setNumber\",\n value: function setNumber(number) {\n // we must update the flag first, which updates this.selectedCountryData, which is used for\n // formatting the number before displaying it\n var flagChanged = this._updateFlagFromNumber(number);\n this._updateValFromNumber(number);\n if (flagChanged) {\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"setPlaceholderNumberType\",\n value: function setPlaceholderNumberType(type) {\n this.options.placeholderNumberType = type;\n this._updatePlaceholder();\n }\n } ]);\n return Iti;\n }();\n /********************\n * STATIC METHODS\n ********************/\n // get the country data object\n intlTelInputGlobals.getCountryData = function() {\n return allCountries;\n };\n // inject a