marty 2.4.7 → 2.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile.dummy +8 -5
  3. data/Gemfile.lock +1 -1
  4. data/README.md +8 -0
  5. data/app/assets/javascripts/marty/application.js +1 -0
  6. data/app/assets/javascripts/marty/codemirror/codemirror.js +9730 -0
  7. data/app/{components/marty/script_form/client → assets/javascripts/marty/codemirror}/mode/delorean/delorean.js +0 -0
  8. data/app/assets/javascripts/marty/codemirror/mode/javascript/javascript.js +900 -0
  9. data/app/assets/javascripts/marty/codemirror/mode/python/python.js +399 -0
  10. data/app/{components/marty/script_form/client → assets/javascripts/marty/codemirror}/mode/ruby/ruby.js +135 -34
  11. data/app/{components/marty/script_form/client/Ext.ux.form.field.CodeMirror.js → assets/javascripts/marty/extjs/extensions/marty.js} +87 -6
  12. data/app/assets/stylesheets/marty/application.css +1 -13
  13. data/app/assets/stylesheets/marty/codemirror/codemirror.css +346 -0
  14. data/app/{components/marty/script_form/client → assets/stylesheets/marty/codemirror}/delorean.css +0 -0
  15. data/app/components/marty/auth_app/client/auth_app.js +82 -80
  16. data/app/components/marty/data_grid_view.rb +1 -54
  17. data/app/components/marty/data_grid_view/client/data_grid_view.js +49 -0
  18. data/app/components/marty/form.rb +1 -5
  19. data/app/components/marty/form/client/form.js +5 -0
  20. data/app/components/marty/grid.rb +1 -146
  21. data/app/components/marty/grid/client/grid.js +146 -0
  22. data/app/components/marty/import_view.rb +1 -32
  23. data/app/components/marty/import_view/client/import_view.js +32 -0
  24. data/app/components/marty/live_search_grid_panel.rb +1 -21
  25. data/app/components/marty/live_search_grid_panel/client/live_search_grid_panel.js +27 -0
  26. data/app/components/marty/main_auth_app.rb +4 -145
  27. data/app/components/marty/main_auth_app/client/main_auth_app.js +124 -0
  28. data/app/components/marty/mcfly_grid_panel.rb +1 -17
  29. data/app/components/marty/mcfly_grid_panel/client/mcfly_grid_panel.js +37 -0
  30. data/app/components/marty/new_posting_form.rb +1 -6
  31. data/app/components/marty/new_posting_form/client/new_posting_form.js +6 -0
  32. data/app/components/marty/panel.rb +1 -5
  33. data/app/components/marty/panel/client/panel.js +5 -0
  34. data/app/components/marty/posting_grid.rb +4 -55
  35. data/app/components/marty/posting_grid/client/posting_grid.js +50 -0
  36. data/app/components/marty/promise_view.rb +2 -75
  37. data/app/components/marty/promise_view/client/promise_view.css +12 -9
  38. data/app/components/marty/promise_view/client/promise_view.js +57 -0
  39. data/app/components/marty/report_form.rb +3 -69
  40. data/app/components/marty/report_form/client/report_form.js +78 -0
  41. data/app/components/marty/report_select.rb +1 -45
  42. data/app/components/marty/report_select/client/report_select.js +50 -0
  43. data/app/components/marty/reporting.rb +1 -8
  44. data/app/components/marty/reporting/client/reporting.js +8 -0
  45. data/app/components/marty/script_form.rb +2 -63
  46. data/app/components/marty/script_form/client/script_form.js +44 -0
  47. data/app/components/marty/script_tester.rb +1 -7
  48. data/app/components/marty/script_tester/client/script_tester.js +7 -0
  49. data/app/components/marty/scripting.rb +1 -55
  50. data/app/components/marty/scripting/client/scripting.js +62 -0
  51. data/app/components/marty/simple_app/client/simple_app.js +21 -13
  52. data/app/models/marty/promise.rb +22 -1
  53. data/app/views/layouts/marty/application.html.erb +8 -6
  54. data/docker-compose.dummy.yml +2 -0
  55. data/lib/marty/monkey.rb +0 -16
  56. data/lib/marty/version.rb +1 -1
  57. data/spec/dummy/config/initializers/assets.rb +1 -0
  58. data/spec/features/reporting_spec.rb +1 -0
  59. data/spec/features/scripting_spec.rb +4 -4
  60. data/spec/spec_helper.rb +1 -0
  61. data/spec/support/chromedriver.rb +5 -1
  62. data/spec/support/shared_connection_db_helpers.rb +42 -2
  63. metadata +29 -168
  64. data/app/assets/images/marty/.gitkeep +0 -0
  65. data/app/components/marty/mcfly_grid_panel/client/dup_in_form.js +0 -20
  66. data/app/components/marty/script_form/client/codemirror.css +0 -172
  67. data/app/components/marty/script_form/client/codemirror.js +0 -3130
  68. data/app/components/marty/script_form/client/mode/clike/clike.js +0 -284
  69. data/app/components/marty/script_form/client/mode/clike/index.html +0 -102
  70. data/app/components/marty/script_form/client/mode/clike/scala.html +0 -766
  71. data/app/components/marty/script_form/client/mode/clojure/clojure.js +0 -206
  72. data/app/components/marty/script_form/client/mode/clojure/index.html +0 -67
  73. data/app/components/marty/script_form/client/mode/coffeescript/LICENSE +0 -22
  74. data/app/components/marty/script_form/client/mode/coffeescript/coffeescript.js +0 -346
  75. data/app/components/marty/script_form/client/mode/coffeescript/index.html +0 -728
  76. data/app/components/marty/script_form/client/mode/commonlisp/commonlisp.js +0 -101
  77. data/app/components/marty/script_form/client/mode/commonlisp/index.html +0 -165
  78. data/app/components/marty/script_form/client/mode/css/css.js +0 -448
  79. data/app/components/marty/script_form/client/mode/css/index.html +0 -58
  80. data/app/components/marty/script_form/client/mode/css/test.js +0 -501
  81. data/app/components/marty/script_form/client/mode/diff/diff.js +0 -32
  82. data/app/components/marty/script_form/client/mode/diff/index.html +0 -105
  83. data/app/components/marty/script_form/client/mode/ecl/ecl.js +0 -203
  84. data/app/components/marty/script_form/client/mode/ecl/index.html +0 -42
  85. data/app/components/marty/script_form/client/mode/erlang/erlang.js +0 -463
  86. data/app/components/marty/script_form/client/mode/erlang/index.html +0 -63
  87. data/app/components/marty/script_form/client/mode/gfm/gfm.js +0 -150
  88. data/app/components/marty/script_form/client/mode/gfm/index.html +0 -48
  89. data/app/components/marty/script_form/client/mode/go/go.js +0 -170
  90. data/app/components/marty/script_form/client/mode/go/index.html +0 -73
  91. data/app/components/marty/script_form/client/mode/groovy/groovy.js +0 -210
  92. data/app/components/marty/script_form/client/mode/groovy/index.html +0 -72
  93. data/app/components/marty/script_form/client/mode/haskell/haskell.js +0 -242
  94. data/app/components/marty/script_form/client/mode/haskell/index.html +0 -61
  95. data/app/components/marty/script_form/client/mode/haxe/haxe.js +0 -429
  96. data/app/components/marty/script_form/client/mode/haxe/index.html +0 -91
  97. data/app/components/marty/script_form/client/mode/htmlembedded/htmlembedded.js +0 -72
  98. data/app/components/marty/script_form/client/mode/htmlembedded/index.html +0 -50
  99. data/app/components/marty/script_form/client/mode/htmlmixed/htmlmixed.js +0 -84
  100. data/app/components/marty/script_form/client/mode/htmlmixed/index.html +0 -52
  101. data/app/components/marty/script_form/client/mode/javascript/index.html +0 -78
  102. data/app/components/marty/script_form/client/mode/javascript/javascript.js +0 -361
  103. data/app/components/marty/script_form/client/mode/jinja2/index.html +0 -38
  104. data/app/components/marty/script_form/client/mode/jinja2/jinja2.js +0 -42
  105. data/app/components/marty/script_form/client/mode/less/index.html +0 -740
  106. data/app/components/marty/script_form/client/mode/less/less.js +0 -266
  107. data/app/components/marty/script_form/client/mode/lua/index.html +0 -73
  108. data/app/components/marty/script_form/client/mode/lua/lua.js +0 -140
  109. data/app/components/marty/script_form/client/mode/markdown/index.html +0 -343
  110. data/app/components/marty/script_form/client/mode/markdown/markdown.js +0 -382
  111. data/app/components/marty/script_form/client/mode/markdown/test.js +0 -1084
  112. data/app/components/marty/script_form/client/mode/mysql/index.html +0 -42
  113. data/app/components/marty/script_form/client/mode/mysql/mysql.js +0 -186
  114. data/app/components/marty/script_form/client/mode/ntriples/index.html +0 -33
  115. data/app/components/marty/script_form/client/mode/ntriples/ntriples.js +0 -172
  116. data/app/components/marty/script_form/client/mode/ocaml/index.html +0 -130
  117. data/app/components/marty/script_form/client/mode/ocaml/ocaml.js +0 -114
  118. data/app/components/marty/script_form/client/mode/pascal/LICENSE +0 -7
  119. data/app/components/marty/script_form/client/mode/pascal/index.html +0 -49
  120. data/app/components/marty/script_form/client/mode/pascal/pascal.js +0 -94
  121. data/app/components/marty/script_form/client/mode/perl/LICENSE +0 -19
  122. data/app/components/marty/script_form/client/mode/perl/index.html +0 -63
  123. data/app/components/marty/script_form/client/mode/perl/perl.js +0 -816
  124. data/app/components/marty/script_form/client/mode/php/index.html +0 -49
  125. data/app/components/marty/script_form/client/mode/php/php.js +0 -148
  126. data/app/components/marty/script_form/client/mode/pig/index.html +0 -43
  127. data/app/components/marty/script_form/client/mode/pig/pig.js +0 -172
  128. data/app/components/marty/script_form/client/mode/plsql/index.html +0 -63
  129. data/app/components/marty/script_form/client/mode/plsql/plsql.js +0 -217
  130. data/app/components/marty/script_form/client/mode/properties/index.html +0 -41
  131. data/app/components/marty/script_form/client/mode/properties/properties.js +0 -63
  132. data/app/components/marty/script_form/client/mode/python/LICENSE.txt +0 -21
  133. data/app/components/marty/script_form/client/mode/python/index.html +0 -123
  134. data/app/components/marty/script_form/client/mode/python/python.js +0 -338
  135. data/app/components/marty/script_form/client/mode/r/LICENSE +0 -24
  136. data/app/components/marty/script_form/client/mode/r/index.html +0 -74
  137. data/app/components/marty/script_form/client/mode/r/r.js +0 -141
  138. data/app/components/marty/script_form/client/mode/rpm/changes/changes.js +0 -19
  139. data/app/components/marty/script_form/client/mode/rpm/changes/index.html +0 -54
  140. data/app/components/marty/script_form/client/mode/rpm/spec/index.html +0 -100
  141. data/app/components/marty/script_form/client/mode/rpm/spec/spec.css +0 -5
  142. data/app/components/marty/script_form/client/mode/rpm/spec/spec.js +0 -66
  143. data/app/components/marty/script_form/client/mode/rst/index.html +0 -526
  144. data/app/components/marty/script_form/client/mode/rst/rst.js +0 -326
  145. data/app/components/marty/script_form/client/mode/ruby/LICENSE +0 -24
  146. data/app/components/marty/script_form/client/mode/ruby/index.html +0 -172
  147. data/app/components/marty/script_form/client/mode/rust/index.html +0 -49
  148. data/app/components/marty/script_form/client/mode/rust/rust.js +0 -432
  149. data/app/components/marty/script_form/client/mode/scheme/index.html +0 -65
  150. data/app/components/marty/script_form/client/mode/scheme/scheme.js +0 -230
  151. data/app/components/marty/script_form/client/mode/shell/index.html +0 -50
  152. data/app/components/marty/script_form/client/mode/shell/shell.js +0 -118
  153. data/app/components/marty/script_form/client/mode/sieve/LICENSE +0 -23
  154. data/app/components/marty/script_form/client/mode/sieve/index.html +0 -81
  155. data/app/components/marty/script_form/client/mode/sieve/sieve.js +0 -156
  156. data/app/components/marty/script_form/client/mode/smalltalk/index.html +0 -56
  157. data/app/components/marty/script_form/client/mode/smalltalk/smalltalk.js +0 -139
  158. data/app/components/marty/script_form/client/mode/smarty/index.html +0 -83
  159. data/app/components/marty/script_form/client/mode/smarty/smarty.js +0 -148
  160. data/app/components/marty/script_form/client/mode/sparql/index.html +0 -41
  161. data/app/components/marty/script_form/client/mode/sparql/sparql.js +0 -143
  162. data/app/components/marty/script_form/client/mode/stex/index.html +0 -98
  163. data/app/components/marty/script_form/client/mode/stex/stex.js +0 -182
  164. data/app/components/marty/script_form/client/mode/stex/test.js +0 -343
  165. data/app/components/marty/script_form/client/mode/tiddlywiki/index.html +0 -141
  166. data/app/components/marty/script_form/client/mode/tiddlywiki/tiddlywiki.css +0 -14
  167. data/app/components/marty/script_form/client/mode/tiddlywiki/tiddlywiki.js +0 -384
  168. data/app/components/marty/script_form/client/mode/tiki/index.html +0 -83
  169. data/app/components/marty/script_form/client/mode/tiki/tiki.css +0 -26
  170. data/app/components/marty/script_form/client/mode/tiki/tiki.js +0 -309
  171. data/app/components/marty/script_form/client/mode/vb/LICENSE.txt +0 -21
  172. data/app/components/marty/script_form/client/mode/vb/index.html +0 -89
  173. data/app/components/marty/script_form/client/mode/vb/vb.js +0 -260
  174. data/app/components/marty/script_form/client/mode/vbscript/index.html +0 -43
  175. data/app/components/marty/script_form/client/mode/vbscript/vbscript.js +0 -26
  176. data/app/components/marty/script_form/client/mode/velocity/index.html +0 -104
  177. data/app/components/marty/script_form/client/mode/velocity/velocity.js +0 -146
  178. data/app/components/marty/script_form/client/mode/verilog/index.html +0 -211
  179. data/app/components/marty/script_form/client/mode/verilog/verilog.js +0 -194
  180. data/app/components/marty/script_form/client/mode/xml/index.html +0 -45
  181. data/app/components/marty/script_form/client/mode/xml/xml.js +0 -318
  182. data/app/components/marty/script_form/client/mode/xquery/LICENSE +0 -20
  183. data/app/components/marty/script_form/client/mode/xquery/index.html +0 -223
  184. data/app/components/marty/script_form/client/mode/xquery/test/index.html +0 -27
  185. data/app/components/marty/script_form/client/mode/xquery/test/testBase.js +0 -42
  186. data/app/components/marty/script_form/client/mode/xquery/test/testEmptySequenceKeyword.js +0 -16
  187. data/app/components/marty/script_form/client/mode/xquery/test/testMultiAttr.js +0 -16
  188. data/app/components/marty/script_form/client/mode/xquery/test/testNamespaces.js +0 -91
  189. data/app/components/marty/script_form/client/mode/xquery/test/testProcessingInstructions.js +0 -16
  190. data/app/components/marty/script_form/client/mode/xquery/test/testQuotes.js +0 -19
  191. data/app/components/marty/script_form/client/mode/xquery/xquery.js +0 -451
  192. data/app/components/marty/script_form/client/mode/yaml/index.html +0 -68
  193. data/app/components/marty/script_form/client/mode/yaml/yaml.js +0 -95
  194. data/app/components/marty/script_form/client/theme/ambiance.css +0 -81
  195. data/app/components/marty/script_form/client/theme/blackboard.css +0 -25
  196. data/app/components/marty/script_form/client/theme/cobalt.css +0 -18
  197. data/app/components/marty/script_form/client/theme/eclipse.css +0 -25
  198. data/app/components/marty/script_form/client/theme/elegant.css +0 -10
  199. data/app/components/marty/script_form/client/theme/erlang-dark.css +0 -21
  200. data/app/components/marty/script_form/client/theme/lesser-dark.css +0 -44
  201. data/app/components/marty/script_form/client/theme/monokai.css +0 -28
  202. data/app/components/marty/script_form/client/theme/neat.css +0 -9
  203. data/app/components/marty/script_form/client/theme/night.css +0 -21
  204. data/app/components/marty/script_form/client/theme/rubyblue.css +0 -21
  205. data/app/components/marty/script_form/client/theme/vibrant-ink.css +0 -27
  206. data/app/components/marty/script_form/client/theme/xq-dark.css +0 -46
  207. data/app/components/marty/script_form/client/util/closetag.js +0 -164
  208. data/app/components/marty/script_form/client/util/dialog.css +0 -27
  209. data/app/components/marty/script_form/client/util/dialog.js +0 -70
  210. data/app/components/marty/script_form/client/util/foldcode.js +0 -196
  211. data/app/components/marty/script_form/client/util/formatting.js +0 -193
  212. data/app/components/marty/script_form/client/util/javascript-hint.js +0 -134
  213. data/app/components/marty/script_form/client/util/loadmode.js +0 -51
  214. data/app/components/marty/script_form/client/util/match-highlighter.js +0 -44
  215. data/app/components/marty/script_form/client/util/multiplex.js +0 -77
  216. data/app/components/marty/script_form/client/util/overlay.js +0 -54
  217. data/app/components/marty/script_form/client/util/pig-hint.js +0 -123
  218. data/app/components/marty/script_form/client/util/runmode-standalone.js +0 -90
  219. data/app/components/marty/script_form/client/util/runmode.js +0 -53
  220. data/app/components/marty/script_form/client/util/search.js +0 -118
  221. data/app/components/marty/script_form/client/util/searchcursor.js +0 -119
  222. data/app/components/marty/script_form/client/util/simple-hint.css +0 -16
  223. data/app/components/marty/script_form/client/util/simple-hint.js +0 -97
  224. data/app/components/marty/script_form/client/util/xml-hint.js +0 -137
  225. data/lib/marty/javascript/grid_view_in_form.js +0 -81
