tui_editor-rails 1.0.2.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 (887) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +20 -0
  6. data/README.md +69 -0
  7. data/Rakefile +2 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/example/.gitignore +30 -0
  11. data/example/.ruby-version +1 -0
  12. data/example/Gemfile +64 -0
  13. data/example/Gemfile.lock +224 -0
  14. data/example/README.md +67 -0
  15. data/example/Rakefile +6 -0
  16. data/example/app/assets/config/manifest.js +3 -0
  17. data/example/app/assets/images/.keep +0 -0
  18. data/example/app/assets/images/screen_capture.png +0 -0
  19. data/example/app/assets/javascripts/application.js +23 -0
  20. data/example/app/assets/javascripts/cable.js +13 -0
  21. data/example/app/assets/javascripts/channels/.keep +0 -0
  22. data/example/app/assets/javascripts/home.coffee +3 -0
  23. data/example/app/assets/javascripts/posts.coffee +3 -0
  24. data/example/app/assets/stylesheets/application.scss +4 -0
  25. data/example/app/assets/stylesheets/home.scss +3 -0
  26. data/example/app/assets/stylesheets/posts.scss +3 -0
  27. data/example/app/assets/stylesheets/scaffolds.scss +84 -0
  28. data/example/app/channels/application_cable/channel.rb +4 -0
  29. data/example/app/channels/application_cable/connection.rb +4 -0
  30. data/example/app/controllers/application_controller.rb +2 -0
  31. data/example/app/controllers/concerns/.keep +0 -0
  32. data/example/app/controllers/home_controller.rb +4 -0
  33. data/example/app/controllers/posts_controller.rb +74 -0
  34. data/example/app/helpers/application_helper.rb +2 -0
  35. data/example/app/helpers/home_helper.rb +2 -0
  36. data/example/app/helpers/posts_helper.rb +2 -0
  37. data/example/app/jobs/application_job.rb +2 -0
  38. data/example/app/mailers/application_mailer.rb +4 -0
  39. data/example/app/models/application_record.rb +3 -0
  40. data/example/app/models/concerns/.keep +0 -0
  41. data/example/app/models/post.rb +2 -0
  42. data/example/app/views/home/index.html.erb +11 -0
  43. data/example/app/views/layouts/application.html.erb +14 -0
  44. data/example/app/views/layouts/mailer.html.erb +13 -0
  45. data/example/app/views/layouts/mailer.text.erb +1 -0
  46. data/example/app/views/posts/_form.html.erb +27 -0
  47. data/example/app/views/posts/_post.json.jbuilder +2 -0
  48. data/example/app/views/posts/edit.html.erb +6 -0
  49. data/example/app/views/posts/index.html.erb +29 -0
  50. data/example/app/views/posts/index.json.jbuilder +1 -0
  51. data/example/app/views/posts/new.html.erb +5 -0
  52. data/example/app/views/posts/show.html.erb +14 -0
  53. data/example/app/views/posts/show.json.jbuilder +1 -0
  54. data/example/bin/bundle +3 -0
  55. data/example/bin/rails +9 -0
  56. data/example/bin/rake +9 -0
  57. data/example/bin/setup +36 -0
  58. data/example/bin/spring +17 -0
  59. data/example/bin/update +31 -0
  60. data/example/bin/yarn +11 -0
  61. data/example/config.ru +5 -0
  62. data/example/config/application.rb +19 -0
  63. data/example/config/boot.rb +4 -0
  64. data/example/config/cable.yml +10 -0
  65. data/example/config/credentials.yml.enc +1 -0
  66. data/example/config/database.yml +25 -0
  67. data/example/config/environment.rb +5 -0
  68. data/example/config/environments/development.rb +61 -0
  69. data/example/config/environments/production.rb +94 -0
  70. data/example/config/environments/test.rb +46 -0
  71. data/example/config/initializers/application_controller_renderer.rb +8 -0
  72. data/example/config/initializers/assets.rb +14 -0
  73. data/example/config/initializers/backtrace_silencers.rb +7 -0
  74. data/example/config/initializers/content_security_policy.rb +22 -0
  75. data/example/config/initializers/cookies_serializer.rb +5 -0
  76. data/example/config/initializers/filter_parameter_logging.rb +4 -0
  77. data/example/config/initializers/inflections.rb +16 -0
  78. data/example/config/initializers/mime_types.rb +4 -0
  79. data/example/config/initializers/wrap_parameters.rb +14 -0
  80. data/example/config/locales/en.yml +33 -0
  81. data/example/config/puma.rb +34 -0
  82. data/example/config/routes.rb +6 -0
  83. data/example/config/spring.rb +6 -0
  84. data/example/config/storage.yml +35 -0
  85. data/example/db/migrate/20180208210404_create_posts.rb +10 -0
  86. data/example/db/schema.rb +22 -0
  87. data/example/db/seeds.rb +7 -0
  88. data/example/lib/assets/.keep +0 -0
  89. data/example/lib/tasks/.keep +0 -0
  90. data/example/log/.keep +0 -0
  91. data/example/package.json +5 -0
  92. data/example/public/404.html +67 -0
  93. data/example/public/422.html +67 -0
  94. data/example/public/500.html +66 -0
  95. data/example/public/apple-touch-icon-precomposed.png +0 -0
  96. data/example/public/apple-touch-icon.png +0 -0
  97. data/example/public/favicon.ico +0 -0
  98. data/example/public/robots.txt +1 -0
  99. data/example/test/application_system_test_case.rb +5 -0
  100. data/example/test/controllers/.keep +0 -0
  101. data/example/test/controllers/home_controller_test.rb +9 -0
  102. data/example/test/controllers/posts_controller_test.rb +48 -0
  103. data/example/test/fixtures/.keep +0 -0
  104. data/example/test/fixtures/files/.keep +0 -0
  105. data/example/test/fixtures/posts.yml +9 -0
  106. data/example/test/helpers/.keep +0 -0
  107. data/example/test/integration/.keep +0 -0
  108. data/example/test/mailers/.keep +0 -0
  109. data/example/test/models/.keep +0 -0
  110. data/example/test/models/post_test.rb +7 -0
  111. data/example/test/system/.keep +0 -0
  112. data/example/test/system/posts_test.rb +45 -0
  113. data/example/test/test_helper.rb +10 -0
  114. data/example/tmp/.keep +0 -0
  115. data/example/vendor/.keep +0 -0
  116. data/lib/tui_editor/rails.rb +8 -0
  117. data/lib/tui_editor/rails/version.rb +5 -0
  118. data/tui_editor-rails.gemspec +34 -0
  119. data/vendor/assets/components/codemirror/.bower.json +31 -0
  120. data/vendor/assets/components/codemirror/AUTHORS +714 -0
  121. data/vendor/assets/components/codemirror/CHANGELOG.md +1316 -0
  122. data/vendor/assets/components/codemirror/CONTRIBUTING.md +92 -0
  123. data/vendor/assets/components/codemirror/LICENSE +21 -0
  124. data/vendor/assets/components/codemirror/README.md +35 -0
  125. data/vendor/assets/components/codemirror/addon/comment/comment.js +209 -0
  126. data/vendor/assets/components/codemirror/addon/comment/continuecomment.js +78 -0
  127. data/vendor/assets/components/codemirror/addon/dialog/dialog.css +32 -0
  128. data/vendor/assets/components/codemirror/addon/dialog/dialog.js +157 -0
  129. data/vendor/assets/components/codemirror/addon/display/autorefresh.js +47 -0
  130. data/vendor/assets/components/codemirror/addon/display/fullscreen.css +6 -0
  131. data/vendor/assets/components/codemirror/addon/display/fullscreen.js +41 -0
  132. data/vendor/assets/components/codemirror/addon/display/panel.js +123 -0
  133. data/vendor/assets/components/codemirror/addon/display/placeholder.js +63 -0
  134. data/vendor/assets/components/codemirror/addon/display/rulers.js +51 -0
  135. data/vendor/assets/components/codemirror/addon/edit/closebrackets.js +194 -0
  136. data/vendor/assets/components/codemirror/addon/edit/closetag.js +175 -0
  137. data/vendor/assets/components/codemirror/addon/edit/continuelist.js +89 -0
  138. data/vendor/assets/components/codemirror/addon/edit/matchbrackets.js +145 -0
  139. data/vendor/assets/components/codemirror/addon/edit/matchtags.js +66 -0
  140. data/vendor/assets/components/codemirror/addon/edit/trailingspace.js +27 -0
  141. data/vendor/assets/components/codemirror/addon/fold/brace-fold.js +105 -0
  142. data/vendor/assets/components/codemirror/addon/fold/comment-fold.js +59 -0
  143. data/vendor/assets/components/codemirror/addon/fold/foldcode.js +152 -0
  144. data/vendor/assets/components/codemirror/addon/fold/foldgutter.css +20 -0
  145. data/vendor/assets/components/codemirror/addon/fold/foldgutter.js +146 -0
  146. data/vendor/assets/components/codemirror/addon/fold/indent-fold.js +48 -0
  147. data/vendor/assets/components/codemirror/addon/fold/markdown-fold.js +49 -0
  148. data/vendor/assets/components/codemirror/addon/fold/xml-fold.js +182 -0
  149. data/vendor/assets/components/codemirror/addon/hint/anyword-hint.js +41 -0
  150. data/vendor/assets/components/codemirror/addon/hint/css-hint.js +60 -0
  151. data/vendor/assets/components/codemirror/addon/hint/html-hint.js +348 -0
  152. data/vendor/assets/components/codemirror/addon/hint/javascript-hint.js +155 -0
  153. data/vendor/assets/components/codemirror/addon/hint/show-hint.css +36 -0
  154. data/vendor/assets/components/codemirror/addon/hint/show-hint.js +432 -0
  155. data/vendor/assets/components/codemirror/addon/hint/sql-hint.js +286 -0
  156. data/vendor/assets/components/codemirror/addon/hint/xml-hint.js +110 -0
  157. data/vendor/assets/components/codemirror/addon/lint/coffeescript-lint.js +47 -0
  158. data/vendor/assets/components/codemirror/addon/lint/css-lint.js +40 -0
  159. data/vendor/assets/components/codemirror/addon/lint/html-lint.js +53 -0
  160. data/vendor/assets/components/codemirror/addon/lint/javascript-lint.js +63 -0
  161. data/vendor/assets/components/codemirror/addon/lint/json-lint.js +37 -0
  162. data/vendor/assets/components/codemirror/addon/lint/lint.css +73 -0
  163. data/vendor/assets/components/codemirror/addon/lint/lint.js +252 -0
  164. data/vendor/assets/components/codemirror/addon/lint/yaml-lint.js +41 -0
  165. data/vendor/assets/components/codemirror/addon/merge/merge.css +113 -0
  166. data/vendor/assets/components/codemirror/addon/merge/merge.js +1001 -0
  167. data/vendor/assets/components/codemirror/addon/mode/loadmode.js +64 -0
  168. data/vendor/assets/components/codemirror/addon/mode/multiplex.js +123 -0
  169. data/vendor/assets/components/codemirror/addon/mode/multiplex_test.js +33 -0
  170. data/vendor/assets/components/codemirror/addon/mode/overlay.js +90 -0
  171. data/vendor/assets/components/codemirror/addon/mode/simple.js +216 -0
  172. data/vendor/assets/components/codemirror/addon/runmode/colorize.js +40 -0
  173. data/vendor/assets/components/codemirror/addon/runmode/runmode-standalone.js +158 -0
  174. data/vendor/assets/components/codemirror/addon/runmode/runmode.js +72 -0
  175. data/vendor/assets/components/codemirror/addon/runmode/runmode.node.js +197 -0
  176. data/vendor/assets/components/codemirror/addon/scroll/annotatescrollbar.js +122 -0
  177. data/vendor/assets/components/codemirror/addon/scroll/scrollpastend.js +48 -0
  178. data/vendor/assets/components/codemirror/addon/scroll/simplescrollbars.css +66 -0
  179. data/vendor/assets/components/codemirror/addon/scroll/simplescrollbars.js +152 -0
  180. data/vendor/assets/components/codemirror/addon/search/jump-to-line.js +49 -0
  181. data/vendor/assets/components/codemirror/addon/search/match-highlighter.js +165 -0
  182. data/vendor/assets/components/codemirror/addon/search/matchesonscrollbar.css +8 -0
  183. data/vendor/assets/components/codemirror/addon/search/matchesonscrollbar.js +97 -0
  184. data/vendor/assets/components/codemirror/addon/search/search.js +252 -0
  185. data/vendor/assets/components/codemirror/addon/search/searchcursor.js +289 -0
  186. data/vendor/assets/components/codemirror/addon/selection/active-line.js +72 -0
  187. data/vendor/assets/components/codemirror/addon/selection/mark-selection.js +119 -0
  188. data/vendor/assets/components/codemirror/addon/selection/selection-pointer.js +98 -0
  189. data/vendor/assets/components/codemirror/addon/tern/tern.css +87 -0
  190. data/vendor/assets/components/codemirror/addon/tern/tern.js +718 -0
  191. data/vendor/assets/components/codemirror/addon/tern/worker.js +44 -0
  192. data/vendor/assets/components/codemirror/addon/wrap/hardwrap.js +144 -0
  193. data/vendor/assets/components/codemirror/bower.json +17 -0
  194. data/vendor/assets/components/codemirror/component-tools/bower.json +17 -0
  195. data/vendor/assets/components/codemirror/component-tools/build.sh +31 -0
  196. data/vendor/assets/components/codemirror/component-tools/update.py +38 -0
  197. data/vendor/assets/components/codemirror/keymap/emacs.js +416 -0
  198. data/vendor/assets/components/codemirror/keymap/sublime.js +685 -0
  199. data/vendor/assets/components/codemirror/keymap/vim.js +5219 -0
  200. data/vendor/assets/components/codemirror/lib/codemirror.css +346 -0
  201. data/vendor/assets/components/codemirror/lib/codemirror.js +9669 -0
  202. data/vendor/assets/components/codemirror/mode/apl/apl.js +174 -0
  203. data/vendor/assets/components/codemirror/mode/asciiarmor/asciiarmor.js +74 -0
  204. data/vendor/assets/components/codemirror/mode/asn.1/asn.1.js +204 -0
  205. data/vendor/assets/components/codemirror/mode/asterisk/asterisk.js +196 -0
  206. data/vendor/assets/components/codemirror/mode/brainfuck/brainfuck.js +85 -0
  207. data/vendor/assets/components/codemirror/mode/clike/clike.js +817 -0
  208. data/vendor/assets/components/codemirror/mode/clojure/clojure.js +306 -0
  209. data/vendor/assets/components/codemirror/mode/cmake/cmake.js +97 -0
  210. data/vendor/assets/components/codemirror/mode/cobol/cobol.js +255 -0
  211. data/vendor/assets/components/codemirror/mode/coffeescript/coffeescript.js +359 -0
  212. data/vendor/assets/components/codemirror/mode/commonlisp/commonlisp.js +124 -0
  213. data/vendor/assets/components/codemirror/mode/crystal/crystal.js +433 -0
  214. data/vendor/assets/components/codemirror/mode/css/css.js +832 -0
  215. data/vendor/assets/components/codemirror/mode/cypher/cypher.js +150 -0
  216. data/vendor/assets/components/codemirror/mode/d/d.js +218 -0
  217. data/vendor/assets/components/codemirror/mode/dart/dart.js +157 -0
  218. data/vendor/assets/components/codemirror/mode/diff/diff.js +47 -0
  219. data/vendor/assets/components/codemirror/mode/django/django.js +356 -0
  220. data/vendor/assets/components/codemirror/mode/dockerfile/dockerfile.js +79 -0
  221. data/vendor/assets/components/codemirror/mode/dtd/dtd.js +142 -0
  222. data/vendor/assets/components/codemirror/mode/dylan/dylan.js +352 -0
  223. data/vendor/assets/components/codemirror/mode/ebnf/ebnf.js +195 -0
  224. data/vendor/assets/components/codemirror/mode/ecl/ecl.js +206 -0
  225. data/vendor/assets/components/codemirror/mode/eiffel/eiffel.js +160 -0
  226. data/vendor/assets/components/codemirror/mode/elm/elm.js +205 -0
  227. data/vendor/assets/components/codemirror/mode/erlang/erlang.js +619 -0
  228. data/vendor/assets/components/codemirror/mode/factor/factor.js +85 -0
  229. data/vendor/assets/components/codemirror/mode/fcl/fcl.js +173 -0
  230. data/vendor/assets/components/codemirror/mode/forth/forth.js +180 -0
  231. data/vendor/assets/components/codemirror/mode/fortran/fortran.js +188 -0
  232. data/vendor/assets/components/codemirror/mode/gas/gas.js +345 -0
  233. data/vendor/assets/components/codemirror/mode/gfm/gfm.js +129 -0
  234. data/vendor/assets/components/codemirror/mode/gherkin/gherkin.js +178 -0
  235. data/vendor/assets/components/codemirror/mode/go/go.js +187 -0
  236. data/vendor/assets/components/codemirror/mode/groovy/groovy.js +230 -0
  237. data/vendor/assets/components/codemirror/mode/haml/haml.js +161 -0
  238. data/vendor/assets/components/codemirror/mode/handlebars/handlebars.js +62 -0
  239. data/vendor/assets/components/codemirror/mode/haskell-literate/haskell-literate.js +43 -0
  240. data/vendor/assets/components/codemirror/mode/haskell/haskell.js +267 -0
  241. data/vendor/assets/components/codemirror/mode/haxe/haxe.js +515 -0
  242. data/vendor/assets/components/codemirror/mode/htmlembedded/htmlembedded.js +37 -0
  243. data/vendor/assets/components/codemirror/mode/htmlmixed/htmlmixed.js +152 -0
  244. data/vendor/assets/components/codemirror/mode/http/http.js +113 -0
  245. data/vendor/assets/components/codemirror/mode/idl/idl.js +290 -0
  246. data/vendor/assets/components/codemirror/mode/javascript/javascript.js +865 -0
  247. data/vendor/assets/components/codemirror/mode/jinja2/jinja2.js +142 -0
  248. data/vendor/assets/components/codemirror/mode/jsx/jsx.js +148 -0
  249. data/vendor/assets/components/codemirror/mode/julia/julia.js +418 -0
  250. data/vendor/assets/components/codemirror/mode/livescript/livescript.js +280 -0
  251. data/vendor/assets/components/codemirror/mode/lua/lua.js +159 -0
  252. data/vendor/assets/components/codemirror/mode/markdown/markdown.js +872 -0
  253. data/vendor/assets/components/codemirror/mode/mathematica/mathematica.js +176 -0
  254. data/vendor/assets/components/codemirror/mode/mbox/mbox.js +129 -0
  255. data/vendor/assets/components/codemirror/mode/meta.js +217 -0
  256. data/vendor/assets/components/codemirror/mode/mirc/mirc.js +193 -0
  257. data/vendor/assets/components/codemirror/mode/mllike/mllike.js +356 -0
  258. data/vendor/assets/components/codemirror/mode/modelica/modelica.js +245 -0
  259. data/vendor/assets/components/codemirror/mode/mscgen/mscgen.js +175 -0
  260. data/vendor/assets/components/codemirror/mode/mumps/mumps.js +148 -0
  261. data/vendor/assets/components/codemirror/mode/nginx/nginx.js +178 -0
  262. data/vendor/assets/components/codemirror/mode/nsis/nsis.js +95 -0
  263. data/vendor/assets/components/codemirror/mode/ntriples/ntriples.js +195 -0
  264. data/vendor/assets/components/codemirror/mode/octave/octave.js +139 -0
  265. data/vendor/assets/components/codemirror/mode/oz/oz.js +252 -0
  266. data/vendor/assets/components/codemirror/mode/pascal/pascal.js +109 -0
  267. data/vendor/assets/components/codemirror/mode/pegjs/pegjs.js +114 -0
  268. data/vendor/assets/components/codemirror/mode/perl/perl.js +837 -0
  269. data/vendor/assets/components/codemirror/mode/php/php.js +234 -0
  270. data/vendor/assets/components/codemirror/mode/pig/pig.js +178 -0
  271. data/vendor/assets/components/codemirror/mode/powershell/powershell.js +398 -0
  272. data/vendor/assets/components/codemirror/mode/properties/properties.js +78 -0
  273. data/vendor/assets/components/codemirror/mode/protobuf/protobuf.js +69 -0
  274. data/vendor/assets/components/codemirror/mode/pug/pug.js +591 -0
  275. data/vendor/assets/components/codemirror/mode/puppet/puppet.js +220 -0
  276. data/vendor/assets/components/codemirror/mode/python/python.js +334 -0
  277. data/vendor/assets/components/codemirror/mode/q/q.js +139 -0
  278. data/vendor/assets/components/codemirror/mode/r/r.js +183 -0
  279. data/vendor/assets/components/codemirror/mode/rpm/rpm.js +109 -0
  280. data/vendor/assets/components/codemirror/mode/rst/rst.js +557 -0
  281. data/vendor/assets/components/codemirror/mode/ruby/ruby.js +296 -0
  282. data/vendor/assets/components/codemirror/mode/rust/rust.js +72 -0
  283. data/vendor/assets/components/codemirror/mode/sas/sas.js +303 -0
  284. data/vendor/assets/components/codemirror/mode/sass/sass.js +454 -0
  285. data/vendor/assets/components/codemirror/mode/scheme/scheme.js +249 -0
  286. data/vendor/assets/components/codemirror/mode/shell/shell.js +151 -0
  287. data/vendor/assets/components/codemirror/mode/sieve/sieve.js +193 -0
  288. data/vendor/assets/components/codemirror/mode/slim/slim.js +575 -0
  289. data/vendor/assets/components/codemirror/mode/smalltalk/smalltalk.js +168 -0
  290. data/vendor/assets/components/codemirror/mode/smarty/smarty.js +225 -0
  291. data/vendor/assets/components/codemirror/mode/solr/solr.js +104 -0
  292. data/vendor/assets/components/codemirror/mode/soy/soy.js +354 -0
  293. data/vendor/assets/components/codemirror/mode/sparql/sparql.js +180 -0
  294. data/vendor/assets/components/codemirror/mode/spreadsheet/spreadsheet.js +112 -0
  295. data/vendor/assets/components/codemirror/mode/sql/sql.js +488 -0
  296. data/vendor/assets/components/codemirror/mode/stex/stex.js +251 -0
  297. data/vendor/assets/components/codemirror/mode/stylus/stylus.js +771 -0
  298. data/vendor/assets/components/codemirror/mode/swift/swift.js +219 -0
  299. data/vendor/assets/components/codemirror/mode/tcl/tcl.js +139 -0
  300. data/vendor/assets/components/codemirror/mode/textile/textile.js +469 -0
  301. data/vendor/assets/components/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  302. data/vendor/assets/components/codemirror/mode/tiddlywiki/tiddlywiki.js +308 -0
  303. data/vendor/assets/components/codemirror/mode/tiki/tiki.css +26 -0
  304. data/vendor/assets/components/codemirror/mode/tiki/tiki.js +312 -0
  305. data/vendor/assets/components/codemirror/mode/toml/toml.js +88 -0
  306. data/vendor/assets/components/codemirror/mode/tornado/tornado.js +68 -0
  307. data/vendor/assets/components/codemirror/mode/troff/troff.js +84 -0
  308. data/vendor/assets/components/codemirror/mode/ttcn-cfg/ttcn-cfg.js +214 -0
  309. data/vendor/assets/components/codemirror/mode/ttcn/ttcn.js +283 -0
  310. data/vendor/assets/components/codemirror/mode/turtle/turtle.js +162 -0
  311. data/vendor/assets/components/codemirror/mode/twig/twig.js +141 -0
  312. data/vendor/assets/components/codemirror/mode/vb/vb.js +275 -0
  313. data/vendor/assets/components/codemirror/mode/vbscript/vbscript.js +350 -0
  314. data/vendor/assets/components/codemirror/mode/velocity/velocity.js +201 -0
  315. data/vendor/assets/components/codemirror/mode/verilog/verilog.js +675 -0
  316. data/vendor/assets/components/codemirror/mode/vhdl/vhdl.js +189 -0
  317. data/vendor/assets/components/codemirror/mode/vue/vue.js +77 -0
  318. data/vendor/assets/components/codemirror/mode/webidl/webidl.js +195 -0
  319. data/vendor/assets/components/codemirror/mode/xml/xml.js +401 -0
  320. data/vendor/assets/components/codemirror/mode/xquery/xquery.js +448 -0
  321. data/vendor/assets/components/codemirror/mode/yacas/yacas.js +204 -0
  322. data/vendor/assets/components/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +68 -0
  323. data/vendor/assets/components/codemirror/mode/yaml/yaml.js +118 -0
  324. data/vendor/assets/components/codemirror/mode/z80/z80.js +116 -0
  325. data/vendor/assets/components/codemirror/rollup.config.js +18 -0
  326. data/vendor/assets/components/codemirror/src/codemirror.js +3 -0
  327. data/vendor/assets/components/codemirror/src/display/Display.js +106 -0
  328. data/vendor/assets/components/codemirror/src/display/focus.js +47 -0
  329. data/vendor/assets/components/codemirror/src/display/gutters.js +34 -0
  330. data/vendor/assets/components/codemirror/src/display/highlight_worker.js +55 -0
  331. data/vendor/assets/components/codemirror/src/display/line_numbers.js +48 -0
  332. data/vendor/assets/components/codemirror/src/display/mode_state.js +22 -0
  333. data/vendor/assets/components/codemirror/src/display/operations.js +205 -0
  334. data/vendor/assets/components/codemirror/src/display/scroll_events.js +115 -0
  335. data/vendor/assets/components/codemirror/src/display/scrollbars.js +192 -0
  336. data/vendor/assets/components/codemirror/src/display/scrolling.js +184 -0
  337. data/vendor/assets/components/codemirror/src/display/selection.js +158 -0
  338. data/vendor/assets/components/codemirror/src/display/update_display.js +260 -0
  339. data/vendor/assets/components/codemirror/src/display/update_line.js +188 -0
  340. data/vendor/assets/components/codemirror/src/display/update_lines.js +64 -0
  341. data/vendor/assets/components/codemirror/src/display/view_tracking.js +153 -0
  342. data/vendor/assets/components/codemirror/src/edit/CodeMirror.js +214 -0
  343. data/vendor/assets/components/codemirror/src/edit/commands.js +178 -0
  344. data/vendor/assets/components/codemirror/src/edit/deleteNearSelection.js +30 -0
  345. data/vendor/assets/components/codemirror/src/edit/drop_events.js +119 -0
  346. data/vendor/assets/components/codemirror/src/edit/fromTextArea.js +61 -0
  347. data/vendor/assets/components/codemirror/src/edit/global_events.js +44 -0
  348. data/vendor/assets/components/codemirror/src/edit/key_events.js +159 -0
  349. data/vendor/assets/components/codemirror/src/edit/legacy.js +62 -0
  350. data/vendor/assets/components/codemirror/src/edit/main.js +69 -0
  351. data/vendor/assets/components/codemirror/src/edit/methods.js +539 -0
  352. data/vendor/assets/components/codemirror/src/edit/mouse_events.js +407 -0
  353. data/vendor/assets/components/codemirror/src/edit/options.js +191 -0
  354. data/vendor/assets/components/codemirror/src/edit/utils.js +7 -0
  355. data/vendor/assets/components/codemirror/src/input/ContentEditableInput.js +517 -0
  356. data/vendor/assets/components/codemirror/src/input/TextareaInput.js +350 -0
  357. data/vendor/assets/components/codemirror/src/input/indent.js +71 -0
  358. data/vendor/assets/components/codemirror/src/input/input.js +135 -0
  359. data/vendor/assets/components/codemirror/src/input/keymap.js +148 -0
  360. data/vendor/assets/components/codemirror/src/input/keynames.js +17 -0
  361. data/vendor/assets/components/codemirror/src/input/movement.js +110 -0
  362. data/vendor/assets/components/codemirror/src/line/highlight.js +284 -0
  363. data/vendor/assets/components/codemirror/src/line/line_data.js +337 -0
  364. data/vendor/assets/components/codemirror/src/line/pos.js +40 -0
  365. data/vendor/assets/components/codemirror/src/line/saw_special_spans.js +10 -0
  366. data/vendor/assets/components/codemirror/src/line/spans.js +372 -0
  367. data/vendor/assets/components/codemirror/src/line/utils_line.js +85 -0
  368. data/vendor/assets/components/codemirror/src/measurement/position_measurement.js +700 -0
  369. data/vendor/assets/components/codemirror/src/measurement/widgets.js +26 -0
  370. data/vendor/assets/components/codemirror/src/model/Doc.js +432 -0
  371. data/vendor/assets/components/codemirror/src/model/change_measurement.js +61 -0
  372. data/vendor/assets/components/codemirror/src/model/changes.js +330 -0
  373. data/vendor/assets/components/codemirror/src/model/chunk.js +167 -0
  374. data/vendor/assets/components/codemirror/src/model/document_data.js +111 -0
  375. data/vendor/assets/components/codemirror/src/model/history.js +228 -0
  376. data/vendor/assets/components/codemirror/src/model/line_widget.js +78 -0
  377. data/vendor/assets/components/codemirror/src/model/mark_text.js +292 -0
  378. data/vendor/assets/components/codemirror/src/model/selection.js +82 -0
  379. data/vendor/assets/components/codemirror/src/model/selection_updates.js +208 -0
  380. data/vendor/assets/components/codemirror/src/modes.js +96 -0
  381. data/vendor/assets/components/codemirror/src/util/StringStream.js +90 -0
  382. data/vendor/assets/components/codemirror/src/util/bidi.js +214 -0
  383. data/vendor/assets/components/codemirror/src/util/browser.js +33 -0
  384. data/vendor/assets/components/codemirror/src/util/dom.js +97 -0
  385. data/vendor/assets/components/codemirror/src/util/event.js +103 -0
  386. data/vendor/assets/components/codemirror/src/util/feature_detection.js +84 -0
  387. data/vendor/assets/components/codemirror/src/util/misc.js +150 -0
  388. data/vendor/assets/components/codemirror/src/util/operation_group.js +72 -0
  389. data/vendor/assets/components/codemirror/theme/3024-day.css +41 -0
  390. data/vendor/assets/components/codemirror/theme/3024-night.css +39 -0
  391. data/vendor/assets/components/codemirror/theme/abcdef.css +32 -0
  392. data/vendor/assets/components/codemirror/theme/ambiance-mobile.css +5 -0
  393. data/vendor/assets/components/codemirror/theme/ambiance.css +74 -0
  394. data/vendor/assets/components/codemirror/theme/base16-dark.css +38 -0
  395. data/vendor/assets/components/codemirror/theme/base16-light.css +38 -0
  396. data/vendor/assets/components/codemirror/theme/bespin.css +34 -0
  397. data/vendor/assets/components/codemirror/theme/blackboard.css +32 -0
  398. data/vendor/assets/components/codemirror/theme/cobalt.css +25 -0
  399. data/vendor/assets/components/codemirror/theme/colorforth.css +33 -0
  400. data/vendor/assets/components/codemirror/theme/dracula.css +40 -0
  401. data/vendor/assets/components/codemirror/theme/duotone-dark.css +35 -0
  402. data/vendor/assets/components/codemirror/theme/duotone-light.css +36 -0
  403. data/vendor/assets/components/codemirror/theme/eclipse.css +23 -0
  404. data/vendor/assets/components/codemirror/theme/elegant.css +13 -0
  405. data/vendor/assets/components/codemirror/theme/erlang-dark.css +34 -0
  406. data/vendor/assets/components/codemirror/theme/hopscotch.css +34 -0
  407. data/vendor/assets/components/codemirror/theme/icecoder.css +43 -0
  408. data/vendor/assets/components/codemirror/theme/isotope.css +34 -0
  409. data/vendor/assets/components/codemirror/theme/lesser-dark.css +47 -0
  410. data/vendor/assets/components/codemirror/theme/liquibyte.css +95 -0
  411. data/vendor/assets/components/codemirror/theme/material.css +53 -0
  412. data/vendor/assets/components/codemirror/theme/mbo.css +37 -0
  413. data/vendor/assets/components/codemirror/theme/mdn-like.css +46 -0
  414. data/vendor/assets/components/codemirror/theme/midnight.css +43 -0
  415. data/vendor/assets/components/codemirror/theme/monokai.css +36 -0
  416. data/vendor/assets/components/codemirror/theme/neat.css +12 -0
  417. data/vendor/assets/components/codemirror/theme/neo.css +43 -0
  418. data/vendor/assets/components/codemirror/theme/night.css +27 -0
  419. data/vendor/assets/components/codemirror/theme/oceanic-next.css +44 -0
  420. data/vendor/assets/components/codemirror/theme/panda-syntax.css +85 -0
  421. data/vendor/assets/components/codemirror/theme/paraiso-dark.css +38 -0
  422. data/vendor/assets/components/codemirror/theme/paraiso-light.css +38 -0
  423. data/vendor/assets/components/codemirror/theme/pastel-on-dark.css +52 -0
  424. data/vendor/assets/components/codemirror/theme/railscasts.css +34 -0
  425. data/vendor/assets/components/codemirror/theme/rubyblue.css +25 -0
  426. data/vendor/assets/components/codemirror/theme/seti.css +44 -0
  427. data/vendor/assets/components/codemirror/theme/shadowfox.css +52 -0
  428. data/vendor/assets/components/codemirror/theme/solarized.css +168 -0
  429. data/vendor/assets/components/codemirror/theme/the-matrix.css +30 -0
  430. data/vendor/assets/components/codemirror/theme/tomorrow-night-bright.css +35 -0
  431. data/vendor/assets/components/codemirror/theme/tomorrow-night-eighties.css +38 -0
  432. data/vendor/assets/components/codemirror/theme/ttcn.css +64 -0
  433. data/vendor/assets/components/codemirror/theme/twilight.css +32 -0
  434. data/vendor/assets/components/codemirror/theme/vibrant-ink.css +34 -0
  435. data/vendor/assets/components/codemirror/theme/xq-dark.css +53 -0
  436. data/vendor/assets/components/codemirror/theme/xq-light.css +43 -0
  437. data/vendor/assets/components/codemirror/theme/yeti.css +44 -0
  438. data/vendor/assets/components/codemirror/theme/zenburn.css +37 -0
  439. data/vendor/assets/components/eve/.bower.json +12 -0
  440. data/vendor/assets/components/eve/LICENSE +202 -0
  441. data/vendor/assets/components/eve/README.md +7 -0
  442. data/vendor/assets/components/eve/component.json +13 -0
  443. data/vendor/assets/components/eve/e.html +66 -0
  444. data/vendor/assets/components/eve/eve.js +371 -0
  445. data/vendor/assets/components/eve/package.json +18 -0
  446. data/vendor/assets/components/highlightjs/.bower.json +24 -0
  447. data/vendor/assets/components/highlightjs/LICENSE +24 -0
  448. data/vendor/assets/components/highlightjs/Makefile +21 -0
  449. data/vendor/assets/components/highlightjs/README.md +12 -0
  450. data/vendor/assets/components/highlightjs/bower.json +14 -0
  451. data/vendor/assets/components/highlightjs/component.json +12 -0
  452. data/vendor/assets/components/highlightjs/composer.json +26 -0
  453. data/vendor/assets/components/highlightjs/highlight.pack.js +16645 -0
  454. data/vendor/assets/components/highlightjs/highlight.pack.min.js +15 -0
  455. data/vendor/assets/components/highlightjs/package.json +8 -0
  456. data/vendor/assets/components/highlightjs/styles/agate.css +108 -0
  457. data/vendor/assets/components/highlightjs/styles/androidstudio.css +66 -0
  458. data/vendor/assets/components/highlightjs/styles/arduino-light.css +88 -0
  459. data/vendor/assets/components/highlightjs/styles/arta.css +73 -0
  460. data/vendor/assets/components/highlightjs/styles/ascetic.css +45 -0
  461. data/vendor/assets/components/highlightjs/styles/atelier-cave-dark.css +83 -0
  462. data/vendor/assets/components/highlightjs/styles/atelier-cave-light.css +85 -0
  463. data/vendor/assets/components/highlightjs/styles/atelier-cave.dark.css +113 -0
  464. data/vendor/assets/components/highlightjs/styles/atelier-cave.light.css +113 -0
  465. data/vendor/assets/components/highlightjs/styles/atelier-dune-dark.css +69 -0
  466. data/vendor/assets/components/highlightjs/styles/atelier-dune-light.css +69 -0
  467. data/vendor/assets/components/highlightjs/styles/atelier-dune.dark.css +94 -0
  468. data/vendor/assets/components/highlightjs/styles/atelier-dune.light.css +94 -0
  469. data/vendor/assets/components/highlightjs/styles/atelier-estuary-dark.css +84 -0
  470. data/vendor/assets/components/highlightjs/styles/atelier-estuary-light.css +84 -0
  471. data/vendor/assets/components/highlightjs/styles/atelier-estuary.dark.css +113 -0
  472. data/vendor/assets/components/highlightjs/styles/atelier-estuary.light.css +113 -0
  473. data/vendor/assets/components/highlightjs/styles/atelier-forest-dark.css +69 -0
  474. data/vendor/assets/components/highlightjs/styles/atelier-forest-light.css +69 -0
  475. data/vendor/assets/components/highlightjs/styles/atelier-forest.dark.css +94 -0
  476. data/vendor/assets/components/highlightjs/styles/atelier-forest.light.css +94 -0
  477. data/vendor/assets/components/highlightjs/styles/atelier-heath-dark.css +69 -0
  478. data/vendor/assets/components/highlightjs/styles/atelier-heath-light.css +69 -0
  479. data/vendor/assets/components/highlightjs/styles/atelier-heath.dark.css +94 -0
  480. data/vendor/assets/components/highlightjs/styles/atelier-heath.light.css +94 -0
  481. data/vendor/assets/components/highlightjs/styles/atelier-lakeside-dark.css +69 -0
  482. data/vendor/assets/components/highlightjs/styles/atelier-lakeside-light.css +69 -0
  483. data/vendor/assets/components/highlightjs/styles/atelier-lakeside.dark.css +94 -0
  484. data/vendor/assets/components/highlightjs/styles/atelier-lakeside.light.css +94 -0
  485. data/vendor/assets/components/highlightjs/styles/atelier-plateau-dark.css +84 -0
  486. data/vendor/assets/components/highlightjs/styles/atelier-plateau-light.css +84 -0
  487. data/vendor/assets/components/highlightjs/styles/atelier-plateau.dark.css +113 -0
  488. data/vendor/assets/components/highlightjs/styles/atelier-plateau.light.css +113 -0
  489. data/vendor/assets/components/highlightjs/styles/atelier-savanna-dark.css +84 -0
  490. data/vendor/assets/components/highlightjs/styles/atelier-savanna-light.css +84 -0
  491. data/vendor/assets/components/highlightjs/styles/atelier-savanna.dark.css +113 -0
  492. data/vendor/assets/components/highlightjs/styles/atelier-savanna.light.css +113 -0
  493. data/vendor/assets/components/highlightjs/styles/atelier-seaside-dark.css +69 -0
  494. data/vendor/assets/components/highlightjs/styles/atelier-seaside-light.css +69 -0
  495. data/vendor/assets/components/highlightjs/styles/atelier-seaside.dark.css +94 -0
  496. data/vendor/assets/components/highlightjs/styles/atelier-seaside.light.css +94 -0
  497. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool-dark.css +69 -0
  498. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool-light.css +69 -0
  499. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool.dark.css +94 -0
  500. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool.light.css +94 -0
  501. data/vendor/assets/components/highlightjs/styles/atom-one-dark.css +96 -0
  502. data/vendor/assets/components/highlightjs/styles/atom-one-light.css +96 -0
  503. data/vendor/assets/components/highlightjs/styles/brown-paper.css +64 -0
  504. data/vendor/assets/components/highlightjs/styles/brown-papersq.png +0 -0
  505. data/vendor/assets/components/highlightjs/styles/brown_paper.css +103 -0
  506. data/vendor/assets/components/highlightjs/styles/brown_papersq.png +0 -0
  507. data/vendor/assets/components/highlightjs/styles/codepen-embed.css +60 -0
  508. data/vendor/assets/components/highlightjs/styles/color-brewer.css +71 -0
  509. data/vendor/assets/components/highlightjs/styles/darcula.css +77 -0
  510. data/vendor/assets/components/highlightjs/styles/dark.css +63 -0
  511. data/vendor/assets/components/highlightjs/styles/darkula.css +6 -0
  512. data/vendor/assets/components/highlightjs/styles/default.css +99 -0
  513. data/vendor/assets/components/highlightjs/styles/docco.css +97 -0
  514. data/vendor/assets/components/highlightjs/styles/dracula.css +76 -0
  515. data/vendor/assets/components/highlightjs/styles/far.css +71 -0
  516. data/vendor/assets/components/highlightjs/styles/foundation.css +88 -0
  517. data/vendor/assets/components/highlightjs/styles/github-gist.css +71 -0
  518. data/vendor/assets/components/highlightjs/styles/github.css +99 -0
  519. data/vendor/assets/components/highlightjs/styles/googlecode.css +89 -0
  520. data/vendor/assets/components/highlightjs/styles/grayscale.css +101 -0
  521. data/vendor/assets/components/highlightjs/styles/gruvbox-dark.css +108 -0
  522. data/vendor/assets/components/highlightjs/styles/gruvbox-light.css +108 -0
  523. data/vendor/assets/components/highlightjs/styles/hopscotch.css +83 -0
  524. data/vendor/assets/components/highlightjs/styles/hybrid.css +102 -0
  525. data/vendor/assets/components/highlightjs/styles/idea.css +97 -0
  526. data/vendor/assets/components/highlightjs/styles/ir-black.css +73 -0
  527. data/vendor/assets/components/highlightjs/styles/ir_black.css +106 -0
  528. data/vendor/assets/components/highlightjs/styles/kimbie.dark.css +74 -0
  529. data/vendor/assets/components/highlightjs/styles/kimbie.light.css +74 -0
  530. data/vendor/assets/components/highlightjs/styles/magula.css +70 -0
  531. data/vendor/assets/components/highlightjs/styles/mono-blue.css +59 -0
  532. data/vendor/assets/components/highlightjs/styles/monokai-sublime.css +83 -0
  533. data/vendor/assets/components/highlightjs/styles/monokai.css +70 -0
  534. data/vendor/assets/components/highlightjs/styles/monokai_sublime.css +154 -0
  535. data/vendor/assets/components/highlightjs/styles/obsidian.css +88 -0
  536. data/vendor/assets/components/highlightjs/styles/ocean.css +74 -0
  537. data/vendor/assets/components/highlightjs/styles/paraiso-dark.css +72 -0
  538. data/vendor/assets/components/highlightjs/styles/paraiso-light.css +72 -0
  539. data/vendor/assets/components/highlightjs/styles/paraiso.dark.css +96 -0
  540. data/vendor/assets/components/highlightjs/styles/paraiso.light.css +96 -0
  541. data/vendor/assets/components/highlightjs/styles/pojoaque.css +83 -0
  542. data/vendor/assets/components/highlightjs/styles/pojoaque.jpg +0 -0
  543. data/vendor/assets/components/highlightjs/styles/purebasic.css +96 -0
  544. data/vendor/assets/components/highlightjs/styles/qtcreator_dark.css +83 -0
  545. data/vendor/assets/components/highlightjs/styles/qtcreator_light.css +83 -0
  546. data/vendor/assets/components/highlightjs/styles/railscasts.css +106 -0
  547. data/vendor/assets/components/highlightjs/styles/rainbow.css +85 -0
  548. data/vendor/assets/components/highlightjs/styles/routeros.css +108 -0
  549. data/vendor/assets/components/highlightjs/styles/school-book.css +72 -0
  550. data/vendor/assets/components/highlightjs/styles/school-book.png +0 -0
  551. data/vendor/assets/components/highlightjs/styles/school_book.css +111 -0
  552. data/vendor/assets/components/highlightjs/styles/school_book.png +0 -0
  553. data/vendor/assets/components/highlightjs/styles/solarized-dark.css +84 -0
  554. data/vendor/assets/components/highlightjs/styles/solarized-light.css +84 -0
  555. data/vendor/assets/components/highlightjs/styles/solarized_dark.css +107 -0
  556. data/vendor/assets/components/highlightjs/styles/solarized_light.css +107 -0
  557. data/vendor/assets/components/highlightjs/styles/sunburst.css +102 -0
  558. data/vendor/assets/components/highlightjs/styles/tomorrow-night-blue.css +75 -0
  559. data/vendor/assets/components/highlightjs/styles/tomorrow-night-bright.css +74 -0
  560. data/vendor/assets/components/highlightjs/styles/tomorrow-night-eighties.css +74 -0
  561. data/vendor/assets/components/highlightjs/styles/tomorrow-night.css +75 -0
  562. data/vendor/assets/components/highlightjs/styles/tomorrow.css +72 -0
  563. data/vendor/assets/components/highlightjs/styles/vs.css +68 -0
  564. data/vendor/assets/components/highlightjs/styles/vs2015.css +115 -0
  565. data/vendor/assets/components/highlightjs/styles/xcode.css +93 -0
  566. data/vendor/assets/components/highlightjs/styles/xt256.css +92 -0
  567. data/vendor/assets/components/highlightjs/styles/zenburn.css +80 -0
  568. data/vendor/assets/components/jquery/.bower.json +25 -0
  569. data/vendor/assets/components/jquery/AUTHORS.txt +313 -0
  570. data/vendor/assets/components/jquery/LICENSE.txt +36 -0
  571. data/vendor/assets/components/jquery/README.md +67 -0
  572. data/vendor/assets/components/jquery/bower.json +14 -0
  573. data/vendor/assets/components/jquery/dist/core.js +399 -0
  574. data/vendor/assets/components/jquery/dist/jquery.js +10364 -0
  575. data/vendor/assets/components/jquery/dist/jquery.min.js +2 -0
  576. data/vendor/assets/components/jquery/dist/jquery.min.map +1 -0
  577. data/vendor/assets/components/jquery/dist/jquery.slim.js +8269 -0
  578. data/vendor/assets/components/jquery/dist/jquery.slim.min.js +2 -0
  579. data/vendor/assets/components/jquery/dist/jquery.slim.min.map +1 -0
  580. data/vendor/assets/components/jquery/external/sizzle/LICENSE.txt +36 -0
  581. data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.js +2272 -0
  582. data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  583. data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  584. data/vendor/assets/components/jquery/src/.eslintrc.json +5 -0
  585. data/vendor/assets/components/jquery/src/ajax.js +856 -0
  586. data/vendor/assets/components/jquery/src/ajax/jsonp.js +103 -0
  587. data/vendor/assets/components/jquery/src/ajax/load.js +77 -0
  588. data/vendor/assets/components/jquery/src/ajax/parseXML.js +30 -0
  589. data/vendor/assets/components/jquery/src/ajax/script.js +77 -0
  590. data/vendor/assets/components/jquery/src/ajax/var/location.js +5 -0
  591. data/vendor/assets/components/jquery/src/ajax/var/nonce.js +5 -0
  592. data/vendor/assets/components/jquery/src/ajax/var/rquery.js +5 -0
  593. data/vendor/assets/components/jquery/src/ajax/xhr.js +170 -0
  594. data/vendor/assets/components/jquery/src/attributes.js +13 -0
  595. data/vendor/assets/components/jquery/src/attributes/attr.js +141 -0
  596. data/vendor/assets/components/jquery/src/attributes/classes.js +186 -0
  597. data/vendor/assets/components/jquery/src/attributes/prop.js +143 -0
  598. data/vendor/assets/components/jquery/src/attributes/support.js +33 -0
  599. data/vendor/assets/components/jquery/src/attributes/val.js +191 -0
  600. data/vendor/assets/components/jquery/src/callbacks.js +236 -0
  601. data/vendor/assets/components/jquery/src/core.js +399 -0
  602. data/vendor/assets/components/jquery/src/core/DOMEval.js +30 -0
  603. data/vendor/assets/components/jquery/src/core/access.js +72 -0
  604. data/vendor/assets/components/jquery/src/core/camelCase.js +23 -0
  605. data/vendor/assets/components/jquery/src/core/init.js +129 -0
  606. data/vendor/assets/components/jquery/src/core/nodeName.js +13 -0
  607. data/vendor/assets/components/jquery/src/core/parseHTML.js +65 -0
  608. data/vendor/assets/components/jquery/src/core/ready-no-deferred.js +97 -0
  609. data/vendor/assets/components/jquery/src/core/ready.js +86 -0
  610. data/vendor/assets/components/jquery/src/core/readyException.js +13 -0
  611. data/vendor/assets/components/jquery/src/core/stripAndCollapse.js +14 -0
  612. data/vendor/assets/components/jquery/src/core/support.js +20 -0
  613. data/vendor/assets/components/jquery/src/core/toType.js +20 -0
  614. data/vendor/assets/components/jquery/src/core/var/rsingleTag.js +6 -0
  615. data/vendor/assets/components/jquery/src/css.js +481 -0
  616. data/vendor/assets/components/jquery/src/css/addGetHookIf.js +26 -0
  617. data/vendor/assets/components/jquery/src/css/adjustCSS.js +73 -0
  618. data/vendor/assets/components/jquery/src/css/curCSS.js +65 -0
  619. data/vendor/assets/components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  620. data/vendor/assets/components/jquery/src/css/showHide.js +105 -0
  621. data/vendor/assets/components/jquery/src/css/support.js +102 -0
  622. data/vendor/assets/components/jquery/src/css/var/cssExpand.js +5 -0
  623. data/vendor/assets/components/jquery/src/css/var/getStyles.js +17 -0
  624. data/vendor/assets/components/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  625. data/vendor/assets/components/jquery/src/css/var/rboxStyle.js +7 -0
  626. data/vendor/assets/components/jquery/src/css/var/rnumnonpx.js +7 -0
  627. data/vendor/assets/components/jquery/src/css/var/swap.js +26 -0
  628. data/vendor/assets/components/jquery/src/data.js +180 -0
  629. data/vendor/assets/components/jquery/src/data/Data.js +162 -0
  630. data/vendor/assets/components/jquery/src/data/var/acceptData.js +19 -0
  631. data/vendor/assets/components/jquery/src/data/var/dataPriv.js +7 -0
  632. data/vendor/assets/components/jquery/src/data/var/dataUser.js +7 -0
  633. data/vendor/assets/components/jquery/src/deferred.js +399 -0
  634. data/vendor/assets/components/jquery/src/deferred/exceptionHook.js +21 -0
  635. data/vendor/assets/components/jquery/src/deprecated.js +98 -0
  636. data/vendor/assets/components/jquery/src/dimensions.js +57 -0
  637. data/vendor/assets/components/jquery/src/effects.js +702 -0
  638. data/vendor/assets/components/jquery/src/effects/Tween.js +123 -0
  639. data/vendor/assets/components/jquery/src/effects/animatedSelector.js +15 -0
  640. data/vendor/assets/components/jquery/src/event.js +748 -0
  641. data/vendor/assets/components/jquery/src/event/ajax.js +22 -0
  642. data/vendor/assets/components/jquery/src/event/alias.js +29 -0
  643. data/vendor/assets/components/jquery/src/event/focusin.js +55 -0
  644. data/vendor/assets/components/jquery/src/event/support.js +11 -0
  645. data/vendor/assets/components/jquery/src/event/trigger.js +199 -0
  646. data/vendor/assets/components/jquery/src/exports/amd.js +26 -0
  647. data/vendor/assets/components/jquery/src/exports/global.js +34 -0
  648. data/vendor/assets/components/jquery/src/jquery.js +40 -0
  649. data/vendor/assets/components/jquery/src/manipulation.js +486 -0
  650. data/vendor/assets/components/jquery/src/manipulation/_evalUrl.js +23 -0
  651. data/vendor/assets/components/jquery/src/manipulation/buildFragment.js +105 -0
  652. data/vendor/assets/components/jquery/src/manipulation/getAll.js +32 -0
  653. data/vendor/assets/components/jquery/src/manipulation/setGlobalEval.js +22 -0
  654. data/vendor/assets/components/jquery/src/manipulation/support.js +35 -0
  655. data/vendor/assets/components/jquery/src/manipulation/var/rcheckableType.js +5 -0
  656. data/vendor/assets/components/jquery/src/manipulation/var/rscriptType.js +5 -0
  657. data/vendor/assets/components/jquery/src/manipulation/var/rtagName.js +5 -0
  658. data/vendor/assets/components/jquery/src/manipulation/wrapMap.js +29 -0
  659. data/vendor/assets/components/jquery/src/offset.js +233 -0
  660. data/vendor/assets/components/jquery/src/queue.js +145 -0
  661. data/vendor/assets/components/jquery/src/queue/delay.js +24 -0
  662. data/vendor/assets/components/jquery/src/selector-native.js +237 -0
  663. data/vendor/assets/components/jquery/src/selector-sizzle.js +19 -0
  664. data/vendor/assets/components/jquery/src/selector.js +3 -0
  665. data/vendor/assets/components/jquery/src/serialize.js +132 -0
  666. data/vendor/assets/components/jquery/src/traversing.js +191 -0
  667. data/vendor/assets/components/jquery/src/traversing/findFilter.js +97 -0
  668. data/vendor/assets/components/jquery/src/traversing/var/dir.js +22 -0
  669. data/vendor/assets/components/jquery/src/traversing/var/rneedsContext.js +8 -0
  670. data/vendor/assets/components/jquery/src/traversing/var/siblings.js +17 -0
  671. data/vendor/assets/components/jquery/src/var/ObjectFunctionString.js +7 -0
  672. data/vendor/assets/components/jquery/src/var/arr.js +5 -0
  673. data/vendor/assets/components/jquery/src/var/class2type.js +6 -0
  674. data/vendor/assets/components/jquery/src/var/concat.js +7 -0
  675. data/vendor/assets/components/jquery/src/var/document.js +5 -0
  676. data/vendor/assets/components/jquery/src/var/documentElement.js +7 -0
  677. data/vendor/assets/components/jquery/src/var/fnToString.js +7 -0
  678. data/vendor/assets/components/jquery/src/var/getProto.js +5 -0
  679. data/vendor/assets/components/jquery/src/var/hasOwn.js +7 -0
  680. data/vendor/assets/components/jquery/src/var/indexOf.js +7 -0
  681. data/vendor/assets/components/jquery/src/var/isFunction.js +13 -0
  682. data/vendor/assets/components/jquery/src/var/isWindow.js +8 -0
  683. data/vendor/assets/components/jquery/src/var/pnum.js +5 -0
  684. data/vendor/assets/components/jquery/src/var/push.js +7 -0
  685. data/vendor/assets/components/jquery/src/var/rcssNum.js +9 -0
  686. data/vendor/assets/components/jquery/src/var/rnothtmlwhite.js +8 -0
  687. data/vendor/assets/components/jquery/src/var/slice.js +7 -0
  688. data/vendor/assets/components/jquery/src/var/support.js +6 -0
  689. data/vendor/assets/components/jquery/src/var/toString.js +7 -0
  690. data/vendor/assets/components/jquery/src/wrap.js +78 -0
  691. data/vendor/assets/components/markdown-it/.bower.json +38 -0
  692. data/vendor/assets/components/markdown-it/CHANGELOG.md +442 -0
  693. data/vendor/assets/components/markdown-it/CONTRIBUTING.md +15 -0
  694. data/vendor/assets/components/markdown-it/LICENSE +22 -0
  695. data/vendor/assets/components/markdown-it/Procfile +1 -0
  696. data/vendor/assets/components/markdown-it/README.md +294 -0
  697. data/vendor/assets/components/markdown-it/bin/markdown-it.js +113 -0
  698. data/vendor/assets/components/markdown-it/bower.json +28 -0
  699. data/vendor/assets/components/markdown-it/dist/markdown-it.js +7963 -0
  700. data/vendor/assets/components/markdown-it/dist/markdown-it.min.js +1 -0
  701. data/vendor/assets/components/markdown-it/package.json +64 -0
  702. data/vendor/assets/components/plantuml-encoder/.bower.json +29 -0
  703. data/vendor/assets/components/plantuml-encoder/LICENSE +19 -0
  704. data/vendor/assets/components/plantuml-encoder/README.md +38 -0
  705. data/vendor/assets/components/plantuml-encoder/bower.json +20 -0
  706. data/vendor/assets/components/plantuml-encoder/dist/plantuml-encoder.js +3994 -0
  707. data/vendor/assets/components/plantuml-encoder/dist/plantuml-encoder.min.js +1 -0
  708. data/vendor/assets/components/plantuml-encoder/package.json +33 -0
  709. data/vendor/assets/components/raphael/.bower.json +45 -0
  710. data/vendor/assets/components/raphael/bower.json +31 -0
  711. data/vendor/assets/components/raphael/dev/banner.txt +8 -0
  712. data/vendor/assets/components/raphael/dev/raphael.amd.js +14 -0
  713. data/vendor/assets/components/raphael/dev/raphael.core.js +5413 -0
  714. data/vendor/assets/components/raphael/dev/raphael.svg.js +1428 -0
  715. data/vendor/assets/components/raphael/dev/raphael.vml.js +1010 -0
  716. data/vendor/assets/components/raphael/dev/test/svg/dom.js +295 -0
  717. data/vendor/assets/components/raphael/dev/test/vml/dom.js +5 -0
  718. data/vendor/assets/components/raphael/license.txt +21 -0
  719. data/vendor/assets/components/raphael/raphael.js +8330 -0
  720. data/vendor/assets/components/raphael/raphael.min.js +3 -0
  721. data/vendor/assets/components/raphael/raphael.no-deps.js +7959 -0
  722. data/vendor/assets/components/raphael/raphael.no-deps.min.js +3 -0
  723. data/vendor/assets/components/raphael/webpack.config.js +62 -0
  724. data/vendor/assets/components/squire-rte/.bower.json +34 -0
  725. data/vendor/assets/components/squire-rte/Demo.html +143 -0
  726. data/vendor/assets/components/squire-rte/LICENSE +21 -0
  727. data/vendor/assets/components/squire-rte/Makefile +22 -0
  728. data/vendor/assets/components/squire-rte/README.md +473 -0
  729. data/vendor/assets/components/squire-rte/bower.json +24 -0
  730. data/vendor/assets/components/squire-rte/build/document.html +54 -0
  731. data/vendor/assets/components/squire-rte/build/squire-raw.js +4722 -0
  732. data/vendor/assets/components/squire-rte/build/squire.js +2 -0
  733. data/vendor/assets/components/squire-rte/package.json +31 -0
  734. data/vendor/assets/components/squire-rte/source/Clean.js +358 -0
  735. data/vendor/assets/components/squire-rte/source/Clipboard.js +331 -0
  736. data/vendor/assets/components/squire-rte/source/Constants.js +60 -0
  737. data/vendor/assets/components/squire-rte/source/Editor.js +2201 -0
  738. data/vendor/assets/components/squire-rte/source/KeyHandlers.js +502 -0
  739. data/vendor/assets/components/squire-rte/source/Node.js +553 -0
  740. data/vendor/assets/components/squire-rte/source/Range.js +540 -0
  741. data/vendor/assets/components/squire-rte/source/TreeWalker.js +118 -0
  742. data/vendor/assets/components/squire-rte/source/document.html +54 -0
  743. data/vendor/assets/components/squire-rte/source/exports.js +42 -0
  744. data/vendor/assets/components/squire-rte/source/intro.js +6 -0
  745. data/vendor/assets/components/squire-rte/source/outro.js +22 -0
  746. data/vendor/assets/components/to-mark/.bower.json +35 -0
  747. data/vendor/assets/components/to-mark/bower.json +22 -0
  748. data/vendor/assets/components/to-mark/demo/demo.html +24 -0
  749. data/vendor/assets/components/to-mark/demo/demo2.html +94 -0
  750. data/vendor/assets/components/to-mark/dist/to-mark.js +1283 -0
  751. data/vendor/assets/components/to-mark/dist/to-mark.min.js +1 -0
  752. data/vendor/assets/components/to-mark/gulpfile.js +112 -0
  753. data/vendor/assets/components/to-mark/karma.conf.js +260 -0
  754. data/vendor/assets/components/to-mark/package-lock.json +13061 -0
  755. data/vendor/assets/components/to-mark/package.json +53 -0
  756. data/vendor/assets/components/tui-chart/.bower.json +44 -0
  757. data/vendor/assets/components/tui-chart/CODE_OF_CONDUCT.md +73 -0
  758. data/vendor/assets/components/tui-chart/CONTRIBUTING.md +91 -0
  759. data/vendor/assets/components/tui-chart/LICENSE +21 -0
  760. data/vendor/assets/components/tui-chart/README.md +142 -0
  761. data/vendor/assets/components/tui-chart/bower.json +33 -0
  762. data/vendor/assets/components/tui-chart/dist/maps/china.js +10 -0
  763. data/vendor/assets/components/tui-chart/dist/maps/japan.js +10 -0
  764. data/vendor/assets/components/tui-chart/dist/maps/singapore.js +10 -0
  765. data/vendor/assets/components/tui-chart/dist/maps/south-korea.js +10 -0
  766. data/vendor/assets/components/tui-chart/dist/maps/taiwan.js +10 -0
  767. data/vendor/assets/components/tui-chart/dist/maps/thailand.js +10 -0
  768. data/vendor/assets/components/tui-chart/dist/maps/usa.js +10 -0
  769. data/vendor/assets/components/tui-chart/dist/maps/world.js +11 -0
  770. data/vendor/assets/components/tui-chart/dist/tui-chart.css +704 -0
  771. data/vendor/assets/components/tui-chart/dist/tui-chart.js +40567 -0
  772. data/vendor/assets/components/tui-chart/dist/tui-chart.min.css +10 -0
  773. data/vendor/assets/components/tui-chart/dist/tui-chart.min.js +20 -0
  774. data/vendor/assets/components/tui-chart/docs/COMMIT_MESSAGE_CONVENTION.md +49 -0
  775. data/vendor/assets/components/tui-chart/docs/ISSUE_TEMPLATE.md +24 -0
  776. data/vendor/assets/components/tui-chart/docs/PULL_REQUEST_TEMPLATE.md +42 -0
  777. data/vendor/assets/components/tui-chart/docs/README.md +11 -0
  778. data/vendor/assets/components/tui-chart/docs/wiki/README.md +27 -0
  779. data/vendor/assets/components/tui-chart/docs/wiki/_Sidebar.md +31 -0
  780. data/vendor/assets/components/tui-chart/docs/wiki/chart-export-menu.md +66 -0
  781. data/vendor/assets/components/tui-chart/docs/wiki/chart-type-radial.md +121 -0
  782. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-bar,column.md +312 -0
  783. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-bubble.md +63 -0
  784. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-column-line-combo.md +104 -0
  785. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-heatmap.md +39 -0
  786. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line,area.md +333 -0
  787. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line-area-combo.md +78 -0
  788. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line-scatter-combo.md +101 -0
  789. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-map.md +153 -0
  790. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-pie-donut-combo.md +98 -0
  791. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-pie.md +186 -0
  792. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-scatter.md +58 -0
  793. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-treemap.md +158 -0
  794. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-china-map.md +38 -0
  795. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-japan-map.md +51 -0
  796. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-singapore-map.md +9 -0
  797. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-south-korea-map.md +21 -0
  798. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-taiwan-map.md +26 -0
  799. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-thailand-map.md +82 -0
  800. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-usa-map.md +55 -0
  801. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-world-map.md +180 -0
  802. data/vendor/assets/components/tui-chart/docs/wiki/features-axes.md +209 -0
  803. data/vendor/assets/components/tui-chart/docs/wiki/features-chart.md +157 -0
  804. data/vendor/assets/components/tui-chart/docs/wiki/features-circle-legend.md +20 -0
  805. data/vendor/assets/components/tui-chart/docs/wiki/features-legend.md +89 -0
  806. data/vendor/assets/components/tui-chart/docs/wiki/features-plot.md +141 -0
  807. data/vendor/assets/components/tui-chart/docs/wiki/features-series.md +240 -0
  808. data/vendor/assets/components/tui-chart/docs/wiki/features-tooltip.md +223 -0
  809. data/vendor/assets/components/tui-chart/docs/wiki/getting-started.md +74 -0
  810. data/vendor/assets/components/tui-chart/docs/wiki/import-chart-data-from-existing-table-element.md +150 -0
  811. data/vendor/assets/components/tui-chart/docs/wiki/table-of-supported-options.md +344 -0
  812. data/vendor/assets/components/tui-chart/docs/wiki/theme.md +338 -0
  813. data/vendor/assets/components/tui-chart/package-lock.json +8881 -0
  814. data/vendor/assets/components/tui-code-snippet/.bower.json +31 -0
  815. data/vendor/assets/components/tui-code-snippet/LICENSE +21 -0
  816. data/vendor/assets/components/tui-code-snippet/README.md +109 -0
  817. data/vendor/assets/components/tui-code-snippet/bower.json +20 -0
  818. data/vendor/assets/components/tui-code-snippet/demo/postBridge/README.md +26 -0
  819. data/vendor/assets/components/tui-code-snippet/demo/postBridge/public/popup.html +27 -0
  820. data/vendor/assets/components/tui-code-snippet/demo/postBridge/public/postBridge.html +31 -0
  821. data/vendor/assets/components/tui-code-snippet/demo/postBridge/server.js +28 -0
  822. data/vendor/assets/components/tui-code-snippet/dist/tui-code-snippet.js +4228 -0
  823. data/vendor/assets/components/tui-code-snippet/dist/tui-code-snippet.min.js +7 -0
  824. data/vendor/assets/components/tui-code-snippet/package-lock.json +6038 -0
  825. data/vendor/assets/components/tui-color-picker/.bower.json +37 -0
  826. data/vendor/assets/components/tui-color-picker/ISSUE_TEMPLATE.md +26 -0
  827. data/vendor/assets/components/tui-color-picker/LICENSE +34 -0
  828. data/vendor/assets/components/tui-color-picker/README.md +69 -0
  829. data/vendor/assets/components/tui-color-picker/bower.json +26 -0
  830. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.css +148 -0
  831. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.js +3146 -0
  832. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.min.css +7 -0
  833. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.min.js +9 -0
  834. data/vendor/assets/components/tui-color-picker/package-lock.json +8440 -0
  835. data/vendor/assets/components/tui-editor/.bower.json +71 -0
  836. data/vendor/assets/components/tui-editor/CODE_OF_CONDUCT.md +73 -0
  837. data/vendor/assets/components/tui-editor/CONTRIBUTING.md +92 -0
  838. data/vendor/assets/components/tui-editor/LICENSE +21 -0
  839. data/vendor/assets/components/tui-editor/README.md +204 -0
  840. data/vendor/assets/components/tui-editor/bower.json +59 -0
  841. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor-all.js +36850 -0
  842. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor-all.min.js +13 -0
  843. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor.js +24646 -0
  844. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor.min.js +7 -0
  845. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer-all.js +14768 -0
  846. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer-all.min.js +13 -0
  847. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer.js +3686 -0
  848. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer.min.js +7 -0
  849. data/vendor/assets/components/tui-editor/dist/tui-editor-contents.css +239 -0
  850. data/vendor/assets/components/tui-editor/dist/tui-editor-contents.min.css +1 -0
  851. data/vendor/assets/components/tui-editor/dist/tui-editor-extChart.js +7040 -0
  852. data/vendor/assets/components/tui-editor/dist/tui-editor-extChart.min.js +13 -0
  853. data/vendor/assets/components/tui-editor/dist/tui-editor-extColorSyntax.js +472 -0
  854. data/vendor/assets/components/tui-editor/dist/tui-editor-extColorSyntax.min.js +7 -0
  855. data/vendor/assets/components/tui-editor/dist/tui-editor-extScrollSync.js +1241 -0
  856. data/vendor/assets/components/tui-editor/dist/tui-editor-extScrollSync.min.js +7 -0
  857. data/vendor/assets/components/tui-editor/dist/tui-editor-extTable.js +3930 -0
  858. data/vendor/assets/components/tui-editor/dist/tui-editor-extTable.min.js +7 -0
  859. data/vendor/assets/components/tui-editor/dist/tui-editor-extUML.js +212 -0
  860. data/vendor/assets/components/tui-editor/dist/tui-editor-extUML.min.js +7 -0
  861. data/vendor/assets/components/tui-editor/dist/tui-editor.css +1166 -0
  862. data/vendor/assets/components/tui-editor/dist/tui-editor.min.css +1 -0
  863. data/vendor/assets/components/tui-editor/docs/COMMIT_MESSAGE_CONVENTION.md +49 -0
  864. data/vendor/assets/components/tui-editor/docs/PULL_REQUEST_TEMPLATE.md +41 -0
  865. data/vendor/assets/components/tui-editor/docs/README.md +13 -0
  866. data/vendor/assets/components/tui-editor/docs/getting-started-with-bower.md +93 -0
  867. data/vendor/assets/components/tui-editor/docs/getting-started.md +76 -0
  868. data/vendor/assets/components/tui-editor/docs/using-extensions.md +91 -0
  869. data/vendor/assets/components/tui-editor/docs/writing-your-own-extension.md +167 -0
  870. data/vendor/assets/components/tui-editor/examples/example00-demo.html +85 -0
  871. data/vendor/assets/components/tui-editor/examples/example01-basic.html +37 -0
  872. data/vendor/assets/components/tui-editor/examples/example02-viewer-basic.html +68 -0
  873. data/vendor/assets/components/tui-editor/examples/example03-jquery.html +36 -0
  874. data/vendor/assets/components/tui-editor/examples/example04-viewer-jquery.html +67 -0
  875. data/vendor/assets/components/tui-editor/examples/example05-scrollsync.html +77 -0
  876. data/vendor/assets/components/tui-editor/examples/example06-colorsyntax.html +44 -0
  877. data/vendor/assets/components/tui-editor/examples/example07-table.html +48 -0
  878. data/vendor/assets/components/tui-editor/examples/example08-uml.html +69 -0
  879. data/vendor/assets/components/tui-editor/examples/example09-multiple-extensions.html +85 -0
  880. data/vendor/assets/components/tui-editor/examples/example10-viewer-multiple-extensions.html +86 -0
  881. data/vendor/assets/components/tui-editor/examples/example11-chart.html +60 -0
  882. data/vendor/assets/components/tui-editor/examples/example12-writing-extension.html +66 -0
  883. data/vendor/assets/components/tui-editor/examples/examples.json +41 -0
  884. data/vendor/assets/components/tui-editor/examples/explain.css +7 -0
  885. data/vendor/assets/components/tui-editor/package-lock.json +13289 -0
  886. data/vendor/assets/components/tui-editor/package.json +90 -0
  887. metadata +956 -0
