form-cheatsheet/js/index.min.js.map

1 line
42 KiB
Plaintext

{"version":3,"file":null,"sources":["../src/functions.js","../src/DlHighlight/highlight-xml-html.js","../src/doc.js","../src/format.js","../src/form-elements-each.js","../src/index.js"],"sourcesContent":["/**\n * Helper functions\n */\n\nimport DlHighlight from './DlHighlight/highlight-xml-html';\n\n/**\n * Returns the final segment of a string split by the specified\n * separator character(s)\n *\n * @param {string} str\n * @param {string} separator\n * @returns {string}\n */\nexport function basename(str, separator=\"/\") {\n\treturn str.substr(str.lastIndexOf(separator) + 1);\n}\n\n/**\n * Do multiple string replacements with a mapping array\n *\n * @param {string} str - The string to modify\n * @param {string[][]} replacements - map [search, replacement]\n * @return {string}\n */\nexport function replaceMultiple(str, replacements) {\n\tlet output = str;\n\n\treplacements.forEach(pair => {\n\t\toutput = output.replace(pair[0], pair[1]);\n\t});\n\n\treturn output;\n}\n\n/**\n * Highlight HTML code\n *\n * @param {string} html\n * @return {string}\n */\nexport function highlightHtml(html) {\n\treturn (new DlHighlight({lang: 'html'})).doItNow(html);\n}\n\n/**\n * Function : dump()\n * Arguments: The data - array,hash(associative array),object\n * The level - OPTIONAL\n * Returns : The textual representation of the array.\n * This function was inspired by the print_r function of PHP.\n * This will accept some data as the argument and return a\n * text that will be a more readable version of the\n * array/hash/object that is given.\n * Docs: http://www.openjs.com/scripts/others/dump_function_php_print_r.php\n */\nexport function dump(arr, level = 0) {\n\tlet dumped_text = \"\";\n\n\t//The padding given at the beginning of the line.\n\tlet level_padding = \"\";\n\tfor(let j=0;j<level+1;j++) level_padding += \" \";\n\n\tif(typeof(arr) == 'object') { //Array/Hashes/Objects\n\t\tfor(let item in arr) {\n\t\t\tconst value = arr[item];\n\n\t\t\tif(typeof(value) == 'object') { //If it is an array,\n\t\t\t\tdumped_text += level_padding + \"'\" + item + \"' ...\\n\";\n\t\t\t\tdumped_text += dump(value,level+1);\n\t\t\t} else {\n\t\t\t\tdumped_text += level_padding + \"'\" + item + \"' => \\\"\" + value + \"\\\"\\n\";\n\t\t\t}\n\t\t}\n\t} else { //Stings/Chars/Numbers etc.\n\t\tdumped_text = \"===>\"+arr+\"<===(\"+typeof(arr)+\")\";\n\t}\n\treturn dumped_text;\n}\n\n/**\n * Default export map\n */\nexport default {\n\tbasename: basename,\n\tdump: dump,\n\thighlightHtml: highlightHtml,\n\treplaceMultiple: replaceMultiple\n};","/**************\\\n * ____ _____\n * DlHighlight -- a JavaScript-based syntax highlighting engine. \\ /_ / /\n * \\ / / /\n * Author: Mihai Bazon, http://mihai.bazon.net/blog \\/ /_ /\n * Copyright: (c) Dynarch.com 2007. All rights reserved. \\ / /\n * http://www.dynarch.com/ / /\n * \\/\n *\n * This program is free software; you can redistribute it and/or modify it\n * under the terms of the GNU General Public License as published by the Free\n * Software Foundation; either version 2 of the License, or (at your option)\n * any later version.\n *\n * This program is distributed in the hope that it will be useful, but WITHOUT\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\n * more details.\n *\n * You should have received a copy of the GNU General Public License along\n * with this program; if not, write to the Free Software Foundation, Inc., 51\n * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n \\******************************************************************************/\n\n\n/*\n *\n * This thing only cares to colorize a piece of text. It has nothing to do\n * with the DOM, with reading existing text from the DOM and to insert the\n * formatted code back. This facility is present in helpers.js.\n *\n * Assuming the unformatted code is in the \"code\" variable, use DlHighlight\n * this way:\n *\n * var hl = new DlHighlight({ lang : \"js\",\n * lineNumbers : true });\n *\n * formatted = hl.doItNow(code);\n *\n * Now you have in \"formatted\" the colored version.\n *\n * Supported parameters are:\n *\n * - \"lang\" (required) to declare the language\n * - \"lineNumbers\" (optional) if you want line numbers\n * - \"showWhitespace\" (optional) if you want to display whitespace\n * in strings as underscores\n * - \"noTrim\" (optional) pass *true* if you want not to ignore empty\n * newlines at the end of the code\n *\n */\n\nvar DlHighlight = (function(){\n\n\tvar H = function(args) {\n\t\tvar self = this;\n\t\tthis.args = {};\n\t\tfunction D(name, val) {\n\t\t\tif (name in args)\n\t\t\t\tval = args[name];\n\t\t\tself.args[name] = val;\n\t\t}\n\t\tD(\"replaceTabs\", null);\n\t\tD(\"lineNumbers\", false);\n\t\tD(\"noTrim\", false);\n\t\tD(\"showWhitespace\", false);\n\t\tvar lang = this.lang = H.LANG[args.lang];\n\t\tthis.tokenParsers = lang.tokens.slice(0).reverse();\n\t\tif (this.args.replaceTabs != null) {\n\t\t\tvar tab = \" \";\n\t\t\twhile (--this.args.replaceTabs > 0)\n\t\t\t\ttab += \"&nbsp;\";\n\t\t\tthis.args.replaceTabs = tab;\n\t\t}\n\t};\n\n\tH.is_ie = /MSIE/.test(navigator.userAgent) && !/Gecko|KHTML|Opera/.test(navigator.userAgent);\n\n\t// definitions useful for most languages out there\n\tH.BASE = {\n\n\t\tCOMMENT_CPP : function(txt) {\n\t\t\tif (txt.charAt(0) == \"/\" && txt.charAt(1) == \"/\") {\n\t\t\t\tvar nl = txt.indexOf(\"\\n\");\n\t\t\t\tif (nl == -1)\n\t\t\t\t\tnl = txt.length;\n\t\t\t\tvar c = this.lang.onComment.call(this, this._he(txt.substring(2, nl)));\n\t\t\t\treturn {\n\t\t\t\t\tcontent\t: { escaped: c },\n\t\t\t\t\tstyle\t: \"comment comment-line\",\n\t\t\t\t\ttype\t: \"comment\",\n\t\t\t\t\tindex\t: nl,\n\t\t\t\t\tbefore\t: \"//\"\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\n\t\tCOMMENT_C : function(txt) {\n\t\t\tif (txt.charAt(0) == \"/\" && txt.charAt(1) == \"*\") {\n\t\t\t\tvar nl = txt.indexOf(\"*/\"), c, index = nl;\n\t\t\t\tif (nl == -1)\n\t\t\t\t\tnl = index = txt.length;\n\t\t\t\telse\n\t\t\t\t\tindex += 2;\n\t\t\t\tc = this.lang.onComment.call(this, this._he(txt.substring(2, nl)));\n\t\t\t\tc = c.replace(/^\\s*[*\\\\|]+/mg, function(s) {\n\t\t\t\t\treturn \"<span class='before'>\" + s + \"</span>\";\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tcontent\t: { escaped: c },\n\t\t\t\t\tbefore\t: \"/*\",\n\t\t\t\t\tafter\t: \"*/\",\n\t\t\t\t\tindex\t: index,\n\t\t\t\t\tstyle\t: \"comment comment-multiline\",\n\t\t\t\t\ttype\t: \"comment\"\n\t\t\t\t};\n\n\t\t\t}\n\t\t},\n\n\t\tSTRING : {\n\t\t\tregexp\t: /^(\\x22(\\\\.|[^\\x22\\\\])*\\x22|\\x27(\\\\.|[^\\x27\\\\])*\\x27)/g,\n\t\t\tcontent\t: function(m) {\n\t\t\t\tm = m[1];\n\t\t\t\tm = m.substr(1, m.length - 2);\n\t\t\t\tif (this.args.showWhitespace)\n\t\t\t\t\tm = m.replace(/\\x20/g, \"_\");\n\t\t\t\treturn m;\n\t\t\t},\n\t\t\tbefore : function(m) { return m[1].charAt(0); },\n\t\t\tafter : function(m) { return m[1].charAt(0); },\n\t\t\ttype\t: \"string\",\n\t\t\tstyle\t: \"string\"\n\t\t},\n\n\t\tPAREN : {\n\t\t\tregexp\t: /^[\\](){}\\[]/g,\n\t\t\tcontent\t: 0,\n\t\t\ttype\t: \"paren\",\n\t\t\tstyle\t: \"paren\"\n\t\t},\n\n\t\tOPERATOR : function(txt) {\n\t\t\tvar m = /^[<>!+=%&*\\x2f|?:-]+/.exec(txt);\n\t\t\tif (m && m[0] != \"!/\") return {\n\t\t\t\tcontent\t: m[0],\n\t\t\t\tindex : m.lastIndex,\n\t\t\t\ttype\t: \"operator\",\n\t\t\t\tstyle\t: \"operator\"\n\t\t\t};\n\t\t}\n\n\t};\n\n\tH.prototype = {\n\n\t\tformatToken : function(tok) {\n\t\t\tvar cls = tok.style, html = buffer();\n\t\t\tif (cls instanceof Array)\n\t\t\t\tcls = cls.join(\" \");\n\t\t\thtml(\"<span class='\", cls, \"'>\");\n\t\t\tif (tok.before)\n\t\t\t\thtml(\"<span class='before'>\", this._he(tok.before), \"</span>\");\n\t\t\thtml(this._he(tok.content));\n\t\t\tif (tok.after)\n\t\t\t\thtml(\"<span class='after'>\", this._he(tok.after), \"</span>\");\n\t\t\thtml(\"</span>\");\n\t\t\treturn html.get();\n\t\t},\n\n\t\tformatUnknown : function(txt) {\n\t\t\treturn this._he(txt);\n\t\t},\n\n\t\tgetLastToken : function(pos) {\n\t\t\treturn this.tokens[this.tokens.length - (pos || 0) - 1];\n\t\t},\n\n\t\tlastTokenType : function(re) {\n\t\t\tvar t = this.getLastToken();\n\t\t\tif (t)\n\t\t\t\treturn re.test(t.type);\n\t\t\treturn false;\n\t\t},\n\n\t\tparseToken : function(test, code) {\n\t\t\tvar m, tok;\n\t\t\tif (test.regexp) {\n\t\t\t\ttest.regexp.lastIndex = 0;\n\t\t\t\tm = test.regexp.exec(code);\n\t\t\t\tif (m) {\n\t\t\t\t\ttok = { type : test.type,\n\t\t\t\t\t\tstyle : test.style,\n\t\t\t\t\t\tindex : test.regexp.lastIndex\n\t\t\t\t\t};\n\t\t\t\t\treAdd(this, \"before\", m, test, tok);\n\t\t\t\t\treAdd(this, \"after\", m, test, tok);\n\t\t\t\t\treAdd(this, \"content\", m, test, tok);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttok = test.call(this, code);\n\t\t\t}\n\t\t\treturn tok;\n\t\t},\n\n\t\tdoItNow : function(code) {\n\t\t\tthis.lang.start.call(this, code);\n\t\t\tif (!this.args.noTrim)\n\t\t\t\tcode = code.replace(/\\s+$/, \"\");\n\t\t\tvar formatted = [], T = this.tokenParsers, m, unknown, tok, i, f = 0, tokens;\n\t\t\tunknown = \"\";\n\t\t\ttokens = this.tokens = [];\n\t\t\twhile (code.length > 0) {\n\t\t\t\t// jumping whitespace one character at a time\n\t\t\t\t// might eat a lot of time, let's skip it\n\t\t\t\t// quickly\n\t\t\t\tm = /^\\s+/.exec(code);\n\t\t\t\tif (m) {\n\t\t\t\t\tunknown += m[0];\n\t\t\t\t\tcode = code.substr(m[0].length);\n\t\t\t\t}\n\t\t\t\tfor (i = T.length; --i >= 0;) {\n\t\t\t\t\ttok = this.parseToken(T[i], code);\n\t\t\t\t\tif (tok)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (tok) {\n\t\t\t\t\tif (unknown)\n\t\t\t\t\t\tformatted[f++] = unknown;\n\t\t\t\t\tunknown = \"\";\n\t\t\t\t\tif (!(tok instanceof Array))\n\t\t\t\t\t\ttok = [ tok ];\n\t\t\t\t\tvar index = 0;\n\t\t\t\t\ttokens.push.apply(tokens, tok);\n\t\t\t\t\tfor (var j = 0; j < tok.length; ++j) {\n\t\t\t\t\t\tvar t = tok[j];\n\t\t\t\t\t\tformatted[f++] = t;\n\t\t\t\t\t\tindex += getNextIndex(t);\n\t\t\t\t\t}\n\t\t\t\t\tcode = code.substr(index);\n\t\t\t\t} else {\n\t\t\t\t\tunknown += code.charAt(0);\n\t\t\t\t\tcode = code.substr(1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (unknown)\n\t\t\t\tformatted[f++] = unknown;\n\t\t\tfor (i = formatted.length; --i >= 0;) {\n\t\t\t\tf = formatted[i];\n\t\t\t\tif (typeof f == \"string\")\n\t\t\t\t\tformatted[i] = this.formatUnknown(f);\n\t\t\t\telse\n\t\t\t\t\tformatted[i] = this.formatToken(f);\n\t\t\t}\n\t\t\tvar html = formatted.join(\"\");\n\t\t\ti = this.args.lineNumbers;\n\t\t\tif (i) {\n\t\t\t\tif (typeof i != \"number\")\n\t\t\t\t\ti = 0;\n\t\t\t\thtml = html.replace(/^/mg, function() {\n\t\t\t\t\treturn \"<span class='line-numbers'>\" + (++i) + \"</span>\";\n\t\t\t\t});\n\t\t\t\tthis.args.lineNumbers = i;\n\t\t\t}\n\t\t\t// html = html.replace(/\\n/g, \"<br />\");\n\t\t\tthis.lang.stop.call(this);\n\t\t\treturn html;\n\t\t},\n\n\t\t_he : function(str) {\n\t\t\tif (str.escaped)\n\t\t\t\treturn str.escaped;\n\t\t\tstr = str.replace(he_re, function(c) {\n\t\t\t\treturn he_re_val[c];\n\t\t\t});\n\t\t\tif (this.args.replaceTabs)\n\t\t\t\tstr = str.replace(/\\t/g, this.args.replaceTabs);\n\t\t\treturn str;\n\t\t}\n\n\t};\n\n\tvar he_re = /[&<>]/g, he_re_val = {\n\t\t\"&\" : \"&amp;\",\n\t\t\"<\" : \"&lt;\",\n\t\t\">\" : \"&gt;\"\n\t};\n\n\tH.LANG = function(id, tokens) {\n\t\tif (arguments.length > 0) {\n\t\t\tH.LANG[id] = this;\n\t\t\tthis.tokens = tokens;\n\t\t}\n\t};\n\n\tH.registerLang = function(type, tokens) {\n\t\tF.prototype = new H.LANG;\n\t\tF.prototype.constructor = F;\n\t\tfunction F() { H.LANG.call(this, type, tokens); };\n\t\treturn new F();\n\t};\n\n\tvar P = H.LANG.prototype;\n\tP.start = P.stop = function(){};\n\n\tP.onComment = function(c) {\n\t\treturn makeUrls(c);\n\t};\n\n\tfunction makeUrls(s) {\n\t\treturn s.replace(/\\b((https?|ftp):\\x2f\\x2f[^\\s\\x22]+)/g, function(url) {\n\t\t\treturn \"<a href='\" + url + \"'>\" + url + \"</a>\";\n\t\t});\n\t};\n\n\tfunction reAdd(self, c, m, test, tok) {\n\t\tif (test[c] != null) {\n\t\t\tif (typeof test[c] == \"number\") {\n\t\t\t\ttok[c] = m[test[c]];\n\t\t\t} else if (typeof test[c] == \"function\") {\n\t\t\t\ttok[c] = test[c].call(self, m);\n\t\t\t} else {\n\t\t\t\ttok[c] = test[c];\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction getNextIndex(tok) {\n\t\tvar index = tok.index || 0;\n\t\tif (!index) {\n\t\t\t// console.log(\"No index in %s\", tok.style);\n\t\t\tif (tok.before)\n\t\t\t\tindex += tok.before.length;\n\t\t\tif (tok.content)\n\t\t\t\tindex += tok.content.length;\n\t\t\tif (tok.after)\n\t\t\t\tindex += tok.after.length;\n\t\t}\n\t\treturn index;\n\t}\n\n\tvar buffer = H.is_ie\n\t\t? function() {\n\t\tvar a = [], idx = 0, f = function() {\n\t\t\tfor (var i = 0; i < arguments.length; ++i)\n\t\t\t\ta[idx++] = arguments[i];\n\t\t};\n\t\tf.get = function() { return a.join(\"\"); };\n\t\treturn f;\n\t} : function() {\n\t\tvar str = \"\", f = function() {\n\t\t\tstr = str.concat.apply(str, arguments);\n\t\t};\n\t\tf.get = function() { return str; };\n\t\treturn f;\n\t};\n\n/**************\\\n * ____ _____\n * DlHighlight -- a JavaScript-based syntax highlighting engine. \\ /_ / /\n * \\ / / /\n * Author: Mihai Bazon, http://mihai.bazon.net/blog \\/ /_ /\n * Copyright: (c) Dynarch.com 2007. All rights reserved. \\ / /\n * http://www.dynarch.com/ / /\n * \\/\n *\n * This program is free software; you can redistribute it and/or modify it\n * under the terms of the GNU General Public License as published by the Free\n * Software Foundation; either version 2 of the License, or (at your option)\n * any later version.\n *\n * This program is distributed in the hope that it will be useful, but WITHOUT\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\n * more details.\n *\n * You should have received a copy of the GNU General Public License along\n * with this program; if not, write to the Free Software Foundation, Inc., 51\n * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n \\******************************************************************************/\n\n\tvar T = {\n\n\t\tCOMMENT: function(txt) {\n\t\t\tif (txt.indexOf(\"<!--\") == 0) {\n\t\t\t\tvar nl = txt.indexOf(\"--\", 4);\n\t\t\t\tif (nl == -1)\n\t\t\t\t\tnl = txt.length;\n\t\t\t\treturn {\n\t\t\t\t\tbefore\t: \"<!--\",\n\t\t\t\t\tafter\t: \"-->\",\n\t\t\t\t\tcontent\t: txt.substring(4, nl),\n\t\t\t\t\tindex\t: nl + 3,\n\t\t\t\t\ttype\t: \"comment\",\n\t\t\t\t\tstyle\t: \"comment\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tSTRING: function(txt) {\n\t\t\tif (this.inXmlTag)\n\t\t\t\treturn this.parseToken(H.BASE.STRING, txt);\n\t\t},\n\n\t\tATTRIBUTE: function(txt) {\n\t\t\tvar r = null;\n\t\t\tif (this.inXmlTag) {\n\t\t\t\tvar m = /^([a-z0-9_-]+)(\\s*)=/i.exec(txt);\n\t\t\t\tif (m) {\n\t\t\t\t\treturn [ { content : m[1],\n\t\t\t\t\t\tstyle : \"builtin xml-attribute\" },\n\t\t\t\t\t\t{ content : m[2] }, // whitespace\n\t\t\t\t\t\t{ content : \"=\",\n\t\t\t\t\t\t\tstyle : \"operator\" }\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn r;\n\t\t},\n\n\t\tENTITY: {\n\t\t\tregexp\t: /^&(\\w+);/g,\n\t\t\tbefore\t: \"&\",\n\t\t\tafter\t: \";\",\n\t\t\tcontent\t: 1,\n\t\t\ttype\t: \"builtin\",\n\t\t\tstyle\t: \"builtin xml-entity\"\n\t\t},\n\n\t\tSTART_TAG: function(txt) {\n\t\t\tvar m = /^<([a-z0-9_-]+)/i.exec(txt);\n\t\t\tif (m) {\n\t\t\t\tthis.inXmlTag = m[1];\n\t\t\t\treturn [ { content : \"<\",\n\t\t\t\t\tstyle : \"paren xml-tagangle\" },\n\t\t\t\t\t{ content : m[1],\n\t\t\t\t\t\tstyle : \"keyword xml-tag xml-tag-open\" } ];\n\t\t\t}\n\t\t},\n\n\t\tEND_TAG: function(txt) {\n\t\t\tvar m = /^<\\x2f([a-z0-9_-]+)(\\s*>)/i.exec(txt);\n\t\t\tif (m) {\n\t\t\t\treturn [ { content : \"</\",\n\t\t\t\t\tstyle : \"paren xml-tagangle\" },\n\t\t\t\t\t{ content : m[1],\n\t\t\t\t\t\tstyle : \"keyword xml-tag xml-tag-close\" },\n\t\t\t\t\t{ content : m[2],\n\t\t\t\t\t\tstyle : \"paren xml-tagangle\" } ];\n\t\t\t}\n\t\t},\n\n\t\tEND_ANGLE: function(txt) {\n\t\t\tvar m = /^\\x2f?>/.exec(txt);\n\t\t\tif (m) {\n\t\t\t\tthis.inXmlTag = false;\n\t\t\t\treturn {\n\t\t\t\t\tcontent\t: m[0],\n\t\t\t\t\tstyle\t: \"paren xml-tagangle\"\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t};\n\n\tvar lang = H.registerLang(\n\t\t\"xml\", [ T.COMMENT,\n\t\t\tT.STRING,\n\t\t\tT.ATTRIBUTE,\n\t\t\tT.ENTITY,\n\t\t\tT.START_TAG,\n\t\t\tT.END_TAG,\n\t\t\tT.END_ANGLE ]);\n\n\tlang.T = T;\n\n\tlang.start = function() {\n\t\tthis.inXmlTag = false;\n\t};\n\n/**************\\\n * ____ _____\n * DlHighlight -- a JavaScript-based syntax highlighting engine. \\ /_ / /\n * \\ / / /\n * Author: Mihai Bazon, http://mihai.bazon.net/blog \\/ /_ /\n * Copyright: (c) Dynarch.com 2007. All rights reserved. \\ / /\n * http://www.dynarch.com/ / /\n * \\/\n *\n * This program is free software; you can redistribute it and/or modify it\n * under the terms of the GNU General Public License as published by the Free\n * Software Foundation; either version 2 of the License, or (at your option)\n * any later version.\n *\n * This program is distributed in the hope that it will be useful, but WITHOUT\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\n * more details.\n *\n * You should have received a copy of the GNU General Public License along\n * with this program; if not, write to the Free Software Foundation, Inc., 51\n * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n \\******************************************************************************/\n\n// Inherits most parsers from XML, but modifies END_ANGLE to highlight SCRIPT tags\n\n\tvar re_get_script = /([^\\0]*?)<\\x2fscript>/gi;\n\n\tvar xml = H.LANG.xml;\n\n\tfunction END_ANGLE(txt) {\n\t\tvar m = /^\\x2f?>/.exec(txt);\n\t\tif (m) {\n\t\t\tvar tag = this.inXmlTag;\n\t\t\tthis.inXmlTag = false;\n\t\t\tvar tok = [{ content : m[0],\n\t\t\t\tstyle : \"paren xml-tagangle\" }];\n\t\t\tif (/^script$/i.test(tag) && !/><\\x2fscript>/i.test(txt)) {\n\t\t\t\tre_get_script.lastIndex = 1;\n\t\t\t\tvar m = re_get_script.exec(txt);\n\t\t\t\tif (m && m[1] && m.index == 1) {\n\t\t\t\t\tvar code = m[1];\n\t\t\t\t\tvar index = re_get_script.lastIndex - 10;\n\t\t\t\t\tvar js = new H({ lang: \"js\",\n\t\t\t\t\t\tnoTrim: true }).doItNow(code);\n\t\t\t\t\tvar jstok = {\n\t\t\t\t\t\tcontent\t: { escaped: js },\n\t\t\t\t\t\tstyle\t: \"xml-inline-script\",\n\t\t\t\t\t\tindex\t: index\n\t\t\t\t\t};\n\t\t\t\t\ttok.push(jstok);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn tok;\n\t\t}\n\t}\n\n\tH.registerLang(\"html\", [ xml.T.COMMENT,\n\t\txml.T.STRING,\n\t\txml.T.ATTRIBUTE,\n\t\txml.T.ENTITY,\n\t\txml.T.START_TAG,\n\t\txml.T.END_TAG,\n\t\tEND_ANGLE\n\t]);\n\n\treturn H;\n\n})();\n\nexport default DlHighlight;","/**\n * Simple DOM helper methods\n */\nclass Doc {\n\t/**\n\t * Get the list of script elements currently loaded\n\t *\n\t * @return {Element[]}\n\t */\n\tstatic scripts() {\n\t\treturn Array.from(document.scripts);\n\t}\n\t/**\n\t * Search for an HTML element by css selector\n\t *\n\t * @param {string} sel - The css selector\n\t * @param {Element} [context] - An optional parent element to search from\n\t * @return {Element}\n\t */\n\tstatic qs(sel, context = document.documentElement) {\n\t\tif (document.OLD_IE) {\n\t\t\treturn document.documentElement.querySelector.call(context, sel);\n\t\t}\n\n\t\treturn context.querySelector(sel);\n\t}\n\n\t/**\n\t * Get an array of HTML elements by css selector\n\t *\n\t * @param {string} sel - The css selector\n\t * @param {Element} [context] - An optional parent element to search from\n\t * @return {Element[]}\n\t */\n\tstatic qsa(sel, context = document.documentElement) {\n\t\tif (document.OLD_IE) {\n\t\t\treturn Array.from(document.documentElement.querySelectorAll.call(context, sel));\n\t\t}\n\n\t\treturn Array.from(context.querySelectorAll(sel));\n\t}\n\n\t/**\n\t * Get an HTML element by its id attribute\n\t *\n\t * @param {string} id\n\t * @return {Element}\n\t */\n\tstatic getById(id) {\n\t\treturn document.getElementById(id);\n\t}\n\n\t/**\n\t * Get an array of HTML elements by their tag (element) name\n\t *\n\t * @param {string} tagName\n\t * @param {Element} [context] - An optional parent element to search from\n\t * @return {Element[]}\n\t */\n\tstatic getByTag(tagName, context = document.documentElement) {\n\t\treturn Array.from(context.getElementsByTagName(tagName));\n\t}\n}\n\nexport default Doc;\n","// Make sure regex patterns are only parsed once\nconst $whiteSpacePattern = /^\\s+$/ig;\nconst $inputTagPattern = /<(input)(.*?)>/ig;\nconst $optionClosingTagPattern = />(?:\\s+)?<\\/option>/ig;\nconst $htmlAttributeSpacingPattern = /(\\s+)([^in\\s][a-z_\\-]+=(?:\"(?:.*?)\"|[^\"'`=<>\\s]+))/ig;\nconst $labelWrapPattern = /<label.*?>(?:.*?)?(?:\\s+)?(<.*?>)(?:.*?)?(?:\\s+)?<\\/label>/ig;\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\n\nclass Format {\n\t/**\n\t * Format the display of an input element, and align the attributes\n\t * on separate lines\n\t *\n\t * @param {HTMLInputElement} formElement\n\t * @return {string}\n\t */\n\tstatic input(formElement) {\n\t\t// Let's do some ugly DOM manipulation to make the output of the\n\t\t// highlighted have lined up attributes.\n\t\t// For the spacing, we replace normal whitespace characters with\n\t\t// {x} placeholders so the highlighter doesn't mangle them\n\t\tconst formElementSpaces = '{s}'.repeat(formElement.tagName.length + 2);\n\t\tconst formElementReplace = '{n}' + formElementSpaces;\n\t\treturn formElement.outerHTML\n\t\t\t.trim()\n\t\t\t.replace($inputTagPattern, `<$1$2 />`)\n\t\t\t.replace($htmlAttributeSpacingPattern, formElementReplace + '$2');\n\t}\n\n\t/**\n\t * Format the display of an option element\n\t *\n\t * @param {HTMLOptionElement} formElement\n\t * @return {string}\n\t */\n\tstatic option(formElement) {\n\t\tlet raw = Format.generic(formElement);\n\n\t\tif (Format.hasHtmlChildren(formElement) && formElement.childNodes.length > 0) {\n\t\t\treturn raw;\n\t\t}\n\n\t\traw = raw.replace($whiteSpacePattern, '');\n\t\treturn raw.replace($optionClosingTagPattern, ' />');\n\t}\n\n\t/**\n\t * Format the display of elements without specific formatting methods\n\t *\n\t * @param {HTMLElement} formElement\n\t * @return {string}\n\t */\n\tstatic generic(formElement) {\n\t\treturn formElement.outerHTML.trim();\n\t}\n\n\t/**\n\t * Format the current element\n\t *\n\t * @param {HTMLElement} formElement\n\t * @param {number} i\n\t * @return string\n\t */\n\tstatic formatElement(formElement, i) {\n\t\tconst elementPrefix = (i > 0)\n\t\t\t? '{n}' + '{t}'.repeat(i)\n\t\t\t: '';\n\n\t\tconst formattingMethods = ['input', 'option'];\n\n\t\t// Attempt to indent text nodes\n\t\tif (formElement.nodeType === TEXT_NODE) {\n\t\t\t//alert('Attempting to format a text node');\n\t\t\treturn elementPrefix + formElement.nodeValue;\n\t\t} else if (formElement.nodeType === ELEMENT_NODE) {\n\t\t\tconst tagName = formElement.nodeName.toLowerCase();\n\t\t\tconst formattingMethod = (formattingMethods.includes(tagName))\n\t\t\t\t? Format[tagName]\n\t\t\t\t: Format.generic;\n\n\t\t\treturn elementPrefix + formattingMethod(formElement);\n\t\t} else if (formElement.nodeValue) {\n\t\t\talert('What am I?');\n\t\t\treturn formElement.nodeValue;\n\t\t}\n\n\t\tconsole.error('Empty form element :(');\n\t\tconsole.error(formElement);\n\t}\n\n\t/**\n\t * Format a label-wrapped element\n\t *\n\t * @param {HTMLElement} formElement\n\t * @returns {string}\n\t */\n\tstatic formatLabelWrappedElement(formElement) {\n\t\treturn formElement.outerHTML + '{n}';\n\t}\n\n\t/**\n\t * Check whether an element has an other elements as children\n\t *\n\t * @param {HTMLElement} element\n\t * @return {boolean}\n\t */\n\tstatic hasHtmlChildren(element) {\n\t\tconst numChildren = element.childNodes.length;\n\t\tfor (let x = 0; x < numChildren; x++) {\n\t\t\tconst node = element.childNodes.item(x);\n\n\t\t\t// Only count as a child if the node is an element\n\t\t\tif (node.nodeType === ELEMENT_NODE) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Recursively format the form elements for better alignment\n\t *\n\t * @param {HTMLElement} formElement\n\t * @param {number} level\n\t * @return {string}\n\t */\n\tstatic formatHtml(formElement, level = 0) {\n\t\tconst hasChildren = Format.hasHtmlChildren(formElement);\n\t\tconst isLabelWrapped = Format.isLabelWrapped(formElement);\n\n\t\tlet formattedHTML = (isLabelWrapped)\n\t\t\t? Format.formatLabelWrappedElement(formElement)\n\t\t\t: Format.formatElement(formElement, level);\n\n\t\t// If there are no children, just return the formatted element\n\t\tif (!hasChildren) {\n\t\t\treturn formattedHTML;\n\t\t}\n\n\t\tlet children = Array.from(formElement.childNodes);\n\t\tconst rawChildren = formElement.innerHTML;\n\n\t\t// Discard text nodes if they only contain whitespace\n\t\tchildren = children.filter(node => (!(node.nodeType === TEXT_NODE || $whiteSpacePattern.test(node.nodeValue))));\n\n\t\tlevel++;\n\t\tlet newChildrenHTML = children.reduce((prevHTML, node) => {\n\t\t\treturn prevHTML + Format.formatHtml(node, level);\n\t\t}, '');\n\n\n\t\t// Format those closing tags\n\t\tif (level > 0 && hasChildren) {\n\t\t\tnewChildrenHTML += '{n}' + '{t}'.repeat(level - 1);\n\t\t}\n\n\t\tformattedHTML = formattedHTML.replace(rawChildren, newChildrenHTML);\n\n\t\treturn formattedHTML;\n\t}\n\n\t/**\n\t * Check whether an element\n\t *\n\t * @param {Element|Element[]} labelElements\n\t * @returns {boolean}\n\t */\n\tstatic isLabelWrapped(labelElements) {\n\t\tif (labelElements.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst labelElement = (Array.isArray(labelElements))\n\t\t\t? labelElements[0]\n\t\t\t: labelElements;\n\n\t\treturn $labelWrapPattern.test(labelElement.outerHTML);\n\t}\n}\n\nexport default Format;\n","import Doc from './doc';\nimport Format from './format';\nimport {highlightHtml, replaceMultiple} from './functions';\n\nconst $newLinePattern = /\\{n}/g;\nconst $spacePattern = /\\{s}/g;\nconst $tabPattern = /\\{t}/g;\n\n/**\n * Callback for form element iteration\n *\n * Formats each form element section\n *\n * @param {Element} parent\n */\nconst each = parent => {\n\t// Get the elements required to display\n\tconst labelElements = Doc.getByTag('label', parent);\n\tconst formElements = [].concat(\n\t\tDoc.getByTag('input', parent),\n\t\tDoc.getByTag('button', parent),\n\t\tDoc.getByTag('textarea', parent),\n\t\tDoc.getByTag('select', parent),\n\t\tDoc.getByTag('datalist', parent),\n\t\tDoc.getByTag('keygen', parent),\n\t\tDoc.getByTag('meter', parent),\n\t\tDoc.getByTag('output', parent),\n\t\tDoc.getByTag('progress', parent)\n\t);\n\n\t// If the required elements do not exist, bail out early\n\tif (!(Array.isArray(formElements)) && labelElements != null) {\n\t\tconsole.error('Missing required elements. {}', parent);\n\t\treturn;\n\t}\n\n\tlet labelHTML = '';\n\tlet formElementHTML = '';\n\n\tif (Format.isLabelWrapped(labelElements)) {\n\t\t// If there are labels wrapping the form elements, treat them\n\t\t// a little differently.\n\t\t// Since the elements are wrapped in labels, the label elements are what we want\n\t\t// to work with.\n\t\tlabelElements.forEach(element => {\n\t\t\tformElementHTML += Format.formatLabelWrappedElement(element);\n\t\t});\n\t} else {\n\t\tlabelHTML = Format.formatHtml(labelElements[0], 0);\n\n\t\tformElements.forEach(formElement => {\n\t\t\tformElementHTML += '{n}{n}' + Format.formatHtml(formElement, 0);\n\t\t});\n\t}\n\n\t// Join the label markup with the form element markup\n\tconst formCode = labelHTML + formElementHTML.trim();\n\n\t// Now replace the placeholders with proper whitespace equivalent markup\n\t// Setup up the highlighter\n\tlet highLighted = highlightHtml(formCode);\n\thighLighted = replaceMultiple(highLighted, [\n\t\t[$newLinePattern, '<br />'],\n\t\t[$spacePattern, '&nbsp;'],\n\t\t[$tabPattern, '&nbsp;&nbsp;']\n\t]);\n\thighLighted = `<pre>${highLighted}</pre>`;\n\n\t// Piece together the HTML for the prettier HTML examples\n\tconst codeElement = document.createElement('code');\n\tcodeElement.className = 'DlHighlight html';\n\tcodeElement.innerHTML = highLighted;\n\n\t// Append the prettified HTML to the parent element\n\tparent.appendChild(codeElement);\n};\n\nexport default each;","import {basename} from './functions';\nimport each from './form-elements-each';\nimport Doc from './doc';\n\n// Just kill form submission\nDoc.getByTag('form')[0].onsubmit = function (e) {\n\te.preventDefault();\n\te.stopPropagation();\n\n\tconsole.log(`Form 'submit' event fired.`);\n\n\treturn false;\n};\n\n// What polyfills did we have to load?\nconst $polyfillPattern = /\\/polyfills\\//;\nconst scriptList = Doc.scripts().filter(file => {\n\treturn $polyfillPattern.test(file.getAttribute('src'))\n});\nif (scriptList.length > 0) {\n\tconst polyfillList = [];\n\tscriptList.forEach(file => {\n\t\tconst src = file.getAttribute('src');\n\t\tconst name = basename(src).replace('.js', '')\n\t\t\t.replace('.min', '');\n\n\t\tconst el = `<li>${name}</li>`;\n\n\t\tif (!polyfillList.includes(el)) {\n\t\t\tpolyfillList.push(el);\n\t\t}\n\t});\n\n\tconst tag = Doc.getById('polyfills-loaded');\n\ttag.innerHTML = '<h3>Polyfills loaded by this browser:</h3>';\n\ttag.innerHTML += `<ul>${polyfillList.join(\"\\n\")}</ul>`;\n}\n\n// Get each form field's html and syntax highlight it\nDoc.qsa('.form-field').forEach(each);\n\n\n\n"],"names":["basename","str","separator","substr","lastIndexOf","replaceMultiple","replacements","let","output","forEach","pair","replace","highlightHtml","html","DlHighlight","lang","doItNow","makeUrls","s","url","reAdd","self","c","m","test","tok","call","getNextIndex","index","before","length","content","after","END_ANGLE","txt","exec","tag","this","inXmlTag","style","re_get_script","lastIndex","code","js","H","noTrim","jstok","escaped","push","args","D","name","val","LANG","tokenParsers","tokens","slice","reverse","replaceTabs","tab","is_ie","navigator","userAgent","BASE","COMMENT_CPP","charAt","nl","indexOf","onComment","_he","substring","type","COMMENT_C","STRING","regexp","showWhitespace","PAREN","OPERATOR","prototype","formatToken","cls","buffer","Array","join","get","formatUnknown","getLastToken","pos","lastTokenType","re","t","parseToken","start","unknown","i","formatted","T","f","apply","j","lineNumbers","stop","he_re","he_re_val","&","<",">","id","arguments","registerLang","F","constructor","P","a","idx","concat","COMMENT","ATTRIBUTE","r","ENTITY","START_TAG","END_TAG","xml","Doc","scripts","from","document","qs","sel","context","documentElement","OLD_IE","querySelector","qsa","querySelectorAll","getById","getElementById","getByTag","tagName","getElementsByTagName","const","$whiteSpacePattern","$inputTagPattern","$optionClosingTagPattern","$htmlAttributeSpacingPattern","$labelWrapPattern","ELEMENT_NODE","TEXT_NODE","Format","input","formElement","formElementSpaces","repeat","formElementReplace","outerHTML","trim","option","raw","generic","hasHtmlChildren","childNodes","formatElement","elementPrefix","formattingMethods","nodeType","nodeValue","nodeName","toLowerCase","formattingMethod","includes","alert","console","error","formatLabelWrappedElement","element","numChildren","x","node","item","formatHtml","level","hasChildren","isLabelWrapped","formattedHTML","children","rawChildren","innerHTML","filter","newChildrenHTML","reduce","prevHTML","labelElements","labelElement","isArray","$newLinePattern","$spacePattern","$tabPattern","each","parent","formElements","labelHTML","formElementHTML","formCode","highLighted","codeElement","createElement","className","appendChild","onsubmit","e","preventDefault","stopPropagation","log","$polyfillPattern","scriptList","file","getAttribute","polyfillList","src","el"],"mappings":"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"}