{
  "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": {
        "1": {
          "name": "entity.other.attribute-name.html"
        },
        "2": {
          "name": "punctuation.separator.key-value.html"
        },
        "3": {
          "name": "entity.other.attribute-name.html"
        },
        "4": {
          "name": "entity.other.attribute-name.html"
        },
        "5": {
          "name": "entity.other.attribute-name.html"
        },
        "6": {
          "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"
        },
        "2": {
          "name": "entity.name.tag.template.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.template.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.template.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.template.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.script.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.script.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.script.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
        },
        "2": {
          "name": "entity.name.tag.script.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.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"
            }
          ]
        }
      ]
    },
    {
      "begin": "(<)(docs)",
      "beginCaptures": {
        "1": {
          "name": "punctuation.definition.tag.begin.html"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        }
      },
      "end": "(</)(docs)(>)",
      "endCaptures": {
        "1": {
          "name": "punctuation.definition.tag.begin.html"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.html"
        }
      },
      "patterns": [
        {
          "include": "#tag-stuff"
        },
        {
          "begin": "(>)",
          "beginCaptures": {
            "1": {
              "name": "punctuation.definition.tag.end.html"
            }
          },
          "end": "(?=</docs>)",
          "contentName": "text.html.markdown",
          "patterns": [
            {
              "include": "text.html.markdown"
            }
          ]
        }
      ]
    },
    {
      "begin": "(<)(i18n)",
      "beginCaptures": {
        "1": {
          "name": "punctuation.definition.tag.begin.html"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        }
      },
      "end": "(</)(i18n)(>)",
      "endCaptures": {
        "1": {
          "name": "punctuation.definition.tag.begin.html"
        },
        "2": {
          "name": "entity.name.tag.style.html"
        },
        "3": {
          "name": "punctuation.definition.tag.end.html"
        }
      },
      "patterns": [
        {
          "include": "#tag-stuff"
        },
        {
          "begin": "(>)",
          "beginCaptures": {
            "1": {
              "name": "punctuation.definition.tag.end.html"
            }
          },
          "end": "(?=</i18n>)",
          "contentName": "source.json",
          "patterns": [
            {
              "include": "source.json"
            }
          ]
        }
      ]
    }
  ]
}