1+ <?php
2+
3+ namespace Encore \JsEditor ;
4+
5+ use Encore \Admin \Form \Field ;
6+
7+ class Editor extends Field
8+ {
9+ /**
10+ * {@inheritdoc}
11+ */
12+ protected $ view = 'laravel-admin-code-mirror::editor ' ;
13+
14+ /**
15+ * {@inheritdoc}
16+ */
17+ protected static $ css = [
18+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/lib/codemirror.css ' ,
19+ ];
20+
21+ /**
22+ * {@inheritdoc}
23+ */
24+ protected static $ js = [
25+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/lib/codemirror.js ' ,
26+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/addon/edit/matchbrackets.js ' ,
27+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/addon/comment/continuecomment.js ' ,
28+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/addon/comment/comment.js ' ,
29+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/mode/javascript/javascript.js ' ,
30+ ];
31+
32+ /**
33+ * Set editor height.
34+ *
35+ * @param int $height
36+ * @return $this
37+ */
38+ public function height ($ height = 10 )
39+ {
40+ return $ this ->addVariables (compact ('height ' ));
41+ }
42+
43+ /**
44+ * {@inheritdoc}
45+ */
46+ public function render ()
47+ {
48+ $ options = array_merge (
49+ [
50+ 'mode ' => 'javascript ' ,
51+ 'lineNumbers ' => true ,
52+ 'matchBrackets ' => true ,
53+ 'continueComments ' => true ,
54+ 'extraKeys ' => [
55+ 'Ctrl-Q ' => 'toggleComment ' ,
56+ ],
57+ ],
58+ JsEditor::config ('config ' , [])
59+ );
60+
61+ $ options = json_encode ($ options );
62+
63+ $ this ->script = <<<EOT
64+ CodeMirror.fromTextArea(document.getElementById(" {$ this ->id }"), $ options);
65+ EOT ;
66+
67+ return parent ::render ();
68+ }
69+ }
0 commit comments