@@ -0,0 +1,85 @@
1
+ import { indexOf } from "../util/misc.js"
2
+
3
+ // Find the line object corresponding to the given line number.
4
+ export function getLine(doc, n) {
5
+ n -= doc.first
6
+ if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document.")
7
+ let chunk = doc
8
+ while (!chunk.lines) {
9
+ for (let i = 0;; ++i) {
10
+ let child = chunk.children[i], sz = child.chunkSize()
11
+ if (n < sz) { chunk = child; break }
12
+ n -= sz
13
+ }
14
+ }
15
+ return chunk.lines[n]
16
+ }
17
+
18
+ // Get the part of a document between two positions, as an array of
19
+ // strings.
20
+ export function getBetween(doc, start, end) {
21
+ let out = [], n = start.line
22
+ doc.iter(start.line, end.line + 1, line => {
23
+ let text = line.text
24
+ if (n == end.line) text = text.slice(0, end.ch)
25
+ if (n == start.line) text = text.slice(start.ch)
26
+ out.push(text)
27
+ ++n
28
+ })
29
+ return out
30
+ }
31
+ // Get the lines between from and to, as array of strings.
32
+ export function getLines(doc, from, to) {
33
+ let out = []
34
+ doc.iter(from, to, line => { out.push(line.text) }) // iter aborts when callback returns truthy value
35
+ return out
36
+ }
37
+
38
+ // Update the height of a line, propagating the height change
39
+ // upwards to parent nodes.
40
+ export function updateLineHeight(line, height) {
41
+ let diff = height - line.height
42
+ if (diff) for (let n = line; n; n = n.parent) n.height += diff
43
+ }
44
+
45
+ // Given a line object, find its line number by walking up through
46
+ // its parent links.
47
+ export function lineNo(line) {
48
+ if (line.parent == null) return null
49
+ let cur = line.parent, no = indexOf(cur.lines, line)
50
+ for (let chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {
51
+ for (let i = 0;; ++i) {
52
+ if (chunk.children[i] == cur) break
53
+ no += chunk.children[i].chunkSize()
54
+ }
55
+ }
56
+ return no + cur.first
57
+ }
58
+
59
+ // Find the line at the given vertical position, using the height
60
+ // information in the document tree.
61
+ export function lineAtHeight(chunk, h) {
62
+ let n = chunk.first
63
+ outer: do {
64
+ for (let i = 0; i < chunk.children.length; ++i) {
65
+ let child = chunk.children[i], ch = child.height
66
+ if (h < ch) { chunk = child; continue outer }
67
+ h -= ch
68
+ n += child.chunkSize()
69
+ }
70
+ return n
71
+ } while (!chunk.lines)
72
+ let i = 0
73
+ for (; i < chunk.lines.length; ++i) {
74
+ let line = chunk.lines[i], lh = line.height
75
+ if (h < lh) break
76
+ h -= lh
77
+ }
78
+ return n + i
79
+ }
80
+
81
+ export function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}
82
+
83
+ export function lineNumberFor(options, i) {
84
+ return String(options.lineNumberFormatter(i + options.firstLineNumber))
85
+ }
@@ -0,0 +1,700 @@
1
+ import { buildLineContent, LineView } from "../line/line_data.js"
2
+ import { clipPos, Pos } from "../line/pos.js"
3
+ import { collapsedSpanAtEnd, heightAtLine, lineIsHidden, visualLine } from "../line/spans.js"
4
+ import { getLine, lineAtHeight, lineNo, updateLineHeight } from "../line/utils_line.js"
5
+ import { bidiOther, getBidiPartAt, getOrder } from "../util/bidi.js"
6
+ import { chrome, android, ie, ie_version } from "../util/browser.js"
7
+ import { elt, removeChildren, range, removeChildrenAndAdd } from "../util/dom.js"
8
+ import { e_target } from "../util/event.js"
9
+ import { hasBadZoomedRects } from "../util/feature_detection.js"
10
+ import { countColumn, findFirst, isExtendingChar, scrollerGap, skipExtendingChars } from "../util/misc.js"
11
+ import { updateLineForChanges } from "../display/update_line.js"
12
+
13
+ import { widgetHeight } from "./widgets.js"
14
+
15
+ // POSITION MEASUREMENT
16
+
17
+ export function paddingTop(display) {return display.lineSpace.offsetTop}
18
+ export function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}
19
+ export function paddingH(display) {
20
+ if (display.cachedPaddingH) return display.cachedPaddingH
21
+ let e = removeChildrenAndAdd(display.measure, elt("pre", "x"))
22
+ let style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle
23
+ let data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}
24
+ if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data
25
+ return data
26
+ }
27
+
28
+ export function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }
29
+ export function displayWidth(cm) {
30
+ return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth
31
+ }
32
+ export function displayHeight(cm) {
33
+ return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight
34
+ }
35
+
36
+ // Ensure the lineView.wrapping.heights array is populated. This is
37
+ // an array of bottom offsets for the lines that make up a drawn
38
+ // line. When lineWrapping is on, there might be more than one
39
+ // height.
40
+ function ensureLineHeights(cm, lineView, rect) {
41
+ let wrapping = cm.options.lineWrapping
42
+ let curWidth = wrapping && displayWidth(cm)
43
+ if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {
44
+ let heights = lineView.measure.heights = []
45
+ if (wrapping) {
46
+ lineView.measure.width = curWidth
47
+ let rects = lineView.text.firstChild.getClientRects()
48
+ for (let i = 0; i < rects.length - 1; i++) {
49
+ let cur = rects[i], next = rects[i + 1]
50
+ if (Math.abs(cur.bottom - next.bottom) > 2)
51
+ heights.push((cur.bottom + next.top) / 2 - rect.top)
52
+ }
53
+ }
54
+ heights.push(rect.bottom - rect.top)
55
+ }
56
+ }
57
+
58
+ // Find a line map (mapping character offsets to text nodes) and a
59
+ // measurement cache for the given line number. (A line view might
60
+ // contain multiple lines when collapsed ranges are present.)
61
+ export function mapFromLineView(lineView, line, lineN) {
62
+ if (lineView.line == line)
63
+ return {map: lineView.measure.map, cache: lineView.measure.cache}
64
+ for (let i = 0; i < lineView.rest.length; i++)
65
+ if (lineView.rest[i] == line)
66
+ return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}
67
+ for (let i = 0; i < lineView.rest.length; i++)
68
+ if (lineNo(lineView.rest[i]) > lineN)
69
+ return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}
70
+ }
71
+
72
+ // Render a line into the hidden node display.externalMeasured. Used
73
+ // when measurement is needed for a line that's not in the viewport.
74
+ function updateExternalMeasurement(cm, line) {
75
+ line = visualLine(line)
76
+ let lineN = lineNo(line)
77
+ let view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN)
78
+ view.lineN = lineN
79
+ let built = view.built = buildLineContent(cm, view)
80
+ view.text = built.pre
81
+ removeChildrenAndAdd(cm.display.lineMeasure, built.pre)
82
+ return view
83
+ }
84
+
85
+ // Get a {top, bottom, left, right} box (in line-local coordinates)
86
+ // for a given character.
87
+ export function measureChar(cm, line, ch, bias) {
88
+ return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)
89
+ }
90
+
91
+ // Find a line view that corresponds to the given line number.
92
+ export function findViewForLine(cm, lineN) {
93
+ if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)
94
+ return cm.display.view[findViewIndex(cm, lineN)]
95
+ let ext = cm.display.externalMeasured
96
+ if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)
97
+ return ext
98
+ }
99
+
100
+ // Measurement can be split in two steps, the set-up work that
101
+ // applies to the whole line, and the measurement of the actual
102
+ // character. Functions like coordsChar, that need to do a lot of
103
+ // measurements in a row, can thus ensure that the set-up work is
104
+ // only done once.
105
+ export function prepareMeasureForLine(cm, line) {
106
+ let lineN = lineNo(line)
107
+ let view = findViewForLine(cm, lineN)
108
+ if (view && !view.text) {
109
+ view = null
110
+ } else if (view && view.changes) {
111
+ updateLineForChanges(cm, view, lineN, getDimensions(cm))
112
+ cm.curOp.forceUpdate = true
113
+ }
114
+ if (!view)
115
+ view = updateExternalMeasurement(cm, line)
116
+
117
+ let info = mapFromLineView(view, line, lineN)
118
+ return {
119
+ line: line, view: view, rect: null,
120
+ map: info.map, cache: info.cache, before: info.before,
121
+ hasHeights: false
122
+ }
123
+ }
124
+
125
+ // Given a prepared measurement object, measures the position of an
126
+ // actual character (or fetches it from the cache).
127
+ export function measureCharPrepared(cm, prepared, ch, bias, varHeight) {
128
+ if (prepared.before) ch = -1
129
+ let key = ch + (bias || ""), found
130
+ if (prepared.cache.hasOwnProperty(key)) {
131
+ found = prepared.cache[key]
132
+ } else {
133
+ if (!prepared.rect)
134
+ prepared.rect = prepared.view.text.getBoundingClientRect()
135
+ if (!prepared.hasHeights) {
136
+ ensureLineHeights(cm, prepared.view, prepared.rect)
137
+ prepared.hasHeights = true
138
+ }
139
+ found = measureCharInner(cm, prepared, ch, bias)
140
+ if (!found.bogus) prepared.cache[key] = found
141
+ }
142
+ return {left: found.left, right: found.right,
143
+ top: varHeight ? found.rtop : found.top,
144
+ bottom: varHeight ? found.rbottom : found.bottom}
145
+ }
146
+
147
+ let nullRect = {left: 0, right: 0, top: 0, bottom: 0}
148
+
149
+ export function nodeAndOffsetInLineMap(map, ch, bias) {
150
+ let node, start, end, collapse, mStart, mEnd
151
+ // First, search the line map for the text node corresponding to,
152
+ // or closest to, the target character.
153
+ for (let i = 0; i < map.length; i += 3) {
154
+ mStart = map[i]
155
+ mEnd = map[i + 1]
156
+ if (ch < mStart) {
157
+ start = 0; end = 1
158
+ collapse = "left"
159
+ } else if (ch < mEnd) {
160
+ start = ch - mStart
161
+ end = start + 1
162
+ } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {
163
+ end = mEnd - mStart
164
+ start = end - 1
165
+ if (ch >= mEnd) collapse = "right"
166
+ }
167
+ if (start != null) {
168
+ node = map[i + 2]
169
+ if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right"))
170
+ collapse = bias
171
+ if (bias == "left" && start == 0)
172
+ while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {
173
+ node = map[(i -= 3) + 2]
174
+ collapse = "left"
175
+ }
176
+ if (bias == "right" && start == mEnd - mStart)
177
+ while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {
178
+ node = map[(i += 3) + 2]
179
+ collapse = "right"
180
+ }
181
+ break
182
+ }
183
+ }
184
+ return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}
185
+ }
186
+
187
+ function getUsefulRect(rects, bias) {
188
+ let rect = nullRect
189
+ if (bias == "left") for (let i = 0; i < rects.length; i++) {
190
+ if ((rect = rects[i]).left != rect.right) break
191
+ } else for (let i = rects.length - 1; i >= 0; i--) {
192
+ if ((rect = rects[i]).left != rect.right) break
193
+ }
194
+ return rect
195
+ }
196
+
197
+ function measureCharInner(cm, prepared, ch, bias) {
198
+ let place = nodeAndOffsetInLineMap(prepared.map, ch, bias)
199
+ let node = place.node, start = place.start, end = place.end, collapse = place.collapse
200
+
201
+ let rect
202
+ if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.
203
+ for (let i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned
204
+ while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start
205
+ while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end
206
+ if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)
207
+ rect = node.parentNode.getBoundingClientRect()
208
+ else
209
+ rect = getUsefulRect(range(node, start, end).getClientRects(), bias)
210
+ if (rect.left || rect.right || start == 0) break
211
+ end = start
212
+ start = start - 1
213
+ collapse = "right"
214
+ }
215
+ if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect)
216
+ } else { // If it is a widget, simply get the box for the whole widget.
217
+ if (start > 0) collapse = bias = "right"
218
+ let rects
219
+ if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)
220
+ rect = rects[bias == "right" ? rects.length - 1 : 0]
221
+ else
222
+ rect = node.getBoundingClientRect()
223
+ }
224
+ if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {
225
+ let rSpan = node.parentNode.getClientRects()[0]
226
+ if (rSpan)
227
+ rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}
228
+ else
229
+ rect = nullRect
230
+ }
231
+
232
+ let rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top
233
+ let mid = (rtop + rbot) / 2
234
+ let heights = prepared.view.measure.heights
235
+ let i = 0
236
+ for (; i < heights.length - 1; i++)
237
+ if (mid < heights[i]) break
238
+ let top = i ? heights[i - 1] : 0, bot = heights[i]
239
+ let result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left,
240
+ right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left,
241
+ top: top, bottom: bot}
242
+ if (!rect.left && !rect.right) result.bogus = true
243
+ if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot }
244
+
245
+ return result
246
+ }
247
+
248
+ // Work around problem with bounding client rects on ranges being
249
+ // returned incorrectly when zoomed on IE10 and below.
250
+ function maybeUpdateRectForZooming(measure, rect) {
251
+ if (!window.screen || screen.logicalXDPI == null ||
252
+ screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))
253
+ return rect
254
+ let scaleX = screen.logicalXDPI / screen.deviceXDPI
255
+ let scaleY = screen.logicalYDPI / screen.deviceYDPI
256
+ return {left: rect.left * scaleX, right: rect.right * scaleX,
257
+ top: rect.top * scaleY, bottom: rect.bottom * scaleY}
258
+ }
259
+
260
+ export function clearLineMeasurementCacheFor(lineView) {
261
+ if (lineView.measure) {
262
+ lineView.measure.cache = {}
263
+ lineView.measure.heights = null
264
+ if (lineView.rest) for (let i = 0; i < lineView.rest.length; i++)
265
+ lineView.measure.caches[i] = {}
266
+ }
267
+ }
268
+
269
+ export function clearLineMeasurementCache(cm) {
270
+ cm.display.externalMeasure = null
271
+ removeChildren(cm.display.lineMeasure)
272
+ for (let i = 0; i < cm.display.view.length; i++)
273
+ clearLineMeasurementCacheFor(cm.display.view[i])
274
+ }
275
+
276
+ export function clearCaches(cm) {
277
+ clearLineMeasurementCache(cm)
278
+ cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null
279
+ if (!cm.options.lineWrapping) cm.display.maxLineChanged = true
280
+ cm.display.lineNumChars = null
281
+ }
282
+
283
+ function pageScrollX() {
284
+ // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206
285
+ // which causes page_Offset and bounding client rects to use
286
+ // different reference viewports and invalidate our calculations.
287
+ if (chrome && android) return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft))
288
+ return window.pageXOffset || (document.documentElement || document.body).scrollLeft
289
+ }
290
+ function pageScrollY() {
291
+ if (chrome && android) return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop))
292
+ return window.pageYOffset || (document.documentElement || document.body).scrollTop
293
+ }
294
+
295
+ function widgetTopHeight(lineObj) {
296
+ let height = 0
297
+ if (lineObj.widgets) for (let i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above)
298
+ height += widgetHeight(lineObj.widgets[i])
299
+ return height
300
+ }
301
+
302
+ // Converts a {top, bottom, left, right} box from line-local
303
+ // coordinates into another coordinate system. Context may be one of
304
+ // "line", "div" (display.lineDiv), "local"./null (editor), "window",
305
+ // or "page".
306
+ export function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {
307
+ if (!includeWidgets) {
308
+ let height = widgetTopHeight(lineObj)
309
+ rect.top += height; rect.bottom += height
310
+ }
311
+ if (context == "line") return rect
312
+ if (!context) context = "local"
313
+ let yOff = heightAtLine(lineObj)
314
+ if (context == "local") yOff += paddingTop(cm.display)
315
+ else yOff -= cm.display.viewOffset
316
+ if (context == "page" || context == "window") {
317
+ let lOff = cm.display.lineSpace.getBoundingClientRect()
318
+ yOff += lOff.top + (context == "window" ? 0 : pageScrollY())
319
+ let xOff = lOff.left + (context == "window" ? 0 : pageScrollX())
320
+ rect.left += xOff; rect.right += xOff
321
+ }
322
+ rect.top += yOff; rect.bottom += yOff
323
+ return rect
324
+ }
325
+
326
+ // Coverts a box from "div" coords to another coordinate system.
327
+ // Context may be "window", "page", "div", or "local"./null.
328
+ export function fromCoordSystem(cm, coords, context) {
329
+ if (context == "div") return coords
330
+ let left = coords.left, top = coords.top
331
+ // First move into "page" coordinate system
332
+ if (context == "page") {
333
+ left -= pageScrollX()
334
+ top -= pageScrollY()
335
+ } else if (context == "local" || !context) {
336
+ let localBox = cm.display.sizer.getBoundingClientRect()
337
+ left += localBox.left
338
+ top += localBox.top
339
+ }
340
+
341
+ let lineSpaceBox = cm.display.lineSpace.getBoundingClientRect()
342
+ return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}
343
+ }
344
+
345
+ export function charCoords(cm, pos, context, lineObj, bias) {
346
+ if (!lineObj) lineObj = getLine(cm.doc, pos.line)
347
+ return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)
348
+ }
349
+
350
+ // Returns a box for a given cursor position, which may have an
351
+ // 'other' property containing the position of the secondary cursor
352
+ // on a bidi boundary.
353
+ // A cursor Pos(line, char, "before") is on the same visual line as `char - 1`
354
+ // and after `char - 1` in writing order of `char - 1`
355
+ // A cursor Pos(line, char, "after") is on the same visual line as `char`
356
+ // and before `char` in writing order of `char`
357
+ // Examples (upper-case letters are RTL, lower-case are LTR):
358
+ // Pos(0, 1, ...)
359
+ // before after
360
+ // ab a|b a|b
361
+ // aB a|B aB|
362
+ // Ab |Ab A|b
363
+ // AB B|A B|A
364
+ // Every position after the last character on a line is considered to stick
365
+ // to the last character on the line.
366
+ export function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {
367
+ lineObj = lineObj || getLine(cm.doc, pos.line)
368
+ if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj)
369
+ function get(ch, right) {
370
+ let m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight)
371
+ if (right) m.left = m.right; else m.right = m.left
372
+ return intoCoordSystem(cm, lineObj, m, context)
373
+ }
374
+ let order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky
375
+ if (ch >= lineObj.text.length) {
376
+ ch = lineObj.text.length
377
+ sticky = "before"
378
+ } else if (ch <= 0) {
379
+ ch = 0
380
+ sticky = "after"
381
+ }
382
+ if (!order) return get(sticky == "before" ? ch - 1 : ch, sticky == "before")
383
+
384
+ function getBidi(ch, partPos, invert) {
385
+ let part = order[partPos], right = part.level == 1
386
+ return get(invert ? ch - 1 : ch, right != invert)
387
+ }
388
+ let partPos = getBidiPartAt(order, ch, sticky)
389
+ let other = bidiOther
390
+ let val = getBidi(ch, partPos, sticky == "before")
391
+ if (other != null) val.other = getBidi(ch, other, sticky != "before")
392
+ return val
393
+ }
394
+
395
+ // Used to cheaply estimate the coordinates for a position. Used for
396
+ // intermediate scroll updates.
397
+ export function estimateCoords(cm, pos) {
398
+ let left = 0
399
+ pos = clipPos(cm.doc, pos)
400
+ if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch
401
+ let lineObj = getLine(cm.doc, pos.line)
402
+ let top = heightAtLine(lineObj) + paddingTop(cm.display)
403
+ return {left: left, right: left, top: top, bottom: top + lineObj.height}
404
+ }
405
+
406
+ // Positions returned by coordsChar contain some extra information.
407
+ // xRel is the relative x position of the input coordinates compared
408
+ // to the found position (so xRel > 0 means the coordinates are to
409
+ // the right of the character position, for example). When outside
410
+ // is true, that means the coordinates lie outside the line's
411
+ // vertical range.
412
+ function PosWithInfo(line, ch, sticky, outside, xRel) {
413
+ let pos = Pos(line, ch, sticky)
414
+ pos.xRel = xRel
415
+ if (outside) pos.outside = true
416
+ return pos
417
+ }
418
+
419
+ // Compute the character position closest to the given coordinates.
420
+ // Input must be lineSpace-local ("div" coordinate system).
421
+ export function coordsChar(cm, x, y) {
422
+ let doc = cm.doc
423
+ y += cm.display.viewOffset
424
+ if (y < 0) return PosWithInfo(doc.first, 0, null, true, -1)
425
+ let lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1
426
+ if (lineN > last)
427
+ return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1)
428
+ if (x < 0) x = 0
429
+
430
+ let lineObj = getLine(doc, lineN)
431
+ for (;;) {
432
+ let found = coordsCharInner(cm, lineObj, lineN, x, y)
433
+ let merged = collapsedSpanAtEnd(lineObj)
434
+ let mergedPos = merged && merged.find(0, true)
435
+ if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))
436
+ lineN = lineNo(lineObj = mergedPos.to.line)
437
+ else
438
+ return found
439
+ }
440
+ }
441
+
442
+ function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {
443
+ y -= widgetTopHeight(lineObj)
444
+ let end = lineObj.text.length
445
+ let begin = findFirst(ch => measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y, end, 0)
446
+ end = findFirst(ch => measureCharPrepared(cm, preparedMeasure, ch).top > y, begin, end)
447
+ return {begin, end}
448
+ }
449
+
450
+ export function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {
451
+ if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj)
452
+ let targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), "line").top
453
+ return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)
454
+ }
455
+
456
+ // Returns true if the given side of a box is after the given
457
+ // coordinates, in top-to-bottom, left-to-right order.
458
+ function boxIsAfter(box, x, y, left) {
459
+ return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x
460
+ }
461
+
462
+ function coordsCharInner(cm, lineObj, lineNo, x, y) {
463
+ // Move y into line-local coordinate space
464
+ y -= heightAtLine(lineObj)
465
+ let preparedMeasure = prepareMeasureForLine(cm, lineObj)
466
+ // When directly calling `measureCharPrepared`, we have to adjust
467
+ // for the widgets at this line.
468
+ let widgetHeight = widgetTopHeight(lineObj)
469
+ let begin = 0, end = lineObj.text.length, ltr = true
470
+
471
+ let order = getOrder(lineObj, cm.doc.direction)
472
+ // If the line isn't plain left-to-right text, first figure out
473
+ // which bidi section the coordinates fall into.
474
+ if (order) {
475
+ let part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)
476
+ (cm, lineObj, lineNo, preparedMeasure, order, x, y)
477
+ ltr = part.level != 1
478
+ // The awkward -1 offsets are needed because findFirst (called
479
+ // on these below) will treat its first bound as inclusive,
480
+ // second as exclusive, but we want to actually address the
481
+ // characters in the part's range
482
+ begin = ltr ? part.from : part.to - 1
483
+ end = ltr ? part.to : part.from - 1
484
+ }
485
+
486
+ // A binary search to find the first character whose bounding box
487
+ // starts after the coordinates. If we run across any whose box wrap
488
+ // the coordinates, store that.
489
+ let chAround = null, boxAround = null
490
+ let ch = findFirst(ch => {
491
+ let box = measureCharPrepared(cm, preparedMeasure, ch)
492
+ box.top += widgetHeight; box.bottom += widgetHeight
493
+ if (!boxIsAfter(box, x, y, false)) return false
494
+ if (box.top <= y && box.left <= x) {
495
+ chAround = ch
496
+ boxAround = box
497
+ }
498
+ return true
499
+ }, begin, end)
500
+
501
+ let baseX, sticky, outside = false
502
+ // If a box around the coordinates was found, use that
503
+ if (boxAround) {
504
+ // Distinguish coordinates nearer to the left or right side of the box
505
+ let atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr
506
+ ch = chAround + (atStart ? 0 : 1)
507
+ sticky = atStart ? "after" : "before"
508
+ baseX = atLeft ? boxAround.left : boxAround.right
509
+ } else {
510
+ // (Adjust for extended bound, if necessary.)
511
+ if (!ltr && (ch == end || ch == begin)) ch++
512
+ // To determine which side to associate with, get the box to the
513
+ // left of the character and compare it's vertical position to the
514
+ // coordinates
515
+ sticky = ch == 0 ? "after" : ch == lineObj.text.length ? "before" :
516
+ (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?
517
+ "after" : "before"
518
+ // Now get accurate coordinates for this place, in order to get a
519
+ // base X position
520
+ let coords = cursorCoords(cm, Pos(lineNo, ch, sticky), "line", lineObj, preparedMeasure)
521
+ baseX = coords.left
522
+ outside = y < coords.top || y >= coords.bottom
523
+ }
524
+
525
+ ch = skipExtendingChars(lineObj.text, ch, 1)
526
+ return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)
527
+ }
528
+
529
+ function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {
530
+ // Bidi parts are sorted left-to-right, and in a non-line-wrapping
531
+ // situation, we can take this ordering to correspond to the visual
532
+ // ordering. This finds the first part whose end is after the given
533
+ // coordinates.
534
+ let index = findFirst(i => {
535
+ let part = order[i], ltr = part.level != 1
536
+ return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? "before" : "after"),
537
+ "line", lineObj, preparedMeasure), x, y, true)
538
+ }, 0, order.length - 1)
539
+ let part = order[index]
540
+ // If this isn't the first part, the part's start is also after
541
+ // the coordinates, and the coordinates aren't on the same line as
542
+ // that start, move one part back.
543
+ if (index > 0) {
544
+ let ltr = part.level != 1
545
+ let start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? "after" : "before"),
546
+ "line", lineObj, preparedMeasure)
547
+ if (boxIsAfter(start, x, y, true) && start.top > y)
548
+ part = order[index - 1]
549
+ }
550
+ return part
551
+ }
552
+
553
+ function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {
554
+ // In a wrapped line, rtl text on wrapping boundaries can do things
555
+ // that don't correspond to the ordering in our `order` array at
556
+ // all, so a binary search doesn't work, and we want to return a
557
+ // part that only spans one line so that the binary search in
558
+ // coordsCharInner is safe. As such, we first find the extent of the
559
+ // wrapped line, and then do a flat search in which we discard any
560
+ // spans that aren't on the line.
561
+ let {begin, end} = wrappedLineExtent(cm, lineObj, preparedMeasure, y)
562
+ if (/\s/.test(lineObj.text.charAt(end - 1))) end--
563
+ let part = null, closestDist = null
564
+ for (let i = 0; i < order.length; i++) {
565
+ let p = order[i]
566
+ if (p.from >= end || p.to <= begin) continue
567
+ let ltr = p.level != 1
568
+ let endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right
569
+ // Weigh against spans ending before this, so that they are only
570
+ // picked if nothing ends after
571
+ let dist = endX < x ? x - endX + 1e9 : endX - x
572
+ if (!part || closestDist > dist) {
573
+ part = p
574
+ closestDist = dist
575
+ }
576
+ }
577
+ if (!part) part = order[order.length - 1]
578
+ // Clip the part to the wrapped line.
579
+ if (part.from < begin) part = {from: begin, to: part.to, level: part.level}
580
+ if (part.to > end) part = {from: part.from, to: end, level: part.level}
581
+ return part
582
+ }
583
+
584
+ let measureText
585
+ // Compute the default text height.
586
+ export function textHeight(display) {
587
+ if (display.cachedTextHeight != null) return display.cachedTextHeight
588
+ if (measureText == null) {
589
+ measureText = elt("pre")
590
+ // Measure a bunch of lines, for browsers that compute
591
+ // fractional heights.
592
+ for (let i = 0; i < 49; ++i) {
593
+ measureText.appendChild(document.createTextNode("x"))
594
+ measureText.appendChild(elt("br"))
595
+ }
596
+ measureText.appendChild(document.createTextNode("x"))
597
+ }
598
+ removeChildrenAndAdd(display.measure, measureText)
599
+ let height = measureText.offsetHeight / 50
600
+ if (height > 3) display.cachedTextHeight = height
601
+ removeChildren(display.measure)
602
+ return height || 1
603
+ }
604
+
605
+ // Compute the default character width.
606
+ export function charWidth(display) {
607
+ if (display.cachedCharWidth != null) return display.cachedCharWidth
608
+ let anchor = elt("span", "xxxxxxxxxx")
609
+ let pre = elt("pre", [anchor])
610
+ removeChildrenAndAdd(display.measure, pre)
611
+ let rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10
612
+ if (width > 2) display.cachedCharWidth = width
613
+ return width || 10
614
+ }
615
+
616
+ // Do a bulk-read of the DOM positions and sizes needed to draw the
617
+ // view, so that we don't interleave reading and writing to the DOM.
618
+ export function getDimensions(cm) {
619
+ let d = cm.display, left = {}, width = {}
620
+ let gutterLeft = d.gutters.clientLeft
621
+ for (let n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {
622
+ left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft
623
+ width[cm.options.gutters[i]] = n.clientWidth
624
+ }
625
+ return {fixedPos: compensateForHScroll(d),
626
+ gutterTotalWidth: d.gutters.offsetWidth,
627
+ gutterLeft: left,
628
+ gutterWidth: width,
629
+ wrapperWidth: d.wrapper.clientWidth}
630
+ }
631
+
632
+ // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,
633
+ // but using getBoundingClientRect to get a sub-pixel-accurate
634
+ // result.
635
+ export function compensateForHScroll(display) {
636
+ return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left
637
+ }
638
+
639
+ // Returns a function that estimates the height of a line, to use as
640
+ // first approximation until the line becomes visible (and is thus
641
+ // properly measurable).
642
+ export function estimateHeight(cm) {
643
+ let th = textHeight(cm.display), wrapping = cm.options.lineWrapping
644
+ let perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3)
645
+ return line => {
646
+ if (lineIsHidden(cm.doc, line)) return 0
647
+
648
+ let widgetsHeight = 0
649
+ if (line.widgets) for (let i = 0; i < line.widgets.length; i++) {
650
+ if (line.widgets[i].height) widgetsHeight += line.widgets[i].height
651
+ }
652
+
653
+ if (wrapping)
654
+ return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th
655
+ else
656
+ return widgetsHeight + th
657
+ }
658
+ }
659
+
660
+ export function estimateLineHeights(cm) {
661
+ let doc = cm.doc, est = estimateHeight(cm)
662
+ doc.iter(line => {
663
+ let estHeight = est(line)
664
+ if (estHeight != line.height) updateLineHeight(line, estHeight)
665
+ })
666
+ }
667
+
668
+ // Given a mouse event, find the corresponding position. If liberal
669
+ // is false, it checks whether a gutter or scrollbar was clicked,
670
+ // and returns null if it was. forRect is used by rectangular
671
+ // selections, and tries to estimate a character position even for
672
+ // coordinates beyond the right of the text.
673
+ export function posFromMouse(cm, e, liberal, forRect) {
674
+ let display = cm.display
675
+ if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") return null
676
+
677
+ let x, y, space = display.lineSpace.getBoundingClientRect()
678
+ // Fails unpredictably on IE[67] when mouse is dragged around quickly.
679
+ try { x = e.clientX - space.left; y = e.clientY - space.top }
680
+ catch (e) { return null }
681
+ let coords = coordsChar(cm, x, y), line
682
+ if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {
683
+ let colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length
684
+ coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff))
685
+ }
686
+ return coords
687
+ }
688
+
689
+ // Find the view element corresponding to a given line. Return null
690
+ // when the line isn't visible.
691
+ export function findViewIndex(cm, n) {
692
+ if (n >= cm.display.viewTo) return null
693
+ n -= cm.display.viewFrom
694
+ if (n < 0) return null
695
+ let view = cm.display.view
696
+ for (let i = 0; i < view.length; i++) {
697
+ n -= view[i].size
698
+ if (n < 0) return i
699
+ }
700
+ }