{"version":3,"file":"js/847-856b0006889d4dedee44.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.esm.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","/*! For license information please see form-render.min.js.LICENSE.txt */\n!function(e){\"use strict\";!function(){var t={962:function(e,t,r){r.r(t);var n=r(645),o=r.n(n),i=r(278),s=r.n(i)()(o());s.push([e.id,'.rendered-form *{box-sizing:border-box}.rendered-form.formbuilder-embedded-bootstrap button,.rendered-form.formbuilder-embedded-bootstrap input,.rendered-form.formbuilder-embedded-bootstrap select,.rendered-form.formbuilder-embedded-bootstrap textarea{font-family:inherit;font-size:inherit;line-height:inherit}.rendered-form.formbuilder-embedded-bootstrap input{line-height:normal}.rendered-form.formbuilder-embedded-bootstrap textarea{overflow:auto}.rendered-form.formbuilder-embedded-bootstrap button,.rendered-form.formbuilder-embedded-bootstrap input,.rendered-form.formbuilder-embedded-bootstrap select,.rendered-form.formbuilder-embedded-bootstrap textarea{font-family:inherit;font-size:inherit;line-height:inherit}.rendered-form.formbuilder-embedded-bootstrap .btn-group{position:relative;display:inline-block;vertical-align:middle}.rendered-form.formbuilder-embedded-bootstrap .btn-group>.btn{position:relative;float:left}.rendered-form.formbuilder-embedded-bootstrap .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.rendered-form.formbuilder-embedded-bootstrap .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.rendered-form.formbuilder-embedded-bootstrap .btn-group .btn+.btn,.rendered-form.formbuilder-embedded-bootstrap .btn-group .btn+.btn-group,.rendered-form.formbuilder-embedded-bootstrap .btn-group .btn-group+.btn,.rendered-form.formbuilder-embedded-bootstrap .btn-group .btn-group+.btn-group{margin-left:-1px}.rendered-form.formbuilder-embedded-bootstrap .btn-group>.btn:last-child:not(:first-child),.rendered-form.formbuilder-embedded-bootstrap .btn-group>.dropdown-toggle:not(:first-child),.rendered-form.formbuilder-embedded-bootstrap .btn-group .input-group .form-control:last-child,.rendered-form.formbuilder-embedded-bootstrap .btn-group .input-group-addon:last-child,.rendered-form.formbuilder-embedded-bootstrap .btn-group .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.rendered-form.formbuilder-embedded-bootstrap .btn-group .input-group-btn:first-child>.btn:not(:first-child),.rendered-form.formbuilder-embedded-bootstrap .btn-group .input-group-btn:last-child>.btn,.rendered-form.formbuilder-embedded-bootstrap .btn-group .input-group-btn:last-child>.btn-group>.btn,.rendered-form.formbuilder-embedded-bootstrap .btn-group .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.rendered-form.formbuilder-embedded-bootstrap .btn-group>.btn.active,.rendered-form.formbuilder-embedded-bootstrap .btn-group>.btn:active,.rendered-form.formbuilder-embedded-bootstrap .btn-group>.btn:focus,.rendered-form.formbuilder-embedded-bootstrap .btn-group>.btn:hover{z-index:2}.rendered-form.formbuilder-embedded-bootstrap .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;-moz-user-select:none;user-select:none;background-image:none;border-radius:4px}.rendered-form.formbuilder-embedded-bootstrap .btn.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.rendered-form.formbuilder-embedded-bootstrap .btn.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.rendered-form.formbuilder-embedded-bootstrap .btn.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.rendered-form.formbuilder-embedded-bootstrap .btn.active,.rendered-form.formbuilder-embedded-bootstrap .btn.btn-active,.rendered-form.formbuilder-embedded-bootstrap .btn:active{background-image:none}.rendered-form.formbuilder-embedded-bootstrap .input-group .form-control:last-child,.rendered-form.formbuilder-embedded-bootstrap .input-group-addon:last-child,.rendered-form.formbuilder-embedded-bootstrap .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.rendered-form.formbuilder-embedded-bootstrap .input-group-btn:first-child>.btn:not(:first-child),.rendered-form.formbuilder-embedded-bootstrap .input-group-btn:last-child>.btn,.rendered-form.formbuilder-embedded-bootstrap .input-group-btn:last-child>.btn-group>.btn,.rendered-form.formbuilder-embedded-bootstrap .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.rendered-form.formbuilder-embedded-bootstrap .input-group .form-control,.rendered-form.formbuilder-embedded-bootstrap .input-group-addon,.rendered-form.formbuilder-embedded-bootstrap .input-group-btn{display:table-cell}.rendered-form.formbuilder-embedded-bootstrap .input-group-lg>.form-control,.rendered-form.formbuilder-embedded-bootstrap .input-group-lg>.input-group-addon,.rendered-form.formbuilder-embedded-bootstrap .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333}.rendered-form.formbuilder-embedded-bootstrap .input-group{position:relative;display:table;border-collapse:separate}.rendered-form.formbuilder-embedded-bootstrap .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.rendered-form.formbuilder-embedded-bootstrap .form-control,.rendered-form.formbuilder-embedded-bootstrap output{font-size:14px;line-height:1.42857143;display:block}.rendered-form.formbuilder-embedded-bootstrap textarea.form-control{height:auto}.rendered-form.formbuilder-embedded-bootstrap .form-control{height:34px;display:block;width:100%;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px}.rendered-form.formbuilder-embedded-bootstrap .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.formbuilder-embedded-bootstrap .form-group{margin-left:0px;margin-bottom:15px}.rendered-form.formbuilder-embedded-bootstrap .btn,.rendered-form.formbuilder-embedded-bootstrap .form-control{background-image:none}.rendered-form.formbuilder-embedded-bootstrap .pull-right{float:right}.rendered-form.formbuilder-embedded-bootstrap .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 *[tooltip]{position:relative}.rendered-form *[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;cursor:default}.rendered-form *[tooltip]:hover::before{border:solid;border-color:#222 rgba(0,0,0,0);border-width:6px 6px 0;bottom:17px;content:\"\";left:2px;position:absolute;z-index:99;cursor:default}.rendered-form .tooltip-element{visibility:visible;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;cursor:default}.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:rgba(0,0,0,0)}.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}.rendered-form .form-group .formbuilder-required{color:#c10000}.rendered-form .other-option:checked+label input{display:inline-block}.rendered-form .other-val{margin-left:5px;display:none}.rendered-form .form-control.number{width:auto}.rendered-form .form-control[type=color]{width:60px;padding:2px;display:inline-block}.rendered-form .form-control[multiple]{height:auto}',\"\"]),t.default=s},278:function(e){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=\"\",n=void 0!==t[5];return t[4]&&(r+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(r+=\"@media \".concat(t[2],\" {\")),n&&(r+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),r+=e(t),n&&(r+=\"}\"),t[2]&&(r+=\"}\"),t[4]&&(r+=\"}\"),r})).join(\"\")},t.i=function(e,r,n,o,i){\"string\"==typeof e&&(e=[[null,e,void 0]]);var s={};if(n)for(var a=0;a0?\" \".concat(c[5]):\"\",\" {\").concat(c[1],\"}\")),c[5]=i),r&&(c[2]?(c[1]=\"@media \".concat(c[2],\" {\").concat(c[1],\"}\"),c[2]=r):c[2]=r),o&&(c[4]?(c[1]=\"@supports (\".concat(c[4],\") {\").concat(c[1],\"}\"),c[4]=o):c[4]=\"\".concat(o)),t.push(c))}},t}},645:function(e){e.exports=function(e){return e[1]}},252:function(e){e.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=7)}([function(e,t,r){var n=\"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=r(2),i=r(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\":n(e))}function d(e){return\"[object Function]\"===s.call(e)}function c(e,t){if(null!=e)if(\"object\"!==(void 0===e?\"undefined\":n(e))&&(e=[e]),a(e))for(var r=0,o=e.length;r=200&&e<300},headers:{common:{Accept:\"application/json, text/plain, */*\"}}};n.forEach([\"delete\",\"get\",\"head\"],(function(e){a.headers[e]={}})),n.forEach([\"post\",\"put\",\"patch\"],(function(e){a.headers[e]=n.merge(i)})),e.exports=a}).call(this,r(12))},function(e,t,r){e.exports=function(e,t){return function(){for(var r=new Array(arguments.length),n=0;n0&&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,r=Object.assign({},s,e),n=r.location,o=function(e,t){var r={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}(r,[\"location\"]),i=n.replace(/\\/?$/,\"/\");this.config=Object.assign({},{location:i},o);var a=this.config,l=a.override,d=a.preloaded,c=void 0===d?{}:d,u=Object.entries(this.langs).concat(Object.entries(l||c));this.langs=u.reduce((function(e,r){var n=r[0],o=r[1];return e[n]=t.applyLanguage.call(t,n,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 r=this.getValue(e);if(r){var o=r.match(/\\{[^}]+?\\}/g),i=void 0;if(t&&o)if(\"object\"===(void 0===t?\"undefined\":n(t)))for(var s=0;s1&&void 0!==arguments[1])||arguments[1],r=this;return new Promise((function(n,o){if(-1!==r.loaded.indexOf(e)&&t)return r.applyLanguage.call(r,r.langs[e]),n(r.langs[e]);var s=[r.config.location,e,r.config.extension].join(\"\");return(0,i.get)(s).then((function(t){var o=t.data,i=r.processFile(o);return r.applyLanguage.call(r,e,i),r.loaded.push(e),n(r.langs[e])})).catch((function(){var t=r.applyLanguage.call(r,e);n(t)}))}))},e.prototype.applyLanguage=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.config.override[e]||{},n=this.langs[e]||{};return this.langs[e]=Object.assign({},n,t,r),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,r){e.exports=r(9)},function(e,t,r){var n=r(0),o=r(2),i=r(11),s=r(1);function a(e){var t=new i(e),r=o(i.prototype.request,t);return n.extend(r,i.prototype,t),n.extend(r,t),r}var l=a(s);l.Axios=i,l.create=function(e){return a(n.merge(s,e))},l.Cancel=r(6),l.CancelToken=r(26),l.isCancel=r(5),l.all=function(e){return Promise.all(e)},l.spread=r(27),e.exports=l,e.exports.default=l},function(e,t,r){function n(e){return!!e.constructor&&\"function\"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(n(e)||function(e){return\"function\"==typeof e.readFloatLE&&\"function\"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t,r){var n=r(1),o=r(0),i=r(21),s=r(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(n,{method:\"get\"},this.defaults,e)).method=e.method.toLowerCase();var t=[s,void 0],r=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;)r=r.then(t.shift(),t.shift());return r},o.forEach([\"delete\",\"get\",\"head\",\"options\"],(function(e){a.prototype[e]=function(t,r){return this.request(o.merge(r||{},{method:e,url:t}))}})),o.forEach([\"post\",\"put\",\"patch\"],(function(e){a.prototype[e]=function(t,r,n){return this.request(o.merge(n||{},{method:e,url:t,data:r}))}})),e.exports=a},function(e,t,r){var n,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(n===setTimeout)return setTimeout(e,0);if((n===s||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:s}catch(e){n=s}try{o=\"function\"==typeof clearTimeout?clearTimeout:a}catch(e){o=a}}();var d,c=[],u=!1,f=-1;function p(){u&&d&&(u=!1,d.length?c=d.concat(c):f=-1,c.length&&m())}function m(){if(!u){var e=l(p);u=!0;for(var t=c.length;t;){for(d=c,c=[];++f1)for(var r=1;r=0)return;s[t]=\"set-cookie\"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+\", \"+r:r}})),s):s}},function(e,t,r){var n=r(0);e.exports=n.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement(\"a\");function o(e){var n=e;return t&&(r.setAttribute(\"href\",n),n=r.href),r.setAttribute(\"href\",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,\"\"):\"\",host:r.host,search:r.search?r.search.replace(/^\\?/,\"\"):\"\",hash:r.hash?r.hash.replace(/^#/,\"\"):\"\",hostname:r.hostname,port:r.port,pathname:\"/\"===r.pathname.charAt(0)?r.pathname:\"/\"+r.pathname}}return e=o(window.location.href),function(t){var r=n.isString(t)?o(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0}},function(e,t,r){function n(){this.message=\"String contains an invalid character\"}n.prototype=new Error,n.prototype.code=5,n.prototype.name=\"InvalidCharacterError\",e.exports=function(e){for(var t,r,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((r=o.charCodeAt(s+=.75))>255)throw new n;t=t<<8|r}return i}},function(e,t,r){var n=r(0);e.exports=n.isStandardBrowserEnv()?{write:function(e,t,r,o,i,s){var a=[];a.push(e+\"=\"+encodeURIComponent(t)),n.isNumber(r)&&a.push(\"expires=\"+new Date(r).toGMTString()),n.isString(o)&&a.push(\"path=\"+o),n.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,r){var n=r(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){n.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=o},function(e,t,r){var n=r(0),o=r(23),i=r(5),s=r(1),a=r(24),l=r(25);function d(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return d(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=n.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),n.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],(function(t){delete e.headers[t]})),(e.adapter||s.adapter)(e).then((function(t){return d(e),t.data=o(t.data,t.headers,e.transformResponse),t}),(function(t){return i(t)||(d(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},function(e,t,r){var n=r(0);e.exports=function(e,t,r){return n.forEach(r,(function(r){e=r(e,t)})),e}},function(e,t,r){e.exports=function(e){return/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(e)}},function(e,t,r){e.exports=function(e,t){return t?e.replace(/\\/+$/,\"\")+\"/\"+t.replace(/^\\/+/,\"\"):e}},function(e,t,r){var n=r(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 r=this;e((function(e){r.reason||(r.reason=new n(e),t(r.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,r){e.exports=function(e){return function(t){return e.apply(null,t)}}}])},700:function(e,t,r){var n=r(292),o=r(962);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.id,o,\"\"]]);n(o,{attributes:{class:\"formBuilder-injected-style\"},insert:\"head\",singleton:!1}),e.exports=o.locals||{}},292:function(e,t,r){var n,o=function(){var e={};return function(t){if(void 0===e[t]){var r=document.querySelector(t);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}e[t]=r}return e[t]}}(),i=[];function s(e){for(var t=-1,r=0;re}};var i;const s=(e,t)=>{if(0===o.backendOrder.length)return!1;const r=e.toLowerCase();return t=t?t+\"\":\"\",r.startsWith(\"on\")||[\"form\",\"formaction\"].includes(r)||t.trim().toLowerCase().startsWith(\"javascript:\")};o.backends.fallback=function(t){const r=document.implementation.createHTMLDocument(\"\"),n=r.createElement(\"base\");n.href=document.location.href,r.head.appendChild(n);const o=[\"applet\",\"comment\",\"embed\",\"iframe\",\"link\",\"listing\",\"meta\",\"noscript\",\"object\",\"plaintext\",\"script\",\"style\",\"xmp\"],i=e.parseHTML(t,r,!1);e(i).find(\"*\").addBack().each(((t,r)=>{\"#text\"!==r.nodeName&&(r.tagName&&o.includes(r.tagName.toLowerCase())?r.parentElement?r.parentElement.removeChild(r):i.includes(r)&&i.splice(i.indexOf(r),1):r.attributes&&Array.from(r.attributes).forEach((t=>{s(t.name,t.value)&&e(r).removeAttr(t.name)})))}));const a=r.createElement(\"div\");return e(a).html(i),a.innerHTML};const a=e=>{const t=!!o.clobberingProtection.document&&document,r=!!o.clobberingProtection.form&&document.createElement(\"form\");return t&&e in t||r&&e in r?o.clobberingProtection.namespaceAttributes?\"user-content-\"+e:void 0:e},l={fallback:(e,t)=>{const r=o.backends.fallback,n=\"function\"==typeof r;return n&&(t=r(t)),e.innerHTML=t,n},dompurify:(e,t)=>{const r=o.backends.dompurify;return!(!1===r||!r.isSupported||(e.innerHTML=r.sanitize(t),0))},sanitizer:(e,t)=>{const r=o.backends.sanitizer;return!!r&&(e.setHTML(t,{sanitizer:r}),!0)}},d=[\"events\"],c=[\"tag\",\"content\"];function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function f(e){for(var t=1;t=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}window.fbLoaded={js:[],css:[]},window.fbEditors={quill:{},tinymce:{}};const h=function(e,t=!1){if(null==e||\"object\"!=typeof e)return e;const r=\"function\"==typeof window.structuredClone?window.structuredClone(e):Object.assign({},e),n=[null,void 0,\"\"];t&&n.push(!1);for(const e in r)n.includes(r[e])?delete r[e]:Array.isArray(r[e])&&(r[e].length||delete r[e]);return r},b=function(e){return![\"values\",\"enableOther\",\"other\",\"label\",\"subtype\"].includes(e)},g=(e,t)=>{let r;return e=y(e),t&&(Array.isArray(t)?r=T(t.join(\" \")):(\"boolean\"==typeof t&&(t=t.toString()),r=T(t.trim()))),{name:e,value:t=t?`=\"${r}\"`:\"\"}},y=e=>({className:\"class\"}[e]||v(e)),v=e=>(e=(e=e.replace(/[^\\w\\s\\-]/gi,\"\")).replace(/([A-Z])/g,(function(e){return\"-\"+e.toLowerCase()}))).replace(/\\s/g,\"-\").replace(/^-+/g,\"\"),w=e=>e.replace(/-([a-z])/g,((e,t)=>t.toUpperCase())),x=function(){let e,t=0;return function(r){const n=Date.now();return n===e?++t:(t=0,e=n),(r.type||v(r.label))+\"-\"+n+\"-\"+t}}(),O=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],j=function(t,r=\"\",n={}){let i=O(r);const{events:u}=n,f=m(n,d),p=document.createElement(t),h={string:t=>{((t,r,n=!1)=>{if(!n){const n=document.createElement(t.tagName);return void 0!==o.backendOrder.find((e=>l[e](n,r)))?((t=>{e(t).find(\"*\").each(((e,t)=>{[\"embed\",\"form\",\"iframe\",\"image\",\"img\",\"object\"].includes(t.tagName.toLowerCase())&&t.removeAttribute(\"name\"),[\"id\",\"name\"].forEach((e=>{if(t.hasAttribute(e)){const r=a(t.getAttribute(e));void 0===r?t.removeAttribute(e):t.setAttribute(e,r)}}))}))})(n),t.innerHTML=n.innerHTML,t):(t.innerHTML=r,t)}t.textContent=r})(p,p.innerHTML+t)},object:e=>{const{tag:t,content:r}=e,n=m(e,c);return p.appendChild(j(t,r,n))},node:e=>p.appendChild(e),array:e=>{for(let t=0;t{e=e(),i=O(e),h[i](e)},undefined:()=>{}};for(const e in f)if(f.hasOwnProperty(e)){const t=y(e);let r=Array.isArray(f[e])?P(f[e].join(\" \").split(\" \")).join(\" \"):f[e];if(s(t,r))continue;if(\"boolean\"==typeof r){if(!0===r){const e=\"contenteditable\"===t||t;p.setAttribute(t,e)}}else\"id\"!==t&&\"name\"!==t||(r=a(r)),void 0!==r&&p.setAttribute(t,r)}return r&&h[i](r),((e,t)=>{if(t)for(const r in t)t.hasOwnProperty(r)&&e.addEventListener(r,(e=>t[r](e)))})(p,u),p},k=e=>{const t=e.attributes,r={};return L(t,(e=>{let n=t[e].value||\"\";n.match(/false|true/g)?n=\"true\"===n:n.match(/undefined/g)&&(n=void 0),n&&(r[w(t[e].name)]=n)})),r},C=e=>{const t=[];for(let r=0;r{const t=[];if(e.length){const r=e[0].getElementsByTagName(\"value\");for(let e=0;e{const t=(new window.DOMParser).parseFromString(e,\"text/xml\"),r=[];if(t){const e=t.getElementsByTagName(\"field\");for(let t=0;t{const t=document.createElement(\"textarea\");return t.innerHTML=e,t.textContent},T=e=>{const t={'\"':\""\",\"&\":\"&\",\"<\":\"<\",\">\":\">\"};return\"string\"==typeof e?e.replace(/[\"&<>]/g,(e=>t[e]||e)):e},L=function(e,t,r){for(let n=0;ne.filter(((e,t,r)=>r.indexOf(e)===t)),R=(e,t=\"\")=>{const r=jQuery;let n=[];return Array.isArray(e)||(e=[e]),D(e)||(n=jQuery.map(e,(e=>{const r={dataType:\"script\",cache:!0,url:(t||\"\")+e};return jQuery.ajax(r).done((()=>window.fbLoaded.js.push(e)))}))),n.push(jQuery.Deferred((e=>r(e.resolve)))),jQuery.when(...n)},D=(e,t=\"js\")=>{const r=window.fbLoaded[t];return Array.isArray(e)?e.every((e=>r.includes(e))):r.includes(e)},N=(t,r=\"\")=>{Array.isArray(t)||(t=[t]),t.forEach((t=>{let n=\"href\",o=t,i=\"\";if(\"object\"==typeof t&&(n=t.type||(t.style?\"inline\":\"href\"),i=t.id,o=i||t.href||t.style,t=\"inline\"===n?t.style:t.href),!D(o,\"css\")){if(\"href\"===n){const e=document.createElement(\"link\");e.type=\"text/css\",e.rel=\"stylesheet\",e.href=(r||\"\")+t,document.head.appendChild(e)}else e(``).attr(\"id\",i).appendTo(e(document.head));window.fbLoaded.css.push(o)}}))},q=(e,t)=>{const r=Object.assign({},e,t);for(const n in t)r.hasOwnProperty(n)&&(Array.isArray(t[n])?r[n]=Array.isArray(e[n])?P(e[n].concat(t[n])):t[n]:\"object\"==typeof t[n]?r[n]=q(e[n],t[n]):r[n]=t[n]);return r},M=/^col-(xs|sm|md|lg)-([^\\s]+)/,F={addEventListeners:(e,t,r)=>t.split(\" \").forEach((t=>e.addEventListener(t,r,!1))),attrString:e=>Object.entries(e).map((([e,t])=>b(e)&&Object.values(g(e,t)).join(\"\"))).filter(Boolean).join(\" \"),camelCase:w,capitalize:e=>e.replace(/\\b\\w/g,(function(e){return e.toUpperCase()})),closest:(e,t)=>{const r=t.replace(\".\",\"\");for(;(e=e.parentElement)&&!e.classList.contains(r););return e},getContentType:O,escapeAttr:T,escapeAttrs:e=>{for(const t in e)e.hasOwnProperty(t)&&(e[t]=T(e[t]));return e},escapeHtml:e=>{const t=document.createElement(\"textarea\");return t.textContent=e,t.innerHTML},forceNumber:e=>e.replace(/[^0-9]/g,\"\"),forEach:L,getScripts:R,getStyles:N,hyphenCase:v,isCached:D,markup:j,merge:q,mobileClass:()=>{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},nameAttr:x,parsedHtml:A,parseXML:S,removeFromArray:(e,t)=>{const r=t.indexOf(e);r>-1&&t.splice(r,1)},safeAttr:g,safeAttrName:y,safename:e=>e.replace(/\\s/g,\"-\").replace(/[^a-zA-Z0-9[\\]_-]/g,\"\"),subtract:(e,t)=>t.filter((function(e){return!~this.indexOf(e)}),e),trimObj:h,unique:P,validAttr:b,titleCase:function(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`)),r=new RegExp(`(?!${t.join(\"|\")})\\\\w\\\\S*`,\"g\");return`${e}`.replace(r,(e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/[A-Z]/g,(e=>` ${e}`))))},firstNumberOrUndefined:function(...e){return e.find((e=>\"number\"==typeof e))},splitObject:(e,t)=>{const r=e=>(t,r)=>(t[r]=e[r],t);return[Object.keys(e).filter((e=>t.includes(e))).reduce(r(e),{}),Object.keys(e).filter((e=>!t.includes(e))).reduce(r(e),{})]}};e.fn.swapWith=function(t){const r=this,n=e(t),o=e(\"
\");return r.before(o),n.before(r),o.before(n).remove(),r};var z=F;const B=(e,t,r=!0)=>{const n=[];let o=[\"none\",\"block\"];r&&(o=o.reverse());for(let r=e.length-1;r>=0;r--)-1!==e[r].textContent.toLowerCase().indexOf(t.toLowerCase())?(e[r].style.display=o[0],n.push(e[r])):e[r].style.display=o[1];return n};function H(e){let t;return\"function\"==typeof Event?t=new Event(e):(t=document.createEvent(\"Event\"),t.initEvent(e,!0,!0)),t}new RegExp(`(${[\"select\",\"checkbox-group\",\"checkbox\",\"radio-group\",\"autocomplete\"].join(\"|\")})`);var $={loaded:H(\"loaded\"),viewData:H(\"viewData\"),userDeclined:H(\"userDeclined\"),modalClosed:H(\"modalClosed\"),modalOpened:H(\"modalOpened\"),formSaved:H(\"formSaved\"),fieldAdded:H(\"fieldAdded\"),fieldRemoved:H(\"fieldRemoved\"),fieldRendered:H(\"fieldRendered\"),fieldEditOpened:H(\"fieldEditOpened\"),fieldEditClosed:H(\"fieldEditClosed\"),stageEmptied:H(\"stageEmptied\")};const U=[\"label\",\"type\"];class I{constructor(e,t){this.rawConfig=jQuery.extend({},e),e=jQuery.extend({},e),this.preview=t,delete e.isPreview,this.preview&&delete e.required;const r=[\"label\",\"description\",\"subtype\",\"required\",\"disabled\"];for(const t of r)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),I.controlConfig||(I.controlConfig={});const n=this.subtype?this.type+\".\"+this.subtype:this.type;this.classConfig=jQuery.extend({},I.controlConfig[this.type]||{},I.controlConfig[n]||{}),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,r){const n=r?r+\".\":\"\";I.classRegister||(I.classRegister={}),Array.isArray(e)||(e=[e]);for(const r of e)-1===r.indexOf(\".\")?I.classRegister[n+r]=t:I.error(`Ignoring type ${r}. Cannot use the character '.' in a type name.`)}static getRegistered(e=!1){const t=Object.keys(I.classRegister);return t.length?t.filter((t=>e?t.indexOf(e+\".\")>-1:-1===t.indexOf(\".\"))):t}static getRegisteredSubtypes(){const e={};for(const t in I.classRegister)if(I.classRegister.hasOwnProperty(t)){const[r,n]=t.split(\".\");if(!n)continue;e[r]||(e[r]=[]),e[r].push(n)}return e}static getClass(e,t){const r=t?e+\".\"+t:e;return I.classRegister[r]||I.classRegister[e]||I.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(I,I.classRegister);this.fbControlsLoaded=!0}}static mi18n(e,t){const n=this.definition;let o=n.i18n||{};o=o[r().locale]||o.default||o;const i=this.camelCase(e),s=\"object\"==typeof o?o[i]||o[e]:o;if(s)return s;let a=n.mi18n;return\"object\"==typeof a&&(a=a[i]||a[e]),a||(a=i),r().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:r}=e,n=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,U);return this.markup(r,A(t),n)}on(e){const t={prerender:e=>e,render:e=>{const t=()=>{this.onRender&&this.onRender(e)};this.css&&N(this.css),this.js&&!D(this.js)?R(this.js).done(t):t()}};return e?t[e]:t}static error(e){throw new Error(e)}markup(e,t=\"\",r={}){return this.element=j(e,t,r),this.element}parsedHtml(e){return A(e)}static camelCase(e){return w(e)}}const _=(e,t)=>{let r=e.id?`formbuilder-${e.type} form-group field-${e.id}`:\"\";if(e.className){const n=(e=>\"string\"==typeof e?e.split(\" \").filter((e=>M.test(e)||e.startsWith(\"row-\"))):[])(e.className);n&&n.length>0&&(r+=` ${n.join(\" \")}`,Array.isArray(t)||(t=[t]),t.forEach((e=>{e.classList&&e.classList.remove(...n),e.querySelectorAll(\"[class*=row-],[class*=col-]\").forEach((e=>{e.classList&&e.classList.remove(...n)}))})))}return r};class V{constructor(e,t=!1,r=!1,n={}){this.preview=null!=t&&t,this.disableHTMLLabels=null!=r&&r,this.controlConfig=null!=n?n:{},this.templates={label:null,help:null,default:(e,t,r,n)=>(r&&t.appendChild(r),this.markup(\"div\",[t,e],{className:_(n,e)})),noLabel:(e,t,r,n)=>this.markup(\"div\",e,{className:_(n,e)}),hidden:e=>e},e&&(this.templates=jQuery.extend(this.templates,e)),this.configure()}configure(){}build(e,t,r){this.preview&&(t.name?t.name=t.name+\"-preview\":t.name=z.nameAttr(t)+\"-preview\"),t.id=t.name,this.data=jQuery.extend({},t),I.controlConfig=this.controlConfig;const n=new e(t,this.preview);let o=n.build();if(\"object\"==typeof o&&o.field||(o={field:o}),\"string\"==typeof o.field){const e=this.markup(\"div\",o.field,{});1===e.childElementCount?o.field=e.children.item(0):o.field=Array.from(e.children)}const i=this.label(),s=this.help();let a;a=r&&this.isTemplate(r)?r:this.isTemplate(o.layout)?o.layout:\"default\";const l=this.processTemplate(a,o.field,i,s);return n.on(\"prerender\")(l),l.addEventListener(\"fieldRendered\",n.on(\"render\")),l}label(){const e=this.data.label||\"\",t=[this.disableHTMLLabels?document.createTextNode(e):z.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 r=this.templates[e](...t,this.data);return r.jquery&&(r=r[0]),r}markup(e,t=\"\",r={}){return z.markup(e,t,r)}}const Q=[\"values\",\"type\"];I.register(\"autocomplete\",class extends I{static get definition(){return{mi18n:{requireValidOption:\"requireValidOption\"}}}build(){const e=this.config,{values:t,type:r}=e,n=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,Q),o=e=>{const t=e.target.nextSibling.nextSibling,r=e.target.nextSibling,n=this.getActiveOption(t);let o=new Map([[38,()=>{const e=this.getPreviousOption(n);e&&this.selectOption(t,e)}],[40,()=>{const e=this.getNextOption(n);e&&this.selectOption(t,e)}],[13,()=>{n?(e.target.value=n.innerHTML,r.value=n.getAttribute(\"value\"),\"none\"===t.style.display?this.showList(t,n):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()},i={focus:e=>{const t=e.target.nextSibling.nextSibling,r=B(t.querySelectorAll(\"li\"),e.target.value);if(e.target.addEventListener(\"keydown\",o),e.target.value.length>0){const e=r.length>0?r[r.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 r=B(t.querySelectorAll(\"li\"),e.target.value);if(0==r.length)this.hideList(t);else{let e=this.getActiveOption(t);e||(e=r[r.length-1]),this.showList(t,e)}}},s=Object.assign({},n,{id:`${n.id}-input`,autocomplete:\"off\",events:i}),a=Object.assign({},n,{type:\"hidden\"});delete s.name;const l=[this.markup(\"input\",null,s),this.markup(\"input\",null,a)],d=t.map((e=>{const t=e.label,r={events:{click:t=>{const r=t.target.parentElement,n=r.previousSibling.previousSibling;n.value=e.label,n.nextSibling.value=e.value,this.hideList(r)}},value:e.value};return this.markup(\"li\",t,r)}));return l.push(this.markup(\"ul\",d,{id:`${n.id}-list`,className:`formbuilder-${r}-list`})),l}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 r=e.querySelectorAll(\"li\");for(let e=0;e=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,J);let n=t;const o={paragraph:\"p\",header:this.subtype};return o[t]&&(n=o[t]),{field:this.markup(n,z.parsedHtml(this.label),r),layout:\"noLabel\"}}}I.register([\"paragraph\",\"header\"],G),I.register([\"p\",\"address\",\"blockquote\",\"canvas\",\"output\"],G,\"paragraph\"),I.register([\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],G,\"header\");const Z=[\"values\",\"value\",\"placeholder\",\"type\",\"inline\",\"other\",\"toggle\"],K=[\"label\"];function Y(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}I.register([\"select\",\"checkbox-group\",\"radio-group\",\"checkbox\"],class extends I{static get definition(){return{inactive:[\"checkbox\"],mi18n:{minSelectionRequired:\"minSelectionRequired\"}}}build(){const e=[],t=this.config,{values:r,value:n,placeholder:o,type:i,inline:s,other:a,toggle:l}=t,d=Y(t,Z),c=i.replace(\"-group\",\"\"),u=\"select\"===i;if((d.multiple||\"checkbox-group\"===i)&&(d.name=d.name+\"[]\"),\"checkbox-group\"===i&&d.required){const e=this,t=this.onRender.bind(this);this.onRender=function(){t(),e.groupRequired()}}if(delete d.title,r){o&&u&&e.push(this.markup(\"option\",o,{disabled:!0,selected:!0,value:\"\"}));for(let t=0;t{const t=e.target;t.parentElement.previousElementSibling.value=t.value}},id:`${t.id}-value`,className:\"other-val\"},i=this.markup(\"input\",null,n),a=[document.createTextNode(I.mi18n(\"other\")),this.markup(\"input\",null,o)],l=this.markup(\"label\",a,{for:n.id}),u=this.markup(\"div\",[i,l],{className:r});e.push(u)}}return this.dom=\"select\"==i?this.markup(c,e,h(d,!0)):this.markup(\"div\",e,{className:i}),this.dom}groupRequired(){const e=this.element.getElementsByTagName(\"input\"),t=()=>{const t=[].some.call(e,(e=>e.checked));((e,t)=>{[].forEach.call(e,(e=>{t?e.removeAttribute(\"required\"):e.setAttribute(\"required\",\"required\"),((e,t)=>{const r=I.mi18n(\"minSelectionRequired\",1);t?e.setCustomValidity(\"\"):e.setCustomValidity(r)})(e,t)}))})(e,t)};for(let r=e.length-1;r>=0;r--)e[r].addEventListener(\"change\",t);t()}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\")&&(\"checkbox-group\"===this.config.type&&this.dom.querySelectorAll(\"input[type=checkbox]\").forEach((e=>{e.removeAttribute(\"checked\")})),this.dom.querySelectorAll(\"input\").forEach((e=>{if(!e.classList.contains(\"other-val\")){for(let r=0;r0){const r=this.dom.querySelector(`#${e.id}-value`);e.setAttribute(\"checked\",\"checked\"),r.value=e.value=t[0],r.style.display=\"inline-block\"}}})))}}});class ee extends I{static get definition(){return{mi18n:{date:\"dateField\",file:\"fileUpload\"}}}build(){let{name:e}=this.config;e=this.config.multiple?`${e}[]`:e;const t=Object.assign({},this.config,{name:e});return this.dom=this.markup(\"input\",null,t),this.dom}onRender(){this.config.userData&&e(this.dom).val(this.config.userData[0])}}I.register([\"text\",\"file\",\"date\",\"number\"],ee),I.register([\"text\",\"password\",\"email\",\"color\",\"tel\"],ee,\"text\"),I.register([\"date\",\"time\",\"datetime-local\"],ee,\"date\"),I.register([\"number\",\"range\"],ee,\"number\");const te=[\"value\"];class re extends I{static get definition(){return{mi18n:{textarea:\"textArea\"}}}build(){const e=this.config,{value:t=\"\"}=e,r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,te);return delete r.type,this.field=this.markup(\"textarea\",this.parsedHtml(t),r),this.field}onRender(){this.config.userData&&e(this.field).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)}}I.register(\"textarea\",re),I.register(\"textarea\",re,\"textarea\");const ne=[\"value\"];re.register(\"tinymce\",class extends re{configure(){if(this.js=[],window.tinymce||this.js.push(\"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=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,r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,ne);return delete r.type,this.field=this.markup(\"textarea\",this.parsedHtml(t),r),r.disabled&&(this.editorOptions.readonly=!0),this.field}onRender(){const e=window.tinymce.get(this.id);e&&window.tinymce.remove(e);const t=jQuery.extend(this.editorOptions,this.classConfig);t.target=this.field;const r=[];Number(window.tinymce.majorVersion)>=5&&r.push(\"contextmenu\"),Number(window.tinymce.majorVersion)>=6&&r.push(\"paste\",\"print\"),t.plugins=t.plugins.filter((e=>-1===r.indexOf(e)));const n=this.config.userData?this.parsedHtml(this.config.userData[0]):void 0,o=window.lastFormBuilderCopiedTinyMCE?this.parsedHtml(window.lastFormBuilderCopiedTinyMCE):void 0;window.lastFormBuilderCopiedTinyMCE=null;const i=function(e){o?e[0].setContent(o):n&&e[0].setContent(n)};setTimeout((()=>{window.tinymce.init(t).then(i)}),0)}},\"textarea\");const oe=[\"value\"];function ie(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function se(e){for(var t=1;t=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,oe);return delete r.type,this.field=this.markup(\"div\",null,r),this.field.classList.contains(\"form-control\")&&this.field.classList.remove(\"form-control\"),this.field}onRender(e){const t=this.config.value||\"\",r=window.Quill.import(\"delta\");window.fbEditors.quill[this.id]={};const n=window.fbEditors.quill[this.id];return n.instance=new window.Quill(this.field,this.editorConfig),n.data=new r,t&&n.instance.setContents(window.JSON.parse(this.parsedHtml(t))),n.instance.on(\"text-change\",(function(e){n.data=n.data.compose(e)})),e}},\"textarea\"),r().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\",allowSelect:\"Allow selection\",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\",reset:\"Reset\",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\",sizes:\"Sizes\",\"size.xs\":\"Extra Small\",\"size.sm\":\"Small\",\"size.m\":\"Default\",\"size.lg\":\"Large\",step:\"Step\",style:\"Style\",styles:\"Styles\",\"styles.btn\":\"Button Styles\",\"styles.btn.default\":\"Default\",\"styles.btn.danger\":\"Danger\",\"styles.btn.info\":\"Info\",\"styles.btn.primary\":\"Primary\",\"styles.btn.success\":\"Success\",\"styles.btn.warning\":\"Warning\",submit:\"Submit\",subtype:\"Type\",text:\"Text Field\",textArea:\"Text Area\",toggle:\"Toggle\",warning:\"Warning!\",value:\"Value\",viewJSON:\"[{…}]\",viewXML:\"</>\",yes:\"Yes\"});const le={location:\"assets/lang/\"};n(700);class de{constructor(e={},t=[]){this.customRegister={},this.templateControlRegister={},this.def={icon:{},i18n:{}},this.register(e,t)}register(e={},t=[]){const n=r().locale;this.def.i18n[n]||(this.def.i18n[n]={});const o=this;Object.keys(e).forEach((t=>{const r=function(r,n){this.customControl=new W(r,n,e[t]),this.build=function(){return this.customControl.build()},this.on=function(e){return this.customControl.on(e)}};r.definition={},r.label=e=>o.label(e),r.icon=e=>o.icon(e),this.templateControlRegister[t]=r}));for(const o of t){let t=o.type;if(o.attrs=o.attrs||{},!t){if(!o.attrs.type){I.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=this.templateControlRegister[t];e.definition=o,this.customRegister[i]=jQuery.extend(o,{type:t,class:e})}else try{const e=I.getClass(t,o.subtype);i=o.datatype?o.datatype:`${t}-${Math.floor(9e3*Math.random()+1e3)}`,this.customRegister[i]=jQuery.extend(o,{type:t,class:e})}catch(e){I.error(\"Error while registering custom field: \"+t+(o.subtype?\":\"+o.subtype:\"\")+\". Unable to find any existing defined control or template for rendering.\")}this.def.i18n[n][i]=Array.isArray(o.label)?r().get(...o.label)||o.label[0]:o.label,this.def.icon[i]=o.icon}}label(e){const t=this.def;let n=t.i18n||{};n=n[r().locale]||n.default||n;const o=I.camelCase(e),i=\"object\"==typeof n?n[o]||n[e]:n;if(i)return i;{let n=t.mi18n;return\"object\"==typeof n&&(n=n[o]||n[e]),n||(n=o),r().get(n)}}get definition(){return{}}icon(e){const t=this.def;return t&&\"object\"==typeof t.icon?t.icon[e]:t.icon}getRegistered(e=!1){var t;return e?null!==(t=this.templateControlRegister[e])&&void 0!==t?t:void 0:Object.keys(this.customRegister)}getClass(e){var t;return null!==(t=this.templateControlRegister[e])&&void 0!==t?t:void 0}lookup(e){return this.customRegister[e]}}class ce{constructor(e={}){const t={layout:V,layoutTemplates:{},controls:{},controlConfig:{},container:!1,dataType:\"json\",disableHTMLLabels:!1,formData:[],i18n:Object.assign({},le),messages:{formRendered:\"Form Rendered\",noFormData:\"No form data.\",other:\"Other\",selectColor:\"Select Color\",invalidControl:\"Invalid control\"},onRender:()=>{},render:!0,sanitizerOptions:{clobberingProtection:{document:!0,form:!1,namespaceAttributes:!0},backendOrder:[\"dompurify\",\"sanitizer\",\"fallback\"]},templates:{},notify:{error:e=>{console.log(e)},success:e=>{console.log(e)},warning:e=>{console.warn(e)}}};this.options=jQuery.extend(!0,t,e),this.instanceContainers=[],(e=>{if(\"object\"!=typeof e)throw\"Invalid value given to setSanitizerConfig, expected config object\";if(e.hasOwnProperty(\"clobberingProtection\")&&[\"document\",\"form\",\"namespaceAttributes\"].forEach((t=>{e.clobberingProtection.hasOwnProperty(t)&&\"boolean\"==typeof e.clobberingProtection[t]&&(o.clobberingProtection[t]=e.clobberingProtection[t])})),e.hasOwnProperty(\"backends\")){if(\"object\"!=typeof e.backends)throw\"backends config expected to be an Object\";Object.keys(e.backends).forEach((t=>o.backends[t]=e.backends[t]))}if(e.hasOwnProperty(\"backendOrder\")){if(o.backendOrder=[],!Array.isArray(e.backendOrder))throw\"backendOrder config expected to be an Array of backend keys as strings\";e.backendOrder.forEach((e=>{if(!o.backends.hasOwnProperty(e))throw\"unknown sanitizer backend \"+e;o.backendOrder.push(e)}))}})(this.options.sanitizerOptions),r().current||r().init(this.options.i18n),this.options.formData?this.options.formData=this.parseFormData(this.options.formData):this.options.formData=[],I.controlConfig=e.controlConfig||{},I.loadCustom(e.controls),this.templatedControls=new de(this.options.templates),\"function\"!=typeof Element.prototype.appendFormFields&&(Element.prototype.appendFormFields=function(e){Array.isArray(e)||(e=[e]);const t=z.markup(\"div\",e,{className:\"rendered-form formbuilder-embedded-bootstrap\"});this.appendChild(t),e.forEach((e=>{const[r]=e.className.match(/row-([^\\s]+)/)||[];if(r){const n=this.id?`${this.id}-row-${r}`:`row-${r}`;let o=document.getElementById(n);o||(o=z.markup(\"div\",null,{id:n,className:\"row\"}),t.appendChild(o)),o.appendChild(e)}else t.appendChild(e);e.dispatchEvent($.fieldRendered)}))}),\"function\"!=typeof Element.prototype.emptyContainer&&(Element.prototype.emptyContainer=function(){const e=this;for(;e.lastChild;)e.removeChild(e.lastChild)})}sanitizeField(e,t){let r=Object.assign({},e);return t&&(r.id=e.id&&`${e.id}-${t}`,r.name=e.name&&`${e.name}-${t}`),r.className=Array.isArray(e.className)?z.unique(e.className.join(\" \").split(\" \")).join(\" \"):e.className||e.class||null,delete r.class,e.values&&(r.values=e.values.map((e=>z.trimObj(e)))),r=z.trimObj(r),Array.isArray(e.userData)&&0===e.userData.length&&(r.userData=[]),r}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 r=this,n=this.options;e=this.getElement(e);const o=[],i=new n.layout(n.layoutTemplates,!1,n.disableHTMLLabels,n.controlConfig);if(n.formData.length)for(let e=0;ee.map((e=>e.innerHTML)).join(\"\");r.markup=e(o)}if(!0===n.disableInjectedStyle){const e=document.getElementsByClassName(\"formBuilder-injected-style\");L(e,(t=>(e=>{e.parentNode&&e.parentNode.removeChild(e)})(e[t])))}else\"bootstrap\"===n.disableInjectedStyle&&n.render&&e&&e.getElementsByClassName(\"formbuilder-embedded-bootstrap\").item(0)?.classList.remove(\"formbuilder-embedded-bootstrap\");return r}renderControl(e=null){const t=this.options,r=t.formData;if(!r||Array.isArray(r))throw new Error(\"To render a single element, please specify a single object of formData for the field in question\");const n=this.sanitizeField(r),o=new t.layout,i=this.templatedControls.getClass(r.type)||I.getClass(r.type,r.subtype),s=t.forceTemplate||\"hidden\",a=o.build(i,n,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((r=>{const n=e(\"select, input, textarea\",r).serializeArray().reduce(((e,{name:t,value:r})=>(e[t=t.replace(\"[]\",\"\")]?e[t].push(r):e[t]=[r],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){const t={xml:e=>S(e),json:e=>window.JSON.parse(e)};return\"object\"!=typeof e&&(e=t[this.options.dataType](e)||!1),e}}!function(e){let t;const r={init:(e,n={})=>(t=e,r.instance=new ce(n),e.each((t=>r.instance.render(e[t],t))),r.instance),userData:()=>r.instance&&r.instance.userData,clear:()=>r.instance&&r.instance.clear(),setData:e=>{if(r.instance){const t=r.instance;t.options.formData=t.parseFormData(e)}},render:(e,n={})=>{if(r.instance){const o=r.instance;e||(e=o.options.formData),o.options=Object.assign({},o.options,n,{formData:o.parseFormData(e)}),t.each((e=>r.instance.render(t[e],e)))}},html:()=>t.map((e=>t[e])).html()};e.fn.formRender=function(e={},...t){if(r[e])return r[e].apply(this,t);{const t=r.init(this,e);return Object.assign(r,t),t}},e.fn.controlRender=function(e,t={}){t.formData=e,t.dataType=\"string\"==typeof e?\"json\":\"xml\";const r=new ce(t),n=this;return n.each((e=>r.renderControl(n[e]))),n}}(jQuery)}()}()}(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 v5.1.2 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) { cells.shift(); }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkDeprecations(opt, callback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => { return { text: c }; }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\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 *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\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{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', 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.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\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 = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...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 heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\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)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\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', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\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 .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\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 = {\n ...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~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '