mirror of https://github.com/vuejs/vue.git
9338 lines
286 KiB
JavaScript
9338 lines
286 KiB
JavaScript
;(function (global, factory) {
|
||
typeof exports === 'object' && typeof module !== 'undefined'
|
||
? factory(exports)
|
||
: typeof define === 'function' && define.amd
|
||
? define(['exports'], factory)
|
||
: ((global =
|
||
typeof globalThis !== 'undefined' ? globalThis : global || self),
|
||
factory((global.VueTemplateCompiler = {})))
|
||
})(this, function (exports) {
|
||
'use strict'
|
||
|
||
var commonjsGlobal =
|
||
typeof globalThis !== 'undefined'
|
||
? globalThis
|
||
: typeof window !== 'undefined'
|
||
? window
|
||
: typeof global !== 'undefined'
|
||
? global
|
||
: typeof self !== 'undefined'
|
||
? self
|
||
: {}
|
||
|
||
var splitRE$1 = /\r?\n/g
|
||
var emptyRE = /^\s*$/
|
||
var needFixRE = /^(\r?\n)*[\t\s]/
|
||
|
||
var deIndent = function deindent(str) {
|
||
if (!needFixRE.test(str)) {
|
||
return str
|
||
}
|
||
var lines = str.split(splitRE$1)
|
||
var min = Infinity
|
||
var type, cur, c
|
||
for (var i = 0; i < lines.length; i++) {
|
||
var line = lines[i]
|
||
if (!emptyRE.test(line)) {
|
||
if (!type) {
|
||
c = line.charAt(0)
|
||
if (c === ' ' || c === '\t') {
|
||
type = c
|
||
cur = count(line, type)
|
||
if (cur < min) {
|
||
min = cur
|
||
}
|
||
} else {
|
||
return str
|
||
}
|
||
} else {
|
||
cur = count(line, type)
|
||
if (cur < min) {
|
||
min = cur
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return lines
|
||
.map(function (line) {
|
||
return line.slice(min)
|
||
})
|
||
.join('\n')
|
||
}
|
||
|
||
function count(line, type) {
|
||
var i = 0
|
||
while (line.charAt(i) === type) {
|
||
i++
|
||
}
|
||
return i
|
||
}
|
||
|
||
var emptyObject = Object.freeze({})
|
||
// These helpers produce better VM code in JS engines due to their
|
||
// explicitness and function inlining.
|
||
function isUndef(v) {
|
||
return v === undefined || v === null
|
||
}
|
||
/**
|
||
* Check if value is primitive.
|
||
*/
|
||
function isPrimitive(value) {
|
||
return (
|
||
typeof value === 'string' ||
|
||
typeof value === 'number' ||
|
||
// $flow-disable-line
|
||
typeof value === 'symbol' ||
|
||
typeof value === 'boolean'
|
||
)
|
||
}
|
||
/**
|
||
* Quick object check - this is primarily used to tell
|
||
* objects from primitive values when we know the value
|
||
* is a JSON-compliant type.
|
||
*/
|
||
function isObject(obj) {
|
||
return obj !== null && typeof obj === 'object'
|
||
}
|
||
/**
|
||
* Get the raw type string of a value, e.g., [object Object].
|
||
*/
|
||
var _toString = Object.prototype.toString
|
||
function toRawType(value) {
|
||
return _toString.call(value).slice(8, -1)
|
||
}
|
||
/**
|
||
* Strict object type check. Only returns true
|
||
* for plain JavaScript objects.
|
||
*/
|
||
function isPlainObject(obj) {
|
||
return _toString.call(obj) === '[object Object]'
|
||
}
|
||
/**
|
||
* Check if val is a valid array index.
|
||
*/
|
||
function isValidArrayIndex(val) {
|
||
var n = parseFloat(String(val))
|
||
return n >= 0 && Math.floor(n) === n && isFinite(val)
|
||
}
|
||
/**
|
||
* Make a map and return a function for checking if a key
|
||
* is in that map.
|
||
*/
|
||
function makeMap(str, expectsLowerCase) {
|
||
var map = Object.create(null)
|
||
var list = str.split(',')
|
||
for (var i = 0; i < list.length; i++) {
|
||
map[list[i]] = true
|
||
}
|
||
return expectsLowerCase
|
||
? function (val) {
|
||
return map[val.toLowerCase()]
|
||
}
|
||
: function (val) {
|
||
return map[val]
|
||
}
|
||
}
|
||
/**
|
||
* Check if a tag is a built-in tag.
|
||
*/
|
||
var isBuiltInTag = makeMap('slot,component', true)
|
||
/**
|
||
* Check if an attribute is a reserved attribute.
|
||
*/
|
||
makeMap('key,ref,slot,slot-scope,is')
|
||
/**
|
||
* Remove an item from an array.
|
||
*/
|
||
function remove(arr, item) {
|
||
if (arr.length) {
|
||
var index = arr.indexOf(item)
|
||
if (index > -1) {
|
||
return arr.splice(index, 1)
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* Check whether an object has the property.
|
||
*/
|
||
var hasOwnProperty = Object.prototype.hasOwnProperty
|
||
function hasOwn(obj, key) {
|
||
return hasOwnProperty.call(obj, key)
|
||
}
|
||
/**
|
||
* Create a cached version of a pure function.
|
||
*/
|
||
function cached(fn) {
|
||
var cache = Object.create(null)
|
||
return function cachedFn(str) {
|
||
var hit = cache[str]
|
||
return hit || (cache[str] = fn(str))
|
||
}
|
||
}
|
||
/**
|
||
* Camelize a hyphen-delimited string.
|
||
*/
|
||
var camelizeRE = /-(\w)/g
|
||
var camelize = cached(function (str) {
|
||
return str.replace(camelizeRE, function (_, c) {
|
||
return c ? c.toUpperCase() : ''
|
||
})
|
||
})
|
||
/**
|
||
* Hyphenate a camelCase string.
|
||
*/
|
||
var hyphenateRE = /\B([A-Z])/g
|
||
var hyphenate = cached(function (str) {
|
||
return str.replace(hyphenateRE, '-$1').toLowerCase()
|
||
})
|
||
/**
|
||
* Mix properties into target object.
|
||
*/
|
||
function extend(to, _from) {
|
||
for (var key in _from) {
|
||
to[key] = _from[key]
|
||
}
|
||
return to
|
||
}
|
||
/* eslint-disable no-unused-vars */
|
||
/**
|
||
* Perform no operation.
|
||
* Stubbing args to make Flow happy without leaving useless transpiled code
|
||
* with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
|
||
*/
|
||
function noop(a, b, c) {}
|
||
/**
|
||
* Always return false.
|
||
*/
|
||
var no = function (a, b, c) {
|
||
return false
|
||
}
|
||
/* eslint-enable no-unused-vars */
|
||
/**
|
||
* Return the same value.
|
||
*/
|
||
var identity = function (_) {
|
||
return _
|
||
}
|
||
/**
|
||
* Generate a string containing static keys from compiler modules.
|
||
*/
|
||
function genStaticKeys$1(modules) {
|
||
return modules
|
||
.reduce(function (keys, m) {
|
||
return keys.concat(m.staticKeys || [])
|
||
}, [])
|
||
.join(',')
|
||
}
|
||
|
||
var isUnaryTag = makeMap(
|
||
'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +
|
||
'link,meta,param,source,track,wbr'
|
||
)
|
||
// Elements that you can, intentionally, leave open
|
||
// (and which close themselves)
|
||
var canBeLeftOpenTag = makeMap(
|
||
'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'
|
||
)
|
||
// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
|
||
// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
|
||
var isNonPhrasingTag = makeMap(
|
||
'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +
|
||
'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +
|
||
'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +
|
||
'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +
|
||
'title,tr,track'
|
||
)
|
||
|
||
/**
|
||
* unicode letters used for parsing html tags, component names and property paths.
|
||
* using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
|
||
* skipping \u10000-\uEFFFF due to it freezing up PhantomJS
|
||
*/
|
||
var unicodeRegExp =
|
||
/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/
|
||
/**
|
||
* Define a property.
|
||
*/
|
||
function def(obj, key, val, enumerable) {
|
||
Object.defineProperty(obj, key, {
|
||
value: val,
|
||
enumerable: !!enumerable,
|
||
writable: true,
|
||
configurable: true
|
||
})
|
||
}
|
||
|
||
/**
|
||
* Not type-checking this file because it's mostly vendor code.
|
||
*/
|
||
// Regular Expressions for parsing tags and attributes
|
||
var attribute =
|
||
/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/
|
||
var dynamicArgAttribute =
|
||
/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/
|
||
var ncname = '[a-zA-Z_][\\-\\.0-9_a-zA-Z'.concat(unicodeRegExp.source, ']*')
|
||
var qnameCapture = '((?:'.concat(ncname, '\\:)?').concat(ncname, ')')
|
||
var startTagOpen = new RegExp('^<'.concat(qnameCapture))
|
||
var startTagClose = /^\s*(\/?)>/
|
||
var endTag = new RegExp('^<\\/'.concat(qnameCapture, '[^>]*>'))
|
||
var doctype = /^<!DOCTYPE [^>]+>/i
|
||
// #7298: escape - to avoid being passed as HTML comment when inlined in page
|
||
var comment = /^<!\--/
|
||
var conditionalComment = /^<!\[/
|
||
// Special Elements (can contain anything)
|
||
var isPlainTextElement = makeMap('script,style,textarea', true)
|
||
var reCache = {}
|
||
var decodingMap = {
|
||
'<': '<',
|
||
'>': '>',
|
||
'"': '"',
|
||
'&': '&',
|
||
' ': '\n',
|
||
'	': '\t',
|
||
''': "'"
|
||
}
|
||
var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g
|
||
var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g
|
||
// #5992
|
||
var isIgnoreNewlineTag = makeMap('pre,textarea', true)
|
||
var shouldIgnoreFirstNewline = function (tag, html) {
|
||
return tag && isIgnoreNewlineTag(tag) && html[0] === '\n'
|
||
}
|
||
function decodeAttr(value, shouldDecodeNewlines) {
|
||
var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr
|
||
return value.replace(re, function (match) {
|
||
return decodingMap[match]
|
||
})
|
||
}
|
||
function parseHTML(html, options) {
|
||
var stack = []
|
||
var expectHTML = options.expectHTML
|
||
var isUnaryTag = options.isUnaryTag || no
|
||
var canBeLeftOpenTag = options.canBeLeftOpenTag || no
|
||
var index = 0
|
||
var last, lastTag
|
||
var _loop_1 = function () {
|
||
last = html
|
||
// Make sure we're not in a plaintext content element like script/style
|
||
if (!lastTag || !isPlainTextElement(lastTag)) {
|
||
var textEnd = html.indexOf('<')
|
||
if (textEnd === 0) {
|
||
// Comment:
|
||
if (comment.test(html)) {
|
||
var commentEnd = html.indexOf('-->')
|
||
if (commentEnd >= 0) {
|
||
if (options.shouldKeepComment) {
|
||
options.comment(
|
||
html.substring(4, commentEnd),
|
||
index,
|
||
index + commentEnd + 3
|
||
)
|
||
}
|
||
advance(commentEnd + 3)
|
||
return 'continue'
|
||
}
|
||
}
|
||
// http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
|
||
if (conditionalComment.test(html)) {
|
||
var conditionalEnd = html.indexOf(']>')
|
||
if (conditionalEnd >= 0) {
|
||
advance(conditionalEnd + 2)
|
||
return 'continue'
|
||
}
|
||
}
|
||
// Doctype:
|
||
var doctypeMatch = html.match(doctype)
|
||
if (doctypeMatch) {
|
||
advance(doctypeMatch[0].length)
|
||
return 'continue'
|
||
}
|
||
// End tag:
|
||
var endTagMatch = html.match(endTag)
|
||
if (endTagMatch) {
|
||
var curIndex = index
|
||
advance(endTagMatch[0].length)
|
||
parseEndTag(endTagMatch[1], curIndex, index)
|
||
return 'continue'
|
||
}
|
||
// Start tag:
|
||
var startTagMatch = parseStartTag()
|
||
if (startTagMatch) {
|
||
handleStartTag(startTagMatch)
|
||
if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {
|
||
advance(1)
|
||
}
|
||
return 'continue'
|
||
}
|
||
}
|
||
var text = void 0,
|
||
rest = void 0,
|
||
next = void 0
|
||
if (textEnd >= 0) {
|
||
rest = html.slice(textEnd)
|
||
while (
|
||
!endTag.test(rest) &&
|
||
!startTagOpen.test(rest) &&
|
||
!comment.test(rest) &&
|
||
!conditionalComment.test(rest)
|
||
) {
|
||
// < in plain text, be forgiving and treat it as text
|
||
next = rest.indexOf('<', 1)
|
||
if (next < 0) break
|
||
textEnd += next
|
||
rest = html.slice(textEnd)
|
||
}
|
||
text = html.substring(0, textEnd)
|
||
}
|
||
if (textEnd < 0) {
|
||
text = html
|
||
}
|
||
if (text) {
|
||
advance(text.length)
|
||
}
|
||
if (options.chars && text) {
|
||
options.chars(text, index - text.length, index)
|
||
}
|
||
} else {
|
||
var endTagLength_1 = 0
|
||
var stackedTag_1 = lastTag.toLowerCase()
|
||
var reStackedTag =
|
||
reCache[stackedTag_1] ||
|
||
(reCache[stackedTag_1] = new RegExp(
|
||
'([\\s\\S]*?)(</' + stackedTag_1 + '[^>]*>)',
|
||
'i'
|
||
))
|
||
var rest = html.replace(reStackedTag, function (all, text, endTag) {
|
||
endTagLength_1 = endTag.length
|
||
if (
|
||
!isPlainTextElement(stackedTag_1) &&
|
||
stackedTag_1 !== 'noscript'
|
||
) {
|
||
text = text
|
||
.replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298
|
||
.replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1')
|
||
}
|
||
if (shouldIgnoreFirstNewline(stackedTag_1, text)) {
|
||
text = text.slice(1)
|
||
}
|
||
if (options.chars) {
|
||
options.chars(text)
|
||
}
|
||
return ''
|
||
})
|
||
index += html.length - rest.length
|
||
html = rest
|
||
parseEndTag(stackedTag_1, index - endTagLength_1, index)
|
||
}
|
||
if (html === last) {
|
||
options.chars && options.chars(html)
|
||
if (!stack.length && options.warn) {
|
||
options.warn(
|
||
'Mal-formatted tag at end of template: "'.concat(html, '"'),
|
||
{
|
||
start: index + html.length
|
||
}
|
||
)
|
||
}
|
||
return 'break'
|
||
}
|
||
}
|
||
while (html) {
|
||
var state_1 = _loop_1()
|
||
if (state_1 === 'break') break
|
||
}
|
||
// Clean up any remaining tags
|
||
parseEndTag()
|
||
function advance(n) {
|
||
index += n
|
||
html = html.substring(n)
|
||
}
|
||
function parseStartTag() {
|
||
var start = html.match(startTagOpen)
|
||
if (start) {
|
||
var match = {
|
||
tagName: start[1],
|
||
attrs: [],
|
||
start: index
|
||
}
|
||
advance(start[0].length)
|
||
var end = void 0,
|
||
attr = void 0
|
||
while (
|
||
!(end = html.match(startTagClose)) &&
|
||
(attr = html.match(dynamicArgAttribute) || html.match(attribute))
|
||
) {
|
||
attr.start = index
|
||
advance(attr[0].length)
|
||
attr.end = index
|
||
match.attrs.push(attr)
|
||
}
|
||
if (end) {
|
||
match.unarySlash = end[1]
|
||
advance(end[0].length)
|
||
match.end = index
|
||
return match
|
||
}
|
||
}
|
||
}
|
||
function handleStartTag(match) {
|
||
var tagName = match.tagName
|
||
var unarySlash = match.unarySlash
|
||
if (expectHTML) {
|
||
if (lastTag === 'p' && isNonPhrasingTag(tagName)) {
|
||
parseEndTag(lastTag)
|
||
}
|
||
if (canBeLeftOpenTag(tagName) && lastTag === tagName) {
|
||
parseEndTag(tagName)
|
||
}
|
||
}
|
||
var unary = isUnaryTag(tagName) || !!unarySlash
|
||
var l = match.attrs.length
|
||
var attrs = new Array(l)
|
||
for (var i = 0; i < l; i++) {
|
||
var args = match.attrs[i]
|
||
var value = args[3] || args[4] || args[5] || ''
|
||
var shouldDecodeNewlines =
|
||
tagName === 'a' && args[1] === 'href'
|
||
? options.shouldDecodeNewlinesForHref
|
||
: options.shouldDecodeNewlines
|
||
attrs[i] = {
|
||
name: args[1],
|
||
value: decodeAttr(value, shouldDecodeNewlines)
|
||
}
|
||
if (options.outputSourceRange) {
|
||
attrs[i].start = args.start + args[0].match(/^\s*/).length
|
||
attrs[i].end = args.end
|
||
}
|
||
}
|
||
if (!unary) {
|
||
stack.push({
|
||
tag: tagName,
|
||
lowerCasedTag: tagName.toLowerCase(),
|
||
attrs: attrs,
|
||
start: match.start,
|
||
end: match.end
|
||
})
|
||
lastTag = tagName
|
||
}
|
||
if (options.start) {
|
||
options.start(tagName, attrs, unary, match.start, match.end)
|
||
}
|
||
}
|
||
function parseEndTag(tagName, start, end) {
|
||
var pos, lowerCasedTagName
|
||
if (start == null) start = index
|
||
if (end == null) end = index
|
||
// Find the closest opened tag of the same type
|
||
if (tagName) {
|
||
lowerCasedTagName = tagName.toLowerCase()
|
||
for (pos = stack.length - 1; pos >= 0; pos--) {
|
||
if (stack[pos].lowerCasedTag === lowerCasedTagName) {
|
||
break
|
||
}
|
||
}
|
||
} else {
|
||
// If no tag name is provided, clean shop
|
||
pos = 0
|
||
}
|
||
if (pos >= 0) {
|
||
// Close all the open elements, up the stack
|
||
for (var i = stack.length - 1; i >= pos; i--) {
|
||
if ((i > pos || !tagName) && options.warn) {
|
||
options.warn(
|
||
'tag <'.concat(stack[i].tag, '> has no matching end tag.'),
|
||
{
|
||
start: stack[i].start,
|
||
end: stack[i].end
|
||
}
|
||
)
|
||
}
|
||
if (options.end) {
|
||
options.end(stack[i].tag, start, end)
|
||
}
|
||
}
|
||
// Remove the open elements from the stack
|
||
stack.length = pos
|
||
lastTag = pos && stack[pos - 1].tag
|
||
} else if (lowerCasedTagName === 'br') {
|
||
if (options.start) {
|
||
options.start(tagName, [], true, start, end)
|
||
}
|
||
} else if (lowerCasedTagName === 'p') {
|
||
if (options.start) {
|
||
options.start(tagName, [], false, start, end)
|
||
}
|
||
if (options.end) {
|
||
options.end(tagName, start, end)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
var splitRE = /\r?\n/g
|
||
var replaceRE = /./g
|
||
var isSpecialTag = makeMap('script,style,template', true)
|
||
/**
|
||
* Parse a single-file component (*.vue) file into an SFC Descriptor Object.
|
||
*/
|
||
function parseComponent(content, options) {
|
||
if (options === void 0) {
|
||
options = {}
|
||
}
|
||
var sfc = {
|
||
template: null,
|
||
script: null,
|
||
styles: [],
|
||
customBlocks: [],
|
||
errors: []
|
||
}
|
||
var depth = 0
|
||
var currentBlock = null
|
||
var warn = function (msg) {
|
||
sfc.errors.push(msg)
|
||
}
|
||
if (options.outputSourceRange) {
|
||
warn = function (msg, range) {
|
||
var data = { msg: msg }
|
||
if (range.start != null) {
|
||
data.start = range.start
|
||
}
|
||
if (range.end != null) {
|
||
data.end = range.end
|
||
}
|
||
sfc.errors.push(data)
|
||
}
|
||
}
|
||
function start(tag, attrs, unary, start, end) {
|
||
if (depth === 0) {
|
||
currentBlock = {
|
||
type: tag,
|
||
content: '',
|
||
start: end,
|
||
attrs: attrs.reduce(function (cumulated, _a) {
|
||
var name = _a.name,
|
||
value = _a.value
|
||
cumulated[name] = value || true
|
||
return cumulated
|
||
}, {})
|
||
}
|
||
if (isSpecialTag(tag)) {
|
||
checkAttrs(currentBlock, attrs)
|
||
if (tag === 'style') {
|
||
sfc.styles.push(currentBlock)
|
||
} else {
|
||
sfc[tag] = currentBlock
|
||
}
|
||
} else {
|
||
// custom blocks
|
||
sfc.customBlocks.push(currentBlock)
|
||
}
|
||
}
|
||
if (!unary) {
|
||
depth++
|
||
}
|
||
}
|
||
function checkAttrs(block, attrs) {
|
||
for (var i = 0; i < attrs.length; i++) {
|
||
var attr = attrs[i]
|
||
if (attr.name === 'lang') {
|
||
block.lang = attr.value
|
||
}
|
||
if (attr.name === 'scoped') {
|
||
block.scoped = true
|
||
}
|
||
if (attr.name === 'module') {
|
||
block.module = attr.value || true
|
||
}
|
||
if (attr.name === 'src') {
|
||
block.src = attr.value
|
||
}
|
||
}
|
||
}
|
||
function end(tag, start) {
|
||
if (depth === 1 && currentBlock) {
|
||
currentBlock.end = start
|
||
var text = content.slice(currentBlock.start, currentBlock.end)
|
||
if (options.deindent !== false) {
|
||
text = deIndent(text)
|
||
}
|
||
// pad content so that linters and pre-processors can output correct
|
||
// line numbers in errors and warnings
|
||
if (currentBlock.type !== 'template' && options.pad) {
|
||
text = padContent(currentBlock, options.pad) + text
|
||
}
|
||
currentBlock.content = text
|
||
currentBlock = null
|
||
}
|
||
depth--
|
||
}
|
||
function padContent(block, pad) {
|
||
if (pad === 'space') {
|
||
return content.slice(0, block.start).replace(replaceRE, ' ')
|
||
} else {
|
||
var offset = content.slice(0, block.start).split(splitRE).length
|
||
var padChar = block.type === 'script' && !block.lang ? '//\n' : '\n'
|
||
return Array(offset).join(padChar)
|
||
}
|
||
}
|
||
parseHTML(content, {
|
||
warn: warn,
|
||
start: start,
|
||
end: end,
|
||
outputSourceRange: options.outputSourceRange
|
||
})
|
||
return sfc
|
||
}
|
||
|
||
// can we use __proto__?
|
||
var hasProto = '__proto__' in {}
|
||
// Browser environment sniffing
|
||
var inBrowser = typeof window !== 'undefined'
|
||
var UA = inBrowser && window.navigator.userAgent.toLowerCase()
|
||
var isIE = UA && /msie|trident/.test(UA)
|
||
UA && UA.indexOf('msie 9.0') > 0
|
||
var isEdge = UA && UA.indexOf('edge/') > 0
|
||
UA && UA.indexOf('android') > 0
|
||
UA && /iphone|ipad|ipod|ios/.test(UA)
|
||
UA && /chrome\/\d+/.test(UA) && !isEdge
|
||
UA && /phantomjs/.test(UA)
|
||
UA && UA.match(/firefox\/(\d+)/)
|
||
// Firefox has a "watch" function on Object.prototype...
|
||
// @ts-expect-error firebox support
|
||
var nativeWatch = {}.watch
|
||
var supportsPassive = false
|
||
if (inBrowser) {
|
||
try {
|
||
var opts = {}
|
||
Object.defineProperty(opts, 'passive', {
|
||
get: function () {
|
||
/* istanbul ignore next */
|
||
supportsPassive = true
|
||
}
|
||
}) // https://github.com/facebook/flow/issues/285
|
||
window.addEventListener('test-passive', null, opts)
|
||
} catch (e) {}
|
||
}
|
||
// this needs to be lazy-evaled because vue may be required before
|
||
// vue-server-renderer can set VUE_ENV
|
||
var _isServer
|
||
var isServerRendering = function () {
|
||
if (_isServer === undefined) {
|
||
/* istanbul ignore if */
|
||
if (!inBrowser && typeof global !== 'undefined') {
|
||
// detect presence of vue-server-renderer and avoid
|
||
// Webpack shimming the process
|
||
_isServer =
|
||
global['process'] && global['process'].env.VUE_ENV === 'server'
|
||
} else {
|
||
_isServer = false
|
||
}
|
||
}
|
||
return _isServer
|
||
}
|
||
/* istanbul ignore next */
|
||
function isNative(Ctor) {
|
||
return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
|
||
}
|
||
var hasSymbol =
|
||
typeof Symbol !== 'undefined' &&
|
||
isNative(Symbol) &&
|
||
typeof Reflect !== 'undefined' &&
|
||
isNative(Reflect.ownKeys)
|
||
/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set));
|
||
else {
|
||
// a non-standard Set polyfill that only works with primitive keys.
|
||
/** @class */ ;(function () {
|
||
function Set() {
|
||
this.set = Object.create(null)
|
||
}
|
||
Set.prototype.has = function (key) {
|
||
return this.set[key] === true
|
||
}
|
||
Set.prototype.add = function (key) {
|
||
this.set[key] = true
|
||
}
|
||
Set.prototype.clear = function () {
|
||
this.set = Object.create(null)
|
||
}
|
||
return Set
|
||
})()
|
||
}
|
||
|
||
var ASSET_TYPES = ['component', 'directive', 'filter']
|
||
var LIFECYCLE_HOOKS = [
|
||
'beforeCreate',
|
||
'created',
|
||
'beforeMount',
|
||
'mounted',
|
||
'beforeUpdate',
|
||
'updated',
|
||
'beforeDestroy',
|
||
'destroyed',
|
||
'activated',
|
||
'deactivated',
|
||
'errorCaptured',
|
||
'serverPrefetch'
|
||
]
|
||
|
||
var config = {
|
||
/**
|
||
* Option merge strategies (used in core/util/options)
|
||
*/
|
||
// $flow-disable-line
|
||
optionMergeStrategies: Object.create(null),
|
||
/**
|
||
* Whether to suppress warnings.
|
||
*/
|
||
silent: false,
|
||
/**
|
||
* Show production mode tip message on boot?
|
||
*/
|
||
productionTip: 'development' !== 'production',
|
||
/**
|
||
* Whether to enable devtools
|
||
*/
|
||
devtools: 'development' !== 'production',
|
||
/**
|
||
* Whether to record perf
|
||
*/
|
||
performance: false,
|
||
/**
|
||
* Error handler for watcher errors
|
||
*/
|
||
errorHandler: null,
|
||
/**
|
||
* Warn handler for watcher warns
|
||
*/
|
||
warnHandler: null,
|
||
/**
|
||
* Ignore certain custom elements
|
||
*/
|
||
ignoredElements: [],
|
||
/**
|
||
* Custom user key aliases for v-on
|
||
*/
|
||
// $flow-disable-line
|
||
keyCodes: Object.create(null),
|
||
/**
|
||
* Check if a tag is reserved so that it cannot be registered as a
|
||
* component. This is platform-dependent and may be overwritten.
|
||
*/
|
||
isReservedTag: no,
|
||
/**
|
||
* Check if an attribute is reserved so that it cannot be used as a component
|
||
* prop. This is platform-dependent and may be overwritten.
|
||
*/
|
||
isReservedAttr: no,
|
||
/**
|
||
* Check if a tag is an unknown element.
|
||
* Platform-dependent.
|
||
*/
|
||
isUnknownElement: no,
|
||
/**
|
||
* Get the namespace of an element
|
||
*/
|
||
getTagNamespace: noop,
|
||
/**
|
||
* Parse the real tag name for the specific platform.
|
||
*/
|
||
parsePlatformTagName: identity,
|
||
/**
|
||
* Check if an attribute must be bound using property, e.g. value
|
||
* Platform-dependent.
|
||
*/
|
||
mustUseProp: no,
|
||
/**
|
||
* Perform updates asynchronously. Intended to be used by Vue Test Utils
|
||
* This will significantly reduce performance if set to false.
|
||
*/
|
||
async: true,
|
||
/**
|
||
* Exposed for legacy reasons
|
||
*/
|
||
_lifecycleHooks: LIFECYCLE_HOOKS
|
||
}
|
||
|
||
var warn$2 = noop
|
||
var tip = noop
|
||
var generateComponentTrace // work around flow check
|
||
var formatComponentName
|
||
{
|
||
var hasConsole_1 = typeof console !== 'undefined'
|
||
var classifyRE_1 = /(?:^|[-_])(\w)/g
|
||
var classify_1 = function (str) {
|
||
return str
|
||
.replace(classifyRE_1, function (c) {
|
||
return c.toUpperCase()
|
||
})
|
||
.replace(/[-_]/g, '')
|
||
}
|
||
warn$2 = function (msg, vm) {
|
||
var trace = vm ? generateComponentTrace(vm) : ''
|
||
if (hasConsole_1 && !config.silent) {
|
||
console.error('[Vue warn]: '.concat(msg).concat(trace))
|
||
}
|
||
}
|
||
tip = function (msg, vm) {
|
||
if (hasConsole_1 && !config.silent) {
|
||
console.warn(
|
||
'[Vue tip]: '.concat(msg) + (vm ? generateComponentTrace(vm) : '')
|
||
)
|
||
}
|
||
}
|
||
formatComponentName = function (vm, includeFile) {
|
||
if (vm.$root === vm) {
|
||
return '<Root>'
|
||
}
|
||
var options =
|
||
typeof vm === 'function' && vm.cid != null
|
||
? vm.options
|
||
: vm._isVue
|
||
? vm.$options || vm.constructor.options
|
||
: vm
|
||
var name = options.name || options._componentTag
|
||
var file = options.__file
|
||
if (!name && file) {
|
||
var match = file.match(/([^/\\]+)\.vue$/)
|
||
name = match && match[1]
|
||
}
|
||
return (
|
||
(name ? '<'.concat(classify_1(name), '>') : '<Anonymous>') +
|
||
(file && includeFile !== false ? ' at '.concat(file) : '')
|
||
)
|
||
}
|
||
var repeat_1 = function (str, n) {
|
||
var res = ''
|
||
while (n) {
|
||
if (n % 2 === 1) res += str
|
||
if (n > 1) str += str
|
||
n >>= 1
|
||
}
|
||
return res
|
||
}
|
||
generateComponentTrace = function (vm) {
|
||
if (vm._isVue && vm.$parent) {
|
||
var tree = []
|
||
var currentRecursiveSequence = 0
|
||
while (vm) {
|
||
if (tree.length > 0) {
|
||
var last = tree[tree.length - 1]
|
||
if (last.constructor === vm.constructor) {
|
||
currentRecursiveSequence++
|
||
vm = vm.$parent
|
||
continue
|
||
} else if (currentRecursiveSequence > 0) {
|
||
tree[tree.length - 1] = [last, currentRecursiveSequence]
|
||
currentRecursiveSequence = 0
|
||
}
|
||
}
|
||
tree.push(vm)
|
||
vm = vm.$parent
|
||
}
|
||
return (
|
||
'\n\nfound in\n\n' +
|
||
tree
|
||
.map(function (vm, i) {
|
||
return ''
|
||
.concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2))
|
||
.concat(
|
||
Array.isArray(vm)
|
||
? ''
|
||
.concat(formatComponentName(vm[0]), '... (')
|
||
.concat(vm[1], ' recursive calls)')
|
||
: formatComponentName(vm)
|
||
)
|
||
})
|
||
.join('\n')
|
||
)
|
||
} else {
|
||
return '\n\n(found in '.concat(formatComponentName(vm), ')')
|
||
}
|
||
}
|
||
}
|
||
|
||
var uid = 0
|
||
/**
|
||
* A dep is an observable that can have multiple
|
||
* directives subscribing to it.
|
||
*/
|
||
var Dep = /** @class */ (function () {
|
||
function Dep() {
|
||
this.id = uid++
|
||
this.subs = []
|
||
}
|
||
Dep.prototype.addSub = function (sub) {
|
||
this.subs.push(sub)
|
||
}
|
||
Dep.prototype.removeSub = function (sub) {
|
||
remove(this.subs, sub)
|
||
}
|
||
Dep.prototype.depend = function () {
|
||
if (Dep.target) {
|
||
Dep.target.addDep(this)
|
||
}
|
||
}
|
||
Dep.prototype.notify = function () {
|
||
// stabilize the subscriber list first
|
||
var subs = this.subs.slice()
|
||
for (var i = 0, l = subs.length; i < l; i++) {
|
||
subs[i].update()
|
||
}
|
||
}
|
||
return Dep
|
||
})()
|
||
// The current target watcher being evaluated.
|
||
// This is globally unique because only one watcher
|
||
// can be evaluated at a time.
|
||
Dep.target = null
|
||
|
||
var VNode = /** @class */ (function () {
|
||
function VNode(
|
||
tag,
|
||
data,
|
||
children,
|
||
text,
|
||
elm,
|
||
context,
|
||
componentOptions,
|
||
asyncFactory
|
||
) {
|
||
this.tag = tag
|
||
this.data = data
|
||
this.children = children
|
||
this.text = text
|
||
this.elm = elm
|
||
this.ns = undefined
|
||
this.context = context
|
||
this.fnContext = undefined
|
||
this.fnOptions = undefined
|
||
this.fnScopeId = undefined
|
||
this.key = data && data.key
|
||
this.componentOptions = componentOptions
|
||
this.componentInstance = undefined
|
||
this.parent = undefined
|
||
this.raw = false
|
||
this.isStatic = false
|
||
this.isRootInsert = true
|
||
this.isComment = false
|
||
this.isCloned = false
|
||
this.isOnce = false
|
||
this.asyncFactory = asyncFactory
|
||
this.asyncMeta = undefined
|
||
this.isAsyncPlaceholder = false
|
||
}
|
||
Object.defineProperty(VNode.prototype, 'child', {
|
||
// DEPRECATED: alias for componentInstance for backwards compat.
|
||
/* istanbul ignore next */
|
||
get: function () {
|
||
return this.componentInstance
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
})
|
||
return VNode
|
||
})()
|
||
|
||
/*
|
||
* not type checking this file because flow doesn't play well with
|
||
* dynamically accessing methods on Array prototype
|
||
*/
|
||
var arrayProto = Array.prototype
|
||
var arrayMethods = Object.create(arrayProto)
|
||
var methodsToPatch = [
|
||
'push',
|
||
'pop',
|
||
'shift',
|
||
'unshift',
|
||
'splice',
|
||
'sort',
|
||
'reverse'
|
||
]
|
||
/**
|
||
* Intercept mutating methods and emit events
|
||
*/
|
||
methodsToPatch.forEach(function (method) {
|
||
// cache original method
|
||
var original = arrayProto[method]
|
||
def(arrayMethods, method, function mutator() {
|
||
var args = []
|
||
for (var _i = 0; _i < arguments.length; _i++) {
|
||
args[_i] = arguments[_i]
|
||
}
|
||
var result = original.apply(this, args)
|
||
var ob = this.__ob__
|
||
var inserted
|
||
switch (method) {
|
||
case 'push':
|
||
case 'unshift':
|
||
inserted = args
|
||
break
|
||
case 'splice':
|
||
inserted = args.slice(2)
|
||
break
|
||
}
|
||
if (inserted) ob.observeArray(inserted)
|
||
// notify change
|
||
ob.dep.notify()
|
||
return result
|
||
})
|
||
})
|
||
|
||
var arrayKeys = Object.getOwnPropertyNames(arrayMethods)
|
||
/**
|
||
* Observer class that is attached to each observed
|
||
* object. Once attached, the observer converts the target
|
||
* object's property keys into getter/setters that
|
||
* collect dependencies and dispatch updates.
|
||
*/
|
||
var Observer = /** @class */ (function () {
|
||
function Observer(value) {
|
||
this.value = value
|
||
this.dep = new Dep()
|
||
this.vmCount = 0
|
||
def(value, '__ob__', this)
|
||
if (Array.isArray(value)) {
|
||
if (hasProto) {
|
||
protoAugment(value, arrayMethods)
|
||
} else {
|
||
copyAugment(value, arrayMethods, arrayKeys)
|
||
}
|
||
this.observeArray(value)
|
||
} else {
|
||
this.walk(value)
|
||
}
|
||
}
|
||
/**
|
||
* Walk through all properties and convert them into
|
||
* getter/setters. This method should only be called when
|
||
* value type is Object.
|
||
*/
|
||
Observer.prototype.walk = function (obj) {
|
||
var keys = Object.keys(obj)
|
||
for (var i = 0; i < keys.length; i++) {
|
||
defineReactive(obj, keys[i])
|
||
}
|
||
}
|
||
/**
|
||
* Observe a list of Array items.
|
||
*/
|
||
Observer.prototype.observeArray = function (items) {
|
||
for (var i = 0, l = items.length; i < l; i++) {
|
||
observe(items[i])
|
||
}
|
||
}
|
||
return Observer
|
||
})()
|
||
// helpers
|
||
/**
|
||
* Augment a target Object or Array by intercepting
|
||
* the prototype chain using __proto__
|
||
*/
|
||
function protoAugment(target, src) {
|
||
/* eslint-disable no-proto */
|
||
target.__proto__ = src
|
||
/* eslint-enable no-proto */
|
||
}
|
||
/**
|
||
* Augment a target Object or Array by defining
|
||
* hidden properties.
|
||
*/
|
||
/* istanbul ignore next */
|
||
function copyAugment(target, src, keys) {
|
||
for (var i = 0, l = keys.length; i < l; i++) {
|
||
var key = keys[i]
|
||
def(target, key, src[key])
|
||
}
|
||
}
|
||
/**
|
||
* Attempt to create an observer instance for a value,
|
||
* returns the new observer if successfully observed,
|
||
* or the existing observer if the value already has one.
|
||
*/
|
||
function observe(value, asRootData) {
|
||
if (!isObject(value) || value instanceof VNode) {
|
||
return
|
||
}
|
||
var ob
|
||
if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
|
||
ob = value.__ob__
|
||
} else if (
|
||
!isServerRendering() &&
|
||
(Array.isArray(value) || isPlainObject(value)) &&
|
||
Object.isExtensible(value) &&
|
||
!value._isVue
|
||
) {
|
||
ob = new Observer(value)
|
||
}
|
||
if (asRootData && ob) {
|
||
ob.vmCount++
|
||
}
|
||
return ob
|
||
}
|
||
/**
|
||
* Define a reactive property on an Object.
|
||
*/
|
||
function defineReactive(obj, key, val, customSetter, shallow) {
|
||
var dep = new Dep()
|
||
var property = Object.getOwnPropertyDescriptor(obj, key)
|
||
if (property && property.configurable === false) {
|
||
return
|
||
}
|
||
// cater for pre-defined getter/setters
|
||
var getter = property && property.get
|
||
var setter = property && property.set
|
||
if ((!getter || setter) && arguments.length === 2) {
|
||
val = obj[key]
|
||
}
|
||
var childOb = !shallow && observe(val)
|
||
Object.defineProperty(obj, key, {
|
||
enumerable: true,
|
||
configurable: true,
|
||
get: function reactiveGetter() {
|
||
var value = getter ? getter.call(obj) : val
|
||
if (Dep.target) {
|
||
dep.depend()
|
||
if (childOb) {
|
||
childOb.dep.depend()
|
||
if (Array.isArray(value)) {
|
||
dependArray(value)
|
||
}
|
||
}
|
||
}
|
||
return value
|
||
},
|
||
set: function reactiveSetter(newVal) {
|
||
var value = getter ? getter.call(obj) : val
|
||
/* eslint-disable no-self-compare */
|
||
if (newVal === value || (newVal !== newVal && value !== value)) {
|
||
return
|
||
}
|
||
/* eslint-enable no-self-compare */
|
||
if (customSetter) {
|
||
customSetter()
|
||
}
|
||
// #7981: for accessor properties without setter
|
||
if (getter && !setter) return
|
||
if (setter) {
|
||
setter.call(obj, newVal)
|
||
} else {
|
||
val = newVal
|
||
}
|
||
childOb = !shallow && observe(newVal)
|
||
dep.notify()
|
||
}
|
||
})
|
||
}
|
||
/**
|
||
* Set a property on an object. Adds the new property and
|
||
* triggers change notification if the property doesn't
|
||
* already exist.
|
||
*/
|
||
function set(target, key, val) {
|
||
if (isUndef(target) || isPrimitive(target)) {
|
||
warn$2(
|
||
'Cannot set reactive property on undefined, null, or primitive value: '.concat(
|
||
target
|
||
)
|
||
)
|
||
}
|
||
if (Array.isArray(target) && isValidArrayIndex(key)) {
|
||
target.length = Math.max(target.length, key)
|
||
target.splice(key, 1, val)
|
||
return val
|
||
}
|
||
if (key in target && !(key in Object.prototype)) {
|
||
target[key] = val
|
||
return val
|
||
}
|
||
var ob = target.__ob__
|
||
if (target._isVue || (ob && ob.vmCount)) {
|
||
warn$2(
|
||
'Avoid adding reactive properties to a Vue instance or its root $data ' +
|
||
'at runtime - declare it upfront in the data option.'
|
||
)
|
||
return val
|
||
}
|
||
if (!ob) {
|
||
target[key] = val
|
||
return val
|
||
}
|
||
defineReactive(ob.value, key, val)
|
||
ob.dep.notify()
|
||
return val
|
||
}
|
||
/**
|
||
* Collect dependencies on array elements when the array is touched, since
|
||
* we cannot intercept array element access like property getters.
|
||
*/
|
||
function dependArray(value) {
|
||
for (var e = void 0, i = 0, l = value.length; i < l; i++) {
|
||
e = value[i]
|
||
e && e.__ob__ && e.__ob__.dep.depend()
|
||
if (Array.isArray(e)) {
|
||
dependArray(e)
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Option overwriting strategies are functions that handle
|
||
* how to merge a parent option value and a child option
|
||
* value into the final value.
|
||
*/
|
||
var strats = config.optionMergeStrategies
|
||
/**
|
||
* Options with restrictions
|
||
*/
|
||
{
|
||
strats.el = strats.propsData = function (parent, child, vm, key) {
|
||
if (!vm) {
|
||
warn$2(
|
||
'option "'.concat(key, '" can only be used during instance ') +
|
||
'creation with the `new` keyword.'
|
||
)
|
||
}
|
||
return defaultStrat(parent, child)
|
||
}
|
||
}
|
||
/**
|
||
* Helper that recursively merges two data objects together.
|
||
*/
|
||
function mergeData(to, from) {
|
||
if (!from) return to
|
||
var key, toVal, fromVal
|
||
var keys = hasSymbol ? Reflect.ownKeys(from) : Object.keys(from)
|
||
for (var i = 0; i < keys.length; i++) {
|
||
key = keys[i]
|
||
// in case the object is already observed...
|
||
if (key === '__ob__') continue
|
||
toVal = to[key]
|
||
fromVal = from[key]
|
||
if (!hasOwn(to, key)) {
|
||
set(to, key, fromVal)
|
||
} else if (
|
||
toVal !== fromVal &&
|
||
isPlainObject(toVal) &&
|
||
isPlainObject(fromVal)
|
||
) {
|
||
mergeData(toVal, fromVal)
|
||
}
|
||
}
|
||
return to
|
||
}
|
||
/**
|
||
* Data
|
||
*/
|
||
function mergeDataOrFn(parentVal, childVal, vm) {
|
||
if (!vm) {
|
||
// in a Vue.extend merge, both should be functions
|
||
if (!childVal) {
|
||
return parentVal
|
||
}
|
||
if (!parentVal) {
|
||
return childVal
|
||
}
|
||
// when parentVal & childVal are both present,
|
||
// we need to return a function that returns the
|
||
// merged result of both functions... no need to
|
||
// check if parentVal is a function here because
|
||
// it has to be a function to pass previous merges.
|
||
return function mergedDataFn() {
|
||
return mergeData(
|
||
typeof childVal === 'function' ? childVal.call(this, this) : childVal,
|
||
typeof parentVal === 'function'
|
||
? parentVal.call(this, this)
|
||
: parentVal
|
||
)
|
||
}
|
||
} else {
|
||
return function mergedInstanceDataFn() {
|
||
// instance merge
|
||
var instanceData =
|
||
typeof childVal === 'function' ? childVal.call(vm, vm) : childVal
|
||
var defaultData =
|
||
typeof parentVal === 'function' ? parentVal.call(vm, vm) : parentVal
|
||
if (instanceData) {
|
||
return mergeData(instanceData, defaultData)
|
||
} else {
|
||
return defaultData
|
||
}
|
||
}
|
||
}
|
||
}
|
||
strats.data = function (parentVal, childVal, vm) {
|
||
if (!vm) {
|
||
if (childVal && typeof childVal !== 'function') {
|
||
warn$2(
|
||
'The "data" option should be a function ' +
|
||
'that returns a per-instance value in component ' +
|
||
'definitions.',
|
||
vm
|
||
)
|
||
return parentVal
|
||
}
|
||
return mergeDataOrFn(parentVal, childVal)
|
||
}
|
||
return mergeDataOrFn(parentVal, childVal, vm)
|
||
}
|
||
/**
|
||
* Hooks and props are merged as arrays.
|
||
*/
|
||
function mergeHook(parentVal, childVal) {
|
||
var res = childVal
|
||
? parentVal
|
||
? parentVal.concat(childVal)
|
||
: Array.isArray(childVal)
|
||
? childVal
|
||
: [childVal]
|
||
: parentVal
|
||
return res ? dedupeHooks(res) : res
|
||
}
|
||
function dedupeHooks(hooks) {
|
||
var res = []
|
||
for (var i = 0; i < hooks.length; i++) {
|
||
if (res.indexOf(hooks[i]) === -1) {
|
||
res.push(hooks[i])
|
||
}
|
||
}
|
||
return res
|
||
}
|
||
LIFECYCLE_HOOKS.forEach(function (hook) {
|
||
strats[hook] = mergeHook
|
||
})
|
||
/**
|
||
* Assets
|
||
*
|
||
* When a vm is present (instance creation), we need to do
|
||
* a three-way merge between constructor options, instance
|
||
* options and parent options.
|
||
*/
|
||
function mergeAssets(parentVal, childVal, vm, key) {
|
||
var res = Object.create(parentVal || null)
|
||
if (childVal) {
|
||
assertObjectType(key, childVal, vm)
|
||
return extend(res, childVal)
|
||
} else {
|
||
return res
|
||
}
|
||
}
|
||
ASSET_TYPES.forEach(function (type) {
|
||
strats[type + 's'] = mergeAssets
|
||
})
|
||
/**
|
||
* Watchers.
|
||
*
|
||
* Watchers hashes should not overwrite one
|
||
* another, so we merge them as arrays.
|
||
*/
|
||
strats.watch = function (parentVal, childVal, vm, key) {
|
||
// work around Firefox's Object.prototype.watch...
|
||
//@ts-expect-error work around
|
||
if (parentVal === nativeWatch) parentVal = undefined
|
||
//@ts-expect-error work around
|
||
if (childVal === nativeWatch) childVal = undefined
|
||
/* istanbul ignore if */
|
||
if (!childVal) return Object.create(parentVal || null)
|
||
{
|
||
assertObjectType(key, childVal, vm)
|
||
}
|
||
if (!parentVal) return childVal
|
||
var ret = {}
|
||
extend(ret, parentVal)
|
||
for (var key_1 in childVal) {
|
||
var parent_1 = ret[key_1]
|
||
var child = childVal[key_1]
|
||
if (parent_1 && !Array.isArray(parent_1)) {
|
||
parent_1 = [parent_1]
|
||
}
|
||
ret[key_1] = parent_1
|
||
? parent_1.concat(child)
|
||
: Array.isArray(child)
|
||
? child
|
||
: [child]
|
||
}
|
||
return ret
|
||
}
|
||
/**
|
||
* Other object hashes.
|
||
*/
|
||
strats.props =
|
||
strats.methods =
|
||
strats.inject =
|
||
strats.computed =
|
||
function (parentVal, childVal, vm, key) {
|
||
if (childVal && 'development' !== 'production') {
|
||
assertObjectType(key, childVal, vm)
|
||
}
|
||
if (!parentVal) return childVal
|
||
var ret = Object.create(null)
|
||
extend(ret, parentVal)
|
||
if (childVal) extend(ret, childVal)
|
||
return ret
|
||
}
|
||
strats.provide = mergeDataOrFn
|
||
/**
|
||
* Default strategy.
|
||
*/
|
||
var defaultStrat = function (parentVal, childVal) {
|
||
return childVal === undefined ? parentVal : childVal
|
||
}
|
||
function assertObjectType(name, value, vm) {
|
||
if (!isPlainObject(value)) {
|
||
warn$2(
|
||
'Invalid value for option "'.concat(name, '": expected an Object, ') +
|
||
'but got '.concat(toRawType(value), '.'),
|
||
vm
|
||
)
|
||
}
|
||
}
|
||
|
||
/* globals MutationObserver */
|
||
var callbacks = []
|
||
function flushCallbacks() {
|
||
var copies = callbacks.slice(0)
|
||
callbacks.length = 0
|
||
for (var i = 0; i < copies.length; i++) {
|
||
copies[i]()
|
||
}
|
||
}
|
||
// The nextTick behavior leverages the microtask queue, which can be accessed
|
||
// via either native Promise.then or MutationObserver.
|
||
// MutationObserver has wider support, however it is seriously bugged in
|
||
// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
|
||
// completely stops working after triggering a few times... so, if native
|
||
// Promise is available, we will use it:
|
||
/* istanbul ignore next, $flow-disable-line */
|
||
if (typeof Promise !== 'undefined' && isNative(Promise)) {
|
||
Promise.resolve()
|
||
} else if (
|
||
!isIE &&
|
||
typeof MutationObserver !== 'undefined' &&
|
||
(isNative(MutationObserver) ||
|
||
// PhantomJS and iOS 7.x
|
||
MutationObserver.toString() === '[object MutationObserverConstructor]')
|
||
) {
|
||
// Use MutationObserver where native Promise is not available,
|
||
// e.g. PhantomJS, iOS7, Android 4.4
|
||
// (#6466 MutationObserver is unreliable in IE11)
|
||
var counter_1 = 1
|
||
var observer = new MutationObserver(flushCallbacks)
|
||
var textNode_1 = document.createTextNode(String(counter_1))
|
||
observer.observe(textNode_1, {
|
||
characterData: true
|
||
})
|
||
} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate));
|
||
else;
|
||
|
||
// these are reserved for web because they are directly compiled away
|
||
// during template compilation
|
||
makeMap('style,class')
|
||
// attributes that should be using props for binding
|
||
var acceptValue = makeMap('input,textarea,option,select,progress')
|
||
var mustUseProp = function (tag, type, attr) {
|
||
return (
|
||
(attr === 'value' && acceptValue(tag) && type !== 'button') ||
|
||
(attr === 'selected' && tag === 'option') ||
|
||
(attr === 'checked' && tag === 'input') ||
|
||
(attr === 'muted' && tag === 'video')
|
||
)
|
||
}
|
||
var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck')
|
||
makeMap('events,caret,typing,plaintext-only')
|
||
var isBooleanAttr = makeMap(
|
||
'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
|
||
'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
|
||
'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
|
||
'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
|
||
'required,reversed,scoped,seamless,selected,sortable,' +
|
||
'truespeed,typemustmatch,visible'
|
||
)
|
||
|
||
var isHTMLTag = makeMap(
|
||
'html,body,base,head,link,meta,style,title,' +
|
||
'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
|
||
'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +
|
||
'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
|
||
's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
|
||
'embed,object,param,source,canvas,script,noscript,del,ins,' +
|
||
'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
|
||
'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
|
||
'output,progress,select,textarea,' +
|
||
'details,dialog,menu,menuitem,summary,' +
|
||
'content,element,shadow,template,blockquote,iframe,tfoot'
|
||
)
|
||
// this map is intentionally selective, only covering SVG elements that may
|
||
// contain child elements.
|
||
var isSVG = makeMap(
|
||
'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
|
||
'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
|
||
'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',
|
||
true
|
||
)
|
||
var isPreTag = function (tag) {
|
||
return tag === 'pre'
|
||
}
|
||
var isReservedTag = function (tag) {
|
||
return isHTMLTag(tag) || isSVG(tag)
|
||
}
|
||
function getTagNamespace(tag) {
|
||
if (isSVG(tag)) {
|
||
return 'svg'
|
||
}
|
||
// basic support for MathML
|
||
// note it doesn't support other MathML elements being component roots
|
||
if (tag === 'math') {
|
||
return 'math'
|
||
}
|
||
}
|
||
makeMap('text,number,password,search,email,tel,url')
|
||
|
||
var validDivisionCharRE = /[\w).+\-_$\]]/
|
||
function parseFilters(exp) {
|
||
var inSingle = false
|
||
var inDouble = false
|
||
var inTemplateString = false
|
||
var inRegex = false
|
||
var curly = 0
|
||
var square = 0
|
||
var paren = 0
|
||
var lastFilterIndex = 0
|
||
var c, prev, i, expression, filters
|
||
for (i = 0; i < exp.length; i++) {
|
||
prev = c
|
||
c = exp.charCodeAt(i)
|
||
if (inSingle) {
|
||
if (c === 0x27 && prev !== 0x5c) inSingle = false
|
||
} else if (inDouble) {
|
||
if (c === 0x22 && prev !== 0x5c) inDouble = false
|
||
} else if (inTemplateString) {
|
||
if (c === 0x60 && prev !== 0x5c) inTemplateString = false
|
||
} else if (inRegex) {
|
||
if (c === 0x2f && prev !== 0x5c) inRegex = false
|
||
} else if (
|
||
c === 0x7c && // pipe
|
||
exp.charCodeAt(i + 1) !== 0x7c &&
|
||
exp.charCodeAt(i - 1) !== 0x7c &&
|
||
!curly &&
|
||
!square &&
|
||
!paren
|
||
) {
|
||
if (expression === undefined) {
|
||
// first filter, end of expression
|
||
lastFilterIndex = i + 1
|
||
expression = exp.slice(0, i).trim()
|
||
} else {
|
||
pushFilter()
|
||
}
|
||
} else {
|
||
switch (c) {
|
||
case 0x22:
|
||
inDouble = true
|
||
break // "
|
||
case 0x27:
|
||
inSingle = true
|
||
break // '
|
||
case 0x60:
|
||
inTemplateString = true
|
||
break // `
|
||
case 0x28:
|
||
paren++
|
||
break // (
|
||
case 0x29:
|
||
paren--
|
||
break // )
|
||
case 0x5b:
|
||
square++
|
||
break // [
|
||
case 0x5d:
|
||
square--
|
||
break // ]
|
||
case 0x7b:
|
||
curly++
|
||
break // {
|
||
case 0x7d:
|
||
curly--
|
||
break // }
|
||
}
|
||
if (c === 0x2f) {
|
||
// /
|
||
var j = i - 1
|
||
var p =
|
||
// find first non-whitespace prev char
|
||
void 0
|
||
// find first non-whitespace prev char
|
||
for (; j >= 0; j--) {
|
||
p = exp.charAt(j)
|
||
if (p !== ' ') break
|
||
}
|
||
if (!p || !validDivisionCharRE.test(p)) {
|
||
inRegex = true
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (expression === undefined) {
|
||
expression = exp.slice(0, i).trim()
|
||
} else if (lastFilterIndex !== 0) {
|
||
pushFilter()
|
||
}
|
||
function pushFilter() {
|
||
;(filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim())
|
||
lastFilterIndex = i + 1
|
||
}
|
||
if (filters) {
|
||
for (i = 0; i < filters.length; i++) {
|
||
expression = wrapFilter(expression, filters[i])
|
||
}
|
||
}
|
||
return expression
|
||
}
|
||
function wrapFilter(exp, filter) {
|
||
var i = filter.indexOf('(')
|
||
if (i < 0) {
|
||
// _f: resolveFilter
|
||
return '_f("'.concat(filter, '")(').concat(exp, ')')
|
||
} else {
|
||
var name_1 = filter.slice(0, i)
|
||
var args = filter.slice(i + 1)
|
||
return '_f("'
|
||
.concat(name_1, '")(')
|
||
.concat(exp)
|
||
.concat(args !== ')' ? ',' + args : args)
|
||
}
|
||
}
|
||
|
||
var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g
|
||
var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g
|
||
var buildRegex = cached(function (delimiters) {
|
||
var open = delimiters[0].replace(regexEscapeRE, '\\$&')
|
||
var close = delimiters[1].replace(regexEscapeRE, '\\$&')
|
||
return new RegExp(open + '((?:.|\\n)+?)' + close, 'g')
|
||
})
|
||
function parseText(text, delimiters) {
|
||
//@ts-expect-error
|
||
var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE
|
||
if (!tagRE.test(text)) {
|
||
return
|
||
}
|
||
var tokens = []
|
||
var rawTokens = []
|
||
var lastIndex = (tagRE.lastIndex = 0)
|
||
var match, index, tokenValue
|
||
while ((match = tagRE.exec(text))) {
|
||
index = match.index
|
||
// push text token
|
||
if (index > lastIndex) {
|
||
rawTokens.push((tokenValue = text.slice(lastIndex, index)))
|
||
tokens.push(JSON.stringify(tokenValue))
|
||
}
|
||
// tag token
|
||
var exp = parseFilters(match[1].trim())
|
||
tokens.push('_s('.concat(exp, ')'))
|
||
rawTokens.push({ '@binding': exp })
|
||
lastIndex = index + match[0].length
|
||
}
|
||
if (lastIndex < text.length) {
|
||
rawTokens.push((tokenValue = text.slice(lastIndex)))
|
||
tokens.push(JSON.stringify(tokenValue))
|
||
}
|
||
return {
|
||
expression: tokens.join('+'),
|
||
tokens: rawTokens
|
||
}
|
||
}
|
||
|
||
/* eslint-disable no-unused-vars */
|
||
function baseWarn(msg, range) {
|
||
console.error('[Vue compiler]: '.concat(msg))
|
||
}
|
||
/* eslint-enable no-unused-vars */
|
||
function pluckModuleFunction(modules, key) {
|
||
return modules
|
||
? modules
|
||
.map(function (m) {
|
||
return m[key]
|
||
})
|
||
.filter(function (_) {
|
||
return _
|
||
})
|
||
: []
|
||
}
|
||
function addProp(el, name, value, range, dynamic) {
|
||
;(el.props || (el.props = [])).push(
|
||
rangeSetItem({ name: name, value: value, dynamic: dynamic }, range)
|
||
)
|
||
el.plain = false
|
||
}
|
||
function addAttr(el, name, value, range, dynamic) {
|
||
var attrs = dynamic
|
||
? el.dynamicAttrs || (el.dynamicAttrs = [])
|
||
: el.attrs || (el.attrs = [])
|
||
attrs.push(
|
||
rangeSetItem({ name: name, value: value, dynamic: dynamic }, range)
|
||
)
|
||
el.plain = false
|
||
}
|
||
// add a raw attr (use this in preTransforms)
|
||
function addRawAttr(el, name, value, range) {
|
||
el.attrsMap[name] = value
|
||
el.attrsList.push(rangeSetItem({ name: name, value: value }, range))
|
||
}
|
||
function addDirective(
|
||
el,
|
||
name,
|
||
rawName,
|
||
value,
|
||
arg,
|
||
isDynamicArg,
|
||
modifiers,
|
||
range
|
||
) {
|
||
;(el.directives || (el.directives = [])).push(
|
||
rangeSetItem(
|
||
{
|
||
name: name,
|
||
rawName: rawName,
|
||
value: value,
|
||
arg: arg,
|
||
isDynamicArg: isDynamicArg,
|
||
modifiers: modifiers
|
||
},
|
||
range
|
||
)
|
||
)
|
||
el.plain = false
|
||
}
|
||
function prependModifierMarker(symbol, name, dynamic) {
|
||
return dynamic
|
||
? '_p('.concat(name, ',"').concat(symbol, '")')
|
||
: symbol + name // mark the event as captured
|
||
}
|
||
function addHandler(
|
||
el,
|
||
name,
|
||
value,
|
||
modifiers,
|
||
important,
|
||
warn,
|
||
range,
|
||
dynamic
|
||
) {
|
||
modifiers = modifiers || emptyObject
|
||
// warn prevent and passive modifier
|
||
/* istanbul ignore if */
|
||
if (warn && modifiers.prevent && modifiers.passive) {
|
||
warn(
|
||
"passive and prevent can't be used together. " +
|
||
"Passive handler can't prevent default event.",
|
||
range
|
||
)
|
||
}
|
||
// normalize click.right and click.middle since they don't actually fire
|
||
// this is technically browser-specific, but at least for now browsers are
|
||
// the only target envs that have right/middle clicks.
|
||
if (modifiers.right) {
|
||
if (dynamic) {
|
||
name = '('.concat(name, ")==='click'?'contextmenu':(").concat(name, ')')
|
||
} else if (name === 'click') {
|
||
name = 'contextmenu'
|
||
delete modifiers.right
|
||
}
|
||
} else if (modifiers.middle) {
|
||
if (dynamic) {
|
||
name = '('.concat(name, ")==='click'?'mouseup':(").concat(name, ')')
|
||
} else if (name === 'click') {
|
||
name = 'mouseup'
|
||
}
|
||
}
|
||
// check capture modifier
|
||
if (modifiers.capture) {
|
||
delete modifiers.capture
|
||
name = prependModifierMarker('!', name, dynamic)
|
||
}
|
||
if (modifiers.once) {
|
||
delete modifiers.once
|
||
name = prependModifierMarker('~', name, dynamic)
|
||
}
|
||
/* istanbul ignore if */
|
||
if (modifiers.passive) {
|
||
delete modifiers.passive
|
||
name = prependModifierMarker('&', name, dynamic)
|
||
}
|
||
var events
|
||
if (modifiers.native) {
|
||
delete modifiers.native
|
||
events = el.nativeEvents || (el.nativeEvents = {})
|
||
} else {
|
||
events = el.events || (el.events = {})
|
||
}
|
||
var newHandler = rangeSetItem(
|
||
{ value: value.trim(), dynamic: dynamic },
|
||
range
|
||
)
|
||
if (modifiers !== emptyObject) {
|
||
newHandler.modifiers = modifiers
|
||
}
|
||
var handlers = events[name]
|
||
/* istanbul ignore if */
|
||
if (Array.isArray(handlers)) {
|
||
important ? handlers.unshift(newHandler) : handlers.push(newHandler)
|
||
} else if (handlers) {
|
||
events[name] = important ? [newHandler, handlers] : [handlers, newHandler]
|
||
} else {
|
||
events[name] = newHandler
|
||
}
|
||
el.plain = false
|
||
}
|
||
function getRawBindingAttr(el, name) {
|
||
return (
|
||
el.rawAttrsMap[':' + name] ||
|
||
el.rawAttrsMap['v-bind:' + name] ||
|
||
el.rawAttrsMap[name]
|
||
)
|
||
}
|
||
function getBindingAttr(el, name, getStatic) {
|
||
var dynamicValue =
|
||
getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name)
|
||
if (dynamicValue != null) {
|
||
return parseFilters(dynamicValue)
|
||
} else if (getStatic !== false) {
|
||
var staticValue = getAndRemoveAttr(el, name)
|
||
if (staticValue != null) {
|
||
return JSON.stringify(staticValue)
|
||
}
|
||
}
|
||
}
|
||
// note: this only removes the attr from the Array (attrsList) so that it
|
||
// doesn't get processed by processAttrs.
|
||
// By default it does NOT remove it from the map (attrsMap) because the map is
|
||
// needed during codegen.
|
||
function getAndRemoveAttr(el, name, removeFromMap) {
|
||
var val
|
||
if ((val = el.attrsMap[name]) != null) {
|
||
var list = el.attrsList
|
||
for (var i = 0, l = list.length; i < l; i++) {
|
||
if (list[i].name === name) {
|
||
list.splice(i, 1)
|
||
break
|
||
}
|
||
}
|
||
}
|
||
if (removeFromMap) {
|
||
delete el.attrsMap[name]
|
||
}
|
||
return val
|
||
}
|
||
function getAndRemoveAttrByRegex(el, name) {
|
||
var list = el.attrsList
|
||
for (var i = 0, l = list.length; i < l; i++) {
|
||
var attr = list[i]
|
||
if (name.test(attr.name)) {
|
||
list.splice(i, 1)
|
||
return attr
|
||
}
|
||
}
|
||
}
|
||
function rangeSetItem(item, range) {
|
||
if (range) {
|
||
if (range.start != null) {
|
||
item.start = range.start
|
||
}
|
||
if (range.end != null) {
|
||
item.end = range.end
|
||
}
|
||
}
|
||
return item
|
||
}
|
||
|
||
function transformNode$1(el, options) {
|
||
var warn = options.warn || baseWarn
|
||
var staticClass = getAndRemoveAttr(el, 'class')
|
||
if (staticClass) {
|
||
var res = parseText(staticClass, options.delimiters)
|
||
if (res) {
|
||
warn(
|
||
'class="'.concat(staticClass, '": ') +
|
||
'Interpolation inside attributes has been removed. ' +
|
||
'Use v-bind or the colon shorthand instead. For example, ' +
|
||
'instead of <div class="{{ val }}">, use <div :class="val">.',
|
||
el.rawAttrsMap['class']
|
||
)
|
||
}
|
||
}
|
||
if (staticClass) {
|
||
el.staticClass = JSON.stringify(staticClass.replace(/\s+/g, ' ').trim())
|
||
}
|
||
var classBinding = getBindingAttr(el, 'class', false /* getStatic */)
|
||
if (classBinding) {
|
||
el.classBinding = classBinding
|
||
}
|
||
}
|
||
function genData$2(el) {
|
||
var data = ''
|
||
if (el.staticClass) {
|
||
data += 'staticClass:'.concat(el.staticClass, ',')
|
||
}
|
||
if (el.classBinding) {
|
||
data += 'class:'.concat(el.classBinding, ',')
|
||
}
|
||
return data
|
||
}
|
||
var klass = {
|
||
staticKeys: ['staticClass'],
|
||
transformNode: transformNode$1,
|
||
genData: genData$2
|
||
}
|
||
|
||
var parseStyleText = cached(function (cssText) {
|
||
var res = {}
|
||
var listDelimiter = /;(?![^(]*\))/g
|
||
var propertyDelimiter = /:(.+)/
|
||
cssText.split(listDelimiter).forEach(function (item) {
|
||
if (item) {
|
||
var tmp = item.split(propertyDelimiter)
|
||
tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim())
|
||
}
|
||
})
|
||
return res
|
||
})
|
||
|
||
function transformNode(el, options) {
|
||
var warn = options.warn || baseWarn
|
||
var staticStyle = getAndRemoveAttr(el, 'style')
|
||
if (staticStyle) {
|
||
/* istanbul ignore if */
|
||
{
|
||
var res = parseText(staticStyle, options.delimiters)
|
||
if (res) {
|
||
warn(
|
||
'style="'.concat(staticStyle, '": ') +
|
||
'Interpolation inside attributes has been removed. ' +
|
||
'Use v-bind or the colon shorthand instead. For example, ' +
|
||
'instead of <div style="{{ val }}">, use <div :style="val">.',
|
||
el.rawAttrsMap['style']
|
||
)
|
||
}
|
||
}
|
||
el.staticStyle = JSON.stringify(parseStyleText(staticStyle))
|
||
}
|
||
var styleBinding = getBindingAttr(el, 'style', false /* getStatic */)
|
||
if (styleBinding) {
|
||
el.styleBinding = styleBinding
|
||
}
|
||
}
|
||
function genData$1(el) {
|
||
var data = ''
|
||
if (el.staticStyle) {
|
||
data += 'staticStyle:'.concat(el.staticStyle, ',')
|
||
}
|
||
if (el.styleBinding) {
|
||
data += 'style:('.concat(el.styleBinding, '),')
|
||
}
|
||
return data
|
||
}
|
||
var style = {
|
||
staticKeys: ['staticStyle'],
|
||
transformNode: transformNode,
|
||
genData: genData$1
|
||
}
|
||
|
||
var he$1 = { exports: {} }
|
||
|
||
/*! https://mths.be/he v1.2.0 by @mathias | MIT license */
|
||
|
||
;(function (module, exports) {
|
||
;(function (root) {
|
||
// Detect free variables `exports`.
|
||
var freeExports = exports
|
||
|
||
// Detect free variable `module`.
|
||
var freeModule = module && module.exports == freeExports && module
|
||
|
||
// Detect free variable `global`, from Node.js or Browserified code,
|
||
// and use it as `root`.
|
||
var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal
|
||
if (
|
||
freeGlobal.global === freeGlobal ||
|
||
freeGlobal.window === freeGlobal
|
||
) {
|
||
root = freeGlobal
|
||
}
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
|
||
// All astral symbols.
|
||
var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g
|
||
// All ASCII symbols (not just printable ASCII) except those listed in the
|
||
// first column of the overrides table.
|
||
// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides
|
||
var regexAsciiWhitelist = /[\x01-\x7F]/g
|
||
// All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
|
||
// code points listed in the first column of the overrides table on
|
||
// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.
|
||
var regexBmpWhitelist =
|
||
/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g
|
||
|
||
var regexEncodeNonAscii =
|
||
/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g
|
||
var encodeMap = {
|
||
'\xAD': 'shy',
|
||
'\u200C': 'zwnj',
|
||
'\u200D': 'zwj',
|
||
'\u200E': 'lrm',
|
||
'\u2063': 'ic',
|
||
'\u2062': 'it',
|
||
'\u2061': 'af',
|
||
'\u200F': 'rlm',
|
||
'\u200B': 'ZeroWidthSpace',
|
||
'\u2060': 'NoBreak',
|
||
'\u0311': 'DownBreve',
|
||
'\u20DB': 'tdot',
|
||
'\u20DC': 'DotDot',
|
||
'\t': 'Tab',
|
||
'\n': 'NewLine',
|
||
'\u2008': 'puncsp',
|
||
'\u205F': 'MediumSpace',
|
||
'\u2009': 'thinsp',
|
||
'\u200A': 'hairsp',
|
||
'\u2004': 'emsp13',
|
||
'\u2002': 'ensp',
|
||
'\u2005': 'emsp14',
|
||
'\u2003': 'emsp',
|
||
'\u2007': 'numsp',
|
||
'\xA0': 'nbsp',
|
||
'\u205F\u200A': 'ThickSpace',
|
||
'\u203E': 'oline',
|
||
_: 'lowbar',
|
||
'\u2010': 'dash',
|
||
'\u2013': 'ndash',
|
||
'\u2014': 'mdash',
|
||
'\u2015': 'horbar',
|
||
',': 'comma',
|
||
';': 'semi',
|
||
'\u204F': 'bsemi',
|
||
':': 'colon',
|
||
'\u2A74': 'Colone',
|
||
'!': 'excl',
|
||
'\xA1': 'iexcl',
|
||
'?': 'quest',
|
||
'\xBF': 'iquest',
|
||
'.': 'period',
|
||
'\u2025': 'nldr',
|
||
'\u2026': 'mldr',
|
||
'\xB7': 'middot',
|
||
"'": 'apos',
|
||
'\u2018': 'lsquo',
|
||
'\u2019': 'rsquo',
|
||
'\u201A': 'sbquo',
|
||
'\u2039': 'lsaquo',
|
||
'\u203A': 'rsaquo',
|
||
'"': 'quot',
|
||
'\u201C': 'ldquo',
|
||
'\u201D': 'rdquo',
|
||
'\u201E': 'bdquo',
|
||
'\xAB': 'laquo',
|
||
'\xBB': 'raquo',
|
||
'(': 'lpar',
|
||
')': 'rpar',
|
||
'[': 'lsqb',
|
||
']': 'rsqb',
|
||
'{': 'lcub',
|
||
'}': 'rcub',
|
||
'\u2308': 'lceil',
|
||
'\u2309': 'rceil',
|
||
'\u230A': 'lfloor',
|
||
'\u230B': 'rfloor',
|
||
'\u2985': 'lopar',
|
||
'\u2986': 'ropar',
|
||
'\u298B': 'lbrke',
|
||
'\u298C': 'rbrke',
|
||
'\u298D': 'lbrkslu',
|
||
'\u298E': 'rbrksld',
|
||
'\u298F': 'lbrksld',
|
||
'\u2990': 'rbrkslu',
|
||
'\u2991': 'langd',
|
||
'\u2992': 'rangd',
|
||
'\u2993': 'lparlt',
|
||
'\u2994': 'rpargt',
|
||
'\u2995': 'gtlPar',
|
||
'\u2996': 'ltrPar',
|
||
'\u27E6': 'lobrk',
|
||
'\u27E7': 'robrk',
|
||
'\u27E8': 'lang',
|
||
'\u27E9': 'rang',
|
||
'\u27EA': 'Lang',
|
||
'\u27EB': 'Rang',
|
||
'\u27EC': 'loang',
|
||
'\u27ED': 'roang',
|
||
'\u2772': 'lbbrk',
|
||
'\u2773': 'rbbrk',
|
||
'\u2016': 'Vert',
|
||
'\xA7': 'sect',
|
||
'\xB6': 'para',
|
||
'@': 'commat',
|
||
'*': 'ast',
|
||
'/': 'sol',
|
||
undefined: null,
|
||
'&': 'amp',
|
||
'#': 'num',
|
||
'%': 'percnt',
|
||
'\u2030': 'permil',
|
||
'\u2031': 'pertenk',
|
||
'\u2020': 'dagger',
|
||
'\u2021': 'Dagger',
|
||
'\u2022': 'bull',
|
||
'\u2043': 'hybull',
|
||
'\u2032': 'prime',
|
||
'\u2033': 'Prime',
|
||
'\u2034': 'tprime',
|
||
'\u2057': 'qprime',
|
||
'\u2035': 'bprime',
|
||
'\u2041': 'caret',
|
||
'`': 'grave',
|
||
'\xB4': 'acute',
|
||
'\u02DC': 'tilde',
|
||
'^': 'Hat',
|
||
'\xAF': 'macr',
|
||
'\u02D8': 'breve',
|
||
'\u02D9': 'dot',
|
||
'\xA8': 'die',
|
||
'\u02DA': 'ring',
|
||
'\u02DD': 'dblac',
|
||
'\xB8': 'cedil',
|
||
'\u02DB': 'ogon',
|
||
'\u02C6': 'circ',
|
||
'\u02C7': 'caron',
|
||
'\xB0': 'deg',
|
||
'\xA9': 'copy',
|
||
'\xAE': 'reg',
|
||
'\u2117': 'copysr',
|
||
'\u2118': 'wp',
|
||
'\u211E': 'rx',
|
||
'\u2127': 'mho',
|
||
'\u2129': 'iiota',
|
||
'\u2190': 'larr',
|
||
'\u219A': 'nlarr',
|
||
'\u2192': 'rarr',
|
||
'\u219B': 'nrarr',
|
||
'\u2191': 'uarr',
|
||
'\u2193': 'darr',
|
||
'\u2194': 'harr',
|
||
'\u21AE': 'nharr',
|
||
'\u2195': 'varr',
|
||
'\u2196': 'nwarr',
|
||
'\u2197': 'nearr',
|
||
'\u2198': 'searr',
|
||
'\u2199': 'swarr',
|
||
'\u219D': 'rarrw',
|
||
'\u219D\u0338': 'nrarrw',
|
||
'\u219E': 'Larr',
|
||
'\u219F': 'Uarr',
|
||
'\u21A0': 'Rarr',
|
||
'\u21A1': 'Darr',
|
||
'\u21A2': 'larrtl',
|
||
'\u21A3': 'rarrtl',
|
||
'\u21A4': 'mapstoleft',
|
||
'\u21A5': 'mapstoup',
|
||
'\u21A6': 'map',
|
||
'\u21A7': 'mapstodown',
|
||
'\u21A9': 'larrhk',
|
||
'\u21AA': 'rarrhk',
|
||
'\u21AB': 'larrlp',
|
||
'\u21AC': 'rarrlp',
|
||
'\u21AD': 'harrw',
|
||
'\u21B0': 'lsh',
|
||
'\u21B1': 'rsh',
|
||
'\u21B2': 'ldsh',
|
||
'\u21B3': 'rdsh',
|
||
'\u21B5': 'crarr',
|
||
'\u21B6': 'cularr',
|
||
'\u21B7': 'curarr',
|
||
'\u21BA': 'olarr',
|
||
'\u21BB': 'orarr',
|
||
'\u21BC': 'lharu',
|
||
'\u21BD': 'lhard',
|
||
'\u21BE': 'uharr',
|
||
'\u21BF': 'uharl',
|
||
'\u21C0': 'rharu',
|
||
'\u21C1': 'rhard',
|
||
'\u21C2': 'dharr',
|
||
'\u21C3': 'dharl',
|
||
'\u21C4': 'rlarr',
|
||
'\u21C5': 'udarr',
|
||
'\u21C6': 'lrarr',
|
||
'\u21C7': 'llarr',
|
||
'\u21C8': 'uuarr',
|
||
'\u21C9': 'rrarr',
|
||
'\u21CA': 'ddarr',
|
||
'\u21CB': 'lrhar',
|
||
'\u21CC': 'rlhar',
|
||
'\u21D0': 'lArr',
|
||
'\u21CD': 'nlArr',
|
||
'\u21D1': 'uArr',
|
||
'\u21D2': 'rArr',
|
||
'\u21CF': 'nrArr',
|
||
'\u21D3': 'dArr',
|
||
'\u21D4': 'iff',
|
||
'\u21CE': 'nhArr',
|
||
'\u21D5': 'vArr',
|
||
'\u21D6': 'nwArr',
|
||
'\u21D7': 'neArr',
|
||
'\u21D8': 'seArr',
|
||
'\u21D9': 'swArr',
|
||
'\u21DA': 'lAarr',
|
||
'\u21DB': 'rAarr',
|
||
'\u21DD': 'zigrarr',
|
||
'\u21E4': 'larrb',
|
||
'\u21E5': 'rarrb',
|
||
'\u21F5': 'duarr',
|
||
'\u21FD': 'loarr',
|
||
'\u21FE': 'roarr',
|
||
'\u21FF': 'hoarr',
|
||
'\u2200': 'forall',
|
||
'\u2201': 'comp',
|
||
'\u2202': 'part',
|
||
'\u2202\u0338': 'npart',
|
||
'\u2203': 'exist',
|
||
'\u2204': 'nexist',
|
||
'\u2205': 'empty',
|
||
'\u2207': 'Del',
|
||
'\u2208': 'in',
|
||
'\u2209': 'notin',
|
||
'\u220B': 'ni',
|
||
'\u220C': 'notni',
|
||
'\u03F6': 'bepsi',
|
||
'\u220F': 'prod',
|
||
'\u2210': 'coprod',
|
||
'\u2211': 'sum',
|
||
'+': 'plus',
|
||
'\xB1': 'pm',
|
||
'\xF7': 'div',
|
||
'\xD7': 'times',
|
||
'<': 'lt',
|
||
'\u226E': 'nlt',
|
||
'<\u20D2': 'nvlt',
|
||
'=': 'equals',
|
||
'\u2260': 'ne',
|
||
'=\u20E5': 'bne',
|
||
'\u2A75': 'Equal',
|
||
'>': 'gt',
|
||
'\u226F': 'ngt',
|
||
'>\u20D2': 'nvgt',
|
||
'\xAC': 'not',
|
||
'|': 'vert',
|
||
'\xA6': 'brvbar',
|
||
'\u2212': 'minus',
|
||
'\u2213': 'mp',
|
||
'\u2214': 'plusdo',
|
||
'\u2044': 'frasl',
|
||
'\u2216': 'setmn',
|
||
'\u2217': 'lowast',
|
||
'\u2218': 'compfn',
|
||
'\u221A': 'Sqrt',
|
||
'\u221D': 'prop',
|
||
'\u221E': 'infin',
|
||
'\u221F': 'angrt',
|
||
'\u2220': 'ang',
|
||
'\u2220\u20D2': 'nang',
|
||
'\u2221': 'angmsd',
|
||
'\u2222': 'angsph',
|
||
'\u2223': 'mid',
|
||
'\u2224': 'nmid',
|
||
'\u2225': 'par',
|
||
'\u2226': 'npar',
|
||
'\u2227': 'and',
|
||
'\u2228': 'or',
|
||
'\u2229': 'cap',
|
||
'\u2229\uFE00': 'caps',
|
||
'\u222A': 'cup',
|
||
'\u222A\uFE00': 'cups',
|
||
'\u222B': 'int',
|
||
'\u222C': 'Int',
|
||
'\u222D': 'tint',
|
||
'\u2A0C': 'qint',
|
||
'\u222E': 'oint',
|
||
'\u222F': 'Conint',
|
||
'\u2230': 'Cconint',
|
||
'\u2231': 'cwint',
|
||
'\u2232': 'cwconint',
|
||
'\u2233': 'awconint',
|
||
'\u2234': 'there4',
|
||
'\u2235': 'becaus',
|
||
'\u2236': 'ratio',
|
||
'\u2237': 'Colon',
|
||
'\u2238': 'minusd',
|
||
'\u223A': 'mDDot',
|
||
'\u223B': 'homtht',
|
||
'\u223C': 'sim',
|
||
'\u2241': 'nsim',
|
||
'\u223C\u20D2': 'nvsim',
|
||
'\u223D': 'bsim',
|
||
'\u223D\u0331': 'race',
|
||
'\u223E': 'ac',
|
||
'\u223E\u0333': 'acE',
|
||
'\u223F': 'acd',
|
||
'\u2240': 'wr',
|
||
'\u2242': 'esim',
|
||
'\u2242\u0338': 'nesim',
|
||
'\u2243': 'sime',
|
||
'\u2244': 'nsime',
|
||
'\u2245': 'cong',
|
||
'\u2247': 'ncong',
|
||
'\u2246': 'simne',
|
||
'\u2248': 'ap',
|
||
'\u2249': 'nap',
|
||
'\u224A': 'ape',
|
||
'\u224B': 'apid',
|
||
'\u224B\u0338': 'napid',
|
||
'\u224C': 'bcong',
|
||
'\u224D': 'CupCap',
|
||
'\u226D': 'NotCupCap',
|
||
'\u224D\u20D2': 'nvap',
|
||
'\u224E': 'bump',
|
||
'\u224E\u0338': 'nbump',
|
||
'\u224F': 'bumpe',
|
||
'\u224F\u0338': 'nbumpe',
|
||
'\u2250': 'doteq',
|
||
'\u2250\u0338': 'nedot',
|
||
'\u2251': 'eDot',
|
||
'\u2252': 'efDot',
|
||
'\u2253': 'erDot',
|
||
'\u2254': 'colone',
|
||
'\u2255': 'ecolon',
|
||
'\u2256': 'ecir',
|
||
'\u2257': 'cire',
|
||
'\u2259': 'wedgeq',
|
||
'\u225A': 'veeeq',
|
||
'\u225C': 'trie',
|
||
'\u225F': 'equest',
|
||
'\u2261': 'equiv',
|
||
'\u2262': 'nequiv',
|
||
'\u2261\u20E5': 'bnequiv',
|
||
'\u2264': 'le',
|
||
'\u2270': 'nle',
|
||
'\u2264\u20D2': 'nvle',
|
||
'\u2265': 'ge',
|
||
'\u2271': 'nge',
|
||
'\u2265\u20D2': 'nvge',
|
||
'\u2266': 'lE',
|
||
'\u2266\u0338': 'nlE',
|
||
'\u2267': 'gE',
|
||
'\u2267\u0338': 'ngE',
|
||
'\u2268\uFE00': 'lvnE',
|
||
'\u2268': 'lnE',
|
||
'\u2269': 'gnE',
|
||
'\u2269\uFE00': 'gvnE',
|
||
'\u226A': 'll',
|
||
'\u226A\u0338': 'nLtv',
|
||
'\u226A\u20D2': 'nLt',
|
||
'\u226B': 'gg',
|
||
'\u226B\u0338': 'nGtv',
|
||
'\u226B\u20D2': 'nGt',
|
||
'\u226C': 'twixt',
|
||
'\u2272': 'lsim',
|
||
'\u2274': 'nlsim',
|
||
'\u2273': 'gsim',
|
||
'\u2275': 'ngsim',
|
||
'\u2276': 'lg',
|
||
'\u2278': 'ntlg',
|
||
'\u2277': 'gl',
|
||
'\u2279': 'ntgl',
|
||
'\u227A': 'pr',
|
||
'\u2280': 'npr',
|
||
'\u227B': 'sc',
|
||
'\u2281': 'nsc',
|
||
'\u227C': 'prcue',
|
||
'\u22E0': 'nprcue',
|
||
'\u227D': 'sccue',
|
||
'\u22E1': 'nsccue',
|
||
'\u227E': 'prsim',
|
||
'\u227F': 'scsim',
|
||
'\u227F\u0338': 'NotSucceedsTilde',
|
||
'\u2282': 'sub',
|
||
'\u2284': 'nsub',
|
||
'\u2282\u20D2': 'vnsub',
|
||
'\u2283': 'sup',
|
||
'\u2285': 'nsup',
|
||
'\u2283\u20D2': 'vnsup',
|
||
'\u2286': 'sube',
|
||
'\u2288': 'nsube',
|
||
'\u2287': 'supe',
|
||
'\u2289': 'nsupe',
|
||
'\u228A\uFE00': 'vsubne',
|
||
'\u228A': 'subne',
|
||
'\u228B\uFE00': 'vsupne',
|
||
'\u228B': 'supne',
|
||
'\u228D': 'cupdot',
|
||
'\u228E': 'uplus',
|
||
'\u228F': 'sqsub',
|
||
'\u228F\u0338': 'NotSquareSubset',
|
||
'\u2290': 'sqsup',
|
||
'\u2290\u0338': 'NotSquareSuperset',
|
||
'\u2291': 'sqsube',
|
||
'\u22E2': 'nsqsube',
|
||
'\u2292': 'sqsupe',
|
||
'\u22E3': 'nsqsupe',
|
||
'\u2293': 'sqcap',
|
||
'\u2293\uFE00': 'sqcaps',
|
||
'\u2294': 'sqcup',
|
||
'\u2294\uFE00': 'sqcups',
|
||
'\u2295': 'oplus',
|
||
'\u2296': 'ominus',
|
||
'\u2297': 'otimes',
|
||
'\u2298': 'osol',
|
||
'\u2299': 'odot',
|
||
'\u229A': 'ocir',
|
||
'\u229B': 'oast',
|
||
'\u229D': 'odash',
|
||
'\u229E': 'plusb',
|
||
'\u229F': 'minusb',
|
||
'\u22A0': 'timesb',
|
||
'\u22A1': 'sdotb',
|
||
'\u22A2': 'vdash',
|
||
'\u22AC': 'nvdash',
|
||
'\u22A3': 'dashv',
|
||
'\u22A4': 'top',
|
||
'\u22A5': 'bot',
|
||
'\u22A7': 'models',
|
||
'\u22A8': 'vDash',
|
||
'\u22AD': 'nvDash',
|
||
'\u22A9': 'Vdash',
|
||
'\u22AE': 'nVdash',
|
||
'\u22AA': 'Vvdash',
|
||
'\u22AB': 'VDash',
|
||
'\u22AF': 'nVDash',
|
||
'\u22B0': 'prurel',
|
||
'\u22B2': 'vltri',
|
||
'\u22EA': 'nltri',
|
||
'\u22B3': 'vrtri',
|
||
'\u22EB': 'nrtri',
|
||
'\u22B4': 'ltrie',
|
||
'\u22EC': 'nltrie',
|
||
'\u22B4\u20D2': 'nvltrie',
|
||
'\u22B5': 'rtrie',
|
||
'\u22ED': 'nrtrie',
|
||
'\u22B5\u20D2': 'nvrtrie',
|
||
'\u22B6': 'origof',
|
||
'\u22B7': 'imof',
|
||
'\u22B8': 'mumap',
|
||
'\u22B9': 'hercon',
|
||
'\u22BA': 'intcal',
|
||
'\u22BB': 'veebar',
|
||
'\u22BD': 'barvee',
|
||
'\u22BE': 'angrtvb',
|
||
'\u22BF': 'lrtri',
|
||
'\u22C0': 'Wedge',
|
||
'\u22C1': 'Vee',
|
||
'\u22C2': 'xcap',
|
||
'\u22C3': 'xcup',
|
||
'\u22C4': 'diam',
|
||
'\u22C5': 'sdot',
|
||
'\u22C6': 'Star',
|
||
'\u22C7': 'divonx',
|
||
'\u22C8': 'bowtie',
|
||
'\u22C9': 'ltimes',
|
||
'\u22CA': 'rtimes',
|
||
'\u22CB': 'lthree',
|
||
'\u22CC': 'rthree',
|
||
'\u22CD': 'bsime',
|
||
'\u22CE': 'cuvee',
|
||
'\u22CF': 'cuwed',
|
||
'\u22D0': 'Sub',
|
||
'\u22D1': 'Sup',
|
||
'\u22D2': 'Cap',
|
||
'\u22D3': 'Cup',
|
||
'\u22D4': 'fork',
|
||
'\u22D5': 'epar',
|
||
'\u22D6': 'ltdot',
|
||
'\u22D7': 'gtdot',
|
||
'\u22D8': 'Ll',
|
||
'\u22D8\u0338': 'nLl',
|
||
'\u22D9': 'Gg',
|
||
'\u22D9\u0338': 'nGg',
|
||
'\u22DA\uFE00': 'lesg',
|
||
'\u22DA': 'leg',
|
||
'\u22DB': 'gel',
|
||
'\u22DB\uFE00': 'gesl',
|
||
'\u22DE': 'cuepr',
|
||
'\u22DF': 'cuesc',
|
||
'\u22E6': 'lnsim',
|
||
'\u22E7': 'gnsim',
|
||
'\u22E8': 'prnsim',
|
||
'\u22E9': 'scnsim',
|
||
'\u22EE': 'vellip',
|
||
'\u22EF': 'ctdot',
|
||
'\u22F0': 'utdot',
|
||
'\u22F1': 'dtdot',
|
||
'\u22F2': 'disin',
|
||
'\u22F3': 'isinsv',
|
||
'\u22F4': 'isins',
|
||
'\u22F5': 'isindot',
|
||
'\u22F5\u0338': 'notindot',
|
||
'\u22F6': 'notinvc',
|
||
'\u22F7': 'notinvb',
|
||
'\u22F9': 'isinE',
|
||
'\u22F9\u0338': 'notinE',
|
||
'\u22FA': 'nisd',
|
||
'\u22FB': 'xnis',
|
||
'\u22FC': 'nis',
|
||
'\u22FD': 'notnivc',
|
||
'\u22FE': 'notnivb',
|
||
'\u2305': 'barwed',
|
||
'\u2306': 'Barwed',
|
||
'\u230C': 'drcrop',
|
||
'\u230D': 'dlcrop',
|
||
'\u230E': 'urcrop',
|
||
'\u230F': 'ulcrop',
|
||
'\u2310': 'bnot',
|
||
'\u2312': 'profline',
|
||
'\u2313': 'profsurf',
|
||
'\u2315': 'telrec',
|
||
'\u2316': 'target',
|
||
'\u231C': 'ulcorn',
|
||
'\u231D': 'urcorn',
|
||
'\u231E': 'dlcorn',
|
||
'\u231F': 'drcorn',
|
||
'\u2322': 'frown',
|
||
'\u2323': 'smile',
|
||
'\u232D': 'cylcty',
|
||
'\u232E': 'profalar',
|
||
'\u2336': 'topbot',
|
||
'\u233D': 'ovbar',
|
||
'\u233F': 'solbar',
|
||
'\u237C': 'angzarr',
|
||
'\u23B0': 'lmoust',
|
||
'\u23B1': 'rmoust',
|
||
'\u23B4': 'tbrk',
|
||
'\u23B5': 'bbrk',
|
||
'\u23B6': 'bbrktbrk',
|
||
'\u23DC': 'OverParenthesis',
|
||
'\u23DD': 'UnderParenthesis',
|
||
'\u23DE': 'OverBrace',
|
||
'\u23DF': 'UnderBrace',
|
||
'\u23E2': 'trpezium',
|
||
'\u23E7': 'elinters',
|
||
'\u2423': 'blank',
|
||
'\u2500': 'boxh',
|
||
'\u2502': 'boxv',
|
||
'\u250C': 'boxdr',
|
||
'\u2510': 'boxdl',
|
||
'\u2514': 'boxur',
|
||
'\u2518': 'boxul',
|
||
'\u251C': 'boxvr',
|
||
'\u2524': 'boxvl',
|
||
'\u252C': 'boxhd',
|
||
'\u2534': 'boxhu',
|
||
'\u253C': 'boxvh',
|
||
'\u2550': 'boxH',
|
||
'\u2551': 'boxV',
|
||
'\u2552': 'boxdR',
|
||
'\u2553': 'boxDr',
|
||
'\u2554': 'boxDR',
|
||
'\u2555': 'boxdL',
|
||
'\u2556': 'boxDl',
|
||
'\u2557': 'boxDL',
|
||
'\u2558': 'boxuR',
|
||
'\u2559': 'boxUr',
|
||
'\u255A': 'boxUR',
|
||
'\u255B': 'boxuL',
|
||
'\u255C': 'boxUl',
|
||
'\u255D': 'boxUL',
|
||
'\u255E': 'boxvR',
|
||
'\u255F': 'boxVr',
|
||
'\u2560': 'boxVR',
|
||
'\u2561': 'boxvL',
|
||
'\u2562': 'boxVl',
|
||
'\u2563': 'boxVL',
|
||
'\u2564': 'boxHd',
|
||
'\u2565': 'boxhD',
|
||
'\u2566': 'boxHD',
|
||
'\u2567': 'boxHu',
|
||
'\u2568': 'boxhU',
|
||
'\u2569': 'boxHU',
|
||
'\u256A': 'boxvH',
|
||
'\u256B': 'boxVh',
|
||
'\u256C': 'boxVH',
|
||
'\u2580': 'uhblk',
|
||
'\u2584': 'lhblk',
|
||
'\u2588': 'block',
|
||
'\u2591': 'blk14',
|
||
'\u2592': 'blk12',
|
||
'\u2593': 'blk34',
|
||
'\u25A1': 'squ',
|
||
'\u25AA': 'squf',
|
||
'\u25AB': 'EmptyVerySmallSquare',
|
||
'\u25AD': 'rect',
|
||
'\u25AE': 'marker',
|
||
'\u25B1': 'fltns',
|
||
'\u25B3': 'xutri',
|
||
'\u25B4': 'utrif',
|
||
'\u25B5': 'utri',
|
||
'\u25B8': 'rtrif',
|
||
'\u25B9': 'rtri',
|
||
'\u25BD': 'xdtri',
|
||
'\u25BE': 'dtrif',
|
||
'\u25BF': 'dtri',
|
||
'\u25C2': 'ltrif',
|
||
'\u25C3': 'ltri',
|
||
'\u25CA': 'loz',
|
||
'\u25CB': 'cir',
|
||
'\u25EC': 'tridot',
|
||
'\u25EF': 'xcirc',
|
||
'\u25F8': 'ultri',
|
||
'\u25F9': 'urtri',
|
||
'\u25FA': 'lltri',
|
||
'\u25FB': 'EmptySmallSquare',
|
||
'\u25FC': 'FilledSmallSquare',
|
||
'\u2605': 'starf',
|
||
'\u2606': 'star',
|
||
'\u260E': 'phone',
|
||
'\u2640': 'female',
|
||
'\u2642': 'male',
|
||
'\u2660': 'spades',
|
||
'\u2663': 'clubs',
|
||
'\u2665': 'hearts',
|
||
'\u2666': 'diams',
|
||
'\u266A': 'sung',
|
||
'\u2713': 'check',
|
||
'\u2717': 'cross',
|
||
'\u2720': 'malt',
|
||
'\u2736': 'sext',
|
||
'\u2758': 'VerticalSeparator',
|
||
'\u27C8': 'bsolhsub',
|
||
'\u27C9': 'suphsol',
|
||
'\u27F5': 'xlarr',
|
||
'\u27F6': 'xrarr',
|
||
'\u27F7': 'xharr',
|
||
'\u27F8': 'xlArr',
|
||
'\u27F9': 'xrArr',
|
||
'\u27FA': 'xhArr',
|
||
'\u27FC': 'xmap',
|
||
'\u27FF': 'dzigrarr',
|
||
'\u2902': 'nvlArr',
|
||
'\u2903': 'nvrArr',
|
||
'\u2904': 'nvHarr',
|
||
'\u2905': 'Map',
|
||
'\u290C': 'lbarr',
|
||
'\u290D': 'rbarr',
|
||
'\u290E': 'lBarr',
|
||
'\u290F': 'rBarr',
|
||
'\u2910': 'RBarr',
|
||
'\u2911': 'DDotrahd',
|
||
'\u2912': 'UpArrowBar',
|
||
'\u2913': 'DownArrowBar',
|
||
'\u2916': 'Rarrtl',
|
||
'\u2919': 'latail',
|
||
'\u291A': 'ratail',
|
||
'\u291B': 'lAtail',
|
||
'\u291C': 'rAtail',
|
||
'\u291D': 'larrfs',
|
||
'\u291E': 'rarrfs',
|
||
'\u291F': 'larrbfs',
|
||
'\u2920': 'rarrbfs',
|
||
'\u2923': 'nwarhk',
|
||
'\u2924': 'nearhk',
|
||
'\u2925': 'searhk',
|
||
'\u2926': 'swarhk',
|
||
'\u2927': 'nwnear',
|
||
'\u2928': 'toea',
|
||
'\u2929': 'tosa',
|
||
'\u292A': 'swnwar',
|
||
'\u2933': 'rarrc',
|
||
'\u2933\u0338': 'nrarrc',
|
||
'\u2935': 'cudarrr',
|
||
'\u2936': 'ldca',
|
||
'\u2937': 'rdca',
|
||
'\u2938': 'cudarrl',
|
||
'\u2939': 'larrpl',
|
||
'\u293C': 'curarrm',
|
||
'\u293D': 'cularrp',
|
||
'\u2945': 'rarrpl',
|
||
'\u2948': 'harrcir',
|
||
'\u2949': 'Uarrocir',
|
||
'\u294A': 'lurdshar',
|
||
'\u294B': 'ldrushar',
|
||
'\u294E': 'LeftRightVector',
|
||
'\u294F': 'RightUpDownVector',
|
||
'\u2950': 'DownLeftRightVector',
|
||
'\u2951': 'LeftUpDownVector',
|
||
'\u2952': 'LeftVectorBar',
|
||
'\u2953': 'RightVectorBar',
|
||
'\u2954': 'RightUpVectorBar',
|
||
'\u2955': 'RightDownVectorBar',
|
||
'\u2956': 'DownLeftVectorBar',
|
||
'\u2957': 'DownRightVectorBar',
|
||
'\u2958': 'LeftUpVectorBar',
|
||
'\u2959': 'LeftDownVectorBar',
|
||
'\u295A': 'LeftTeeVector',
|
||
'\u295B': 'RightTeeVector',
|
||
'\u295C': 'RightUpTeeVector',
|
||
'\u295D': 'RightDownTeeVector',
|
||
'\u295E': 'DownLeftTeeVector',
|
||
'\u295F': 'DownRightTeeVector',
|
||
'\u2960': 'LeftUpTeeVector',
|
||
'\u2961': 'LeftDownTeeVector',
|
||
'\u2962': 'lHar',
|
||
'\u2963': 'uHar',
|
||
'\u2964': 'rHar',
|
||
'\u2965': 'dHar',
|
||
'\u2966': 'luruhar',
|
||
'\u2967': 'ldrdhar',
|
||
'\u2968': 'ruluhar',
|
||
'\u2969': 'rdldhar',
|
||
'\u296A': 'lharul',
|
||
'\u296B': 'llhard',
|
||
'\u296C': 'rharul',
|
||
'\u296D': 'lrhard',
|
||
'\u296E': 'udhar',
|
||
'\u296F': 'duhar',
|
||
'\u2970': 'RoundImplies',
|
||
'\u2971': 'erarr',
|
||
'\u2972': 'simrarr',
|
||
'\u2973': 'larrsim',
|
||
'\u2974': 'rarrsim',
|
||
'\u2975': 'rarrap',
|
||
'\u2976': 'ltlarr',
|
||
'\u2978': 'gtrarr',
|
||
'\u2979': 'subrarr',
|
||
'\u297B': 'suplarr',
|
||
'\u297C': 'lfisht',
|
||
'\u297D': 'rfisht',
|
||
'\u297E': 'ufisht',
|
||
'\u297F': 'dfisht',
|
||
'\u299A': 'vzigzag',
|
||
'\u299C': 'vangrt',
|
||
'\u299D': 'angrtvbd',
|
||
'\u29A4': 'ange',
|
||
'\u29A5': 'range',
|
||
'\u29A6': 'dwangle',
|
||
'\u29A7': 'uwangle',
|
||
'\u29A8': 'angmsdaa',
|
||
'\u29A9': 'angmsdab',
|
||
'\u29AA': 'angmsdac',
|
||
'\u29AB': 'angmsdad',
|
||
'\u29AC': 'angmsdae',
|
||
'\u29AD': 'angmsdaf',
|
||
'\u29AE': 'angmsdag',
|
||
'\u29AF': 'angmsdah',
|
||
'\u29B0': 'bemptyv',
|
||
'\u29B1': 'demptyv',
|
||
'\u29B2': 'cemptyv',
|
||
'\u29B3': 'raemptyv',
|
||
'\u29B4': 'laemptyv',
|
||
'\u29B5': 'ohbar',
|
||
'\u29B6': 'omid',
|
||
'\u29B7': 'opar',
|
||
'\u29B9': 'operp',
|
||
'\u29BB': 'olcross',
|
||
'\u29BC': 'odsold',
|
||
'\u29BE': 'olcir',
|
||
'\u29BF': 'ofcir',
|
||
'\u29C0': 'olt',
|
||
'\u29C1': 'ogt',
|
||
'\u29C2': 'cirscir',
|
||
'\u29C3': 'cirE',
|
||
'\u29C4': 'solb',
|
||
'\u29C5': 'bsolb',
|
||
'\u29C9': 'boxbox',
|
||
'\u29CD': 'trisb',
|
||
'\u29CE': 'rtriltri',
|
||
'\u29CF': 'LeftTriangleBar',
|
||
'\u29CF\u0338': 'NotLeftTriangleBar',
|
||
'\u29D0': 'RightTriangleBar',
|
||
'\u29D0\u0338': 'NotRightTriangleBar',
|
||
'\u29DC': 'iinfin',
|
||
'\u29DD': 'infintie',
|
||
'\u29DE': 'nvinfin',
|
||
'\u29E3': 'eparsl',
|
||
'\u29E4': 'smeparsl',
|
||
'\u29E5': 'eqvparsl',
|
||
'\u29EB': 'lozf',
|
||
'\u29F4': 'RuleDelayed',
|
||
'\u29F6': 'dsol',
|
||
'\u2A00': 'xodot',
|
||
'\u2A01': 'xoplus',
|
||
'\u2A02': 'xotime',
|
||
'\u2A04': 'xuplus',
|
||
'\u2A06': 'xsqcup',
|
||
'\u2A0D': 'fpartint',
|
||
'\u2A10': 'cirfnint',
|
||
'\u2A11': 'awint',
|
||
'\u2A12': 'rppolint',
|
||
'\u2A13': 'scpolint',
|
||
'\u2A14': 'npolint',
|
||
'\u2A15': 'pointint',
|
||
'\u2A16': 'quatint',
|
||
'\u2A17': 'intlarhk',
|
||
'\u2A22': 'pluscir',
|
||
'\u2A23': 'plusacir',
|
||
'\u2A24': 'simplus',
|
||
'\u2A25': 'plusdu',
|
||
'\u2A26': 'plussim',
|
||
'\u2A27': 'plustwo',
|
||
'\u2A29': 'mcomma',
|
||
'\u2A2A': 'minusdu',
|
||
'\u2A2D': 'loplus',
|
||
'\u2A2E': 'roplus',
|
||
'\u2A2F': 'Cross',
|
||
'\u2A30': 'timesd',
|
||
'\u2A31': 'timesbar',
|
||
'\u2A33': 'smashp',
|
||
'\u2A34': 'lotimes',
|
||
'\u2A35': 'rotimes',
|
||
'\u2A36': 'otimesas',
|
||
'\u2A37': 'Otimes',
|
||
'\u2A38': 'odiv',
|
||
'\u2A39': 'triplus',
|
||
'\u2A3A': 'triminus',
|
||
'\u2A3B': 'tritime',
|
||
'\u2A3C': 'iprod',
|
||
'\u2A3F': 'amalg',
|
||
'\u2A40': 'capdot',
|
||
'\u2A42': 'ncup',
|
||
'\u2A43': 'ncap',
|
||
'\u2A44': 'capand',
|
||
'\u2A45': 'cupor',
|
||
'\u2A46': 'cupcap',
|
||
'\u2A47': 'capcup',
|
||
'\u2A48': 'cupbrcap',
|
||
'\u2A49': 'capbrcup',
|
||
'\u2A4A': 'cupcup',
|
||
'\u2A4B': 'capcap',
|
||
'\u2A4C': 'ccups',
|
||
'\u2A4D': 'ccaps',
|
||
'\u2A50': 'ccupssm',
|
||
'\u2A53': 'And',
|
||
'\u2A54': 'Or',
|
||
'\u2A55': 'andand',
|
||
'\u2A56': 'oror',
|
||
'\u2A57': 'orslope',
|
||
'\u2A58': 'andslope',
|
||
'\u2A5A': 'andv',
|
||
'\u2A5B': 'orv',
|
||
'\u2A5C': 'andd',
|
||
'\u2A5D': 'ord',
|
||
'\u2A5F': 'wedbar',
|
||
'\u2A66': 'sdote',
|
||
'\u2A6A': 'simdot',
|
||
'\u2A6D': 'congdot',
|
||
'\u2A6D\u0338': 'ncongdot',
|
||
'\u2A6E': 'easter',
|
||
'\u2A6F': 'apacir',
|
||
'\u2A70': 'apE',
|
||
'\u2A70\u0338': 'napE',
|
||
'\u2A71': 'eplus',
|
||
'\u2A72': 'pluse',
|
||
'\u2A73': 'Esim',
|
||
'\u2A77': 'eDDot',
|
||
'\u2A78': 'equivDD',
|
||
'\u2A79': 'ltcir',
|
||
'\u2A7A': 'gtcir',
|
||
'\u2A7B': 'ltquest',
|
||
'\u2A7C': 'gtquest',
|
||
'\u2A7D': 'les',
|
||
'\u2A7D\u0338': 'nles',
|
||
'\u2A7E': 'ges',
|
||
'\u2A7E\u0338': 'nges',
|
||
'\u2A7F': 'lesdot',
|
||
'\u2A80': 'gesdot',
|
||
'\u2A81': 'lesdoto',
|
||
'\u2A82': 'gesdoto',
|
||
'\u2A83': 'lesdotor',
|
||
'\u2A84': 'gesdotol',
|
||
'\u2A85': 'lap',
|
||
'\u2A86': 'gap',
|
||
'\u2A87': 'lne',
|
||
'\u2A88': 'gne',
|
||
'\u2A89': 'lnap',
|
||
'\u2A8A': 'gnap',
|
||
'\u2A8B': 'lEg',
|
||
'\u2A8C': 'gEl',
|
||
'\u2A8D': 'lsime',
|
||
'\u2A8E': 'gsime',
|
||
'\u2A8F': 'lsimg',
|
||
'\u2A90': 'gsiml',
|
||
'\u2A91': 'lgE',
|
||
'\u2A92': 'glE',
|
||
'\u2A93': 'lesges',
|
||
'\u2A94': 'gesles',
|
||
'\u2A95': 'els',
|
||
'\u2A96': 'egs',
|
||
'\u2A97': 'elsdot',
|
||
'\u2A98': 'egsdot',
|
||
'\u2A99': 'el',
|
||
'\u2A9A': 'eg',
|
||
'\u2A9D': 'siml',
|
||
'\u2A9E': 'simg',
|
||
'\u2A9F': 'simlE',
|
||
'\u2AA0': 'simgE',
|
||
'\u2AA1': 'LessLess',
|
||
'\u2AA1\u0338': 'NotNestedLessLess',
|
||
'\u2AA2': 'GreaterGreater',
|
||
'\u2AA2\u0338': 'NotNestedGreaterGreater',
|
||
'\u2AA4': 'glj',
|
||
'\u2AA5': 'gla',
|
||
'\u2AA6': 'ltcc',
|
||
'\u2AA7': 'gtcc',
|
||
'\u2AA8': 'lescc',
|
||
'\u2AA9': 'gescc',
|
||
'\u2AAA': 'smt',
|
||
'\u2AAB': 'lat',
|
||
'\u2AAC': 'smte',
|
||
'\u2AAC\uFE00': 'smtes',
|
||
'\u2AAD': 'late',
|
||
'\u2AAD\uFE00': 'lates',
|
||
'\u2AAE': 'bumpE',
|
||
'\u2AAF': 'pre',
|
||
'\u2AAF\u0338': 'npre',
|
||
'\u2AB0': 'sce',
|
||
'\u2AB0\u0338': 'nsce',
|
||
'\u2AB3': 'prE',
|
||
'\u2AB4': 'scE',
|
||
'\u2AB5': 'prnE',
|
||
'\u2AB6': 'scnE',
|
||
'\u2AB7': 'prap',
|
||
'\u2AB8': 'scap',
|
||
'\u2AB9': 'prnap',
|
||
'\u2ABA': 'scnap',
|
||
'\u2ABB': 'Pr',
|
||
'\u2ABC': 'Sc',
|
||
'\u2ABD': 'subdot',
|
||
'\u2ABE': 'supdot',
|
||
'\u2ABF': 'subplus',
|
||
'\u2AC0': 'supplus',
|
||
'\u2AC1': 'submult',
|
||
'\u2AC2': 'supmult',
|
||
'\u2AC3': 'subedot',
|
||
'\u2AC4': 'supedot',
|
||
'\u2AC5': 'subE',
|
||
'\u2AC5\u0338': 'nsubE',
|
||
'\u2AC6': 'supE',
|
||
'\u2AC6\u0338': 'nsupE',
|
||
'\u2AC7': 'subsim',
|
||
'\u2AC8': 'supsim',
|
||
'\u2ACB\uFE00': 'vsubnE',
|
||
'\u2ACB': 'subnE',
|
||
'\u2ACC\uFE00': 'vsupnE',
|
||
'\u2ACC': 'supnE',
|
||
'\u2ACF': 'csub',
|
||
'\u2AD0': 'csup',
|
||
'\u2AD1': 'csube',
|
||
'\u2AD2': 'csupe',
|
||
'\u2AD3': 'subsup',
|
||
'\u2AD4': 'supsub',
|
||
'\u2AD5': 'subsub',
|
||
'\u2AD6': 'supsup',
|
||
'\u2AD7': 'suphsub',
|
||
'\u2AD8': 'supdsub',
|
||
'\u2AD9': 'forkv',
|
||
'\u2ADA': 'topfork',
|
||
'\u2ADB': 'mlcp',
|
||
'\u2AE4': 'Dashv',
|
||
'\u2AE6': 'Vdashl',
|
||
'\u2AE7': 'Barv',
|
||
'\u2AE8': 'vBar',
|
||
'\u2AE9': 'vBarv',
|
||
'\u2AEB': 'Vbar',
|
||
'\u2AEC': 'Not',
|
||
'\u2AED': 'bNot',
|
||
'\u2AEE': 'rnmid',
|
||
'\u2AEF': 'cirmid',
|
||
'\u2AF0': 'midcir',
|
||
'\u2AF1': 'topcir',
|
||
'\u2AF2': 'nhpar',
|
||
'\u2AF3': 'parsim',
|
||
'\u2AFD': 'parsl',
|
||
'\u2AFD\u20E5': 'nparsl',
|
||
'\u266D': 'flat',
|
||
'\u266E': 'natur',
|
||
'\u266F': 'sharp',
|
||
'\xA4': 'curren',
|
||
'\xA2': 'cent',
|
||
$: 'dollar',
|
||
'\xA3': 'pound',
|
||
'\xA5': 'yen',
|
||
'\u20AC': 'euro',
|
||
'\xB9': 'sup1',
|
||
'\xBD': 'half',
|
||
'\u2153': 'frac13',
|
||
'\xBC': 'frac14',
|
||
'\u2155': 'frac15',
|
||
'\u2159': 'frac16',
|
||
'\u215B': 'frac18',
|
||
'\xB2': 'sup2',
|
||
'\u2154': 'frac23',
|
||
'\u2156': 'frac25',
|
||
'\xB3': 'sup3',
|
||
'\xBE': 'frac34',
|
||
'\u2157': 'frac35',
|
||
'\u215C': 'frac38',
|
||
'\u2158': 'frac45',
|
||
'\u215A': 'frac56',
|
||
'\u215D': 'frac58',
|
||
'\u215E': 'frac78',
|
||
'\uD835\uDCB6': 'ascr',
|
||
'\uD835\uDD52': 'aopf',
|
||
'\uD835\uDD1E': 'afr',
|
||
'\uD835\uDD38': 'Aopf',
|
||
'\uD835\uDD04': 'Afr',
|
||
'\uD835\uDC9C': 'Ascr',
|
||
'\xAA': 'ordf',
|
||
'\xE1': 'aacute',
|
||
'\xC1': 'Aacute',
|
||
'\xE0': 'agrave',
|
||
'\xC0': 'Agrave',
|
||
'\u0103': 'abreve',
|
||
'\u0102': 'Abreve',
|
||
'\xE2': 'acirc',
|
||
'\xC2': 'Acirc',
|
||
'\xE5': 'aring',
|
||
'\xC5': 'angst',
|
||
'\xE4': 'auml',
|
||
'\xC4': 'Auml',
|
||
'\xE3': 'atilde',
|
||
'\xC3': 'Atilde',
|
||
'\u0105': 'aogon',
|
||
'\u0104': 'Aogon',
|
||
'\u0101': 'amacr',
|
||
'\u0100': 'Amacr',
|
||
'\xE6': 'aelig',
|
||
'\xC6': 'AElig',
|
||
'\uD835\uDCB7': 'bscr',
|
||
'\uD835\uDD53': 'bopf',
|
||
'\uD835\uDD1F': 'bfr',
|
||
'\uD835\uDD39': 'Bopf',
|
||
'\u212C': 'Bscr',
|
||
'\uD835\uDD05': 'Bfr',
|
||
'\uD835\uDD20': 'cfr',
|
||
'\uD835\uDCB8': 'cscr',
|
||
'\uD835\uDD54': 'copf',
|
||
'\u212D': 'Cfr',
|
||
'\uD835\uDC9E': 'Cscr',
|
||
'\u2102': 'Copf',
|
||
'\u0107': 'cacute',
|
||
'\u0106': 'Cacute',
|
||
'\u0109': 'ccirc',
|
||
'\u0108': 'Ccirc',
|
||
'\u010D': 'ccaron',
|
||
'\u010C': 'Ccaron',
|
||
'\u010B': 'cdot',
|
||
'\u010A': 'Cdot',
|
||
'\xE7': 'ccedil',
|
||
'\xC7': 'Ccedil',
|
||
'\u2105': 'incare',
|
||
'\uD835\uDD21': 'dfr',
|
||
'\u2146': 'dd',
|
||
'\uD835\uDD55': 'dopf',
|
||
'\uD835\uDCB9': 'dscr',
|
||
'\uD835\uDC9F': 'Dscr',
|
||
'\uD835\uDD07': 'Dfr',
|
||
'\u2145': 'DD',
|
||
'\uD835\uDD3B': 'Dopf',
|
||
'\u010F': 'dcaron',
|
||
'\u010E': 'Dcaron',
|
||
'\u0111': 'dstrok',
|
||
'\u0110': 'Dstrok',
|
||
'\xF0': 'eth',
|
||
'\xD0': 'ETH',
|
||
'\u2147': 'ee',
|
||
'\u212F': 'escr',
|
||
'\uD835\uDD22': 'efr',
|
||
'\uD835\uDD56': 'eopf',
|
||
'\u2130': 'Escr',
|
||
'\uD835\uDD08': 'Efr',
|
||
'\uD835\uDD3C': 'Eopf',
|
||
'\xE9': 'eacute',
|
||
'\xC9': 'Eacute',
|
||
'\xE8': 'egrave',
|
||
'\xC8': 'Egrave',
|
||
'\xEA': 'ecirc',
|
||
'\xCA': 'Ecirc',
|
||
'\u011B': 'ecaron',
|
||
'\u011A': 'Ecaron',
|
||
'\xEB': 'euml',
|
||
'\xCB': 'Euml',
|
||
'\u0117': 'edot',
|
||
'\u0116': 'Edot',
|
||
'\u0119': 'eogon',
|
||
'\u0118': 'Eogon',
|
||
'\u0113': 'emacr',
|
||
'\u0112': 'Emacr',
|
||
'\uD835\uDD23': 'ffr',
|
||
'\uD835\uDD57': 'fopf',
|
||
'\uD835\uDCBB': 'fscr',
|
||
'\uD835\uDD09': 'Ffr',
|
||
'\uD835\uDD3D': 'Fopf',
|
||
'\u2131': 'Fscr',
|
||
'\uFB00': 'fflig',
|
||
'\uFB03': 'ffilig',
|
||
'\uFB04': 'ffllig',
|
||
'\uFB01': 'filig',
|
||
fj: 'fjlig',
|
||
'\uFB02': 'fllig',
|
||
'\u0192': 'fnof',
|
||
'\u210A': 'gscr',
|
||
'\uD835\uDD58': 'gopf',
|
||
'\uD835\uDD24': 'gfr',
|
||
'\uD835\uDCA2': 'Gscr',
|
||
'\uD835\uDD3E': 'Gopf',
|
||
'\uD835\uDD0A': 'Gfr',
|
||
'\u01F5': 'gacute',
|
||
'\u011F': 'gbreve',
|
||
'\u011E': 'Gbreve',
|
||
'\u011D': 'gcirc',
|
||
'\u011C': 'Gcirc',
|
||
'\u0121': 'gdot',
|
||
'\u0120': 'Gdot',
|
||
'\u0122': 'Gcedil',
|
||
'\uD835\uDD25': 'hfr',
|
||
'\u210E': 'planckh',
|
||
'\uD835\uDCBD': 'hscr',
|
||
'\uD835\uDD59': 'hopf',
|
||
'\u210B': 'Hscr',
|
||
'\u210C': 'Hfr',
|
||
'\u210D': 'Hopf',
|
||
'\u0125': 'hcirc',
|
||
'\u0124': 'Hcirc',
|
||
'\u210F': 'hbar',
|
||
'\u0127': 'hstrok',
|
||
'\u0126': 'Hstrok',
|
||
'\uD835\uDD5A': 'iopf',
|
||
'\uD835\uDD26': 'ifr',
|
||
'\uD835\uDCBE': 'iscr',
|
||
'\u2148': 'ii',
|
||
'\uD835\uDD40': 'Iopf',
|
||
'\u2110': 'Iscr',
|
||
'\u2111': 'Im',
|
||
'\xED': 'iacute',
|
||
'\xCD': 'Iacute',
|
||
'\xEC': 'igrave',
|
||
'\xCC': 'Igrave',
|
||
'\xEE': 'icirc',
|
||
'\xCE': 'Icirc',
|
||
'\xEF': 'iuml',
|
||
'\xCF': 'Iuml',
|
||
'\u0129': 'itilde',
|
||
'\u0128': 'Itilde',
|
||
'\u0130': 'Idot',
|
||
'\u012F': 'iogon',
|
||
'\u012E': 'Iogon',
|
||
'\u012B': 'imacr',
|
||
'\u012A': 'Imacr',
|
||
'\u0133': 'ijlig',
|
||
'\u0132': 'IJlig',
|
||
'\u0131': 'imath',
|
||
'\uD835\uDCBF': 'jscr',
|
||
'\uD835\uDD5B': 'jopf',
|
||
'\uD835\uDD27': 'jfr',
|
||
'\uD835\uDCA5': 'Jscr',
|
||
'\uD835\uDD0D': 'Jfr',
|
||
'\uD835\uDD41': 'Jopf',
|
||
'\u0135': 'jcirc',
|
||
'\u0134': 'Jcirc',
|
||
'\u0237': 'jmath',
|
||
'\uD835\uDD5C': 'kopf',
|
||
'\uD835\uDCC0': 'kscr',
|
||
'\uD835\uDD28': 'kfr',
|
||
'\uD835\uDCA6': 'Kscr',
|
||
'\uD835\uDD42': 'Kopf',
|
||
'\uD835\uDD0E': 'Kfr',
|
||
'\u0137': 'kcedil',
|
||
'\u0136': 'Kcedil',
|
||
'\uD835\uDD29': 'lfr',
|
||
'\uD835\uDCC1': 'lscr',
|
||
'\u2113': 'ell',
|
||
'\uD835\uDD5D': 'lopf',
|
||
'\u2112': 'Lscr',
|
||
'\uD835\uDD0F': 'Lfr',
|
||
'\uD835\uDD43': 'Lopf',
|
||
'\u013A': 'lacute',
|
||
'\u0139': 'Lacute',
|
||
'\u013E': 'lcaron',
|
||
'\u013D': 'Lcaron',
|
||
'\u013C': 'lcedil',
|
||
'\u013B': 'Lcedil',
|
||
'\u0142': 'lstrok',
|
||
'\u0141': 'Lstrok',
|
||
'\u0140': 'lmidot',
|
||
'\u013F': 'Lmidot',
|
||
'\uD835\uDD2A': 'mfr',
|
||
'\uD835\uDD5E': 'mopf',
|
||
'\uD835\uDCC2': 'mscr',
|
||
'\uD835\uDD10': 'Mfr',
|
||
'\uD835\uDD44': 'Mopf',
|
||
'\u2133': 'Mscr',
|
||
'\uD835\uDD2B': 'nfr',
|
||
'\uD835\uDD5F': 'nopf',
|
||
'\uD835\uDCC3': 'nscr',
|
||
'\u2115': 'Nopf',
|
||
'\uD835\uDCA9': 'Nscr',
|
||
'\uD835\uDD11': 'Nfr',
|
||
'\u0144': 'nacute',
|
||
'\u0143': 'Nacute',
|
||
'\u0148': 'ncaron',
|
||
'\u0147': 'Ncaron',
|
||
'\xF1': 'ntilde',
|
||
'\xD1': 'Ntilde',
|
||
'\u0146': 'ncedil',
|
||
'\u0145': 'Ncedil',
|
||
'\u2116': 'numero',
|
||
'\u014B': 'eng',
|
||
'\u014A': 'ENG',
|
||
'\uD835\uDD60': 'oopf',
|
||
'\uD835\uDD2C': 'ofr',
|
||
'\u2134': 'oscr',
|
||
'\uD835\uDCAA': 'Oscr',
|
||
'\uD835\uDD12': 'Ofr',
|
||
'\uD835\uDD46': 'Oopf',
|
||
'\xBA': 'ordm',
|
||
'\xF3': 'oacute',
|
||
'\xD3': 'Oacute',
|
||
'\xF2': 'ograve',
|
||
'\xD2': 'Ograve',
|
||
'\xF4': 'ocirc',
|
||
'\xD4': 'Ocirc',
|
||
'\xF6': 'ouml',
|
||
'\xD6': 'Ouml',
|
||
'\u0151': 'odblac',
|
||
'\u0150': 'Odblac',
|
||
'\xF5': 'otilde',
|
||
'\xD5': 'Otilde',
|
||
'\xF8': 'oslash',
|
||
'\xD8': 'Oslash',
|
||
'\u014D': 'omacr',
|
||
'\u014C': 'Omacr',
|
||
'\u0153': 'oelig',
|
||
'\u0152': 'OElig',
|
||
'\uD835\uDD2D': 'pfr',
|
||
'\uD835\uDCC5': 'pscr',
|
||
'\uD835\uDD61': 'popf',
|
||
'\u2119': 'Popf',
|
||
'\uD835\uDD13': 'Pfr',
|
||
'\uD835\uDCAB': 'Pscr',
|
||
'\uD835\uDD62': 'qopf',
|
||
'\uD835\uDD2E': 'qfr',
|
||
'\uD835\uDCC6': 'qscr',
|
||
'\uD835\uDCAC': 'Qscr',
|
||
'\uD835\uDD14': 'Qfr',
|
||
'\u211A': 'Qopf',
|
||
'\u0138': 'kgreen',
|
||
'\uD835\uDD2F': 'rfr',
|
||
'\uD835\uDD63': 'ropf',
|
||
'\uD835\uDCC7': 'rscr',
|
||
'\u211B': 'Rscr',
|
||
'\u211C': 'Re',
|
||
'\u211D': 'Ropf',
|
||
'\u0155': 'racute',
|
||
'\u0154': 'Racute',
|
||
'\u0159': 'rcaron',
|
||
'\u0158': 'Rcaron',
|
||
'\u0157': 'rcedil',
|
||
'\u0156': 'Rcedil',
|
||
'\uD835\uDD64': 'sopf',
|
||
'\uD835\uDCC8': 'sscr',
|
||
'\uD835\uDD30': 'sfr',
|
||
'\uD835\uDD4A': 'Sopf',
|
||
'\uD835\uDD16': 'Sfr',
|
||
'\uD835\uDCAE': 'Sscr',
|
||
'\u24C8': 'oS',
|
||
'\u015B': 'sacute',
|
||
'\u015A': 'Sacute',
|
||
'\u015D': 'scirc',
|
||
'\u015C': 'Scirc',
|
||
'\u0161': 'scaron',
|
||
'\u0160': 'Scaron',
|
||
'\u015F': 'scedil',
|
||
'\u015E': 'Scedil',
|
||
'\xDF': 'szlig',
|
||
'\uD835\uDD31': 'tfr',
|
||
'\uD835\uDCC9': 'tscr',
|
||
'\uD835\uDD65': 'topf',
|
||
'\uD835\uDCAF': 'Tscr',
|
||
'\uD835\uDD17': 'Tfr',
|
||
'\uD835\uDD4B': 'Topf',
|
||
'\u0165': 'tcaron',
|
||
'\u0164': 'Tcaron',
|
||
'\u0163': 'tcedil',
|
||
'\u0162': 'Tcedil',
|
||
'\u2122': 'trade',
|
||
'\u0167': 'tstrok',
|
||
'\u0166': 'Tstrok',
|
||
'\uD835\uDCCA': 'uscr',
|
||
'\uD835\uDD66': 'uopf',
|
||
'\uD835\uDD32': 'ufr',
|
||
'\uD835\uDD4C': 'Uopf',
|
||
'\uD835\uDD18': 'Ufr',
|
||
'\uD835\uDCB0': 'Uscr',
|
||
'\xFA': 'uacute',
|
||
'\xDA': 'Uacute',
|
||
'\xF9': 'ugrave',
|
||
'\xD9': 'Ugrave',
|
||
'\u016D': 'ubreve',
|
||
'\u016C': 'Ubreve',
|
||
'\xFB': 'ucirc',
|
||
'\xDB': 'Ucirc',
|
||
'\u016F': 'uring',
|
||
'\u016E': 'Uring',
|
||
'\xFC': 'uuml',
|
||
'\xDC': 'Uuml',
|
||
'\u0171': 'udblac',
|
||
'\u0170': 'Udblac',
|
||
'\u0169': 'utilde',
|
||
'\u0168': 'Utilde',
|
||
'\u0173': 'uogon',
|
||
'\u0172': 'Uogon',
|
||
'\u016B': 'umacr',
|
||
'\u016A': 'Umacr',
|
||
'\uD835\uDD33': 'vfr',
|
||
'\uD835\uDD67': 'vopf',
|
||
'\uD835\uDCCB': 'vscr',
|
||
'\uD835\uDD19': 'Vfr',
|
||
'\uD835\uDD4D': 'Vopf',
|
||
'\uD835\uDCB1': 'Vscr',
|
||
'\uD835\uDD68': 'wopf',
|
||
'\uD835\uDCCC': 'wscr',
|
||
'\uD835\uDD34': 'wfr',
|
||
'\uD835\uDCB2': 'Wscr',
|
||
'\uD835\uDD4E': 'Wopf',
|
||
'\uD835\uDD1A': 'Wfr',
|
||
'\u0175': 'wcirc',
|
||
'\u0174': 'Wcirc',
|
||
'\uD835\uDD35': 'xfr',
|
||
'\uD835\uDCCD': 'xscr',
|
||
'\uD835\uDD69': 'xopf',
|
||
'\uD835\uDD4F': 'Xopf',
|
||
'\uD835\uDD1B': 'Xfr',
|
||
'\uD835\uDCB3': 'Xscr',
|
||
'\uD835\uDD36': 'yfr',
|
||
'\uD835\uDCCE': 'yscr',
|
||
'\uD835\uDD6A': 'yopf',
|
||
'\uD835\uDCB4': 'Yscr',
|
||
'\uD835\uDD1C': 'Yfr',
|
||
'\uD835\uDD50': 'Yopf',
|
||
'\xFD': 'yacute',
|
||
'\xDD': 'Yacute',
|
||
'\u0177': 'ycirc',
|
||
'\u0176': 'Ycirc',
|
||
'\xFF': 'yuml',
|
||
'\u0178': 'Yuml',
|
||
'\uD835\uDCCF': 'zscr',
|
||
'\uD835\uDD37': 'zfr',
|
||
'\uD835\uDD6B': 'zopf',
|
||
'\u2128': 'Zfr',
|
||
'\u2124': 'Zopf',
|
||
'\uD835\uDCB5': 'Zscr',
|
||
'\u017A': 'zacute',
|
||
'\u0179': 'Zacute',
|
||
'\u017E': 'zcaron',
|
||
'\u017D': 'Zcaron',
|
||
'\u017C': 'zdot',
|
||
'\u017B': 'Zdot',
|
||
'\u01B5': 'imped',
|
||
'\xFE': 'thorn',
|
||
'\xDE': 'THORN',
|
||
'\u0149': 'napos',
|
||
'\u03B1': 'alpha',
|
||
'\u0391': 'Alpha',
|
||
'\u03B2': 'beta',
|
||
'\u0392': 'Beta',
|
||
'\u03B3': 'gamma',
|
||
'\u0393': 'Gamma',
|
||
'\u03B4': 'delta',
|
||
'\u0394': 'Delta',
|
||
'\u03B5': 'epsi',
|
||
'\u03F5': 'epsiv',
|
||
'\u0395': 'Epsilon',
|
||
'\u03DD': 'gammad',
|
||
'\u03DC': 'Gammad',
|
||
'\u03B6': 'zeta',
|
||
'\u0396': 'Zeta',
|
||
'\u03B7': 'eta',
|
||
'\u0397': 'Eta',
|
||
'\u03B8': 'theta',
|
||
'\u03D1': 'thetav',
|
||
'\u0398': 'Theta',
|
||
'\u03B9': 'iota',
|
||
'\u0399': 'Iota',
|
||
'\u03BA': 'kappa',
|
||
'\u03F0': 'kappav',
|
||
'\u039A': 'Kappa',
|
||
'\u03BB': 'lambda',
|
||
'\u039B': 'Lambda',
|
||
'\u03BC': 'mu',
|
||
'\xB5': 'micro',
|
||
'\u039C': 'Mu',
|
||
'\u03BD': 'nu',
|
||
'\u039D': 'Nu',
|
||
'\u03BE': 'xi',
|
||
'\u039E': 'Xi',
|
||
'\u03BF': 'omicron',
|
||
'\u039F': 'Omicron',
|
||
'\u03C0': 'pi',
|
||
'\u03D6': 'piv',
|
||
'\u03A0': 'Pi',
|
||
'\u03C1': 'rho',
|
||
'\u03F1': 'rhov',
|
||
'\u03A1': 'Rho',
|
||
'\u03C3': 'sigma',
|
||
'\u03A3': 'Sigma',
|
||
'\u03C2': 'sigmaf',
|
||
'\u03C4': 'tau',
|
||
'\u03A4': 'Tau',
|
||
'\u03C5': 'upsi',
|
||
'\u03A5': 'Upsilon',
|
||
'\u03D2': 'Upsi',
|
||
'\u03C6': 'phi',
|
||
'\u03D5': 'phiv',
|
||
'\u03A6': 'Phi',
|
||
'\u03C7': 'chi',
|
||
'\u03A7': 'Chi',
|
||
'\u03C8': 'psi',
|
||
'\u03A8': 'Psi',
|
||
'\u03C9': 'omega',
|
||
'\u03A9': 'ohm',
|
||
'\u0430': 'acy',
|
||
'\u0410': 'Acy',
|
||
'\u0431': 'bcy',
|
||
'\u0411': 'Bcy',
|
||
'\u0432': 'vcy',
|
||
'\u0412': 'Vcy',
|
||
'\u0433': 'gcy',
|
||
'\u0413': 'Gcy',
|
||
'\u0453': 'gjcy',
|
||
'\u0403': 'GJcy',
|
||
'\u0434': 'dcy',
|
||
'\u0414': 'Dcy',
|
||
'\u0452': 'djcy',
|
||
'\u0402': 'DJcy',
|
||
'\u0435': 'iecy',
|
||
'\u0415': 'IEcy',
|
||
'\u0451': 'iocy',
|
||
'\u0401': 'IOcy',
|
||
'\u0454': 'jukcy',
|
||
'\u0404': 'Jukcy',
|
||
'\u0436': 'zhcy',
|
||
'\u0416': 'ZHcy',
|
||
'\u0437': 'zcy',
|
||
'\u0417': 'Zcy',
|
||
'\u0455': 'dscy',
|
||
'\u0405': 'DScy',
|
||
'\u0438': 'icy',
|
||
'\u0418': 'Icy',
|
||
'\u0456': 'iukcy',
|
||
'\u0406': 'Iukcy',
|
||
'\u0457': 'yicy',
|
||
'\u0407': 'YIcy',
|
||
'\u0439': 'jcy',
|
||
'\u0419': 'Jcy',
|
||
'\u0458': 'jsercy',
|
||
'\u0408': 'Jsercy',
|
||
'\u043A': 'kcy',
|
||
'\u041A': 'Kcy',
|
||
'\u045C': 'kjcy',
|
||
'\u040C': 'KJcy',
|
||
'\u043B': 'lcy',
|
||
'\u041B': 'Lcy',
|
||
'\u0459': 'ljcy',
|
||
'\u0409': 'LJcy',
|
||
'\u043C': 'mcy',
|
||
'\u041C': 'Mcy',
|
||
'\u043D': 'ncy',
|
||
'\u041D': 'Ncy',
|
||
'\u045A': 'njcy',
|
||
'\u040A': 'NJcy',
|
||
'\u043E': 'ocy',
|
||
'\u041E': 'Ocy',
|
||
'\u043F': 'pcy',
|
||
'\u041F': 'Pcy',
|
||
'\u0440': 'rcy',
|
||
'\u0420': 'Rcy',
|
||
'\u0441': 'scy',
|
||
'\u0421': 'Scy',
|
||
'\u0442': 'tcy',
|
||
'\u0422': 'Tcy',
|
||
'\u045B': 'tshcy',
|
||
'\u040B': 'TSHcy',
|
||
'\u0443': 'ucy',
|
||
'\u0423': 'Ucy',
|
||
'\u045E': 'ubrcy',
|
||
'\u040E': 'Ubrcy',
|
||
'\u0444': 'fcy',
|
||
'\u0424': 'Fcy',
|
||
'\u0445': 'khcy',
|
||
'\u0425': 'KHcy',
|
||
'\u0446': 'tscy',
|
||
'\u0426': 'TScy',
|
||
'\u0447': 'chcy',
|
||
'\u0427': 'CHcy',
|
||
'\u045F': 'dzcy',
|
||
'\u040F': 'DZcy',
|
||
'\u0448': 'shcy',
|
||
'\u0428': 'SHcy',
|
||
'\u0449': 'shchcy',
|
||
'\u0429': 'SHCHcy',
|
||
'\u044A': 'hardcy',
|
||
'\u042A': 'HARDcy',
|
||
'\u044B': 'ycy',
|
||
'\u042B': 'Ycy',
|
||
'\u044C': 'softcy',
|
||
'\u042C': 'SOFTcy',
|
||
'\u044D': 'ecy',
|
||
'\u042D': 'Ecy',
|
||
'\u044E': 'yucy',
|
||
'\u042E': 'YUcy',
|
||
'\u044F': 'yacy',
|
||
'\u042F': 'YAcy',
|
||
'\u2135': 'aleph',
|
||
'\u2136': 'beth',
|
||
'\u2137': 'gimel',
|
||
'\u2138': 'daleth'
|
||
}
|
||
|
||
var regexEscape = /["&'<>`]/g
|
||
var escapeMap = {
|
||
'"': '"',
|
||
'&': '&',
|
||
"'": ''',
|
||
'<': '<',
|
||
// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
|
||
// following is not strictly necessary unless it’s part of a tag or an
|
||
// unquoted attribute value. We’re only escaping it to support those
|
||
// situations, and for XML support.
|
||
'>': '>',
|
||
// In Internet Explorer ≤ 8, the backtick character can be used
|
||
// to break out of (un)quoted attribute values or HTML comments.
|
||
// See http://html5sec.org/#102, http://html5sec.org/#108, and
|
||
// http://html5sec.org/#133.
|
||
'`': '`'
|
||
}
|
||
|
||
var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/
|
||
var regexInvalidRawCodePoint =
|
||
/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/
|
||
var regexDecode =
|
||
/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g
|
||
var decodeMap = {
|
||
aacute: '\xE1',
|
||
Aacute: '\xC1',
|
||
abreve: '\u0103',
|
||
Abreve: '\u0102',
|
||
ac: '\u223E',
|
||
acd: '\u223F',
|
||
acE: '\u223E\u0333',
|
||
acirc: '\xE2',
|
||
Acirc: '\xC2',
|
||
acute: '\xB4',
|
||
acy: '\u0430',
|
||
Acy: '\u0410',
|
||
aelig: '\xE6',
|
||
AElig: '\xC6',
|
||
af: '\u2061',
|
||
afr: '\uD835\uDD1E',
|
||
Afr: '\uD835\uDD04',
|
||
agrave: '\xE0',
|
||
Agrave: '\xC0',
|
||
alefsym: '\u2135',
|
||
aleph: '\u2135',
|
||
alpha: '\u03B1',
|
||
Alpha: '\u0391',
|
||
amacr: '\u0101',
|
||
Amacr: '\u0100',
|
||
amalg: '\u2A3F',
|
||
amp: '&',
|
||
AMP: '&',
|
||
and: '\u2227',
|
||
And: '\u2A53',
|
||
andand: '\u2A55',
|
||
andd: '\u2A5C',
|
||
andslope: '\u2A58',
|
||
andv: '\u2A5A',
|
||
ang: '\u2220',
|
||
ange: '\u29A4',
|
||
angle: '\u2220',
|
||
angmsd: '\u2221',
|
||
angmsdaa: '\u29A8',
|
||
angmsdab: '\u29A9',
|
||
angmsdac: '\u29AA',
|
||
angmsdad: '\u29AB',
|
||
angmsdae: '\u29AC',
|
||
angmsdaf: '\u29AD',
|
||
angmsdag: '\u29AE',
|
||
angmsdah: '\u29AF',
|
||
angrt: '\u221F',
|
||
angrtvb: '\u22BE',
|
||
angrtvbd: '\u299D',
|
||
angsph: '\u2222',
|
||
angst: '\xC5',
|
||
angzarr: '\u237C',
|
||
aogon: '\u0105',
|
||
Aogon: '\u0104',
|
||
aopf: '\uD835\uDD52',
|
||
Aopf: '\uD835\uDD38',
|
||
ap: '\u2248',
|
||
apacir: '\u2A6F',
|
||
ape: '\u224A',
|
||
apE: '\u2A70',
|
||
apid: '\u224B',
|
||
apos: "'",
|
||
ApplyFunction: '\u2061',
|
||
approx: '\u2248',
|
||
approxeq: '\u224A',
|
||
aring: '\xE5',
|
||
Aring: '\xC5',
|
||
ascr: '\uD835\uDCB6',
|
||
Ascr: '\uD835\uDC9C',
|
||
Assign: '\u2254',
|
||
ast: '*',
|
||
asymp: '\u2248',
|
||
asympeq: '\u224D',
|
||
atilde: '\xE3',
|
||
Atilde: '\xC3',
|
||
auml: '\xE4',
|
||
Auml: '\xC4',
|
||
awconint: '\u2233',
|
||
awint: '\u2A11',
|
||
backcong: '\u224C',
|
||
backepsilon: '\u03F6',
|
||
backprime: '\u2035',
|
||
backsim: '\u223D',
|
||
backsimeq: '\u22CD',
|
||
Backslash: '\u2216',
|
||
Barv: '\u2AE7',
|
||
barvee: '\u22BD',
|
||
barwed: '\u2305',
|
||
Barwed: '\u2306',
|
||
barwedge: '\u2305',
|
||
bbrk: '\u23B5',
|
||
bbrktbrk: '\u23B6',
|
||
bcong: '\u224C',
|
||
bcy: '\u0431',
|
||
Bcy: '\u0411',
|
||
bdquo: '\u201E',
|
||
becaus: '\u2235',
|
||
because: '\u2235',
|
||
Because: '\u2235',
|
||
bemptyv: '\u29B0',
|
||
bepsi: '\u03F6',
|
||
bernou: '\u212C',
|
||
Bernoullis: '\u212C',
|
||
beta: '\u03B2',
|
||
Beta: '\u0392',
|
||
beth: '\u2136',
|
||
between: '\u226C',
|
||
bfr: '\uD835\uDD1F',
|
||
Bfr: '\uD835\uDD05',
|
||
bigcap: '\u22C2',
|
||
bigcirc: '\u25EF',
|
||
bigcup: '\u22C3',
|
||
bigodot: '\u2A00',
|
||
bigoplus: '\u2A01',
|
||
bigotimes: '\u2A02',
|
||
bigsqcup: '\u2A06',
|
||
bigstar: '\u2605',
|
||
bigtriangledown: '\u25BD',
|
||
bigtriangleup: '\u25B3',
|
||
biguplus: '\u2A04',
|
||
bigvee: '\u22C1',
|
||
bigwedge: '\u22C0',
|
||
bkarow: '\u290D',
|
||
blacklozenge: '\u29EB',
|
||
blacksquare: '\u25AA',
|
||
blacktriangle: '\u25B4',
|
||
blacktriangledown: '\u25BE',
|
||
blacktriangleleft: '\u25C2',
|
||
blacktriangleright: '\u25B8',
|
||
blank: '\u2423',
|
||
blk12: '\u2592',
|
||
blk14: '\u2591',
|
||
blk34: '\u2593',
|
||
block: '\u2588',
|
||
bne: '=\u20E5',
|
||
bnequiv: '\u2261\u20E5',
|
||
bnot: '\u2310',
|
||
bNot: '\u2AED',
|
||
bopf: '\uD835\uDD53',
|
||
Bopf: '\uD835\uDD39',
|
||
bot: '\u22A5',
|
||
bottom: '\u22A5',
|
||
bowtie: '\u22C8',
|
||
boxbox: '\u29C9',
|
||
boxdl: '\u2510',
|
||
boxdL: '\u2555',
|
||
boxDl: '\u2556',
|
||
boxDL: '\u2557',
|
||
boxdr: '\u250C',
|
||
boxdR: '\u2552',
|
||
boxDr: '\u2553',
|
||
boxDR: '\u2554',
|
||
boxh: '\u2500',
|
||
boxH: '\u2550',
|
||
boxhd: '\u252C',
|
||
boxhD: '\u2565',
|
||
boxHd: '\u2564',
|
||
boxHD: '\u2566',
|
||
boxhu: '\u2534',
|
||
boxhU: '\u2568',
|
||
boxHu: '\u2567',
|
||
boxHU: '\u2569',
|
||
boxminus: '\u229F',
|
||
boxplus: '\u229E',
|
||
boxtimes: '\u22A0',
|
||
boxul: '\u2518',
|
||
boxuL: '\u255B',
|
||
boxUl: '\u255C',
|
||
boxUL: '\u255D',
|
||
boxur: '\u2514',
|
||
boxuR: '\u2558',
|
||
boxUr: '\u2559',
|
||
boxUR: '\u255A',
|
||
boxv: '\u2502',
|
||
boxV: '\u2551',
|
||
boxvh: '\u253C',
|
||
boxvH: '\u256A',
|
||
boxVh: '\u256B',
|
||
boxVH: '\u256C',
|
||
boxvl: '\u2524',
|
||
boxvL: '\u2561',
|
||
boxVl: '\u2562',
|
||
boxVL: '\u2563',
|
||
boxvr: '\u251C',
|
||
boxvR: '\u255E',
|
||
boxVr: '\u255F',
|
||
boxVR: '\u2560',
|
||
bprime: '\u2035',
|
||
breve: '\u02D8',
|
||
Breve: '\u02D8',
|
||
brvbar: '\xA6',
|
||
bscr: '\uD835\uDCB7',
|
||
Bscr: '\u212C',
|
||
bsemi: '\u204F',
|
||
bsim: '\u223D',
|
||
bsime: '\u22CD',
|
||
bsol: '\\',
|
||
bsolb: '\u29C5',
|
||
bsolhsub: '\u27C8',
|
||
bull: '\u2022',
|
||
bullet: '\u2022',
|
||
bump: '\u224E',
|
||
bumpe: '\u224F',
|
||
bumpE: '\u2AAE',
|
||
bumpeq: '\u224F',
|
||
Bumpeq: '\u224E',
|
||
cacute: '\u0107',
|
||
Cacute: '\u0106',
|
||
cap: '\u2229',
|
||
Cap: '\u22D2',
|
||
capand: '\u2A44',
|
||
capbrcup: '\u2A49',
|
||
capcap: '\u2A4B',
|
||
capcup: '\u2A47',
|
||
capdot: '\u2A40',
|
||
CapitalDifferentialD: '\u2145',
|
||
caps: '\u2229\uFE00',
|
||
caret: '\u2041',
|
||
caron: '\u02C7',
|
||
Cayleys: '\u212D',
|
||
ccaps: '\u2A4D',
|
||
ccaron: '\u010D',
|
||
Ccaron: '\u010C',
|
||
ccedil: '\xE7',
|
||
Ccedil: '\xC7',
|
||
ccirc: '\u0109',
|
||
Ccirc: '\u0108',
|
||
Cconint: '\u2230',
|
||
ccups: '\u2A4C',
|
||
ccupssm: '\u2A50',
|
||
cdot: '\u010B',
|
||
Cdot: '\u010A',
|
||
cedil: '\xB8',
|
||
Cedilla: '\xB8',
|
||
cemptyv: '\u29B2',
|
||
cent: '\xA2',
|
||
centerdot: '\xB7',
|
||
CenterDot: '\xB7',
|
||
cfr: '\uD835\uDD20',
|
||
Cfr: '\u212D',
|
||
chcy: '\u0447',
|
||
CHcy: '\u0427',
|
||
check: '\u2713',
|
||
checkmark: '\u2713',
|
||
chi: '\u03C7',
|
||
Chi: '\u03A7',
|
||
cir: '\u25CB',
|
||
circ: '\u02C6',
|
||
circeq: '\u2257',
|
||
circlearrowleft: '\u21BA',
|
||
circlearrowright: '\u21BB',
|
||
circledast: '\u229B',
|
||
circledcirc: '\u229A',
|
||
circleddash: '\u229D',
|
||
CircleDot: '\u2299',
|
||
circledR: '\xAE',
|
||
circledS: '\u24C8',
|
||
CircleMinus: '\u2296',
|
||
CirclePlus: '\u2295',
|
||
CircleTimes: '\u2297',
|
||
cire: '\u2257',
|
||
cirE: '\u29C3',
|
||
cirfnint: '\u2A10',
|
||
cirmid: '\u2AEF',
|
||
cirscir: '\u29C2',
|
||
ClockwiseContourIntegral: '\u2232',
|
||
CloseCurlyDoubleQuote: '\u201D',
|
||
CloseCurlyQuote: '\u2019',
|
||
clubs: '\u2663',
|
||
clubsuit: '\u2663',
|
||
colon: ':',
|
||
Colon: '\u2237',
|
||
colone: '\u2254',
|
||
Colone: '\u2A74',
|
||
coloneq: '\u2254',
|
||
comma: ',',
|
||
commat: '@',
|
||
comp: '\u2201',
|
||
compfn: '\u2218',
|
||
complement: '\u2201',
|
||
complexes: '\u2102',
|
||
cong: '\u2245',
|
||
congdot: '\u2A6D',
|
||
Congruent: '\u2261',
|
||
conint: '\u222E',
|
||
Conint: '\u222F',
|
||
ContourIntegral: '\u222E',
|
||
copf: '\uD835\uDD54',
|
||
Copf: '\u2102',
|
||
coprod: '\u2210',
|
||
Coproduct: '\u2210',
|
||
copy: '\xA9',
|
||
COPY: '\xA9',
|
||
copysr: '\u2117',
|
||
CounterClockwiseContourIntegral: '\u2233',
|
||
crarr: '\u21B5',
|
||
cross: '\u2717',
|
||
Cross: '\u2A2F',
|
||
cscr: '\uD835\uDCB8',
|
||
Cscr: '\uD835\uDC9E',
|
||
csub: '\u2ACF',
|
||
csube: '\u2AD1',
|
||
csup: '\u2AD0',
|
||
csupe: '\u2AD2',
|
||
ctdot: '\u22EF',
|
||
cudarrl: '\u2938',
|
||
cudarrr: '\u2935',
|
||
cuepr: '\u22DE',
|
||
cuesc: '\u22DF',
|
||
cularr: '\u21B6',
|
||
cularrp: '\u293D',
|
||
cup: '\u222A',
|
||
Cup: '\u22D3',
|
||
cupbrcap: '\u2A48',
|
||
cupcap: '\u2A46',
|
||
CupCap: '\u224D',
|
||
cupcup: '\u2A4A',
|
||
cupdot: '\u228D',
|
||
cupor: '\u2A45',
|
||
cups: '\u222A\uFE00',
|
||
curarr: '\u21B7',
|
||
curarrm: '\u293C',
|
||
curlyeqprec: '\u22DE',
|
||
curlyeqsucc: '\u22DF',
|
||
curlyvee: '\u22CE',
|
||
curlywedge: '\u22CF',
|
||
curren: '\xA4',
|
||
curvearrowleft: '\u21B6',
|
||
curvearrowright: '\u21B7',
|
||
cuvee: '\u22CE',
|
||
cuwed: '\u22CF',
|
||
cwconint: '\u2232',
|
||
cwint: '\u2231',
|
||
cylcty: '\u232D',
|
||
dagger: '\u2020',
|
||
Dagger: '\u2021',
|
||
daleth: '\u2138',
|
||
darr: '\u2193',
|
||
dArr: '\u21D3',
|
||
Darr: '\u21A1',
|
||
dash: '\u2010',
|
||
dashv: '\u22A3',
|
||
Dashv: '\u2AE4',
|
||
dbkarow: '\u290F',
|
||
dblac: '\u02DD',
|
||
dcaron: '\u010F',
|
||
Dcaron: '\u010E',
|
||
dcy: '\u0434',
|
||
Dcy: '\u0414',
|
||
dd: '\u2146',
|
||
DD: '\u2145',
|
||
ddagger: '\u2021',
|
||
ddarr: '\u21CA',
|
||
DDotrahd: '\u2911',
|
||
ddotseq: '\u2A77',
|
||
deg: '\xB0',
|
||
Del: '\u2207',
|
||
delta: '\u03B4',
|
||
Delta: '\u0394',
|
||
demptyv: '\u29B1',
|
||
dfisht: '\u297F',
|
||
dfr: '\uD835\uDD21',
|
||
Dfr: '\uD835\uDD07',
|
||
dHar: '\u2965',
|
||
dharl: '\u21C3',
|
||
dharr: '\u21C2',
|
||
DiacriticalAcute: '\xB4',
|
||
DiacriticalDot: '\u02D9',
|
||
DiacriticalDoubleAcute: '\u02DD',
|
||
DiacriticalGrave: '`',
|
||
DiacriticalTilde: '\u02DC',
|
||
diam: '\u22C4',
|
||
diamond: '\u22C4',
|
||
Diamond: '\u22C4',
|
||
diamondsuit: '\u2666',
|
||
diams: '\u2666',
|
||
die: '\xA8',
|
||
DifferentialD: '\u2146',
|
||
digamma: '\u03DD',
|
||
disin: '\u22F2',
|
||
div: '\xF7',
|
||
divide: '\xF7',
|
||
divideontimes: '\u22C7',
|
||
divonx: '\u22C7',
|
||
djcy: '\u0452',
|
||
DJcy: '\u0402',
|
||
dlcorn: '\u231E',
|
||
dlcrop: '\u230D',
|
||
dollar: '$',
|
||
dopf: '\uD835\uDD55',
|
||
Dopf: '\uD835\uDD3B',
|
||
dot: '\u02D9',
|
||
Dot: '\xA8',
|
||
DotDot: '\u20DC',
|
||
doteq: '\u2250',
|
||
doteqdot: '\u2251',
|
||
DotEqual: '\u2250',
|
||
dotminus: '\u2238',
|
||
dotplus: '\u2214',
|
||
dotsquare: '\u22A1',
|
||
doublebarwedge: '\u2306',
|
||
DoubleContourIntegral: '\u222F',
|
||
DoubleDot: '\xA8',
|
||
DoubleDownArrow: '\u21D3',
|
||
DoubleLeftArrow: '\u21D0',
|
||
DoubleLeftRightArrow: '\u21D4',
|
||
DoubleLeftTee: '\u2AE4',
|
||
DoubleLongLeftArrow: '\u27F8',
|
||
DoubleLongLeftRightArrow: '\u27FA',
|
||
DoubleLongRightArrow: '\u27F9',
|
||
DoubleRightArrow: '\u21D2',
|
||
DoubleRightTee: '\u22A8',
|
||
DoubleUpArrow: '\u21D1',
|
||
DoubleUpDownArrow: '\u21D5',
|
||
DoubleVerticalBar: '\u2225',
|
||
downarrow: '\u2193',
|
||
Downarrow: '\u21D3',
|
||
DownArrow: '\u2193',
|
||
DownArrowBar: '\u2913',
|
||
DownArrowUpArrow: '\u21F5',
|
||
DownBreve: '\u0311',
|
||
downdownarrows: '\u21CA',
|
||
downharpoonleft: '\u21C3',
|
||
downharpoonright: '\u21C2',
|
||
DownLeftRightVector: '\u2950',
|
||
DownLeftTeeVector: '\u295E',
|
||
DownLeftVector: '\u21BD',
|
||
DownLeftVectorBar: '\u2956',
|
||
DownRightTeeVector: '\u295F',
|
||
DownRightVector: '\u21C1',
|
||
DownRightVectorBar: '\u2957',
|
||
DownTee: '\u22A4',
|
||
DownTeeArrow: '\u21A7',
|
||
drbkarow: '\u2910',
|
||
drcorn: '\u231F',
|
||
drcrop: '\u230C',
|
||
dscr: '\uD835\uDCB9',
|
||
Dscr: '\uD835\uDC9F',
|
||
dscy: '\u0455',
|
||
DScy: '\u0405',
|
||
dsol: '\u29F6',
|
||
dstrok: '\u0111',
|
||
Dstrok: '\u0110',
|
||
dtdot: '\u22F1',
|
||
dtri: '\u25BF',
|
||
dtrif: '\u25BE',
|
||
duarr: '\u21F5',
|
||
duhar: '\u296F',
|
||
dwangle: '\u29A6',
|
||
dzcy: '\u045F',
|
||
DZcy: '\u040F',
|
||
dzigrarr: '\u27FF',
|
||
eacute: '\xE9',
|
||
Eacute: '\xC9',
|
||
easter: '\u2A6E',
|
||
ecaron: '\u011B',
|
||
Ecaron: '\u011A',
|
||
ecir: '\u2256',
|
||
ecirc: '\xEA',
|
||
Ecirc: '\xCA',
|
||
ecolon: '\u2255',
|
||
ecy: '\u044D',
|
||
Ecy: '\u042D',
|
||
eDDot: '\u2A77',
|
||
edot: '\u0117',
|
||
eDot: '\u2251',
|
||
Edot: '\u0116',
|
||
ee: '\u2147',
|
||
efDot: '\u2252',
|
||
efr: '\uD835\uDD22',
|
||
Efr: '\uD835\uDD08',
|
||
eg: '\u2A9A',
|
||
egrave: '\xE8',
|
||
Egrave: '\xC8',
|
||
egs: '\u2A96',
|
||
egsdot: '\u2A98',
|
||
el: '\u2A99',
|
||
Element: '\u2208',
|
||
elinters: '\u23E7',
|
||
ell: '\u2113',
|
||
els: '\u2A95',
|
||
elsdot: '\u2A97',
|
||
emacr: '\u0113',
|
||
Emacr: '\u0112',
|
||
empty: '\u2205',
|
||
emptyset: '\u2205',
|
||
EmptySmallSquare: '\u25FB',
|
||
emptyv: '\u2205',
|
||
EmptyVerySmallSquare: '\u25AB',
|
||
emsp: '\u2003',
|
||
emsp13: '\u2004',
|
||
emsp14: '\u2005',
|
||
eng: '\u014B',
|
||
ENG: '\u014A',
|
||
ensp: '\u2002',
|
||
eogon: '\u0119',
|
||
Eogon: '\u0118',
|
||
eopf: '\uD835\uDD56',
|
||
Eopf: '\uD835\uDD3C',
|
||
epar: '\u22D5',
|
||
eparsl: '\u29E3',
|
||
eplus: '\u2A71',
|
||
epsi: '\u03B5',
|
||
epsilon: '\u03B5',
|
||
Epsilon: '\u0395',
|
||
epsiv: '\u03F5',
|
||
eqcirc: '\u2256',
|
||
eqcolon: '\u2255',
|
||
eqsim: '\u2242',
|
||
eqslantgtr: '\u2A96',
|
||
eqslantless: '\u2A95',
|
||
Equal: '\u2A75',
|
||
equals: '=',
|
||
EqualTilde: '\u2242',
|
||
equest: '\u225F',
|
||
Equilibrium: '\u21CC',
|
||
equiv: '\u2261',
|
||
equivDD: '\u2A78',
|
||
eqvparsl: '\u29E5',
|
||
erarr: '\u2971',
|
||
erDot: '\u2253',
|
||
escr: '\u212F',
|
||
Escr: '\u2130',
|
||
esdot: '\u2250',
|
||
esim: '\u2242',
|
||
Esim: '\u2A73',
|
||
eta: '\u03B7',
|
||
Eta: '\u0397',
|
||
eth: '\xF0',
|
||
ETH: '\xD0',
|
||
euml: '\xEB',
|
||
Euml: '\xCB',
|
||
euro: '\u20AC',
|
||
excl: '!',
|
||
exist: '\u2203',
|
||
Exists: '\u2203',
|
||
expectation: '\u2130',
|
||
exponentiale: '\u2147',
|
||
ExponentialE: '\u2147',
|
||
fallingdotseq: '\u2252',
|
||
fcy: '\u0444',
|
||
Fcy: '\u0424',
|
||
female: '\u2640',
|
||
ffilig: '\uFB03',
|
||
fflig: '\uFB00',
|
||
ffllig: '\uFB04',
|
||
ffr: '\uD835\uDD23',
|
||
Ffr: '\uD835\uDD09',
|
||
filig: '\uFB01',
|
||
FilledSmallSquare: '\u25FC',
|
||
FilledVerySmallSquare: '\u25AA',
|
||
fjlig: 'fj',
|
||
flat: '\u266D',
|
||
fllig: '\uFB02',
|
||
fltns: '\u25B1',
|
||
fnof: '\u0192',
|
||
fopf: '\uD835\uDD57',
|
||
Fopf: '\uD835\uDD3D',
|
||
forall: '\u2200',
|
||
ForAll: '\u2200',
|
||
fork: '\u22D4',
|
||
forkv: '\u2AD9',
|
||
Fouriertrf: '\u2131',
|
||
fpartint: '\u2A0D',
|
||
frac12: '\xBD',
|
||
frac13: '\u2153',
|
||
frac14: '\xBC',
|
||
frac15: '\u2155',
|
||
frac16: '\u2159',
|
||
frac18: '\u215B',
|
||
frac23: '\u2154',
|
||
frac25: '\u2156',
|
||
frac34: '\xBE',
|
||
frac35: '\u2157',
|
||
frac38: '\u215C',
|
||
frac45: '\u2158',
|
||
frac56: '\u215A',
|
||
frac58: '\u215D',
|
||
frac78: '\u215E',
|
||
frasl: '\u2044',
|
||
frown: '\u2322',
|
||
fscr: '\uD835\uDCBB',
|
||
Fscr: '\u2131',
|
||
gacute: '\u01F5',
|
||
gamma: '\u03B3',
|
||
Gamma: '\u0393',
|
||
gammad: '\u03DD',
|
||
Gammad: '\u03DC',
|
||
gap: '\u2A86',
|
||
gbreve: '\u011F',
|
||
Gbreve: '\u011E',
|
||
Gcedil: '\u0122',
|
||
gcirc: '\u011D',
|
||
Gcirc: '\u011C',
|
||
gcy: '\u0433',
|
||
Gcy: '\u0413',
|
||
gdot: '\u0121',
|
||
Gdot: '\u0120',
|
||
ge: '\u2265',
|
||
gE: '\u2267',
|
||
gel: '\u22DB',
|
||
gEl: '\u2A8C',
|
||
geq: '\u2265',
|
||
geqq: '\u2267',
|
||
geqslant: '\u2A7E',
|
||
ges: '\u2A7E',
|
||
gescc: '\u2AA9',
|
||
gesdot: '\u2A80',
|
||
gesdoto: '\u2A82',
|
||
gesdotol: '\u2A84',
|
||
gesl: '\u22DB\uFE00',
|
||
gesles: '\u2A94',
|
||
gfr: '\uD835\uDD24',
|
||
Gfr: '\uD835\uDD0A',
|
||
gg: '\u226B',
|
||
Gg: '\u22D9',
|
||
ggg: '\u22D9',
|
||
gimel: '\u2137',
|
||
gjcy: '\u0453',
|
||
GJcy: '\u0403',
|
||
gl: '\u2277',
|
||
gla: '\u2AA5',
|
||
glE: '\u2A92',
|
||
glj: '\u2AA4',
|
||
gnap: '\u2A8A',
|
||
gnapprox: '\u2A8A',
|
||
gne: '\u2A88',
|
||
gnE: '\u2269',
|
||
gneq: '\u2A88',
|
||
gneqq: '\u2269',
|
||
gnsim: '\u22E7',
|
||
gopf: '\uD835\uDD58',
|
||
Gopf: '\uD835\uDD3E',
|
||
grave: '`',
|
||
GreaterEqual: '\u2265',
|
||
GreaterEqualLess: '\u22DB',
|
||
GreaterFullEqual: '\u2267',
|
||
GreaterGreater: '\u2AA2',
|
||
GreaterLess: '\u2277',
|
||
GreaterSlantEqual: '\u2A7E',
|
||
GreaterTilde: '\u2273',
|
||
gscr: '\u210A',
|
||
Gscr: '\uD835\uDCA2',
|
||
gsim: '\u2273',
|
||
gsime: '\u2A8E',
|
||
gsiml: '\u2A90',
|
||
gt: '>',
|
||
Gt: '\u226B',
|
||
GT: '>',
|
||
gtcc: '\u2AA7',
|
||
gtcir: '\u2A7A',
|
||
gtdot: '\u22D7',
|
||
gtlPar: '\u2995',
|
||
gtquest: '\u2A7C',
|
||
gtrapprox: '\u2A86',
|
||
gtrarr: '\u2978',
|
||
gtrdot: '\u22D7',
|
||
gtreqless: '\u22DB',
|
||
gtreqqless: '\u2A8C',
|
||
gtrless: '\u2277',
|
||
gtrsim: '\u2273',
|
||
gvertneqq: '\u2269\uFE00',
|
||
gvnE: '\u2269\uFE00',
|
||
Hacek: '\u02C7',
|
||
hairsp: '\u200A',
|
||
half: '\xBD',
|
||
hamilt: '\u210B',
|
||
hardcy: '\u044A',
|
||
HARDcy: '\u042A',
|
||
harr: '\u2194',
|
||
hArr: '\u21D4',
|
||
harrcir: '\u2948',
|
||
harrw: '\u21AD',
|
||
Hat: '^',
|
||
hbar: '\u210F',
|
||
hcirc: '\u0125',
|
||
Hcirc: '\u0124',
|
||
hearts: '\u2665',
|
||
heartsuit: '\u2665',
|
||
hellip: '\u2026',
|
||
hercon: '\u22B9',
|
||
hfr: '\uD835\uDD25',
|
||
Hfr: '\u210C',
|
||
HilbertSpace: '\u210B',
|
||
hksearow: '\u2925',
|
||
hkswarow: '\u2926',
|
||
hoarr: '\u21FF',
|
||
homtht: '\u223B',
|
||
hookleftarrow: '\u21A9',
|
||
hookrightarrow: '\u21AA',
|
||
hopf: '\uD835\uDD59',
|
||
Hopf: '\u210D',
|
||
horbar: '\u2015',
|
||
HorizontalLine: '\u2500',
|
||
hscr: '\uD835\uDCBD',
|
||
Hscr: '\u210B',
|
||
hslash: '\u210F',
|
||
hstrok: '\u0127',
|
||
Hstrok: '\u0126',
|
||
HumpDownHump: '\u224E',
|
||
HumpEqual: '\u224F',
|
||
hybull: '\u2043',
|
||
hyphen: '\u2010',
|
||
iacute: '\xED',
|
||
Iacute: '\xCD',
|
||
ic: '\u2063',
|
||
icirc: '\xEE',
|
||
Icirc: '\xCE',
|
||
icy: '\u0438',
|
||
Icy: '\u0418',
|
||
Idot: '\u0130',
|
||
iecy: '\u0435',
|
||
IEcy: '\u0415',
|
||
iexcl: '\xA1',
|
||
iff: '\u21D4',
|
||
ifr: '\uD835\uDD26',
|
||
Ifr: '\u2111',
|
||
igrave: '\xEC',
|
||
Igrave: '\xCC',
|
||
ii: '\u2148',
|
||
iiiint: '\u2A0C',
|
||
iiint: '\u222D',
|
||
iinfin: '\u29DC',
|
||
iiota: '\u2129',
|
||
ijlig: '\u0133',
|
||
IJlig: '\u0132',
|
||
Im: '\u2111',
|
||
imacr: '\u012B',
|
||
Imacr: '\u012A',
|
||
image: '\u2111',
|
||
ImaginaryI: '\u2148',
|
||
imagline: '\u2110',
|
||
imagpart: '\u2111',
|
||
imath: '\u0131',
|
||
imof: '\u22B7',
|
||
imped: '\u01B5',
|
||
Implies: '\u21D2',
|
||
in: '\u2208',
|
||
incare: '\u2105',
|
||
infin: '\u221E',
|
||
infintie: '\u29DD',
|
||
inodot: '\u0131',
|
||
int: '\u222B',
|
||
Int: '\u222C',
|
||
intcal: '\u22BA',
|
||
integers: '\u2124',
|
||
Integral: '\u222B',
|
||
intercal: '\u22BA',
|
||
Intersection: '\u22C2',
|
||
intlarhk: '\u2A17',
|
||
intprod: '\u2A3C',
|
||
InvisibleComma: '\u2063',
|
||
InvisibleTimes: '\u2062',
|
||
iocy: '\u0451',
|
||
IOcy: '\u0401',
|
||
iogon: '\u012F',
|
||
Iogon: '\u012E',
|
||
iopf: '\uD835\uDD5A',
|
||
Iopf: '\uD835\uDD40',
|
||
iota: '\u03B9',
|
||
Iota: '\u0399',
|
||
iprod: '\u2A3C',
|
||
iquest: '\xBF',
|
||
iscr: '\uD835\uDCBE',
|
||
Iscr: '\u2110',
|
||
isin: '\u2208',
|
||
isindot: '\u22F5',
|
||
isinE: '\u22F9',
|
||
isins: '\u22F4',
|
||
isinsv: '\u22F3',
|
||
isinv: '\u2208',
|
||
it: '\u2062',
|
||
itilde: '\u0129',
|
||
Itilde: '\u0128',
|
||
iukcy: '\u0456',
|
||
Iukcy: '\u0406',
|
||
iuml: '\xEF',
|
||
Iuml: '\xCF',
|
||
jcirc: '\u0135',
|
||
Jcirc: '\u0134',
|
||
jcy: '\u0439',
|
||
Jcy: '\u0419',
|
||
jfr: '\uD835\uDD27',
|
||
Jfr: '\uD835\uDD0D',
|
||
jmath: '\u0237',
|
||
jopf: '\uD835\uDD5B',
|
||
Jopf: '\uD835\uDD41',
|
||
jscr: '\uD835\uDCBF',
|
||
Jscr: '\uD835\uDCA5',
|
||
jsercy: '\u0458',
|
||
Jsercy: '\u0408',
|
||
jukcy: '\u0454',
|
||
Jukcy: '\u0404',
|
||
kappa: '\u03BA',
|
||
Kappa: '\u039A',
|
||
kappav: '\u03F0',
|
||
kcedil: '\u0137',
|
||
Kcedil: '\u0136',
|
||
kcy: '\u043A',
|
||
Kcy: '\u041A',
|
||
kfr: '\uD835\uDD28',
|
||
Kfr: '\uD835\uDD0E',
|
||
kgreen: '\u0138',
|
||
khcy: '\u0445',
|
||
KHcy: '\u0425',
|
||
kjcy: '\u045C',
|
||
KJcy: '\u040C',
|
||
kopf: '\uD835\uDD5C',
|
||
Kopf: '\uD835\uDD42',
|
||
kscr: '\uD835\uDCC0',
|
||
Kscr: '\uD835\uDCA6',
|
||
lAarr: '\u21DA',
|
||
lacute: '\u013A',
|
||
Lacute: '\u0139',
|
||
laemptyv: '\u29B4',
|
||
lagran: '\u2112',
|
||
lambda: '\u03BB',
|
||
Lambda: '\u039B',
|
||
lang: '\u27E8',
|
||
Lang: '\u27EA',
|
||
langd: '\u2991',
|
||
langle: '\u27E8',
|
||
lap: '\u2A85',
|
||
Laplacetrf: '\u2112',
|
||
laquo: '\xAB',
|
||
larr: '\u2190',
|
||
lArr: '\u21D0',
|
||
Larr: '\u219E',
|
||
larrb: '\u21E4',
|
||
larrbfs: '\u291F',
|
||
larrfs: '\u291D',
|
||
larrhk: '\u21A9',
|
||
larrlp: '\u21AB',
|
||
larrpl: '\u2939',
|
||
larrsim: '\u2973',
|
||
larrtl: '\u21A2',
|
||
lat: '\u2AAB',
|
||
latail: '\u2919',
|
||
lAtail: '\u291B',
|
||
late: '\u2AAD',
|
||
lates: '\u2AAD\uFE00',
|
||
lbarr: '\u290C',
|
||
lBarr: '\u290E',
|
||
lbbrk: '\u2772',
|
||
lbrace: '{',
|
||
lbrack: '[',
|
||
lbrke: '\u298B',
|
||
lbrksld: '\u298F',
|
||
lbrkslu: '\u298D',
|
||
lcaron: '\u013E',
|
||
Lcaron: '\u013D',
|
||
lcedil: '\u013C',
|
||
Lcedil: '\u013B',
|
||
lceil: '\u2308',
|
||
lcub: '{',
|
||
lcy: '\u043B',
|
||
Lcy: '\u041B',
|
||
ldca: '\u2936',
|
||
ldquo: '\u201C',
|
||
ldquor: '\u201E',
|
||
ldrdhar: '\u2967',
|
||
ldrushar: '\u294B',
|
||
ldsh: '\u21B2',
|
||
le: '\u2264',
|
||
lE: '\u2266',
|
||
LeftAngleBracket: '\u27E8',
|
||
leftarrow: '\u2190',
|
||
Leftarrow: '\u21D0',
|
||
LeftArrow: '\u2190',
|
||
LeftArrowBar: '\u21E4',
|
||
LeftArrowRightArrow: '\u21C6',
|
||
leftarrowtail: '\u21A2',
|
||
LeftCeiling: '\u2308',
|
||
LeftDoubleBracket: '\u27E6',
|
||
LeftDownTeeVector: '\u2961',
|
||
LeftDownVector: '\u21C3',
|
||
LeftDownVectorBar: '\u2959',
|
||
LeftFloor: '\u230A',
|
||
leftharpoondown: '\u21BD',
|
||
leftharpoonup: '\u21BC',
|
||
leftleftarrows: '\u21C7',
|
||
leftrightarrow: '\u2194',
|
||
Leftrightarrow: '\u21D4',
|
||
LeftRightArrow: '\u2194',
|
||
leftrightarrows: '\u21C6',
|
||
leftrightharpoons: '\u21CB',
|
||
leftrightsquigarrow: '\u21AD',
|
||
LeftRightVector: '\u294E',
|
||
LeftTee: '\u22A3',
|
||
LeftTeeArrow: '\u21A4',
|
||
LeftTeeVector: '\u295A',
|
||
leftthreetimes: '\u22CB',
|
||
LeftTriangle: '\u22B2',
|
||
LeftTriangleBar: '\u29CF',
|
||
LeftTriangleEqual: '\u22B4',
|
||
LeftUpDownVector: '\u2951',
|
||
LeftUpTeeVector: '\u2960',
|
||
LeftUpVector: '\u21BF',
|
||
LeftUpVectorBar: '\u2958',
|
||
LeftVector: '\u21BC',
|
||
LeftVectorBar: '\u2952',
|
||
leg: '\u22DA',
|
||
lEg: '\u2A8B',
|
||
leq: '\u2264',
|
||
leqq: '\u2266',
|
||
leqslant: '\u2A7D',
|
||
les: '\u2A7D',
|
||
lescc: '\u2AA8',
|
||
lesdot: '\u2A7F',
|
||
lesdoto: '\u2A81',
|
||
lesdotor: '\u2A83',
|
||
lesg: '\u22DA\uFE00',
|
||
lesges: '\u2A93',
|
||
lessapprox: '\u2A85',
|
||
lessdot: '\u22D6',
|
||
lesseqgtr: '\u22DA',
|
||
lesseqqgtr: '\u2A8B',
|
||
LessEqualGreater: '\u22DA',
|
||
LessFullEqual: '\u2266',
|
||
LessGreater: '\u2276',
|
||
lessgtr: '\u2276',
|
||
LessLess: '\u2AA1',
|
||
lesssim: '\u2272',
|
||
LessSlantEqual: '\u2A7D',
|
||
LessTilde: '\u2272',
|
||
lfisht: '\u297C',
|
||
lfloor: '\u230A',
|
||
lfr: '\uD835\uDD29',
|
||
Lfr: '\uD835\uDD0F',
|
||
lg: '\u2276',
|
||
lgE: '\u2A91',
|
||
lHar: '\u2962',
|
||
lhard: '\u21BD',
|
||
lharu: '\u21BC',
|
||
lharul: '\u296A',
|
||
lhblk: '\u2584',
|
||
ljcy: '\u0459',
|
||
LJcy: '\u0409',
|
||
ll: '\u226A',
|
||
Ll: '\u22D8',
|
||
llarr: '\u21C7',
|
||
llcorner: '\u231E',
|
||
Lleftarrow: '\u21DA',
|
||
llhard: '\u296B',
|
||
lltri: '\u25FA',
|
||
lmidot: '\u0140',
|
||
Lmidot: '\u013F',
|
||
lmoust: '\u23B0',
|
||
lmoustache: '\u23B0',
|
||
lnap: '\u2A89',
|
||
lnapprox: '\u2A89',
|
||
lne: '\u2A87',
|
||
lnE: '\u2268',
|
||
lneq: '\u2A87',
|
||
lneqq: '\u2268',
|
||
lnsim: '\u22E6',
|
||
loang: '\u27EC',
|
||
loarr: '\u21FD',
|
||
lobrk: '\u27E6',
|
||
longleftarrow: '\u27F5',
|
||
Longleftarrow: '\u27F8',
|
||
LongLeftArrow: '\u27F5',
|
||
longleftrightarrow: '\u27F7',
|
||
Longleftrightarrow: '\u27FA',
|
||
LongLeftRightArrow: '\u27F7',
|
||
longmapsto: '\u27FC',
|
||
longrightarrow: '\u27F6',
|
||
Longrightarrow: '\u27F9',
|
||
LongRightArrow: '\u27F6',
|
||
looparrowleft: '\u21AB',
|
||
looparrowright: '\u21AC',
|
||
lopar: '\u2985',
|
||
lopf: '\uD835\uDD5D',
|
||
Lopf: '\uD835\uDD43',
|
||
loplus: '\u2A2D',
|
||
lotimes: '\u2A34',
|
||
lowast: '\u2217',
|
||
lowbar: '_',
|
||
LowerLeftArrow: '\u2199',
|
||
LowerRightArrow: '\u2198',
|
||
loz: '\u25CA',
|
||
lozenge: '\u25CA',
|
||
lozf: '\u29EB',
|
||
lpar: '(',
|
||
lparlt: '\u2993',
|
||
lrarr: '\u21C6',
|
||
lrcorner: '\u231F',
|
||
lrhar: '\u21CB',
|
||
lrhard: '\u296D',
|
||
lrm: '\u200E',
|
||
lrtri: '\u22BF',
|
||
lsaquo: '\u2039',
|
||
lscr: '\uD835\uDCC1',
|
||
Lscr: '\u2112',
|
||
lsh: '\u21B0',
|
||
Lsh: '\u21B0',
|
||
lsim: '\u2272',
|
||
lsime: '\u2A8D',
|
||
lsimg: '\u2A8F',
|
||
lsqb: '[',
|
||
lsquo: '\u2018',
|
||
lsquor: '\u201A',
|
||
lstrok: '\u0142',
|
||
Lstrok: '\u0141',
|
||
lt: '<',
|
||
Lt: '\u226A',
|
||
LT: '<',
|
||
ltcc: '\u2AA6',
|
||
ltcir: '\u2A79',
|
||
ltdot: '\u22D6',
|
||
lthree: '\u22CB',
|
||
ltimes: '\u22C9',
|
||
ltlarr: '\u2976',
|
||
ltquest: '\u2A7B',
|
||
ltri: '\u25C3',
|
||
ltrie: '\u22B4',
|
||
ltrif: '\u25C2',
|
||
ltrPar: '\u2996',
|
||
lurdshar: '\u294A',
|
||
luruhar: '\u2966',
|
||
lvertneqq: '\u2268\uFE00',
|
||
lvnE: '\u2268\uFE00',
|
||
macr: '\xAF',
|
||
male: '\u2642',
|
||
malt: '\u2720',
|
||
maltese: '\u2720',
|
||
map: '\u21A6',
|
||
Map: '\u2905',
|
||
mapsto: '\u21A6',
|
||
mapstodown: '\u21A7',
|
||
mapstoleft: '\u21A4',
|
||
mapstoup: '\u21A5',
|
||
marker: '\u25AE',
|
||
mcomma: '\u2A29',
|
||
mcy: '\u043C',
|
||
Mcy: '\u041C',
|
||
mdash: '\u2014',
|
||
mDDot: '\u223A',
|
||
measuredangle: '\u2221',
|
||
MediumSpace: '\u205F',
|
||
Mellintrf: '\u2133',
|
||
mfr: '\uD835\uDD2A',
|
||
Mfr: '\uD835\uDD10',
|
||
mho: '\u2127',
|
||
micro: '\xB5',
|
||
mid: '\u2223',
|
||
midast: '*',
|
||
midcir: '\u2AF0',
|
||
middot: '\xB7',
|
||
minus: '\u2212',
|
||
minusb: '\u229F',
|
||
minusd: '\u2238',
|
||
minusdu: '\u2A2A',
|
||
MinusPlus: '\u2213',
|
||
mlcp: '\u2ADB',
|
||
mldr: '\u2026',
|
||
mnplus: '\u2213',
|
||
models: '\u22A7',
|
||
mopf: '\uD835\uDD5E',
|
||
Mopf: '\uD835\uDD44',
|
||
mp: '\u2213',
|
||
mscr: '\uD835\uDCC2',
|
||
Mscr: '\u2133',
|
||
mstpos: '\u223E',
|
||
mu: '\u03BC',
|
||
Mu: '\u039C',
|
||
multimap: '\u22B8',
|
||
mumap: '\u22B8',
|
||
nabla: '\u2207',
|
||
nacute: '\u0144',
|
||
Nacute: '\u0143',
|
||
nang: '\u2220\u20D2',
|
||
nap: '\u2249',
|
||
napE: '\u2A70\u0338',
|
||
napid: '\u224B\u0338',
|
||
napos: '\u0149',
|
||
napprox: '\u2249',
|
||
natur: '\u266E',
|
||
natural: '\u266E',
|
||
naturals: '\u2115',
|
||
nbsp: '\xA0',
|
||
nbump: '\u224E\u0338',
|
||
nbumpe: '\u224F\u0338',
|
||
ncap: '\u2A43',
|
||
ncaron: '\u0148',
|
||
Ncaron: '\u0147',
|
||
ncedil: '\u0146',
|
||
Ncedil: '\u0145',
|
||
ncong: '\u2247',
|
||
ncongdot: '\u2A6D\u0338',
|
||
ncup: '\u2A42',
|
||
ncy: '\u043D',
|
||
Ncy: '\u041D',
|
||
ndash: '\u2013',
|
||
ne: '\u2260',
|
||
nearhk: '\u2924',
|
||
nearr: '\u2197',
|
||
neArr: '\u21D7',
|
||
nearrow: '\u2197',
|
||
nedot: '\u2250\u0338',
|
||
NegativeMediumSpace: '\u200B',
|
||
NegativeThickSpace: '\u200B',
|
||
NegativeThinSpace: '\u200B',
|
||
NegativeVeryThinSpace: '\u200B',
|
||
nequiv: '\u2262',
|
||
nesear: '\u2928',
|
||
nesim: '\u2242\u0338',
|
||
NestedGreaterGreater: '\u226B',
|
||
NestedLessLess: '\u226A',
|
||
NewLine: '\n',
|
||
nexist: '\u2204',
|
||
nexists: '\u2204',
|
||
nfr: '\uD835\uDD2B',
|
||
Nfr: '\uD835\uDD11',
|
||
nge: '\u2271',
|
||
ngE: '\u2267\u0338',
|
||
ngeq: '\u2271',
|
||
ngeqq: '\u2267\u0338',
|
||
ngeqslant: '\u2A7E\u0338',
|
||
nges: '\u2A7E\u0338',
|
||
nGg: '\u22D9\u0338',
|
||
ngsim: '\u2275',
|
||
ngt: '\u226F',
|
||
nGt: '\u226B\u20D2',
|
||
ngtr: '\u226F',
|
||
nGtv: '\u226B\u0338',
|
||
nharr: '\u21AE',
|
||
nhArr: '\u21CE',
|
||
nhpar: '\u2AF2',
|
||
ni: '\u220B',
|
||
nis: '\u22FC',
|
||
nisd: '\u22FA',
|
||
niv: '\u220B',
|
||
njcy: '\u045A',
|
||
NJcy: '\u040A',
|
||
nlarr: '\u219A',
|
||
nlArr: '\u21CD',
|
||
nldr: '\u2025',
|
||
nle: '\u2270',
|
||
nlE: '\u2266\u0338',
|
||
nleftarrow: '\u219A',
|
||
nLeftarrow: '\u21CD',
|
||
nleftrightarrow: '\u21AE',
|
||
nLeftrightarrow: '\u21CE',
|
||
nleq: '\u2270',
|
||
nleqq: '\u2266\u0338',
|
||
nleqslant: '\u2A7D\u0338',
|
||
nles: '\u2A7D\u0338',
|
||
nless: '\u226E',
|
||
nLl: '\u22D8\u0338',
|
||
nlsim: '\u2274',
|
||
nlt: '\u226E',
|
||
nLt: '\u226A\u20D2',
|
||
nltri: '\u22EA',
|
||
nltrie: '\u22EC',
|
||
nLtv: '\u226A\u0338',
|
||
nmid: '\u2224',
|
||
NoBreak: '\u2060',
|
||
NonBreakingSpace: '\xA0',
|
||
nopf: '\uD835\uDD5F',
|
||
Nopf: '\u2115',
|
||
not: '\xAC',
|
||
Not: '\u2AEC',
|
||
NotCongruent: '\u2262',
|
||
NotCupCap: '\u226D',
|
||
NotDoubleVerticalBar: '\u2226',
|
||
NotElement: '\u2209',
|
||
NotEqual: '\u2260',
|
||
NotEqualTilde: '\u2242\u0338',
|
||
NotExists: '\u2204',
|
||
NotGreater: '\u226F',
|
||
NotGreaterEqual: '\u2271',
|
||
NotGreaterFullEqual: '\u2267\u0338',
|
||
NotGreaterGreater: '\u226B\u0338',
|
||
NotGreaterLess: '\u2279',
|
||
NotGreaterSlantEqual: '\u2A7E\u0338',
|
||
NotGreaterTilde: '\u2275',
|
||
NotHumpDownHump: '\u224E\u0338',
|
||
NotHumpEqual: '\u224F\u0338',
|
||
notin: '\u2209',
|
||
notindot: '\u22F5\u0338',
|
||
notinE: '\u22F9\u0338',
|
||
notinva: '\u2209',
|
||
notinvb: '\u22F7',
|
||
notinvc: '\u22F6',
|
||
NotLeftTriangle: '\u22EA',
|
||
NotLeftTriangleBar: '\u29CF\u0338',
|
||
NotLeftTriangleEqual: '\u22EC',
|
||
NotLess: '\u226E',
|
||
NotLessEqual: '\u2270',
|
||
NotLessGreater: '\u2278',
|
||
NotLessLess: '\u226A\u0338',
|
||
NotLessSlantEqual: '\u2A7D\u0338',
|
||
NotLessTilde: '\u2274',
|
||
NotNestedGreaterGreater: '\u2AA2\u0338',
|
||
NotNestedLessLess: '\u2AA1\u0338',
|
||
notni: '\u220C',
|
||
notniva: '\u220C',
|
||
notnivb: '\u22FE',
|
||
notnivc: '\u22FD',
|
||
NotPrecedes: '\u2280',
|
||
NotPrecedesEqual: '\u2AAF\u0338',
|
||
NotPrecedesSlantEqual: '\u22E0',
|
||
NotReverseElement: '\u220C',
|
||
NotRightTriangle: '\u22EB',
|
||
NotRightTriangleBar: '\u29D0\u0338',
|
||
NotRightTriangleEqual: '\u22ED',
|
||
NotSquareSubset: '\u228F\u0338',
|
||
NotSquareSubsetEqual: '\u22E2',
|
||
NotSquareSuperset: '\u2290\u0338',
|
||
NotSquareSupersetEqual: '\u22E3',
|
||
NotSubset: '\u2282\u20D2',
|
||
NotSubsetEqual: '\u2288',
|
||
NotSucceeds: '\u2281',
|
||
NotSucceedsEqual: '\u2AB0\u0338',
|
||
NotSucceedsSlantEqual: '\u22E1',
|
||
NotSucceedsTilde: '\u227F\u0338',
|
||
NotSuperset: '\u2283\u20D2',
|
||
NotSupersetEqual: '\u2289',
|
||
NotTilde: '\u2241',
|
||
NotTildeEqual: '\u2244',
|
||
NotTildeFullEqual: '\u2247',
|
||
NotTildeTilde: '\u2249',
|
||
NotVerticalBar: '\u2224',
|
||
npar: '\u2226',
|
||
nparallel: '\u2226',
|
||
nparsl: '\u2AFD\u20E5',
|
||
npart: '\u2202\u0338',
|
||
npolint: '\u2A14',
|
||
npr: '\u2280',
|
||
nprcue: '\u22E0',
|
||
npre: '\u2AAF\u0338',
|
||
nprec: '\u2280',
|
||
npreceq: '\u2AAF\u0338',
|
||
nrarr: '\u219B',
|
||
nrArr: '\u21CF',
|
||
nrarrc: '\u2933\u0338',
|
||
nrarrw: '\u219D\u0338',
|
||
nrightarrow: '\u219B',
|
||
nRightarrow: '\u21CF',
|
||
nrtri: '\u22EB',
|
||
nrtrie: '\u22ED',
|
||
nsc: '\u2281',
|
||
nsccue: '\u22E1',
|
||
nsce: '\u2AB0\u0338',
|
||
nscr: '\uD835\uDCC3',
|
||
Nscr: '\uD835\uDCA9',
|
||
nshortmid: '\u2224',
|
||
nshortparallel: '\u2226',
|
||
nsim: '\u2241',
|
||
nsime: '\u2244',
|
||
nsimeq: '\u2244',
|
||
nsmid: '\u2224',
|
||
nspar: '\u2226',
|
||
nsqsube: '\u22E2',
|
||
nsqsupe: '\u22E3',
|
||
nsub: '\u2284',
|
||
nsube: '\u2288',
|
||
nsubE: '\u2AC5\u0338',
|
||
nsubset: '\u2282\u20D2',
|
||
nsubseteq: '\u2288',
|
||
nsubseteqq: '\u2AC5\u0338',
|
||
nsucc: '\u2281',
|
||
nsucceq: '\u2AB0\u0338',
|
||
nsup: '\u2285',
|
||
nsupe: '\u2289',
|
||
nsupE: '\u2AC6\u0338',
|
||
nsupset: '\u2283\u20D2',
|
||
nsupseteq: '\u2289',
|
||
nsupseteqq: '\u2AC6\u0338',
|
||
ntgl: '\u2279',
|
||
ntilde: '\xF1',
|
||
Ntilde: '\xD1',
|
||
ntlg: '\u2278',
|
||
ntriangleleft: '\u22EA',
|
||
ntrianglelefteq: '\u22EC',
|
||
ntriangleright: '\u22EB',
|
||
ntrianglerighteq: '\u22ED',
|
||
nu: '\u03BD',
|
||
Nu: '\u039D',
|
||
num: '#',
|
||
numero: '\u2116',
|
||
numsp: '\u2007',
|
||
nvap: '\u224D\u20D2',
|
||
nvdash: '\u22AC',
|
||
nvDash: '\u22AD',
|
||
nVdash: '\u22AE',
|
||
nVDash: '\u22AF',
|
||
nvge: '\u2265\u20D2',
|
||
nvgt: '>\u20D2',
|
||
nvHarr: '\u2904',
|
||
nvinfin: '\u29DE',
|
||
nvlArr: '\u2902',
|
||
nvle: '\u2264\u20D2',
|
||
nvlt: '<\u20D2',
|
||
nvltrie: '\u22B4\u20D2',
|
||
nvrArr: '\u2903',
|
||
nvrtrie: '\u22B5\u20D2',
|
||
nvsim: '\u223C\u20D2',
|
||
nwarhk: '\u2923',
|
||
nwarr: '\u2196',
|
||
nwArr: '\u21D6',
|
||
nwarrow: '\u2196',
|
||
nwnear: '\u2927',
|
||
oacute: '\xF3',
|
||
Oacute: '\xD3',
|
||
oast: '\u229B',
|
||
ocir: '\u229A',
|
||
ocirc: '\xF4',
|
||
Ocirc: '\xD4',
|
||
ocy: '\u043E',
|
||
Ocy: '\u041E',
|
||
odash: '\u229D',
|
||
odblac: '\u0151',
|
||
Odblac: '\u0150',
|
||
odiv: '\u2A38',
|
||
odot: '\u2299',
|
||
odsold: '\u29BC',
|
||
oelig: '\u0153',
|
||
OElig: '\u0152',
|
||
ofcir: '\u29BF',
|
||
ofr: '\uD835\uDD2C',
|
||
Ofr: '\uD835\uDD12',
|
||
ogon: '\u02DB',
|
||
ograve: '\xF2',
|
||
Ograve: '\xD2',
|
||
ogt: '\u29C1',
|
||
ohbar: '\u29B5',
|
||
ohm: '\u03A9',
|
||
oint: '\u222E',
|
||
olarr: '\u21BA',
|
||
olcir: '\u29BE',
|
||
olcross: '\u29BB',
|
||
oline: '\u203E',
|
||
olt: '\u29C0',
|
||
omacr: '\u014D',
|
||
Omacr: '\u014C',
|
||
omega: '\u03C9',
|
||
Omega: '\u03A9',
|
||
omicron: '\u03BF',
|
||
Omicron: '\u039F',
|
||
omid: '\u29B6',
|
||
ominus: '\u2296',
|
||
oopf: '\uD835\uDD60',
|
||
Oopf: '\uD835\uDD46',
|
||
opar: '\u29B7',
|
||
OpenCurlyDoubleQuote: '\u201C',
|
||
OpenCurlyQuote: '\u2018',
|
||
operp: '\u29B9',
|
||
oplus: '\u2295',
|
||
or: '\u2228',
|
||
Or: '\u2A54',
|
||
orarr: '\u21BB',
|
||
ord: '\u2A5D',
|
||
order: '\u2134',
|
||
orderof: '\u2134',
|
||
ordf: '\xAA',
|
||
ordm: '\xBA',
|
||
origof: '\u22B6',
|
||
oror: '\u2A56',
|
||
orslope: '\u2A57',
|
||
orv: '\u2A5B',
|
||
oS: '\u24C8',
|
||
oscr: '\u2134',
|
||
Oscr: '\uD835\uDCAA',
|
||
oslash: '\xF8',
|
||
Oslash: '\xD8',
|
||
osol: '\u2298',
|
||
otilde: '\xF5',
|
||
Otilde: '\xD5',
|
||
otimes: '\u2297',
|
||
Otimes: '\u2A37',
|
||
otimesas: '\u2A36',
|
||
ouml: '\xF6',
|
||
Ouml: '\xD6',
|
||
ovbar: '\u233D',
|
||
OverBar: '\u203E',
|
||
OverBrace: '\u23DE',
|
||
OverBracket: '\u23B4',
|
||
OverParenthesis: '\u23DC',
|
||
par: '\u2225',
|
||
para: '\xB6',
|
||
parallel: '\u2225',
|
||
parsim: '\u2AF3',
|
||
parsl: '\u2AFD',
|
||
part: '\u2202',
|
||
PartialD: '\u2202',
|
||
pcy: '\u043F',
|
||
Pcy: '\u041F',
|
||
percnt: '%',
|
||
period: '.',
|
||
permil: '\u2030',
|
||
perp: '\u22A5',
|
||
pertenk: '\u2031',
|
||
pfr: '\uD835\uDD2D',
|
||
Pfr: '\uD835\uDD13',
|
||
phi: '\u03C6',
|
||
Phi: '\u03A6',
|
||
phiv: '\u03D5',
|
||
phmmat: '\u2133',
|
||
phone: '\u260E',
|
||
pi: '\u03C0',
|
||
Pi: '\u03A0',
|
||
pitchfork: '\u22D4',
|
||
piv: '\u03D6',
|
||
planck: '\u210F',
|
||
planckh: '\u210E',
|
||
plankv: '\u210F',
|
||
plus: '+',
|
||
plusacir: '\u2A23',
|
||
plusb: '\u229E',
|
||
pluscir: '\u2A22',
|
||
plusdo: '\u2214',
|
||
plusdu: '\u2A25',
|
||
pluse: '\u2A72',
|
||
PlusMinus: '\xB1',
|
||
plusmn: '\xB1',
|
||
plussim: '\u2A26',
|
||
plustwo: '\u2A27',
|
||
pm: '\xB1',
|
||
Poincareplane: '\u210C',
|
||
pointint: '\u2A15',
|
||
popf: '\uD835\uDD61',
|
||
Popf: '\u2119',
|
||
pound: '\xA3',
|
||
pr: '\u227A',
|
||
Pr: '\u2ABB',
|
||
prap: '\u2AB7',
|
||
prcue: '\u227C',
|
||
pre: '\u2AAF',
|
||
prE: '\u2AB3',
|
||
prec: '\u227A',
|
||
precapprox: '\u2AB7',
|
||
preccurlyeq: '\u227C',
|
||
Precedes: '\u227A',
|
||
PrecedesEqual: '\u2AAF',
|
||
PrecedesSlantEqual: '\u227C',
|
||
PrecedesTilde: '\u227E',
|
||
preceq: '\u2AAF',
|
||
precnapprox: '\u2AB9',
|
||
precneqq: '\u2AB5',
|
||
precnsim: '\u22E8',
|
||
precsim: '\u227E',
|
||
prime: '\u2032',
|
||
Prime: '\u2033',
|
||
primes: '\u2119',
|
||
prnap: '\u2AB9',
|
||
prnE: '\u2AB5',
|
||
prnsim: '\u22E8',
|
||
prod: '\u220F',
|
||
Product: '\u220F',
|
||
profalar: '\u232E',
|
||
profline: '\u2312',
|
||
profsurf: '\u2313',
|
||
prop: '\u221D',
|
||
Proportion: '\u2237',
|
||
Proportional: '\u221D',
|
||
propto: '\u221D',
|
||
prsim: '\u227E',
|
||
prurel: '\u22B0',
|
||
pscr: '\uD835\uDCC5',
|
||
Pscr: '\uD835\uDCAB',
|
||
psi: '\u03C8',
|
||
Psi: '\u03A8',
|
||
puncsp: '\u2008',
|
||
qfr: '\uD835\uDD2E',
|
||
Qfr: '\uD835\uDD14',
|
||
qint: '\u2A0C',
|
||
qopf: '\uD835\uDD62',
|
||
Qopf: '\u211A',
|
||
qprime: '\u2057',
|
||
qscr: '\uD835\uDCC6',
|
||
Qscr: '\uD835\uDCAC',
|
||
quaternions: '\u210D',
|
||
quatint: '\u2A16',
|
||
quest: '?',
|
||
questeq: '\u225F',
|
||
quot: '"',
|
||
QUOT: '"',
|
||
rAarr: '\u21DB',
|
||
race: '\u223D\u0331',
|
||
racute: '\u0155',
|
||
Racute: '\u0154',
|
||
radic: '\u221A',
|
||
raemptyv: '\u29B3',
|
||
rang: '\u27E9',
|
||
Rang: '\u27EB',
|
||
rangd: '\u2992',
|
||
range: '\u29A5',
|
||
rangle: '\u27E9',
|
||
raquo: '\xBB',
|
||
rarr: '\u2192',
|
||
rArr: '\u21D2',
|
||
Rarr: '\u21A0',
|
||
rarrap: '\u2975',
|
||
rarrb: '\u21E5',
|
||
rarrbfs: '\u2920',
|
||
rarrc: '\u2933',
|
||
rarrfs: '\u291E',
|
||
rarrhk: '\u21AA',
|
||
rarrlp: '\u21AC',
|
||
rarrpl: '\u2945',
|
||
rarrsim: '\u2974',
|
||
rarrtl: '\u21A3',
|
||
Rarrtl: '\u2916',
|
||
rarrw: '\u219D',
|
||
ratail: '\u291A',
|
||
rAtail: '\u291C',
|
||
ratio: '\u2236',
|
||
rationals: '\u211A',
|
||
rbarr: '\u290D',
|
||
rBarr: '\u290F',
|
||
RBarr: '\u2910',
|
||
rbbrk: '\u2773',
|
||
rbrace: '}',
|
||
rbrack: ']',
|
||
rbrke: '\u298C',
|
||
rbrksld: '\u298E',
|
||
rbrkslu: '\u2990',
|
||
rcaron: '\u0159',
|
||
Rcaron: '\u0158',
|
||
rcedil: '\u0157',
|
||
Rcedil: '\u0156',
|
||
rceil: '\u2309',
|
||
rcub: '}',
|
||
rcy: '\u0440',
|
||
Rcy: '\u0420',
|
||
rdca: '\u2937',
|
||
rdldhar: '\u2969',
|
||
rdquo: '\u201D',
|
||
rdquor: '\u201D',
|
||
rdsh: '\u21B3',
|
||
Re: '\u211C',
|
||
real: '\u211C',
|
||
realine: '\u211B',
|
||
realpart: '\u211C',
|
||
reals: '\u211D',
|
||
rect: '\u25AD',
|
||
reg: '\xAE',
|
||
REG: '\xAE',
|
||
ReverseElement: '\u220B',
|
||
ReverseEquilibrium: '\u21CB',
|
||
ReverseUpEquilibrium: '\u296F',
|
||
rfisht: '\u297D',
|
||
rfloor: '\u230B',
|
||
rfr: '\uD835\uDD2F',
|
||
Rfr: '\u211C',
|
||
rHar: '\u2964',
|
||
rhard: '\u21C1',
|
||
rharu: '\u21C0',
|
||
rharul: '\u296C',
|
||
rho: '\u03C1',
|
||
Rho: '\u03A1',
|
||
rhov: '\u03F1',
|
||
RightAngleBracket: '\u27E9',
|
||
rightarrow: '\u2192',
|
||
Rightarrow: '\u21D2',
|
||
RightArrow: '\u2192',
|
||
RightArrowBar: '\u21E5',
|
||
RightArrowLeftArrow: '\u21C4',
|
||
rightarrowtail: '\u21A3',
|
||
RightCeiling: '\u2309',
|
||
RightDoubleBracket: '\u27E7',
|
||
RightDownTeeVector: '\u295D',
|
||
RightDownVector: '\u21C2',
|
||
RightDownVectorBar: '\u2955',
|
||
RightFloor: '\u230B',
|
||
rightharpoondown: '\u21C1',
|
||
rightharpoonup: '\u21C0',
|
||
rightleftarrows: '\u21C4',
|
||
rightleftharpoons: '\u21CC',
|
||
rightrightarrows: '\u21C9',
|
||
rightsquigarrow: '\u219D',
|
||
RightTee: '\u22A2',
|
||
RightTeeArrow: '\u21A6',
|
||
RightTeeVector: '\u295B',
|
||
rightthreetimes: '\u22CC',
|
||
RightTriangle: '\u22B3',
|
||
RightTriangleBar: '\u29D0',
|
||
RightTriangleEqual: '\u22B5',
|
||
RightUpDownVector: '\u294F',
|
||
RightUpTeeVector: '\u295C',
|
||
RightUpVector: '\u21BE',
|
||
RightUpVectorBar: '\u2954',
|
||
RightVector: '\u21C0',
|
||
RightVectorBar: '\u2953',
|
||
ring: '\u02DA',
|
||
risingdotseq: '\u2253',
|
||
rlarr: '\u21C4',
|
||
rlhar: '\u21CC',
|
||
rlm: '\u200F',
|
||
rmoust: '\u23B1',
|
||
rmoustache: '\u23B1',
|
||
rnmid: '\u2AEE',
|
||
roang: '\u27ED',
|
||
roarr: '\u21FE',
|
||
robrk: '\u27E7',
|
||
ropar: '\u2986',
|
||
ropf: '\uD835\uDD63',
|
||
Ropf: '\u211D',
|
||
roplus: '\u2A2E',
|
||
rotimes: '\u2A35',
|
||
RoundImplies: '\u2970',
|
||
rpar: ')',
|
||
rpargt: '\u2994',
|
||
rppolint: '\u2A12',
|
||
rrarr: '\u21C9',
|
||
Rrightarrow: '\u21DB',
|
||
rsaquo: '\u203A',
|
||
rscr: '\uD835\uDCC7',
|
||
Rscr: '\u211B',
|
||
rsh: '\u21B1',
|
||
Rsh: '\u21B1',
|
||
rsqb: ']',
|
||
rsquo: '\u2019',
|
||
rsquor: '\u2019',
|
||
rthree: '\u22CC',
|
||
rtimes: '\u22CA',
|
||
rtri: '\u25B9',
|
||
rtrie: '\u22B5',
|
||
rtrif: '\u25B8',
|
||
rtriltri: '\u29CE',
|
||
RuleDelayed: '\u29F4',
|
||
ruluhar: '\u2968',
|
||
rx: '\u211E',
|
||
sacute: '\u015B',
|
||
Sacute: '\u015A',
|
||
sbquo: '\u201A',
|
||
sc: '\u227B',
|
||
Sc: '\u2ABC',
|
||
scap: '\u2AB8',
|
||
scaron: '\u0161',
|
||
Scaron: '\u0160',
|
||
sccue: '\u227D',
|
||
sce: '\u2AB0',
|
||
scE: '\u2AB4',
|
||
scedil: '\u015F',
|
||
Scedil: '\u015E',
|
||
scirc: '\u015D',
|
||
Scirc: '\u015C',
|
||
scnap: '\u2ABA',
|
||
scnE: '\u2AB6',
|
||
scnsim: '\u22E9',
|
||
scpolint: '\u2A13',
|
||
scsim: '\u227F',
|
||
scy: '\u0441',
|
||
Scy: '\u0421',
|
||
sdot: '\u22C5',
|
||
sdotb: '\u22A1',
|
||
sdote: '\u2A66',
|
||
searhk: '\u2925',
|
||
searr: '\u2198',
|
||
seArr: '\u21D8',
|
||
searrow: '\u2198',
|
||
sect: '\xA7',
|
||
semi: ';',
|
||
seswar: '\u2929',
|
||
setminus: '\u2216',
|
||
setmn: '\u2216',
|
||
sext: '\u2736',
|
||
sfr: '\uD835\uDD30',
|
||
Sfr: '\uD835\uDD16',
|
||
sfrown: '\u2322',
|
||
sharp: '\u266F',
|
||
shchcy: '\u0449',
|
||
SHCHcy: '\u0429',
|
||
shcy: '\u0448',
|
||
SHcy: '\u0428',
|
||
ShortDownArrow: '\u2193',
|
||
ShortLeftArrow: '\u2190',
|
||
shortmid: '\u2223',
|
||
shortparallel: '\u2225',
|
||
ShortRightArrow: '\u2192',
|
||
ShortUpArrow: '\u2191',
|
||
shy: '\xAD',
|
||
sigma: '\u03C3',
|
||
Sigma: '\u03A3',
|
||
sigmaf: '\u03C2',
|
||
sigmav: '\u03C2',
|
||
sim: '\u223C',
|
||
simdot: '\u2A6A',
|
||
sime: '\u2243',
|
||
simeq: '\u2243',
|
||
simg: '\u2A9E',
|
||
simgE: '\u2AA0',
|
||
siml: '\u2A9D',
|
||
simlE: '\u2A9F',
|
||
simne: '\u2246',
|
||
simplus: '\u2A24',
|
||
simrarr: '\u2972',
|
||
slarr: '\u2190',
|
||
SmallCircle: '\u2218',
|
||
smallsetminus: '\u2216',
|
||
smashp: '\u2A33',
|
||
smeparsl: '\u29E4',
|
||
smid: '\u2223',
|
||
smile: '\u2323',
|
||
smt: '\u2AAA',
|
||
smte: '\u2AAC',
|
||
smtes: '\u2AAC\uFE00',
|
||
softcy: '\u044C',
|
||
SOFTcy: '\u042C',
|
||
sol: '/',
|
||
solb: '\u29C4',
|
||
solbar: '\u233F',
|
||
sopf: '\uD835\uDD64',
|
||
Sopf: '\uD835\uDD4A',
|
||
spades: '\u2660',
|
||
spadesuit: '\u2660',
|
||
spar: '\u2225',
|
||
sqcap: '\u2293',
|
||
sqcaps: '\u2293\uFE00',
|
||
sqcup: '\u2294',
|
||
sqcups: '\u2294\uFE00',
|
||
Sqrt: '\u221A',
|
||
sqsub: '\u228F',
|
||
sqsube: '\u2291',
|
||
sqsubset: '\u228F',
|
||
sqsubseteq: '\u2291',
|
||
sqsup: '\u2290',
|
||
sqsupe: '\u2292',
|
||
sqsupset: '\u2290',
|
||
sqsupseteq: '\u2292',
|
||
squ: '\u25A1',
|
||
square: '\u25A1',
|
||
Square: '\u25A1',
|
||
SquareIntersection: '\u2293',
|
||
SquareSubset: '\u228F',
|
||
SquareSubsetEqual: '\u2291',
|
||
SquareSuperset: '\u2290',
|
||
SquareSupersetEqual: '\u2292',
|
||
SquareUnion: '\u2294',
|
||
squarf: '\u25AA',
|
||
squf: '\u25AA',
|
||
srarr: '\u2192',
|
||
sscr: '\uD835\uDCC8',
|
||
Sscr: '\uD835\uDCAE',
|
||
ssetmn: '\u2216',
|
||
ssmile: '\u2323',
|
||
sstarf: '\u22C6',
|
||
star: '\u2606',
|
||
Star: '\u22C6',
|
||
starf: '\u2605',
|
||
straightepsilon: '\u03F5',
|
||
straightphi: '\u03D5',
|
||
strns: '\xAF',
|
||
sub: '\u2282',
|
||
Sub: '\u22D0',
|
||
subdot: '\u2ABD',
|
||
sube: '\u2286',
|
||
subE: '\u2AC5',
|
||
subedot: '\u2AC3',
|
||
submult: '\u2AC1',
|
||
subne: '\u228A',
|
||
subnE: '\u2ACB',
|
||
subplus: '\u2ABF',
|
||
subrarr: '\u2979',
|
||
subset: '\u2282',
|
||
Subset: '\u22D0',
|
||
subseteq: '\u2286',
|
||
subseteqq: '\u2AC5',
|
||
SubsetEqual: '\u2286',
|
||
subsetneq: '\u228A',
|
||
subsetneqq: '\u2ACB',
|
||
subsim: '\u2AC7',
|
||
subsub: '\u2AD5',
|
||
subsup: '\u2AD3',
|
||
succ: '\u227B',
|
||
succapprox: '\u2AB8',
|
||
succcurlyeq: '\u227D',
|
||
Succeeds: '\u227B',
|
||
SucceedsEqual: '\u2AB0',
|
||
SucceedsSlantEqual: '\u227D',
|
||
SucceedsTilde: '\u227F',
|
||
succeq: '\u2AB0',
|
||
succnapprox: '\u2ABA',
|
||
succneqq: '\u2AB6',
|
||
succnsim: '\u22E9',
|
||
succsim: '\u227F',
|
||
SuchThat: '\u220B',
|
||
sum: '\u2211',
|
||
Sum: '\u2211',
|
||
sung: '\u266A',
|
||
sup: '\u2283',
|
||
Sup: '\u22D1',
|
||
sup1: '\xB9',
|
||
sup2: '\xB2',
|
||
sup3: '\xB3',
|
||
supdot: '\u2ABE',
|
||
supdsub: '\u2AD8',
|
||
supe: '\u2287',
|
||
supE: '\u2AC6',
|
||
supedot: '\u2AC4',
|
||
Superset: '\u2283',
|
||
SupersetEqual: '\u2287',
|
||
suphsol: '\u27C9',
|
||
suphsub: '\u2AD7',
|
||
suplarr: '\u297B',
|
||
supmult: '\u2AC2',
|
||
supne: '\u228B',
|
||
supnE: '\u2ACC',
|
||
supplus: '\u2AC0',
|
||
supset: '\u2283',
|
||
Supset: '\u22D1',
|
||
supseteq: '\u2287',
|
||
supseteqq: '\u2AC6',
|
||
supsetneq: '\u228B',
|
||
supsetneqq: '\u2ACC',
|
||
supsim: '\u2AC8',
|
||
supsub: '\u2AD4',
|
||
supsup: '\u2AD6',
|
||
swarhk: '\u2926',
|
||
swarr: '\u2199',
|
||
swArr: '\u21D9',
|
||
swarrow: '\u2199',
|
||
swnwar: '\u292A',
|
||
szlig: '\xDF',
|
||
Tab: '\t',
|
||
target: '\u2316',
|
||
tau: '\u03C4',
|
||
Tau: '\u03A4',
|
||
tbrk: '\u23B4',
|
||
tcaron: '\u0165',
|
||
Tcaron: '\u0164',
|
||
tcedil: '\u0163',
|
||
Tcedil: '\u0162',
|
||
tcy: '\u0442',
|
||
Tcy: '\u0422',
|
||
tdot: '\u20DB',
|
||
telrec: '\u2315',
|
||
tfr: '\uD835\uDD31',
|
||
Tfr: '\uD835\uDD17',
|
||
there4: '\u2234',
|
||
therefore: '\u2234',
|
||
Therefore: '\u2234',
|
||
theta: '\u03B8',
|
||
Theta: '\u0398',
|
||
thetasym: '\u03D1',
|
||
thetav: '\u03D1',
|
||
thickapprox: '\u2248',
|
||
thicksim: '\u223C',
|
||
ThickSpace: '\u205F\u200A',
|
||
thinsp: '\u2009',
|
||
ThinSpace: '\u2009',
|
||
thkap: '\u2248',
|
||
thksim: '\u223C',
|
||
thorn: '\xFE',
|
||
THORN: '\xDE',
|
||
tilde: '\u02DC',
|
||
Tilde: '\u223C',
|
||
TildeEqual: '\u2243',
|
||
TildeFullEqual: '\u2245',
|
||
TildeTilde: '\u2248',
|
||
times: '\xD7',
|
||
timesb: '\u22A0',
|
||
timesbar: '\u2A31',
|
||
timesd: '\u2A30',
|
||
tint: '\u222D',
|
||
toea: '\u2928',
|
||
top: '\u22A4',
|
||
topbot: '\u2336',
|
||
topcir: '\u2AF1',
|
||
topf: '\uD835\uDD65',
|
||
Topf: '\uD835\uDD4B',
|
||
topfork: '\u2ADA',
|
||
tosa: '\u2929',
|
||
tprime: '\u2034',
|
||
trade: '\u2122',
|
||
TRADE: '\u2122',
|
||
triangle: '\u25B5',
|
||
triangledown: '\u25BF',
|
||
triangleleft: '\u25C3',
|
||
trianglelefteq: '\u22B4',
|
||
triangleq: '\u225C',
|
||
triangleright: '\u25B9',
|
||
trianglerighteq: '\u22B5',
|
||
tridot: '\u25EC',
|
||
trie: '\u225C',
|
||
triminus: '\u2A3A',
|
||
TripleDot: '\u20DB',
|
||
triplus: '\u2A39',
|
||
trisb: '\u29CD',
|
||
tritime: '\u2A3B',
|
||
trpezium: '\u23E2',
|
||
tscr: '\uD835\uDCC9',
|
||
Tscr: '\uD835\uDCAF',
|
||
tscy: '\u0446',
|
||
TScy: '\u0426',
|
||
tshcy: '\u045B',
|
||
TSHcy: '\u040B',
|
||
tstrok: '\u0167',
|
||
Tstrok: '\u0166',
|
||
twixt: '\u226C',
|
||
twoheadleftarrow: '\u219E',
|
||
twoheadrightarrow: '\u21A0',
|
||
uacute: '\xFA',
|
||
Uacute: '\xDA',
|
||
uarr: '\u2191',
|
||
uArr: '\u21D1',
|
||
Uarr: '\u219F',
|
||
Uarrocir: '\u2949',
|
||
ubrcy: '\u045E',
|
||
Ubrcy: '\u040E',
|
||
ubreve: '\u016D',
|
||
Ubreve: '\u016C',
|
||
ucirc: '\xFB',
|
||
Ucirc: '\xDB',
|
||
ucy: '\u0443',
|
||
Ucy: '\u0423',
|
||
udarr: '\u21C5',
|
||
udblac: '\u0171',
|
||
Udblac: '\u0170',
|
||
udhar: '\u296E',
|
||
ufisht: '\u297E',
|
||
ufr: '\uD835\uDD32',
|
||
Ufr: '\uD835\uDD18',
|
||
ugrave: '\xF9',
|
||
Ugrave: '\xD9',
|
||
uHar: '\u2963',
|
||
uharl: '\u21BF',
|
||
uharr: '\u21BE',
|
||
uhblk: '\u2580',
|
||
ulcorn: '\u231C',
|
||
ulcorner: '\u231C',
|
||
ulcrop: '\u230F',
|
||
ultri: '\u25F8',
|
||
umacr: '\u016B',
|
||
Umacr: '\u016A',
|
||
uml: '\xA8',
|
||
UnderBar: '_',
|
||
UnderBrace: '\u23DF',
|
||
UnderBracket: '\u23B5',
|
||
UnderParenthesis: '\u23DD',
|
||
Union: '\u22C3',
|
||
UnionPlus: '\u228E',
|
||
uogon: '\u0173',
|
||
Uogon: '\u0172',
|
||
uopf: '\uD835\uDD66',
|
||
Uopf: '\uD835\uDD4C',
|
||
uparrow: '\u2191',
|
||
Uparrow: '\u21D1',
|
||
UpArrow: '\u2191',
|
||
UpArrowBar: '\u2912',
|
||
UpArrowDownArrow: '\u21C5',
|
||
updownarrow: '\u2195',
|
||
Updownarrow: '\u21D5',
|
||
UpDownArrow: '\u2195',
|
||
UpEquilibrium: '\u296E',
|
||
upharpoonleft: '\u21BF',
|
||
upharpoonright: '\u21BE',
|
||
uplus: '\u228E',
|
||
UpperLeftArrow: '\u2196',
|
||
UpperRightArrow: '\u2197',
|
||
upsi: '\u03C5',
|
||
Upsi: '\u03D2',
|
||
upsih: '\u03D2',
|
||
upsilon: '\u03C5',
|
||
Upsilon: '\u03A5',
|
||
UpTee: '\u22A5',
|
||
UpTeeArrow: '\u21A5',
|
||
upuparrows: '\u21C8',
|
||
urcorn: '\u231D',
|
||
urcorner: '\u231D',
|
||
urcrop: '\u230E',
|
||
uring: '\u016F',
|
||
Uring: '\u016E',
|
||
urtri: '\u25F9',
|
||
uscr: '\uD835\uDCCA',
|
||
Uscr: '\uD835\uDCB0',
|
||
utdot: '\u22F0',
|
||
utilde: '\u0169',
|
||
Utilde: '\u0168',
|
||
utri: '\u25B5',
|
||
utrif: '\u25B4',
|
||
uuarr: '\u21C8',
|
||
uuml: '\xFC',
|
||
Uuml: '\xDC',
|
||
uwangle: '\u29A7',
|
||
vangrt: '\u299C',
|
||
varepsilon: '\u03F5',
|
||
varkappa: '\u03F0',
|
||
varnothing: '\u2205',
|
||
varphi: '\u03D5',
|
||
varpi: '\u03D6',
|
||
varpropto: '\u221D',
|
||
varr: '\u2195',
|
||
vArr: '\u21D5',
|
||
varrho: '\u03F1',
|
||
varsigma: '\u03C2',
|
||
varsubsetneq: '\u228A\uFE00',
|
||
varsubsetneqq: '\u2ACB\uFE00',
|
||
varsupsetneq: '\u228B\uFE00',
|
||
varsupsetneqq: '\u2ACC\uFE00',
|
||
vartheta: '\u03D1',
|
||
vartriangleleft: '\u22B2',
|
||
vartriangleright: '\u22B3',
|
||
vBar: '\u2AE8',
|
||
Vbar: '\u2AEB',
|
||
vBarv: '\u2AE9',
|
||
vcy: '\u0432',
|
||
Vcy: '\u0412',
|
||
vdash: '\u22A2',
|
||
vDash: '\u22A8',
|
||
Vdash: '\u22A9',
|
||
VDash: '\u22AB',
|
||
Vdashl: '\u2AE6',
|
||
vee: '\u2228',
|
||
Vee: '\u22C1',
|
||
veebar: '\u22BB',
|
||
veeeq: '\u225A',
|
||
vellip: '\u22EE',
|
||
verbar: '|',
|
||
Verbar: '\u2016',
|
||
vert: '|',
|
||
Vert: '\u2016',
|
||
VerticalBar: '\u2223',
|
||
VerticalLine: '|',
|
||
VerticalSeparator: '\u2758',
|
||
VerticalTilde: '\u2240',
|
||
VeryThinSpace: '\u200A',
|
||
vfr: '\uD835\uDD33',
|
||
Vfr: '\uD835\uDD19',
|
||
vltri: '\u22B2',
|
||
vnsub: '\u2282\u20D2',
|
||
vnsup: '\u2283\u20D2',
|
||
vopf: '\uD835\uDD67',
|
||
Vopf: '\uD835\uDD4D',
|
||
vprop: '\u221D',
|
||
vrtri: '\u22B3',
|
||
vscr: '\uD835\uDCCB',
|
||
Vscr: '\uD835\uDCB1',
|
||
vsubne: '\u228A\uFE00',
|
||
vsubnE: '\u2ACB\uFE00',
|
||
vsupne: '\u228B\uFE00',
|
||
vsupnE: '\u2ACC\uFE00',
|
||
Vvdash: '\u22AA',
|
||
vzigzag: '\u299A',
|
||
wcirc: '\u0175',
|
||
Wcirc: '\u0174',
|
||
wedbar: '\u2A5F',
|
||
wedge: '\u2227',
|
||
Wedge: '\u22C0',
|
||
wedgeq: '\u2259',
|
||
weierp: '\u2118',
|
||
wfr: '\uD835\uDD34',
|
||
Wfr: '\uD835\uDD1A',
|
||
wopf: '\uD835\uDD68',
|
||
Wopf: '\uD835\uDD4E',
|
||
wp: '\u2118',
|
||
wr: '\u2240',
|
||
wreath: '\u2240',
|
||
wscr: '\uD835\uDCCC',
|
||
Wscr: '\uD835\uDCB2',
|
||
xcap: '\u22C2',
|
||
xcirc: '\u25EF',
|
||
xcup: '\u22C3',
|
||
xdtri: '\u25BD',
|
||
xfr: '\uD835\uDD35',
|
||
Xfr: '\uD835\uDD1B',
|
||
xharr: '\u27F7',
|
||
xhArr: '\u27FA',
|
||
xi: '\u03BE',
|
||
Xi: '\u039E',
|
||
xlarr: '\u27F5',
|
||
xlArr: '\u27F8',
|
||
xmap: '\u27FC',
|
||
xnis: '\u22FB',
|
||
xodot: '\u2A00',
|
||
xopf: '\uD835\uDD69',
|
||
Xopf: '\uD835\uDD4F',
|
||
xoplus: '\u2A01',
|
||
xotime: '\u2A02',
|
||
xrarr: '\u27F6',
|
||
xrArr: '\u27F9',
|
||
xscr: '\uD835\uDCCD',
|
||
Xscr: '\uD835\uDCB3',
|
||
xsqcup: '\u2A06',
|
||
xuplus: '\u2A04',
|
||
xutri: '\u25B3',
|
||
xvee: '\u22C1',
|
||
xwedge: '\u22C0',
|
||
yacute: '\xFD',
|
||
Yacute: '\xDD',
|
||
yacy: '\u044F',
|
||
YAcy: '\u042F',
|
||
ycirc: '\u0177',
|
||
Ycirc: '\u0176',
|
||
ycy: '\u044B',
|
||
Ycy: '\u042B',
|
||
yen: '\xA5',
|
||
yfr: '\uD835\uDD36',
|
||
Yfr: '\uD835\uDD1C',
|
||
yicy: '\u0457',
|
||
YIcy: '\u0407',
|
||
yopf: '\uD835\uDD6A',
|
||
Yopf: '\uD835\uDD50',
|
||
yscr: '\uD835\uDCCE',
|
||
Yscr: '\uD835\uDCB4',
|
||
yucy: '\u044E',
|
||
YUcy: '\u042E',
|
||
yuml: '\xFF',
|
||
Yuml: '\u0178',
|
||
zacute: '\u017A',
|
||
Zacute: '\u0179',
|
||
zcaron: '\u017E',
|
||
Zcaron: '\u017D',
|
||
zcy: '\u0437',
|
||
Zcy: '\u0417',
|
||
zdot: '\u017C',
|
||
Zdot: '\u017B',
|
||
zeetrf: '\u2128',
|
||
ZeroWidthSpace: '\u200B',
|
||
zeta: '\u03B6',
|
||
Zeta: '\u0396',
|
||
zfr: '\uD835\uDD37',
|
||
Zfr: '\u2128',
|
||
zhcy: '\u0436',
|
||
ZHcy: '\u0416',
|
||
zigrarr: '\u21DD',
|
||
zopf: '\uD835\uDD6B',
|
||
Zopf: '\u2124',
|
||
zscr: '\uD835\uDCCF',
|
||
Zscr: '\uD835\uDCB5',
|
||
zwj: '\u200D',
|
||
zwnj: '\u200C'
|
||
}
|
||
var decodeMapLegacy = {
|
||
aacute: '\xE1',
|
||
Aacute: '\xC1',
|
||
acirc: '\xE2',
|
||
Acirc: '\xC2',
|
||
acute: '\xB4',
|
||
aelig: '\xE6',
|
||
AElig: '\xC6',
|
||
agrave: '\xE0',
|
||
Agrave: '\xC0',
|
||
amp: '&',
|
||
AMP: '&',
|
||
aring: '\xE5',
|
||
Aring: '\xC5',
|
||
atilde: '\xE3',
|
||
Atilde: '\xC3',
|
||
auml: '\xE4',
|
||
Auml: '\xC4',
|
||
brvbar: '\xA6',
|
||
ccedil: '\xE7',
|
||
Ccedil: '\xC7',
|
||
cedil: '\xB8',
|
||
cent: '\xA2',
|
||
copy: '\xA9',
|
||
COPY: '\xA9',
|
||
curren: '\xA4',
|
||
deg: '\xB0',
|
||
divide: '\xF7',
|
||
eacute: '\xE9',
|
||
Eacute: '\xC9',
|
||
ecirc: '\xEA',
|
||
Ecirc: '\xCA',
|
||
egrave: '\xE8',
|
||
Egrave: '\xC8',
|
||
eth: '\xF0',
|
||
ETH: '\xD0',
|
||
euml: '\xEB',
|
||
Euml: '\xCB',
|
||
frac12: '\xBD',
|
||
frac14: '\xBC',
|
||
frac34: '\xBE',
|
||
gt: '>',
|
||
GT: '>',
|
||
iacute: '\xED',
|
||
Iacute: '\xCD',
|
||
icirc: '\xEE',
|
||
Icirc: '\xCE',
|
||
iexcl: '\xA1',
|
||
igrave: '\xEC',
|
||
Igrave: '\xCC',
|
||
iquest: '\xBF',
|
||
iuml: '\xEF',
|
||
Iuml: '\xCF',
|
||
laquo: '\xAB',
|
||
lt: '<',
|
||
LT: '<',
|
||
macr: '\xAF',
|
||
micro: '\xB5',
|
||
middot: '\xB7',
|
||
nbsp: '\xA0',
|
||
not: '\xAC',
|
||
ntilde: '\xF1',
|
||
Ntilde: '\xD1',
|
||
oacute: '\xF3',
|
||
Oacute: '\xD3',
|
||
ocirc: '\xF4',
|
||
Ocirc: '\xD4',
|
||
ograve: '\xF2',
|
||
Ograve: '\xD2',
|
||
ordf: '\xAA',
|
||
ordm: '\xBA',
|
||
oslash: '\xF8',
|
||
Oslash: '\xD8',
|
||
otilde: '\xF5',
|
||
Otilde: '\xD5',
|
||
ouml: '\xF6',
|
||
Ouml: '\xD6',
|
||
para: '\xB6',
|
||
plusmn: '\xB1',
|
||
pound: '\xA3',
|
||
quot: '"',
|
||
QUOT: '"',
|
||
raquo: '\xBB',
|
||
reg: '\xAE',
|
||
REG: '\xAE',
|
||
sect: '\xA7',
|
||
shy: '\xAD',
|
||
sup1: '\xB9',
|
||
sup2: '\xB2',
|
||
sup3: '\xB3',
|
||
szlig: '\xDF',
|
||
thorn: '\xFE',
|
||
THORN: '\xDE',
|
||
times: '\xD7',
|
||
uacute: '\xFA',
|
||
Uacute: '\xDA',
|
||
ucirc: '\xFB',
|
||
Ucirc: '\xDB',
|
||
ugrave: '\xF9',
|
||
Ugrave: '\xD9',
|
||
uml: '\xA8',
|
||
uuml: '\xFC',
|
||
Uuml: '\xDC',
|
||
yacute: '\xFD',
|
||
Yacute: '\xDD',
|
||
yen: '\xA5',
|
||
yuml: '\xFF'
|
||
}
|
||
var decodeMapNumeric = {
|
||
0: '\uFFFD',
|
||
128: '\u20AC',
|
||
130: '\u201A',
|
||
131: '\u0192',
|
||
132: '\u201E',
|
||
133: '\u2026',
|
||
134: '\u2020',
|
||
135: '\u2021',
|
||
136: '\u02C6',
|
||
137: '\u2030',
|
||
138: '\u0160',
|
||
139: '\u2039',
|
||
140: '\u0152',
|
||
142: '\u017D',
|
||
145: '\u2018',
|
||
146: '\u2019',
|
||
147: '\u201C',
|
||
148: '\u201D',
|
||
149: '\u2022',
|
||
150: '\u2013',
|
||
151: '\u2014',
|
||
152: '\u02DC',
|
||
153: '\u2122',
|
||
154: '\u0161',
|
||
155: '\u203A',
|
||
156: '\u0153',
|
||
158: '\u017E',
|
||
159: '\u0178'
|
||
}
|
||
var invalidReferenceCodePoints = [
|
||
1, 2, 3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
|
||
24, 25, 26, 27, 28, 29, 30, 31, 127, 128, 129, 130, 131, 132, 133, 134,
|
||
135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
|
||
149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 64976, 64977,
|
||
64978, 64979, 64980, 64981, 64982, 64983, 64984, 64985, 64986, 64987,
|
||
64988, 64989, 64990, 64991, 64992, 64993, 64994, 64995, 64996, 64997,
|
||
64998, 64999, 65000, 65001, 65002, 65003, 65004, 65005, 65006, 65007,
|
||
65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678,
|
||
327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823,
|
||
655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502,
|
||
917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111
|
||
]
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
|
||
var stringFromCharCode = String.fromCharCode
|
||
|
||
var object = {}
|
||
var hasOwnProperty = object.hasOwnProperty
|
||
var has = function (object, propertyName) {
|
||
return hasOwnProperty.call(object, propertyName)
|
||
}
|
||
|
||
var contains = function (array, value) {
|
||
var index = -1
|
||
var length = array.length
|
||
while (++index < length) {
|
||
if (array[index] == value) {
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
|
||
var merge = function (options, defaults) {
|
||
if (!options) {
|
||
return defaults
|
||
}
|
||
var result = {}
|
||
var key
|
||
for (key in defaults) {
|
||
// A `hasOwnProperty` check is not needed here, since only recognized
|
||
// option names are used anyway. Any others are ignored.
|
||
result[key] = has(options, key) ? options[key] : defaults[key]
|
||
}
|
||
return result
|
||
}
|
||
|
||
// Modified version of `ucs2encode`; see https://mths.be/punycode.
|
||
var codePointToSymbol = function (codePoint, strict) {
|
||
var output = ''
|
||
if (
|
||
(codePoint >= 0xd800 && codePoint <= 0xdfff) ||
|
||
codePoint > 0x10ffff
|
||
) {
|
||
// See issue #4:
|
||
// “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is
|
||
// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
|
||
// REPLACEMENT CHARACTER.”
|
||
if (strict) {
|
||
parseError(
|
||
'character reference outside the permissible Unicode range'
|
||
)
|
||
}
|
||
return '\uFFFD'
|
||
}
|
||
if (has(decodeMapNumeric, codePoint)) {
|
||
if (strict) {
|
||
parseError('disallowed character reference')
|
||
}
|
||
return decodeMapNumeric[codePoint]
|
||
}
|
||
if (strict && contains(invalidReferenceCodePoints, codePoint)) {
|
||
parseError('disallowed character reference')
|
||
}
|
||
if (codePoint > 0xffff) {
|
||
codePoint -= 0x10000
|
||
output += stringFromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800)
|
||
codePoint = 0xdc00 | (codePoint & 0x3ff)
|
||
}
|
||
output += stringFromCharCode(codePoint)
|
||
return output
|
||
}
|
||
|
||
var hexEscape = function (codePoint) {
|
||
return '&#x' + codePoint.toString(16).toUpperCase() + ';'
|
||
}
|
||
|
||
var decEscape = function (codePoint) {
|
||
return '&#' + codePoint + ';'
|
||
}
|
||
|
||
var parseError = function (message) {
|
||
throw Error('Parse error: ' + message)
|
||
}
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
|
||
var encode = function (string, options) {
|
||
options = merge(options, encode.options)
|
||
var strict = options.strict
|
||
if (strict && regexInvalidRawCodePoint.test(string)) {
|
||
parseError('forbidden code point')
|
||
}
|
||
var encodeEverything = options.encodeEverything
|
||
var useNamedReferences = options.useNamedReferences
|
||
var allowUnsafeSymbols = options.allowUnsafeSymbols
|
||
var escapeCodePoint = options.decimal ? decEscape : hexEscape
|
||
|
||
var escapeBmpSymbol = function (symbol) {
|
||
return escapeCodePoint(symbol.charCodeAt(0))
|
||
}
|
||
|
||
if (encodeEverything) {
|
||
// Encode ASCII symbols.
|
||
string = string.replace(regexAsciiWhitelist, function (symbol) {
|
||
// Use named references if requested & possible.
|
||
if (useNamedReferences && has(encodeMap, symbol)) {
|
||
return '&' + encodeMap[symbol] + ';'
|
||
}
|
||
return escapeBmpSymbol(symbol)
|
||
})
|
||
// Shorten a few escapes that represent two symbols, of which at least one
|
||
// is within the ASCII range.
|
||
if (useNamedReferences) {
|
||
string = string
|
||
.replace(/>\u20D2/g, '>⃒')
|
||
.replace(/<\u20D2/g, '<⃒')
|
||
.replace(/fj/g, 'fj')
|
||
}
|
||
// Encode non-ASCII symbols.
|
||
if (useNamedReferences) {
|
||
// Encode non-ASCII symbols that can be replaced with a named reference.
|
||
string = string.replace(regexEncodeNonAscii, function (string) {
|
||
// Note: there is no need to check `has(encodeMap, string)` here.
|
||
return '&' + encodeMap[string] + ';'
|
||
})
|
||
}
|
||
// Note: any remaining non-ASCII symbols are handled outside of the `if`.
|
||
} else if (useNamedReferences) {
|
||
// Apply named character references.
|
||
// Encode `<>"'&` using named character references.
|
||
if (!allowUnsafeSymbols) {
|
||
string = string.replace(regexEscape, function (string) {
|
||
return '&' + encodeMap[string] + ';' // no need to check `has()` here
|
||
})
|
||
}
|
||
// Shorten escapes that represent two symbols, of which at least one is
|
||
// `<>"'&`.
|
||
string = string
|
||
.replace(/>\u20D2/g, '>⃒')
|
||
.replace(/<\u20D2/g, '<⃒')
|
||
// Encode non-ASCII symbols that can be replaced with a named reference.
|
||
string = string.replace(regexEncodeNonAscii, function (string) {
|
||
// Note: there is no need to check `has(encodeMap, string)` here.
|
||
return '&' + encodeMap[string] + ';'
|
||
})
|
||
} else if (!allowUnsafeSymbols) {
|
||
// Encode `<>"'&` using hexadecimal escapes, now that they’re not handled
|
||
// using named character references.
|
||
string = string.replace(regexEscape, escapeBmpSymbol)
|
||
}
|
||
return (
|
||
string
|
||
// Encode astral symbols.
|
||
.replace(regexAstralSymbols, function ($0) {
|
||
// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
||
var high = $0.charCodeAt(0)
|
||
var low = $0.charCodeAt(1)
|
||
var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000
|
||
return escapeCodePoint(codePoint)
|
||
})
|
||
// Encode any remaining BMP symbols that are not printable ASCII symbols
|
||
// using a hexadecimal escape.
|
||
.replace(regexBmpWhitelist, escapeBmpSymbol)
|
||
)
|
||
}
|
||
// Expose default options (so they can be overridden globally).
|
||
encode.options = {
|
||
allowUnsafeSymbols: false,
|
||
encodeEverything: false,
|
||
strict: false,
|
||
useNamedReferences: false,
|
||
decimal: false
|
||
}
|
||
|
||
var decode = function (html, options) {
|
||
options = merge(options, decode.options)
|
||
var strict = options.strict
|
||
if (strict && regexInvalidEntity.test(html)) {
|
||
parseError('malformed character reference')
|
||
}
|
||
return html.replace(
|
||
regexDecode,
|
||
function ($0, $1, $2, $3, $4, $5, $6, $7, $8) {
|
||
var codePoint
|
||
var semicolon
|
||
var decDigits
|
||
var hexDigits
|
||
var reference
|
||
var next
|
||
|
||
if ($1) {
|
||
reference = $1
|
||
// Note: there is no need to check `has(decodeMap, reference)`.
|
||
return decodeMap[reference]
|
||
}
|
||
|
||
if ($2) {
|
||
// Decode named character references without trailing `;`, e.g. `&`.
|
||
// This is only a parse error if it gets converted to `&`, or if it is
|
||
// followed by `=` in an attribute context.
|
||
reference = $2
|
||
next = $3
|
||
if (next && options.isAttributeValue) {
|
||
if (strict && next == '=') {
|
||
parseError('`&` did not start a character reference')
|
||
}
|
||
return $0
|
||
} else {
|
||
if (strict) {
|
||
parseError(
|
||
'named character reference was not terminated by a semicolon'
|
||
)
|
||
}
|
||
// Note: there is no need to check `has(decodeMapLegacy, reference)`.
|
||
return decodeMapLegacy[reference] + (next || '')
|
||
}
|
||
}
|
||
|
||
if ($4) {
|
||
// Decode decimal escapes, e.g. `𝌆`.
|
||
decDigits = $4
|
||
semicolon = $5
|
||
if (strict && !semicolon) {
|
||
parseError(
|
||
'character reference was not terminated by a semicolon'
|
||
)
|
||
}
|
||
codePoint = parseInt(decDigits, 10)
|
||
return codePointToSymbol(codePoint, strict)
|
||
}
|
||
|
||
if ($6) {
|
||
// Decode hexadecimal escapes, e.g. `𝌆`.
|
||
hexDigits = $6
|
||
semicolon = $7
|
||
if (strict && !semicolon) {
|
||
parseError(
|
||
'character reference was not terminated by a semicolon'
|
||
)
|
||
}
|
||
codePoint = parseInt(hexDigits, 16)
|
||
return codePointToSymbol(codePoint, strict)
|
||
}
|
||
|
||
// If we’re still here, `if ($7)` is implied; it’s an ambiguous
|
||
// ampersand for sure. https://mths.be/notes/ambiguous-ampersands
|
||
if (strict) {
|
||
parseError(
|
||
'named character reference was not terminated by a semicolon'
|
||
)
|
||
}
|
||
return $0
|
||
}
|
||
)
|
||
}
|
||
// Expose default options (so they can be overridden globally).
|
||
decode.options = {
|
||
isAttributeValue: false,
|
||
strict: false
|
||
}
|
||
|
||
var escape = function (string) {
|
||
return string.replace(regexEscape, function ($0) {
|
||
// Note: there is no need to check `has(escapeMap, $0)` here.
|
||
return escapeMap[$0]
|
||
})
|
||
}
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
|
||
var he = {
|
||
version: '1.2.0',
|
||
encode: encode,
|
||
decode: decode,
|
||
escape: escape,
|
||
unescape: decode
|
||
}
|
||
|
||
// Some AMD build optimizers, like r.js, check for specific condition patterns
|
||
// like the following:
|
||
if (freeExports && !freeExports.nodeType) {
|
||
if (freeModule) {
|
||
// in Node.js, io.js, or RingoJS v0.8.0+
|
||
freeModule.exports = he
|
||
} else {
|
||
// in Narwhal or RingoJS v0.7.0-
|
||
for (var key in he) {
|
||
has(he, key) && (freeExports[key] = he[key])
|
||
}
|
||
}
|
||
} else {
|
||
// in Rhino or a web browser
|
||
root.he = he
|
||
}
|
||
})(commonjsGlobal)
|
||
})(he$1, he$1.exports)
|
||
|
||
var he = he$1.exports
|
||
|
||
/**
|
||
* Cross-platform code generation for component v-model
|
||
*/
|
||
function genComponentModel(el, value, modifiers) {
|
||
var _a = modifiers || {},
|
||
number = _a.number,
|
||
trim = _a.trim
|
||
var baseValueExpression = '$$v'
|
||
var valueExpression = baseValueExpression
|
||
if (trim) {
|
||
valueExpression =
|
||
'(typeof '.concat(baseValueExpression, " === 'string'") +
|
||
'? '.concat(baseValueExpression, '.trim()') +
|
||
': '.concat(baseValueExpression, ')')
|
||
}
|
||
if (number) {
|
||
valueExpression = '_n('.concat(valueExpression, ')')
|
||
}
|
||
var assignment = genAssignmentCode(value, valueExpression)
|
||
el.model = {
|
||
value: '('.concat(value, ')'),
|
||
expression: JSON.stringify(value),
|
||
callback: 'function ('
|
||
.concat(baseValueExpression, ') {')
|
||
.concat(assignment, '}')
|
||
}
|
||
}
|
||
/**
|
||
* Cross-platform codegen helper for generating v-model value assignment code.
|
||
*/
|
||
function genAssignmentCode(value, assignment) {
|
||
var res = parseModel(value)
|
||
if (res.key === null) {
|
||
return ''.concat(value, '=').concat(assignment)
|
||
} else {
|
||
return '$set('
|
||
.concat(res.exp, ', ')
|
||
.concat(res.key, ', ')
|
||
.concat(assignment, ')')
|
||
}
|
||
}
|
||
/**
|
||
* Parse a v-model expression into a base path and a final key segment.
|
||
* Handles both dot-path and possible square brackets.
|
||
*
|
||
* Possible cases:
|
||
*
|
||
* - test
|
||
* - test[key]
|
||
* - test[test1[key]]
|
||
* - test["a"][key]
|
||
* - xxx.test[a[a].test1[key]]
|
||
* - test.xxx.a["asa"][test1[key]]
|
||
*
|
||
*/
|
||
var len, str, chr, index, expressionPos, expressionEndPos
|
||
function parseModel(val) {
|
||
// Fix https://github.com/vuejs/vue/pull/7730
|
||
// allow v-model="obj.val " (trailing whitespace)
|
||
val = val.trim()
|
||
len = val.length
|
||
if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {
|
||
index = val.lastIndexOf('.')
|
||
if (index > -1) {
|
||
return {
|
||
exp: val.slice(0, index),
|
||
key: '"' + val.slice(index + 1) + '"'
|
||
}
|
||
} else {
|
||
return {
|
||
exp: val,
|
||
key: null
|
||
}
|
||
}
|
||
}
|
||
str = val
|
||
index = expressionPos = expressionEndPos = 0
|
||
while (!eof()) {
|
||
chr = next()
|
||
/* istanbul ignore if */
|
||
if (isStringStart(chr)) {
|
||
parseString(chr)
|
||
} else if (chr === 0x5b) {
|
||
parseBracket(chr)
|
||
}
|
||
}
|
||
return {
|
||
exp: val.slice(0, expressionPos),
|
||
key: val.slice(expressionPos + 1, expressionEndPos)
|
||
}
|
||
}
|
||
function next() {
|
||
return str.charCodeAt(++index)
|
||
}
|
||
function eof() {
|
||
return index >= len
|
||
}
|
||
function isStringStart(chr) {
|
||
return chr === 0x22 || chr === 0x27
|
||
}
|
||
function parseBracket(chr) {
|
||
var inBracket = 1
|
||
expressionPos = index
|
||
while (!eof()) {
|
||
chr = next()
|
||
if (isStringStart(chr)) {
|
||
parseString(chr)
|
||
continue
|
||
}
|
||
if (chr === 0x5b) inBracket++
|
||
if (chr === 0x5d) inBracket--
|
||
if (inBracket === 0) {
|
||
expressionEndPos = index
|
||
break
|
||
}
|
||
}
|
||
}
|
||
function parseString(chr) {
|
||
var stringQuote = chr
|
||
while (!eof()) {
|
||
chr = next()
|
||
if (chr === stringQuote) {
|
||
break
|
||
}
|
||
}
|
||
}
|
||
|
||
var onRE = /^@|^v-on:/
|
||
var dirRE = /^v-|^@|^:|^#/
|
||
var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/
|
||
var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/
|
||
var stripParensRE = /^\(|\)$/g
|
||
var dynamicArgRE = /^\[.*\]$/
|
||
var argRE = /:(.*)$/
|
||
var bindRE = /^:|^\.|^v-bind:/
|
||
var modifierRE = /\.[^.\]]+(?=[^\]]*$)/g
|
||
var slotRE = /^v-slot(:|$)|^#/
|
||
var lineBreakRE = /[\r\n]/
|
||
var whitespaceRE = /[ \f\t\r\n]+/g
|
||
var invalidAttributeRE = /[\s"'<>\/=]/
|
||
var decodeHTMLCached = cached(he.decode)
|
||
var emptySlotScopeToken = '_empty_'
|
||
// configurable state
|
||
var warn$1
|
||
var delimiters
|
||
var transforms
|
||
var preTransforms
|
||
var postTransforms
|
||
var platformIsPreTag
|
||
var platformMustUseProp
|
||
var platformGetTagNamespace
|
||
var maybeComponent
|
||
function createASTElement(tag, attrs, parent) {
|
||
return {
|
||
type: 1,
|
||
tag: tag,
|
||
attrsList: attrs,
|
||
attrsMap: makeAttrsMap(attrs),
|
||
rawAttrsMap: {},
|
||
parent: parent,
|
||
children: []
|
||
}
|
||
}
|
||
/**
|
||
* Convert HTML string to AST.
|
||
*/
|
||
function parse(template, options) {
|
||
warn$1 = options.warn || baseWarn
|
||
platformIsPreTag = options.isPreTag || no
|
||
platformMustUseProp = options.mustUseProp || no
|
||
platformGetTagNamespace = options.getTagNamespace || no
|
||
var isReservedTag = options.isReservedTag || no
|
||
maybeComponent = function (el) {
|
||
return !!(
|
||
el.component ||
|
||
el.attrsMap[':is'] ||
|
||
el.attrsMap['v-bind:is'] ||
|
||
!(el.attrsMap.is
|
||
? isReservedTag(el.attrsMap.is)
|
||
: isReservedTag(el.tag))
|
||
)
|
||
}
|
||
transforms = pluckModuleFunction(options.modules, 'transformNode')
|
||
preTransforms = pluckModuleFunction(options.modules, 'preTransformNode')
|
||
postTransforms = pluckModuleFunction(options.modules, 'postTransformNode')
|
||
delimiters = options.delimiters
|
||
var stack = []
|
||
var preserveWhitespace = options.preserveWhitespace !== false
|
||
var whitespaceOption = options.whitespace
|
||
var root
|
||
var currentParent
|
||
var inVPre = false
|
||
var inPre = false
|
||
var warned = false
|
||
function warnOnce(msg, range) {
|
||
if (!warned) {
|
||
warned = true
|
||
warn$1(msg, range)
|
||
}
|
||
}
|
||
function closeElement(element) {
|
||
trimEndingWhitespace(element)
|
||
if (!inVPre && !element.processed) {
|
||
element = processElement(element, options)
|
||
}
|
||
// tree management
|
||
if (!stack.length && element !== root) {
|
||
// allow root elements with v-if, v-else-if and v-else
|
||
if (root.if && (element.elseif || element.else)) {
|
||
{
|
||
checkRootConstraints(element)
|
||
}
|
||
addIfCondition(root, {
|
||
exp: element.elseif,
|
||
block: element
|
||
})
|
||
} else {
|
||
warnOnce(
|
||
'Component template should contain exactly one root element. ' +
|
||
'If you are using v-if on multiple elements, ' +
|
||
'use v-else-if to chain them instead.',
|
||
{ start: element.start }
|
||
)
|
||
}
|
||
}
|
||
if (currentParent && !element.forbidden) {
|
||
if (element.elseif || element.else) {
|
||
processIfConditions(element, currentParent)
|
||
} else {
|
||
if (element.slotScope) {
|
||
// scoped slot
|
||
// keep it in the children list so that v-else(-if) conditions can
|
||
// find it as the prev node.
|
||
var name_1 = element.slotTarget || '"default"'
|
||
;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[
|
||
name_1
|
||
] = element
|
||
}
|
||
currentParent.children.push(element)
|
||
element.parent = currentParent
|
||
}
|
||
}
|
||
// final children cleanup
|
||
// filter out scoped slots
|
||
element.children = element.children.filter(function (c) {
|
||
return !c.slotScope
|
||
})
|
||
// remove trailing whitespace node again
|
||
trimEndingWhitespace(element)
|
||
// check pre state
|
||
if (element.pre) {
|
||
inVPre = false
|
||
}
|
||
if (platformIsPreTag(element.tag)) {
|
||
inPre = false
|
||
}
|
||
// apply post-transforms
|
||
for (var i = 0; i < postTransforms.length; i++) {
|
||
postTransforms[i](element, options)
|
||
}
|
||
}
|
||
function trimEndingWhitespace(el) {
|
||
// remove trailing whitespace node
|
||
if (!inPre) {
|
||
var lastNode = void 0
|
||
while (
|
||
(lastNode = el.children[el.children.length - 1]) &&
|
||
lastNode.type === 3 &&
|
||
lastNode.text === ' '
|
||
) {
|
||
el.children.pop()
|
||
}
|
||
}
|
||
}
|
||
function checkRootConstraints(el) {
|
||
if (el.tag === 'slot' || el.tag === 'template') {
|
||
warnOnce(
|
||
'Cannot use <'.concat(
|
||
el.tag,
|
||
'> as component root element because it may '
|
||
) + 'contain multiple nodes.',
|
||
{ start: el.start }
|
||
)
|
||
}
|
||
if (el.attrsMap.hasOwnProperty('v-for')) {
|
||
warnOnce(
|
||
'Cannot use v-for on stateful component root element because ' +
|
||
'it renders multiple elements.',
|
||
el.rawAttrsMap['v-for']
|
||
)
|
||
}
|
||
}
|
||
parseHTML(template, {
|
||
warn: warn$1,
|
||
expectHTML: options.expectHTML,
|
||
isUnaryTag: options.isUnaryTag,
|
||
canBeLeftOpenTag: options.canBeLeftOpenTag,
|
||
shouldDecodeNewlines: options.shouldDecodeNewlines,
|
||
shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
|
||
shouldKeepComment: options.comments,
|
||
outputSourceRange: options.outputSourceRange,
|
||
start: function (tag, attrs, unary, start, end) {
|
||
// check namespace.
|
||
// inherit parent ns if there is one
|
||
var ns =
|
||
(currentParent && currentParent.ns) || platformGetTagNamespace(tag)
|
||
// handle IE svg bug
|
||
/* istanbul ignore if */
|
||
if (isIE && ns === 'svg') {
|
||
attrs = guardIESVGBug(attrs)
|
||
}
|
||
var element = createASTElement(tag, attrs, currentParent)
|
||
if (ns) {
|
||
element.ns = ns
|
||
}
|
||
{
|
||
if (options.outputSourceRange) {
|
||
element.start = start
|
||
element.end = end
|
||
element.rawAttrsMap = element.attrsList.reduce(function (
|
||
cumulated,
|
||
attr
|
||
) {
|
||
cumulated[attr.name] = attr
|
||
return cumulated
|
||
},
|
||
{})
|
||
}
|
||
attrs.forEach(function (attr) {
|
||
if (invalidAttributeRE.test(attr.name)) {
|
||
warn$1(
|
||
'Invalid dynamic argument expression: attribute names cannot contain ' +
|
||
'spaces, quotes, <, >, / or =.',
|
||
{
|
||
start: attr.start + attr.name.indexOf('['),
|
||
end: attr.start + attr.name.length
|
||
}
|
||
)
|
||
}
|
||
})
|
||
}
|
||
if (isForbiddenTag(element) && !isServerRendering()) {
|
||
element.forbidden = true
|
||
warn$1(
|
||
'Templates should only be responsible for mapping the state to the ' +
|
||
'UI. Avoid placing tags with side-effects in your templates, such as ' +
|
||
'<'.concat(tag, '>') +
|
||
', as they will not be parsed.',
|
||
{ start: element.start }
|
||
)
|
||
}
|
||
// apply pre-transforms
|
||
for (var i = 0; i < preTransforms.length; i++) {
|
||
element = preTransforms[i](element, options) || element
|
||
}
|
||
if (!inVPre) {
|
||
processPre(element)
|
||
if (element.pre) {
|
||
inVPre = true
|
||
}
|
||
}
|
||
if (platformIsPreTag(element.tag)) {
|
||
inPre = true
|
||
}
|
||
if (inVPre) {
|
||
processRawAttrs(element)
|
||
} else if (!element.processed) {
|
||
// structural directives
|
||
processFor(element)
|
||
processIf(element)
|
||
processOnce(element)
|
||
}
|
||
if (!root) {
|
||
root = element
|
||
{
|
||
checkRootConstraints(root)
|
||
}
|
||
}
|
||
if (!unary) {
|
||
currentParent = element
|
||
stack.push(element)
|
||
} else {
|
||
closeElement(element)
|
||
}
|
||
},
|
||
end: function (tag, start, end) {
|
||
var element = stack[stack.length - 1]
|
||
// pop stack
|
||
stack.length -= 1
|
||
currentParent = stack[stack.length - 1]
|
||
if (options.outputSourceRange) {
|
||
element.end = end
|
||
}
|
||
closeElement(element)
|
||
},
|
||
chars: function (text, start, end) {
|
||
if (!currentParent) {
|
||
{
|
||
if (text === template) {
|
||
warnOnce(
|
||
'Component template requires a root element, rather than just text.',
|
||
{ start: start }
|
||
)
|
||
} else if ((text = text.trim())) {
|
||
warnOnce(
|
||
'text "'.concat(
|
||
text,
|
||
'" outside root element will be ignored.'
|
||
),
|
||
{
|
||
start: start
|
||
}
|
||
)
|
||
}
|
||
}
|
||
return
|
||
}
|
||
// IE textarea placeholder bug
|
||
/* istanbul ignore if */
|
||
if (
|
||
isIE &&
|
||
currentParent.tag === 'textarea' &&
|
||
currentParent.attrsMap.placeholder === text
|
||
) {
|
||
return
|
||
}
|
||
var children = currentParent.children
|
||
if (inPre || text.trim()) {
|
||
text = isTextTag(currentParent) ? text : decodeHTMLCached(text)
|
||
} else if (!children.length) {
|
||
// remove the whitespace-only node right after an opening tag
|
||
text = ''
|
||
} else if (whitespaceOption) {
|
||
if (whitespaceOption === 'condense') {
|
||
// in condense mode, remove the whitespace node if it contains
|
||
// line break, otherwise condense to a single space
|
||
text = lineBreakRE.test(text) ? '' : ' '
|
||
} else {
|
||
text = ' '
|
||
}
|
||
} else {
|
||
text = preserveWhitespace ? ' ' : ''
|
||
}
|
||
if (text) {
|
||
if (!inPre && whitespaceOption === 'condense') {
|
||
// condense consecutive whitespaces into single space
|
||
text = text.replace(whitespaceRE, ' ')
|
||
}
|
||
var res = void 0
|
||
var child = void 0
|
||
if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {
|
||
child = {
|
||
type: 2,
|
||
expression: res.expression,
|
||
tokens: res.tokens,
|
||
text: text
|
||
}
|
||
} else if (
|
||
text !== ' ' ||
|
||
!children.length ||
|
||
children[children.length - 1].text !== ' '
|
||
) {
|
||
child = {
|
||
type: 3,
|
||
text: text
|
||
}
|
||
}
|
||
if (child) {
|
||
if (options.outputSourceRange) {
|
||
child.start = start
|
||
child.end = end
|
||
}
|
||
children.push(child)
|
||
}
|
||
}
|
||
},
|
||
comment: function (text, start, end) {
|
||
// adding anything as a sibling to the root node is forbidden
|
||
// comments should still be allowed, but ignored
|
||
if (currentParent) {
|
||
var child = {
|
||
type: 3,
|
||
text: text,
|
||
isComment: true
|
||
}
|
||
if (options.outputSourceRange) {
|
||
child.start = start
|
||
child.end = end
|
||
}
|
||
currentParent.children.push(child)
|
||
}
|
||
}
|
||
})
|
||
return root
|
||
}
|
||
function processPre(el) {
|
||
if (getAndRemoveAttr(el, 'v-pre') != null) {
|
||
el.pre = true
|
||
}
|
||
}
|
||
function processRawAttrs(el) {
|
||
var list = el.attrsList
|
||
var len = list.length
|
||
if (len) {
|
||
var attrs = (el.attrs = new Array(len))
|
||
for (var i = 0; i < len; i++) {
|
||
attrs[i] = {
|
||
name: list[i].name,
|
||
value: JSON.stringify(list[i].value)
|
||
}
|
||
if (list[i].start != null) {
|
||
attrs[i].start = list[i].start
|
||
attrs[i].end = list[i].end
|
||
}
|
||
}
|
||
} else if (!el.pre) {
|
||
// non root node in pre blocks with no attributes
|
||
el.plain = true
|
||
}
|
||
}
|
||
function processElement(element, options) {
|
||
processKey(element)
|
||
// determine whether this is a plain element after
|
||
// removing structural attributes
|
||
element.plain =
|
||
!element.key && !element.scopedSlots && !element.attrsList.length
|
||
processRef(element)
|
||
processSlotContent(element)
|
||
processSlotOutlet(element)
|
||
processComponent(element)
|
||
for (var i = 0; i < transforms.length; i++) {
|
||
element = transforms[i](element, options) || element
|
||
}
|
||
processAttrs(element)
|
||
return element
|
||
}
|
||
function processKey(el) {
|
||
var exp = getBindingAttr(el, 'key')
|
||
if (exp) {
|
||
{
|
||
if (el.tag === 'template') {
|
||
warn$1(
|
||
'<template> cannot be keyed. Place the key on real elements instead.',
|
||
getRawBindingAttr(el, 'key')
|
||
)
|
||
}
|
||
if (el.for) {
|
||
var iterator = el.iterator2 || el.iterator1
|
||
var parent_1 = el.parent
|
||
if (
|
||
iterator &&
|
||
iterator === exp &&
|
||
parent_1 &&
|
||
parent_1.tag === 'transition-group'
|
||
) {
|
||
warn$1(
|
||
'Do not use v-for index as key on <transition-group> children, ' +
|
||
'this is the same as not using keys.',
|
||
getRawBindingAttr(el, 'key'),
|
||
true /* tip */
|
||
)
|
||
}
|
||
}
|
||
}
|
||
el.key = exp
|
||
}
|
||
}
|
||
function processRef(el) {
|
||
var ref = getBindingAttr(el, 'ref')
|
||
if (ref) {
|
||
el.ref = ref
|
||
el.refInFor = checkInFor(el)
|
||
}
|
||
}
|
||
function processFor(el) {
|
||
var exp
|
||
if ((exp = getAndRemoveAttr(el, 'v-for'))) {
|
||
var res = parseFor(exp)
|
||
if (res) {
|
||
extend(el, res)
|
||
} else {
|
||
warn$1(
|
||
'Invalid v-for expression: '.concat(exp),
|
||
el.rawAttrsMap['v-for']
|
||
)
|
||
}
|
||
}
|
||
}
|
||
function parseFor(exp) {
|
||
var inMatch = exp.match(forAliasRE)
|
||
if (!inMatch) return
|
||
var res = {}
|
||
res.for = inMatch[2].trim()
|
||
var alias = inMatch[1].trim().replace(stripParensRE, '')
|
||
var iteratorMatch = alias.match(forIteratorRE)
|
||
if (iteratorMatch) {
|
||
res.alias = alias.replace(forIteratorRE, '').trim()
|
||
res.iterator1 = iteratorMatch[1].trim()
|
||
if (iteratorMatch[2]) {
|
||
res.iterator2 = iteratorMatch[2].trim()
|
||
}
|
||
} else {
|
||
res.alias = alias
|
||
}
|
||
return res
|
||
}
|
||
function processIf(el) {
|
||
var exp = getAndRemoveAttr(el, 'v-if')
|
||
if (exp) {
|
||
el.if = exp
|
||
addIfCondition(el, {
|
||
exp: exp,
|
||
block: el
|
||
})
|
||
} else {
|
||
if (getAndRemoveAttr(el, 'v-else') != null) {
|
||
el.else = true
|
||
}
|
||
var elseif = getAndRemoveAttr(el, 'v-else-if')
|
||
if (elseif) {
|
||
el.elseif = elseif
|
||
}
|
||
}
|
||
}
|
||
function processIfConditions(el, parent) {
|
||
var prev = findPrevElement(parent.children)
|
||
if (prev && prev.if) {
|
||
addIfCondition(prev, {
|
||
exp: el.elseif,
|
||
block: el
|
||
})
|
||
} else {
|
||
warn$1(
|
||
'v-'.concat(el.elseif ? 'else-if="' + el.elseif + '"' : 'else', ' ') +
|
||
'used on element <'.concat(el.tag, '> without corresponding v-if.'),
|
||
el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']
|
||
)
|
||
}
|
||
}
|
||
function findPrevElement(children) {
|
||
var i = children.length
|
||
while (i--) {
|
||
if (children[i].type === 1) {
|
||
return children[i]
|
||
} else {
|
||
if (children[i].text !== ' ') {
|
||
warn$1(
|
||
'text "'.concat(
|
||
children[i].text.trim(),
|
||
'" between v-if and v-else(-if) '
|
||
) + 'will be ignored.',
|
||
children[i]
|
||
)
|
||
}
|
||
children.pop()
|
||
}
|
||
}
|
||
}
|
||
function addIfCondition(el, condition) {
|
||
if (!el.ifConditions) {
|
||
el.ifConditions = []
|
||
}
|
||
el.ifConditions.push(condition)
|
||
}
|
||
function processOnce(el) {
|
||
var once = getAndRemoveAttr(el, 'v-once')
|
||
if (once != null) {
|
||
el.once = true
|
||
}
|
||
}
|
||
// handle content being passed to a component as slot,
|
||
// e.g. <template slot="xxx">, <div slot-scope="xxx">
|
||
function processSlotContent(el) {
|
||
var slotScope
|
||
if (el.tag === 'template') {
|
||
slotScope = getAndRemoveAttr(el, 'scope')
|
||
/* istanbul ignore if */
|
||
if (slotScope) {
|
||
warn$1(
|
||
'the "scope" attribute for scoped slots have been deprecated and ' +
|
||
'replaced by "slot-scope" since 2.5. The new "slot-scope" attribute ' +
|
||
'can also be used on plain elements in addition to <template> to ' +
|
||
'denote scoped slots.',
|
||
el.rawAttrsMap['scope'],
|
||
true
|
||
)
|
||
}
|
||
el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope')
|
||
} else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {
|
||
/* istanbul ignore if */
|
||
if (el.attrsMap['v-for']) {
|
||
warn$1(
|
||
'Ambiguous combined usage of slot-scope and v-for on <'.concat(
|
||
el.tag,
|
||
'> '
|
||
) +
|
||
'(v-for takes higher priority). Use a wrapper <template> for the ' +
|
||
'scoped slot to make it clearer.',
|
||
el.rawAttrsMap['slot-scope'],
|
||
true
|
||
)
|
||
}
|
||
el.slotScope = slotScope
|
||
}
|
||
// slot="xxx"
|
||
var slotTarget = getBindingAttr(el, 'slot')
|
||
if (slotTarget) {
|
||
el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget
|
||
el.slotTargetDynamic = !!(
|
||
el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']
|
||
)
|
||
// preserve slot as an attribute for native shadow DOM compat
|
||
// only for non-scoped slots.
|
||
if (el.tag !== 'template' && !el.slotScope) {
|
||
addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'))
|
||
}
|
||
}
|
||
// 2.6 v-slot syntax
|
||
{
|
||
if (el.tag === 'template') {
|
||
// v-slot on <template>
|
||
var slotBinding = getAndRemoveAttrByRegex(el, slotRE)
|
||
if (slotBinding) {
|
||
{
|
||
if (el.slotTarget || el.slotScope) {
|
||
warn$1('Unexpected mixed usage of different slot syntaxes.', el)
|
||
}
|
||
if (el.parent && !maybeComponent(el.parent)) {
|
||
warn$1(
|
||
'<template v-slot> can only appear at the root level inside ' +
|
||
'the receiving component',
|
||
el
|
||
)
|
||
}
|
||
}
|
||
var _a = getSlotName(slotBinding),
|
||
name_2 = _a.name,
|
||
dynamic = _a.dynamic
|
||
el.slotTarget = name_2
|
||
el.slotTargetDynamic = dynamic
|
||
el.slotScope = slotBinding.value || emptySlotScopeToken // force it into a scoped slot for perf
|
||
}
|
||
} else {
|
||
// v-slot on component, denotes default slot
|
||
var slotBinding = getAndRemoveAttrByRegex(el, slotRE)
|
||
if (slotBinding) {
|
||
{
|
||
if (!maybeComponent(el)) {
|
||
warn$1(
|
||
'v-slot can only be used on components or <template>.',
|
||
slotBinding
|
||
)
|
||
}
|
||
if (el.slotScope || el.slotTarget) {
|
||
warn$1('Unexpected mixed usage of different slot syntaxes.', el)
|
||
}
|
||
if (el.scopedSlots) {
|
||
warn$1(
|
||
'To avoid scope ambiguity, the default slot should also use ' +
|
||
'<template> syntax when there are other named slots.',
|
||
slotBinding
|
||
)
|
||
}
|
||
}
|
||
// add the component's children to its default slot
|
||
var slots = el.scopedSlots || (el.scopedSlots = {})
|
||
var _b = getSlotName(slotBinding),
|
||
name_3 = _b.name,
|
||
dynamic = _b.dynamic
|
||
var slotContainer_1 = (slots[name_3] = createASTElement(
|
||
'template',
|
||
[],
|
||
el
|
||
))
|
||
slotContainer_1.slotTarget = name_3
|
||
slotContainer_1.slotTargetDynamic = dynamic
|
||
slotContainer_1.children = el.children.filter(function (c) {
|
||
if (!c.slotScope) {
|
||
c.parent = slotContainer_1
|
||
return true
|
||
}
|
||
})
|
||
slotContainer_1.slotScope = slotBinding.value || emptySlotScopeToken
|
||
// remove children as they are returned from scopedSlots now
|
||
el.children = []
|
||
// mark el non-plain so data gets generated
|
||
el.plain = false
|
||
}
|
||
}
|
||
}
|
||
}
|
||
function getSlotName(binding) {
|
||
var name = binding.name.replace(slotRE, '')
|
||
if (!name) {
|
||
if (binding.name[0] !== '#') {
|
||
name = 'default'
|
||
} else {
|
||
warn$1('v-slot shorthand syntax requires a slot name.', binding)
|
||
}
|
||
}
|
||
return dynamicArgRE.test(name)
|
||
? // dynamic [name]
|
||
{ name: name.slice(1, -1), dynamic: true }
|
||
: // static name
|
||
{ name: '"'.concat(name, '"'), dynamic: false }
|
||
}
|
||
// handle <slot/> outlets
|
||
function processSlotOutlet(el) {
|
||
if (el.tag === 'slot') {
|
||
el.slotName = getBindingAttr(el, 'name')
|
||
if (el.key) {
|
||
warn$1(
|
||
'`key` does not work on <slot> because slots are abstract outlets ' +
|
||
'and can possibly expand into multiple elements. ' +
|
||
'Use the key on a wrapping element instead.',
|
||
getRawBindingAttr(el, 'key')
|
||
)
|
||
}
|
||
}
|
||
}
|
||
function processComponent(el) {
|
||
var binding
|
||
if ((binding = getBindingAttr(el, 'is'))) {
|
||
el.component = binding
|
||
}
|
||
if (getAndRemoveAttr(el, 'inline-template') != null) {
|
||
el.inlineTemplate = true
|
||
}
|
||
}
|
||
function processAttrs(el) {
|
||
var list = el.attrsList
|
||
var i, l, name, rawName, value, modifiers, syncGen, isDynamic
|
||
for (i = 0, l = list.length; i < l; i++) {
|
||
name = rawName = list[i].name
|
||
value = list[i].value
|
||
if (dirRE.test(name)) {
|
||
// mark element as dynamic
|
||
el.hasBindings = true
|
||
// modifiers
|
||
modifiers = parseModifiers(name.replace(dirRE, ''))
|
||
// support .foo shorthand syntax for the .prop modifier
|
||
if (modifiers) {
|
||
name = name.replace(modifierRE, '')
|
||
}
|
||
if (bindRE.test(name)) {
|
||
// v-bind
|
||
name = name.replace(bindRE, '')
|
||
value = parseFilters(value)
|
||
isDynamic = dynamicArgRE.test(name)
|
||
if (isDynamic) {
|
||
name = name.slice(1, -1)
|
||
}
|
||
if (value.trim().length === 0) {
|
||
warn$1(
|
||
'The value for a v-bind expression cannot be empty. Found in "v-bind:'.concat(
|
||
name,
|
||
'"'
|
||
)
|
||
)
|
||
}
|
||
if (modifiers) {
|
||
if (modifiers.prop && !isDynamic) {
|
||
name = camelize(name)
|
||
if (name === 'innerHtml') name = 'innerHTML'
|
||
}
|
||
if (modifiers.camel && !isDynamic) {
|
||
name = camelize(name)
|
||
}
|
||
if (modifiers.sync) {
|
||
syncGen = genAssignmentCode(value, '$event')
|
||
if (!isDynamic) {
|
||
addHandler(
|
||
el,
|
||
'update:'.concat(camelize(name)),
|
||
syncGen,
|
||
null,
|
||
false,
|
||
warn$1,
|
||
list[i]
|
||
)
|
||
if (hyphenate(name) !== camelize(name)) {
|
||
addHandler(
|
||
el,
|
||
'update:'.concat(hyphenate(name)),
|
||
syncGen,
|
||
null,
|
||
false,
|
||
warn$1,
|
||
list[i]
|
||
)
|
||
}
|
||
} else {
|
||
// handler w/ dynamic event name
|
||
addHandler(
|
||
el,
|
||
'"update:"+('.concat(name, ')'),
|
||
syncGen,
|
||
null,
|
||
false,
|
||
warn$1,
|
||
list[i],
|
||
true // dynamic
|
||
)
|
||
}
|
||
}
|
||
}
|
||
if (
|
||
(modifiers && modifiers.prop) ||
|
||
(!el.component &&
|
||
platformMustUseProp(el.tag, el.attrsMap.type, name))
|
||
) {
|
||
addProp(el, name, value, list[i], isDynamic)
|
||
} else {
|
||
addAttr(el, name, value, list[i], isDynamic)
|
||
}
|
||
} else if (onRE.test(name)) {
|
||
// v-on
|
||
name = name.replace(onRE, '')
|
||
isDynamic = dynamicArgRE.test(name)
|
||
if (isDynamic) {
|
||
name = name.slice(1, -1)
|
||
}
|
||
addHandler(
|
||
el,
|
||
name,
|
||
value,
|
||
modifiers,
|
||
false,
|
||
warn$1,
|
||
list[i],
|
||
isDynamic
|
||
)
|
||
} else {
|
||
// normal directives
|
||
name = name.replace(dirRE, '')
|
||
// parse arg
|
||
var argMatch = name.match(argRE)
|
||
var arg = argMatch && argMatch[1]
|
||
isDynamic = false
|
||
if (arg) {
|
||
name = name.slice(0, -(arg.length + 1))
|
||
if (dynamicArgRE.test(arg)) {
|
||
arg = arg.slice(1, -1)
|
||
isDynamic = true
|
||
}
|
||
}
|
||
addDirective(
|
||
el,
|
||
name,
|
||
rawName,
|
||
value,
|
||
arg,
|
||
isDynamic,
|
||
modifiers,
|
||
list[i]
|
||
)
|
||
if (name === 'model') {
|
||
checkForAliasModel(el, value)
|
||
}
|
||
}
|
||
} else {
|
||
// literal attribute
|
||
{
|
||
var res = parseText(value, delimiters)
|
||
if (res) {
|
||
warn$1(
|
||
''.concat(name, '="').concat(value, '": ') +
|
||
'Interpolation inside attributes has been removed. ' +
|
||
'Use v-bind or the colon shorthand instead. For example, ' +
|
||
'instead of <div id="{{ val }}">, use <div :id="val">.',
|
||
list[i]
|
||
)
|
||
}
|
||
}
|
||
addAttr(el, name, JSON.stringify(value), list[i])
|
||
// #6887 firefox doesn't update muted state if set via attribute
|
||
// even immediately after element creation
|
||
if (
|
||
!el.component &&
|
||
name === 'muted' &&
|
||
platformMustUseProp(el.tag, el.attrsMap.type, name)
|
||
) {
|
||
addProp(el, name, 'true', list[i])
|
||
}
|
||
}
|
||
}
|
||
}
|
||
function checkInFor(el) {
|
||
var parent = el
|
||
while (parent) {
|
||
if (parent.for !== undefined) {
|
||
return true
|
||
}
|
||
parent = parent.parent
|
||
}
|
||
return false
|
||
}
|
||
function parseModifiers(name) {
|
||
var match = name.match(modifierRE)
|
||
if (match) {
|
||
var ret_1 = {}
|
||
match.forEach(function (m) {
|
||
ret_1[m.slice(1)] = true
|
||
})
|
||
return ret_1
|
||
}
|
||
}
|
||
function makeAttrsMap(attrs) {
|
||
var map = {}
|
||
for (var i = 0, l = attrs.length; i < l; i++) {
|
||
if (map[attrs[i].name] && !isIE && !isEdge) {
|
||
warn$1('duplicate attribute: ' + attrs[i].name, attrs[i])
|
||
}
|
||
map[attrs[i].name] = attrs[i].value
|
||
}
|
||
return map
|
||
}
|
||
// for script (e.g. type="x/template") or style, do not decode content
|
||
function isTextTag(el) {
|
||
return el.tag === 'script' || el.tag === 'style'
|
||
}
|
||
function isForbiddenTag(el) {
|
||
return (
|
||
el.tag === 'style' ||
|
||
(el.tag === 'script' &&
|
||
(!el.attrsMap.type || el.attrsMap.type === 'text/javascript'))
|
||
)
|
||
}
|
||
var ieNSBug = /^xmlns:NS\d+/
|
||
var ieNSPrefix = /^NS\d+:/
|
||
/* istanbul ignore next */
|
||
function guardIESVGBug(attrs) {
|
||
var res = []
|
||
for (var i = 0; i < attrs.length; i++) {
|
||
var attr = attrs[i]
|
||
if (!ieNSBug.test(attr.name)) {
|
||
attr.name = attr.name.replace(ieNSPrefix, '')
|
||
res.push(attr)
|
||
}
|
||
}
|
||
return res
|
||
}
|
||
function checkForAliasModel(el, value) {
|
||
var _el = el
|
||
while (_el) {
|
||
if (_el.for && _el.alias === value) {
|
||
warn$1(
|
||
'<'.concat(el.tag, ' v-model="').concat(value, '">: ') +
|
||
'You are binding v-model directly to a v-for iteration alias. ' +
|
||
'This will not be able to modify the v-for source array because ' +
|
||
'writing to the alias is like modifying a function local variable. ' +
|
||
'Consider using an array of objects and use v-model on an object property instead.',
|
||
el.rawAttrsMap['v-model']
|
||
)
|
||
}
|
||
_el = _el.parent
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Expand input[v-model] with dynamic type bindings into v-if-else chains
|
||
* Turn this:
|
||
* <input v-model="data[type]" :type="type">
|
||
* into this:
|
||
* <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]">
|
||
* <input v-else-if="type === 'radio'" type="radio" v-model="data[type]">
|
||
* <input v-else :type="type" v-model="data[type]">
|
||
*/
|
||
function preTransformNode(el, options) {
|
||
if (el.tag === 'input') {
|
||
var map = el.attrsMap
|
||
if (!map['v-model']) {
|
||
return
|
||
}
|
||
var typeBinding = void 0
|
||
if (map[':type'] || map['v-bind:type']) {
|
||
typeBinding = getBindingAttr(el, 'type')
|
||
}
|
||
if (!map.type && !typeBinding && map['v-bind']) {
|
||
typeBinding = '('.concat(map['v-bind'], ').type')
|
||
}
|
||
if (typeBinding) {
|
||
var ifCondition = getAndRemoveAttr(el, 'v-if', true)
|
||
var ifConditionExtra = ifCondition ? '&&('.concat(ifCondition, ')') : ''
|
||
var hasElse = getAndRemoveAttr(el, 'v-else', true) != null
|
||
var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true)
|
||
// 1. checkbox
|
||
var branch0 = cloneASTElement(el)
|
||
// process for on the main node
|
||
processFor(branch0)
|
||
addRawAttr(branch0, 'type', 'checkbox')
|
||
processElement(branch0, options)
|
||
branch0.processed = true // prevent it from double-processed
|
||
branch0.if =
|
||
'('.concat(typeBinding, ")==='checkbox'") + ifConditionExtra
|
||
addIfCondition(branch0, {
|
||
exp: branch0.if,
|
||
block: branch0
|
||
})
|
||
// 2. add radio else-if condition
|
||
var branch1 = cloneASTElement(el)
|
||
getAndRemoveAttr(branch1, 'v-for', true)
|
||
addRawAttr(branch1, 'type', 'radio')
|
||
processElement(branch1, options)
|
||
addIfCondition(branch0, {
|
||
exp: '('.concat(typeBinding, ")==='radio'") + ifConditionExtra,
|
||
block: branch1
|
||
})
|
||
// 3. other
|
||
var branch2 = cloneASTElement(el)
|
||
getAndRemoveAttr(branch2, 'v-for', true)
|
||
addRawAttr(branch2, ':type', typeBinding)
|
||
processElement(branch2, options)
|
||
addIfCondition(branch0, {
|
||
exp: ifCondition,
|
||
block: branch2
|
||
})
|
||
if (hasElse) {
|
||
branch0.else = true
|
||
} else if (elseIfCondition) {
|
||
branch0.elseif = elseIfCondition
|
||
}
|
||
return branch0
|
||
}
|
||
}
|
||
}
|
||
function cloneASTElement(el) {
|
||
return createASTElement(el.tag, el.attrsList.slice(), el.parent)
|
||
}
|
||
var model$1 = {
|
||
preTransformNode: preTransformNode
|
||
}
|
||
|
||
var modules = [klass, style, model$1]
|
||
|
||
var warn
|
||
// in some cases, the event used has to be determined at runtime
|
||
// so we used some reserved tokens during compile.
|
||
var RANGE_TOKEN = '__r'
|
||
function model(el, dir, _warn) {
|
||
warn = _warn
|
||
var value = dir.value
|
||
var modifiers = dir.modifiers
|
||
var tag = el.tag
|
||
var type = el.attrsMap.type
|
||
{
|
||
// inputs with type="file" are read only and setting the input's
|
||
// value will throw an error.
|
||
if (tag === 'input' && type === 'file') {
|
||
warn(
|
||
'<'.concat(el.tag, ' v-model="').concat(value, '" type="file">:\n') +
|
||
'File inputs are read only. Use a v-on:change listener instead.',
|
||
el.rawAttrsMap['v-model']
|
||
)
|
||
}
|
||
}
|
||
if (el.component) {
|
||
genComponentModel(el, value, modifiers)
|
||
// component v-model doesn't need extra runtime
|
||
return false
|
||
} else if (tag === 'select') {
|
||
genSelect(el, value, modifiers)
|
||
} else if (tag === 'input' && type === 'checkbox') {
|
||
genCheckboxModel(el, value, modifiers)
|
||
} else if (tag === 'input' && type === 'radio') {
|
||
genRadioModel(el, value, modifiers)
|
||
} else if (tag === 'input' || tag === 'textarea') {
|
||
genDefaultModel(el, value, modifiers)
|
||
} else {
|
||
genComponentModel(el, value, modifiers)
|
||
// component v-model doesn't need extra runtime
|
||
return false
|
||
}
|
||
// ensure runtime directive metadata
|
||
return true
|
||
}
|
||
function genCheckboxModel(el, value, modifiers) {
|
||
var number = modifiers && modifiers.number
|
||
var valueBinding = getBindingAttr(el, 'value') || 'null'
|
||
var trueValueBinding = getBindingAttr(el, 'true-value') || 'true'
|
||
var falseValueBinding = getBindingAttr(el, 'false-value') || 'false'
|
||
addProp(
|
||
el,
|
||
'checked',
|
||
'Array.isArray('.concat(value, ')') +
|
||
'?_i('.concat(value, ',').concat(valueBinding, ')>-1') +
|
||
(trueValueBinding === 'true'
|
||
? ':('.concat(value, ')')
|
||
: ':_q('.concat(value, ',').concat(trueValueBinding, ')'))
|
||
)
|
||
addHandler(
|
||
el,
|
||
'change',
|
||
'var $$a='.concat(value, ',') +
|
||
'$$el=$event.target,' +
|
||
'$$c=$$el.checked?('
|
||
.concat(trueValueBinding, '):(')
|
||
.concat(falseValueBinding, ');') +
|
||
'if(Array.isArray($$a)){' +
|
||
'var $$v='.concat(
|
||
number ? '_n(' + valueBinding + ')' : valueBinding,
|
||
','
|
||
) +
|
||
'$$i=_i($$a,$$v);' +
|
||
'if($$el.checked){$$i<0&&('.concat(
|
||
genAssignmentCode(value, '$$a.concat([$$v])'),
|
||
')}'
|
||
) +
|
||
'else{$$i>-1&&('.concat(
|
||
genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))'),
|
||
')}'
|
||
) +
|
||
'}else{'.concat(genAssignmentCode(value, '$$c'), '}'),
|
||
null,
|
||
true
|
||
)
|
||
}
|
||
function genRadioModel(el, value, modifiers) {
|
||
var number = modifiers && modifiers.number
|
||
var valueBinding = getBindingAttr(el, 'value') || 'null'
|
||
valueBinding = number ? '_n('.concat(valueBinding, ')') : valueBinding
|
||
addProp(el, 'checked', '_q('.concat(value, ',').concat(valueBinding, ')'))
|
||
addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true)
|
||
}
|
||
function genSelect(el, value, modifiers) {
|
||
var number = modifiers && modifiers.number
|
||
var selectedVal =
|
||
'Array.prototype.filter' +
|
||
'.call($event.target.options,function(o){return o.selected})' +
|
||
'.map(function(o){var val = "_value" in o ? o._value : o.value;' +
|
||
'return '.concat(number ? '_n(val)' : 'val', '})')
|
||
var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]'
|
||
var code = 'var $$selectedVal = '.concat(selectedVal, ';')
|
||
code = ''.concat(code, ' ').concat(genAssignmentCode(value, assignment))
|
||
addHandler(el, 'change', code, null, true)
|
||
}
|
||
function genDefaultModel(el, value, modifiers) {
|
||
var type = el.attrsMap.type
|
||
// warn if v-bind:value conflicts with v-model
|
||
// except for inputs with v-bind:type
|
||
{
|
||
var value_1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value']
|
||
var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type']
|
||
if (value_1 && !typeBinding) {
|
||
var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value'
|
||
warn(
|
||
''
|
||
.concat(binding, '="')
|
||
.concat(value_1, '" conflicts with v-model on the same element ') +
|
||
'because the latter already expands to a value binding internally',
|
||
el.rawAttrsMap[binding]
|
||
)
|
||
}
|
||
}
|
||
var _a = modifiers || {},
|
||
lazy = _a.lazy,
|
||
number = _a.number,
|
||
trim = _a.trim
|
||
var needCompositionGuard = !lazy && type !== 'range'
|
||
var event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input'
|
||
var valueExpression = '$event.target.value'
|
||
if (trim) {
|
||
valueExpression = '$event.target.value.trim()'
|
||
}
|
||
if (number) {
|
||
valueExpression = '_n('.concat(valueExpression, ')')
|
||
}
|
||
var code = genAssignmentCode(value, valueExpression)
|
||
if (needCompositionGuard) {
|
||
code = 'if($event.target.composing)return;'.concat(code)
|
||
}
|
||
addProp(el, 'value', '('.concat(value, ')'))
|
||
addHandler(el, event, code, null, true)
|
||
if (trim || number) {
|
||
addHandler(el, 'blur', '$forceUpdate()')
|
||
}
|
||
}
|
||
|
||
function text(el, dir) {
|
||
if (dir.value) {
|
||
addProp(el, 'textContent', '_s('.concat(dir.value, ')'), dir)
|
||
}
|
||
}
|
||
|
||
function html(el, dir) {
|
||
if (dir.value) {
|
||
addProp(el, 'innerHTML', '_s('.concat(dir.value, ')'), dir)
|
||
}
|
||
}
|
||
|
||
var directives = {
|
||
model: model,
|
||
text: text,
|
||
html: html
|
||
}
|
||
|
||
var baseOptions = {
|
||
expectHTML: true,
|
||
modules: modules,
|
||
directives: directives,
|
||
isPreTag: isPreTag,
|
||
isUnaryTag: isUnaryTag,
|
||
mustUseProp: mustUseProp,
|
||
canBeLeftOpenTag: canBeLeftOpenTag,
|
||
isReservedTag: isReservedTag,
|
||
getTagNamespace: getTagNamespace,
|
||
staticKeys: genStaticKeys$1(modules)
|
||
}
|
||
|
||
var isStaticKey
|
||
var isPlatformReservedTag$1
|
||
var genStaticKeysCached = cached(genStaticKeys)
|
||
/**
|
||
* Goal of the optimizer: walk the generated template AST tree
|
||
* and detect sub-trees that are purely static, i.e. parts of
|
||
* the DOM that never needs to change.
|
||
*
|
||
* Once we detect these sub-trees, we can:
|
||
*
|
||
* 1. Hoist them into constants, so that we no longer need to
|
||
* create fresh nodes for them on each re-render;
|
||
* 2. Completely skip them in the patching process.
|
||
*/
|
||
function optimize$1(root, options) {
|
||
if (!root) return
|
||
isStaticKey = genStaticKeysCached(options.staticKeys || '')
|
||
isPlatformReservedTag$1 = options.isReservedTag || no
|
||
// first pass: mark all non-static nodes.
|
||
markStatic(root)
|
||
// second pass: mark static roots.
|
||
markStaticRoots(root, false)
|
||
}
|
||
function genStaticKeys(keys) {
|
||
return makeMap(
|
||
'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +
|
||
(keys ? ',' + keys : '')
|
||
)
|
||
}
|
||
function markStatic(node) {
|
||
node.static = isStatic(node)
|
||
if (node.type === 1) {
|
||
// do not make component slot content static. this avoids
|
||
// 1. components not able to mutate slot nodes
|
||
// 2. static slot content fails for hot-reloading
|
||
if (
|
||
!isPlatformReservedTag$1(node.tag) &&
|
||
node.tag !== 'slot' &&
|
||
node.attrsMap['inline-template'] == null
|
||
) {
|
||
return
|
||
}
|
||
for (var i = 0, l = node.children.length; i < l; i++) {
|
||
var child = node.children[i]
|
||
markStatic(child)
|
||
if (!child.static) {
|
||
node.static = false
|
||
}
|
||
}
|
||
if (node.ifConditions) {
|
||
for (var i = 1, l = node.ifConditions.length; i < l; i++) {
|
||
var block = node.ifConditions[i].block
|
||
markStatic(block)
|
||
if (!block.static) {
|
||
node.static = false
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
function markStaticRoots(node, isInFor) {
|
||
if (node.type === 1) {
|
||
if (node.static || node.once) {
|
||
node.staticInFor = isInFor
|
||
}
|
||
// For a node to qualify as a static root, it should have children that
|
||
// are not just static text. Otherwise the cost of hoisting out will
|
||
// outweigh the benefits and it's better off to just always render it fresh.
|
||
if (
|
||
node.static &&
|
||
node.children.length &&
|
||
!(node.children.length === 1 && node.children[0].type === 3)
|
||
) {
|
||
node.staticRoot = true
|
||
return
|
||
} else {
|
||
node.staticRoot = false
|
||
}
|
||
if (node.children) {
|
||
for (var i = 0, l = node.children.length; i < l; i++) {
|
||
markStaticRoots(node.children[i], isInFor || !!node.for)
|
||
}
|
||
}
|
||
if (node.ifConditions) {
|
||
for (var i = 1, l = node.ifConditions.length; i < l; i++) {
|
||
markStaticRoots(node.ifConditions[i].block, isInFor)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
function isStatic(node) {
|
||
if (node.type === 2) {
|
||
// expression
|
||
return false
|
||
}
|
||
if (node.type === 3) {
|
||
// text
|
||
return true
|
||
}
|
||
return !!(
|
||
node.pre ||
|
||
(!node.hasBindings && // no dynamic bindings
|
||
!node.if &&
|
||
!node.for && // not v-if or v-for or v-else
|
||
!isBuiltInTag(node.tag) && // not a built-in
|
||
isPlatformReservedTag$1(node.tag) && // not a component
|
||
!isDirectChildOfTemplateFor(node) &&
|
||
Object.keys(node).every(isStaticKey))
|
||
)
|
||
}
|
||
function isDirectChildOfTemplateFor(node) {
|
||
while (node.parent) {
|
||
node = node.parent
|
||
if (node.tag !== 'template') {
|
||
return false
|
||
}
|
||
if (node.for) {
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
|
||
var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/
|
||
var fnInvokeRE = /\([^)]*?\);*$/
|
||
var simplePathRE =
|
||
/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/
|
||
// KeyboardEvent.keyCode aliases
|
||
var keyCodes = {
|
||
esc: 27,
|
||
tab: 9,
|
||
enter: 13,
|
||
space: 32,
|
||
up: 38,
|
||
left: 37,
|
||
right: 39,
|
||
down: 40,
|
||
delete: [8, 46]
|
||
}
|
||
// KeyboardEvent.key aliases
|
||
var keyNames = {
|
||
// #7880: IE11 and Edge use `Esc` for Escape key name.
|
||
esc: ['Esc', 'Escape'],
|
||
tab: 'Tab',
|
||
enter: 'Enter',
|
||
// #9112: IE11 uses `Spacebar` for Space key name.
|
||
space: [' ', 'Spacebar'],
|
||
// #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
|
||
up: ['Up', 'ArrowUp'],
|
||
left: ['Left', 'ArrowLeft'],
|
||
right: ['Right', 'ArrowRight'],
|
||
down: ['Down', 'ArrowDown'],
|
||
// #9112: IE11 uses `Del` for Delete key name.
|
||
delete: ['Backspace', 'Delete', 'Del']
|
||
}
|
||
// #4868: modifiers that prevent the execution of the listener
|
||
// need to explicitly return null so that we can determine whether to remove
|
||
// the listener for .once
|
||
var genGuard = function (condition) {
|
||
return 'if('.concat(condition, ')return null;')
|
||
}
|
||
var modifierCode = {
|
||
stop: '$event.stopPropagation();',
|
||
prevent: '$event.preventDefault();',
|
||
self: genGuard('$event.target !== $event.currentTarget'),
|
||
ctrl: genGuard('!$event.ctrlKey'),
|
||
shift: genGuard('!$event.shiftKey'),
|
||
alt: genGuard('!$event.altKey'),
|
||
meta: genGuard('!$event.metaKey'),
|
||
left: genGuard("'button' in $event && $event.button !== 0"),
|
||
middle: genGuard("'button' in $event && $event.button !== 1"),
|
||
right: genGuard("'button' in $event && $event.button !== 2")
|
||
}
|
||
function genHandlers(events, isNative) {
|
||
var prefix = isNative ? 'nativeOn:' : 'on:'
|
||
var staticHandlers = ''
|
||
var dynamicHandlers = ''
|
||
for (var name_1 in events) {
|
||
var handlerCode = genHandler(events[name_1])
|
||
//@ts-expect-error
|
||
if (events[name_1] && events[name_1].dynamic) {
|
||
dynamicHandlers += ''.concat(name_1, ',').concat(handlerCode, ',')
|
||
} else {
|
||
staticHandlers += '"'.concat(name_1, '":').concat(handlerCode, ',')
|
||
}
|
||
}
|
||
staticHandlers = '{'.concat(staticHandlers.slice(0, -1), '}')
|
||
if (dynamicHandlers) {
|
||
return (
|
||
prefix +
|
||
'_d('
|
||
.concat(staticHandlers, ',[')
|
||
.concat(dynamicHandlers.slice(0, -1), '])')
|
||
)
|
||
} else {
|
||
return prefix + staticHandlers
|
||
}
|
||
}
|
||
function genHandler(handler) {
|
||
if (!handler) {
|
||
return 'function(){}'
|
||
}
|
||
if (Array.isArray(handler)) {
|
||
return '['.concat(
|
||
handler
|
||
.map(function (handler) {
|
||
return genHandler(handler)
|
||
})
|
||
.join(','),
|
||
']'
|
||
)
|
||
}
|
||
var isMethodPath = simplePathRE.test(handler.value)
|
||
var isFunctionExpression = fnExpRE.test(handler.value)
|
||
var isFunctionInvocation = simplePathRE.test(
|
||
handler.value.replace(fnInvokeRE, '')
|
||
)
|
||
if (!handler.modifiers) {
|
||
if (isMethodPath || isFunctionExpression) {
|
||
return handler.value
|
||
}
|
||
return 'function($event){'.concat(
|
||
isFunctionInvocation ? 'return '.concat(handler.value) : handler.value,
|
||
'}'
|
||
) // inline statement
|
||
} else {
|
||
var code = ''
|
||
var genModifierCode = ''
|
||
var keys = []
|
||
var _loop_1 = function (key) {
|
||
if (modifierCode[key]) {
|
||
genModifierCode += modifierCode[key]
|
||
// left/right
|
||
if (keyCodes[key]) {
|
||
keys.push(key)
|
||
}
|
||
} else if (key === 'exact') {
|
||
var modifiers_1 = handler.modifiers
|
||
genModifierCode += genGuard(
|
||
['ctrl', 'shift', 'alt', 'meta']
|
||
.filter(function (keyModifier) {
|
||
return !modifiers_1[keyModifier]
|
||
})
|
||
.map(function (keyModifier) {
|
||
return '$event.'.concat(keyModifier, 'Key')
|
||
})
|
||
.join('||')
|
||
)
|
||
} else {
|
||
keys.push(key)
|
||
}
|
||
}
|
||
for (var key in handler.modifiers) {
|
||
_loop_1(key)
|
||
}
|
||
if (keys.length) {
|
||
code += genKeyFilter(keys)
|
||
}
|
||
// Make sure modifiers like prevent and stop get executed after key filtering
|
||
if (genModifierCode) {
|
||
code += genModifierCode
|
||
}
|
||
var handlerCode = isMethodPath
|
||
? 'return '.concat(handler.value, '.apply(null, arguments)')
|
||
: isFunctionExpression
|
||
? 'return ('.concat(handler.value, ').apply(null, arguments)')
|
||
: isFunctionInvocation
|
||
? 'return '.concat(handler.value)
|
||
: handler.value
|
||
return 'function($event){'.concat(code).concat(handlerCode, '}')
|
||
}
|
||
}
|
||
function genKeyFilter(keys) {
|
||
return (
|
||
// make sure the key filters only apply to KeyboardEvents
|
||
// #9441: can't use 'keyCode' in $event because Chrome autofill fires fake
|
||
// key events that do not have keyCode property...
|
||
"if(!$event.type.indexOf('key')&&" +
|
||
''.concat(keys.map(genFilterCode).join('&&'), ')return null;')
|
||
)
|
||
}
|
||
function genFilterCode(key) {
|
||
var keyVal = parseInt(key, 10)
|
||
if (keyVal) {
|
||
return '$event.keyCode!=='.concat(keyVal)
|
||
}
|
||
var keyCode = keyCodes[key]
|
||
var keyName = keyNames[key]
|
||
return (
|
||
'_k($event.keyCode,' +
|
||
''.concat(JSON.stringify(key), ',') +
|
||
''.concat(JSON.stringify(keyCode), ',') +
|
||
'$event.key,' +
|
||
''.concat(JSON.stringify(keyName)) +
|
||
')'
|
||
)
|
||
}
|
||
|
||
function on(el, dir) {
|
||
if (dir.modifiers) {
|
||
warn$2('v-on without argument does not support modifiers.')
|
||
}
|
||
el.wrapListeners = function (code) {
|
||
return '_g('.concat(code, ',').concat(dir.value, ')')
|
||
}
|
||
}
|
||
|
||
function bind(el, dir) {
|
||
el.wrapData = function (code) {
|
||
return '_b('
|
||
.concat(code, ",'")
|
||
.concat(el.tag, "',")
|
||
.concat(dir.value, ',')
|
||
.concat(dir.modifiers && dir.modifiers.prop ? 'true' : 'false')
|
||
.concat(dir.modifiers && dir.modifiers.sync ? ',true' : '', ')')
|
||
}
|
||
}
|
||
|
||
var baseDirectives = {
|
||
on: on,
|
||
bind: bind,
|
||
cloak: noop
|
||
}
|
||
|
||
var CodegenState = /** @class */ (function () {
|
||
function CodegenState(options) {
|
||
this.options = options
|
||
this.warn = options.warn || baseWarn
|
||
//@ts-expect-error `this.transforms ` is a different type than `options.modules.transformCode`
|
||
this.transforms = pluckModuleFunction(options.modules, 'transformCode')
|
||
this.dataGenFns = pluckModuleFunction(options.modules, 'genData')
|
||
this.directives = extend(extend({}, baseDirectives), options.directives)
|
||
var isReservedTag = options.isReservedTag || no
|
||
this.maybeComponent = function (el) {
|
||
return !!el.component || !isReservedTag(el.tag)
|
||
}
|
||
this.onceId = 0
|
||
this.staticRenderFns = []
|
||
this.pre = false
|
||
}
|
||
return CodegenState
|
||
})()
|
||
function generate$1(ast, options) {
|
||
var state = new CodegenState(options)
|
||
// fix #11483, Root level <script> tags should not be rendered.
|
||
var code = ast
|
||
? ast.tag === 'script'
|
||
? 'null'
|
||
: genElement(ast, state)
|
||
: '_c("div")'
|
||
return {
|
||
render: 'with(this){return '.concat(code, '}'),
|
||
staticRenderFns: state.staticRenderFns
|
||
}
|
||
}
|
||
function genElement(el, state) {
|
||
if (el.parent) {
|
||
el.pre = el.pre || el.parent.pre
|
||
}
|
||
if (el.staticRoot && !el.staticProcessed) {
|
||
return genStatic(el, state)
|
||
} else if (el.once && !el.onceProcessed) {
|
||
return genOnce(el, state)
|
||
} else if (el.for && !el.forProcessed) {
|
||
return genFor(el, state)
|
||
} else if (el.if && !el.ifProcessed) {
|
||
return genIf(el, state)
|
||
} else if (el.tag === 'template' && !el.slotTarget && !state.pre) {
|
||
return genChildren(el, state) || 'void 0'
|
||
} else if (el.tag === 'slot') {
|
||
return genSlot(el, state)
|
||
} else {
|
||
// component or element
|
||
var code = void 0
|
||
if (el.component) {
|
||
code = genComponent(el.component, el, state)
|
||
} else {
|
||
var data = void 0
|
||
if (!el.plain || (el.pre && state.maybeComponent(el))) {
|
||
data = genData(el, state)
|
||
}
|
||
var children = el.inlineTemplate ? null : genChildren(el, state, true)
|
||
code = "_c('"
|
||
.concat(el.tag, "'")
|
||
.concat(
|
||
data ? ','.concat(data) : '' // data
|
||
)
|
||
.concat(
|
||
children ? ','.concat(children) : '', // children
|
||
')'
|
||
)
|
||
}
|
||
// module transforms
|
||
for (var i = 0; i < state.transforms.length; i++) {
|
||
code = state.transforms[i](el, code)
|
||
}
|
||
return code
|
||
}
|
||
}
|
||
// hoist static sub-trees out
|
||
function genStatic(el, state) {
|
||
el.staticProcessed = true
|
||
// Some elements (templates) need to behave differently inside of a v-pre
|
||
// node. All pre nodes are static roots, so we can use this as a location to
|
||
// wrap a state change and reset it upon exiting the pre node.
|
||
var originalPreState = state.pre
|
||
if (el.pre) {
|
||
state.pre = el.pre
|
||
}
|
||
state.staticRenderFns.push(
|
||
'with(this){return '.concat(genElement(el, state), '}')
|
||
)
|
||
state.pre = originalPreState
|
||
return '_m('
|
||
.concat(state.staticRenderFns.length - 1)
|
||
.concat(el.staticInFor ? ',true' : '', ')')
|
||
}
|
||
// v-once
|
||
function genOnce(el, state) {
|
||
el.onceProcessed = true
|
||
if (el.if && !el.ifProcessed) {
|
||
return genIf(el, state)
|
||
} else if (el.staticInFor) {
|
||
var key = ''
|
||
var parent_1 = el.parent
|
||
while (parent_1) {
|
||
if (parent_1.for) {
|
||
key = parent_1.key
|
||
break
|
||
}
|
||
parent_1 = parent_1.parent
|
||
}
|
||
if (!key) {
|
||
state.warn(
|
||
'v-once can only be used inside v-for that is keyed. ',
|
||
el.rawAttrsMap['v-once']
|
||
)
|
||
return genElement(el, state)
|
||
}
|
||
return '_o('
|
||
.concat(genElement(el, state), ',')
|
||
.concat(state.onceId++, ',')
|
||
.concat(key, ')')
|
||
} else {
|
||
return genStatic(el, state)
|
||
}
|
||
}
|
||
function genIf(el, state, altGen, altEmpty) {
|
||
el.ifProcessed = true // avoid recursion
|
||
return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)
|
||
}
|
||
function genIfConditions(conditions, state, altGen, altEmpty) {
|
||
if (!conditions.length) {
|
||
return altEmpty || '_e()'
|
||
}
|
||
var condition = conditions.shift()
|
||
if (condition.exp) {
|
||
return '('
|
||
.concat(condition.exp, ')?')
|
||
.concat(genTernaryExp(condition.block), ':')
|
||
.concat(genIfConditions(conditions, state, altGen, altEmpty))
|
||
} else {
|
||
return ''.concat(genTernaryExp(condition.block))
|
||
}
|
||
// v-if with v-once should generate code like (a)?_m(0):_m(1)
|
||
function genTernaryExp(el) {
|
||
return altGen
|
||
? altGen(el, state)
|
||
: el.once
|
||
? genOnce(el, state)
|
||
: genElement(el, state)
|
||
}
|
||
}
|
||
function genFor(el, state, altGen, altHelper) {
|
||
var exp = el.for
|
||
var alias = el.alias
|
||
var iterator1 = el.iterator1 ? ','.concat(el.iterator1) : ''
|
||
var iterator2 = el.iterator2 ? ','.concat(el.iterator2) : ''
|
||
if (
|
||
state.maybeComponent(el) &&
|
||
el.tag !== 'slot' &&
|
||
el.tag !== 'template' &&
|
||
!el.key
|
||
) {
|
||
state.warn(
|
||
'<'
|
||
.concat(el.tag, ' v-for="')
|
||
.concat(alias, ' in ')
|
||
.concat(exp, '">: component lists rendered with ') +
|
||
'v-for should have explicit keys. ' +
|
||
'See https://vuejs.org/guide/list.html#key for more info.',
|
||
el.rawAttrsMap['v-for'],
|
||
true /* tip */
|
||
)
|
||
}
|
||
el.forProcessed = true // avoid recursion
|
||
return (
|
||
''.concat(altHelper || '_l', '((').concat(exp, '),') +
|
||
'function('.concat(alias).concat(iterator1).concat(iterator2, '){') +
|
||
'return '.concat((altGen || genElement)(el, state)) +
|
||
'})'
|
||
)
|
||
}
|
||
function genData(el, state) {
|
||
var data = '{'
|
||
// directives first.
|
||
// directives may mutate the el's other properties before they are generated.
|
||
var dirs = genDirectives(el, state)
|
||
if (dirs) data += dirs + ','
|
||
// key
|
||
if (el.key) {
|
||
data += 'key:'.concat(el.key, ',')
|
||
}
|
||
// ref
|
||
if (el.ref) {
|
||
data += 'ref:'.concat(el.ref, ',')
|
||
}
|
||
if (el.refInFor) {
|
||
data += 'refInFor:true,'
|
||
}
|
||
// pre
|
||
if (el.pre) {
|
||
data += 'pre:true,'
|
||
}
|
||
// record original tag name for components using "is" attribute
|
||
if (el.component) {
|
||
data += 'tag:"'.concat(el.tag, '",')
|
||
}
|
||
// module data generation functions
|
||
for (var i = 0; i < state.dataGenFns.length; i++) {
|
||
data += state.dataGenFns[i](el)
|
||
}
|
||
// attributes
|
||
if (el.attrs) {
|
||
data += 'attrs:'.concat(genProps(el.attrs), ',')
|
||
}
|
||
// DOM props
|
||
if (el.props) {
|
||
data += 'domProps:'.concat(genProps(el.props), ',')
|
||
}
|
||
// event handlers
|
||
if (el.events) {
|
||
data += ''.concat(genHandlers(el.events, false), ',')
|
||
}
|
||
if (el.nativeEvents) {
|
||
data += ''.concat(genHandlers(el.nativeEvents, true), ',')
|
||
}
|
||
// slot target
|
||
// only for non-scoped slots
|
||
if (el.slotTarget && !el.slotScope) {
|
||
data += 'slot:'.concat(el.slotTarget, ',')
|
||
}
|
||
// scoped slots
|
||
if (el.scopedSlots) {
|
||
data += ''.concat(genScopedSlots(el, el.scopedSlots, state), ',')
|
||
}
|
||
// component v-model
|
||
if (el.model) {
|
||
data += 'model:{value:'
|
||
.concat(el.model.value, ',callback:')
|
||
.concat(el.model.callback, ',expression:')
|
||
.concat(el.model.expression, '},')
|
||
}
|
||
// inline-template
|
||
if (el.inlineTemplate) {
|
||
var inlineTemplate = genInlineTemplate(el, state)
|
||
if (inlineTemplate) {
|
||
data += ''.concat(inlineTemplate, ',')
|
||
}
|
||
}
|
||
data = data.replace(/,$/, '') + '}'
|
||
// v-bind dynamic argument wrap
|
||
// v-bind with dynamic arguments must be applied using the same v-bind object
|
||
// merge helper so that class/style/mustUseProp attrs are handled correctly.
|
||
if (el.dynamicAttrs) {
|
||
data = '_b('
|
||
.concat(data, ',"')
|
||
.concat(el.tag, '",')
|
||
.concat(genProps(el.dynamicAttrs), ')')
|
||
}
|
||
// v-bind data wrap
|
||
if (el.wrapData) {
|
||
data = el.wrapData(data)
|
||
}
|
||
// v-on data wrap
|
||
if (el.wrapListeners) {
|
||
data = el.wrapListeners(data)
|
||
}
|
||
return data
|
||
}
|
||
function genDirectives(el, state) {
|
||
var dirs = el.directives
|
||
if (!dirs) return
|
||
var res = 'directives:['
|
||
var hasRuntime = false
|
||
var i, l, dir, needRuntime
|
||
for (i = 0, l = dirs.length; i < l; i++) {
|
||
dir = dirs[i]
|
||
needRuntime = true
|
||
var gen = state.directives[dir.name]
|
||
if (gen) {
|
||
// compile-time directive that manipulates AST.
|
||
// returns true if it also needs a runtime counterpart.
|
||
needRuntime = !!gen(el, dir, state.warn)
|
||
}
|
||
if (needRuntime) {
|
||
hasRuntime = true
|
||
res += '{name:"'
|
||
.concat(dir.name, '",rawName:"')
|
||
.concat(dir.rawName, '"')
|
||
.concat(
|
||
dir.value
|
||
? ',value:('
|
||
.concat(dir.value, '),expression:')
|
||
.concat(JSON.stringify(dir.value))
|
||
: ''
|
||
)
|
||
.concat(
|
||
dir.arg
|
||
? ',arg:'.concat(
|
||
dir.isDynamicArg ? dir.arg : '"'.concat(dir.arg, '"')
|
||
)
|
||
: ''
|
||
)
|
||
.concat(
|
||
dir.modifiers
|
||
? ',modifiers:'.concat(JSON.stringify(dir.modifiers))
|
||
: '',
|
||
'},'
|
||
)
|
||
}
|
||
}
|
||
if (hasRuntime) {
|
||
return res.slice(0, -1) + ']'
|
||
}
|
||
}
|
||
function genInlineTemplate(el, state) {
|
||
var ast = el.children[0]
|
||
if (el.children.length !== 1 || ast.type !== 1) {
|
||
state.warn(
|
||
'Inline-template components must have exactly one child element.',
|
||
{ start: el.start }
|
||
)
|
||
}
|
||
if (ast && ast.type === 1) {
|
||
var inlineRenderFns = generate$1(ast, state.options)
|
||
return 'inlineTemplate:{render:function(){'
|
||
.concat(inlineRenderFns.render, '},staticRenderFns:[')
|
||
.concat(
|
||
inlineRenderFns.staticRenderFns
|
||
.map(function (code) {
|
||
return 'function(){'.concat(code, '}')
|
||
})
|
||
.join(','),
|
||
']}'
|
||
)
|
||
}
|
||
}
|
||
function genScopedSlots(el, slots, state) {
|
||
// by default scoped slots are considered "stable", this allows child
|
||
// components with only scoped slots to skip forced updates from parent.
|
||
// but in some cases we have to bail-out of this optimization
|
||
// for example if the slot contains dynamic names, has v-if or v-for on them...
|
||
var needsForceUpdate =
|
||
el.for ||
|
||
Object.keys(slots).some(function (key) {
|
||
var slot = slots[key]
|
||
return (
|
||
slot.slotTargetDynamic ||
|
||
slot.if ||
|
||
slot.for ||
|
||
containsSlotChild(slot) // is passing down slot from parent which may be dynamic
|
||
)
|
||
})
|
||
// #9534: if a component with scoped slots is inside a conditional branch,
|
||
// it's possible for the same component to be reused but with different
|
||
// compiled slot content. To avoid that, we generate a unique key based on
|
||
// the generated code of all the slot contents.
|
||
var needsKey = !!el.if
|
||
// OR when it is inside another scoped slot or v-for (the reactivity may be
|
||
// disconnected due to the intermediate scope variable)
|
||
// #9438, #9506
|
||
// TODO: this can be further optimized by properly analyzing in-scope bindings
|
||
// and skip force updating ones that do not actually use scope variables.
|
||
if (!needsForceUpdate) {
|
||
var parent_2 = el.parent
|
||
while (parent_2) {
|
||
if (
|
||
(parent_2.slotScope && parent_2.slotScope !== emptySlotScopeToken) ||
|
||
parent_2.for
|
||
) {
|
||
needsForceUpdate = true
|
||
break
|
||
}
|
||
if (parent_2.if) {
|
||
needsKey = true
|
||
}
|
||
parent_2 = parent_2.parent
|
||
}
|
||
}
|
||
var generatedSlots = Object.keys(slots)
|
||
.map(function (key) {
|
||
return genScopedSlot(slots[key], state)
|
||
})
|
||
.join(',')
|
||
return 'scopedSlots:_u(['
|
||
.concat(generatedSlots, ']')
|
||
.concat(needsForceUpdate ? ',null,true' : '')
|
||
.concat(
|
||
!needsForceUpdate && needsKey
|
||
? ',null,false,'.concat(hash(generatedSlots))
|
||
: '',
|
||
')'
|
||
)
|
||
}
|
||
function hash(str) {
|
||
var hash = 5381
|
||
var i = str.length
|
||
while (i) {
|
||
hash = (hash * 33) ^ str.charCodeAt(--i)
|
||
}
|
||
return hash >>> 0
|
||
}
|
||
function containsSlotChild(el) {
|
||
if (el.type === 1) {
|
||
if (el.tag === 'slot') {
|
||
return true
|
||
}
|
||
return el.children.some(containsSlotChild)
|
||
}
|
||
return false
|
||
}
|
||
function genScopedSlot(el, state) {
|
||
var isLegacySyntax = el.attrsMap['slot-scope']
|
||
if (el.if && !el.ifProcessed && !isLegacySyntax) {
|
||
return genIf(el, state, genScopedSlot, 'null')
|
||
}
|
||
if (el.for && !el.forProcessed) {
|
||
return genFor(el, state, genScopedSlot)
|
||
}
|
||
var slotScope =
|
||
el.slotScope === emptySlotScopeToken ? '' : String(el.slotScope)
|
||
var fn =
|
||
'function('.concat(slotScope, '){') +
|
||
'return '.concat(
|
||
el.tag === 'template'
|
||
? el.if && isLegacySyntax
|
||
? '('
|
||
.concat(el.if, ')?')
|
||
.concat(genChildren(el, state) || 'undefined', ':undefined')
|
||
: genChildren(el, state) || 'undefined'
|
||
: genElement(el, state),
|
||
'}'
|
||
)
|
||
// reverse proxy v-slot without scope on this.$slots
|
||
var reverseProxy = slotScope ? '' : ',proxy:true'
|
||
return '{key:'
|
||
.concat(el.slotTarget || '"default"', ',fn:')
|
||
.concat(fn)
|
||
.concat(reverseProxy, '}')
|
||
}
|
||
function genChildren(el, state, checkSkip, altGenElement, altGenNode) {
|
||
var children = el.children
|
||
if (children.length) {
|
||
var el_1 = children[0]
|
||
// optimize single v-for
|
||
if (
|
||
children.length === 1 &&
|
||
el_1.for &&
|
||
el_1.tag !== 'template' &&
|
||
el_1.tag !== 'slot'
|
||
) {
|
||
var normalizationType_1 = checkSkip
|
||
? state.maybeComponent(el_1)
|
||
? ',1'
|
||
: ',0'
|
||
: ''
|
||
return ''
|
||
.concat((altGenElement || genElement)(el_1, state))
|
||
.concat(normalizationType_1)
|
||
}
|
||
var normalizationType = checkSkip
|
||
? getNormalizationType(children, state.maybeComponent)
|
||
: 0
|
||
var gen_1 = altGenNode || genNode
|
||
return '['
|
||
.concat(
|
||
children
|
||
.map(function (c) {
|
||
return gen_1(c, state)
|
||
})
|
||
.join(','),
|
||
']'
|
||
)
|
||
.concat(normalizationType ? ','.concat(normalizationType) : '')
|
||
}
|
||
}
|
||
// determine the normalization needed for the children array.
|
||
// 0: no normalization needed
|
||
// 1: simple normalization needed (possible 1-level deep nested array)
|
||
// 2: full normalization needed
|
||
function getNormalizationType(children, maybeComponent) {
|
||
var res = 0
|
||
for (var i = 0; i < children.length; i++) {
|
||
var el = children[i]
|
||
if (el.type !== 1) {
|
||
continue
|
||
}
|
||
if (
|
||
needsNormalization(el) ||
|
||
(el.ifConditions &&
|
||
el.ifConditions.some(function (c) {
|
||
return needsNormalization(c.block)
|
||
}))
|
||
) {
|
||
res = 2
|
||
break
|
||
}
|
||
if (
|
||
maybeComponent(el) ||
|
||
(el.ifConditions &&
|
||
el.ifConditions.some(function (c) {
|
||
return maybeComponent(c.block)
|
||
}))
|
||
) {
|
||
res = 1
|
||
}
|
||
}
|
||
return res
|
||
}
|
||
function needsNormalization(el) {
|
||
return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'
|
||
}
|
||
function genNode(node, state) {
|
||
if (node.type === 1) {
|
||
return genElement(node, state)
|
||
} else if (node.type === 3 && node.isComment) {
|
||
return genComment(node)
|
||
} else {
|
||
return genText(node)
|
||
}
|
||
}
|
||
function genText(text) {
|
||
return '_v('.concat(
|
||
text.type === 2
|
||
? text.expression // no need for () because already wrapped in _s()
|
||
: transformSpecialNewlines(JSON.stringify(text.text)),
|
||
')'
|
||
)
|
||
}
|
||
function genComment(comment) {
|
||
return '_e('.concat(JSON.stringify(comment.text), ')')
|
||
}
|
||
function genSlot(el, state) {
|
||
var slotName = el.slotName || '"default"'
|
||
var children = genChildren(el, state)
|
||
var res = '_t('
|
||
.concat(slotName)
|
||
.concat(children ? ',function(){return '.concat(children, '}') : '')
|
||
var attrs =
|
||
el.attrs || el.dynamicAttrs
|
||
? genProps(
|
||
(el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) {
|
||
return {
|
||
// slot props are camelized
|
||
name: camelize(attr.name),
|
||
value: attr.value,
|
||
dynamic: attr.dynamic
|
||
}
|
||
})
|
||
)
|
||
: null
|
||
var bind = el.attrsMap['v-bind']
|
||
if ((attrs || bind) && !children) {
|
||
res += ',null'
|
||
}
|
||
if (attrs) {
|
||
res += ','.concat(attrs)
|
||
}
|
||
if (bind) {
|
||
res += ''.concat(attrs ? '' : ',null', ',').concat(bind)
|
||
}
|
||
return res + ')'
|
||
}
|
||
// componentName is el.component, take it as argument to shun flow's pessimistic refinement
|
||
function genComponent(componentName, el, state) {
|
||
var children = el.inlineTemplate ? null : genChildren(el, state, true)
|
||
return '_c('
|
||
.concat(componentName, ',')
|
||
.concat(genData(el, state))
|
||
.concat(children ? ','.concat(children) : '', ')')
|
||
}
|
||
function genProps(props) {
|
||
var staticProps = ''
|
||
var dynamicProps = ''
|
||
for (var i = 0; i < props.length; i++) {
|
||
var prop = props[i]
|
||
var value = transformSpecialNewlines(prop.value)
|
||
if (prop.dynamic) {
|
||
dynamicProps += ''.concat(prop.name, ',').concat(value, ',')
|
||
} else {
|
||
staticProps += '"'.concat(prop.name, '":').concat(value, ',')
|
||
}
|
||
}
|
||
staticProps = '{'.concat(staticProps.slice(0, -1), '}')
|
||
if (dynamicProps) {
|
||
return '_d('
|
||
.concat(staticProps, ',[')
|
||
.concat(dynamicProps.slice(0, -1), '])')
|
||
} else {
|
||
return staticProps
|
||
}
|
||
}
|
||
// #3895, #4268
|
||
function transformSpecialNewlines(text) {
|
||
return text.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029')
|
||
}
|
||
|
||
// these keywords should not appear inside expressions, but operators like
|
||
// typeof, instanceof and in are allowed
|
||
var prohibitedKeywordRE = new RegExp(
|
||
'\\b' +
|
||
(
|
||
'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +
|
||
'super,throw,while,yield,delete,export,import,return,switch,default,' +
|
||
'extends,finally,continue,debugger,function,arguments'
|
||
)
|
||
.split(',')
|
||
.join('\\b|\\b') +
|
||
'\\b'
|
||
)
|
||
// these unary operators should not be used as property/method names
|
||
var unaryOperatorsRE = new RegExp(
|
||
'\\b' +
|
||
'delete,typeof,void'.split(',').join('\\s*\\([^\\)]*\\)|\\b') +
|
||
'\\s*\\([^\\)]*\\)'
|
||
)
|
||
// strip strings in expressions
|
||
var stripStringRE =
|
||
/'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g
|
||
// detect problematic expressions in a template
|
||
function detectErrors(ast, warn) {
|
||
if (ast) {
|
||
checkNode(ast, warn)
|
||
}
|
||
}
|
||
function checkNode(node, warn) {
|
||
if (node.type === 1) {
|
||
for (var name_1 in node.attrsMap) {
|
||
if (dirRE.test(name_1)) {
|
||
var value = node.attrsMap[name_1]
|
||
if (value) {
|
||
var range = node.rawAttrsMap[name_1]
|
||
if (name_1 === 'v-for') {
|
||
checkFor(node, 'v-for="'.concat(value, '"'), warn, range)
|
||
} else if (name_1 === 'v-slot' || name_1[0] === '#') {
|
||
checkFunctionParameterExpression(
|
||
value,
|
||
''.concat(name_1, '="').concat(value, '"'),
|
||
warn,
|
||
range
|
||
)
|
||
} else if (onRE.test(name_1)) {
|
||
checkEvent(
|
||
value,
|
||
''.concat(name_1, '="').concat(value, '"'),
|
||
warn,
|
||
range
|
||
)
|
||
} else {
|
||
checkExpression(
|
||
value,
|
||
''.concat(name_1, '="').concat(value, '"'),
|
||
warn,
|
||
range
|
||
)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (node.children) {
|
||
for (var i = 0; i < node.children.length; i++) {
|
||
checkNode(node.children[i], warn)
|
||
}
|
||
}
|
||
} else if (node.type === 2) {
|
||
checkExpression(node.expression, node.text, warn, node)
|
||
}
|
||
}
|
||
function checkEvent(exp, text, warn, range) {
|
||
var stripped = exp.replace(stripStringRE, '')
|
||
var keywordMatch = stripped.match(unaryOperatorsRE)
|
||
if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {
|
||
warn(
|
||
'avoid using JavaScript unary operator as property name: ' +
|
||
'"'.concat(keywordMatch[0], '" in expression ').concat(text.trim()),
|
||
range
|
||
)
|
||
}
|
||
checkExpression(exp, text, warn, range)
|
||
}
|
||
function checkFor(node, text, warn, range) {
|
||
checkExpression(node.for || '', text, warn, range)
|
||
checkIdentifier(node.alias, 'v-for alias', text, warn, range)
|
||
checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range)
|
||
checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range)
|
||
}
|
||
function checkIdentifier(ident, type, text, warn, range) {
|
||
if (typeof ident === 'string') {
|
||
try {
|
||
new Function('var '.concat(ident, '=_'))
|
||
} catch (e) {
|
||
warn(
|
||
'invalid '
|
||
.concat(type, ' "')
|
||
.concat(ident, '" in expression: ')
|
||
.concat(text.trim()),
|
||
range
|
||
)
|
||
}
|
||
}
|
||
}
|
||
function checkExpression(exp, text, warn, range) {
|
||
try {
|
||
new Function('return '.concat(exp))
|
||
} catch (e) {
|
||
var keywordMatch = exp
|
||
.replace(stripStringRE, '')
|
||
.match(prohibitedKeywordRE)
|
||
if (keywordMatch) {
|
||
warn(
|
||
'avoid using JavaScript keyword as property name: ' +
|
||
'"'
|
||
.concat(keywordMatch[0], '"\n Raw expression: ')
|
||
.concat(text.trim()),
|
||
range
|
||
)
|
||
} else {
|
||
warn(
|
||
'invalid expression: '.concat(e.message, ' in\n\n') +
|
||
' '.concat(exp, '\n\n') +
|
||
' Raw expression: '.concat(text.trim(), '\n'),
|
||
range
|
||
)
|
||
}
|
||
}
|
||
}
|
||
function checkFunctionParameterExpression(exp, text, warn, range) {
|
||
try {
|
||
new Function(exp, '')
|
||
} catch (e) {
|
||
warn(
|
||
'invalid function parameter expression: '.concat(e.message, ' in\n\n') +
|
||
' '.concat(exp, '\n\n') +
|
||
' Raw expression: '.concat(text.trim(), '\n'),
|
||
range
|
||
)
|
||
}
|
||
}
|
||
|
||
var range = 2
|
||
function generateCodeFrame(source, start, end) {
|
||
if (start === void 0) {
|
||
start = 0
|
||
}
|
||
if (end === void 0) {
|
||
end = source.length
|
||
}
|
||
var lines = source.split(/\r?\n/)
|
||
var count = 0
|
||
var res = []
|
||
for (var i = 0; i < lines.length; i++) {
|
||
count += lines[i].length + 1
|
||
if (count >= start) {
|
||
for (var j = i - range; j <= i + range || end > count; j++) {
|
||
if (j < 0 || j >= lines.length) continue
|
||
res.push(
|
||
''
|
||
.concat(j + 1)
|
||
.concat(repeat(' ', 3 - String(j + 1).length), '| ')
|
||
.concat(lines[j])
|
||
)
|
||
var lineLength = lines[j].length
|
||
if (j === i) {
|
||
// push underline
|
||
var pad = start - (count - lineLength) + 1
|
||
var length_1 = end > count ? lineLength - pad : end - start
|
||
res.push(' | ' + repeat(' ', pad) + repeat('^', length_1))
|
||
} else if (j > i) {
|
||
if (end > count) {
|
||
var length_2 = Math.min(end - count, lineLength)
|
||
res.push(' | ' + repeat('^', length_2))
|
||
}
|
||
count += lineLength + 1
|
||
}
|
||
}
|
||
break
|
||
}
|
||
}
|
||
return res.join('\n')
|
||
}
|
||
function repeat(str, n) {
|
||
var result = ''
|
||
if (n > 0) {
|
||
// eslint-disable-next-line no-constant-condition
|
||
while (true) {
|
||
// eslint-disable-line
|
||
if (n & 1) result += str
|
||
n >>>= 1
|
||
if (n <= 0) break
|
||
str += str
|
||
}
|
||
}
|
||
return result
|
||
}
|
||
|
||
function createFunction(code, errors) {
|
||
try {
|
||
return new Function(code)
|
||
} catch (err) {
|
||
errors.push({ err: err, code: code })
|
||
return noop
|
||
}
|
||
}
|
||
function createCompileToFunctionFn(compile) {
|
||
var cache = Object.create(null)
|
||
return function compileToFunctions(template, options, vm) {
|
||
options = extend({}, options)
|
||
var warn = options.warn || warn$2
|
||
delete options.warn
|
||
/* istanbul ignore if */
|
||
{
|
||
// detect possible CSP restriction
|
||
try {
|
||
new Function('return 1')
|
||
} catch (e) {
|
||
if (e.toString().match(/unsafe-eval|CSP/)) {
|
||
warn(
|
||
'It seems you are using the standalone build of Vue.js in an ' +
|
||
'environment with Content Security Policy that prohibits unsafe-eval. ' +
|
||
'The template compiler cannot work in this environment. Consider ' +
|
||
'relaxing the policy to allow unsafe-eval or pre-compiling your ' +
|
||
'templates into render functions.'
|
||
)
|
||
}
|
||
}
|
||
}
|
||
// check cache
|
||
var key = options.delimiters
|
||
? String(options.delimiters) + template
|
||
: template
|
||
if (cache[key]) {
|
||
return cache[key]
|
||
}
|
||
// compile
|
||
var compiled = compile(template, options)
|
||
// check compilation errors/tips
|
||
{
|
||
if (compiled.errors && compiled.errors.length) {
|
||
if (options.outputSourceRange) {
|
||
compiled.errors.forEach(function (e) {
|
||
warn(
|
||
'Error compiling template:\n\n'.concat(e.msg, '\n\n') +
|
||
generateCodeFrame(template, e.start, e.end),
|
||
vm
|
||
)
|
||
})
|
||
} else {
|
||
warn(
|
||
'Error compiling template:\n\n'.concat(template, '\n\n') +
|
||
compiled.errors
|
||
.map(function (e) {
|
||
return '- '.concat(e)
|
||
})
|
||
.join('\n') +
|
||
'\n',
|
||
vm
|
||
)
|
||
}
|
||
}
|
||
if (compiled.tips && compiled.tips.length) {
|
||
if (options.outputSourceRange) {
|
||
compiled.tips.forEach(function (e) {
|
||
return tip(e.msg, vm)
|
||
})
|
||
} else {
|
||
compiled.tips.forEach(function (msg) {
|
||
return tip(msg, vm)
|
||
})
|
||
}
|
||
}
|
||
}
|
||
// turn code into functions
|
||
var res = {}
|
||
var fnGenErrors = []
|
||
res.render = createFunction(compiled.render, fnGenErrors)
|
||
res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
|
||
return createFunction(code, fnGenErrors)
|
||
})
|
||
// check function generation errors.
|
||
// this should only happen if there is a bug in the compiler itself.
|
||
// mostly for codegen development use
|
||
/* istanbul ignore if */
|
||
{
|
||
if (
|
||
(!compiled.errors || !compiled.errors.length) &&
|
||
fnGenErrors.length
|
||
) {
|
||
warn(
|
||
'Failed to generate render function:\n\n' +
|
||
fnGenErrors
|
||
.map(function (_a) {
|
||
var err = _a.err,
|
||
code = _a.code
|
||
return ''.concat(err.toString(), ' in\n\n').concat(code, '\n')
|
||
})
|
||
.join('\n'),
|
||
vm
|
||
)
|
||
}
|
||
}
|
||
return (cache[key] = res)
|
||
}
|
||
}
|
||
|
||
function createCompilerCreator(baseCompile) {
|
||
return function createCompiler(baseOptions) {
|
||
function compile(template, options) {
|
||
var finalOptions = Object.create(baseOptions)
|
||
var errors = []
|
||
var tips = []
|
||
var warn = function (msg, range, tip) {
|
||
;(tip ? tips : errors).push(msg)
|
||
}
|
||
if (options) {
|
||
if (options.outputSourceRange) {
|
||
// $flow-disable-line
|
||
var leadingSpaceLength_1 = template.match(/^\s*/)[0].length
|
||
warn = function (msg, range, tip) {
|
||
var data = typeof msg === 'string' ? { msg: msg } : msg
|
||
if (range) {
|
||
if (range.start != null) {
|
||
data.start = range.start + leadingSpaceLength_1
|
||
}
|
||
if (range.end != null) {
|
||
data.end = range.end + leadingSpaceLength_1
|
||
}
|
||
}
|
||
;(tip ? tips : errors).push(data)
|
||
}
|
||
}
|
||
// merge custom modules
|
||
if (options.modules) {
|
||
finalOptions.modules = (baseOptions.modules || []).concat(
|
||
options.modules
|
||
)
|
||
}
|
||
// merge custom directives
|
||
if (options.directives) {
|
||
finalOptions.directives = extend(
|
||
Object.create(baseOptions.directives || null),
|
||
options.directives
|
||
)
|
||
}
|
||
// copy other options
|
||
for (var key in options) {
|
||
if (key !== 'modules' && key !== 'directives') {
|
||
finalOptions[key] = options[key]
|
||
}
|
||
}
|
||
}
|
||
finalOptions.warn = warn
|
||
var compiled = baseCompile(template.trim(), finalOptions)
|
||
{
|
||
detectErrors(compiled.ast, warn)
|
||
}
|
||
compiled.errors = errors
|
||
compiled.tips = tips
|
||
return compiled
|
||
}
|
||
return {
|
||
compile: compile,
|
||
compileToFunctions: createCompileToFunctionFn(compile)
|
||
}
|
||
}
|
||
}
|
||
|
||
// `createCompilerCreator` allows creating compilers that use alternative
|
||
// parser/optimizer/codegen, e.g the SSR optimizing compiler.
|
||
// Here we just export a default compiler using the default parts.
|
||
var createCompiler$1 = createCompilerCreator(function baseCompile(
|
||
template,
|
||
options
|
||
) {
|
||
var ast = parse(template.trim(), options)
|
||
if (options.optimize !== false) {
|
||
optimize$1(ast, options)
|
||
}
|
||
var code = generate$1(ast, options)
|
||
return {
|
||
ast: ast,
|
||
render: code.render,
|
||
staticRenderFns: code.staticRenderFns
|
||
}
|
||
})
|
||
|
||
var _a$1 = createCompiler$1(baseOptions),
|
||
compile$1 = _a$1.compile,
|
||
compileToFunctions$1 = _a$1.compileToFunctions
|
||
|
||
var isAttr = makeMap(
|
||
'accept,accept-charset,accesskey,action,align,alt,async,autocomplete,' +
|
||
'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,' +
|
||
'checked,cite,class,code,codebase,color,cols,colspan,content,' +
|
||
'contenteditable,contextmenu,controls,coords,data,datetime,default,' +
|
||
'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,for,' +
|
||
'form,formaction,headers,height,hidden,high,href,hreflang,http-equiv,' +
|
||
'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,' +
|
||
'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,' +
|
||
'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,' +
|
||
'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,' +
|
||
'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,' +
|
||
'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,' +
|
||
'target,title,usemap,value,width,wrap'
|
||
)
|
||
/* istanbul ignore next */
|
||
var isRenderableAttr = function (name) {
|
||
return (
|
||
isAttr(name) || name.indexOf('data-') === 0 || name.indexOf('aria-') === 0
|
||
)
|
||
}
|
||
var propsToAttrMap = {
|
||
acceptCharset: 'accept-charset',
|
||
className: 'class',
|
||
htmlFor: 'for',
|
||
httpEquiv: 'http-equiv'
|
||
}
|
||
var ESC = {
|
||
'<': '<',
|
||
'>': '>',
|
||
'"': '"',
|
||
'&': '&'
|
||
}
|
||
function escape(s) {
|
||
return s.replace(/[<>"&]/g, escapeChar)
|
||
}
|
||
function escapeChar(a) {
|
||
return ESC[a] || a
|
||
}
|
||
|
||
var plainStringRE = /^"(?:[^"\\]|\\.)*"$|^'(?:[^'\\]|\\.)*'$/
|
||
// let the model AST transform translate v-model into appropriate
|
||
// props bindings
|
||
function applyModelTransform(el, state) {
|
||
if (el.directives) {
|
||
for (var i = 0; i < el.directives.length; i++) {
|
||
var dir = el.directives[i]
|
||
if (dir.name === 'model') {
|
||
state.directives.model(el, dir, state.warn)
|
||
// remove value for textarea as its converted to text
|
||
if (el.tag === 'textarea' && el.props) {
|
||
el.props = el.props.filter(function (p) {
|
||
return p.name !== 'value'
|
||
})
|
||
}
|
||
break
|
||
}
|
||
}
|
||
}
|
||
}
|
||
function genAttrSegments(attrs) {
|
||
return attrs.map(function (_a) {
|
||
var name = _a.name,
|
||
value = _a.value
|
||
return genAttrSegment(name, value)
|
||
})
|
||
}
|
||
function genDOMPropSegments(props, attrs) {
|
||
var segments = []
|
||
props.forEach(function (_a) {
|
||
var name = _a.name,
|
||
value = _a.value
|
||
name = propsToAttrMap[name] || name.toLowerCase()
|
||
if (
|
||
isRenderableAttr(name) &&
|
||
!(
|
||
attrs &&
|
||
attrs.some(function (a) {
|
||
return a.name === name
|
||
})
|
||
)
|
||
) {
|
||
segments.push(genAttrSegment(name, value))
|
||
}
|
||
})
|
||
return segments
|
||
}
|
||
function genAttrSegment(name, value) {
|
||
if (plainStringRE.test(value)) {
|
||
// force double quote
|
||
value = value.replace(/^'|'$/g, '"')
|
||
// force enumerated attr to "true"
|
||
if (isEnumeratedAttr(name) && value !== '"false"') {
|
||
value = '"true"'
|
||
}
|
||
return {
|
||
type: RAW,
|
||
value: isBooleanAttr(name)
|
||
? ' '.concat(name, '="').concat(name, '"')
|
||
: value === '""'
|
||
? ' '.concat(name)
|
||
: ' '.concat(name, '="').concat(JSON.parse(value), '"')
|
||
}
|
||
} else {
|
||
return {
|
||
type: EXPRESSION,
|
||
value: '_ssrAttr('.concat(JSON.stringify(name), ',').concat(value, ')')
|
||
}
|
||
}
|
||
}
|
||
function genClassSegments(staticClass, classBinding) {
|
||
if (staticClass && !classBinding) {
|
||
return [
|
||
{ type: RAW, value: ' class="'.concat(JSON.parse(staticClass), '"') }
|
||
]
|
||
} else {
|
||
return [
|
||
{
|
||
type: EXPRESSION,
|
||
value: '_ssrClass('
|
||
.concat(staticClass || 'null', ',')
|
||
.concat(classBinding || 'null', ')')
|
||
}
|
||
]
|
||
}
|
||
}
|
||
function genStyleSegments(
|
||
staticStyle,
|
||
parsedStaticStyle,
|
||
styleBinding,
|
||
vShowExpression
|
||
) {
|
||
if (staticStyle && !styleBinding && !vShowExpression) {
|
||
return [
|
||
{ type: RAW, value: ' style='.concat(JSON.stringify(staticStyle)) }
|
||
]
|
||
} else {
|
||
return [
|
||
{
|
||
type: EXPRESSION,
|
||
value: '_ssrStyle('
|
||
.concat(parsedStaticStyle || 'null', ',')
|
||
.concat(styleBinding || 'null', ', ')
|
||
.concat(
|
||
vShowExpression
|
||
? '{ display: ('.concat(vShowExpression, ") ? '' : 'none' }")
|
||
: 'null',
|
||
')'
|
||
)
|
||
}
|
||
]
|
||
}
|
||
}
|
||
|
||
/**
|
||
* In SSR, the vdom tree is generated only once and never patched, so
|
||
* we can optimize most element / trees into plain string render functions.
|
||
* The SSR optimizer walks the AST tree to detect optimizable elements and trees.
|
||
*
|
||
* The criteria for SSR optimizability is quite a bit looser than static tree
|
||
* detection (which is designed for client re-render). In SSR we bail only for
|
||
* components/slots/custom directives.
|
||
*/
|
||
// optimizability constants
|
||
var optimizability = {
|
||
FALSE: 0,
|
||
FULL: 1,
|
||
SELF: 2,
|
||
CHILDREN: 3,
|
||
PARTIAL: 4 // self un-optimizable with some un-optimizable children
|
||
}
|
||
var isPlatformReservedTag
|
||
function optimize(root, options) {
|
||
if (!root) return
|
||
isPlatformReservedTag = options.isReservedTag || no
|
||
walk(root, true)
|
||
}
|
||
function walk(node, isRoot) {
|
||
if (isUnOptimizableTree(node)) {
|
||
node.ssrOptimizability = optimizability.FALSE
|
||
return
|
||
}
|
||
// root node or nodes with custom directives should always be a VNode
|
||
var selfUnoptimizable = isRoot || hasCustomDirective(node)
|
||
var check = function (child) {
|
||
if (child.ssrOptimizability !== optimizability.FULL) {
|
||
node.ssrOptimizability = selfUnoptimizable
|
||
? optimizability.PARTIAL
|
||
: optimizability.SELF
|
||
}
|
||
}
|
||
if (selfUnoptimizable) {
|
||
node.ssrOptimizability = optimizability.CHILDREN
|
||
}
|
||
if (node.type === 1) {
|
||
for (var i = 0, l = node.children.length; i < l; i++) {
|
||
var child = node.children[i]
|
||
walk(child)
|
||
check(child)
|
||
}
|
||
if (node.ifConditions) {
|
||
for (var i = 1, l = node.ifConditions.length; i < l; i++) {
|
||
var block = node.ifConditions[i].block
|
||
walk(block, isRoot)
|
||
check(block)
|
||
}
|
||
}
|
||
if (
|
||
node.ssrOptimizability == null ||
|
||
(!isRoot && (node.attrsMap['v-html'] || node.attrsMap['v-text']))
|
||
) {
|
||
node.ssrOptimizability = optimizability.FULL
|
||
} else {
|
||
node.children = optimizeSiblings(node)
|
||
}
|
||
} else {
|
||
node.ssrOptimizability = optimizability.FULL
|
||
}
|
||
}
|
||
function optimizeSiblings(el) {
|
||
var children = el.children
|
||
var optimizedChildren = []
|
||
var currentOptimizableGroup = []
|
||
var pushGroup = function () {
|
||
if (currentOptimizableGroup.length) {
|
||
optimizedChildren.push({
|
||
type: 1,
|
||
parent: el,
|
||
tag: 'template',
|
||
attrsList: [],
|
||
attrsMap: {},
|
||
rawAttrsMap: {},
|
||
children: currentOptimizableGroup,
|
||
ssrOptimizability: optimizability.FULL
|
||
})
|
||
}
|
||
currentOptimizableGroup = []
|
||
}
|
||
for (var i = 0; i < children.length; i++) {
|
||
var c = children[i]
|
||
if (c.ssrOptimizability === optimizability.FULL) {
|
||
currentOptimizableGroup.push(c)
|
||
} else {
|
||
// wrap fully-optimizable adjacent siblings inside a template tag
|
||
// so that they can be optimized into a single ssrNode by codegen
|
||
pushGroup()
|
||
optimizedChildren.push(c)
|
||
}
|
||
}
|
||
pushGroup()
|
||
return optimizedChildren
|
||
}
|
||
function isUnOptimizableTree(node) {
|
||
if (node.type === 2 || node.type === 3) {
|
||
// text or expression
|
||
return false
|
||
}
|
||
return (
|
||
isBuiltInTag(node.tag) || // built-in (slot, component)
|
||
!isPlatformReservedTag(node.tag) || // custom component
|
||
!!node.component || // "is" component
|
||
isSelectWithModel(node) // <select v-model> requires runtime inspection
|
||
)
|
||
}
|
||
var isBuiltInDir = makeMap('text,html,show,on,bind,model,pre,cloak,once')
|
||
function hasCustomDirective(node) {
|
||
return (
|
||
node.type === 1 &&
|
||
node.directives &&
|
||
node.directives.some(function (d) {
|
||
return !isBuiltInDir(d.name)
|
||
})
|
||
)
|
||
}
|
||
// <select v-model> cannot be optimized because it requires a runtime check
|
||
// to determine proper selected option
|
||
function isSelectWithModel(node) {
|
||
return (
|
||
node.type === 1 &&
|
||
node.tag === 'select' &&
|
||
node.directives != null &&
|
||
node.directives.some(function (d) {
|
||
return d.name === 'model'
|
||
})
|
||
)
|
||
}
|
||
|
||
// The SSR codegen is essentially extending the default codegen to handle
|
||
// segment types
|
||
var RAW = 0
|
||
var INTERPOLATION = 1
|
||
var EXPRESSION = 2
|
||
function generate(ast, options) {
|
||
var state = new CodegenState(options)
|
||
var code = ast ? genSSRElement(ast, state) : '_c("div")'
|
||
return {
|
||
render: 'with(this){return '.concat(code, '}'),
|
||
staticRenderFns: state.staticRenderFns
|
||
}
|
||
}
|
||
function genSSRElement(el, state) {
|
||
if (el.for && !el.forProcessed) {
|
||
return genFor(el, state, genSSRElement)
|
||
} else if (el.if && !el.ifProcessed) {
|
||
return genIf(el, state, genSSRElement)
|
||
} else if (el.tag === 'template' && !el.slotTarget) {
|
||
return el.ssrOptimizability === optimizability.FULL
|
||
? genChildrenAsStringNode(el, state)
|
||
: genSSRChildren(el, state) || 'void 0'
|
||
}
|
||
switch (el.ssrOptimizability) {
|
||
case optimizability.FULL:
|
||
// stringify whole tree
|
||
return genStringElement(el, state)
|
||
case optimizability.SELF:
|
||
// stringify self and check children
|
||
return genStringElementWithChildren(el, state)
|
||
case optimizability.CHILDREN:
|
||
// generate self as VNode and stringify children
|
||
return genNormalElement(el, state, true)
|
||
case optimizability.PARTIAL:
|
||
// generate self as VNode and check children
|
||
return genNormalElement(el, state, false)
|
||
default:
|
||
// bail whole tree
|
||
return genElement(el, state)
|
||
}
|
||
}
|
||
function genNormalElement(el, state, stringifyChildren) {
|
||
var data = el.plain ? undefined : genData(el, state)
|
||
var children = stringifyChildren
|
||
? '['.concat(genChildrenAsStringNode(el, state), ']')
|
||
: genSSRChildren(el, state, true)
|
||
return "_c('"
|
||
.concat(el.tag, "'")
|
||
.concat(data ? ','.concat(data) : '')
|
||
.concat(children ? ','.concat(children) : '', ')')
|
||
}
|
||
function genSSRChildren(el, state, checkSkip) {
|
||
return genChildren(el, state, checkSkip, genSSRElement, genSSRNode)
|
||
}
|
||
function genSSRNode(el, state) {
|
||
return el.type === 1 ? genSSRElement(el, state) : genText(el)
|
||
}
|
||
function genChildrenAsStringNode(el, state) {
|
||
return el.children.length
|
||
? '_ssrNode('.concat(flattenSegments(childrenToSegments(el, state)), ')')
|
||
: ''
|
||
}
|
||
function genStringElement(el, state) {
|
||
return '_ssrNode('.concat(elementToString(el, state), ')')
|
||
}
|
||
function genStringElementWithChildren(el, state) {
|
||
var children = genSSRChildren(el, state, true)
|
||
return '_ssrNode('
|
||
.concat(flattenSegments(elementToOpenTagSegments(el, state)), ',"</')
|
||
.concat(el.tag, '>"')
|
||
.concat(children ? ','.concat(children) : '', ')')
|
||
}
|
||
function elementToString(el, state) {
|
||
return '('.concat(flattenSegments(elementToSegments(el, state)), ')')
|
||
}
|
||
function elementToSegments(el, state) {
|
||
// v-for / v-if
|
||
if (el.for && !el.forProcessed) {
|
||
el.forProcessed = true
|
||
return [
|
||
{
|
||
type: EXPRESSION,
|
||
value: genFor(el, state, elementToString, '_ssrList')
|
||
}
|
||
]
|
||
} else if (el.if && !el.ifProcessed) {
|
||
el.ifProcessed = true
|
||
return [
|
||
{
|
||
type: EXPRESSION,
|
||
value: genIf(el, state, elementToString, '"<!---->"')
|
||
}
|
||
]
|
||
} else if (el.tag === 'template') {
|
||
return childrenToSegments(el, state)
|
||
}
|
||
var openSegments = elementToOpenTagSegments(el, state)
|
||
var childrenSegments = childrenToSegments(el, state)
|
||
var isUnaryTag = state.options.isUnaryTag
|
||
var close =
|
||
isUnaryTag && isUnaryTag(el.tag)
|
||
? []
|
||
: [{ type: RAW, value: '</'.concat(el.tag, '>') }]
|
||
return openSegments.concat(childrenSegments, close)
|
||
}
|
||
function elementToOpenTagSegments(el, state) {
|
||
applyModelTransform(el, state)
|
||
var binding
|
||
var segments = [{ type: RAW, value: '<'.concat(el.tag) }]
|
||
// attrs
|
||
if (el.attrs) {
|
||
segments.push.apply(segments, genAttrSegments(el.attrs))
|
||
}
|
||
// domProps
|
||
if (el.props) {
|
||
segments.push.apply(segments, genDOMPropSegments(el.props, el.attrs))
|
||
}
|
||
// v-bind="object"
|
||
if ((binding = el.attrsMap['v-bind'])) {
|
||
segments.push({
|
||
type: EXPRESSION,
|
||
value: '_ssrAttrs('.concat(binding, ')')
|
||
})
|
||
}
|
||
// v-bind.prop="object"
|
||
if ((binding = el.attrsMap['v-bind.prop'])) {
|
||
segments.push({
|
||
type: EXPRESSION,
|
||
value: '_ssrDOMProps('.concat(binding, ')')
|
||
})
|
||
}
|
||
// class
|
||
if (el.staticClass || el.classBinding) {
|
||
segments.push.apply(
|
||
segments,
|
||
genClassSegments(el.staticClass, el.classBinding)
|
||
)
|
||
}
|
||
// style & v-show
|
||
if (el.staticStyle || el.styleBinding || el.attrsMap['v-show']) {
|
||
segments.push.apply(
|
||
segments,
|
||
genStyleSegments(
|
||
el.attrsMap.style,
|
||
el.staticStyle,
|
||
el.styleBinding,
|
||
el.attrsMap['v-show']
|
||
)
|
||
)
|
||
}
|
||
// _scopedId
|
||
if (state.options.scopeId) {
|
||
segments.push({ type: RAW, value: ' '.concat(state.options.scopeId) })
|
||
}
|
||
segments.push({ type: RAW, value: '>' })
|
||
return segments
|
||
}
|
||
function childrenToSegments(el, state) {
|
||
var binding
|
||
if ((binding = el.attrsMap['v-html'])) {
|
||
return [{ type: EXPRESSION, value: '_s('.concat(binding, ')') }]
|
||
}
|
||
if ((binding = el.attrsMap['v-text'])) {
|
||
return [{ type: INTERPOLATION, value: '_s('.concat(binding, ')') }]
|
||
}
|
||
if (el.tag === 'textarea' && (binding = el.attrsMap['v-model'])) {
|
||
return [{ type: INTERPOLATION, value: '_s('.concat(binding, ')') }]
|
||
}
|
||
return el.children ? nodesToSegments(el.children, state) : []
|
||
}
|
||
function nodesToSegments(children, state) {
|
||
var segments = []
|
||
for (var i = 0; i < children.length; i++) {
|
||
var c = children[i]
|
||
if (c.type === 1) {
|
||
segments.push.apply(segments, elementToSegments(c, state))
|
||
} else if (c.type === 2) {
|
||
segments.push({ type: INTERPOLATION, value: c.expression })
|
||
} else if (c.type === 3) {
|
||
var text = escape(c.text)
|
||
if (c.isComment) {
|
||
text = '<!--' + text + '-->'
|
||
}
|
||
segments.push({ type: RAW, value: text })
|
||
}
|
||
}
|
||
return segments
|
||
}
|
||
function flattenSegments(segments) {
|
||
var mergedSegments = []
|
||
var textBuffer = ''
|
||
var pushBuffer = function () {
|
||
if (textBuffer) {
|
||
mergedSegments.push(JSON.stringify(textBuffer))
|
||
textBuffer = ''
|
||
}
|
||
}
|
||
for (var i = 0; i < segments.length; i++) {
|
||
var s = segments[i]
|
||
if (s.type === RAW) {
|
||
textBuffer += s.value
|
||
} else if (s.type === INTERPOLATION) {
|
||
pushBuffer()
|
||
mergedSegments.push('_ssrEscape('.concat(s.value, ')'))
|
||
} else if (s.type === EXPRESSION) {
|
||
pushBuffer()
|
||
mergedSegments.push('('.concat(s.value, ')'))
|
||
}
|
||
}
|
||
pushBuffer()
|
||
return mergedSegments.join('+')
|
||
}
|
||
|
||
var createCompiler = createCompilerCreator(function baseCompile(
|
||
template,
|
||
options
|
||
) {
|
||
var ast = parse(template.trim(), options)
|
||
optimize(ast, options)
|
||
var code = generate(ast, options)
|
||
return {
|
||
ast: ast,
|
||
render: code.render,
|
||
staticRenderFns: code.staticRenderFns
|
||
}
|
||
})
|
||
|
||
var _a = createCompiler(baseOptions),
|
||
compile = _a.compile,
|
||
compileToFunctions = _a.compileToFunctions
|
||
|
||
exports.compile = compile$1
|
||
exports.compileToFunctions = compileToFunctions$1
|
||
exports.generateCodeFrame = generateCodeFrame
|
||
exports.parseComponent = parseComponent
|
||
exports.ssrCompile = compile
|
||
exports.ssrCompileToFunctions = compileToFunctions
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true })
|
||
})
|