@@ -1,3 +1,85 @@
1
+ Ext.define('Netzke.Grid.EventHandlers', {
2
+ override: 'Netzke.Grid.EventHandlers',
3
+ netzkeHandleItemdblclick: function(view, record) {
4
+ if (this.editsInline) return; // inline editing is handled elsewhere
5
+
6
+ // MONKEY: add view in form capability
7
+ var has_perm = (this.permissions || {});
8
+ if (has_perm.read !== false && !has_perm.update) {
9
+ this.doViewInForm(record);
10
+ } else if (has_perm.update !== false) {
11
+ this.doEditInForm(record);
12
+ }
13
+ },
14
+
15
+ netzkeReloadStore: function(opts={}) {
16
+ var store = this.getStore();
17
+
18
+ // MONKEY: add beforenetzkereload and netzkerevent on store
19
+ store.fireEvent('beforenetzkereload');
20
+ var callback = opts.callback;
21
+ opts.callback = function() {
22
+ if (callback) { callback() }
23
+ store.fireEvent('netzkereload');
24
+ }
25
+
26
+ // NETZKE'S HACK to work around buffered store's buggy reload()
27
+ if (!store.lastRequestStart) {
28
+ store.load(opts);
29
+ } else store.reload(opts);
30
+ },
31
+ });
32
+
33
+ Ext.define('Ext.toolbar.Paging', {
34
+ override: 'Ext.toolbar.Paging',
35
+
36
+ handleRefresh: Ext.emptyFn,
37
+
38
+ doRefresh: function() {
39
+ var me = this,
40
+ current = me.store.currentPage;
41
+
42
+ // MONKEY: add netzkerefresh to ExtJS paging toolbar refresh
43
+ // as beforechange is too generic
44
+ me.store.fireEvent('netzkerefresh', me);
45
+
46
+ if (me.fireEvent('beforechange', me, current) !== false) {
47
+ me.store.loadPage(current);
48
+
49
+ me.handleRefresh();
50
+ }
51
+ }
52
+ });
53
+
54
+ Ext.define('Netzke.Grid.Columns', {
55
+ override: 'Netzke.Grid.Columns',
56
+ netzkeNormalizeAssociationRenderer: function(c) {
57
+ var passedRenderer = c.renderer, // renderer we got from netzkeNormalizeRenderer
58
+ assocValue;
59
+ c.scope = this;
60
+ c.renderer = function(value, a, r, ri, ci, store, view){
61
+ var column = view.headerCt.items.getAt(ci),
62
+ editor = column.getEditor && column.getEditor(),
63
+
64
+ /* MONKEY: use findRecordByValue instead of findRecord to remedy inline editing temporarily
65
+ changing N/A columns to the recently changed value.
66
+ */
67
+ recordFromStore = editor && editor.isXType('combobox') && editor.findRecordByValue(value),
68
+ renderedValue;
69
+
70
+ if (recordFromStore) {
71
+ renderedValue = recordFromStore.get('text');
72
+ } else if ((assocValue = (r.get('association_values') || {})[c.name]) !== undefined) {
73
+ renderedValue = (assocValue == undefined) ? c.emptyText : assocValue;
74
+ } else {
75
+ renderedValue = value;
76
+ }
77
+
78
+ return passedRenderer ? passedRenderer.call(this, renderedValue) : renderedValue;
79
+ };
80
+ },
81
+ });
82
+
1
83
  /*
2
84
 
3
85
  This is a modified version of the ExtJS Codemirror component from
@@ -298,8 +380,8 @@ Ext.define('Ext.ux.form.field.CodeMirror', {
298
380
  * @private override
299
381
  */
