|
2 | 2 | :component="$getFieldWrapperView()" |
3 | 3 | :field="$field" |
4 | 4 | > |
| 5 | + @php |
| 6 | + $cmId = preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()); |
| 7 | + @endphp |
5 | 8 | <div |
6 | 9 | x-data="{ state: $wire.{{ $applyStateBindingModifiers("\$entangle('{$getStatePath()}')") }} }" |
7 | 10 | style="position: relative; border-radius: 0.375rem; overflow-x: scroll;" |
|
10 | 13 | <div |
11 | 14 | wire:ignore |
12 | 15 | x-init=" |
13 | | - {{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }} = CodeMirror($refs.{{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}, { |
| 16 | + const config = { |
14 | 17 | mode: {name: 'javascript', json: true}, |
15 | 18 | lineNumbers: {{ json_encode($getHasLineNumbers()) }}, |
16 | 19 | lineWrapping: {{ json_encode($getHasLineWrapping()) }}, |
|
23 | 26 | echo "extraKeys: {'Ctrl-Q': function(cm) { cm.foldCode(cm.getCursor()); }},"; |
24 | 27 | } |
25 | 28 | @endphp |
26 | | - gutters: [ |
27 | | - {{ json_encode($getHasLineNumbers()) }} ? 'CodeMirror-linenumbers' : '', |
28 | | - {{ json_encode($getHasFoldingCode()) }} ? 'CodeMirror-foldgutter' : '', |
29 | | - ], |
| 29 | + gutters: {{ json_encode($getGutters()) }}, |
30 | 30 | foldOptions: { |
31 | 31 | widget: (from, to) => { |
32 | 32 | var count = undefined; |
33 | 33 |
|
34 | | - // Get open / close token |
35 | 34 | var startToken = '{', endToken = '}'; |
36 | | - var prevLine = {{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}.getLine(from.line); |
| 35 | + var prevLine = {{ $cmId }}.getLine(from.line); |
37 | 36 | if (prevLine.lastIndexOf('[') > prevLine.lastIndexOf('{')) { |
38 | 37 | startToken = '[', endToken = ']'; |
39 | 38 | } |
40 | 39 |
|
41 | | - // Get json content |
42 | | - var internal = {{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}.getRange(from, to); |
| 40 | + var internal = {{ $cmId }}.getRange(from, to); |
43 | 41 | var toParse = startToken + internal + endToken; |
44 | 42 |
|
45 | | - // Get key count |
46 | 43 | try { |
47 | 44 | var parsed = JSON.parse(toParse); |
48 | 45 | count = Object.keys(parsed).length; |
|
51 | 48 | return count ? `\u21A4${count}\u21A6` : '\u2194'; |
52 | 49 | } |
53 | 50 | } |
54 | | - }); |
| 51 | + }; |
| 52 | + |
| 53 | + {{ $cmId }} = window.CodeMirror($refs.{{ $cmId }}, config); |
55 | 54 |
|
56 | | - {{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}.setSize('100%', '100%'); |
57 | | - {{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}.setValue({{ json_encode(json_encode($getState(), JSON_PRETTY_PRINT), JSON_UNESCAPED_SLASHES) }} ?? '{}'); |
| 55 | + {{ $cmId }}.setSize('100%', '100%'); |
| 56 | + {{ $cmId }}.setValue({{ json_encode(json_encode($getState(), JSON_PRETTY_PRINT), JSON_UNESCAPED_SLASHES) }} ?? '{}'); |
58 | 57 |
|
59 | 58 | @php |
60 | 59 | if($getHasFoldedCode()) { |
61 | | - echo preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) . ".foldCode(CodeMirror.Pos(0, 0));"; |
| 60 | + echo "$cmId.foldCode(window.CodeMirror.Pos(0, 0));"; |
62 | 61 | } |
63 | 62 | @endphp |
64 | 63 |
|
65 | 64 | setTimeout(function() { |
66 | | - {{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}.refresh(); |
| 65 | + {{ $cmId }}.refresh(); |
67 | 66 | }, 1); |
68 | 67 |
|
69 | | - {{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}.on('change', function () { |
| 68 | + {{ $cmId }}.on('change', function () { |
70 | 69 | try { |
71 | | - state = JSON.parse({{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}.getValue()) |
| 70 | + state = JSON.parse({{ $cmId }}.getValue()) |
72 | 71 | } catch (e) { |
73 | | - state = {{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}.getValue(); |
| 72 | + state = {{ $cmId }}.getValue(); |
74 | 73 | } |
75 | 74 | }); |
76 | 75 | " |
77 | 76 | > |
78 | 77 | <div |
79 | 78 | wire:ignore |
80 | | - x-ref="{{ preg_replace('/[^a-zA-Z0-9_]/', '_', $getId()) }}" |
| 79 | + x-ref="{{ $cmId }}" |
81 | 80 | ></div> |
82 | 81 | </div> |
83 | 82 | </div> |
|
0 commit comments