administrate-field-simple_mde_markdown 0.1.0

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 (419) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +72 -0
  3. data/.circleci/setup-rubygems.sh +3 -0
  4. data/.gitignore +11 -0
  5. data/.rspec +3 -0
  6. data/CODE_OF_CONDUCT.md +74 -0
  7. data/Gemfile +8 -0
  8. data/Gemfile.lock +196 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +44 -0
  11. data/Rakefile +8 -0
  12. data/administrate-field-simple_mde_markdown.gemspec +31 -0
  13. data/app/assets/javascripts/administrate-field-simple_mde_markdown/application.js +6 -0
  14. data/app/assets/stylesheets/administrate-field-simple_mde_markdown/application.css +3 -0
  15. data/app/views/fields/simple_mde_markdown/_form.html.erb +6 -0
  16. data/app/views/fields/simple_mde_markdown/_index.html.erb +1 -0
  17. data/app/views/fields/simple_mde_markdown/_show.html.erb +1 -0
  18. data/lib/administrate/field/simple_mde_markdown.rb +31 -0
  19. data/node_modules/.bin/marked +1 -0
  20. data/node_modules/codemirror-spell-checker/.eslintrc +23 -0
  21. data/node_modules/codemirror-spell-checker/.npmignore +2 -0
  22. data/node_modules/codemirror-spell-checker/.travis.yml +18 -0
  23. data/node_modules/codemirror-spell-checker/CONTRIBUTING 2.md +10 -0
  24. data/node_modules/codemirror-spell-checker/CONTRIBUTING.md +10 -0
  25. data/node_modules/codemirror-spell-checker/LICENSE +22 -0
  26. data/node_modules/codemirror-spell-checker/README.md +50 -0
  27. data/node_modules/codemirror-spell-checker/bower.json +27 -0
  28. data/node_modules/codemirror-spell-checker/debug/.spell-checker 2.css.icloud +0 -0
  29. data/node_modules/codemirror-spell-checker/debug/spell-checker.css +9 -0
  30. data/node_modules/codemirror-spell-checker/debug/spell-checker.debug.js +2844 -0
  31. data/node_modules/codemirror-spell-checker/debug/spell-checker.js +2841 -0
  32. data/node_modules/codemirror-spell-checker/dist/.spell-checker.min 2.css.icloud +0 -0
  33. data/node_modules/codemirror-spell-checker/dist/en_US.aff +201 -0
  34. data/node_modules/codemirror-spell-checker/dist/en_US.dic +62120 -0
  35. data/node_modules/codemirror-spell-checker/dist/spell-checker.min 2.js +7 -0
  36. data/node_modules/codemirror-spell-checker/dist/spell-checker.min.css +7 -0
  37. data/node_modules/codemirror-spell-checker/dist/spell-checker.min.js +7 -0
  38. data/node_modules/codemirror-spell-checker/gulpfile.js +94 -0
  39. data/node_modules/codemirror-spell-checker/package.json +75 -0
  40. data/node_modules/codemirror-spell-checker/src/css/spell-checker.css +3 -0
  41. data/node_modules/codemirror-spell-checker/src/data/en_US.aff +201 -0
  42. data/node_modules/codemirror-spell-checker/src/data/en_US.dic +62120 -0
  43. data/node_modules/codemirror-spell-checker/src/js/spell-checker.js +119 -0
  44. data/node_modules/codemirror/.package 2.json.icloud +0 -0
  45. data/node_modules/codemirror/AUTHORS +773 -0
  46. data/node_modules/codemirror/CHANGELOG.md +1486 -0
  47. data/node_modules/codemirror/CONTRIBUTING.md +92 -0
  48. data/node_modules/codemirror/LICENSE +21 -0
  49. data/node_modules/codemirror/README.md +49 -0
  50. data/node_modules/codemirror/addon/comment/comment.js +209 -0
  51. data/node_modules/codemirror/addon/comment/continuecomment.js +78 -0
  52. data/node_modules/codemirror/addon/dialog/dialog.css +32 -0
  53. data/node_modules/codemirror/addon/dialog/dialog.js +161 -0
  54. data/node_modules/codemirror/addon/display/autorefresh.js +47 -0
  55. data/node_modules/codemirror/addon/display/fullscreen.css +6 -0
  56. data/node_modules/codemirror/addon/display/fullscreen.js +41 -0
  57. data/node_modules/codemirror/addon/display/panel.js +127 -0
  58. data/node_modules/codemirror/addon/display/placeholder.js +63 -0
  59. data/node_modules/codemirror/addon/display/rulers.js +51 -0
  60. data/node_modules/codemirror/addon/edit/closebrackets.js +187 -0
  61. data/node_modules/codemirror/addon/edit/closetag.js +175 -0
  62. data/node_modules/codemirror/addon/edit/continuelist.js +89 -0
  63. data/node_modules/codemirror/addon/edit/matchbrackets.js +145 -0
  64. data/node_modules/codemirror/addon/edit/matchtags.js +66 -0
  65. data/node_modules/codemirror/addon/edit/trailingspace.js +27 -0
  66. data/node_modules/codemirror/addon/fold/brace-fold.js +105 -0
  67. data/node_modules/codemirror/addon/fold/comment-fold.js +59 -0
  68. data/node_modules/codemirror/addon/fold/foldcode.js +152 -0
  69. data/node_modules/codemirror/addon/fold/foldgutter.css +20 -0
  70. data/node_modules/codemirror/addon/fold/foldgutter.js +146 -0
  71. data/node_modules/codemirror/addon/fold/indent-fold.js +48 -0
  72. data/node_modules/codemirror/addon/fold/markdown-fold.js +49 -0
  73. data/node_modules/codemirror/addon/fold/xml-fold.js +184 -0
  74. data/node_modules/codemirror/addon/hint/anyword-hint.js +41 -0
  75. data/node_modules/codemirror/addon/hint/css-hint.js +60 -0
  76. data/node_modules/codemirror/addon/hint/html-hint.js +348 -0
  77. data/node_modules/codemirror/addon/hint/javascript-hint.js +157 -0
  78. data/node_modules/codemirror/addon/hint/show-hint.css +36 -0
  79. data/node_modules/codemirror/addon/hint/show-hint.js +434 -0
  80. data/node_modules/codemirror/addon/hint/sql-hint.js +299 -0
  81. data/node_modules/codemirror/addon/hint/xml-hint.js +110 -0
  82. data/node_modules/codemirror/addon/lint/coffeescript-lint.js +47 -0
  83. data/node_modules/codemirror/addon/lint/css-lint.js +40 -0
  84. data/node_modules/codemirror/addon/lint/html-lint.js +53 -0
  85. data/node_modules/codemirror/addon/lint/javascript-lint.js +63 -0
  86. data/node_modules/codemirror/addon/lint/json-lint.js +40 -0
  87. data/node_modules/codemirror/addon/lint/lint.css +73 -0
  88. data/node_modules/codemirror/addon/lint/lint.js +252 -0
  89. data/node_modules/codemirror/addon/lint/yaml-lint.js +41 -0
  90. data/node_modules/codemirror/addon/merge/merge.css +119 -0
  91. data/node_modules/codemirror/addon/merge/merge.js +1002 -0
  92. data/node_modules/codemirror/addon/mode/loadmode.js +64 -0
  93. data/node_modules/codemirror/addon/mode/multiplex.js +131 -0
  94. data/node_modules/codemirror/addon/mode/multiplex_test.js +33 -0
  95. data/node_modules/codemirror/addon/mode/overlay.js +90 -0
  96. data/node_modules/codemirror/addon/mode/simple.js +216 -0
  97. data/node_modules/codemirror/addon/runmode/colorize.js +40 -0
  98. data/node_modules/codemirror/addon/runmode/runmode-standalone.js +158 -0
  99. data/node_modules/codemirror/addon/runmode/runmode.js +72 -0
  100. data/node_modules/codemirror/addon/runmode/runmode.node.js +197 -0
  101. data/node_modules/codemirror/addon/scroll/annotatescrollbar.js +122 -0
  102. data/node_modules/codemirror/addon/scroll/scrollpastend.js +48 -0
  103. data/node_modules/codemirror/addon/scroll/simplescrollbars.css +66 -0
  104. data/node_modules/codemirror/addon/scroll/simplescrollbars.js +152 -0
  105. data/node_modules/codemirror/addon/search/jump-to-line.js +50 -0
  106. data/node_modules/codemirror/addon/search/match-highlighter.js +165 -0
  107. data/node_modules/codemirror/addon/search/matchesonscrollbar.css +8 -0
  108. data/node_modules/codemirror/addon/search/matchesonscrollbar.js +97 -0
  109. data/node_modules/codemirror/addon/search/search.js +258 -0
  110. data/node_modules/codemirror/addon/search/searchcursor.js +293 -0
  111. data/node_modules/codemirror/addon/selection/active-line.js +72 -0
  112. data/node_modules/codemirror/addon/selection/mark-selection.js +119 -0
  113. data/node_modules/codemirror/addon/selection/selection-pointer.js +98 -0
  114. data/node_modules/codemirror/addon/tern/tern.css +87 -0
  115. data/node_modules/codemirror/addon/tern/tern.js +718 -0
  116. data/node_modules/codemirror/addon/tern/worker.js +44 -0
  117. data/node_modules/codemirror/addon/wrap/hardwrap.js +145 -0
  118. data/node_modules/codemirror/bin/source-highlight +48 -0
  119. data/node_modules/codemirror/keymap/emacs.js +417 -0
  120. data/node_modules/codemirror/keymap/sublime.js +691 -0
  121. data/node_modules/codemirror/keymap/vim.js +5467 -0
  122. data/node_modules/codemirror/lib/codemirror.css +346 -0
  123. data/node_modules/codemirror/lib/codemirror.js +9698 -0
  124. data/node_modules/codemirror/mode/apl/apl.js +174 -0
  125. data/node_modules/codemirror/mode/asciiarmor/asciiarmor.js +74 -0
  126. data/node_modules/codemirror/mode/asn.1/asn.1.js +204 -0
  127. data/node_modules/codemirror/mode/asterisk/asterisk.js +196 -0
  128. data/node_modules/codemirror/mode/brainfuck/brainfuck.js +85 -0
  129. data/node_modules/codemirror/mode/clike/clike.js +879 -0
  130. data/node_modules/codemirror/mode/clojure/clojure.js +292 -0
  131. data/node_modules/codemirror/mode/cmake/cmake.js +97 -0
  132. data/node_modules/codemirror/mode/cobol/cobol.js +255 -0
  133. data/node_modules/codemirror/mode/coffeescript/coffeescript.js +359 -0
  134. data/node_modules/codemirror/mode/commonlisp/commonlisp.js +124 -0
  135. data/node_modules/codemirror/mode/crystal/crystal.js +433 -0
  136. data/node_modules/codemirror/mode/css/css.js +832 -0
  137. data/node_modules/codemirror/mode/cypher/cypher.js +150 -0
  138. data/node_modules/codemirror/mode/d/d.js +223 -0
  139. data/node_modules/codemirror/mode/dart/dart.js +157 -0
  140. data/node_modules/codemirror/mode/diff/diff.js +47 -0
  141. data/node_modules/codemirror/mode/django/django.js +356 -0
  142. data/node_modules/codemirror/mode/dockerfile/dockerfile.js +211 -0
  143. data/node_modules/codemirror/mode/dtd/dtd.js +142 -0
  144. data/node_modules/codemirror/mode/dylan/dylan.js +352 -0
  145. data/node_modules/codemirror/mode/ebnf/ebnf.js +195 -0
  146. data/node_modules/codemirror/mode/ecl/ecl.js +206 -0
  147. data/node_modules/codemirror/mode/eiffel/eiffel.js +160 -0
  148. data/node_modules/codemirror/mode/elm/elm.js +205 -0
  149. data/node_modules/codemirror/mode/erlang/erlang.js +619 -0
  150. data/node_modules/codemirror/mode/factor/factor.js +85 -0
  151. data/node_modules/codemirror/mode/fcl/fcl.js +173 -0
  152. data/node_modules/codemirror/mode/forth/forth.js +180 -0
  153. data/node_modules/codemirror/mode/fortran/fortran.js +188 -0
  154. data/node_modules/codemirror/mode/gas/gas.js +345 -0
  155. data/node_modules/codemirror/mode/gfm/gfm.js +129 -0
  156. data/node_modules/codemirror/mode/gherkin/gherkin.js +178 -0
  157. data/node_modules/codemirror/mode/go/go.js +187 -0
  158. data/node_modules/codemirror/mode/groovy/groovy.js +230 -0
  159. data/node_modules/codemirror/mode/haml/haml.js +161 -0
  160. data/node_modules/codemirror/mode/handlebars/handlebars.js +66 -0
  161. data/node_modules/codemirror/mode/haskell-literate/haskell-literate.js +43 -0
  162. data/node_modules/codemirror/mode/haskell/haskell.js +268 -0
  163. data/node_modules/codemirror/mode/haxe/haxe.js +515 -0
  164. data/node_modules/codemirror/mode/htmlembedded/htmlembedded.js +37 -0
  165. data/node_modules/codemirror/mode/htmlmixed/htmlmixed.js +152 -0
  166. data/node_modules/codemirror/mode/http/http.js +113 -0
  167. data/node_modules/codemirror/mode/idl/idl.js +290 -0
  168. data/node_modules/codemirror/mode/javascript/javascript.js +899 -0
  169. data/node_modules/codemirror/mode/jinja2/jinja2.js +144 -0
  170. data/node_modules/codemirror/mode/jsx/jsx.js +148 -0
  171. data/node_modules/codemirror/mode/julia/julia.js +433 -0
  172. data/node_modules/codemirror/mode/livescript/livescript.js +280 -0
  173. data/node_modules/codemirror/mode/lua/lua.js +159 -0
  174. data/node_modules/codemirror/mode/markdown/markdown.js +884 -0
  175. data/node_modules/codemirror/mode/mathematica/mathematica.js +176 -0
  176. data/node_modules/codemirror/mode/mbox/mbox.js +129 -0
  177. data/node_modules/codemirror/mode/meta.js +217 -0
  178. data/node_modules/codemirror/mode/mirc/mirc.js +193 -0
  179. data/node_modules/codemirror/mode/mllike/mllike.js +359 -0
  180. data/node_modules/codemirror/mode/modelica/modelica.js +245 -0
  181. data/node_modules/codemirror/mode/mscgen/mscgen.js +175 -0
  182. data/node_modules/codemirror/mode/mumps/mumps.js +148 -0
  183. data/node_modules/codemirror/mode/nginx/nginx.js +178 -0
  184. data/node_modules/codemirror/mode/nsis/nsis.js +95 -0
  185. data/node_modules/codemirror/mode/ntriples/ntriples.js +195 -0
  186. data/node_modules/codemirror/mode/octave/octave.js +139 -0
  187. data/node_modules/codemirror/mode/oz/oz.js +252 -0
  188. data/node_modules/codemirror/mode/pascal/pascal.js +121 -0
  189. data/node_modules/codemirror/mode/pegjs/pegjs.js +114 -0
  190. data/node_modules/codemirror/mode/perl/perl.js +837 -0
  191. data/node_modules/codemirror/mode/php/php.js +234 -0
  192. data/node_modules/codemirror/mode/pig/pig.js +178 -0
  193. data/node_modules/codemirror/mode/powershell/powershell.js +398 -0
  194. data/node_modules/codemirror/mode/properties/properties 2.js +78 -0
  195. data/node_modules/codemirror/mode/properties/properties.js +78 -0
  196. data/node_modules/codemirror/mode/protobuf/protobuf.js +69 -0
  197. data/node_modules/codemirror/mode/pug/pug.js +591 -0
  198. data/node_modules/codemirror/mode/puppet/puppet.js +220 -0
  199. data/node_modules/codemirror/mode/python/python.js +409 -0
  200. data/node_modules/codemirror/mode/q/q.js +139 -0
  201. data/node_modules/codemirror/mode/r/r.js +190 -0
  202. data/node_modules/codemirror/mode/rpm/changes/index.html +66 -0
  203. data/node_modules/codemirror/mode/rpm/rpm.js +109 -0
  204. data/node_modules/codemirror/mode/rst/rst.js +557 -0
  205. data/node_modules/codemirror/mode/ruby/ruby.js +296 -0
  206. data/node_modules/codemirror/mode/rust/rust.js +72 -0
  207. data/node_modules/codemirror/mode/sas/sas.js +303 -0
  208. data/node_modules/codemirror/mode/sass/sass.js +454 -0
  209. data/node_modules/codemirror/mode/scheme/scheme.js +265 -0
  210. data/node_modules/codemirror/mode/shell/shell.js +152 -0
  211. data/node_modules/codemirror/mode/sieve/sieve.js +193 -0
  212. data/node_modules/codemirror/mode/slim/slim.js +575 -0
  213. data/node_modules/codemirror/mode/smalltalk/smalltalk.js +168 -0
  214. data/node_modules/codemirror/mode/smarty/smarty.js +225 -0
  215. data/node_modules/codemirror/mode/solr/solr.js +104 -0
  216. data/node_modules/codemirror/mode/soy/soy 2.js +359 -0
  217. data/node_modules/codemirror/mode/soy/soy.js +235 -0
  218. data/node_modules/codemirror/mode/sparql/sparql.js +180 -0
  219. data/node_modules/codemirror/mode/spreadsheet/spreadsheet.js +112 -0
  220. data/node_modules/codemirror/mode/sql/sql.js +499 -0
  221. data/node_modules/codemirror/mode/stex/stex.js +264 -0
  222. data/node_modules/codemirror/mode/stylus/stylus.js +771 -0
  223. data/node_modules/codemirror/mode/swift/swift.js +219 -0
  224. data/node_modules/codemirror/mode/tcl/tcl.js +139 -0
  225. data/node_modules/codemirror/mode/textile/textile.js +469 -0
  226. data/node_modules/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  227. data/node_modules/codemirror/mode/tiddlywiki/tiddlywiki.js +308 -0
  228. data/node_modules/codemirror/mode/tiki/tiki.css +26 -0
  229. data/node_modules/codemirror/mode/tiki/tiki.js +312 -0
  230. data/node_modules/codemirror/mode/toml/toml.js +88 -0
  231. data/node_modules/codemirror/mode/tornado/tornado.js +68 -0
  232. data/node_modules/codemirror/mode/troff/troff.js +84 -0
  233. data/node_modules/codemirror/mode/ttcn-cfg/ttcn-cfg.js +214 -0
  234. data/node_modules/codemirror/mode/ttcn/ttcn.js +283 -0
  235. data/node_modules/codemirror/mode/turtle/turtle.js +162 -0
  236. data/node_modules/codemirror/mode/twig/twig.js +141 -0
  237. data/node_modules/codemirror/mode/vb/vb.js +275 -0
  238. data/node_modules/codemirror/mode/vbscript/vbscript.js +350 -0
  239. data/node_modules/codemirror/mode/velocity/velocity.js +201 -0
  240. data/node_modules/codemirror/mode/verilog/verilog.js +675 -0
  241. data/node_modules/codemirror/mode/vhdl/vhdl.js +189 -0
  242. data/node_modules/codemirror/mode/vue/vue.js +77 -0
  243. data/node_modules/codemirror/mode/webidl/webidl.js +195 -0
  244. data/node_modules/codemirror/mode/xml/xml.js +402 -0
  245. data/node_modules/codemirror/mode/xquery/xquery.js +448 -0
  246. data/node_modules/codemirror/mode/yacas/yacas.js +204 -0
  247. data/node_modules/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +68 -0
  248. data/node_modules/codemirror/mode/yaml/yaml.js +120 -0
  249. data/node_modules/codemirror/mode/z80/z80.js +116 -0
  250. data/node_modules/codemirror/package.json +2395 -0
  251. data/node_modules/codemirror/rollup.config.js +20 -0
  252. data/node_modules/codemirror/src/codemirror.js +3 -0
  253. data/node_modules/codemirror/src/display/Display.js +106 -0
  254. data/node_modules/codemirror/src/display/focus.js +47 -0
  255. data/node_modules/codemirror/src/display/gutters.js +34 -0
  256. data/node_modules/codemirror/src/display/highlight_worker.js +55 -0
  257. data/node_modules/codemirror/src/display/line_numbers.js +48 -0
  258. data/node_modules/codemirror/src/display/mode_state.js +22 -0
  259. data/node_modules/codemirror/src/display/operations.js +205 -0
  260. data/node_modules/codemirror/src/display/scroll_events.js +115 -0
  261. data/node_modules/codemirror/src/display/scrollbars.js +193 -0
  262. data/node_modules/codemirror/src/display/scrolling.js +184 -0
  263. data/node_modules/codemirror/src/display/selection.js +158 -0
  264. data/node_modules/codemirror/src/display/update_display.js +260 -0
  265. data/node_modules/codemirror/src/display/update_line.js +188 -0
  266. data/node_modules/codemirror/src/display/update_lines.js +64 -0
  267. data/node_modules/codemirror/src/display/view_tracking.js +153 -0
  268. data/node_modules/codemirror/src/edit/CodeMirror.js +215 -0
  269. data/node_modules/codemirror/src/edit/commands.js +178 -0
  270. data/node_modules/codemirror/src/edit/deleteNearSelection.js +30 -0
  271. data/node_modules/codemirror/src/edit/drop_events.js +119 -0
  272. data/node_modules/codemirror/src/edit/fromTextArea.js +61 -0
  273. data/node_modules/codemirror/src/edit/global_events.js +42 -0
  274. data/node_modules/codemirror/src/edit/key_events.js +159 -0
  275. data/node_modules/codemirror/src/edit/legacy.js +62 -0
  276. data/node_modules/codemirror/src/edit/main.js +69 -0
  277. data/node_modules/codemirror/src/edit/methods.js +544 -0
  278. data/node_modules/codemirror/src/edit/mouse_events.js +407 -0
  279. data/node_modules/codemirror/src/edit/options.js +193 -0
  280. data/node_modules/codemirror/src/edit/utils.js +7 -0
  281. data/node_modules/codemirror/src/input/ContentEditableInput.js +527 -0
  282. data/node_modules/codemirror/src/input/TextareaInput.js +355 -0
  283. data/node_modules/codemirror/src/input/indent.js +71 -0
  284. data/node_modules/codemirror/src/input/input.js +135 -0
  285. data/node_modules/codemirror/src/input/keymap.js +148 -0
  286. data/node_modules/codemirror/src/input/keynames.js +17 -0
  287. data/node_modules/codemirror/src/input/movement.js +110 -0
  288. data/node_modules/codemirror/src/line/highlight.js +284 -0
  289. data/node_modules/codemirror/src/line/line_data.js +339 -0
  290. data/node_modules/codemirror/src/line/pos.js +40 -0
  291. data/node_modules/codemirror/src/line/saw_special_spans.js +10 -0
  292. data/node_modules/codemirror/src/line/spans.js +382 -0
  293. data/node_modules/codemirror/src/line/utils_line.js +85 -0
  294. data/node_modules/codemirror/src/measurement/position_measurement.js +699 -0
  295. data/node_modules/codemirror/src/measurement/widgets.js +26 -0
  296. data/node_modules/codemirror/src/model/Doc.js +432 -0
  297. data/node_modules/codemirror/src/model/change_measurement.js +61 -0
  298. data/node_modules/codemirror/src/model/changes.js +333 -0
  299. data/node_modules/codemirror/src/model/chunk.js +167 -0
  300. data/node_modules/codemirror/src/model/document_data.js +111 -0
  301. data/node_modules/codemirror/src/model/history.js +228 -0
  302. data/node_modules/codemirror/src/model/line_widget.js +78 -0
  303. data/node_modules/codemirror/src/model/mark_text.js +292 -0
  304. data/node_modules/codemirror/src/model/selection.js +84 -0
  305. data/node_modules/codemirror/src/model/selection_updates.js +208 -0
  306. data/node_modules/codemirror/src/modes.js +96 -0
  307. data/node_modules/codemirror/src/util/StringStream.js +90 -0
  308. data/node_modules/codemirror/src/util/bidi.js +214 -0
  309. data/node_modules/codemirror/src/util/browser.js +33 -0
  310. data/node_modules/codemirror/src/util/dom.js +97 -0
  311. data/node_modules/codemirror/src/util/event.js +103 -0
  312. data/node_modules/codemirror/src/util/feature_detection.js +84 -0
  313. data/node_modules/codemirror/src/util/misc.js +150 -0
  314. data/node_modules/codemirror/src/util/operation_group.js +72 -0
  315. data/node_modules/codemirror/theme/3024-day.css +41 -0
  316. data/node_modules/codemirror/theme/3024-night.css +39 -0
  317. data/node_modules/codemirror/theme/abcdef.css +32 -0
  318. data/node_modules/codemirror/theme/ambiance-mobile.css +5 -0
  319. data/node_modules/codemirror/theme/ambiance.css +74 -0
  320. data/node_modules/codemirror/theme/base16-dark.css +38 -0
  321. data/node_modules/codemirror/theme/base16-light.css +38 -0
  322. data/node_modules/codemirror/theme/bespin.css +34 -0
  323. data/node_modules/codemirror/theme/blackboard.css +32 -0
  324. data/node_modules/codemirror/theme/cobalt.css +25 -0
  325. data/node_modules/codemirror/theme/colorforth.css +33 -0
  326. data/node_modules/codemirror/theme/darcula.css +46 -0
  327. data/node_modules/codemirror/theme/dracula.css +40 -0
  328. data/node_modules/codemirror/theme/duotone-dark.css +35 -0
  329. data/node_modules/codemirror/theme/duotone-light.css +36 -0
  330. data/node_modules/codemirror/theme/eclipse.css +23 -0
  331. data/node_modules/codemirror/theme/elegant.css +13 -0
  332. data/node_modules/codemirror/theme/erlang-dark.css +34 -0
  333. data/node_modules/codemirror/theme/gruvbox-dark.css +37 -0
  334. data/node_modules/codemirror/theme/hopscotch.css +34 -0
  335. data/node_modules/codemirror/theme/icecoder.css +43 -0
  336. data/node_modules/codemirror/theme/idea.css +42 -0
  337. data/node_modules/codemirror/theme/isotope.css +34 -0
  338. data/node_modules/codemirror/theme/lesser-dark.css +47 -0
  339. data/node_modules/codemirror/theme/liquibyte.css +95 -0
  340. data/node_modules/codemirror/theme/lucario.css +37 -0
  341. data/node_modules/codemirror/theme/material.css +53 -0
  342. data/node_modules/codemirror/theme/mbo.css +37 -0
  343. data/node_modules/codemirror/theme/mdn-like.css +46 -0
  344. data/node_modules/codemirror/theme/midnight.css +43 -0
  345. data/node_modules/codemirror/theme/monokai.css +41 -0
  346. data/node_modules/codemirror/theme/neat.css +12 -0
  347. data/node_modules/codemirror/theme/neo.css +43 -0
  348. data/node_modules/codemirror/theme/night.css +27 -0
  349. data/node_modules/codemirror/theme/oceanic-next.css +44 -0
  350. data/node_modules/codemirror/theme/panda-syntax.css +85 -0
  351. data/node_modules/codemirror/theme/paraiso-dark.css +38 -0
  352. data/node_modules/codemirror/theme/paraiso-light.css +38 -0
  353. data/node_modules/codemirror/theme/pastel-on-dark.css +52 -0
  354. data/node_modules/codemirror/theme/railscasts.css +34 -0
  355. data/node_modules/codemirror/theme/rubyblue.css +25 -0
  356. data/node_modules/codemirror/theme/seti.css +44 -0
  357. data/node_modules/codemirror/theme/shadowfox.css +52 -0
  358. data/node_modules/codemirror/theme/solarized.css +168 -0
  359. data/node_modules/codemirror/theme/ssms.css +16 -0
  360. data/node_modules/codemirror/theme/the-matrix.css +30 -0
  361. data/node_modules/codemirror/theme/tomorrow-night-bright.css +35 -0
  362. data/node_modules/codemirror/theme/tomorrow-night-eighties.css +38 -0
  363. data/node_modules/codemirror/theme/ttcn.css +64 -0
  364. data/node_modules/codemirror/theme/twilight.css +32 -0
  365. data/node_modules/codemirror/theme/vibrant-ink.css +34 -0
  366. data/node_modules/codemirror/theme/xq-dark.css +53 -0
  367. data/node_modules/codemirror/theme/xq-light.css +43 -0
  368. data/node_modules/codemirror/theme/yeti.css +44 -0
  369. data/node_modules/codemirror/theme/zenburn.css +37 -0
  370. data/node_modules/marked/.editorconfig +16 -0
  371. data/node_modules/marked/.eslintignore +1 -0
  372. data/node_modules/marked/.eslintrc.json +28 -0
  373. data/node_modules/marked/.package 2.json.icloud +0 -0
  374. data/node_modules/marked/.travis.yml +47 -0
  375. data/node_modules/marked/Makefile +15 -0
  376. data/node_modules/marked/Makefile 2 +15 -0
  377. data/node_modules/marked/README 2.md +75 -0
  378. data/node_modules/marked/README.md +75 -0
  379. data/node_modules/marked/bin/marked +199 -0
  380. data/node_modules/marked/bower.json +23 -0
  381. data/node_modules/marked/component.json +10 -0
  382. data/node_modules/marked/index.js +1 -0
  383. data/node_modules/marked/jasmine.json +11 -0
  384. data/node_modules/marked/lib/marked 2.js +1604 -0
  385. data/node_modules/marked/lib/marked.js +1604 -0
  386. data/node_modules/marked/man/marked.1 +91 -0
  387. data/node_modules/marked/man/marked.1.txt +96 -0
  388. data/node_modules/marked/marked.min.js +6 -0
  389. data/node_modules/marked/package.json +95 -0
  390. data/node_modules/simplemde/.eslintrc +23 -0
  391. data/node_modules/simplemde/.npmignore +9 -0
  392. data/node_modules/simplemde/.travis.yml +18 -0
  393. data/node_modules/simplemde/CONTRIBUTING 2.md +10 -0
  394. data/node_modules/simplemde/CONTRIBUTING.md +10 -0
  395. data/node_modules/simplemde/LICENSE +22 -0
  396. data/node_modules/simplemde/README.md +331 -0
  397. data/node_modules/simplemde/bower.json +23 -0
  398. data/node_modules/simplemde/debug/.simplemde 2.css.icloud +0 -0
  399. data/node_modules/simplemde/debug/simplemde.css +676 -0
  400. data/node_modules/simplemde/debug/simplemde.debug.js +17023 -0
  401. data/node_modules/simplemde/debug/simplemde.js +17019 -0
  402. data/node_modules/simplemde/dist/simplemde.min.css +7 -0
  403. data/node_modules/simplemde/dist/simplemde.min.js +15 -0
  404. data/node_modules/simplemde/gulpfile.js +96 -0
  405. data/node_modules/simplemde/package.json +73 -0
  406. data/node_modules/simplemde/src/css/simplemde.css +328 -0
  407. data/node_modules/simplemde/src/js/codemirror/tablist 2.js +44 -0
  408. data/node_modules/simplemde/src/js/codemirror/tablist.js +44 -0
  409. data/node_modules/simplemde/src/js/simplemde.js +2028 -0
  410. data/node_modules/typo-js/README.md +45 -0
  411. data/node_modules/typo-js/dictionaries/en_US/.en_US 2.dic.icloud +0 -0
  412. data/node_modules/typo-js/dictionaries/en_US/README.md +7 -0
  413. data/node_modules/typo-js/dictionaries/en_US/en_US.aff +201 -0
  414. data/node_modules/typo-js/dictionaries/en_US/en_US.dic +62120 -0
  415. data/node_modules/typo-js/package.json +56 -0
  416. data/node_modules/typo-js/typo.js +931 -0
  417. data/package-lock.json +40 -0
  418. data/package.json +7 -0
  419. metadata +557 -0
