{"version":3,"file":"js/9309-96dce459921903a17a21.js","mappings":"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","sources":["webpack://app/./node_modules/europa/dist/europa.js","webpack://app/./node_modules/formBuilder/dist/form-render.min.js","webpack://app/./node_modules/inscrybmde/src/js/inscrybmde.js","webpack://app/./node_modules/marked/lib/marked.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Europa = factory());\n}(this, (function () { 'use strict';\n\n /*\n * Copyright (C) 2017 Alasdair Mercer, !ninja\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n /**\n * A bare-bones constructor for surrogate prototype swapping.\n *\n * @private\n * @constructor\n */\n var Constructor = /* istanbul ignore next */ function() {};\n /**\n * A reference to Object.prototype.hasOwnProperty.\n *\n * @private\n * @type {Function}\n */\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n /**\n * A reference to Array.prototype.slice.\n *\n * @private\n * @type {Function}\n */\n var slice = Array.prototype.slice;\n\n /**\n * Creates an object which inherits the given prototype.\n *\n * Optionally, the created object can be extended further with the specified properties.\n *\n * @param {Object} prototype - the prototype to be inherited by the created object\n * @param {Object} [properties] - the optional properties to be extended by the created object\n * @return {Object} The newly created object.\n * @private\n */\n function createObject(prototype, properties) {\n var result;\n /* istanbul ignore next */\n if (typeof Object.create === 'function') {\n result = Object.create(prototype);\n } else {\n Constructor.prototype = prototype;\n result = new Constructor();\n Constructor.prototype = null;\n }\n\n if (properties) {\n extendObject(true, result, properties);\n }\n\n return result;\n }\n\n /**\n * Extends the constructor to which this method is associated with the prototype and/or\n * statics provided.\n *\n * If name is provided, it will be used as the class name and can be accessed via a special\n * class_ property on the child constructor, otherwise the class name of the super constructor will be used\n * instead. The class name may also be used string representation for instances of the child constructor (via\n * toString), but this is not applicable to the lite version of Nevis.\n *\n * If constructor is provided, it will be used as the constructor for the child, otherwise a simple\n * constructor which only calls the super constructor will be used instead.\n *\n * The super constructor can be accessed via a special super_ property on the child constructor.\n *\n * @param {string} [name=this.class_] - the class name to be used for the child constructor\n * @param {Function} [constructor] - the constructor for the child\n * @param {Object} [prototype] - the prototype properties to be defined for the child\n * @param {Object} [statics] - the static properties to be defined for the child\n * @return {Function} The child constructor provided or the one created if none was given.\n * @public\n */\n function extend(name, constructor, prototype, statics) {\n var superConstructor = this;\n\n if (typeof name !== 'string') {\n statics = prototype;\n prototype = constructor;\n constructor = name;\n name = null;\n }\n\n if (typeof constructor !== 'function') {\n statics = prototype;\n prototype = constructor;\n constructor = function() {\n return superConstructor.apply(this, arguments);\n };\n }\n\n extendObject(false, constructor, superConstructor, statics);\n\n constructor.prototype = createObject(superConstructor.prototype, prototype);\n constructor.prototype.constructor = constructor;\n\n constructor.class_ = name || superConstructor.class_;\n constructor.super_ = superConstructor;\n\n return constructor;\n }\n\n /**\n * Extends the specified target object with the properties in each of the sources provided.\n *\n * if any source is null it will be ignored.\n *\n * @param {boolean} own - true to only copy own properties from sources onto\n * target; otherwise false\n * @param {Object} target - the target object which should be extended\n * @param {...Object} [sources] - the source objects whose properties are to be copied onto target\n * @return {void}\n * @private\n */\n function extendObject(own, target, sources) {\n sources = slice.call(arguments, 2);\n\n var property;\n var source;\n\n for (var i = 0, length = sources.length; i < length; i++) {\n source = sources[i];\n\n for (property in source) {\n if (!own || hasOwnProperty.call(source, property)) {\n target[property] = source[property];\n }\n }\n }\n }\n\n var extend_1 = extend;\n\n /**\n * The base class from which all others should extend.\n *\n * @public\n * @constructor\n */\n function Nevis() {}\n Nevis.class_ = 'Nevis';\n Nevis.super_ = Object;\n\n /**\n * Extends the constructor to which this method is associated with the prototype and/or\n * statics provided.\n *\n * If name is provided, it will be used as the class name and can be accessed via a special\n * class_ property on the child constructor, otherwise the class name of the super constructor will be used\n * instead. The class name may also be used string representation for instances of the child constructor (via\n * toString), but this is not applicable to the lite version of Nevis.\n *\n * If constructor is provided, it will be used as the constructor for the child, otherwise a simple\n * constructor which only calls the super constructor will be used instead.\n *\n * The super constructor can be accessed via a special super_ property on the child constructor.\n *\n * @param {string} [name=this.class_] - the class name to be used for the child constructor\n * @param {Function} [constructor] - the constructor for the child\n * @param {Object} [prototype] - the prototype properties to be defined for the child\n * @param {Object} [statics] - the static properties to be defined for the child\n * @return {Function} The child constructor provided or the one created if none was given.\n * @public\n * @static\n * @memberof Nevis\n */\n Nevis.extend = extend_1;\n\n var nevis = Nevis;\n\n var lite = nevis;\n\n /**\n * Contains utility methods that are useful throughout the library.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var Utilities = lite.extend(null, {\n\n /**\n * Iterates over own (not inherited) enumerable properties on the specified object.\n *\n * Nothing happens if object is null.\n *\n * @param {Object} object - the object whose own properties are to be iterated over\n * @param {Utilities~ForOwnCallback} callback - the function to be called with the value and key for each own property\n * on object\n * @param {Object} [context] - the value to use this when executing callback\n * @return {void}\n * @public\n * @static\n * @memberof Utilities\n */\n forOwn: function(object, callback, context) {\n if (!object) {\n return;\n }\n\n for (var key in object) {\n if (Utilities.hasOwn(object, key)) {\n callback.call(context, object[key], key, object);\n }\n }\n },\n\n /**\n * Returns whether the specified object has a property with the specified name as an own\n * (not inherited) property.\n *\n * @param {Object} object - the object on which the property is to be checked\n * @param {string} name - the name of the property to be checked\n * @return {boolean} true if object has an own property with name.\n * @public\n * @static\n * @memberof Utilities\n */\n hasOwn: function(object, name) {\n return Object.prototype.hasOwnProperty.call(object, name);\n },\n\n /**\n * Left pads the string provided with the given padding string for the specified number of\n * times.\n *\n * @param {string} [string=\"\"] - the string to be padded\n * @param {number} [times=0] - the number of times to pad string\n * @param {string} [padding=\" \"] - the padding string\n * @return {string} The padded string.\n * @public\n * @static\n * @memberof Utilities\n */\n leftPad: function(string, times, padding) {\n if (string == null) {\n string = '';\n }\n if (times == null) {\n times = 0;\n }\n if (padding == null) {\n padding = ' ';\n }\n if (!padding) {\n return string;\n }\n\n for (var i = 0; i < times; i++) {\n string = padding + string;\n }\n\n return string;\n }\n\n });\n\n var Utilities_1 = Utilities;\n\n /**\n * Called for each own enumerable property on object.\n *\n * @callback Utilities~ForOwnCallback\n * @param {*} value - the value of the property\n * @param {string} key - the name of the property\n * @param {Object} object - the object to which the property belongs\n * @return {void}\n */\n\n /**\n * Contains contextual information for a single conversion process.\n *\n * @param {Europa} europa - the {@link Europa} instance responsible for this conversion\n * @param {Europa~Options} options - the options to be used\n * @public\n * @class\n * @extends Nevis\n */\n var Conversion = lite.extend(function(europa, options) {\n /**\n * The {@link Europa} instance responsible for this {@link Conversion}.\n *\n * @public\n * @type {Europa}\n * @memberof Conversion#\n */\n this.europa = europa;\n\n /**\n * The options for this {@link Conversion}.\n *\n * @public\n * @type {Europa~Options}\n * @memberof Conversion#\n */\n this.options = options;\n\n /**\n * Whether the buffer is at the start of the current line.\n *\n * @public\n * @type {boolean}\n * @memberof Conversion#\n */\n this.atLeft = true;\n\n /**\n * Whether any white space should be removed from the start of the next output.\n *\n * @public\n * @type {boolean}\n * @memberof Conversion#\n */\n this.atNoWhiteSpace = true;\n\n /**\n * Whether the buffer is at the start of a paragraph.\n *\n * @public\n * @type {boolean}\n * @memberof Conversion#\n */\n this.atParagraph = true;\n\n /**\n * The conversion output buffer to which the Markdown will be written.\n *\n * @public\n * @type {string}\n * @memberof Conversion#\n */\n this.buffer = '';\n\n /**\n * The context for this {@link Conversion}.\n *\n * @public\n * @type {Object.}\n * @memberof Conversion#\n */\n this.context = {};\n\n /**\n * Whether the buffer is currently within a code block.\n *\n * @public\n * @type {boolean}\n * @memberof Conversion#\n */\n this.inCodeBlock = false;\n\n /**\n * Whether the buffer is currently within an ordered list.\n *\n * @public\n * @type {boolean}\n * @memberof Conversion#\n */\n this.inOrderedList = false;\n\n /**\n * Whether the buffer is currently within a preformatted block.\n *\n * @public\n * @type {boolean}\n * @memberof Conversion#\n */\n this.inPreformattedBlock = false;\n\n /**\n * The last string to be output next to the buffer.\n *\n * @public\n * @type {string}\n * @memberof Conversion#\n */\n this.last = null;\n\n /**\n * The start of the current line.\n *\n * @public\n * @type {string}\n * @memberof Conversion#\n */\n this.left = '\\n';\n\n /**\n * The depth of nested lists.\n *\n * @public\n * @type {number}\n * @memberof Conversion#\n */\n this.listDepth = 0;\n\n /**\n * The one-based index for the current list item within the current list.\n *\n * @public\n * @type {number}\n * @memberof Conversion#\n */\n this.listIndex = 1;\n\n this._document = europa.document;\n this._element = null;\n this._tagName = null;\n this._window = europa.window;\n }, {\n\n /**\n * Appends the last output string to the buffer and then queues the specified string to be output.\n *\n * @param {string} string - the string to be appended\n * @return {Conversion} A reference to this {@link Conversion} for chaining purposes.\n * @public\n * @memberof Conversion#\n */\n append: function(string) {\n if (this.last != null) {\n this.buffer += this.last;\n }\n\n this.last = string;\n\n return this;\n },\n\n /**\n * Appends a paragraph to the output buffer.\n *\n * @return {Conversion} A reference to this {@link Conversion} for chaining purposes.\n * @public\n * @memberof Conversion#\n */\n appendParagraph: function() {\n if (this.atParagraph) {\n return this;\n }\n\n if (!this.atLeft) {\n this.append(this.left);\n\n this.atLeft = true;\n }\n\n this.append(this.left);\n\n this.atNoWhiteSpace = true;\n this.atParagraph = true;\n\n return this;\n },\n\n /**\n * Outputs the specified string to the buffer.\n *\n * Optionally, string can be \"cleaned\" before being output. Doing so will replace any certain special\n * characters as well as some white space.\n *\n * @param {string} string - the string to be output\n * @param {boolean} [clean=false] - true to clean string; otherwise false\n * @return {Conversion} A reference to this {@link Conversion} for chaining purposes.\n * @public\n * @memberof Conversion#\n */\n output: function(string, clean) {\n if (!string) {\n return this;\n }\n\n string = string.replace(/\\r\\n/g, '\\n');\n\n if (clean) {\n string = string.replace(/\\n([ \\t]*\\n)+/g, '\\n')\n .replace(/\\n[ \\t]+/g, '\\n')\n .replace(/[ \\t]+/g, ' ');\n\n Utilities_1.forOwn(Conversion.replacements, function(value, key) {\n string = string.replace(Conversion.replacementsRegExp[key], value);\n });\n }\n\n if (!this.inPreformattedBlock) {\n if (this.atNoWhiteSpace) {\n string = string.replace(/^[ \\t\\n]+/, '');\n } else if (/^[ \\t]*\\n/.test(string)) {\n string = string.replace(/^[ \\t\\n]+/, '\\n');\n } else {\n string = string.replace(/^[ \\t]+/, ' ');\n }\n }\n\n if (!string) {\n return this;\n }\n\n this.atLeft = /\\n$/.test(string);\n this.atNoWhiteSpace = /[ \\t\\n]$/.test(string);\n this.atParagraph = /\\n{2}$/.test(string);\n\n return this.append(string.replace(/\\n/g, this.left));\n },\n\n /**\n * Replaces the start of the current line with the string provided.\n *\n * @param {string} string - the string to replace the start of the current line\n * @return {Conversion} A reference to this {@link Conversion} for chaining purposes.\n * @public\n * @memberof Conversion#\n */\n replaceLeft: function(string) {\n if (!this.atLeft) {\n this.append(this.left.replace(/[ ]{2,4}$/, string));\n\n this.atLeft = true;\n this.atNoWhiteSpace = true;\n this.atParagraph = true;\n } else if (this.last) {\n this.last = this.last.replace(/[ ]{2,4}$/, string);\n }\n\n return this;\n }\n\n }, {\n\n /**\n * A map of special characters and their replacements.\n *\n * @public\n * @static\n * @type {Object.}\n * @memberof Conversion\n */\n replacements: {\n '\\\\\\\\': '\\\\\\\\',\n '\\\\[': '\\\\[',\n '\\\\]': '\\\\]',\n '>': '\\\\>',\n '_': '\\\\_',\n '\\\\*': '\\\\*',\n '`': '\\\\`',\n '#': '\\\\#',\n '([0-9])\\\\.(\\\\s|$)': '$1\\\\.$2',\n '\\u00a9': '(c)',\n '\\u00ae': '(r)',\n '\\u2122': '(tm)',\n '\\u00a0': ' ',\n '\\u00b7': '\\\\*',\n '\\u2002': ' ',\n '\\u2003': ' ',\n '\\u2009': ' ',\n '\\u2018': '\\'',\n '\\u2019': '\\'',\n '\\u201c': '\"',\n '\\u201d': '\"',\n '\\u2026': '...',\n '\\u2013': '--',\n '\\u2014': '---'\n },\n\n /**\n * A map of special characters and the regular expression used to identify them.\n *\n * @public\n * @static\n * @type {Object.}\n * @memberof Conversion\n */\n replacementsRegExp: {}\n\n });\n\n Object.defineProperties(Conversion.prototype, {\n\n document: {\n /**\n * Returns the current document for this {@link Conversion}.\n *\n * This may not be the same document as is associated with the {@link Europa} instance as this document may be\n * nested (e.g. a frame).\n *\n * @return {Document} The current document.\n * @public\n * @memberof Conversion#\n * @alias document\n */\n get: function() {\n return this._document;\n }\n },\n\n element: {\n /**\n * Returns the current element for this {@link Conversion}.\n *\n * @return {Element} The current element.\n * @public\n * @memberof Conversion#\n * @alias element\n */\n get: function() {\n return this._element;\n },\n\n /**\n * Sets the current element for this {@link Conversion} to element.\n *\n * @param {Element} element - the current element to be set\n * @return {void}\n * @public\n * @memberof Conversion#\n * @alias element\n */\n set: function(element) {\n this._element = element;\n this._tagName = element && element.tagName ? element.tagName.toLowerCase() : null;\n }\n },\n\n tagName: {\n /**\n * Returns the name of the tag for the current element for this {@link Conversion}.\n *\n * The tag name will always be in lower case, when available.\n *\n * @return {string} The current element's tag name.\n * @public\n * @memberof Conversion#\n * @alias tagName\n */\n get: function() {\n return this._tagName;\n }\n },\n\n window: {\n /**\n * Returns the current window for this {@link Conversion}.\n *\n * This may not be the same window as is associated with the {@link Europa} instance as this window may be nested\n * (e.g. a frame).\n *\n * @return {Window} The current window.\n * @public\n * @memberof Conversion#\n * @alias window\n */\n get: function() {\n return this._window;\n },\n\n /**\n * Sets the current window for this {@link Conversion} to window.\n *\n * This may not be the same window as is associated with the {@link Europa} instance as this window may be nested\n * (e.g. a frame).\n *\n * @param {Window} window - the window to be set\n * @return {void}\n * @public\n * @memberof Conversion#\n * @alias window\n */\n set: function(window) {\n this._window = window;\n this._document = window ? window.document : null;\n }\n }\n\n });\n\n Utilities_1.forOwn(Conversion.replacements, function(value, key) {\n Conversion.replacementsRegExp[key] = new RegExp(key, 'g');\n });\n\n var Conversion_1 = Conversion;\n\n /**\n * Contains utility methods that are useful when dealing with the DOM.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var DOMUtilities = lite.extend(null, {\n\n /**\n * Checks whether the specified element is currently visible using the window provided.\n *\n * This is not a very sophisticated check and could easily be mistaken, but it should catch a lot of the most simple\n * cases.\n *\n * @param {Element} element - the element whose visibility is to be checked\n * @param {Window} window - the window to be used\n * @return {boolean} true if element is visible; otherwise false.\n * @public\n * @static\n * @memberof DOMUtilities\n */\n isVisible: function(element, window) {\n var style = window.getComputedStyle(element);\n\n return style.getPropertyValue('display') !== 'none' && style.getPropertyValue('visibility') !== 'hidden';\n }\n\n });\n\n var DOMUtilities_1 = DOMUtilities;\n\n /**\n * Defines an available option.\n *\n * If defaultValue is a function, it will be called if/when needed and the return value will be used as the\n * default value. If the default value is to be a function itself, then defaultValue must return that\n * function.\n *\n * @param {string} name - the name to be used\n * @param {*} [defaultValue] - the default value to be used\n * @public\n * @class\n * @extends Nevis\n */\n var Option = lite.extend(function(name, defaultValue) {\n /**\n * The name for this {@link Option}.\n *\n * @public\n * @type {string}\n * @memberof Option#\n */\n this.name = name;\n\n this._defaultValue = defaultValue;\n });\n\n Object.defineProperty(Option.prototype, 'defaultValue', {\n /**\n * Returns the default value for this {@link Option}.\n *\n * @return {*} The default value.\n * @public\n * @memberof Option#\n * @alias defaultValue\n */\n get: function() {\n var defaultValue = this._defaultValue;\n\n return typeof defaultValue === 'function' ? defaultValue.call(this) : defaultValue;\n }\n });\n\n var Option_1 = Option;\n\n /**\n * Manages multiple {@link Option} instances that are intended to be used by multiple implementations/instances.\n *\n * @param {Option[]} options - the options to be used\n * @public\n * @class\n * @extends Nevis\n */\n var OptionParser = lite.extend(function(options) {\n /**\n * The available options for this {@link OptionParser}.\n *\n * @public\n * @type {Option[]}\n * @memberof OptionParser#\n */\n this.options = options;\n }, {\n\n /**\n * Returns whether an option with the specified name is available.\n *\n * @param {string} name - the name of the {@link Option} whose existence is to be checked\n * @return {boolean} true if an {@link Option} exists with name; otherwise\n * false.\n * @public\n * @memberof OptionParser#\n */\n exists: function(name) {\n return this.options.some(function(option) {\n return option.name === name;\n });\n },\n\n /**\n * Parses the specified options, extracting only properties that match valid options and applying default\n * values where required.\n *\n * @param {Object} [options] - the options to be parsed\n * @return {Object.} The parsed options.\n * @public\n * @memberof OptionParser#\n */\n parse: function(options) {\n if (!options) {\n options = {};\n }\n\n var result = {};\n\n this.options.forEach(function(option) {\n var name = option.name;\n var value = options[name] != null ? options[name] : option.defaultValue;\n\n result[name] = value;\n });\n\n return result;\n }\n\n });\n\n var OptionParser_1 = OptionParser;\n\n /**\n * A plugin that can tap into multiple parts in the conversion process while being specific to only a sub-set of tags.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var Plugin = lite.extend({\n\n /**\n * Called after {@link Plugin#convert} and only once all children elements have been converted as well,\n * provided they weren't skipped, and intended for tidying up after the conversion.\n *\n * context can be used to receive any state for a single element conversion from {@link Plugin#before}\n * and {@link Plugin#convert}.\n *\n * @param {Conversion} conversion - the current {@link Conversion}\n * @param {Object.} context - the current context for this {@link Plugin}\n * @return {void}\n * @public\n * @memberof Plugin#\n */\n after: function(conversion, context) {},\n\n /**\n * Called before any elements are converted and intended to setup this {@link Plugin} initially.\n *\n * @param {Conversion} conversion - the current {@link Conversion}\n * @return {void}\n * @public\n * @memberof Plugin#\n */\n afterAll: function(conversion) {},\n\n /**\n * Called immediately before {@link Plugin#convert} and intended for preparing this {@link Plugin} for conversion.\n *\n * context can be used to pass any state for a single element conversion to {@link Plugin#convert} and\n * then to {@link Plugin#after}.\n *\n * @param {Conversion} conversion - the current {@link Conversion}\n * @param {Object.} context - the current context for this {@link Plugin}\n * @return {void}\n * @public\n * @memberof Plugin#\n */\n before: function(conversion, context) {},\n\n /**\n * Called after all elements have been converted and intended to completing any steps for this {@link Plugin}.\n *\n * @param {Conversion} conversion - the current {@link Conversion}\n * @return {void}\n * @public\n * @memberof Plugin#\n */\n beforeAll: function(conversion) {},\n\n /**\n * Converts the current element within the specified conversion which can be used to provide control over\n * the conversion and returns whether the children of the element should be converted.\n *\n * context can be used to pass any state for a single element conversion from {@link Plugin#before} to\n * {@link Plugin#after}.\n *\n * @param {Conversion} conversion - the current {@link Conversion}\n * @param {Object.} context - the current context for this {@link Plugin}\n * @return {boolean} true if the children of the current element should be converted; otherwise\n * false.\n * @public\n * @memberof Plugin#\n */\n convert: function(conversion, context) {\n return true;\n },\n\n /**\n * Returns the names of tags with which this {@link Plugin} should be registered to handle.\n *\n * @return {string[]} The names of supported tags.\n * @public\n * @memberof Plugin#\n */\n getTagNames: function() {\n return [];\n }\n\n });\n\n var Plugin_1 = Plugin;\n\n /**\n * A basic manager for {@link Service} implementations that are mapped to simple names.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var ServiceManager = lite.extend(function() {\n this._services = {};\n }, {\n\n /**\n * Returns the {@link Service} being managed with the specified name.\n *\n * @param {string} name - the name of the {@link Service} to be returned\n * @return {Service} The {@link Service} is being managed with name.\n * @throws {Error} If no {@link Service} is being managed with name.\n * @public\n * @memberof ServiceManager#\n */\n getService: function(name) {\n var service = this._services[name];\n if (!service) {\n throw new Error('Service is not being managed with name: ' + name);\n }\n\n return service;\n },\n\n /**\n * Sets the {@link Service} implementation to be managed for the specified name to the\n * service provided.\n *\n * @param {string} name - the name of the {@link Service} to be managed with name\n * @param {Service} service - the {@link Service} implementation to be managed\n * @return {void}\n * @throws {Error} If a {@link Service} is already being managed with the same name.\n * @public\n * @memberof ServiceManager#\n */\n setService: function(name, service) {\n if (this._services[name]) {\n throw new Error('Service is already managed with name: ' + name);\n }\n\n if (service) {\n this._services[name] = service;\n }\n }\n\n });\n\n var ServiceManager_1 = ServiceManager;\n\n var plugins = {};\n var serviceManager = new ServiceManager_1();\n\n /**\n * Enables configuration of a HTML to Markdown converter that supports HTML strings and DOM elements.\n *\n * @param {Europa~Options} [options] - the options to be used\n * @public\n * @class\n * @extends Nevis\n */\n var Europa = lite.extend(function(options) {\n this._options = new OptionParser_1([\n new Option_1('absolute', false),\n new Option_1('baseUri', function() {\n return serviceManager.getService('window').getDefaultBaseUri();\n }),\n new Option_1('inline', false)\n ])\n .parse(options);\n this._window = null;\n }, {\n\n /**\n * Converts the specified html into Markdown based on the options configured for this {@link Europa}\n * instance.\n *\n * html can either be an HTML string or a DOM element whose HTML contents are to be converted into\n * Markdown.\n *\n * @param {Element|string} html - the HTML (or element whose inner HTML is) to be converted into Markdown\n * @return {string} The Markdown converted from html.\n * @public\n * @memberof Europa#\n */\n convert: function(html) {\n if (!html) {\n return '';\n }\n\n var document = this.document;\n var root;\n\n if (typeof html === 'string') {\n root = document.createElement('div');\n root.innerHTML = html;\n } else {\n root = html;\n }\n\n var conversion = new Conversion_1(this, this._options);\n var wrapper;\n\n if (!document.contains(root)) {\n wrapper = document.createElement('div');\n wrapper.style.display = 'none';\n wrapper.appendChild(root);\n\n document.body.appendChild(wrapper);\n }\n\n try {\n Utilities_1.forOwn(plugins, function(plugin) {\n plugin.beforeAll(conversion);\n });\n\n this.convertElement(root, conversion);\n\n Utilities_1.forOwn(plugins, function(plugin) {\n plugin.afterAll(conversion);\n });\n } finally {\n if (wrapper) {\n document.body.removeChild(wrapper);\n\n wrapper.removeChild(root);\n }\n }\n\n return conversion.append('').buffer.trim();\n },\n\n /**\n * Converts the specified element and it's children into Markdown using the conversion\n * provided.\n *\n * Nothing happens if element is null or is invisible (simplified detection used).\n *\n * @param {Element} element - the element (along well as it's children) to be converted into Markdown\n * @param {Conversion} conversion - the current {@link Conversion}\n * @return {void}\n * @public\n * @memberof Europa#\n */\n convertElement: function(element, conversion) {\n if (!element) {\n return;\n }\n\n var convertChildren = false;\n var window = this.window;\n var context, i, plugin, value;\n\n if (element.nodeType === window.Node.ELEMENT_NODE) {\n if (!DOMUtilities_1.isVisible(element, window)) {\n return;\n }\n\n conversion.element = element;\n\n context = {};\n plugin = plugins[conversion.tagName];\n convertChildren = true;\n\n if (plugin) {\n plugin.before(conversion, context);\n convertChildren = plugin.convert(conversion, context);\n }\n\n if (convertChildren) {\n for (i = 0; i < element.childNodes.length; i++) {\n this.convertElement(element.childNodes[i], conversion);\n }\n }\n\n if (plugin) {\n plugin.after(conversion, context);\n }\n } else if (element.nodeType === window.Node.TEXT_NODE) {\n value = element.nodeValue || '';\n\n if (conversion.inPreformattedBlock) {\n conversion.output(value);\n } else if (conversion.inCodeBlock) {\n conversion.output(value.replace(/`/g, '\\\\`'));\n } else {\n conversion.output(value, true);\n }\n }\n },\n\n /**\n * Releases the window used by this {@link Europa} instance.\n *\n * This allows closeable {@link WindowService} implementations to close the window and free up resources. However,\n * this instance can and will simply retrieve another window from the {@link WindowService} the next time it is\n * required (i.e. {@link Europa#convert} is called).\n *\n * @return {Europa} A reference to this {@link Europa} for chaining purposes.\n * @public\n * @memberof Europa#\n */\n release: function() {\n if (this._window) {\n serviceManager.getService('window').closeWindow(this._window);\n this._window = null;\n }\n\n return this;\n }\n\n }, {\n\n /**\n * A convient reference to {@link Plugin} exposed on {@link Europa} for cases where Europa Core is bundled.\n *\n * @public\n * @static\n * @type {Function}\n * @memberof Europa\n */\n Plugin: Plugin_1,\n\n /**\n * Registers the specified plugin to be used by all {@link Europa} instances.\n *\n * If plugin declares support for a tag name which already has a {@link Plugin} registered for it,\n * plugin will replace the previously registered plugin, but only for conflicting tag names.\n *\n * @param {Plugin} plugin - the {@link Plugin} to be registered\n * @return {void}\n * @public\n * @static\n * @memberof Europa\n */\n register: function(plugin) {\n plugin.getTagNames().forEach(function(tag) {\n plugins[tag] = plugin;\n });\n },\n\n /**\n * Configures the service provided to be used by all {@link Europa} instances.\n *\n * @param {Service} service - the {@link Service} to be configured\n * @return {void}\n * @throws {Error} If a {@link Service} has already been configured with the same name.\n * @public\n * @static\n * @memberof Europa\n */\n use: function(service) {\n serviceManager.setService(service.getName(), service);\n }\n\n });\n\n Object.defineProperties(Europa.prototype, {\n\n document: {\n /**\n * Returns the document to be used for HTML to Markdown conversion by this {@link Europa} instance.\n *\n * @return {Document} The document.\n * @public\n * @memberof Europa#\n * @alias document\n */\n get: function() {\n return this.window.document;\n }\n },\n\n window: {\n /**\n * Returns the window to be used for HTML to Markdown conversion by this {@link Europa} instance.\n *\n * @return {Window} The window.\n * @public\n * @memberof Europa#\n * @alias window\n */\n get: function() {\n if (!this._window) {\n this._window = serviceManager.getService('window').getWindow(this._options.baseUri);\n }\n\n return this._window;\n }\n }\n\n });\n\n var Europa_1$2 = Europa;\n\n /**\n * The options used by {@link Europa}.\n *\n * @typedef {Object} Europa~Options\n * @property {boolean} [absolute=false] - Whether absolute URLS should be used for anchors/images.\n * @property {string} [baseUri] - The base URI for the window. This is ignored in environments where the base URI cannot\n * be changed.\n * @property {boolean} [inline=false] - Whether anchor/image URLs are to be inserted inline.\n */\n\n /**\n * A {@link Plugin} which extracts the URL from an anchor. Anchors without an href are treated as plain\n * text.\n *\n * If the absolute option is enabled, then the URL extracted from the anchor will be absolute. Otherwise,\n * the URL will be exactly as it is in the href attribute.\n *\n * If the inline option is enabled, then the URL (and any title on the anchor) will be\n * inserted immediately after the anchor contents (e.g. [foo](/bar)). Otherwise, all unique URL and title\n * combinations will be indexed (e.g. [foo][anchor0]) and the references will be output at the very end.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var AnchorPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n if (context.value != null) {\n conversion.output(']' + context.value);\n }\n },\n\n /**\n * @override\n */\n afterAll: function(conversion) {\n var anchors = conversion.context.anchors;\n if (!anchors.length) {\n return;\n }\n\n conversion.append('\\n\\n');\n\n for (var i = 0; i < anchors.length; i++) {\n conversion.append('[anchor' + i + ']: ' + anchors[i] + '\\n');\n }\n },\n\n /**\n * @override\n */\n beforeAll: function(conversion) {\n conversion.context.anchorMap = {};\n conversion.context.anchors = [];\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n var element = conversion.element;\n var options = conversion.options;\n var href = options.absolute ? element.href : element.getAttribute('href');\n if (!href) {\n return true;\n }\n\n var anchorMap = conversion.context.anchorMap;\n var anchors = conversion.context.anchors;\n var title = element.getAttribute('title');\n var value = title ? href + ' \"' + title + '\"' : href;\n var index;\n\n if (options.inline) {\n context.value = '(' + value + ')';\n } else {\n index = anchorMap[value];\n if (index == null) {\n index = anchors.push(value) - 1;\n\n anchorMap[value] = index;\n }\n\n context.value = '[anchor' + index + ']';\n }\n\n conversion.output('[');\n\n conversion.atNoWhiteSpace = true;\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'a' ];\n }\n\n });\n\n Europa_1$2.register(new AnchorPlugin());\n\n /**\n * A {@link Plugin} which outputs the contents in a block quote.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var BlockQuotePlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n conversion.atLeft = false;\n conversion.atParagraph = false;\n conversion.left = context.previousLeft;\n\n conversion.appendParagraph();\n },\n\n /**\n * @override\n */\n before: function(conversion, context) {\n context.previousLeft = conversion.left;\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n var value = '> ';\n\n conversion.left += value;\n\n if (conversion.atParagraph) {\n conversion.append(value);\n } else {\n conversion.appendParagraph();\n }\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [\n 'blockquote',\n 'dd'\n ];\n }\n\n });\n\n Europa_1$2.register(new BlockQuotePlugin());\n\n /**\n * A {@link Plugin} which outputs an inline line break.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var BreakPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n conversion.append(' ' + conversion.left);\n\n conversion.atLeft = true;\n conversion.atNoWhiteSpace = true;\n\n return false;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'br' ];\n }\n\n });\n\n Europa_1$2.register(new BreakPlugin());\n\n /**\n * A {@link Plugin} which outputs the contents in a code block.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var CodePlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n if (!context.skipped) {\n conversion.inCodeBlock = context.previousInCodeBlock;\n\n conversion.output('`');\n }\n },\n\n /**\n * @override\n */\n before: function(conversion, context) {\n context.previousInCodeBlock = conversion.inCodeBlock;\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n if (conversion.inPreformattedBlock) {\n context.skipped = true;\n } else {\n conversion.output('`');\n\n conversion.inCodeBlock = true;\n }\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [\n 'code',\n 'kbd',\n 'samp'\n ];\n }\n\n });\n\n Europa_1$2.register(new CodePlugin());\n\n /**\n * A {@link Plugin} which outputs a definition term as strong text.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var DefinitionTermPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n conversion.output('**');\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n conversion.appendParagraph();\n\n conversion.output('**');\n\n conversion.atNoWhiteSpace = true;\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'dt' ];\n }\n\n });\n\n Europa_1$2.register(new DefinitionTermPlugin());\n\n /**\n * A {@link Plugin} which outputs a details section.\n *\n * If the details has an open attribute then all of its children are converted. Otherwise, only the nested\n * summary, if any, will be converted.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var DetailsPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n var element = conversion.element;\n\n conversion.appendParagraph();\n\n if (element.hasAttribute('open')) {\n return true;\n }\n\n var summary = element.querySelector('summary');\n conversion.europa.convertElement(summary, conversion);\n\n return false;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'details' ];\n }\n\n });\n\n Europa_1$2.register(new DetailsPlugin());\n\n /**\n * A {@link Plugin} which outputs as emphasised text.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var EmphasisPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n conversion.output('_');\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n conversion.output('_');\n\n conversion.atNoWhiteSpace = true;\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [\n 'cite',\n 'dfn',\n 'em',\n 'i',\n 'u',\n 'var'\n ];\n }\n\n });\n\n Europa_1$2.register(new EmphasisPlugin());\n\n /**\n * A {@link Plugin} which simply ensures that no children elements are converted.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var EmptyPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n return false;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [\n 'applet',\n 'area',\n 'audio',\n 'button',\n 'canvas',\n 'datalist',\n 'embed',\n 'head',\n 'input',\n 'map',\n 'menu',\n 'meter',\n 'noframes',\n 'noscript',\n 'object',\n 'optgroup',\n 'option',\n 'param',\n 'progress',\n 'rp',\n 'rt',\n 'ruby',\n 'script',\n 'select',\n 'style',\n 'textarea',\n 'title',\n 'video'\n ];\n }\n\n });\n\n Europa_1$2.register(new EmptyPlugin());\n\n /**\n * A {@link Plugin} which outputs the contents of nested frame.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var FramePlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n conversion.window = context.previousWindow;\n },\n\n /**\n * @override\n */\n before: function(conversion, context) {\n context.previousWindow = conversion.window;\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n var window = conversion.element.contentWindow;\n\n if (window) {\n conversion.window = window;\n\n conversion.europa.convertElement(window.document.body, conversion);\n }\n\n return false;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'frame', 'iframe' ];\n }\n\n });\n\n Europa_1$2.register(new FramePlugin());\n\n /**\n * A {@link Plugin} which outputs a heading of various levels.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var HeadingPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n var level = parseInt(conversion.tagName.match(/([1-6])$/)[1], 10);\n\n conversion.appendParagraph();\n\n var heading = '';\n for (var i = 0; i < level; i++) {\n heading += '#';\n }\n\n conversion.output(heading + ' ');\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6'\n ];\n }\n\n });\n\n Europa_1$2.register(new HeadingPlugin());\n\n /**\n * A {@link Plugin} which outputs a horizontal rule.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var HorizontalRulePlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n conversion\n .appendParagraph()\n .output('---')\n .appendParagraph();\n\n return false;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'hr' ];\n }\n\n });\n\n Europa_1$2.register(new HorizontalRulePlugin());\n\n /**\n * A {@link Plugin} which extracts the URL from an image.\n *\n * If the absolute option is enabled, then the URL extracted from the image will be absolute. Otherwise,\n * the URL will be exactly as it is in the src attribute.\n *\n * If the inline option is enabled, then the URL will be inserted immediately after the alt on\n * the image (e.g. ). Otherwise, all unique URLs will be indexed\n * (e.g. ![foo][image0]) and the references will be output at the very end.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var ImagePlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n afterAll: function(conversion) {\n var images = conversion.context.images;\n if (!images.length) {\n return;\n }\n\n conversion.append('\\n\\n');\n\n for (var i = 0; i < images.length; i++) {\n conversion.append('[image' + i + ']: ' + images[i] + '\\n');\n }\n },\n\n /**\n * @override\n */\n beforeAll: function(conversion) {\n conversion.context.imageMap = {};\n conversion.context.images = [];\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n var element = conversion.element;\n var options = conversion.options;\n var source = options.absolute ? element.src : element.getAttribute('src');\n if (!source) {\n return false;\n }\n\n var alternativeText = element.getAttribute('alt') || '';\n var imageMap = conversion.context.imageMap;\n var images = conversion.context.images;\n var title = element.getAttribute('title');\n var value = title ? source + ' \"' + title + '\"' : source;\n var index;\n\n if (options.inline) {\n value = '(' + value + ')';\n } else {\n index = imageMap[value];\n if (index == null) {\n index = images.push(value) - 1;\n\n imageMap[value] = index;\n }\n\n value = '[image' + index + ']';\n }\n\n conversion.output('![' + alternativeText + ']' + value);\n\n return false;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'img' ];\n }\n\n });\n\n Europa_1$2.register(new ImagePlugin());\n\n /**\n * A {@link Plugin} which outputs a list item. The prefix for the list item will vary depending on what type of list the\n * item is contained within.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var ListItemPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n var value = conversion.inOrderedList ? conversion.listIndex++ + '. ' : '* ';\n\n if (!conversion.atLeft) {\n conversion.append(conversion.left.replace(/[ ]{2,4}$/, '\\n'));\n\n conversion.atLeft = true;\n conversion.atNoWhiteSpace = true;\n conversion.atParagraph = true;\n } else if (conversion.last) {\n conversion.last = conversion.last.replace(/[ ]{2,4}$/, '\\n');\n }\n\n conversion.append(Utilities_1.leftPad(value, (conversion.listDepth - 1) * 2));\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'li' ];\n }\n\n });\n\n Europa_1$2.register(new ListItemPlugin());\n\n /**\n * A {@link Plugin} which outputs an ordered list.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var OrderedListPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n conversion.inOrderedList = context.previousInOrderedList;\n conversion.listIndex = context.previousListIndex;\n conversion.listDepth--;\n },\n\n /**\n * @override\n */\n before: function(conversion, context) {\n context.previousInOrderedList = conversion.inOrderedList;\n context.previousListIndex = conversion.listIndex;\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n if (conversion.listDepth === 0) {\n conversion.appendParagraph();\n }\n\n conversion.inOrderedList = true;\n conversion.listIndex = 1;\n conversion.listDepth++;\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'ol' ];\n }\n\n });\n\n Europa_1$2.register(new OrderedListPlugin());\n\n /**\n * A {@link Plugin} which outputs a paragraph.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var ParagraphPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n conversion.appendParagraph();\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [\n 'address',\n 'article',\n 'aside',\n 'div',\n 'fieldset',\n 'footer',\n 'header',\n 'nav',\n 'p',\n 'section'\n ];\n }\n\n });\n\n Europa_1$2.register(new ParagraphPlugin());\n\n /**\n * A {@link Plugin} which outputs the contents in a preformatted block.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var PreformattedPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n conversion.atLeft = false;\n conversion.atParagraph = false;\n conversion.inPreformattedBlock = context.previousInPreformattedBlock;\n conversion.left = context.previousLeft;\n\n conversion.appendParagraph();\n },\n\n /**\n * @override\n */\n before: function(conversion, context) {\n context.previousInPreformattedBlock = conversion.inPreformattedBlock;\n context.previousLeft = conversion.left;\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n var value = ' ';\n\n conversion.left += value;\n\n if (conversion.atParagraph) {\n conversion.append(value);\n } else {\n conversion.appendParagraph();\n }\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'pre' ];\n }\n\n });\n\n Europa_1$2.register(new PreformattedPlugin());\n\n /**\n * A {@link Plugin} which outputs as quoted text.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var QuotePlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n conversion.output('\"');\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n conversion.output('\"');\n\n conversion.atNoWhiteSpace = true;\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'q' ];\n }\n\n });\n\n Europa_1$2.register(new QuotePlugin());\n\n /**\n * A {@link Plugin} which outputs as strong text.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var StrongPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n conversion.output('**');\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n conversion.output('**');\n\n conversion.atNoWhiteSpace = true;\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [\n 'b',\n 'strong'\n ];\n }\n\n });\n\n Europa_1$2.register(new StrongPlugin());\n\n /**\n * A {@link Plugin} which outputs an unordered list.\n *\n * @public\n * @class\n * @extends Plugin\n */\n var UnorderedListPlugin = Plugin_1.extend({\n\n /**\n * @override\n */\n after: function(conversion, context) {\n conversion.inOrderedList = context.previousInOrderedList;\n conversion.listIndex = context.previousListIndex;\n conversion.listDepth--;\n },\n\n /**\n * @override\n */\n before: function(conversion, context) {\n context.previousInOrderedList = conversion.inOrderedList;\n context.previousListIndex = conversion.listIndex;\n },\n\n /**\n * @override\n */\n convert: function(conversion, context) {\n if (conversion.listDepth === 0) {\n conversion.appendParagraph();\n }\n\n conversion.inOrderedList = false;\n conversion.listIndex = 1;\n conversion.listDepth++;\n\n return true;\n },\n\n /**\n * @override\n */\n getTagNames: function() {\n return [ 'ul' ];\n }\n\n });\n\n Europa_1$2.register(new UnorderedListPlugin());\n\n var index = Europa_1$2;\n\n /**\n * Defines a service contract that must be met by all implementations.\n *\n * @public\n * @class\n * @extends Nevis\n */\n var Service = lite.extend({\n\n /**\n * Returns the name of this {@link Service}.\n *\n * @return {string} The service name.\n * @public\n * @abstract\n * @memberof Service#\n */\n getName: function() {}\n\n });\n\n var Service_1 = Service;\n\n /**\n * A service used to retrieve the window object for converting HTML to Markdown and, optionally, to close it upon\n * destruction of the {@link Europa} instance. This can be useful to free up resources as/when required in an artificial\n * browser environment.\n *\n * @public\n * @class\n * @extends Service\n */\n var WindowService = Service_1.extend({\n\n /**\n * Closes the specified window but only if this {@link WindowService} is closeable.\n *\n * @param {Window} window - the window to be closed\n * @return {void}\n * @public\n * @memberof WindowService#\n */\n closeWindow: function(window) {\n if (this.isCloseable(window)) {\n window.close();\n }\n },\n\n /**\n * Returns the default base URI for windows provided by this {@link WindowService}.\n *\n * Implementations of {@link WindowService} must override this method with their own specific logic.\n *\n * @return {string} The default base URI.\n * @public\n * @abstract\n * @memberof WindowService#\n */\n getDefaultBaseUri: function() {},\n\n /**\n * @override\n */\n getName: function() {\n return 'window';\n },\n\n /**\n * Returns a window to be used for converting HTML to Markdown using the base URI provided.\n *\n * It's important to note that the base URI cannot be changed in some environments, in which case baseUri\n * will be ignored.\n *\n * Implementations of {@link WindowService} must override this method with their own specific logic.\n *\n * @param {string} baseUri - the base URI to be used\n * @return {Window} The window.\n * @public\n * @abstract\n * @memberof WindowService#\n */\n getWindow: function(baseUri) {},\n\n /**\n * Returns whether the specified window which was retrieved by this {@link WindowService} is closeable.\n *\n * The default implementation of this method will always return false.\n *\n * @param {Window} window - the window to be checked\n * @return {boolean} true if window is closeable; otherwise false.\n * @public\n * @memberof WindowService#\n */\n isCloseable: function(window) {\n return false;\n }\n\n });\n\n var WindowService_1 = WindowService;\n\n /**\n * An implementation of {@link WindowService} intended for use within a browser environment.\n *\n * @public\n * @class\n * @extends WindowService\n */\n var BrowserWindowService = WindowService_1.extend({\n\n /**\n * @override\n */\n getDefaultBaseUri: function() {\n return window.document.baseURI;\n },\n\n /**\n * @override\n */\n getWindow: function(baseUri) {\n return window;\n }\n\n });\n\n var BrowserWindowService_1 = BrowserWindowService;\n\n index.use(new BrowserWindowService_1());\n\n var Europa_1 = index;\n\n return Europa_1;\n\n})));\n\n//# sourceMappingURL=europa.js.map","/*!\n * jQuery formRender: https://formbuilder.online/\n * Version: 3.8.2\n * Author: Kevin Chappell \n */\n!function(e){\"use strict\";!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=30)}([function(t,n,r){function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}r.d(n,\"D\",(function(){return l})),r.d(n,\"F\",(function(){return u})),r.d(n,\"b\",(function(){return d})),r.d(n,\"i\",(function(){return f})),r.d(n,\"q\",(function(){return m})),r.d(n,\"d\",(function(){return g})),r.d(n,\"v\",(function(){return b})),r.d(n,\"n\",(function(){return y})),r.d(n,\"t\",(function(){return v})),r.d(n,\"w\",(function(){return q})),r.d(n,\"x\",(function(){return j})),r.d(n,\"h\",(function(){return C})),r.d(n,\"j\",(function(){return E})),r.d(n,\"E\",(function(){return S})),r.d(n,\"y\",(function(){return A})),r.d(n,\"o\",(function(){return T})),r.d(n,\"s\",(function(){return R})),r.d(n,\"p\",(function(){return L})),r.d(n,\"e\",(function(){return D})),r.d(n,\"a\",(function(){return N})),r.d(n,\"f\",(function(){return F})),r.d(n,\"u\",(function(){return M})),r.d(n,\"A\",(function(){return B})),r.d(n,\"k\",(function(){return U})),r.d(n,\"B\",(function(){return z})),r.d(n,\"r\",(function(){return I})),r.d(n,\"z\",(function(){return H})),r.d(n,\"c\",(function(){return $})),r.d(n,\"m\",(function(){return _})),r.d(n,\"C\",(function(){return V})),r.d(n,\"l\",(function(){return W})),window.fbLoaded={js:[],css:[]},window.fbEditors={quill:{},tinymce:{}};const l=function(e,t=!1){const n=[null,void 0,\"\"];t&&n.push(!1);for(const t in e)n.includes(e[t])?delete e[t]:Array.isArray(e[t])&&(e[t].length||delete e[t]);return e},c=function(e){return![\"values\",\"enableOther\",\"other\",\"label\",\"subtype\"].includes(e)},u=e=>Object.entries(e).map(([e,t])=>`${m(e)}=\"${t}\"`).join(\" \"),d=e=>Object.entries(e).map(([e,t])=>c(e)&&Object.values(p(e,t)).join(\"\")).filter(Boolean).join(\" \"),p=(e,t)=>{let n;return e=h(e),t&&(Array.isArray(t)?n=k(t.join(\" \")):(\"boolean\"==typeof t&&(t=t.toString()),n=k(t.trim()))),{name:e,value:t=t?`=\"${n}\"`:\"\"}},f=e=>e.reduce((e,t)=>e.concat(Array.isArray(t)?f(t):t),[]),h=e=>({className:\"class\"}[e]||m(e)),m=e=>(e=(e=e.replace(/[^\\w\\s\\-]/gi,\"\")).replace(/([A-Z])/g,(function(e){return\"-\"+e.toLowerCase()}))).replace(/\\s/g,\"-\").replace(/^-+/g,\"\"),g=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),b=function(){let e,t=0;return function(n){const r=(new Date).getTime();r===e?++t:(t=0,e=r);return(n.type||m(n.label))+\"-\"+r+\"-\"+t}}(),y=e=>void 0===e?e:[[\"array\",e=>Array.isArray(e)],[\"node\",e=>e instanceof window.Node||e instanceof window.HTMLElement],[\"component\",()=>e&&e.dom],[typeof e,()=>!0]].find(t=>t[1](e))[0],v=function(e,t=\"\",n={}){let r=y(t);const{events:o}=n,i=a(n,[\"events\"]),s=document.createElement(e),l={string:e=>{s.innerHTML+=e},object:e=>{const{tag:t,content:n}=e,r=a(e,[\"tag\",\"content\"]);return s.appendChild(v(t,n,r))},node:e=>s.appendChild(e),array:e=>{for(let t=0;t{e=e(),r=y(e),l[r](e)},undefined:()=>{}};for(const e in i)if(i.hasOwnProperty(e)){const t=h(e),n=Array.isArray(i[e])?S(i[e].join(\" \").split(\" \")).join(\" \"):i[e];if(\"boolean\"==typeof n){if(!0===n){const e=\"contenteditable\"===t||t;s.setAttribute(t,e)}}else s.setAttribute(t,n)}return t&&l[r](t),((e,t)=>{if(t)for(const n in t)t.hasOwnProperty(n)&&e.addEventListener(n,e=>t[n](e))})(s,o),s},x=e=>{const t=e.attributes,n={};return E(t,e=>{let r=t[e].value||\"\";r.match(/false|true/g)?r=\"true\"===r:r.match(/undefined/g)&&(r=void 0),r&&(n[g(t[e].name)]=r)}),n},w=e=>{const t=[];for(let n=0;n{const t=[];if(e.length){const n=e[0].getElementsByTagName(\"value\");for(let e=0;e{const t=(new window.DOMParser).parseFromString(e,\"text/xml\"),n=[];if(t){const e=t.getElementsByTagName(\"field\");for(let t=0;t{const t=document.createElement(\"textarea\");return t.innerHTML=e,t.textContent},C=e=>{const t=document.createElement(\"textarea\");return t.textContent=e,t.innerHTML},k=e=>{const t={'\"':\""\",\"&\":\"&\",\"<\":\"<\",\">\":\">\"};return\"string\"==typeof e?e.replace(/[\"&<>]/g,e=>t[e]||e):e},E=function(e,t,n){for(let r=0;re.filter((e,t,n)=>n.indexOf(e)===t),A=(e,t)=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)},T=(e,t)=>{const n=jQuery;let r=[];return Array.isArray(e)||(e=[e]),R(e)||(r=jQuery.map(e,e=>{const n={dataType:\"script\",cache:!0,url:(t||\"\")+e};return jQuery.ajax(n).done(()=>window.fbLoaded.js.push(e))})),r.push(jQuery.Deferred(e=>n(e.resolve))),jQuery.when(...r)},R=(e,t=\"js\")=>{let n=!1;const r=window.fbLoaded[t];return n=Array.isArray(e)?e.every(e=>r.includes(e)):r.includes(e),n},L=(t,n)=>{Array.isArray(t)||(t=[t]),t.forEach(t=>{let r=\"href\",o=t,i=\"\";if(\"object\"==typeof t&&(r=t.type||(t.style?\"inline\":\"href\"),i=t.id,t=\"inline\"==r?t.style:t.href,o=i||t.href||t.style),!R(o,\"css\")){if(\"href\"==r){const e=document.createElement(\"link\");e.type=\"text/css\",e.rel=\"stylesheet\",e.href=(n||\"\")+t,document.head.appendChild(e)}else e(``).attr(\"id\",i).appendTo(e(document.head));window.fbLoaded.css.push(o)}})},D=e=>e.replace(/\\b\\w/g,(function(e){return e.toUpperCase()})),P=(e,t)=>{const n=Object.assign({},e,t);for(const r in t)n.hasOwnProperty(r)&&(Array.isArray(t[r])?n[r]=Array.isArray(e[r])?S(e[r].concat(t[r])):t[r]:\"object\"==typeof t[r]?n[r]=P(e[r],t[r]):n[r]=t[r]);return n},N=(e,t,n)=>t.split(\" \").forEach(t=>e.addEventListener(t,n,!1)),F=(e,t)=>{const n=t.replace(\".\",\"\");for(;(e=e.parentElement)&&!e.classList.contains(n););return e},M=()=>{let e=\"\";var t;return t=navigator.userAgent||navigator.vendor||window.opera,/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)&&(e=\"formbuilder-mobile\"),e},B=e=>e.replace(/\\s/g,\"-\").replace(/[^a-zA-Z0-9[\\]_-]/g,\"\"),U=e=>e.replace(/[^0-9]/g,\"\"),z=(e,t)=>t.filter((function(e){return!~this.indexOf(e)}),e),I=e=>{const t=(e=Array.isArray(e)?e:[e]).map(({src:e,id:t})=>new Promise(n=>{if(window.fbLoaded.css.includes(e))return n(e);const r=v(\"link\",null,{href:e,rel:\"stylesheet\",id:t});document.head.insertBefore(r,document.head.firstChild)}));return Promise.all(t)},H=e=>{const t=document.getElementById(e);return t.parentElement.removeChild(t)},$=/^col-(xs|sm|md|lg)-([^\\s]+)/,_=e=>e.split(\" \").filter(e=>$.test(e)||e.startsWith(\"row-\"));function V(e){const t=[\"a\",\"an\",\"and\",\"as\",\"at\",\"but\",\"by\",\"for\",\"for\",\"from\",\"in\",\"into\",\"near\",\"nor\",\"of\",\"on\",\"onto\",\"or\",\"the\",\"to\",\"with\"].map(e=>`\\\\s${e}\\\\s`),n=new RegExp(`(?!${t.join(\"|\")})\\\\w\\\\S*`,\"g\");return(\"\"+e).replace(n,e=>e.charAt(0).toUpperCase()+e.substr(1).replace(/[A-Z]/g,e=>\" \"+e))}const Q={addEventListeners:N,attrString:d,camelCase:g,capitalize:D,closest:F,getContentType:y,escapeAttr:k,escapeAttrs:e=>{for(const t in e)e.hasOwnProperty(t)&&(e[t]=k(e[t]));return e},escapeHtml:C,forceNumber:U,forEach:E,getScripts:T,getStyles:L,hyphenCase:m,isCached:R,markup:v,merge:P,mobileClass:M,nameAttr:b,parseAttrs:x,parsedHtml:j,parseOptions:w,parseUserData:O,parseXML:q,removeFromArray:A,safeAttr:p,safeAttrName:h,safename:B,subtract:z,trimObj:l,unique:S,validAttr:c,titleCase:V,splitObject:(e,t)=>{const n=e=>(t,n)=>(t[n]=e[n],t);return[Object.keys(e).filter(e=>t.includes(e)).reduce(n(e),{}),Object.keys(e).filter(e=>!t.includes(e)).reduce(n(e),{})]}};e.fn.swapWith=function(t){var n=e(t),r=e(\"
\");return this.before(r),n.before(this),r.before(n).remove(),this};const W=e=>Object.entries(e).reduce((e,[t,n])=>i(i({},e),{},{[t+\"Selector\"]:\".\"+n}),{});n.g=Q},function(e,t,n){n.d(t,\"a\",(function(){return a}));var r=n(0),o=n(2),i=n.n(o);function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class a{constructor(e,t){this.rawConfig=jQuery.extend({},e),e=jQuery.extend({},e),this.preview=t,delete e.isPreview,this.preview&&delete e.required;const n=[\"label\",\"description\",\"subtype\",\"required\",\"disabled\"];for(const t of n)this[t]=e[t],delete e[t];e.id||(e.name?e.id=e.name:e.id=\"control-\"+Math.floor(1e7*Math.random()+1)),this.id=e.id,this.type=e.type,this.description&&(e.title=this.description),a.controlConfig||(a.controlConfig={});const r=this.subtype?this.type+\".\"+this.subtype:this.type;this.classConfig=jQuery.extend({},a.controlConfig[r]||{}),this.subtype&&(e.type=this.subtype),this.required&&(e.required=\"required\",e[\"aria-required\"]=\"true\"),this.disabled&&(e.disabled=\"disabled\"),this.config=e,this.configure()}static get definition(){return{}}static register(e,t,n){const r=n?n+\".\":\"\";a.classRegister||(a.classRegister={}),Array.isArray(e)||(e=[e]);for(const n of e)-1===n.indexOf(\".\")?a.classRegister[r+n]=t:a.error(`Ignoring type ${n}. Cannot use the character '.' in a type name.`)}static getRegistered(e=!1){const t=Object.keys(a.classRegister);return t.length?t.filter(t=>e?t.indexOf(e+\".\")>-1:-1==t.indexOf(\".\")):t}static getRegisteredSubtypes(){const e={};for(const t in a.classRegister)if(a.classRegister.hasOwnProperty(t)){const[n,r]=t.split(\".\");if(!r)continue;e[n]||(e[n]=[]),e[n].push(r)}return e}static getClass(e,t){const n=t?e+\".\"+t:e,r=a.classRegister[n]||a.classRegister[e];return r||a.error(\"Invalid control type. (Type: \"+e+\", Subtype: \"+t+\"). Please ensure you have registered it, and imported it correctly.\")}static loadCustom(e){let t=[];if(e&&(t=t.concat(e)),window.fbControls&&(t=t.concat(window.fbControls)),!this.fbControlsLoaded){for(const e of t)e(a,a.classRegister);this.fbControlsLoaded=!0}}static mi18n(e,t){const n=this.definition;let r=n.i18n||{};r=r[i.a.locale]||r.default||r;const o=this.camelCase(e),s=\"object\"==typeof r?r[o]||r[e]:r;if(s)return s;let a=n.mi18n;return\"object\"==typeof a&&(a=a[o]||a[e]),a||(a=o),i.a.get(a,t)}static active(e){return!Array.isArray(this.definition.inactive)||-1==this.definition.inactive.indexOf(e)}static label(e){return this.mi18n(e)}static icon(e){const t=this.definition;return t&&\"object\"==typeof t.icon?t.icon[e]:t.icon}configure(){}build(){const e=this.config,{label:t,type:n}=e,o=s(e,[\"label\",\"type\"]);return this.markup(n,Object(r.x)(t),o)}on(e){const t={prerender:e=>e,render:e=>{const t=()=>{this.onRender&&this.onRender(e)};this.css&&Object(r.p)(this.css),this.js&&!Object(r.s)(this.js)?Object(r.o)(this.js).done(t):t()}};return e?t[e]:t}static error(e){throw new Error(e)}markup(e,t=\"\",n={}){return this.element=Object(r.t)(e,t,n),this.element}parsedHtml(e){return Object(r.x)(e)}static camelCase(e){return Object(r.d)(e)}}},function(e,t){\n/*!\n * mi18n - https://github.com/Draggable/mi18n\n * Version: 0.4.7\n * Author: Kevin Chappell (http://kevin-chappell.com)\n */\ne.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=7)}([function(e,t,n){var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},o=n(2),i=n(10),s=Object.prototype.toString;function a(e){return\"[object Array]\"===s.call(e)}function l(e){return null!==e&&\"object\"===(void 0===e?\"undefined\":r(e))}function c(e){return\"[object Function]\"===s.call(e)}function u(e,t){if(null!=e)if(\"object\"!==(void 0===e?\"undefined\":r(e))&&(e=[e]),a(e))for(var n=0,o=e.length;n=200&&e<300},headers:{common:{Accept:\"application/json, text/plain, */*\"}}};r.forEach([\"delete\",\"get\",\"head\"],(function(e){a.headers[e]={}})),r.forEach([\"post\",\"put\",\"patch\"],(function(e){a.headers[e]=r.merge(i)})),e.exports=a}).call(this,n(12))},function(e,t,n){e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r0&&void 0!==arguments[0]?arguments[0]:s;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.langs=Object.create(null),this.loaded=[],this.processConfig(t)}return e.prototype.processConfig=function(e){var t=this,n=Object.assign({},s,e),r=n.location,o=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(n,[\"location\"]),i=r.replace(/\\/?$/,\"/\");this.config=Object.assign({},{location:i},o);var a=this.config,l=a.override,c=a.preloaded,u=void 0===c?{}:c,d=Object.entries(this.langs).concat(Object.entries(l||u));this.langs=d.reduce((function(e,n){var r=n[0],o=n[1];return e[r]=t.applyLanguage.call(t,r,o),e}),{}),this.locale=this.config.locale||this.config.langs[0]},e.prototype.init=function(e){return this.processConfig.call(this,Object.assign({},this.config,e)),this.setCurrent(this.locale)},e.prototype.addLanguage=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=\"string\"==typeof t?this.processFile.call(this,t):t,this.applyLanguage.call(this,e,t),this.config.langs.push(\"locale\")},e.prototype.getValue=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.locale;return this.langs[t]&&this.langs[t][e]||this.getFallbackValue(e)},e.prototype.getFallbackValue=function(e){var t=Object.values(this.langs).find((function(t){return t[e]}));return t&&t[e]},e.prototype.makeSafe=function(e){var t={\"{\":\"\\\\{\",\"}\":\"\\\\}\",\"|\":\"\\\\|\"};return e=e.replace(/\\{|\\}|\\|/g,(function(e){return t[e]})),new RegExp(e,\"g\")},e.prototype.put=function(e,t){return this.current[e]=t},e.prototype.get=function(e,t){var n=this.getValue(e);if(n){var o=n.match(/\\{[^}]+?\\}/g),i=void 0;if(t&&o)if(\"object\"===(void 0===t?\"undefined\":r(t)))for(var s=0;s1&&void 0!==arguments[1])||arguments[1],n=this;return new Promise((function(r,o){if(-1!==n.loaded.indexOf(e)&&t)return n.applyLanguage.call(n,n.langs[e]),r(n.langs[e]);var s=[n.config.location,e,n.config.extension].join(\"\");return(0,i.get)(s).then((function(t){var o=t.data,i=n.processFile(o);return n.applyLanguage.call(n,e,i),n.loaded.push(e),r(n.langs[e])})).catch((function(){var t=n.applyLanguage.call(n,e);r(t)}))}))},e.prototype.applyLanguage=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.config.override[e]||{},r=this.langs[e]||{};return this.langs[e]=Object.assign({},r,t,n),this.langs[e]},e.prototype.setCurrent=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"en-US\";return this.loadLang(t).then((function(){return e.locale=t,e.current=e.langs[t],e.current}))},o(e,[{key:\"getLangs\",get:function(){return this.config.langs}}]),e}();t.default=new a},function(e,t,n){e.exports=n(9)},function(e,t,n){var r=n(0),o=n(2),i=n(11),s=n(1);function a(e){var t=new i(e),n=o(i.prototype.request,t);return r.extend(n,i.prototype,t),r.extend(n,t),n}var l=a(s);l.Axios=i,l.create=function(e){return a(r.merge(s,e))},l.Cancel=n(6),l.CancelToken=n(26),l.isCancel=n(5),l.all=function(e){return Promise.all(e)},l.spread=n(27),e.exports=l,e.exports.default=l},function(e,t,n){\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction r(e){return!!e.constructor&&\"function\"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(r(e)||function(e){return\"function\"==typeof e.readFloatLE&&\"function\"==typeof e.slice&&r(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t,n){var r=n(1),o=n(0),i=n(21),s=n(22);function a(e){this.defaults=e,this.interceptors={request:new i,response:new i}}a.prototype.request=function(e){\"string\"==typeof e&&(e=o.merge({url:arguments[0]},arguments[1])),(e=o.merge(r,{method:\"get\"},this.defaults,e)).method=e.method.toLowerCase();var t=[s,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)n=n.then(t.shift(),t.shift());return n},o.forEach([\"delete\",\"get\",\"head\",\"options\"],(function(e){a.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}})),o.forEach([\"post\",\"put\",\"patch\"],(function(e){a.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}})),e.exports=a},function(e,t,n){var r,o,i=e.exports={};function s(){throw new Error(\"setTimeout has not been defined\")}function a(){throw new Error(\"clearTimeout has not been defined\")}function l(e){if(r===setTimeout)return setTimeout(e,0);if((r===s||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r=\"function\"==typeof setTimeout?setTimeout:s}catch(e){r=s}try{o=\"function\"==typeof clearTimeout?clearTimeout:a}catch(e){o=a}}();var c,u=[],d=!1,p=-1;function f(){d&&c&&(d=!1,c.length?u=c.concat(u):p=-1,u.length&&h())}function h(){if(!d){var e=l(f);d=!0;for(var t=u.length;t;){for(c=u,u=[];++p1)for(var n=1;n=0)return;s[t]=\"set-cookie\"===t?(s[t]?s[t]:[]).concat([n]):s[t]?s[t]+\", \"+n:n}})),s):s}},function(e,t,n){var r=n(0);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement(\"a\");function o(e){var r=e;return t&&(n.setAttribute(\"href\",r),r=n.href),n.setAttribute(\"href\",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,\"\"):\"\",host:n.host,search:n.search?n.search.replace(/^\\?/,\"\"):\"\",hash:n.hash?n.hash.replace(/^#/,\"\"):\"\",hostname:n.hostname,port:n.port,pathname:\"/\"===n.pathname.charAt(0)?n.pathname:\"/\"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){function r(){this.message=\"String contains an invalid character\"}r.prototype=new Error,r.prototype.code=5,r.prototype.name=\"InvalidCharacterError\",e.exports=function(e){for(var t,n,o=String(e),i=\"\",s=0,a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";o.charAt(0|s)||(a=\"=\",s%1);i+=a.charAt(63&t>>8-s%1*8)){if((n=o.charCodeAt(s+=.75))>255)throw new r;t=t<<8|n}return i}},function(e,t,n){var r=n(0);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,o,i,s){var a=[];a.push(e+\"=\"+encodeURIComponent(t)),r.isNumber(n)&&a.push(\"expires=\"+new Date(n).toGMTString()),r.isString(o)&&a.push(\"path=\"+o),r.isString(i)&&a.push(\"domain=\"+i),!0===s&&a.push(\"secure\"),document.cookie=a.join(\"; \")},read:function(e){var t=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+e+\")=([^;]*)\"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,\"\",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){var r=n(0);function o(){this.handlers=[]}o.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=o},function(e,t,n){var r=n(0),o=n(23),i=n(5),s=n(1),a=n(24),l=n(25);function c(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return c(e),e.baseURL&&!a(e.url)&&(e.url=l(e.baseURL,e.url)),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],(function(t){delete e.headers[t]})),(e.adapter||s.adapter)(e).then((function(t){return c(e),t.data=o(t.data,t.headers,e.transformResponse),t}),(function(t){return i(t)||(c(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},function(e,t,n){var r=n(0);e.exports=function(e,t,n){return r.forEach(n,(function(n){e=n(e,t)})),e}},function(e,t,n){e.exports=function(e){return/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(e)}},function(e,t,n){e.exports=function(e,t){return t?e.replace(/\\/+$/,\"\")+\"/\"+t.replace(/^\\/+/,\"\"):e}},function(e,t,n){var r=n(6);function o(e){if(\"function\"!=typeof e)throw new TypeError(\"executor must be a function.\");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var e;return{token:new o((function(t){e=t})),cancel:e}},e.exports=o},function(e,t,n){e.exports=function(e){return function(t){return e.apply(null,t)}}}])},function(e,t,n){n.d(t,\"d\",(function(){return i})),n.d(t,\"g\",(function(){return s})),n.d(t,\"c\",(function(){return a})),n.d(t,\"a\",(function(){return l})),n.d(t,\"f\",(function(){return c})),n.d(t,\"e\",(function(){return u})),n.d(t,\"b\",(function(){return d}));var r=n(2);const o=()=>null;n.n(r).a.addLanguage(\"en-US\",{NATIVE_NAME:\"English (US)\",ENGLISH_NAME:\"English\",addOption:\"Add Option +\",allFieldsRemoved:\"All fields were removed.\",allowMultipleFiles:\"Allow users to upload multiple files\",autocomplete:\"Autocomplete\",button:\"Button\",cannotBeEmpty:\"This field cannot be empty\",checkboxGroup:\"Checkbox Group\",checkbox:\"Checkbox\",checkboxes:\"Checkboxes\",className:\"Class\",clearAllMessage:\"Are you sure you want to clear all fields?\",clear:\"Clear\",close:\"Close\",content:\"Content\",copy:\"Copy To Clipboard\",copyButton:\"+\",copyButtonTooltip:\"Copy\",dateField:\"Date Field\",description:\"Help Text\",descriptionField:\"Description\",devMode:\"Developer Mode\",editNames:\"Edit Names\",editorTitle:\"Form Elements\",editXML:\"Edit XML\",enableOther:\"Enable "Other"\",enableOtherMsg:\"Let users enter an unlisted option\",fieldDeleteWarning:\"false\",fieldVars:\"Field Variables\",fieldNonEditable:\"This field cannot be edited.\",fieldRemoveWarning:\"Are you sure you want to remove this field?\",fileUpload:\"File Upload\",formUpdated:\"Form Updated\",getStarted:\"Drag a field from the right to this area\",header:\"Header\",hide:\"Edit\",hidden:\"Hidden Input\",inline:\"Inline\",inlineDesc:\"Display {type} inline\",label:\"Label\",labelEmpty:\"Field Label cannot be empty\",limitRole:\"Limit access to one or more of the following roles:\",mandatory:\"Mandatory\",maxlength:\"Max Length\",minOptionMessage:\"This field requires a minimum of 2 options\",minSelectionRequired:\"Minimum {min} selections required\",multipleFiles:\"Multiple Files\",name:\"Name\",no:\"No\",noFieldsToClear:\"There are no fields to clear\",number:\"Number\",off:\"Off\",on:\"On\",option:\"Option\",optionCount:\"Option {count}\",options:\"Options\",optional:\"optional\",optionLabelPlaceholder:\"Label\",optionValuePlaceholder:\"Value\",optionEmpty:\"Option value required\",other:\"Other\",paragraph:\"Paragraph\",placeholder:\"Placeholder\",\"placeholders.value\":\"Value\",\"placeholders.label\":\"Label\",\"placeholders.email\":\"Enter your email\",\"placeholders.className\":\"space separated classes\",\"placeholders.password\":\"Enter your password\",preview:\"Preview\",radioGroup:\"Radio Group\",radio:\"Radio\",removeMessage:\"Remove Element\",removeOption:\"Remove Option\",remove:\"×\",required:\"Required\",requireValidOption:\"Only accept a pre-defined Option\",richText:\"Rich Text Editor\",roles:\"Access\",rows:\"Rows\",save:\"Save\",selectOptions:\"Options\",select:\"Select\",selectColor:\"Select Color\",selectionsMessage:\"Allow Multiple Selections\",size:\"Size\",\"size.xs\":\"Extra Small\",\"size.sm\":\"Small\",\"size.m\":\"Default\",\"size.lg\":\"Large\",style:\"Style\",\"styles.btn.default\":\"Default\",\"styles.btn.danger\":\"Danger\",\"styles.btn.info\":\"Info\",\"styles.btn.primary\":\"Primary\",\"styles.btn.success\":\"Success\",\"styles.btn.warning\":\"Warning\",subtype:\"Type\",text:\"Text Field\",textArea:\"Text Area\",toggle:\"Toggle\",warning:\"Warning!\",value:\"Value\",viewJSON:\"[{…}]\",viewXML:\"</>\",yes:\"Yes\"});const i={actionButtons:[],allowStageSort:!0,append:!1,controlOrder:[\"autocomplete\",\"button\",\"checkbox-group\",\"checkbox\",\"date\",\"file\",\"header\",\"hidden\",\"number\",\"paragraph\",\"radio-group\",\"select\",\"text\",\"textarea\"],controlPosition:\"right\",dataType:\"json\",defaultFields:[],disabledActionButtons:[],disabledAttrs:[],disabledFieldButtons:{},disabledSubtypes:{},disableFields:[],disableHTMLLabels:!1,disableInjectedStyle:!1,editOnAdd:!1,fields:[],fieldRemoveWarn:!1,fieldEditContainer:null,inputSets:[],notify:{error:e=>{console.log(e)},success:e=>{console.log(e)},warning:e=>{console.warn(e)}},onAddField:(e,t)=>t,onAddFieldAfter:(e,t)=>t,onAddOption:e=>e,onClearAll:o,onCloseFieldEdit:o,onOpenFieldEdit:o,onSave:o,persistDefaultFields:!1,prepend:!1,replaceFields:[],roles:{1:\"Administrator\"},scrollToFieldOnAdd:!0,showActionButtons:!0,sortableControls:!1,stickyControls:{enable:!0,offset:{top:5,bottom:\"auto\",right:\"auto\"}},subtypes:{},templates:{},typeUserAttrs:{},typeUserDisabledAttrs:{},typeUserEvents:{},defaultGridColumnClass:\"col-md-12\",cancelGridModeDistance:100,enableColumnInsertMenu:!1,enableEnhancedBootstrapGrid:!1},s={btn:[\"default\",\"danger\",\"info\",\"primary\",\"success\",\"warning\"]},a={location:\"assets/lang/\"},l={},c={rowWrapperClass:\"rowWrapper\",colWrapperClass:\"colWrapper\",tmpColWrapperClass:\"tempColWrapper\",tmpRowPlaceholderClass:\"tempRowWrapper\",invisibleRowPlaceholderClass:\"invisibleRowPlaceholder\"},u=333,d=\"li.form-field\"},function(e,t,n){n.d(t,\"d\",(function(){return r})),n.d(t,\"f\",(function(){return i})),n.d(t,\"b\",(function(){return s})),n.d(t,\"c\",(function(){return a})),n.d(t,\"e\",(function(){return l})),n.d(t,\"a\",(function(){return u}));const r={},o={text:[\"text\",\"password\",\"email\",\"color\",\"tel\"],header:[\"h1\",\"h2\",\"h3\"],button:[\"button\",\"submit\",\"reset\"],paragraph:[\"p\",\"address\",\"blockquote\",\"canvas\",\"output\"],textarea:[\"textarea\",\"quill\"]},i=e=>{e.parentNode&&e.parentNode.removeChild(e)},s=e=>{for(;e.firstChild;)e.removeChild(e.firstChild);return e},a=(e,t,n=!0)=>{const r=[];let o=[\"none\",\"block\"];n&&(o=o.reverse());for(let n=e.length-1;n>=0;n--){-1!==e[n].textContent.toLowerCase().indexOf(t.toLowerCase())?(e[n].style.display=o[0],r.push(e[n])):e[n].style.display=o[1]}return r},l=[\"select\",\"checkbox-group\",\"checkbox\",\"radio-group\",\"autocomplete\"],c=new RegExp(`(${l.join(\"|\")})`);class u{constructor(e){return this.optionFields=l,this.optionFieldsRegEx=c,this.subtypes=o,this.empty=s,this.filter=a,r[e]=this,r[e]}onRender(e,t){e.parentElement?t(e):window.requestAnimationFrame(()=>this.onRender(e,t))}}},function(e,t,n){function r(e){let t;return\"function\"==typeof Event?t=new Event(e):(t=document.createEvent(\"Event\"),t.initEvent(e,!0,!0)),t}const o={loaded:r(\"loaded\"),viewData:r(\"viewData\"),userDeclined:r(\"userDeclined\"),modalClosed:r(\"modalClosed\"),modalOpened:r(\"modalOpened\"),formSaved:r(\"formSaved\"),fieldAdded:r(\"fieldAdded\"),fieldRemoved:r(\"fieldRemoved\"),fieldRendered:r(\"fieldRendered\"),fieldEditOpened:r(\"fieldEditOpened\"),fieldEditClosed:r(\"fieldEditClosed\")};t.a=o},function(e,t,n){n.d(t,\"a\",(function(){return s}));var r=n(1),o=n(2),i=n.n(o);class s extends r.a{static register(e={},t=[]){s.customRegister={},s.def||(s.def={icon:{},i18n:{}}),s.templates=e;const n=i.a.locale;s.def.i18n[n]||(s.def.i18n[n]={}),r.a.register(Object.keys(e),s);for(const o of t){let t=o.type;if(o.attrs=o.attrs||{},!t){if(!o.attrs.type){this.error(\"Ignoring invalid custom field definition. Please specify a type property.\");continue}t=o.attrs.type}let i=o.subtype||t;if(!e[t]){const e=r.a.getClass(t,o.subtype);if(!e){this.error(\"Error while registering custom field: \"+t+(o.subtype?\":\"+o.subtype:\"\")+\". Unable to find any existing defined control or template for rendering.\");continue}i=o.datatype?o.datatype:`${t}-${Math.floor(9e3*Math.random()+1e3)}`,s.customRegister[i]=jQuery.extend(o,{type:t,class:e})}s.def.i18n[n][i]=o.label,s.def.icon[i]=o.icon}}static getRegistered(e=!1){return e?r.a.getRegistered(e):Object.keys(s.customRegister)}static lookup(e){return s.customRegister[e]}static get definition(){return s.def}build(){let e=s.templates[this.type];if(!e)return this.error(\"Invalid custom control type. Please ensure you have registered it correctly as a template option.\");const t=Object.assign(this.config),n=[\"label\",\"description\",\"subtype\",\"id\",\"isPreview\",\"required\",\"title\",\"aria-required\",\"type\"];for(const e of n)t[e]=this.config[e]||this[e];return e=e.bind(this),e=e(t),e.js&&(this.js=e.js),e.css&&(this.css=e.css),this.onRender=e.onRender,{field:e.field,layout:e.layout}}}s.customRegister={}},,function(e,t,n){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||\"\",r=e[3];if(!r)return n;if(t&&\"function\"==typeof btoa){var o=(s=r,a=btoa(unescape(encodeURIComponent(JSON.stringify(s)))),l=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(a),\"/*# \".concat(l,\" */\")),i=r.sources.map((function(e){return\"/*# sourceURL=\".concat(r.sourceRoot||\"\").concat(e,\" */\")}));return[n].concat(i).concat([o]).join(\"\\n\")}var s,a,l;return[n].join(\"\\n\")}(t,e);return t[2]?\"@media \".concat(t[2],\" {\").concat(n,\"}\"):n})).join(\"\")},t.i=function(e,n,r){\"string\"==typeof e&&(e=[[null,e,\"\"]]);var o={};if(r)for(var i=0;i{let n=e.id?`formbuilder-${e.type} form-group field-${e.id}`:\"\";if(e.className){const o=Object(r.m)(e.className);o&&o.length>0&&(n+=\" \"+o.join(\" \")),t.classList&&t.classList.remove(...o)}return n};class i{constructor(e,t){this.preview=t,this.templates={label:null,help:null,default:(e,t,n,r)=>(n&&t.appendChild(n),this.markup(\"div\",[t,e],{className:o(r,e)})),noLabel:(e,t,n,r)=>this.markup(\"div\",e,{className:o(r,e)}),hidden:e=>e},e&&(this.templates=jQuery.extend(this.templates,e)),this.configure()}configure(){}build(e,t,n){this.preview&&(t.name?t.name=t.name+\"-preview\":t.name=r.g.nameAttr(t)+\"-preview\"),t.id=t.name,this.data=jQuery.extend({},t);const o=new e(t,this.preview);let i=o.build();\"object\"==typeof i&&i.field||(i={field:i});const s=this.label(),a=this.help();let l;l=n&&this.isTemplate(n)?n:this.isTemplate(i.layout)?i.layout:\"default\";const c=this.processTemplate(l,i.field,s,a);return o.on(\"prerender\")(c),c.addEventListener(\"fieldRendered\",o.on(\"render\")),c}label(){const e=this.data.label||\"\",t=[r.g.parsedHtml(e)];return this.data.required&&t.push(this.markup(\"span\",\"*\",{className:\"formbuilder-required\"})),this.isTemplate(\"label\")?this.processTemplate(\"label\",t):this.markup(\"label\",t,{for:this.data.id,className:`formbuilder-${this.data.type}-label`})}help(){return this.data.description?this.isTemplate(\"help\")?this.processTemplate(\"help\",this.data.description):this.markup(\"span\",\"?\",{className:\"tooltip-element\",tooltip:this.data.description}):null}isTemplate(e){return\"function\"==typeof this.templates[e]}processTemplate(e,...t){let n=this.templates[e](...t,this.data);return n.jquery&&(n=n[0]),n}markup(e,t=\"\",n={}){return r.g.markup(e,t,n)}}},,function(t,n,r){var o=r(1),i=r(4);function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class a extends o.a{static get definition(){return{mi18n:{requireValidOption:\"requireValidOption\"}}}build(){const e=this.config,{values:t,type:n}=e,r=s(e,[\"values\",\"type\"]),o=e=>{const t=e.target.nextSibling.nextSibling,n=e.target.nextSibling,r=this.getActiveOption(t);let o=new Map([[38,()=>{const e=this.getPreviousOption(r);e&&this.selectOption(t,e)}],[40,()=>{const e=this.getNextOption(r);e&&this.selectOption(t,e)}],[13,()=>{r?(e.target.value=r.innerHTML,n.value=r.getAttribute(\"value\"),\"none\"===t.style.display?this.showList(t,r):this.hideList(t)):this.config.requireValidOption&&(this.isOptionValid(t,e.target.value)||(e.target.value=\"\",e.target.nextSibling.value=\"\")),e.preventDefault()}],[27,()=>{this.hideList(t)}]]).get(e.keyCode);return o||(o=()=>!1),o()},a={focus:e=>{const t=e.target.nextSibling.nextSibling,n=Object(i.c)(t.querySelectorAll(\"li\"),e.target.value);if(e.target.addEventListener(\"keydown\",o),e.target.value.length>0){const e=n.length>0?n[n.length-1]:null;this.showList(t,e)}},blur:e=>{e.target.removeEventListener(\"keydown\",o);const t=setTimeout(()=>{e.target.nextSibling.nextSibling.style.display=\"none\",clearTimeout(t)},200);if(this.config.requireValidOption){const t=e.target.nextSibling.nextSibling;this.isOptionValid(t,e.target.value)||(e.target.value=\"\",e.target.nextSibling.value=\"\")}},input:e=>{const t=e.target.nextSibling.nextSibling;e.target.nextSibling.value=e.target.value;const n=Object(i.c)(t.querySelectorAll(\"li\"),e.target.value);if(0==n.length)this.hideList(t);else{let e=this.getActiveOption(t);e||(e=n[n.length-1]),this.showList(t,e)}}},l=Object.assign({},r,{id:r.id+\"-input\",autocomplete:\"off\",events:a}),c=Object.assign({},r,{type:\"hidden\"});delete l.name;const u=[this.markup(\"input\",null,l),this.markup(\"input\",null,c)],d=t.map(e=>{const t=e.label,n={events:{click:t=>{const n=t.target.parentElement,r=n.previousSibling.previousSibling;r.value=e.label,r.nextSibling.value=e.value,this.hideList(n)}},value:e.value};return this.markup(\"li\",t,n)});return u.push(this.markup(\"ul\",d,{id:r.id+\"-list\",className:`formbuilder-${n}-list`})),u}hideList(e){this.selectOption(e,null),e.style.display=\"none\"}showList(e,t){this.selectOption(e,t),e.style.display=\"block\",e.style.width=e.parentElement.offsetWidth+\"px\"}getActiveOption(e){const t=e.getElementsByClassName(\"active-option\")[0];return t&&\"none\"!==t.style.display?t:null}getPreviousOption(e){let t=e;do{t=t?t.previousSibling:null}while(null!=t&&\"none\"===t.style.display);return t}getNextOption(e){let t=e;do{t=t?t.nextSibling:null}while(null!=t&&\"none\"===t.style.display);return t}selectOption(e,t){const n=e.querySelectorAll(\"li\");for(let e=0;e=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class f extends o.a{build(){const e=this.config,{type:t}=e,n=p(e,[\"type\"]);let r=t;const o={paragraph:\"p\",header:this.subtype};return o[t]&&(r=o[t]),{field:this.markup(r,d.g.parsedHtml(this.label),n),layout:\"noLabel\"}}}function h(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}o.a.register([\"paragraph\",\"header\"],f),o.a.register([\"p\",\"address\",\"blockquote\",\"canvas\",\"output\"],f,\"paragraph\"),o.a.register([\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],f,\"header\");class m extends o.a{static get definition(){return{inactive:[\"checkbox\"],mi18n:{minSelectionRequired:\"minSelectionRequired\"}}}build(){const e=[],t=this.config,{values:n,value:r,placeholder:o,type:i,inline:s,other:a,toggle:l}=t,c=h(t,[\"values\",\"value\",\"placeholder\",\"type\",\"inline\",\"other\",\"toggle\"]),u=i.replace(\"-group\",\"\"),p=\"select\"===i;if((c.multiple||\"checkbox-group\"===i)&&(c.name=c.name+\"[]\"),\"checkbox-group\"===i&&c.required){const e=this,t=this.onRender.bind(this);this.onRender=function(){t(),e.groupRequired()}}if(delete c.title,n){o&&p&&e.push(this.markup(\"option\",o,{disabled:null,selected:null}));for(let t=0;t{const t=e.target,n=t.parentElement.previousElementSibling;n.value=t.value,n.name=c.id+\"[]\"}},id:t.id+\"-value\",className:\"other-val\"},i=this.markup(\"input\",null,r),a=[document.createTextNode(\"Other\"),this.markup(\"input\",null,o)],l=this.markup(\"label\",a,{for:r.id}),d=this.markup(\"div\",[i,l],{className:n});e.push(d)}}return this.dom=\"select\"==i?this.markup(u,e,Object(d.D)(c,!0)):this.markup(\"div\",e,{className:i}),this.dom}groupRequired(){const e=this.element.getElementsByTagName(\"input\"),t=(e,t)=>{[].forEach.call(e,e=>{t?e.removeAttribute(\"required\"):e.setAttribute(\"required\",\"required\"),((e,t)=>{const n=o.a.mi18n(\"minSelectionRequired\",1);t?e.setCustomValidity(\"\"):e.setCustomValidity(n)})(e,t)})},n=()=>{const n=[].some.call(e,e=>e.checked);t(e,n)};for(let t=e.length-1;t>=0;t--)e[t].addEventListener(\"change\",n);n()}onRender(){if(this.config.userData){const t=this.config.userData.slice();\"select\"===this.config.type?e(this.dom).val(t).prop(\"selected\",!0):this.config.type.endsWith(\"-group\")&&this.dom.querySelectorAll(\"input\").forEach(e=>{if(!e.classList.contains(\"other-val\")){for(let n=0;ndelete this.classConfig[e]);const t=this.classConfig.template||'\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
Upload a file
\\n
\\n \\n Processing dropped files...\\n \\n \\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n \\n \\n \\n
';this.fineTemplate=e(\"\").attr(\"id\",\"qq-template\").html(t)}build(){return this.input=this.markup(\"input\",null,{type:\"hidden\",name:this.config.name,id:this.config.name}),this.wrapper=this.markup(\"div\",\"\",{id:this.config.name+\"-wrapper\"}),[this.input,this.wrapper]}onRender(){const t=e(this.wrapper),n=e(this.input),r=jQuery.extend(!0,{request:{endpoint:this.handler},deleteFile:{enabled:!0,endpoint:this.handler},chunking:{enabled:!0,concurrent:{enabled:!0},success:{endpoint:this.handler+(-1==this.handler.indexOf(\"?\")?\"?\":\"&\")+\"done\"}},resume:{enabled:!0},retry:{enableAuto:!0,showButton:!0},callbacks:{onError:(n,r,o)=>{\".\"!=o.slice(-1)&&(o+=\".\");const i=e(\"\").addClass(\"qq-error-message\").html(`Error processing upload: ${r}. Reason: ${o}`).prependTo(t.find(\".qq-uploader\")),s=window.setTimeout(()=>{i.fadeOut(()=>{i.remove(),window.clearTimeout(s)})},6e3);return n},onStatusChange:(e,r,o)=>{const i=t.fineUploader(\"getUploads\"),s=[];for(const e of i)\"upload successful\"==e.status&&s.push(e.name);return n.val(s.join(\", \")),{id:e,oldStatus:r,newStatus:o}}},template:this.fineTemplate},this.classConfig);t.fineUploader(r)}}function y(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}g.register(\"file\",g,\"file\"),g.register(\"fineuploader\",b,\"file\");class v extends o.a{static get definition(){return{mi18n:{textarea:\"textArea\"}}}build(){const e=this.config,{value:t=\"\"}=e,n=y(e,[\"value\"]);return delete n.type,this.field=this.markup(\"textarea\",this.parsedHtml(t),n),this.field}onRender(){this.config.userData&&e(\"#\"+this.config.name).val(this.config.userData[0])}on(t){return\"prerender\"==t&&this.preview?t=>{this.field&&(t=this.field),e(t).on(\"mousedown\",e=>{e.stopPropagation()})}:super.on(t)}}function x(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}o.a.register(\"textarea\",v),o.a.register(\"textarea\",v,\"textarea\");class w extends v{configure(){if(this.js=[\"https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.9.11/tinymce.min.js\"],this.classConfig.js){let e=this.classConfig.js;Array.isArray(e)||(e=new Array(e)),this.js.concat(e),delete this.classConfig.js}this.classConfig.css&&(this.css=this.classConfig.css),this.editorOptions={height:250,paste_data_images:!0,plugins:[\"advlist autolink lists link image charmap print preview anchor\",\"searchreplace visualblocks code fullscreen\",\"insertdatetime media table contextmenu paste code\"],toolbar:\"undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | table\"}}build(){const e=this.config,{value:t=\"\"}=e,n=x(e,[\"value\"]);return delete n.type,this.field=this.markup(\"textarea\",this.parsedHtml(t),n),n.disabled&&(this.editorOptions.readonly=!0),this.field}onRender(e){window.tinymce.editors[this.id]&&window.tinymce.editors[this.id].remove();const t=jQuery.extend(this.editorOptions,this.classConfig);if(t.target=this.field,setTimeout(()=>{window.tinymce.init(t)},100),this.config.userData&&window.tinymce.editors[this.id].setContent(this.parsedHtml(this.config.userData[0])),window.lastFormBuilderCopiedTinyMCE){const e=setTimeout(()=>{window.tinymce.editors[this.id].setContent(this.parsedHtml(window.lastFormBuilderCopiedTinyMCE)),window.lastFormBuilderCopiedTinyMCE=null,clearTimeout(e)},300)}return e}}function O(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function q(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function j(e){for(var t=1;t{},render:!0,templates:{},notify:{error:e=>{console.log(e)},success:e=>{console.log(e)},warning:e=>{console.warn(e)}}};if(this.options=jQuery.extend(!0,t,e),this.instanceContainers=[],i.a.current||i.a.init(this.options.i18n),!this.options.formData)return!1;this.options.formData=this.parseFormData(this.options.formData),u.a.controlConfig=e.controlConfig||{},u.a.loadCustom(e.controls),Object.keys(this.options.templates).length&&d.a.register(this.options.templates),\"function\"!=typeof Element.prototype.appendFormFields&&(Element.prototype.appendFormFields=function(e){Array.isArray(e)||(e=[e]);const t=s.g.markup(\"div\",e,{className:\"rendered-form\"});this.appendChild(t),e.forEach(e=>{const[n]=e.className.match(/row-([^\\s]+)/)||[];if(n){const r=this.id?`${this.id}-row-${n}`:\"row-\"+n;let o=document.getElementById(r);o||(o=s.g.markup(\"div\",null,{id:r,className:\"row\"}),t.appendChild(o)),o.appendChild(e)}else t.appendChild(e);e.dispatchEvent(l.a.fieldRendered)})}),\"function\"!=typeof Element.prototype.emptyContainer&&(Element.prototype.emptyContainer=function(){const e=this;for(;e.lastChild;)e.removeChild(e.lastChild)})}santizeField(e,t){const n=Object.assign({},e);return t&&(n.id=e.id&&`${e.id}-${t}`,n.name=e.name&&`${e.name}-${t}`),n.className=Array.isArray(e.className)?s.g.unique(e.className.join(\" \").split(\" \")).join(\" \"):e.className||e.class||null,delete n.class,e.values&&(e.values=e.values.map(e=>s.g.trimObj(e))),s.g.trimObj(n)}getElement(e){return(e=this.options.container||e)instanceof jQuery?e=e[0]:\"string\"==typeof e&&(e=document.querySelector(e)),e}render(e=null,t=0){const n=this,r=this.options;e=this.getElement(e);const o=[];if(r.formData){const i=new r.layout(r.layoutTemplates);for(let e=0;ee.map(e=>e.innerHTML).join(\"\");n.markup=e(o)}}else{const e=s.g.markup(\"div\",r.messages.noFormData,{className:\"no-form-data\"});o.push(e),r.notify.error(r.messages.noFormData)}if(r.disableInjectedStyle){const e=document.getElementsByClassName(\"formBuilder-injected-style\");Object(s.j)(e,t=>Object(a.f)(e[t]))}return n}renderControl(e=null){const t=this.options,n=t.formData;if(!n||Array.isArray(n))throw new Error(\"To render a single element, please specify a single object of formData for the field in question\");const r=this.santizeField(n),o=new t.layout,i=u.a.getClass(n.type,n.subtype),s=t.forceTemplate||\"hidden\",a=o.build(i,r,s);return e.appendFormFields(a),t.notify.success(t.messages.formRendered),this}get userData(){const t=this.options.formData.slice();return t.filter(e=>\"tinymce\"===e.subtype).forEach(e=>window.tinymce.get(e.name).save()),this.instanceContainers.forEach(n=>{const r=e(\"select, input, textarea\",n).serializeArray().reduce((e,{name:t,value:n})=>(e[t=t.replace(\"[]\",\"\")]?e[t].push(n):e[t]=[n],e),{}),o=t.length;for(let e=0;e{this.options.formData.slice().filter(e=>\"tinymce\"===e.subtype).forEach(e=>window.tinymce.get(e.name).setContent(\"\")),e.querySelectorAll(\"input, select, textarea\").forEach(e=>{[\"checkbox\",\"radio\"].includes(e.type)?e.checked=!1:e.value=\"\"})})}parseFormData(e){return\"object\"!=typeof e&&(e={xml:e=>Object(s.w)(e),json:e=>window.JSON.parse(e)}[this.options.dataType](e)||!1),e}}!function(e){let t;const n={init:(e,r={})=>(t=e,n.instance=new f(r),e.each(t=>n.instance.render(e[t],t)),n.instance),userData:()=>n.instance&&n.instance.userData,clear:()=>n.instance&&n.instance.clear(),setData:e=>{if(n.instance){const t=n.instance;t.options.formData=t.parseFormData(e)}},render:(e,r={})=>{if(n.instance){const o=n.instance;e||(e=o.options.formData),o.options=Object.assign({},o.options,r,{formData:o.parseFormData(e)}),t.each(e=>n.instance.render(t[e],e))}},html:()=>t.map(e=>t[e]).html()};e.fn.formRender=function(e={},...t){if(n[e])return n[e].apply(this,t);{const t=n.init(this,e);return Object.assign(n,t),t}},e.fn.controlRender=function(e,t={}){t.formData=e,t.dataType=\"string\"==typeof e?\"json\":\"xml\";const n=new f(t),r=this;return r.each(e=>n.renderControl(r[e])),r}}(jQuery)},function(e,t,n){var r=n(9),o=n(32);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,\"\"]]);var i={attributes:{class:\"formBuilder-injected-style\"},insert:\"head\",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){n.r(t);var r=n(8),o=n.n(r)()(!1);o.push([e.i,'.rendered-form *{box-sizing:border-box}.rendered-form button,.rendered-form input,.rendered-form select,.rendered-form textarea{font-family:inherit;font-size:inherit;line-height:inherit}.rendered-form input{line-height:normal}.rendered-form textarea{overflow:auto}.rendered-form button,.rendered-form input,.rendered-form select,.rendered-form textarea{font-family:inherit;font-size:inherit;line-height:inherit}.rendered-form .btn-group{position:relative;display:inline-block;vertical-align:middle}.rendered-form .btn-group>.btn{position:relative;float:left}.rendered-form .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.rendered-form .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.rendered-form .btn-group .btn+.btn,.rendered-form .btn-group .btn+.btn-group,.rendered-form .btn-group .btn-group+.btn,.rendered-form .btn-group .btn-group+.btn-group{margin-left:-1px}.rendered-form .btn-group>.btn:last-child:not(:first-child),.rendered-form .btn-group>.dropdown-toggle:not(:first-child),.rendered-form .btn-group .input-group .form-control:last-child,.rendered-form .btn-group .input-group-addon:last-child,.rendered-form .btn-group .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.rendered-form .btn-group .input-group-btn:first-child>.btn:not(:first-child),.rendered-form .btn-group .input-group-btn:last-child>.btn,.rendered-form .btn-group .input-group-btn:last-child>.btn-group>.btn,.rendered-form .btn-group .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.rendered-form .btn-group>.btn.active,.rendered-form .btn-group>.btn:active,.rendered-form .btn-group>.btn:focus,.rendered-form .btn-group>.btn:hover{z-index:2}.rendered-form .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;user-select:none;background-image:none;border-radius:4px}.rendered-form .btn.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.rendered-form .btn.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.rendered-form .btn.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.rendered-form .btn.active,.rendered-form .btn.btn-active,.rendered-form .btn:active{background-image:none}.rendered-form .input-group .form-control:last-child,.rendered-form .input-group-addon:last-child,.rendered-form .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.rendered-form .input-group-btn:first-child>.btn:not(:first-child),.rendered-form .input-group-btn:last-child>.btn,.rendered-form .input-group-btn:last-child>.btn-group>.btn,.rendered-form .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.rendered-form .input-group .form-control,.rendered-form .input-group-addon,.rendered-form .input-group-btn{display:table-cell}.rendered-form .input-group-lg>.form-control,.rendered-form .input-group-lg>.input-group-addon,.rendered-form .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333}.rendered-form .input-group{position:relative;display:table;border-collapse:separate}.rendered-form .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.rendered-form .form-control,.rendered-form output{font-size:14px;line-height:1.42857143;display:block}.rendered-form textarea.form-control{height:auto}.rendered-form .form-control{height:34px;display:block;width:100%;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px}.rendered-form .form-control:focus{outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.rendered-form .form-group{margin-left:0px;margin-bottom:15px}.rendered-form .btn,.rendered-form .form-control{background-image:none}.rendered-form .pull-right{float:right}.rendered-form .pull-left{float:left}.rendered-form .formbuilder-required,.rendered-form .required-asterisk{color:#c10000}.rendered-form .formbuilder-checkbox-group input[type=checkbox],.rendered-form .formbuilder-checkbox-group input[type=radio],.rendered-form .formbuilder-radio-group input[type=checkbox],.rendered-form .formbuilder-radio-group input[type=radio]{margin:0 4px 0 0}.rendered-form .formbuilder-checkbox-inline,.rendered-form .formbuilder-radio-inline{margin-right:8px;display:inline-block;vertical-align:middle;padding-left:0}.rendered-form .formbuilder-checkbox-inline label input[type=text],.rendered-form .formbuilder-radio-inline label input[type=text]{margin-top:0}.rendered-form .formbuilder-checkbox-inline:first-child,.rendered-form .formbuilder-radio-inline:first-child{padding-left:0}.rendered-form .formbuilder-autocomplete-list{background-color:#fff;display:none;list-style:none;padding:0;border:1px solid #ccc;border-width:0 1px 1px;position:absolute;z-index:20;max-height:200px;overflow-y:auto}.rendered-form .formbuilder-autocomplete-list li{display:none;cursor:default;padding:5px;margin:0;transition:background-color 200ms ease-in-out}.rendered-form .formbuilder-autocomplete-list li:hover,.rendered-form .formbuilder-autocomplete-list li.active-option{background-color:rgba(0,0,0,.075)}.rendered-form .kc-toggle{padding-left:0 !important}.rendered-form .kc-toggle span{position:relative;width:48px;height:24px;background:#e6e6e6;display:inline-block;border-radius:4px;border:1px solid #ccc;padding:2px;overflow:hidden;float:left;margin-right:5px;will-change:transform}.rendered-form .kc-toggle span::after,.rendered-form .kc-toggle span::before{position:absolute;display:inline-block;top:0}.rendered-form .kc-toggle span::after{position:relative;content:\"\";width:50%;height:100%;left:0;border-radius:3px;background:linear-gradient(to bottom, white 0%, #ccc 100%);border:1px solid #999;transition:transform 100ms;transform:translateX(0)}.rendered-form .kc-toggle span::before{border-radius:4px;top:2px;left:2px;content:\"\";width:calc(100% - 4px);height:18px;box-shadow:0 0 1px 1px #b3b3b3 inset;background-color:transparent}.rendered-form .kc-toggle input{height:0;overflow:hidden;width:0;opacity:0;pointer-events:none;margin:0}.rendered-form .kc-toggle input:checked+span::after{transform:translateX(100%)}.rendered-form .kc-toggle input:checked+span::before{background-color:#6fc665}.rendered-form label{font-weight:normal}.form-group .formbuilder-required{color:#c10000}.other-option:checked+label input{display:inline-block}.other-val{margin-left:5px;display:none}*[tooltip]{position:relative}*[tooltip]:hover::after{background:rgba(0,0,0,.9);border-radius:5px 5px 5px 0;bottom:23px;color:#fff;content:attr(tooltip);padding:10px 5px;position:absolute;z-index:98;left:2px;width:230px;text-shadow:none;font-size:12px;line-height:1.5em}*[tooltip]:hover::before{border:solid;border-color:#222 transparent;border-width:6px 6px 0;bottom:17px;content:\"\";left:2px;position:absolute;z-index:99}.tooltip-element{color:#fff;background:#000;width:16px;height:16px;border-radius:8px;display:inline-block;text-align:center;line-height:16px;margin:0 5px;font-size:12px}.form-control.number{width:auto}.form-control[type=color]{width:60px;padding:2px;display:inline-block}.form-control[multiple]{height:auto}',\"\"]),t.default=o}])}(jQuery);","/*global require,module*/\r\n'use strict';\r\nvar CodeMirror = require('codemirror');\r\nrequire('codemirror/addon/edit/continuelist.js');\r\nrequire('./codemirror/tablist');\r\nrequire('codemirror/addon/display/fullscreen.js');\r\nrequire('codemirror/mode/markdown/markdown.js');\r\nrequire('codemirror/addon/mode/overlay.js');\r\nrequire('codemirror/addon/display/placeholder.js');\r\nrequire('codemirror/addon/selection/mark-selection.js');\r\nrequire('codemirror/mode/gfm/gfm.js');\r\nrequire('codemirror/mode/xml/xml.js');\r\nvar CodeMirrorSpellChecker = require('codemirror-spell-checker');\r\nvar marked = require('marked');\r\n\r\n\r\n// Some variables\r\nvar isMac = /Mac/.test(navigator.platform);\r\n\r\n// Mapping of actions that can be bound to keyboard shortcuts or toolbar buttons\r\nvar bindings = {\r\n 'toggleBold': toggleBold,\r\n 'toggleItalic': toggleItalic,\r\n 'drawLink': drawLink,\r\n 'toggleHeadingSmaller': toggleHeadingSmaller,\r\n 'toggleHeadingBigger': toggleHeadingBigger,\r\n 'drawImage': drawImage,\r\n 'toggleBlockquote': toggleBlockquote,\r\n 'toggleOrderedList': toggleOrderedList,\r\n 'toggleUnorderedList': toggleUnorderedList,\r\n 'toggleCodeBlock': toggleCodeBlock,\r\n 'togglePreview': togglePreview,\r\n 'toggleStrikethrough': toggleStrikethrough,\r\n 'toggleHeading1': toggleHeading1,\r\n 'toggleHeading2': toggleHeading2,\r\n 'toggleHeading3': toggleHeading3,\r\n 'cleanBlock': cleanBlock,\r\n 'drawTable': drawTable,\r\n 'drawHorizontalRule': drawHorizontalRule,\r\n 'undo': undo,\r\n 'redo': redo,\r\n 'toggleSideBySide': toggleSideBySide,\r\n 'toggleFullScreen': toggleFullScreen\r\n};\r\n\r\nvar shortcuts = {\r\n 'toggleBold': 'Cmd-B',\r\n 'toggleItalic': 'Cmd-I',\r\n 'drawLink': 'Cmd-K',\r\n 'toggleHeadingSmaller': 'Cmd-H',\r\n 'toggleHeadingBigger': 'Shift-Cmd-H',\r\n 'cleanBlock': 'Cmd-E',\r\n 'drawImage': 'Cmd-Alt-I',\r\n 'toggleBlockquote': 'Cmd-\\'',\r\n 'toggleOrderedList': 'Cmd-Alt-L',\r\n 'toggleUnorderedList': 'Cmd-L',\r\n 'toggleCodeBlock': 'Cmd-Alt-C',\r\n 'togglePreview': 'Cmd-P',\r\n 'toggleSideBySide': 'F9',\r\n 'toggleFullScreen': 'F11'\r\n};\r\n\r\nvar getBindingName = function (f) {\r\n for (var key in bindings) {\r\n if (bindings[key] === f) {\r\n return key;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nvar isMobile = function () {\r\n var check = false;\r\n (function (a) {\r\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(a.substr(0, 4))) check = true;\r\n })(navigator.userAgent || navigator.vendor || window.opera);\r\n return check;\r\n};\r\n\r\n\r\n/**\r\n * Fix shortcut. Mac use Command, others use Ctrl.\r\n */\r\nfunction fixShortcut(name) {\r\n if (isMac) {\r\n name = name.replace('Ctrl', 'Cmd');\r\n } else {\r\n name = name.replace('Cmd', 'Ctrl');\r\n }\r\n return name;\r\n}\r\n\r\n\r\n/**\r\n * Create icon element for toolbar.\r\n */\r\nfunction createIcon(options, enableTooltips, shortcuts) {\r\n options = options || {};\r\n var el = document.createElement('button');\r\n enableTooltips = (enableTooltips == undefined) ? true : enableTooltips;\r\n\r\n if (options.title && enableTooltips) {\r\n el.title = createTooltip(options.title, options.action, shortcuts);\r\n\r\n if (isMac) {\r\n el.title = el.title.replace('Ctrl', '⌘');\r\n el.title = el.title.replace('Alt', '⌥');\r\n }\r\n }\r\n\r\n if (options.noDisable) {\r\n el.classList.add('no-disable');\r\n }\r\n\r\n if (options.noMobile) {\r\n el.classList.add('no-mobile');\r\n }\r\n\r\n el.tabIndex = -1;\r\n\r\n // Create icon element and append as a child to the button\r\n var icon = document.createElement('i');\r\n icon.className = options.className;\r\n el.appendChild(icon);\r\n\r\n return el;\r\n}\r\n\r\nfunction createSep() {\r\n var el = document.createElement('i');\r\n el.className = 'separator';\r\n el.innerHTML = '|';\r\n return el;\r\n}\r\n\r\nfunction createTooltip(title, action, shortcuts) {\r\n var actionName;\r\n var tooltip = title;\r\n\r\n if (action) {\r\n actionName = getBindingName(action);\r\n if (shortcuts[actionName]) {\r\n tooltip += ' (' + fixShortcut(shortcuts[actionName]) + ')';\r\n }\r\n }\r\n\r\n return tooltip;\r\n}\r\n\r\n/**\r\n * The state of CodeMirror at the given position.\r\n */\r\nfunction getState(cm, pos) {\r\n pos = pos || cm.getCursor('start');\r\n var stat = cm.getTokenAt(pos);\r\n if (!stat.type) return {};\r\n\r\n var types = stat.type.split(' ');\r\n\r\n var ret = {},\r\n data, text;\r\n for (var i = 0; i < types.length; i++) {\r\n data = types[i];\r\n if (data === 'strong') {\r\n ret.bold = true;\r\n } else if (data === 'variable-2') {\r\n text = cm.getLine(pos.line);\r\n if (/^\\s*\\d+\\.\\s/.test(text)) {\r\n ret['ordered-list'] = true;\r\n } else {\r\n ret['unordered-list'] = true;\r\n }\r\n } else if (data === 'atom') {\r\n ret.quote = true;\r\n } else if (data === 'em') {\r\n ret.italic = true;\r\n } else if (data === 'quote') {\r\n ret.quote = true;\r\n } else if (data === 'strikethrough') {\r\n ret.strikethrough = true;\r\n } else if (data === 'comment') {\r\n ret.code = true;\r\n } else if (data === 'link') {\r\n ret.link = true;\r\n } else if (data === 'tag') {\r\n ret.image = true;\r\n } else if (data.match(/^header(-[1-6])?$/)) {\r\n ret[data.replace('header', 'heading')] = true;\r\n }\r\n }\r\n return ret;\r\n}\r\n\r\n\r\n// Saved overflow setting\r\nvar saved_overflow = '';\r\n\r\n/**\r\n * Toggle full screen of the editor.\r\n */\r\nfunction toggleFullScreen(editor) {\r\n // Set fullscreen\r\n var cm = editor.codemirror;\r\n cm.setOption('fullScreen', !cm.getOption('fullScreen'));\r\n\r\n\r\n // Prevent scrolling on body during fullscreen active\r\n if (cm.getOption('fullScreen')) {\r\n saved_overflow = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n } else {\r\n document.body.style.overflow = saved_overflow;\r\n }\r\n\r\n\r\n // Update toolbar class\r\n var wrap = cm.getWrapperElement();\r\n\r\n if (!/fullscreen/.test(wrap.previousSibling.className)) {\r\n wrap.previousSibling.className += ' fullscreen';\r\n } else {\r\n wrap.previousSibling.className = wrap.previousSibling.className.replace(/\\s*fullscreen\\b/, '');\r\n }\r\n\r\n\r\n // Update toolbar button\r\n if (editor.toolbarElements.fullscreen) {\r\n var toolbarButton = editor.toolbarElements.fullscreen;\r\n\r\n if (!/active/.test(toolbarButton.className)) {\r\n toolbarButton.className += ' active';\r\n } else {\r\n toolbarButton.className = toolbarButton.className.replace(/\\s*active\\s*/g, '');\r\n }\r\n }\r\n\r\n\r\n // Hide side by side if needed\r\n var sidebyside = cm.getWrapperElement().nextSibling;\r\n if (/editor-preview-active-side/.test(sidebyside.className))\r\n toggleSideBySide(editor);\r\n}\r\n\r\n\r\n/**\r\n * Action for toggling bold.\r\n */\r\nfunction toggleBold(editor) {\r\n _toggleBlock(editor, 'bold', editor.options.blockStyles.bold);\r\n}\r\n\r\n\r\n/**\r\n * Action for toggling italic.\r\n */\r\nfunction toggleItalic(editor) {\r\n _toggleBlock(editor, 'italic', editor.options.blockStyles.italic);\r\n}\r\n\r\n\r\n/**\r\n * Action for toggling strikethrough.\r\n */\r\nfunction toggleStrikethrough(editor) {\r\n _toggleBlock(editor, 'strikethrough', '~~');\r\n}\r\n\r\n/**\r\n * Action for toggling code block.\r\n */\r\nfunction toggleCodeBlock(editor) {\r\n var fenceCharsToInsert = editor.options.blockStyles.code;\r\n\r\n function fencing_line(line) {\r\n /* return true, if this is a ``` or ~~~ line */\r\n if (typeof line !== 'object') {\r\n throw 'fencing_line() takes a \\'line\\' object (not a line number, or line text). Got: ' + typeof line + ': ' + line;\r\n }\r\n return line.styles && line.styles[2] && line.styles[2].indexOf('formatting-code-block') !== -1;\r\n }\r\n\r\n function token_state(token) {\r\n // base goes an extra level deep when mode backdrops are used, e.g. spellchecker on\r\n return token.state.base.base || token.state.base;\r\n }\r\n\r\n function code_type(cm, line_num, line, firstTok, lastTok) {\r\n /*\r\n * Return \"single\", \"indented\", \"fenced\" or false\r\n *\r\n * cm and line_num are required. Others are optional for efficiency\r\n * To check in the middle of a line, pass in firstTok yourself.\r\n */\r\n line = line || cm.getLineHandle(line_num);\r\n firstTok = firstTok || cm.getTokenAt({\r\n line: line_num,\r\n ch: 1\r\n });\r\n lastTok = lastTok || (!!line.text && cm.getTokenAt({\r\n line: line_num,\r\n ch: line.text.length - 1\r\n }));\r\n var types = firstTok.type ? firstTok.type.split(' ') : [];\r\n if (lastTok && token_state(lastTok).indentedCode) {\r\n // have to check last char, since first chars of first line aren\"t marked as indented\r\n return 'indented';\r\n } else if (types.indexOf('comment') === -1) {\r\n // has to be after \"indented\" check, since first chars of first indented line aren\"t marked as such\r\n return false;\r\n } else if (token_state(firstTok).fencedChars || token_state(lastTok).fencedChars || fencing_line(line)) {\r\n return 'fenced';\r\n } else {\r\n return 'single';\r\n }\r\n }\r\n\r\n function insertFencingAtSelection(cm, cur_start, cur_end, fenceCharsToInsert) {\r\n var start_line_sel = cur_start.line + 1,\r\n end_line_sel = cur_end.line + 1,\r\n sel_multi = cur_start.line !== cur_end.line,\r\n repl_start = fenceCharsToInsert + '\\n',\r\n repl_end = '\\n' + fenceCharsToInsert;\r\n if (sel_multi) {\r\n end_line_sel++;\r\n }\r\n // handle last char including \\n or not\r\n if (sel_multi && cur_end.ch === 0) {\r\n repl_end = fenceCharsToInsert + '\\n';\r\n end_line_sel--;\r\n }\r\n _replaceSelection(cm, false, [repl_start, repl_end]);\r\n cm.setSelection({\r\n line: start_line_sel,\r\n ch: 0\r\n }, {\r\n line: end_line_sel,\r\n ch: 0\r\n });\r\n }\r\n\r\n var cm = editor.codemirror,\r\n cur_start = cm.getCursor('start'),\r\n cur_end = cm.getCursor('end'),\r\n tok = cm.getTokenAt({\r\n line: cur_start.line,\r\n ch: cur_start.ch || 1\r\n }), // avoid ch 0 which is a cursor pos but not token\r\n line = cm.getLineHandle(cur_start.line),\r\n is_code = code_type(cm, cur_start.line, line, tok);\r\n var block_start, block_end, lineCount;\r\n\r\n if (is_code === 'single') {\r\n // similar to some InscrybMDE _toggleBlock logic\r\n var start = line.text.slice(0, cur_start.ch).replace('`', ''),\r\n end = line.text.slice(cur_start.ch).replace('`', '');\r\n cm.replaceRange(start + end, {\r\n line: cur_start.line,\r\n ch: 0\r\n }, {\r\n line: cur_start.line,\r\n ch: 99999999999999\r\n });\r\n cur_start.ch--;\r\n if (cur_start !== cur_end) {\r\n cur_end.ch--;\r\n }\r\n cm.setSelection(cur_start, cur_end);\r\n cm.focus();\r\n } else if (is_code === 'fenced') {\r\n if (cur_start.line !== cur_end.line || cur_start.ch !== cur_end.ch) {\r\n // use selection\r\n\r\n // find the fenced line so we know what type it is (tilde, backticks, number of them)\r\n for (block_start = cur_start.line; block_start >= 0; block_start--) {\r\n line = cm.getLineHandle(block_start);\r\n if (fencing_line(line)) {\r\n break;\r\n }\r\n }\r\n var fencedTok = cm.getTokenAt({\r\n line: block_start,\r\n ch: 1\r\n });\r\n var fence_chars = token_state(fencedTok).fencedChars;\r\n var start_text, start_line;\r\n var end_text, end_line;\r\n // check for selection going up against fenced lines, in which case we don't want to add more fencing\r\n if (fencing_line(cm.getLineHandle(cur_start.line))) {\r\n start_text = '';\r\n start_line = cur_start.line;\r\n } else if (fencing_line(cm.getLineHandle(cur_start.line - 1))) {\r\n start_text = '';\r\n start_line = cur_start.line - 1;\r\n } else {\r\n start_text = fence_chars + '\\n';\r\n start_line = cur_start.line;\r\n }\r\n if (fencing_line(cm.getLineHandle(cur_end.line))) {\r\n end_text = '';\r\n end_line = cur_end.line;\r\n if (cur_end.ch === 0) {\r\n end_line += 1;\r\n }\r\n } else if (cur_end.ch !== 0 && fencing_line(cm.getLineHandle(cur_end.line + 1))) {\r\n end_text = '';\r\n end_line = cur_end.line + 1;\r\n } else {\r\n end_text = fence_chars + '\\n';\r\n end_line = cur_end.line + 1;\r\n }\r\n if (cur_end.ch === 0) {\r\n // full last line selected, putting cursor at beginning of next\r\n end_line -= 1;\r\n }\r\n cm.operation(function () {\r\n // end line first, so that line numbers don't change\r\n cm.replaceRange(end_text, {\r\n line: end_line,\r\n ch: 0\r\n }, {\r\n line: end_line + (end_text ? 0 : 1),\r\n ch: 0\r\n });\r\n cm.replaceRange(start_text, {\r\n line: start_line,\r\n ch: 0\r\n }, {\r\n line: start_line + (start_text ? 0 : 1),\r\n ch: 0\r\n });\r\n });\r\n cm.setSelection({\r\n line: start_line + (start_text ? 1 : 0),\r\n ch: 0\r\n }, {\r\n line: end_line + (start_text ? 1 : -1),\r\n ch: 0\r\n });\r\n cm.focus();\r\n } else {\r\n // no selection, search for ends of this fenced block\r\n var search_from = cur_start.line;\r\n if (fencing_line(cm.getLineHandle(cur_start.line))) { // gets a little tricky if cursor is right on a fenced line\r\n if (code_type(cm, cur_start.line + 1) === 'fenced') {\r\n block_start = cur_start.line;\r\n search_from = cur_start.line + 1; // for searching for \"end\"\r\n } else {\r\n block_end = cur_start.line;\r\n search_from = cur_start.line - 1; // for searching for \"start\"\r\n }\r\n }\r\n if (block_start === undefined) {\r\n for (block_start = search_from; block_start >= 0; block_start--) {\r\n line = cm.getLineHandle(block_start);\r\n if (fencing_line(line)) {\r\n break;\r\n }\r\n }\r\n }\r\n if (block_end === undefined) {\r\n lineCount = cm.lineCount();\r\n for (block_end = search_from; block_end < lineCount; block_end++) {\r\n line = cm.getLineHandle(block_end);\r\n if (fencing_line(line)) {\r\n break;\r\n }\r\n }\r\n }\r\n cm.operation(function () {\r\n cm.replaceRange('', {\r\n line: block_start,\r\n ch: 0\r\n }, {\r\n line: block_start + 1,\r\n ch: 0\r\n });\r\n cm.replaceRange('', {\r\n line: block_end - 1,\r\n ch: 0\r\n }, {\r\n line: block_end,\r\n ch: 0\r\n });\r\n });\r\n cm.focus();\r\n }\r\n } else if (is_code === 'indented') {\r\n if (cur_start.line !== cur_end.line || cur_start.ch !== cur_end.ch) {\r\n // use selection\r\n block_start = cur_start.line;\r\n block_end = cur_end.line;\r\n if (cur_end.ch === 0) {\r\n block_end--;\r\n }\r\n } else {\r\n // no selection, search for ends of this indented block\r\n for (block_start = cur_start.line; block_start >= 0; block_start--) {\r\n line = cm.getLineHandle(block_start);\r\n if (line.text.match(/^\\s*$/)) {\r\n // empty or all whitespace - keep going\r\n continue;\r\n } else {\r\n if (code_type(cm, block_start, line) !== 'indented') {\r\n block_start += 1;\r\n break;\r\n }\r\n }\r\n }\r\n lineCount = cm.lineCount();\r\n for (block_end = cur_start.line; block_end < lineCount; block_end++) {\r\n line = cm.getLineHandle(block_end);\r\n if (line.text.match(/^\\s*$/)) {\r\n // empty or all whitespace - keep going\r\n continue;\r\n } else {\r\n if (code_type(cm, block_end, line) !== 'indented') {\r\n block_end -= 1;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n // if we are going to un-indent based on a selected set of lines, and the next line is indented too, we need to\r\n // insert a blank line so that the next line(s) continue to be indented code\r\n var next_line = cm.getLineHandle(block_end + 1),\r\n next_line_last_tok = next_line && cm.getTokenAt({\r\n line: block_end + 1,\r\n ch: next_line.text.length - 1\r\n }),\r\n next_line_indented = next_line_last_tok && token_state(next_line_last_tok).indentedCode;\r\n if (next_line_indented) {\r\n cm.replaceRange('\\n', {\r\n line: block_end + 1,\r\n ch: 0\r\n });\r\n }\r\n\r\n for (var i = block_start; i <= block_end; i++) {\r\n cm.indentLine(i, 'subtract'); // TODO: this doesn't get tracked in the history, so can't be undone :(\r\n }\r\n cm.focus();\r\n } else {\r\n // insert code formatting\r\n var no_sel_and_starting_of_line = (cur_start.line === cur_end.line && cur_start.ch === cur_end.ch && cur_start.ch === 0);\r\n var sel_multi = cur_start.line !== cur_end.line;\r\n if (no_sel_and_starting_of_line || sel_multi) {\r\n insertFencingAtSelection(cm, cur_start, cur_end, fenceCharsToInsert);\r\n } else {\r\n _replaceSelection(cm, false, ['`', '`']);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Action for toggling blockquote.\r\n */\r\nfunction toggleBlockquote(editor) {\r\n var cm = editor.codemirror;\r\n _toggleLine(cm, 'quote');\r\n}\r\n\r\n/**\r\n * Action for toggling heading size: normal -> h1 -> h2 -> h3 -> h4 -> h5 -> h6 -> normal\r\n */\r\nfunction toggleHeadingSmaller(editor) {\r\n var cm = editor.codemirror;\r\n _toggleHeading(cm, 'smaller');\r\n}\r\n\r\n/**\r\n * Action for toggling heading size: normal -> h6 -> h5 -> h4 -> h3 -> h2 -> h1 -> normal\r\n */\r\nfunction toggleHeadingBigger(editor) {\r\n var cm = editor.codemirror;\r\n _toggleHeading(cm, 'bigger');\r\n}\r\n\r\n/**\r\n * Action for toggling heading size 1\r\n */\r\nfunction toggleHeading1(editor) {\r\n var cm = editor.codemirror;\r\n _toggleHeading(cm, undefined, 1);\r\n}\r\n\r\n/**\r\n * Action for toggling heading size 2\r\n */\r\nfunction toggleHeading2(editor) {\r\n var cm = editor.codemirror;\r\n _toggleHeading(cm, undefined, 2);\r\n}\r\n\r\n/**\r\n * Action for toggling heading size 3\r\n */\r\nfunction toggleHeading3(editor) {\r\n var cm = editor.codemirror;\r\n _toggleHeading(cm, undefined, 3);\r\n}\r\n\r\n\r\n/**\r\n * Action for toggling ul.\r\n */\r\nfunction toggleUnorderedList(editor) {\r\n var cm = editor.codemirror;\r\n _toggleLine(cm, 'unordered-list');\r\n}\r\n\r\n\r\n/**\r\n * Action for toggling ol.\r\n */\r\nfunction toggleOrderedList(editor) {\r\n var cm = editor.codemirror;\r\n _toggleLine(cm, 'ordered-list');\r\n}\r\n\r\n/**\r\n * Action for clean block (remove headline, list, blockquote code, markers)\r\n */\r\nfunction cleanBlock(editor) {\r\n var cm = editor.codemirror;\r\n _cleanBlock(cm);\r\n}\r\n\r\n/**\r\n * Action for drawing a link.\r\n */\r\nfunction drawLink(editor) {\r\n var cm = editor.codemirror;\r\n var stat = getState(cm);\r\n var options = editor.options;\r\n var url = 'https://';\r\n if (options.promptURLs) {\r\n url = prompt(options.promptTexts.link);\r\n if (!url) {\r\n return false;\r\n }\r\n }\r\n _replaceSelection(cm, stat.link, options.insertTexts.link, url);\r\n}\r\n\r\n/**\r\n * Action for drawing an img.\r\n */\r\nfunction drawImage(editor) {\r\n var cm = editor.codemirror;\r\n var stat = getState(cm);\r\n var options = editor.options;\r\n var url = 'https://';\r\n if (options.promptURLs) {\r\n url = prompt(options.promptTexts.image);\r\n if (!url) {\r\n return false;\r\n }\r\n }\r\n _replaceSelection(cm, stat.image, options.insertTexts.image, url);\r\n}\r\n\r\n/**\r\n * Action for drawing a table.\r\n */\r\nfunction drawTable(editor) {\r\n var cm = editor.codemirror;\r\n var stat = getState(cm);\r\n var options = editor.options;\r\n _replaceSelection(cm, stat.table, options.insertTexts.table);\r\n}\r\n\r\n/**\r\n * Action for drawing a horizontal rule.\r\n */\r\nfunction drawHorizontalRule(editor) {\r\n var cm = editor.codemirror;\r\n var stat = getState(cm);\r\n var options = editor.options;\r\n _replaceSelection(cm, stat.image, options.insertTexts.horizontalRule);\r\n}\r\n\r\n\r\n/**\r\n * Undo action.\r\n */\r\nfunction undo(editor) {\r\n var cm = editor.codemirror;\r\n cm.undo();\r\n cm.focus();\r\n}\r\n\r\n\r\n/**\r\n * Redo action.\r\n */\r\nfunction redo(editor) {\r\n var cm = editor.codemirror;\r\n cm.redo();\r\n cm.focus();\r\n}\r\n\r\n\r\n/**\r\n * Toggle side by side preview\r\n */\r\nfunction toggleSideBySide(editor) {\r\n var cm = editor.codemirror;\r\n var wrapper = cm.getWrapperElement();\r\n var preview = wrapper.nextSibling;\r\n var toolbarButton = editor.toolbarElements['side-by-side'];\r\n var useSideBySideListener = false;\r\n if (/editor-preview-active-side/.test(preview.className)) {\r\n preview.className = preview.className.replace(\r\n /\\s*editor-preview-active-side\\s*/g, ''\r\n );\r\n toolbarButton.className = toolbarButton.className.replace(/\\s*active\\s*/g, '');\r\n wrapper.className = wrapper.className.replace(/\\s*CodeMirror-sided\\s*/g, ' ');\r\n } else {\r\n // When the preview button is clicked for the first time,\r\n // give some time for the transition from editor.css to fire and the view to slide from right to left,\r\n // instead of just appearing.\r\n setTimeout(function () {\r\n if (!cm.getOption('fullScreen'))\r\n toggleFullScreen(editor);\r\n preview.className += ' editor-preview-active-side';\r\n }, 1);\r\n toolbarButton.className += ' active';\r\n wrapper.className += ' CodeMirror-sided';\r\n useSideBySideListener = true;\r\n }\r\n\r\n // Hide normal preview if active\r\n var previewNormal = wrapper.lastChild;\r\n if (/editor-preview-active/.test(previewNormal.className)) {\r\n previewNormal.className = previewNormal.className.replace(\r\n /\\s*editor-preview-active\\s*/g, ''\r\n );\r\n var toolbar = editor.toolbarElements.preview;\r\n var toolbar_div = wrapper.previousSibling;\r\n toolbar.className = toolbar.className.replace(/\\s*active\\s*/g, '');\r\n toolbar_div.className = toolbar_div.className.replace(/\\s*disabled-for-preview*/g, '');\r\n }\r\n\r\n var sideBySideRenderingFunction = function () {\r\n preview.innerHTML = editor.options.previewRender(editor.value(), preview);\r\n };\r\n\r\n if (!cm.sideBySideRenderingFunction) {\r\n cm.sideBySideRenderingFunction = sideBySideRenderingFunction;\r\n }\r\n\r\n if (useSideBySideListener) {\r\n preview.innerHTML = editor.options.previewRender(editor.value(), preview);\r\n cm.on('update', cm.sideBySideRenderingFunction);\r\n } else {\r\n cm.off('update', cm.sideBySideRenderingFunction);\r\n }\r\n\r\n // Refresh to fix selection being off (#309)\r\n cm.refresh();\r\n}\r\n\r\n\r\n/**\r\n * Preview action.\r\n */\r\nfunction togglePreview(editor) {\r\n var cm = editor.codemirror;\r\n var wrapper = cm.getWrapperElement();\r\n var toolbar_div = wrapper.previousSibling;\r\n var toolbar = editor.options.toolbar ? editor.toolbarElements.preview : false;\r\n var preview = wrapper.lastChild;\r\n if (!preview || !/editor-preview/.test(preview.className)) {\r\n preview = document.createElement('div');\r\n preview.className = 'editor-preview';\r\n wrapper.appendChild(preview);\r\n }\r\n if (/editor-preview-active/.test(preview.className)) {\r\n preview.className = preview.className.replace(\r\n /\\s*editor-preview-active\\s*/g, ''\r\n );\r\n if (toolbar) {\r\n toolbar.className = toolbar.className.replace(/\\s*active\\s*/g, '');\r\n toolbar_div.className = toolbar_div.className.replace(/\\s*disabled-for-preview*/g, '');\r\n }\r\n } else {\r\n // When the preview button is clicked for the first time,\r\n // give some time for the transition from editor.css to fire and the view to slide from right to left,\r\n // instead of just appearing.\r\n setTimeout(function () {\r\n preview.className += ' editor-preview-active';\r\n }, 1);\r\n if (toolbar) {\r\n toolbar.className += ' active';\r\n toolbar_div.className += ' disabled-for-preview';\r\n }\r\n }\r\n preview.innerHTML = editor.options.previewRender(editor.value(), preview);\r\n\r\n // Turn off side by side if needed\r\n var sidebyside = cm.getWrapperElement().nextSibling;\r\n if (/editor-preview-active-side/.test(sidebyside.className))\r\n toggleSideBySide(editor);\r\n}\r\n\r\nfunction _replaceSelection(cm, active, startEnd, url) {\r\n if (/editor-preview-active/.test(cm.getWrapperElement().lastChild.className))\r\n return;\r\n\r\n var text;\r\n var start = startEnd[0];\r\n var end = startEnd[1];\r\n var startPoint = {},\r\n endPoint = {};\r\n Object.assign(startPoint, cm.getCursor('start'));\r\n Object.assign(endPoint, cm.getCursor('end'));\r\n if (url) {\r\n end = end.replace('#url#', url);\r\n }\r\n if (active) {\r\n text = cm.getLine(startPoint.line);\r\n start = text.slice(0, startPoint.ch);\r\n end = text.slice(startPoint.ch);\r\n cm.replaceRange(start + end, {\r\n line: startPoint.line,\r\n ch: 0\r\n });\r\n } else {\r\n text = cm.getSelection();\r\n cm.replaceSelection(start + text + end);\r\n\r\n startPoint.ch += start.length;\r\n if (startPoint !== endPoint) {\r\n endPoint.ch += start.length;\r\n }\r\n }\r\n cm.setSelection(startPoint, endPoint);\r\n cm.focus();\r\n}\r\n\r\n\r\nfunction _toggleHeading(cm, direction, size) {\r\n if (/editor-preview-active/.test(cm.getWrapperElement().lastChild.className))\r\n return;\r\n\r\n var startPoint = cm.getCursor('start');\r\n var endPoint = cm.getCursor('end');\r\n for (var i = startPoint.line; i <= endPoint.line; i++) {\r\n (function (i) {\r\n var text = cm.getLine(i);\r\n var currHeadingLevel = text.search(/[^#]/);\r\n\r\n if (direction !== undefined) {\r\n if (currHeadingLevel <= 0) {\r\n if (direction == 'bigger') {\r\n text = '###### ' + text;\r\n } else {\r\n text = '# ' + text;\r\n }\r\n } else if (currHeadingLevel == 6 && direction == 'smaller') {\r\n text = text.substr(7);\r\n } else if (currHeadingLevel == 1 && direction == 'bigger') {\r\n text = text.substr(2);\r\n } else {\r\n if (direction == 'bigger') {\r\n text = text.substr(1);\r\n } else {\r\n text = '#' + text;\r\n }\r\n }\r\n } else {\r\n if (size == 1) {\r\n if (currHeadingLevel <= 0) {\r\n text = '# ' + text;\r\n } else if (currHeadingLevel == size) {\r\n text = text.substr(currHeadingLevel + 1);\r\n } else {\r\n text = '# ' + text.substr(currHeadingLevel + 1);\r\n }\r\n } else if (size == 2) {\r\n if (currHeadingLevel <= 0) {\r\n text = '## ' + text;\r\n } else if (currHeadingLevel == size) {\r\n text = text.substr(currHeadingLevel + 1);\r\n } else {\r\n text = '## ' + text.substr(currHeadingLevel + 1);\r\n }\r\n } else {\r\n if (currHeadingLevel <= 0) {\r\n text = '### ' + text;\r\n } else if (currHeadingLevel == size) {\r\n text = text.substr(currHeadingLevel + 1);\r\n } else {\r\n text = '### ' + text.substr(currHeadingLevel + 1);\r\n }\r\n }\r\n }\r\n\r\n cm.replaceRange(text, {\r\n line: i,\r\n ch: 0\r\n }, {\r\n line: i,\r\n ch: 99999999999999\r\n });\r\n })(i);\r\n }\r\n cm.focus();\r\n}\r\n\r\n\r\nfunction _toggleLine(cm, name) {\r\n if (/editor-preview-active/.test(cm.getWrapperElement().lastChild.className))\r\n return;\r\n\r\n var listRegexp = /^(\\s*)(\\*|-|\\+|\\d*\\.)(\\s+)/;\r\n var whitespacesRegexp = /^\\s*/;\r\n\r\n var stat = getState(cm);\r\n var startPoint = cm.getCursor('start');\r\n var endPoint = cm.getCursor('end');\r\n var repl = {\r\n 'quote': /^(\\s*)>\\s+/,\r\n 'unordered-list': listRegexp,\r\n 'ordered-list': listRegexp\r\n };\r\n\r\n var _getChar = function (name, i) {\r\n var map = {\r\n 'quote': '>',\r\n 'unordered-list': '*',\r\n 'ordered-list': '%%i.'\r\n };\r\n\r\n return map[name].replace('%%i', i);\r\n };\r\n\r\n var _checkChar = function (name, char) {\r\n var map = {\r\n 'quote': '>',\r\n 'unordered-list': '*',\r\n 'ordered-list': 'd+.'\r\n };\r\n var rt = new RegExp(map[name]);\r\n\r\n return char && rt.test(char);\r\n };\r\n\r\n var line = 1;\r\n for (var i = startPoint.line; i <= endPoint.line; i++) {\r\n (function (i) {\r\n var text = cm.getLine(i);\r\n if (stat[name]) {\r\n text = text.replace(repl[name], '$1');\r\n } else {\r\n var arr = listRegexp.exec(text);\r\n var char = _getChar(name, line);\r\n if (arr !== null) {\r\n if (_checkChar(name, arr[2])) {\r\n char = '';\r\n }\r\n text = arr[1] + char + arr[3] + text.replace(whitespacesRegexp, '').replace(repl[name], '$1');\r\n } else {\r\n text = char + ' ' + text;\r\n }\r\n line += 1;\r\n }\r\n cm.replaceRange(text, {\r\n line: i,\r\n ch: 0\r\n }, {\r\n line: i,\r\n ch: 99999999999999\r\n });\r\n })(i);\r\n }\r\n cm.focus();\r\n}\r\n\r\nfunction _toggleBlock(editor, type, start_chars, end_chars) {\r\n if (/editor-preview-active/.test(editor.codemirror.getWrapperElement().lastChild.className))\r\n return;\r\n\r\n end_chars = (typeof end_chars === 'undefined') ? start_chars : end_chars;\r\n var cm = editor.codemirror;\r\n var stat = getState(cm);\r\n\r\n var text;\r\n var start = start_chars;\r\n var end = end_chars;\r\n\r\n var startPoint = cm.getCursor('start');\r\n var endPoint = cm.getCursor('end');\r\n\r\n if (stat[type]) {\r\n text = cm.getLine(startPoint.line);\r\n start = text.slice(0, startPoint.ch);\r\n end = text.slice(startPoint.ch);\r\n if (type == 'bold') {\r\n start = start.replace(/(\\*\\*|__)(?![\\s\\S]*(\\*\\*|__))/, '');\r\n end = end.replace(/(\\*\\*|__)/, '');\r\n } else if (type == 'italic') {\r\n start = start.replace(/(\\*|_)(?![\\s\\S]*(\\*|_))/, '');\r\n end = end.replace(/(\\*|_)/, '');\r\n } else if (type == 'strikethrough') {\r\n start = start.replace(/(\\*\\*|~~)(?![\\s\\S]*(\\*\\*|~~))/, '');\r\n end = end.replace(/(\\*\\*|~~)/, '');\r\n }\r\n cm.replaceRange(start + end, {\r\n line: startPoint.line,\r\n ch: 0\r\n }, {\r\n line: startPoint.line,\r\n ch: 99999999999999\r\n });\r\n\r\n if (type == 'bold' || type == 'strikethrough') {\r\n startPoint.ch -= 2;\r\n if (startPoint !== endPoint) {\r\n endPoint.ch -= 2;\r\n }\r\n } else if (type == 'italic') {\r\n startPoint.ch -= 1;\r\n if (startPoint !== endPoint) {\r\n endPoint.ch -= 1;\r\n }\r\n }\r\n } else {\r\n text = cm.getSelection();\r\n if (type == 'bold') {\r\n text = text.split('**').join('');\r\n text = text.split('__').join('');\r\n } else if (type == 'italic') {\r\n text = text.split('*').join('');\r\n text = text.split('_').join('');\r\n } else if (type == 'strikethrough') {\r\n text = text.split('~~').join('');\r\n }\r\n cm.replaceSelection(start + text + end);\r\n\r\n startPoint.ch += start_chars.length;\r\n endPoint.ch = startPoint.ch + text.length;\r\n }\r\n\r\n cm.setSelection(startPoint, endPoint);\r\n cm.focus();\r\n}\r\n\r\nfunction _cleanBlock(cm) {\r\n if (/editor-preview-active/.test(cm.getWrapperElement().lastChild.className))\r\n return;\r\n\r\n var startPoint = cm.getCursor('start');\r\n var endPoint = cm.getCursor('end');\r\n var text;\r\n\r\n for (var line = startPoint.line; line <= endPoint.line; line++) {\r\n text = cm.getLine(line);\r\n text = text.replace(/^[ ]*([# ]+|\\*|-|[> ]+|[0-9]+(.|\\)))[ ]*/, '');\r\n\r\n cm.replaceRange(text, {\r\n line: line,\r\n ch: 0\r\n }, {\r\n line: line,\r\n ch: 99999999999999\r\n });\r\n }\r\n}\r\n\r\n// Merge the properties of one object into another.\r\nfunction _mergeProperties(target, source) {\r\n for (var property in source) {\r\n if (source.hasOwnProperty(property)) {\r\n if (source[property] instanceof Array) {\r\n target[property] = source[property].concat(target[property] instanceof Array ? target[property] : []);\r\n } else if (\r\n source[property] !== null &&\r\n typeof source[property] === 'object' &&\r\n source[property].constructor === Object\r\n ) {\r\n target[property] = _mergeProperties(target[property] || {}, source[property]);\r\n } else {\r\n target[property] = source[property];\r\n }\r\n }\r\n }\r\n\r\n return target;\r\n}\r\n\r\n// Merge an arbitrary number of objects into one.\r\nfunction extend(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n target = _mergeProperties(target, arguments[i]);\r\n }\r\n\r\n return target;\r\n}\r\n\r\n/* The right word count in respect for CJK. */\r\nfunction wordCount(data) {\r\n var pattern = /[a-zA-Z0-9_\\u0392-\\u03c9\\u0410-\\u04F9]+|[\\u4E00-\\u9FFF\\u3400-\\u4dbf\\uf900-\\ufaff\\u3040-\\u309f\\uac00-\\ud7af]+/g;\r\n var m = data.match(pattern);\r\n var count = 0;\r\n if (m === null) return count;\r\n for (var i = 0; i < m.length; i++) {\r\n if (m[i].charCodeAt(0) >= 0x4E00) {\r\n count += m[i].length;\r\n } else {\r\n count += 1;\r\n }\r\n }\r\n return count;\r\n}\r\n\r\nvar toolbarBuiltInButtons = {\r\n 'bold': {\r\n name: 'bold',\r\n action: toggleBold,\r\n className: 'fa fa-bold',\r\n title: 'Bold',\r\n default: true\r\n },\r\n 'italic': {\r\n name: 'italic',\r\n action: toggleItalic,\r\n className: 'fa fa-italic',\r\n title: 'Italic',\r\n default: true\r\n },\r\n 'strikethrough': {\r\n name: 'strikethrough',\r\n action: toggleStrikethrough,\r\n className: 'fa fa-strikethrough',\r\n title: 'Strikethrough'\r\n },\r\n 'heading': {\r\n name: 'heading',\r\n action: toggleHeadingSmaller,\r\n className: 'fa fa-header fa-heading',\r\n title: 'Heading',\r\n default: true\r\n },\r\n 'heading-smaller': {\r\n name: 'heading-smaller',\r\n action: toggleHeadingSmaller,\r\n className: 'fa fa-header fa-header-x fa-header-smaller',\r\n title: 'Smaller Heading'\r\n },\r\n 'heading-bigger': {\r\n name: 'heading-bigger',\r\n action: toggleHeadingBigger,\r\n className: 'fa fa-header fa-header-x fa-header-bigger',\r\n title: 'Bigger Heading'\r\n },\r\n 'heading-1': {\r\n name: 'heading-1',\r\n action: toggleHeading1,\r\n className: 'fa fa-header fa-header-x fa-header-1 fa-h1',\r\n title: 'Big Heading'\r\n },\r\n 'heading-2': {\r\n name: 'heading-2',\r\n action: toggleHeading2,\r\n className: 'fa fa-header fa-header-x fa-header-2 fa-h2',\r\n title: 'Medium Heading'\r\n },\r\n 'heading-3': {\r\n name: 'heading-3',\r\n action: toggleHeading3,\r\n className: 'fa fa-header fa-header-x fa-header-3 fa-h3',\r\n title: 'Small Heading'\r\n },\r\n 'separator-1': {\r\n name: 'separator-1'\r\n },\r\n 'code': {\r\n name: 'code',\r\n action: toggleCodeBlock,\r\n className: 'fa fa-code',\r\n title: 'Code'\r\n },\r\n 'quote': {\r\n name: 'quote',\r\n action: toggleBlockquote,\r\n className: 'fa fa-quote-left',\r\n title: 'Quote',\r\n default: true\r\n },\r\n 'unordered-list': {\r\n name: 'unordered-list',\r\n action: toggleUnorderedList,\r\n className: 'fa fa-list-ul',\r\n title: 'Generic List',\r\n default: true\r\n },\r\n 'ordered-list': {\r\n name: 'ordered-list',\r\n action: toggleOrderedList,\r\n className: 'fa fa-list-ol',\r\n title: 'Numbered List',\r\n default: true\r\n },\r\n 'clean-block': {\r\n name: 'clean-block',\r\n action: cleanBlock,\r\n className: 'fa fa-eraser fa-clean-block',\r\n title: 'Clean block'\r\n },\r\n 'separator-2': {\r\n name: 'separator-2'\r\n },\r\n 'link': {\r\n name: 'link',\r\n action: drawLink,\r\n className: 'fa fa-link',\r\n title: 'Create Link',\r\n default: true\r\n },\r\n 'image': {\r\n name: 'image',\r\n action: drawImage,\r\n className: 'fa fa-image',\r\n title: 'Insert Image',\r\n default: true\r\n },\r\n 'table': {\r\n name: 'table',\r\n action: drawTable,\r\n className: 'fa fa-table',\r\n title: 'Insert Table'\r\n },\r\n 'horizontal-rule': {\r\n name: 'horizontal-rule',\r\n action: drawHorizontalRule,\r\n className: 'fa fa-minus',\r\n title: 'Insert Horizontal Line'\r\n },\r\n 'separator-3': {\r\n name: 'separator-3'\r\n },\r\n 'preview': {\r\n name: 'preview',\r\n action: togglePreview,\r\n className: 'fa fa-eye',\r\n noDisable: true,\r\n title: 'Toggle Preview',\r\n default: true\r\n },\r\n 'side-by-side': {\r\n name: 'side-by-side',\r\n action: toggleSideBySide,\r\n className: 'fa fa-columns',\r\n noDisable: true,\r\n noMobile: true,\r\n title: 'Toggle Side by Side',\r\n default: true\r\n },\r\n 'fullscreen': {\r\n name: 'fullscreen',\r\n action: toggleFullScreen,\r\n className: 'fa fa-arrows-alt',\r\n noDisable: true,\r\n noMobile: true,\r\n title: 'Toggle Fullscreen',\r\n default: true\r\n },\r\n 'separator-4': {\r\n name: 'separator-4'\r\n },\r\n 'guide': {\r\n name: 'guide',\r\n action: 'https://www.inscryb.com/InscrybMDE/markdown-guide/',\r\n className: 'fa fa-question-circle',\r\n noDisable: true,\r\n title: 'Markdown Guide',\r\n default: true\r\n },\r\n 'separator-5': {\r\n name: 'separator-5'\r\n },\r\n 'undo': {\r\n name: 'undo',\r\n action: undo,\r\n className: 'fa fa-undo',\r\n noDisable: true,\r\n title: 'Undo'\r\n },\r\n 'redo': {\r\n name: 'redo',\r\n action: redo,\r\n className: 'fa fa-repeat',\r\n noDisable: true,\r\n title: 'Redo'\r\n }\r\n};\r\n\r\nvar insertTexts = {\r\n link: ['[', '](#url#)'],\r\n image: [''],\r\n table: ['', '\\n\\n| Column 1 | Column 2 | Column 3 |\\n| -------- | -------- | -------- |\\n| Text | Text | Text |\\n\\n'],\r\n horizontalRule: ['', '\\n\\n-----\\n\\n']\r\n};\r\n\r\nvar promptTexts = {\r\n link: 'URL for the link:',\r\n image: 'URL of the image:'\r\n};\r\n\r\nvar blockStyles = {\r\n 'bold': '**',\r\n 'code': '```',\r\n 'italic': '*'\r\n};\r\n\r\n/**\r\n * Interface of InscrybMDE.\r\n */\r\nfunction InscrybMDE(options) {\r\n // Handle options parameter\r\n options = options || {};\r\n\r\n\r\n // Used later to refer to it\"s parent\r\n options.parent = this;\r\n\r\n\r\n // Check if Font Awesome needs to be auto downloaded\r\n var autoDownloadFA = true;\r\n\r\n if (options.autoDownloadFontAwesome === false) {\r\n autoDownloadFA = false;\r\n }\r\n\r\n if (options.autoDownloadFontAwesome !== true) {\r\n var styleSheets = document.styleSheets;\r\n for (var i = 0; i < styleSheets.length; i++) {\r\n if (!styleSheets[i].href)\r\n continue;\r\n\r\n if (styleSheets[i].href.indexOf('//maxcdn.bootstrapcdn.com/font-awesome/') > -1) {\r\n autoDownloadFA = false;\r\n }\r\n }\r\n }\r\n\r\n if (autoDownloadFA) {\r\n var link = document.createElement('link');\r\n link.rel = 'stylesheet';\r\n link.href = 'https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css';\r\n document.getElementsByTagName('head')[0].appendChild(link);\r\n }\r\n\r\n\r\n // Find the textarea to use\r\n if (options.element) {\r\n this.element = options.element;\r\n } else if (options.element === null) {\r\n // This means that the element option was specified, but no element was found\r\n console.log('InscrybMDE: Error. No element was found.');\r\n return;\r\n }\r\n\r\n\r\n // Handle toolbar\r\n if (options.toolbar === undefined) {\r\n // Initialize\r\n options.toolbar = [];\r\n\r\n\r\n // Loop over the built in buttons, to get the preferred order\r\n for (var key in toolbarBuiltInButtons) {\r\n if (toolbarBuiltInButtons.hasOwnProperty(key)) {\r\n if (key.indexOf('separator-') != -1) {\r\n options.toolbar.push('|');\r\n }\r\n\r\n if (toolbarBuiltInButtons[key].default === true || (options.showIcons && options.showIcons.constructor === Array && options.showIcons.indexOf(key) != -1)) {\r\n options.toolbar.push(key);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n // Handle status bar\r\n if (!options.hasOwnProperty('status')) {\r\n options.status = ['autosave', 'lines', 'words', 'cursor'];\r\n }\r\n\r\n\r\n // Add default preview rendering function\r\n if (!options.previewRender) {\r\n options.previewRender = function (plainText) {\r\n // Note: \"this\" refers to the options object\r\n return this.parent.markdown(plainText);\r\n };\r\n }\r\n\r\n\r\n // Set default options for parsing config\r\n options.parsingConfig = extend({\r\n highlightFormatting: true // needed for toggleCodeBlock to detect types of code\r\n }, options.parsingConfig || {});\r\n\r\n\r\n // Merging the insertTexts, with the given options\r\n options.insertTexts = extend({}, insertTexts, options.insertTexts || {});\r\n\r\n\r\n // Merging the promptTexts, with the given options\r\n options.promptTexts = extend({}, promptTexts, options.promptTexts || {});\r\n\r\n\r\n // Merging the blockStyles, with the given options\r\n options.blockStyles = extend({}, blockStyles, options.blockStyles || {});\r\n\r\n\r\n // Merging the shortcuts, with the given options\r\n options.shortcuts = extend({}, shortcuts, options.shortcuts || {});\r\n\r\n options.minHeight = options.minHeight || '300px';\r\n\r\n\r\n // Change unique_id to uniqueId for backwards compatibility\r\n if (options.autosave != undefined && options.autosave.unique_id != undefined && options.autosave.unique_id != '')\r\n options.autosave.uniqueId = options.autosave.unique_id;\r\n\r\n\r\n // Update this options\r\n this.options = options;\r\n\r\n\r\n // Auto render\r\n this.render();\r\n\r\n\r\n // The codemirror component is only available after rendering\r\n // so, the setter for the initialValue can only run after\r\n // the element has been rendered\r\n if (options.initialValue && (!this.options.autosave || this.options.autosave.foundSavedValue !== true)) {\r\n this.value(options.initialValue);\r\n }\r\n}\r\n\r\n/**\r\n * Default markdown render.\r\n */\r\nInscrybMDE.prototype.markdown = function (text) {\r\n if (marked) {\r\n // Initialize\r\n var markedOptions;\r\n if (this.options && this.options.renderingConfig && this.options.renderingConfig.markedOptions) {\r\n markedOptions = this.options.renderingConfig.markedOptions;\r\n } else {\r\n markedOptions = {};\r\n }\r\n\r\n // Update options\r\n if (this.options && this.options.renderingConfig && this.options.renderingConfig.singleLineBreaks === false) {\r\n markedOptions.breaks = false;\r\n } else {\r\n markedOptions.breaks = true;\r\n }\r\n\r\n if (this.options && this.options.renderingConfig && this.options.renderingConfig.codeSyntaxHighlighting === true) {\r\n\r\n /* Get HLJS from config or window */\r\n var hljs = this.options.renderingConfig.hljs || window.hljs;\r\n\r\n /* Check if HLJS loaded */\r\n if (hljs) {\r\n markedOptions.highlight = function (code) {\r\n return hljs.highlightAuto(code).value;\r\n };\r\n }\r\n }\r\n\r\n\r\n // Set options\r\n marked.setOptions(markedOptions);\r\n\r\n\r\n // Return\r\n return marked(text);\r\n }\r\n};\r\n\r\n/**\r\n * Render editor to the given element.\r\n */\r\nInscrybMDE.prototype.render = function (el) {\r\n if (!el) {\r\n el = this.element || document.getElementsByTagName('textarea')[0];\r\n }\r\n\r\n if (this._rendered && this._rendered === el) {\r\n // Already rendered.\r\n return;\r\n }\r\n\r\n this.element = el;\r\n var options = this.options;\r\n\r\n var self = this;\r\n var keyMaps = {};\r\n\r\n for (var key in options.shortcuts) {\r\n // null stands for \"do not bind this command\"\r\n if (options.shortcuts[key] !== null && bindings[key] !== null) {\r\n (function (key) {\r\n keyMaps[fixShortcut(options.shortcuts[key])] = function () {\r\n bindings[key](self);\r\n };\r\n })(key);\r\n }\r\n }\r\n\r\n keyMaps['Enter'] = 'newlineAndIndentContinueMarkdownList';\r\n keyMaps['Tab'] = 'tabAndIndentMarkdownList';\r\n keyMaps['Shift-Tab'] = 'shiftTabAndUnindentMarkdownList';\r\n keyMaps['Esc'] = function (cm) {\r\n if (cm.getOption('fullScreen')) toggleFullScreen(self);\r\n };\r\n\r\n document.addEventListener('keydown', function (e) {\r\n e = e || window.event;\r\n\r\n if (e.keyCode == 27) {\r\n if (self.codemirror.getOption('fullScreen')) toggleFullScreen(self);\r\n }\r\n }, false);\r\n\r\n var mode, backdrop;\r\n if (options.spellChecker !== false) {\r\n mode = 'spell-checker';\r\n backdrop = options.parsingConfig;\r\n backdrop.name = 'gfm';\r\n backdrop.gitHubSpice = false;\r\n\r\n CodeMirrorSpellChecker({\r\n codeMirrorInstance: CodeMirror\r\n });\r\n } else {\r\n mode = options.parsingConfig;\r\n mode.name = 'gfm';\r\n mode.gitHubSpice = false;\r\n }\r\n\r\n this.codemirror = CodeMirror.fromTextArea(el, {\r\n mode: mode,\r\n backdrop: backdrop,\r\n theme: 'paper',\r\n tabSize: (options.tabSize != undefined) ? options.tabSize : 2,\r\n indentUnit: (options.tabSize != undefined) ? options.tabSize : 2,\r\n indentWithTabs: (options.indentWithTabs === false) ? false : true,\r\n lineNumbers: false,\r\n autofocus: (options.autofocus === true) ? true : false,\r\n extraKeys: keyMaps,\r\n lineWrapping: (options.lineWrapping === false) ? false : true,\r\n allowDropFileTypes: ['text/plain'],\r\n placeholder: options.placeholder || el.getAttribute('placeholder') || '',\r\n styleSelectedText: (options.styleSelectedText != undefined) ? options.styleSelectedText : !isMobile(),\r\n inputStyle: (options.inputStyle != undefined) ? options.inputStyle : isMobile() ? 'contenteditable' : 'textarea',\r\n });\r\n\r\n this.codemirror.getScrollerElement().style.minHeight = options.minHeight;\r\n\r\n if (options.forceSync === true) {\r\n var cm = this.codemirror;\r\n cm.on('change', function () {\r\n cm.save();\r\n });\r\n }\r\n\r\n this.gui = {};\r\n\r\n if (options.toolbar !== false) {\r\n this.gui.toolbar = this.createToolbar();\r\n }\r\n if (options.status !== false) {\r\n this.gui.statusbar = this.createStatusbar();\r\n }\r\n if (options.autosave != undefined && options.autosave.enabled === true) {\r\n this.autosave();\r\n }\r\n\r\n this.gui.sideBySide = this.createSideBySide();\r\n\r\n this._rendered = this.element;\r\n\r\n\r\n // Fixes CodeMirror bug (#344)\r\n var temp_cm = this.codemirror;\r\n setTimeout(function () {\r\n temp_cm.refresh();\r\n }.bind(temp_cm), 0);\r\n};\r\n\r\n// Safari, in Private Browsing Mode, looks like it supports localStorage but all calls to setItem throw QuotaExceededError. We're going to detect this and set a variable accordingly.\r\nfunction isLocalStorageAvailable() {\r\n if (typeof localStorage === 'object') {\r\n try {\r\n localStorage.setItem('smde_localStorage', 1);\r\n localStorage.removeItem('smde_localStorage');\r\n } catch (e) {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nInscrybMDE.prototype.autosave = function () {\r\n if (isLocalStorageAvailable()) {\r\n var inscrybmde = this;\r\n\r\n if (this.options.autosave.uniqueId == undefined || this.options.autosave.uniqueId == '') {\r\n console.log('InscrybMDE: You must set a uniqueId to use the autosave feature');\r\n return;\r\n }\r\n\r\n if (inscrybmde.element.form != null && inscrybmde.element.form != undefined) {\r\n inscrybmde.element.form.addEventListener('submit', function () {\r\n localStorage.removeItem('smde_' + inscrybmde.options.autosave.uniqueId);\r\n });\r\n }\r\n\r\n if (this.options.autosave.loaded !== true) {\r\n if (typeof localStorage.getItem('smde_' + this.options.autosave.uniqueId) == 'string' && localStorage.getItem('smde_' + this.options.autosave.uniqueId) != '') {\r\n this.codemirror.setValue(localStorage.getItem('smde_' + this.options.autosave.uniqueId));\r\n this.options.autosave.foundSavedValue = true;\r\n }\r\n\r\n this.options.autosave.loaded = true;\r\n }\r\n\r\n localStorage.setItem('smde_' + this.options.autosave.uniqueId, inscrybmde.value());\r\n\r\n if (typeof this.options.autosave.callback === 'function')\r\n this.options.autosave.callback.call(this);\r\n\r\n var el = document.getElementById('autosaved');\r\n if (el != null && el != undefined && el != '') {\r\n var d = new Date();\r\n var hh = d.getHours();\r\n var m = d.getMinutes();\r\n var dd = 'am';\r\n var h = hh;\r\n if (h >= 12) {\r\n h = hh - 12;\r\n dd = 'pm';\r\n }\r\n if (h == 0) {\r\n h = 12;\r\n }\r\n m = m < 10 ? '0' + m : m;\r\n\r\n el.innerHTML = 'Autosaved: ' + h + ':' + m + ' ' + dd;\r\n }\r\n\r\n this.autosaveTimeoutId = setTimeout(function () {\r\n inscrybmde.autosave();\r\n }, this.options.autosave.delay || 10000);\r\n } else {\r\n console.log('InscrybMDE: localStorage not available, cannot autosave');\r\n }\r\n};\r\n\r\nInscrybMDE.prototype.clearAutosavedValue = function () {\r\n if (isLocalStorageAvailable()) {\r\n if (this.options.autosave == undefined || this.options.autosave.uniqueId == undefined || this.options.autosave.uniqueId == '') {\r\n console.log('InscrybMDE: You must set a uniqueId to clear the autosave value');\r\n return;\r\n }\r\n\r\n localStorage.removeItem('smde_' + this.options.autosave.uniqueId);\r\n } else {\r\n console.log('InscrybMDE: localStorage not available, cannot autosave');\r\n }\r\n};\r\n\r\nInscrybMDE.prototype.createSideBySide = function () {\r\n var cm = this.codemirror;\r\n var wrapper = cm.getWrapperElement();\r\n var preview = wrapper.nextSibling;\r\n\r\n if (!preview || !/editor-preview-side/.test(preview.className)) {\r\n preview = document.createElement('div');\r\n preview.className = 'editor-preview-side';\r\n wrapper.parentNode.insertBefore(preview, wrapper.nextSibling);\r\n }\r\n\r\n if (this.options.syncSideBySidePreviewScroll === false) return preview;\r\n // Syncs scroll editor -> preview\r\n var cScroll = false;\r\n var pScroll = false;\r\n cm.on('scroll', function (v) {\r\n if (cScroll) {\r\n cScroll = false;\r\n return;\r\n }\r\n pScroll = true;\r\n var height = v.getScrollInfo().height - v.getScrollInfo().clientHeight;\r\n var ratio = parseFloat(v.getScrollInfo().top) / height;\r\n var move = (preview.scrollHeight - preview.clientHeight) * ratio;\r\n preview.scrollTop = move;\r\n });\r\n\r\n // Syncs scroll preview -> editor\r\n preview.onscroll = function () {\r\n if (pScroll) {\r\n pScroll = false;\r\n return;\r\n }\r\n cScroll = true;\r\n var height = preview.scrollHeight - preview.clientHeight;\r\n var ratio = parseFloat(preview.scrollTop) / height;\r\n var move = (cm.getScrollInfo().height - cm.getScrollInfo().clientHeight) * ratio;\r\n cm.scrollTo(0, move);\r\n };\r\n return preview;\r\n};\r\n\r\nInscrybMDE.prototype.createToolbar = function (items) {\r\n items = items || this.options.toolbar;\r\n\r\n if (!items || items.length === 0) {\r\n return;\r\n }\r\n var i;\r\n for (i = 0; i < items.length; i++) {\r\n if (toolbarBuiltInButtons[items[i]] != undefined) {\r\n items[i] = toolbarBuiltInButtons[items[i]];\r\n }\r\n }\r\n\r\n var bar = document.createElement('div');\r\n bar.className = 'editor-toolbar';\r\n\r\n var self = this;\r\n\r\n var toolbarData = {};\r\n self.toolbar = items;\r\n\r\n for (i = 0; i < items.length; i++) {\r\n if (items[i].name == 'guide' && self.options.toolbarGuideIcon === false)\r\n continue;\r\n\r\n if (self.options.hideIcons && self.options.hideIcons.indexOf(items[i].name) != -1)\r\n continue;\r\n\r\n // Fullscreen does not work well on mobile devices (even tablets)\r\n // In the future, hopefully this can be resolved\r\n if ((items[i].name == 'fullscreen' || items[i].name == 'side-by-side') && isMobile())\r\n continue;\r\n\r\n\r\n // Don't include trailing separators\r\n if (items[i] === '|') {\r\n var nonSeparatorIconsFollow = false;\r\n\r\n for (var x = (i + 1); x < items.length; x++) {\r\n if (items[x] !== '|' && (!self.options.hideIcons || self.options.hideIcons.indexOf(items[x].name) == -1)) {\r\n nonSeparatorIconsFollow = true;\r\n }\r\n }\r\n\r\n if (!nonSeparatorIconsFollow)\r\n continue;\r\n }\r\n\r\n\r\n // Create the icon and append to the toolbar\r\n (function (item) {\r\n var el;\r\n if (item === '|') {\r\n el = createSep();\r\n } else {\r\n el = createIcon(item, self.options.toolbarTips, self.options.shortcuts);\r\n }\r\n\r\n // bind events, special for info\r\n if (item.action) {\r\n if (typeof item.action === 'function') {\r\n el.onclick = function (e) {\r\n e.preventDefault();\r\n item.action(self);\r\n };\r\n } else if (typeof item.action === 'string') {\r\n el.onclick = function (e) {\r\n e.preventDefault();\r\n window.open(item.action, '_blank');\r\n };\r\n }\r\n }\r\n\r\n toolbarData[item.name || item] = el;\r\n bar.appendChild(el);\r\n })(items[i]);\r\n }\r\n\r\n self.toolbarElements = toolbarData;\r\n\r\n var cm = this.codemirror;\r\n cm.on('cursorActivity', function () {\r\n var stat = getState(cm);\r\n\r\n for (var key in toolbarData) {\r\n (function (key) {\r\n var el = toolbarData[key];\r\n if (stat[key]) {\r\n el.className += ' active';\r\n } else if (key != 'fullscreen' && key != 'side-by-side') {\r\n el.className = el.className.replace(/\\s*active\\s*/g, '');\r\n }\r\n })(key);\r\n }\r\n });\r\n\r\n var cmWrapper = cm.getWrapperElement();\r\n cmWrapper.parentNode.insertBefore(bar, cmWrapper);\r\n return bar;\r\n};\r\n\r\nInscrybMDE.prototype.createStatusbar = function (status) {\r\n // Initialize\r\n status = status || this.options.status;\r\n var options = this.options;\r\n var cm = this.codemirror;\r\n\r\n\r\n // Make sure the status variable is valid\r\n if (!status || status.length === 0)\r\n return;\r\n\r\n\r\n // Set up the built-in items\r\n var items = [];\r\n var i, onUpdate, defaultValue;\r\n\r\n for (i = 0; i < status.length; i++) {\r\n // Reset some values\r\n onUpdate = undefined;\r\n defaultValue = undefined;\r\n\r\n\r\n // Handle if custom or not\r\n if (typeof status[i] === 'object') {\r\n items.push({\r\n className: status[i].className,\r\n defaultValue: status[i].defaultValue,\r\n onUpdate: status[i].onUpdate\r\n });\r\n } else {\r\n var name = status[i];\r\n\r\n if (name === 'words') {\r\n defaultValue = function (el) {\r\n el.innerHTML = wordCount(cm.getValue());\r\n };\r\n onUpdate = function (el) {\r\n el.innerHTML = wordCount(cm.getValue());\r\n };\r\n } else if (name === 'lines') {\r\n defaultValue = function (el) {\r\n el.innerHTML = cm.lineCount();\r\n };\r\n onUpdate = function (el) {\r\n el.innerHTML = cm.lineCount();\r\n };\r\n } else if (name === 'cursor') {\r\n defaultValue = function (el) {\r\n el.innerHTML = '0:0';\r\n };\r\n onUpdate = function (el) {\r\n var pos = cm.getCursor();\r\n el.innerHTML = pos.line + ':' + pos.ch;\r\n };\r\n } else if (name === 'autosave') {\r\n defaultValue = function (el) {\r\n if (options.autosave != undefined && options.autosave.enabled === true) {\r\n el.setAttribute('id', 'autosaved');\r\n }\r\n };\r\n }\r\n\r\n items.push({\r\n className: name,\r\n defaultValue: defaultValue,\r\n onUpdate: onUpdate\r\n });\r\n }\r\n }\r\n\r\n\r\n // Create element for the status bar\r\n var bar = document.createElement('div');\r\n bar.className = 'editor-statusbar';\r\n\r\n\r\n // Create a new span for each item\r\n for (i = 0; i < items.length; i++) {\r\n // Store in temporary variable\r\n var item = items[i];\r\n\r\n\r\n // Create span element\r\n var el = document.createElement('span');\r\n el.className = item.className;\r\n\r\n\r\n // Ensure the defaultValue is a function\r\n if (typeof item.defaultValue === 'function') {\r\n item.defaultValue(el);\r\n }\r\n\r\n\r\n // Ensure the onUpdate is a function\r\n if (typeof item.onUpdate === 'function') {\r\n // Create a closure around the span of the current action, then execute the onUpdate handler\r\n this.codemirror.on('update', (function (el, item) {\r\n return function () {\r\n item.onUpdate(el);\r\n };\r\n }(el, item)));\r\n }\r\n\r\n\r\n // Append the item to the status bar\r\n bar.appendChild(el);\r\n }\r\n\r\n\r\n // Insert the status bar into the DOM\r\n var cmWrapper = this.codemirror.getWrapperElement();\r\n cmWrapper.parentNode.insertBefore(bar, cmWrapper.nextSibling);\r\n return bar;\r\n};\r\n\r\n/**\r\n * Get or set the text content.\r\n */\r\nInscrybMDE.prototype.value = function (val) {\r\n var cm = this.codemirror;\r\n if (val === undefined) {\r\n return cm.getValue();\r\n } else {\r\n cm.getDoc().setValue(val);\r\n if (this.isPreviewActive()) {\r\n var wrapper = cm.getWrapperElement();\r\n var preview = wrapper.lastChild;\r\n preview.innerHTML = this.options.previewRender(val, preview);\r\n }\r\n return this;\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Bind static methods for exports.\r\n */\r\nInscrybMDE.toggleBold = toggleBold;\r\nInscrybMDE.toggleItalic = toggleItalic;\r\nInscrybMDE.toggleStrikethrough = toggleStrikethrough;\r\nInscrybMDE.toggleBlockquote = toggleBlockquote;\r\nInscrybMDE.toggleHeadingSmaller = toggleHeadingSmaller;\r\nInscrybMDE.toggleHeadingBigger = toggleHeadingBigger;\r\nInscrybMDE.toggleHeading1 = toggleHeading1;\r\nInscrybMDE.toggleHeading2 = toggleHeading2;\r\nInscrybMDE.toggleHeading3 = toggleHeading3;\r\nInscrybMDE.toggleCodeBlock = toggleCodeBlock;\r\nInscrybMDE.toggleUnorderedList = toggleUnorderedList;\r\nInscrybMDE.toggleOrderedList = toggleOrderedList;\r\nInscrybMDE.cleanBlock = cleanBlock;\r\nInscrybMDE.drawLink = drawLink;\r\nInscrybMDE.drawImage = drawImage;\r\nInscrybMDE.drawTable = drawTable;\r\nInscrybMDE.drawHorizontalRule = drawHorizontalRule;\r\nInscrybMDE.undo = undo;\r\nInscrybMDE.redo = redo;\r\nInscrybMDE.togglePreview = togglePreview;\r\nInscrybMDE.toggleSideBySide = toggleSideBySide;\r\nInscrybMDE.toggleFullScreen = toggleFullScreen;\r\n\r\n/**\r\n * Bind instance methods for exports.\r\n */\r\nInscrybMDE.prototype.toggleBold = function () {\r\n toggleBold(this);\r\n};\r\nInscrybMDE.prototype.toggleItalic = function () {\r\n toggleItalic(this);\r\n};\r\nInscrybMDE.prototype.toggleStrikethrough = function () {\r\n toggleStrikethrough(this);\r\n};\r\nInscrybMDE.prototype.toggleBlockquote = function () {\r\n toggleBlockquote(this);\r\n};\r\nInscrybMDE.prototype.toggleHeadingSmaller = function () {\r\n toggleHeadingSmaller(this);\r\n};\r\nInscrybMDE.prototype.toggleHeadingBigger = function () {\r\n toggleHeadingBigger(this);\r\n};\r\nInscrybMDE.prototype.toggleHeading1 = function () {\r\n toggleHeading1(this);\r\n};\r\nInscrybMDE.prototype.toggleHeading2 = function () {\r\n toggleHeading2(this);\r\n};\r\nInscrybMDE.prototype.toggleHeading3 = function () {\r\n toggleHeading3(this);\r\n};\r\nInscrybMDE.prototype.toggleCodeBlock = function () {\r\n toggleCodeBlock(this);\r\n};\r\nInscrybMDE.prototype.toggleUnorderedList = function () {\r\n toggleUnorderedList(this);\r\n};\r\nInscrybMDE.prototype.toggleOrderedList = function () {\r\n toggleOrderedList(this);\r\n};\r\nInscrybMDE.prototype.cleanBlock = function () {\r\n cleanBlock(this);\r\n};\r\nInscrybMDE.prototype.drawLink = function () {\r\n drawLink(this);\r\n};\r\nInscrybMDE.prototype.drawImage = function () {\r\n drawImage(this);\r\n};\r\nInscrybMDE.prototype.drawTable = function () {\r\n drawTable(this);\r\n};\r\nInscrybMDE.prototype.drawHorizontalRule = function () {\r\n drawHorizontalRule(this);\r\n};\r\nInscrybMDE.prototype.undo = function () {\r\n undo(this);\r\n};\r\nInscrybMDE.prototype.redo = function () {\r\n redo(this);\r\n};\r\nInscrybMDE.prototype.togglePreview = function () {\r\n togglePreview(this);\r\n};\r\nInscrybMDE.prototype.toggleSideBySide = function () {\r\n toggleSideBySide(this);\r\n};\r\nInscrybMDE.prototype.toggleFullScreen = function () {\r\n toggleFullScreen(this);\r\n};\r\n\r\nInscrybMDE.prototype.isPreviewActive = function () {\r\n var cm = this.codemirror;\r\n var wrapper = cm.getWrapperElement();\r\n var preview = wrapper.lastChild;\r\n\r\n return /editor-preview-active/.test(preview.className);\r\n};\r\n\r\nInscrybMDE.prototype.isSideBySideActive = function () {\r\n var cm = this.codemirror;\r\n var wrapper = cm.getWrapperElement();\r\n var preview = wrapper.nextSibling;\r\n\r\n return /editor-preview-active-side/.test(preview.className);\r\n};\r\n\r\nInscrybMDE.prototype.isFullscreenActive = function () {\r\n var cm = this.codemirror;\r\n\r\n return cm.getOption('fullScreen');\r\n};\r\n\r\nInscrybMDE.prototype.getState = function () {\r\n var cm = this.codemirror;\r\n\r\n return getState(cm);\r\n};\r\n\r\nInscrybMDE.prototype.toTextArea = function () {\r\n var cm = this.codemirror;\r\n var wrapper = cm.getWrapperElement();\r\n\r\n if (wrapper.parentNode) {\r\n if (this.gui.toolbar) {\r\n wrapper.parentNode.removeChild(this.gui.toolbar);\r\n }\r\n if (this.gui.statusbar) {\r\n wrapper.parentNode.removeChild(this.gui.statusbar);\r\n }\r\n if (this.gui.sideBySide) {\r\n wrapper.parentNode.removeChild(this.gui.sideBySide);\r\n }\r\n }\r\n\r\n cm.toTextArea();\r\n\r\n if (this.autosaveTimeoutId) {\r\n clearTimeout(this.autosaveTimeoutId);\r\n this.autosaveTimeoutId = undefined;\r\n this.clearAutosavedValue();\r\n }\r\n};\r\n\r\nmodule.exports = InscrybMDE;\r\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n;(function(root) {\n'use strict';\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n nptable: noop,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=\\\\h*\\\\n)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?!script|pre|style)[a-z][\\\\w-]*\\\\s*>(?=\\\\h*\\\\n)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading| {0,3}>|<\\/?(?:tag)(?: +|\\n|\\/?>)|<(?:script|pre|style|!--))[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = //;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block.paragraph)\n .replace('hr', block.hr)\n .replace('heading', block.heading)\n .replace('lheading', block.lheading)\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\n? *\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = edit(block.paragraph)\n .replace('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n .getRegex();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top) {\n src = src.replace(/^ +$/gm, '');\n var next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noop,\n tag: '^comment'\n + '|^[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(href(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s])__(?!_)|^\\*\\*([^\\s])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*\"<\\[])\\*(?!\\*)|^_([^\\s][\\s\\S]*?[^\\s_])_(?!_|[^\\s.])|^_([^\\s_][\\s\\S]*?[^\\s])_(?!_|[^\\s.])|^\\*([^\\s\"<\\[][\\s\\S]*?[^\\s*])\\*(?!\\*)|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noop,\n text: /^(`+|[^`])[\\s\\S]*?(?=[\\\\?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]?|`[^`]*`|[^\\[\\]\\\\])*?/;\ninline._href = /\\s*(<(?:\\\\[<>]?|[^\\s<>\\\\])*>|(?:\\\\[()]?|\\([^\\s\\x00-\\x1f\\\\]*\\)|[^\\s\\x00-\\x1f()\\\\])*?)/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: edit(inline.text)\n .replace(']|', '~]|')\n .replace('|$', '|https?://|ftp://|www\\\\.|[a-zA-Z0-9.!#$%&\\'*+/=?^_`{\\\\|}~-]+@|$')\n .getRegex()\n});\n\ninline.gfm.url = edit(inline.gfm.url)\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer();\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.pedantic) {\n this.rules = inline.pedantic;\n } else if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = '',\n link,\n text,\n href,\n title,\n cap,\n prevCapZero;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\nInlineLexer.escapes = function(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = '',\n l = text.length,\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || marked.defaults;\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '