nav tabs on admin dashboard
This commit is contained in:
56
node_modules/vue/src/compiler/parser/html-parser.js
generated
vendored
56
node_modules/vue/src/compiler/parser/html-parser.js
generated
vendored
@@ -11,12 +11,12 @@
|
||||
|
||||
import { makeMap, no } from 'shared/util'
|
||||
import { isNonPhrasingTag } from 'web/compiler/util'
|
||||
import { unicodeRegExp } from 'core/util/lang'
|
||||
|
||||
// Regular Expressions for parsing tags and attributes
|
||||
const attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/
|
||||
// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName
|
||||
// but for Vue templates we can enforce a simple charset
|
||||
const ncname = '[a-zA-Z_][\\w\\-\\.]*'
|
||||
const dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/
|
||||
const ncname = `[a-zA-Z_][\\-\\.0-9_a-zA-Z${unicodeRegExp.source}]*`
|
||||
const qnameCapture = `((?:${ncname}\\:)?${ncname})`
|
||||
const startTagOpen = new RegExp(`^<${qnameCapture}`)
|
||||
const startTagClose = /^\s*(\/?)>/
|
||||
@@ -26,11 +26,6 @@ const doctype = /^<!DOCTYPE [^>]+>/i
|
||||
const comment = /^<!\--/
|
||||
const conditionalComment = /^<!\[/
|
||||
|
||||
let IS_REGEX_CAPTURING_BROKEN = false
|
||||
'x'.replace(/x(.)?/g, function (m, g) {
|
||||
IS_REGEX_CAPTURING_BROKEN = g === ''
|
||||
})
|
||||
|
||||
// Special Elements (can contain anything)
|
||||
export const isPlainTextElement = makeMap('script,style,textarea', true)
|
||||
const reCache = {}
|
||||
@@ -41,10 +36,11 @@ const decodingMap = {
|
||||
'"': '"',
|
||||
'&': '&',
|
||||
' ': '\n',
|
||||
'	': '\t'
|
||||
'	': '\t',
|
||||
''': "'"
|
||||
}
|
||||
const encodedAttr = /&(?:lt|gt|quot|amp);/g
|
||||
const encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10|#9);/g
|
||||
const encodedAttr = /&(?:lt|gt|quot|amp|#39);/g
|
||||
const encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g
|
||||
|
||||
// #5992
|
||||
const isIgnoreNewlineTag = makeMap('pre,textarea', true)
|
||||
@@ -74,7 +70,7 @@ export function parseHTML (html, options) {
|
||||
|
||||
if (commentEnd >= 0) {
|
||||
if (options.shouldKeepComment) {
|
||||
options.comment(html.substring(4, commentEnd))
|
||||
options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3)
|
||||
}
|
||||
advance(commentEnd + 3)
|
||||
continue
|
||||
@@ -111,7 +107,7 @@ export function parseHTML (html, options) {
|
||||
const startTagMatch = parseStartTag()
|
||||
if (startTagMatch) {
|
||||
handleStartTag(startTagMatch)
|
||||
if (shouldIgnoreFirstNewline(lastTag, html)) {
|
||||
if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {
|
||||
advance(1)
|
||||
}
|
||||
continue
|
||||
@@ -134,16 +130,18 @@ export function parseHTML (html, options) {
|
||||
rest = html.slice(textEnd)
|
||||
}
|
||||
text = html.substring(0, textEnd)
|
||||
advance(textEnd)
|
||||
}
|
||||
|
||||
if (textEnd < 0) {
|
||||
text = html
|
||||
html = ''
|
||||
}
|
||||
|
||||
if (text) {
|
||||
advance(text.length)
|
||||
}
|
||||
|
||||
if (options.chars && text) {
|
||||
options.chars(text)
|
||||
options.chars(text, index - text.length, index)
|
||||
}
|
||||
} else {
|
||||
let endTagLength = 0
|
||||
@@ -172,7 +170,7 @@ export function parseHTML (html, options) {
|
||||
if (html === last) {
|
||||
options.chars && options.chars(html)
|
||||
if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {
|
||||
options.warn(`Mal-formatted tag at end of template: "${html}"`)
|
||||
options.warn(`Mal-formatted tag at end of template: "${html}"`, { start: index + html.length })
|
||||
}
|
||||
break
|
||||
}
|
||||
@@ -196,8 +194,10 @@ export function parseHTML (html, options) {
|
||||
}
|
||||
advance(start[0].length)
|
||||
let end, attr
|
||||
while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
|
||||
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) {
|
||||
@@ -228,12 +228,6 @@ export function parseHTML (html, options) {
|
||||
const attrs = new Array(l)
|
||||
for (let i = 0; i < l; i++) {
|
||||
const args = match.attrs[i]
|
||||
// hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778
|
||||
if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('""') === -1) {
|
||||
if (args[3] === '') { delete args[3] }
|
||||
if (args[4] === '') { delete args[4] }
|
||||
if (args[5] === '') { delete args[5] }
|
||||
}
|
||||
const value = args[3] || args[4] || args[5] || ''
|
||||
const shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'
|
||||
? options.shouldDecodeNewlinesForHref
|
||||
@@ -242,10 +236,14 @@ export function parseHTML (html, options) {
|
||||
name: args[1],
|
||||
value: decodeAttr(value, shouldDecodeNewlines)
|
||||
}
|
||||
if (process.env.NODE_ENV !== 'production' && 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 })
|
||||
stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end })
|
||||
lastTag = tagName
|
||||
}
|
||||
|
||||
@@ -259,12 +257,9 @@ export function parseHTML (html, options) {
|
||||
if (start == null) start = index
|
||||
if (end == null) end = index
|
||||
|
||||
if (tagName) {
|
||||
lowerCasedTagName = tagName.toLowerCase()
|
||||
}
|
||||
|
||||
// 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
|
||||
@@ -283,7 +278,8 @@ export function parseHTML (html, options) {
|
||||
options.warn
|
||||
) {
|
||||
options.warn(
|
||||
`tag <${stack[i].tag}> has no matching end tag.`
|
||||
`tag <${stack[i].tag}> has no matching end tag.`,
|
||||
{ start: stack[i].start, end: stack[i].end }
|
||||
)
|
||||
}
|
||||
if (options.end) {
|
||||
|
||||
Reference in New Issue
Block a user