{"version":3,"sources":["webpack:///./node_modules/xss/lib/util.js","webpack:///./node_modules/xss/lib/xss.js","webpack:///./node_modules/xss/lib/parser.js","webpack:///./node_modules/xss/lib/index.js","webpack:///./node_modules/xss/lib/default.js"],"names":["module","exports","indexOf","arr","item","i","j","Array","prototype","length","forEach","fn","scope","call","trim","str","String","replace","spaceIndex","match","exec","index","FilterCSS","DEFAULT","parser","parseTag","parseAttr","_","isNull","obj","FilterXSS","options","ret","shallowCopyObject","stripIgnoreTag","onIgnoreTag","console","error","onIgnoreTagStripAll","whiteList","onTag","onTagAttr","onIgnoreTagAttr","safeAttrValue","escapeHtml","this","css","cssFilter","process","html","toString","stripBlankChar","allowCommentTag","stripCommentTag","stripIgnoreTagBody","StripTagBody","retHtml","sourcePosition","position","tag","isClosing","info","isWhite","hasOwnProperty","attrs","closing","slice","getAttrs","whiteAttrList","attrsHtml","name","value","isWhiteAttr","remove","getTagName","tagName","toLowerCase","REGEXP_ILLEGAL_ATTR_NAME","findNextEqual","c","findBeforeEqual","stripQuoteWrap","text","isQuoteWrapString","substr","rethtml","lastPos","tagStart","quoteStart","currentPos","len","currentTagName","currentHtml","charAt","onAttr","retAttrs","tmpName","addAttr","push","test","join","filterXSS","window","self","DedicatedWorkerGlobalScope","getDefaultCSSWhiteList","getDefaultWhiteList","a","abbr","address","area","article","aside","audio","b","bdi","bdo","big","blockquote","br","caption","center","cite","code","col","colgroup","dd","del","details","div","dl","dt","em","font","footer","h1","h2","h3","h4","h5","h6","header","hr","img","ins","li","mark","nav","ol","p","pre","s","section","small","span","sub","sup","strong","table","tbody","td","tfoot","th","thead","tr","tt","u","ul","video","defaultCSSFilter","REGEXP_LT","REGEXP_GT","REGEXP_QUOTE","REGEXP_QUOTE_2","REGEXP_ATTR_VALUE_1","REGEXP_ATTR_VALUE_COLON","REGEXP_ATTR_VALUE_NEWLINE","REGEXP_DEFAULT_ON_TAG_ATTR_4","REGEXP_DEFAULT_ON_TAG_ATTR_7","REGEXP_DEFAULT_ON_TAG_ATTR_8","escapeQuote","unescapeQuote","escapeHtmlEntities","fromCharCode","parseInt","escapeDangerHtml5Entities","clearNonPrintableCharacter","str2","charCodeAt","friendlyAttrValue","escapeAttrValue","STRIP_COMMENT_TAG_REGEXP","lastIndex","tags","next","isRemoveAllTag","isArray","removeList","posStart","isRemoveTag","end","pos","chars","split","filter","char"],"mappings":"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","file":"vendor.xss~663f5c15.57c8c3c85b5b74eaa80d.chunk.js","sourcesContent":["module.exports = {\n indexOf: function(arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function(arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function(str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function(str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n }\n};\n","/**\n * filter xss\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./util\");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n * - {String} html\n * - {Boolean} closing\n */\nfunction getAttrs(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n return {\n html: \"\",\n closing: html[html.length - 2] === \"/\"\n };\n }\n html = _.trim(html.slice(i + 1, -1));\n var isClosing = html[html.length - 1] === \"/\";\n if (isClosing) html = _.trim(html.slice(0, -1));\n return {\n html: html,\n closing: isClosing\n };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n * whiteList, onTag, onTagAttr, onIgnoreTag,\n * onIgnoreTagAttr, safeAttrValue, escapeHtml\n * stripIgnoreTagBody, allowCommentTag, stripBlankChar\n * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n options = shallowCopyObject(options || {});\n\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\n }\n options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n }\n\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onTag = options.onTag || DEFAULT.onTag;\n options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n this.options = options;\n\n if (options.css === false) {\n this.cssFilter = false;\n } else {\n options.css = options.css || {};\n this.cssFilter = new FilterCSS(options.css);\n }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function(html) {\n // compatible with the input\n html = html || \"\";\n html = html.toString();\n if (!html) return \"\";\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onTag = options.onTag;\n var onIgnoreTag = options.onIgnoreTag;\n var onTagAttr = options.onTagAttr;\n var onIgnoreTagAttr = options.onIgnoreTagAttr;\n var safeAttrValue = options.safeAttrValue;\n var escapeHtml = options.escapeHtml;\n var cssFilter = me.cssFilter;\n\n // remove invisible characters\n if (options.stripBlankChar) {\n html = DEFAULT.stripBlankChar(html);\n }\n\n // remove html comments\n if (!options.allowCommentTag) {\n html = DEFAULT.stripCommentTag(html);\n }\n\n // if enable stripIgnoreTagBody\n var stripIgnoreTagBody = false;\n if (options.stripIgnoreTagBody) {\n var stripIgnoreTagBody = DEFAULT.StripTagBody(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n function(sourcePosition, position, tag, html, isClosing) {\n var info = {\n sourcePosition: sourcePosition,\n position: position,\n isClosing: isClosing,\n isWhite: whiteList.hasOwnProperty(tag)\n };\n\n // call `onTag()`\n var ret = onTag(tag, html, info);\n if (!isNull(ret)) return ret;\n\n if (info.isWhite) {\n if (info.isClosing) {\n return \"\";\n }\n\n var attrs = getAttrs(html);\n var whiteAttrList = whiteList[tag];\n var attrsHtml = parseAttr(attrs.html, function(name, value) {\n // call `onTagAttr()`\n var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n var ret = onTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=\"' + value + '\"';\n } else {\n return name;\n }\n } else {\n // call `onIgnoreTagAttr()`\n var ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n return;\n }\n });\n\n // build new tag html\n var html = \"<\" + tag;\n if (attrsHtml) html += \" \" + attrsHtml;\n if (attrs.closing) html += \" /\";\n html += \">\";\n return html;\n } else {\n // call `onIgnoreTag()`\n var ret = onIgnoreTag(tag, html, info);\n if (!isNull(ret)) return ret;\n return escapeHtml(html);\n }\n },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. ''\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n var tagName = html.slice(1, -1);\n } else {\n var tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:''\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"\") {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if ((c === '\"' || c === \"'\") && html.charAt(currentPos - 1) === \"=\") {\n quoteStart = c;\n continue;\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < html.length) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9_:\\.\\-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"use strict\";\n\n var lastPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastPos &&\n (c === '\"' || c === \"'\") &&\n html.charAt(i - 1) === \"=\"\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","/**\n * xss\n *\n * @author Zongmin Lei\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./xss\");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\nfor (var i in parser) exports[i] = parser[i];\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return typeof self !== 'undefined' && typeof DedicatedWorkerGlobalScope !== 'undefined' && self instanceof DedicatedWorkerGlobalScope;\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n","/**\n * default settings\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\"],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n ins: [\"datetime\"],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\", \"height\", \"width\"]\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"<\").replace(REGEXP_GT, \">\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value.substr(0, 11) === \"data:image/\" ||\n value.substr(0, 6) === \"ftp://\" ||\n value.substr(0, 2) === \"./\" ||\n value.substr(0, 3) === \"../\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = //g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /"/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /:?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 = /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 = /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape doube quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \""\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function() {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function(tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function(html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function(pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n }\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n return html.replace(STRIP_COMMENT_TAG_REGEXP, \"\");\n}\nvar STRIP_COMMENT_TAG_REGEXP = //g;\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function(char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n"],"sourceRoot":""}