{
    "scopeName": "source.vue", 
    "fileTypes": [
        "vue"
    ], 
    "uuid": "5512c10d-4cc5-434c-b8fc-53b912f55ab3", 
    "name": "Vue Component", 
    "repository": {
        "tag-stuff": {
            "patterns": [
                {
                    "include": "#vue-directives"
                }, 
                {
                    "include": "#tag-id-attribute"
                }, 
                {
                    "include": "#tag-generic-attribute"
                }, 
                {
                    "include": "#string-double-quoted"
                }, 
                {
                    "include": "#string-single-quoted"
                }
            ]
        }, 
        "vue-directives": {
            "end": "(?<='|\")", 
            "name": "meta.directive.vue", 
            "captures": {
                "5": {
                    "name": "entity.other.attribute-name.html"
                }, 
                "4": {
                    "name": "entity.other.attribute-name.html"
                }, 
                "6": {
                    "name": "punctuation.separator.key-value.html"
                }, 
                "1": {
                    "name": "entity.other.attribute-name.html"
                }, 
                "3": {
                    "name": "entity.other.attribute-name.html"
                }, 
                "2": {
                    "name": "punctuation.separator.key-value.html"
                }
            }, 
            "begin": "(?:\\b(v-)|(:|@))([a-zA-Z\\-]+)(?:\\:([a-zA-Z\\-]+))?(?:\\.([a-zA-Z\\-]+))*\\s*(=)", 
            "patterns": [
                {
                    "beginCaptures": {
                        "0": {
                            "name": "punctuation.definition.string.begin.html"
                        }
                    }, 
                    "endCaptures": {
                        "0": {
                            "name": "punctuation.definition.string.end.html"
                        }
                    }, 
                    "end": "\"", 
                    "name": "source.directive.vue", 
                    "patterns": [
                        {
                            "include": "source.js"
                        }
                    ], 
                    "begin": "\""
                }, 
                {
                    "beginCaptures": {
                        "0": {
                            "name": "punctuation.definition.string.begin.html"
                        }
                    }, 
                    "endCaptures": {
                        "0": {
                            "name": "punctuation.definition.string.end.html"
                        }
                    }, 
                    "end": "'", 
                    "name": "source.directive.vue", 
                    "patterns": [
                        {
                            "include": "source.js"
                        }
                    ], 
                    "begin": "'"
                }
            ]
        }, 
        "entities": {
            "patterns": [
                {
                    "name": "constant.character.entity.html", 
                    "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)", 
                    "captures": {
                        "1": {
                            "name": "punctuation.definition.entity.html"
                        }, 
                        "3": {
                            "name": "punctuation.definition.entity.html"
                        }
                    }
                }, 
                {
                    "name": "invalid.illegal.bad-ampersand.html", 
                    "match": "&"
                }
            ]
        }, 
        "vue-interpolations": {
            "patterns": [
                {
                    "beginCaptures": {
                        "0": {
                            "name": "punctuation.definition.generic.begin.html"
                        }
                    }, 
                    "endCaptures": {
                        "0": {
                            "name": "punctuation.definition.generic.end.html"
                        }
                    }, 
                    "end": "\\}\\}\\}?", 
                    "name": "expression.embbeded.vue", 
                    "patterns": [
                        {
                            "include": "source.js"
                        }
                    ], 
                    "begin": "\\{\\{\\{?"
                }
            ]
        }, 
        "string-single-quoted": {
            "beginCaptures": {
                "0": {
                    "name": "punctuation.definition.string.begin.html"
                }
            }, 
            "endCaptures": {
                "0": {
                    "name": "punctuation.definition.string.end.html"
                }
            }, 
            "end": "'", 
            "name": "string.quoted.single.html", 
            "patterns": [
                {
                    "include": "#vue-interpolations"
                }, 
                {
                    "include": "#entities"
                }
            ], 
            "begin": "'"
        }, 
        "tag-id-attribute": {
            "end": "(?<='|\")", 
            "name": "meta.attribute-with-value.id.html", 
            "captures": {
                "1": {
                    "name": "entity.other.attribute-name.id.html"
                }, 
                "2": {
                    "name": "punctuation.separator.key-value.html"
                }
            }, 
            "begin": "\\b(id)\\b\\s*(=)", 
            "patterns": [
                {
                    "beginCaptures": {
                        "0": {
                            "name": "punctuation.definition.string.begin.html"
                        }
                    }, 
                    "contentName": "meta.toc-list.id.html", 
                    "end": "\"", 
                    "name": "string.quoted.double.html", 
                    "patterns": [
                        {
                            "include": "#vue-interpolations"
                        }, 
                        {
                            "include": "#entities"
                        }
                    ], 
                    "begin": "\"", 
                    "endCaptures": {
                        "0": {
                            "name": "punctuation.definition.string.end.html"
                        }
                    }
                }, 
                {
                    "beginCaptures": {
                        "0": {
                            "name": "punctuation.definition.string.begin.html"
                        }
                    }, 
                    "contentName": "meta.toc-list.id.html", 
                    "end": "'", 
                    "name": "string.quoted.single.html", 
                    "patterns": [
                        {
                            "include": "#vue-interpolations"
                        }, 
                        {
                            "include": "#entities"
                        }
                    ], 
                    "begin": "'", 
                    "endCaptures": {
                        "0": {
                            "name": "punctuation.definition.string.end.html"
                        }
                    }
                }
            ]
        }, 
        "string-double-quoted": {
            "beginCaptures": {
                "0": {
                    "name": "punctuation.definition.string.begin.html"
                }
            }, 
            "endCaptures": {
                "0": {
                    "name": "punctuation.definition.string.end.html"
                }
            }, 
            "end": "\"", 
            "name": "string.quoted.double.html", 
            "patterns": [
                {
                    "include": "#vue-interpolations"
                }, 
                {
                    "include": "#entities"
                }
            ], 
            "begin": "\""
        }, 
        "tag-generic-attribute": {
            "name": "entity.other.attribute-name.html", 
            "match": "\\b([a-zA-Z\\-:]+)"
        }
    }, 
    "patterns": [
        {
            "end": "--\\s*>", 
            "name": "comment.block.html", 
            "captures": {
                "0": {
                    "name": "punctuation.definition.comment.html"
                }
            }, 
            "begin": "<!--", 
            "patterns": [
                {
                    "name": "invalid.illegal.bad-comments-or-CDATA.html", 
                    "match": "--"
                }
            ]
        }, 
        {
            "end": "(/>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.template.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.end.html"
                }
            }, 
            "begin": "(<)(template)\\b(?=[^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }
            ]
        }, 
        {
            "end": "(</)(template)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.template.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.template.html"
                }
            }, 
            "begin": "(<)(template)(?=[^>]*>[^/>]*</template>)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</template>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "begin": "(>)"
                }
            ]
        }, 
        {
            "end": "(</)(template)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.template.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.template.html"
                }
            }, 
            "begin": "(<)(template)\\b(?=[^>]*lang=('jade'|\"jade\"|'pug'|\"pug\"))(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</template>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "text.jade", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "text.jade"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(</)(template)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.template.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.template.html"
                }
            }, 
            "begin": "(<)(template)\\b(?=[^>]*lang=('slm'|\"slm\"))(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</template>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "text.jade.slm", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "text.jade.slm"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(</)(template)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.template.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.template.html"
                }
            }, 
            "begin": "(<)(template)(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</template>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "text.html.vue-html", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "text.html.vue-html"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(/>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.end.html"
                }
            }, 
            "begin": "(<)(style)\\b(?=[^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }
            ]
        }, 
        {
            "end": "(</)(style)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "begin": "(<)(style)(?=[^>]*>[^/>]*</style>)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</style>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "begin": "(>)"
                }
            ]
        }, 
        {
            "end": "(</)(style)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "begin": "(<)(style)\\b(?=[^>]*lang=('sass'|\"sass\"))(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</style>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "source.sass", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "source.sass"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(</)(style)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "begin": "(<)(style)\\b(?=[^>]*lang=('scss'|\"scss\"))(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</style>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "source.css.scss", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "source.css.scss"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(</)(style)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "begin": "(<)(style)\\b(?=[^>]*lang=('less'|\"less\"))(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</style>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "source.css.less", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "source.css.less"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(</)(style)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "begin": "(<)(style)\\b(?=[^>]*lang=('stylus'|\"stylus\"))(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</style>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "source.stylus", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "source.stylus"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(</)(style)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "begin": "(<)(style)\\b(?=[^>]*lang=('postcss'|\"postcss\"))(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</style>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "source.css.postcss", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "source.css.postcss"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(</)(style)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.style.html"
                }
            }, 
            "begin": "(<)(style)(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</style>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "source.css", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "source.css"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(/>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.script.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.end.html"
                }
            }, 
            "begin": "(<)(script)\\b(?=[^>]*/>$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }
            ]
        }, 
        {
            "end": "(</)(script)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.script.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.script.html"
                }
            }, 
            "begin": "(<)(script)(?=[^>]*>[^/>]*</script>)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</script>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "begin": "(>)"
                }
            ]
        }, 
        {
            "end": "(</)(script)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.script.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.script.html"
                }
            }, 
            "begin": "(<)(script)\\b(?=[^>]*lang=('ts'|\"ts\"))(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</script>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "source.ts", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "source.ts"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(</)(script)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.script.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.script.html"
                }
            }, 
            "begin": "(<)(script)\\b(?=[^>]*lang=('coffee'|\"coffee\"))(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</script>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "source.coffee", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "source.coffee"
                        }
                    ]
                }
            ]
        }, 
        {
            "end": "(</)(script)(>)", 
            "beginCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "2": {
                    "name": "entity.name.tag.script.html"
                }
            }, 
            "endCaptures": {
                "1": {
                    "name": "punctuation.definition.tag.begin.html"
                }, 
                "3": {
                    "name": "punctuation.definition.tag.end.html"
                }, 
                "2": {
                    "name": "entity.name.tag.script.html"
                }
            }, 
            "begin": "(<)(script)(?![^/>]*/>\\s*$)", 
            "patterns": [
                {
                    "include": "#tag-stuff"
                }, 
                {
                    "end": "(?=</script>)", 
                    "beginCaptures": {
                        "1": {
                            "name": "punctuation.definition.tag.end.html"
                        }
                    }, 
                    "contentName": "source.js", 
                    "begin": "(>)", 
                    "patterns": [
                        {
                            "include": "source.js"
                        }
                    ]
                }
            ]
        }
    ]
}