aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/blade/injections.scm
blob: e8a0d708dd1c3ce139bc5cb05cde02588e530d7e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
; inherits: html

((php_only) @injection.content
  (#set! injection.language "php_only"))

((parameter) @injection.content
  (#set! injection.include-children)
  (#set! injection.language "php_only"))

((text) @injection.content
  (#has-ancestor? @injection.content "envoy")
  (#set! injection.combined)
  (#set! injection.language bash))

; Livewire attributes
; <div wire:click="baz++">
(attribute
  (attribute_name) @_attr
  (#any-of? @_attr "wire:model" "wire:click" "wire:stream" "wire:text" "wire:show")
  (quoted_attribute_value
    (attribute_value) @injection.content)
  (#set! injection.language "javascript"))

; AlpineJS attributes
; <div x-data="{ foo: 'bar' }" x-init="baz()">
(attribute
  (attribute_name) @_attr
  (#lua-match? @_attr "^x%-%l+")
  (#not-any-of? @_attr "x-teleport" "x-ref" "x-transition")
  (quoted_attribute_value
    (attribute_value) @injection.content)
  (#set! injection.language "javascript"))

(attribute
  (attribute_name) @_attr
  (#lua-match? @_attr "^[:@]%l+")
  (quoted_attribute_value
    (attribute_value) @injection.content)
  (#set! injection.language "javascript"))

; Blade escaped JS attributes
; <x-foo ::bar="baz" />
(element
  (_
    (tag_name) @_tag
    (#lua-match? @_tag "^x%-%l+")
    (attribute
      (attribute_name) @_attr
      (#lua-match? @_attr "^::%l+")
      (quoted_attribute_value
        (attribute_value) @injection.content)
      (#set! injection.language "javascript"))))

; Blade PHP attributes
; <x-foo :bar="$baz" />
(element
  (_
    (tag_name) @_tag
    (#lua-match? @_tag "^x%-%l+")
    (attribute
      (attribute_name) @_attr
      (#lua-match? @_attr "^:%l+")
      (quoted_attribute_value
        (attribute_value) @injection.content)
      (#set! injection.language "php_only"))))