@@ -0,0 +1,214 @@
1
+ import { lst } from "./misc.js"
2
+
3
+ // BIDI HELPERS
4
+
5
+ export function iterateBidiSections(order, from, to, f) {
6
+ if (!order) return f(from, to, "ltr", 0)
7
+ let found = false
8
+ for (let i = 0; i < order.length; ++i) {
9
+ let part = order[i]
10
+ if (part.from < to && part.to > from || from == to && part.to == from) {
11
+ f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr", i)
12
+ found = true
13
+ }
14
+ }
15
+ if (!found) f(from, to, "ltr")
16
+ }
17
+
18
+ export let bidiOther = null
19
+ export function getBidiPartAt(order, ch, sticky) {
20
+ let found
21
+ bidiOther = null
22
+ for (let i = 0; i < order.length; ++i) {
23
+ let cur = order[i]
24
+ if (cur.from < ch && cur.to > ch) return i
25
+ if (cur.to == ch) {
26
+ if (cur.from != cur.to && sticky == "before") found = i
27
+ else bidiOther = i
28
+ }
29
+ if (cur.from == ch) {
30
+ if (cur.from != cur.to && sticky != "before") found = i
31
+ else bidiOther = i
32
+ }
33
+ }
34
+ return found != null ? found : bidiOther
35
+ }
36
+
37
+ // Bidirectional ordering algorithm
38
+ // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm
39
+ // that this (partially) implements.
40
+
41
+ // One-char codes used for character types:
42
+ // L (L): Left-to-Right
43
+ // R (R): Right-to-Left
44
+ // r (AL): Right-to-Left Arabic
45
+ // 1 (EN): European Number
46
+ // + (ES): European Number Separator
47
+ // % (ET): European Number Terminator
48
+ // n (AN): Arabic Number
49
+ // , (CS): Common Number Separator
50
+ // m (NSM): Non-Spacing Mark
51
+ // b (BN): Boundary Neutral
52
+ // s (B): Paragraph Separator
53
+ // t (S): Segment Separator
54
+ // w (WS): Whitespace
55
+ // N (ON): Other Neutrals
56
+
57
+ // Returns null if characters are ordered as they appear
58
+ // (left-to-right), or an array of sections ({from, to, level}
59
+ // objects) in the order in which they occur visually.
60
+ let bidiOrdering = (function() {
61
+ // Character types for codepoints 0 to 0xff
62
+ let lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"
63
+ // Character types for codepoints 0x600 to 0x6f9
64
+ let arabicTypes = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111"
65
+ function charType(code) {
66
+ if (code <= 0xf7) return lowTypes.charAt(code)
67
+ else if (0x590 <= code && code <= 0x5f4) return "R"
68
+ else if (0x600 <= code && code <= 0x6f9) return arabicTypes.charAt(code - 0x600)
69
+ else if (0x6ee <= code && code <= 0x8ac) return "r"
70
+ else if (0x2000 <= code && code <= 0x200b) return "w"
71
+ else if (code == 0x200c) return "b"
72
+ else return "L"
73
+ }
74
+
75
+ let bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/
76
+ let isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/
77
+
78
+ function BidiSpan(level, from, to) {
79
+ this.level = level
80
+ this.from = from; this.to = to
81
+ }
82
+
83
+ return function(str, direction) {
84
+ let outerType = direction == "ltr" ? "L" : "R"
85
+
86
+ if (str.length == 0 || direction == "ltr" && !bidiRE.test(str)) return false
87
+ let len = str.length, types = []
88
+ for (let i = 0; i < len; ++i)
89
+ types.push(charType(str.charCodeAt(i)))
90
+
91
+ // W1. Examine each non-spacing mark (NSM) in the level run, and
92
+ // change the type of the NSM to the type of the previous
93
+ // character. If the NSM is at the start of the level run, it will
94
+ // get the type of sor.
95
+ for (let i = 0, prev = outerType; i < len; ++i) {
96
+ let type = types[i]
97
+ if (type == "m") types[i] = prev
98
+ else prev = type
99
+ }
100
+
101
+ // W2. Search backwards from each instance of a European number
102
+ // until the first strong type (R, L, AL, or sor) is found. If an
103
+ // AL is found, change the type of the European number to Arabic
104
+ // number.
105
+ // W3. Change all ALs to R.
106
+ for (let i = 0, cur = outerType; i < len; ++i) {
107
+ let type = types[i]
108
+ if (type == "1" && cur == "r") types[i] = "n"
109
+ else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R" }
110
+ }
111
+
112
+ // W4. A single European separator between two European numbers
113
+ // changes to a European number. A single common separator between
114
+ // two numbers of the same type changes to that type.
115
+ for (let i = 1, prev = types[0]; i < len - 1; ++i) {
116
+ let type = types[i]
117
+ if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"
118
+ else if (type == "," && prev == types[i+1] &&
119
+ (prev == "1" || prev == "n")) types[i] = prev
120
+ prev = type
121
+ }
122
+
123
+ // W5. A sequence of European terminators adjacent to European
124
+ // numbers changes to all European numbers.
125
+ // W6. Otherwise, separators and terminators change to Other
126
+ // Neutral.
127
+ for (let i = 0; i < len; ++i) {
128
+ let type = types[i]
129
+ if (type == ",") types[i] = "N"
130
+ else if (type == "%") {
131
+ let end
132
+ for (end = i + 1; end < len && types[end] == "%"; ++end) {}
133
+ let replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"
134
+ for (let j = i; j < end; ++j) types[j] = replace
135
+ i = end - 1
136
+ }
137
+ }
138
+
139
+ // W7. Search backwards from each instance of a European number
140
+ // until the first strong type (R, L, or sor) is found. If an L is
141
+ // found, then change the type of the European number to L.
142
+ for (let i = 0, cur = outerType; i < len; ++i) {
143
+ let type = types[i]
144
+ if (cur == "L" && type == "1") types[i] = "L"
145
+ else if (isStrong.test(type)) cur = type
146
+ }
147
+
148
+ // N1. A sequence of neutrals takes the direction of the
149
+ // surrounding strong text if the text on both sides has the same
150
+ // direction. European and Arabic numbers act as if they were R in
151
+ // terms of their influence on neutrals. Start-of-level-run (sor)
152
+ // and end-of-level-run (eor) are used at level run boundaries.
153
+ // N2. Any remaining neutrals take the embedding direction.
154
+ for (let i = 0; i < len; ++i) {
155
+ if (isNeutral.test(types[i])) {
156
+ let end
157
+ for (end = i + 1; end < len && isNeutral.test(types[end]); ++end) {}
158
+ let before = (i ? types[i-1] : outerType) == "L"
159
+ let after = (end < len ? types[end] : outerType) == "L"
160
+ let replace = before == after ? (before ? "L" : "R") : outerType
161
+ for (let j = i; j < end; ++j) types[j] = replace
162
+ i = end - 1
163
+ }
164
+ }
165
+
166
+ // Here we depart from the documented algorithm, in order to avoid
167
+ // building up an actual levels array. Since there are only three
168
+ // levels (0, 1, 2) in an implementation that doesn't take
169
+ // explicit embedding into account, we can build up the order on
170
+ // the fly, without following the level-based algorithm.
171
+ let order = [], m
172
+ for (let i = 0; i < len;) {
173
+ if (countsAsLeft.test(types[i])) {
174
+ let start = i
175
+ for (++i; i < len && countsAsLeft.test(types[i]); ++i) {}
176
+ order.push(new BidiSpan(0, start, i))
177
+ } else {
178
+ let pos = i, at = order.length
179
+ for (++i; i < len && types[i] != "L"; ++i) {}
180
+ for (let j = pos; j < i;) {
181
+ if (countsAsNum.test(types[j])) {
182
+ if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j))
183
+ let nstart = j
184
+ for (++j; j < i && countsAsNum.test(types[j]); ++j) {}
185
+ order.splice(at, 0, new BidiSpan(2, nstart, j))
186
+ pos = j
187
+ } else ++j
188
+ }
189
+ if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i))
190
+ }
191
+ }
192
+ if (direction == "ltr") {
193
+ if (order[0].level == 1 && (m = str.match(/^\s+/))) {
194
+ order[0].from = m[0].length
195
+ order.unshift(new BidiSpan(0, 0, m[0].length))
196
+ }
197
+ if (lst(order).level == 1 && (m = str.match(/\s+$/))) {
198
+ lst(order).to -= m[0].length
199
+ order.push(new BidiSpan(0, len - m[0].length, len))
200
+ }
201
+ }
202
+
203
+ return direction == "rtl" ? order.reverse() : order
204
+ }
205
+ })()
206
+
207
+ // Get the bidi ordering for the given line (and cache it). Returns
208
+ // false for lines that are fully left-to-right, and an array of
209
+ // BidiSpan objects otherwise.
210
+ export function getOrder(line, direction) {
211
+ let order = line.order
212
+ if (order == null) order = line.order = bidiOrdering(line.text, direction)
213
+ return order
214
+ }
@@ -0,0 +1,33 @@
1
+ // Kludges for bugs and behavior differences that can't be feature
2
+ // detected are enabled based on userAgent etc sniffing.
3
+ let userAgent = navigator.userAgent
4
+ let platform = navigator.platform
5
+
6
+ export let gecko = /gecko\/\d/i.test(userAgent)
7
+ let ie_upto10 = /MSIE \d/.test(userAgent)
8
+ let ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent)
9
+ let edge = /Edge\/(\d+)/.exec(userAgent)
10
+ export let ie = ie_upto10 || ie_11up || edge
11
+ export let ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1])
12
+ export let webkit = !edge && /WebKit\//.test(userAgent)
13
+ let qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent)
14
+ export let chrome = !edge && /Chrome\//.test(userAgent)
15
+ export let presto = /Opera\//.test(userAgent)
16
+ export let safari = /Apple Computer/.test(navigator.vendor)
17
+ export let mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent)
18
+ export let phantom = /PhantomJS/.test(userAgent)
19
+
20
+ export let ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent)
21
+ export let android = /Android/.test(userAgent)
22
+ // This is woefully incomplete. Suggestions for alternative methods welcome.
23
+ export let mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent)
24
+ export let mac = ios || /Mac/.test(platform)
25
+ export let chromeOS = /\bCrOS\b/.test(userAgent)
26
+ export let windows = /win/i.test(platform)
27
+
28
+ let presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/)
29
+ if (presto_version) presto_version = Number(presto_version[1])
30
+ if (presto_version && presto_version >= 15) { presto = false; webkit = true }
31
+ // Some browsers use the wrong event properties to signal cmd/ctrl on OS X
32
+ export let flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11))
33
+ export let captureRightClick = gecko || (ie && ie_version >= 9)
@@ -0,0 +1,97 @@
1
+ import { ie, ios } from "./browser.js"
2
+
3
+ export function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") }
4
+
5
+ export let rmClass = function(node, cls) {
6
+ let current = node.className
7
+ let match = classTest(cls).exec(current)
8
+ if (match) {
9
+ let after = current.slice(match.index + match[0].length)
10
+ node.className = current.slice(0, match.index) + (after ? match[1] + after : "")
11
+ }
12
+ }
13
+
14
+ export function removeChildren(e) {
15
+ for (let count = e.childNodes.length; count > 0; --count)
16
+ e.removeChild(e.firstChild)
17
+ return e
18
+ }
19
+
20
+ export function removeChildrenAndAdd(parent, e) {
21
+ return removeChildren(parent).appendChild(e)
22
+ }
23
+
24
+ export function elt(tag, content, className, style) {
25
+ let e = document.createElement(tag)
26
+ if (className) e.className = className
27
+ if (style) e.style.cssText = style
28
+ if (typeof content == "string") e.appendChild(document.createTextNode(content))
29
+ else if (content) for (let i = 0; i < content.length; ++i) e.appendChild(content[i])
30
+ return e
31
+ }
32
+ // wrapper for elt, which removes the elt from the accessibility tree
33
+ export function eltP(tag, content, className, style) {
34
+ let e = elt(tag, content, className, style)
35
+ e.setAttribute("role", "presentation")
36
+ return e
37
+ }
38
+
39
+ export let range
40
+ if (document.createRange) range = function(node, start, end, endNode) {
41
+ let r = document.createRange()
42
+ r.setEnd(endNode || node, end)
43
+ r.setStart(node, start)
44
+ return r
45
+ }
46
+ else range = function(node, start, end) {
47
+ let r = document.body.createTextRange()
48
+ try { r.moveToElementText(node.parentNode) }
49
+ catch(e) { return r }
50
+ r.collapse(true)
51
+ r.moveEnd("character", end)
52
+ r.moveStart("character", start)
53
+ return r
54
+ }
55
+
56
+ export function contains(parent, child) {
57
+ if (child.nodeType == 3) // Android browser always returns false when child is a textnode
58
+ child = child.parentNode
59
+ if (parent.contains)
60
+ return parent.contains(child)
61
+ do {
62
+ if (child.nodeType == 11) child = child.host
63
+ if (child == parent) return true
64
+ } while (child = child.parentNode)
65
+ }
66
+
67
+ export function activeElt() {
68
+ // IE and Edge may throw an "Unspecified Error" when accessing document.activeElement.
69
+ // IE < 10 will throw when accessed while the page is loading or in an iframe.
70
+ // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.
71
+ let activeElement
72
+ try {
73
+ activeElement = document.activeElement
74
+ } catch(e) {
75
+ activeElement = document.body || null
76
+ }
77
+ while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)
78
+ activeElement = activeElement.shadowRoot.activeElement
79
+ return activeElement
80
+ }
81
+
82
+ export function addClass(node, cls) {
83
+ let current = node.className
84
+ if (!classTest(cls).test(current)) node.className += (current ? " " : "") + cls
85
+ }
86
+ export function joinClasses(a, b) {
87
+ let as = a.split(" ")
88
+ for (let i = 0; i < as.length; i++)
89
+ if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i]
90
+ return b
91
+ }
92
+
93
+ export let selectInput = function(node) { node.select() }
94
+ if (ios) // Mobile Safari apparently has a bug where select() is broken.
95
+ selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length }
96
+ else if (ie) // Suppress mysterious IE10 errors
97
+ selectInput = function(node) { try { node.select() } catch(_e) {} }
@@ -0,0 +1,103 @@
1
+ import { mac } from "./browser.js"
2
+ import { indexOf } from "./misc.js"
3
+
4
+ // EVENT HANDLING
5
+
6
+ // Lightweight event framework. on/off also work on DOM nodes,
7
+ // registering native DOM handlers.
8
+
9
+ const noHandlers = []
10
+
11
+ export let on = function(emitter, type, f) {
12
+ if (emitter.addEventListener) {
13
+ emitter.addEventListener(type, f, false)
14
+ } else if (emitter.attachEvent) {
15
+ emitter.attachEvent("on" + type, f)
16
+ } else {
17
+ let map = emitter._handlers || (emitter._handlers = {})
18
+ map[type] = (map[type] || noHandlers).concat(f)
19
+ }
20
+ }
21
+
22
+ export function getHandlers(emitter, type) {
23
+ return emitter._handlers && emitter._handlers[type] || noHandlers
24
+ }
25
+
26
+ export function off(emitter, type, f) {
27
+ if (emitter.removeEventListener) {
28
+ emitter.removeEventListener(type, f, false)
29
+ } else if (emitter.detachEvent) {
30
+ emitter.detachEvent("on" + type, f)
31
+ } else {
32
+ let map = emitter._handlers, arr = map && map[type]
33
+ if (arr) {
34
+ let index = indexOf(arr, f)
35
+ if (index > -1)
36
+ map[type] = arr.slice(0, index).concat(arr.slice(index + 1))
37
+ }
38
+ }
39
+ }
40
+
41
+ export function signal(emitter, type /*, values...*/) {
42
+ let handlers = getHandlers(emitter, type)
43
+ if (!handlers.length) return
44
+ let args = Array.prototype.slice.call(arguments, 2)
45
+ for (let i = 0; i < handlers.length; ++i) handlers[i].apply(null, args)
46
+ }
47
+
48
+ // The DOM events that CodeMirror handles can be overridden by
49
+ // registering a (non-DOM) handler on the editor for the event name,
50
+ // and preventDefault-ing the event in that handler.
51
+ export function signalDOMEvent(cm, e, override) {
52
+ if (typeof e == "string")
53
+ e = {type: e, preventDefault: function() { this.defaultPrevented = true }}
54
+ signal(cm, override || e.type, cm, e)
55
+ return e_defaultPrevented(e) || e.codemirrorIgnore
56
+ }
57
+
58
+ export function signalCursorActivity(cm) {
59
+ let arr = cm._handlers && cm._handlers.cursorActivity
60
+ if (!arr) return
61
+ let set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = [])
62
+ for (let i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1)
63
+ set.push(arr[i])
64
+ }
65
+
66
+ export function hasHandler(emitter, type) {
67
+ return getHandlers(emitter, type).length > 0
68
+ }
69
+
70
+ // Add on and off methods to a constructor's prototype, to make
71
+ // registering events on such objects more convenient.
72
+ export function eventMixin(ctor) {
73
+ ctor.prototype.on = function(type, f) {on(this, type, f)}
74
+ ctor.prototype.off = function(type, f) {off(this, type, f)}
75
+ }
76
+
77
+ // Due to the fact that we still support jurassic IE versions, some
78
+ // compatibility wrappers are needed.
79
+
80
+ export function e_preventDefault(e) {
81
+ if (e.preventDefault) e.preventDefault()
82
+ else e.returnValue = false
83
+ }
84
+ export function e_stopPropagation(e) {
85
+ if (e.stopPropagation) e.stopPropagation()
86
+ else e.cancelBubble = true
87
+ }
88
+ export function e_defaultPrevented(e) {
89
+ return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false
90
+ }
91
+ export function e_stop(e) {e_preventDefault(e); e_stopPropagation(e)}
92
+
93
+ export function e_target(e) {return e.target || e.srcElement}
94
+ export function e_button(e) {
95
+ let b = e.which
96
+ if (b == null) {
97
+ if (e.button & 1) b = 1
98
+ else if (e.button & 2) b = 3
99
+ else if (e.button & 4) b = 2
100
+ }
101
+ if (mac && e.ctrlKey && b == 1) b = 3
102
+ return b
103
+ }