;; Forked from https://github.com/nvim-treesitter/nvim-treesitter/blob/master/queries/jsx/highlights.scm
;; Licensed under the Apache License 2.0
(jsx_element
open_tag: (jsx_opening_element
[
"<"
">"
] @tag.delimiter
)
)
(jsx_element
close_tag: (jsx_closing_element
[
; crates.io skip
""
; non-crates.io skip
"<"
; non-crates.io skip
"/"
">"
] @tag.delimiter
)
)
(jsx_self_closing_element
[
"<"
; crates.io skip
"/>"
; non-crates.io skip
"/"
; non-crates.io skip
">"
] @tag.delimiter
)
(jsx_attribute
(property_identifier) @tag.attribute
)
(jsx_opening_element
name: (identifier) @tag
)
(jsx_closing_element
name: (identifier) @tag
)
(jsx_self_closing_element
name: (identifier) @tag
)
(jsx_opening_element
(
(identifier) @constructor
(#lua-match? @constructor "^[A-Z]")
)
)
; Handle the dot operator effectively -
(jsx_opening_element
; crates.io skip
(
(member_expression
(identifier) @tag
(property_identifier) @constructor
)
)
; non-crates.io skip
(
(nested_identifier
(identifier) @tag
(identifier) @constructor
)
)
)
(jsx_closing_element
(
(identifier) @constructor
(#lua-match? @constructor "^[A-Z]")
)
)
; Handle the dot operator effectively -
(jsx_closing_element
; crates.io skip
(
(member_expression
(identifier) @tag
(property_identifier) @constructor
)
)
; non-crates.io skip
(
(nested_identifier
(identifier) @tag
(identifier) @constructor
)
)
)
(jsx_self_closing_element
(
(identifier) @constructor
(#lua-match? @constructor "^[A-Z]")
)
)
; Handle the dot operator effectively -
(jsx_self_closing_element
; crates.io skip
(
(member_expression
(identifier) @tag
(property_identifier) @constructor
)
)
; non-crates.io skip
(
(nested_identifier
(identifier) @tag
(identifier) @constructor
)
)
)
(jsx_text) @none