300
382
  initEditor : function(){
301
- var me = this,
302
- mode = "text/x-delorean";
383
+ var me = this;
384
+ var mode = me.mode;
303
385
 
304
386
  // if no mode is loaded we could get an error like "Object #<Object> has no method 'startState'"
305
387
  // search mime to find script dependencies
@@ -315,7 +397,7 @@ Ext.define('Ext.ux.form.field.CodeMirror', {
315
397
  matchBrackets: me.enableMatchBrackets,
316
398
  electricChars: me.enableElectricChars,
317
399
  autoClearEmptyLines:true,
318
- value: me.rawValue,
400
+ value: me.rawValue || "",
319
401
  indentUnit: me.indentUnit,
320
402
  smartIndent: me.enableSmartIndent,
321
403
  indentWithTabs: me.indentWithTabs,
@@ -450,7 +532,7 @@ Ext.define('Ext.ux.form.field.CodeMirror', {
450
532
 
451
533
  modes: [
452
534
  {
453
- mime: ["text/x-delorean"],
535
+ mime: CodeMirror.mimeModes,
454
536
  dependencies: []
455
537
  },
456
538
  ],
@@ -559,7 +641,7 @@ Ext.define('Ext.ux.form.field.CodeMirror', {
559
641
  */
560
642
  getMimeMode: function(mime){
561
643
  var mode = null;
562
- var mimes = CodeMirror.listMIMEs();
644
+ var mimes = CodeMirror.mimeModes;
563
645
  for(var i=0; i<mimes.length; i++){
564
646
  if(mimes[i].mime == mime){
565
647
  mode = mimes[i].mode;
@@ -694,5 +776,4 @@ Ext.define('Ext.ux.form.field.CodeMirror', {
694
776
  }
695
777
  me.callParent();
696
778
  },
697
-
698
779
  });
@@ -1,13 +1 @@
1
- /*
2
- * This is a manifest file that'll be compiled into application.css, which will include all the files
3
- * listed below.
4
- *
5
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
- * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
- *
8
- * You're free to add application-wide styles to this file and they'll appear at the top of the
9
- * compiled file, but it's generally better to create a new file per style scope.
10
- *
11
- *= require_self
12
- *= require_tree .
13
- */
1
+ //= require_tree .
@@ -0,0 +1,346 @@
1
+ /* BASICS */
2
+
3
+ .CodeMirror {
4
+ /* Set height, width, borders, and global font properties here */
5
+ font-family: monospace;
6
+ height: 300px;
7
+ color: black;
8
+ direction: ltr;
9
+ }
10
+
11
+ /* PADDING */
12
+
13
+ .CodeMirror-lines {
14
+ padding: 4px 0; /* Vertical padding around content */
15
+ }
16
+ .CodeMirror pre {
17
+ padding: 0 4px; /* Horizontal padding of content */
18
+ }
19
+
20
+ .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
21
+ background-color: white; /* The little square between H and V scrollbars */
22
+ }
23
+
24
+ /* GUTTER */
25
+
26
+ .CodeMirror-gutters {
27
+ border-right: 1px solid #ddd;
28
+ background-color: #f7f7f7;
29
+ white-space: nowrap;
30
+ }
31
+ .CodeMirror-linenumbers {}
32
+ .CodeMirror-linenumber {
33
+ padding: 0 3px 0 5px;
34
+ min-width: 20px;
35
+ text-align: right;
36
+ color: #999;
37
+ white-space: nowrap;
38
+ }
39
+
40
+ .CodeMirror-guttermarker { color: black; }
41
+ .CodeMirror-guttermarker-subtle { color: #999; }
42
+
43
+ /* CURSOR */
44
+
45
+ .CodeMirror-cursor {
46
+ border-left: 1px solid black;
47
+ border-right: none;
48
+ width: 0;
49
+ }
50
+ /* Shown when moving in bi-directional text */
51
+ .CodeMirror div.CodeMirror-secondarycursor {
52
+ border-left: 1px solid silver;
53
+ }
54
+ .cm-fat-cursor .CodeMirror-cursor {
55
+ width: auto;
56
+ border: 0 !important;
57
+ background: #7e7;
58
+ }
59
+ .cm-fat-cursor div.CodeMirror-cursors {
60
+ z-index: 1;
61
+ }
62
+ .cm-fat-cursor-mark {
63
+ background-color: rgba(20, 255, 20, 0.5);
64
+ -webkit-animation: blink 1.06s steps(1) infinite;
65
+ -moz-animation: blink 1.06s steps(1) infinite;
66
+ animation: blink 1.06s steps(1) infinite;
67
+ }
68
+ .cm-animate-fat-cursor {
69
+ width: auto;
70
+ border: 0;
71
+ -webkit-animation: blink 1.06s steps(1) infinite;
72
+ -moz-animation: blink 1.06s steps(1) infinite;
73
+ animation: blink 1.06s steps(1) infinite;
74
+ background-color: #7e7;
75
+ }
76
+ @-moz-keyframes blink {
77
+ 0% {}
78
+ 50% { background-color: transparent; }
79
+ 100% {}
80
+ }
81
+ @-webkit-keyframes blink {
82
+ 0% {}
83
+ 50% { background-color: transparent; }
84
+ 100% {}
85
+ }
86
+ @keyframes blink {
87
+ 0% {}
88
+ 50% { background-color: transparent; }
89
+ 100% {}
90
+ }
91
+
92
+ /* Can style cursor different in overwrite (non-insert) mode */
93
+ .CodeMirror-overwrite .CodeMirror-cursor {}
94
+
95
+ .cm-tab { display: inline-block; text-decoration: inherit; }
96
+
97
+ .CodeMirror-rulers {
98
+ position: absolute;
99
+ left: 0; right: 0; top: -50px; bottom: -20px;
100
+ overflow: hidden;
101
+ }
102
+ .CodeMirror-ruler {
103
+ border-left: 1px solid #ccc;
104
+ top: 0; bottom: 0;
105
+ position: absolute;
106
+ }
107
+
108
+ /* DEFAULT THEME */
109
+
110
+ .cm-s-default .cm-header {color: blue;}
111
+ .cm-s-default .cm-quote {color: #090;}
112
+ .cm-negative {color: #d44;}
113
+ .cm-positive {color: #292;}
114
+ .cm-header, .cm-strong {font-weight: bold;}
115
+ .cm-em {font-style: italic;}
116
+ .cm-link {text-decoration: underline;}
117
+ .cm-strikethrough {text-decoration: line-through;}
118
+
119
+ .cm-s-default .cm-keyword {color: #708;}
120
+ .cm-s-default .cm-atom {color: #219;}
121
+ .cm-s-default .cm-number {color: #164;}
122
+ .cm-s-default .cm-def {color: #00f;}
123
+ .cm-s-default .cm-variable,
124
+ .cm-s-default .cm-punctuation,
125
+ .cm-s-default .cm-property,
126
+ .cm-s-default .cm-operator {}
127
+ .cm-s-default .cm-variable-2 {color: #05a;}
128
+ .cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}
129
+ .cm-s-default .cm-comment {color: #a50;}
130
+ .cm-s-default .cm-string {color: #a11;}
131
+ .cm-s-default .cm-string-2 {color: #f50;}
132
+ .cm-s-default .cm-meta {color: #555;}
133
+ .cm-s-default .cm-qualifier {color: #555;}
134
+ .cm-s-default .cm-builtin {color: #30a;}
135
+ .cm-s-default .cm-bracket {color: #997;}
136
+ .cm-s-default .cm-tag {color: #170;}
137
+ .cm-s-default .cm-attribute {color: #00c;}
138
+ .cm-s-default .cm-hr {color: #999;}
139
+ .cm-s-default .cm-link {color: #00c;}
140
+
141
+ .cm-s-default .cm-error {color: #f00;}
142
+ .cm-invalidchar {color: #f00;}
143
+
144
+ .CodeMirror-composing { border-bottom: 2px solid; }
145
+
146
+ /* Default styles for common addons */
147
+
148
+ div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;}
149
+ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}
150
+ .CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
151
+ .CodeMirror-activeline-background {background: #e8f2ff;}
152
+
153
+ /* STOP */
154
+
155
+ /* The rest of this file contains styles related to the mechanics of
156
+ the editor. You probably shouldn't touch them. */
157
+
158
+ .CodeMirror {
159
+ position: relative;
160
+ overflow: hidden;
161
+ background: white;
162
+ }
163
+
164
+ .CodeMirror-scroll {
165
+ overflow: scroll !important; /* Things will break if this is overridden */
166
+ /* 30px is the magic margin used to hide the element's real scrollbars */
167
+ /* See overflow: hidden in .CodeMirror */
168
+ margin-bottom: -30px; margin-right: -30px;
169
+ padding-bottom: 30px;
170
+ height: 100%;
171
+ outline: none; /* Prevent dragging from highlighting the element */
172
+ position: relative;
173
+ }
174
+ .CodeMirror-sizer {
175
+ position: relative;
176
+ border-right: 30px solid transparent;
177
+ }
178
+
179
+ /* The fake, visible scrollbars. Used to force redraw during scrolling
180
+ before actual scrolling happens, thus preventing shaking and
181
+ flickering artifacts. */
182
+ .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
183
+ position: absolute;
184
+ z-index: 6;
185
+ display: none;
186
+ }
187
+ .CodeMirror-vscrollbar {
188
+ right: 0; top: 0;
189
+ overflow-x: hidden;
190
+ overflow-y: scroll;
191
+ }
192
+ .CodeMirror-hscrollbar {
193
+ bottom: 0; left: 0;
194
+ overflow-y: hidden;
195
+ overflow-x: scroll;
196
+ }
197
+ .CodeMirror-scrollbar-filler {
198
+ right: 0; bottom: 0;
199
+ }
200
+ .CodeMirror-gutter-filler {
201
+ left: 0; bottom: 0;
202
+ }
203
+
204
+ .CodeMirror-gutters {
205
+ position: absolute; left: 0; top: 0;
206
+ min-height: 100%;
207
+ z-index: 3;
208
+ }
209
+ .CodeMirror-gutter {
210
+ white-space: normal;
211
+ height: 100%;
212
+ display: inline-block;
213
+ vertical-align: top;
214
+ margin-bottom: -30px;
215
+ }
216
+ .CodeMirror-gutter-wrapper {
217
+ position: absolute;
218
+ z-index: 4;
219
+ background: none !important;
220
+ border: none !important;
221
+ }
222
+ .CodeMirror-gutter-background {
223
+ position: absolute;
224
+ top: 0; bottom: 0;
225
+ z-index: 4;
226
+ }
227
+ .CodeMirror-gutter-elt {
228
+ position: absolute;
229
+ cursor: default;
230
+ z-index: 4;
231
+ }
232
+ .CodeMirror-gutter-wrapper ::selection { background-color: transparent }
233
+ .CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }
234
+
235
+ .CodeMirror-lines {
236
+ cursor: text;
237
+ min-height: 1px; /* prevents collapsing before first draw */
238
+ }
239
+ .CodeMirror pre {
240
+ /* Reset some styles that the rest of the page might have set */
241
+ -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
242
+ border-width: 0;
243
+ background: transparent;
244
+ font-family: inherit;
245
+ font-size: inherit;
246
+ margin: 0;
247
+ white-space: pre;
248
+ word-wrap: normal;
249
+ line-height: inherit;
250
+ color: inherit;
251
+ z-index: 2;
252
+ position: relative;
253
+ overflow: visible;
254
+ -webkit-tap-highlight-color: transparent;
255
+ -webkit-font-variant-ligatures: contextual;
256
+ font-variant-ligatures: contextual;
257
+ }
258
+ .CodeMirror-wrap pre {
259
+ word-wrap: break-word;
260
+ white-space: pre-wrap;
261
+ word-break: normal;
262
+ }
263
+
264
+ .CodeMirror-linebackground {
265
+ position: absolute;
266
+ left: 0; right: 0; top: 0; bottom: 0;
267
+ z-index: 0;
268
+ }
269
+
270
+ .CodeMirror-linewidget {
271
+ position: relative;
272
+ z-index: 2;
273
+ padding: 0.1px; /* Force widget margins to stay inside of the container */
274
+ }
275
+
276
+ .CodeMirror-widget {}
277
+
278
+ .CodeMirror-rtl pre { direction: rtl; }
279
+
280
+ .CodeMirror-code {
281
+ outline: none;
282
+ }
283
+
284
+ /* Force content-box sizing for the elements where we expect it */
285
+ .CodeMirror-scroll,
286
+ .CodeMirror-sizer,
287
+ .CodeMirror-gutter,
288
+ .CodeMirror-gutters,
289
+ .CodeMirror-linenumber {
290
+ -moz-box-sizing: content-box;
291
+ box-sizing: content-box;
292
+ }
293
+
294
+ .CodeMirror-measure {
295
+ position: absolute;
296
+ width: 100%;
297
+ height: 0;
298
+ overflow: hidden;
299
+ visibility: hidden;
300
+ }
301
+
302
+ .CodeMirror-cursor {
303
+ position: absolute;
304
+ pointer-events: none;
305
+ }
306
+ .CodeMirror-measure pre { position: static; }
307
+
308
+ div.CodeMirror-cursors {
309
+ visibility: hidden;
310
+ position: relative;
311
+ z-index: 3;
312
+ }
313
+ div.CodeMirror-dragcursors {
314
+ visibility: visible;
315
+ }
316
+
317
+ .CodeMirror-focused div.CodeMirror-cursors {
318
+ visibility: visible;
319
+ }
320
+
321
+ .CodeMirror-selected { background: #d9d9d9; }
322
+ .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
323
+ .CodeMirror-crosshair { cursor: crosshair; }
324
+ .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }
325
+ .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }
326
+
327
+ .cm-searching {
328
+ background-color: #ffa;
329
+ background-color: rgba(255, 255, 0, .4);
330
+ }
331
+
332
+ /* Used to force a border model for a node */
333
+ .cm-force-border { padding-right: .1px; }
334
+
335
+ @media print {
336
+ /* Hide the cursor when printing */
337
+ .CodeMirror div.CodeMirror-cursors {
338
+ visibility: hidden;
339
+ }
340
+ }
341
+
342
+ /* See issue #2901 */
343
+ .cm-tab-wrap-hack:after { content: ''; }
344
+
345
+ /* Help users use markselection to safely style text background */
346
+ span.CodeMirror-selectedtext { background: none; }