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