@muze-nl/simplystore 0.3.6 → 0.4.1

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 (353) hide show
  1. package/package.json +2 -2
  2. package/src/commands.mjs +2 -2
  3. package/src/server.mjs +68 -61
  4. package/src/share.mjs +22 -39
  5. package/.eslintrc.cjs +0 -15
  6. package/test/produce.mjs +0 -79
  7. package/test/share.mjs +0 -18
  8. package/test/test.jsontag +0 -20
  9. package/www/assets/css/style.css +0 -2296
  10. package/www/assets/feather-sprite.svg +0 -1
  11. package/www/assets/img/simplystore-narrow-white.svg +0 -138
  12. package/www/assets/img/simplystore-narrow.svg +0 -138
  13. package/www/assets/img/simplystore-white.svg +0 -153
  14. package/www/assets/img/simplystore.svg +0 -153
  15. package/www/codemirror/AUTHORS +0 -979
  16. package/www/codemirror/CHANGELOG.md +0 -2208
  17. package/www/codemirror/CONTRIBUTING.md +0 -92
  18. package/www/codemirror/LICENSE +0 -21
  19. package/www/codemirror/README.md +0 -47
  20. package/www/codemirror/addon/comment/comment.js +0 -211
  21. package/www/codemirror/addon/comment/continuecomment.js +0 -114
  22. package/www/codemirror/addon/dialog/dialog.css +0 -32
  23. package/www/codemirror/addon/dialog/dialog.js +0 -163
  24. package/www/codemirror/addon/display/autorefresh.js +0 -47
  25. package/www/codemirror/addon/display/fullscreen.css +0 -6
  26. package/www/codemirror/addon/display/fullscreen.js +0 -41
  27. package/www/codemirror/addon/display/panel.js +0 -133
  28. package/www/codemirror/addon/display/placeholder.js +0 -78
  29. package/www/codemirror/addon/display/rulers.js +0 -51
  30. package/www/codemirror/addon/edit/closebrackets.js +0 -201
  31. package/www/codemirror/addon/edit/closetag.js +0 -185
  32. package/www/codemirror/addon/edit/continuelist.js +0 -101
  33. package/www/codemirror/addon/edit/matchbrackets.js +0 -160
  34. package/www/codemirror/addon/edit/matchtags.js +0 -66
  35. package/www/codemirror/addon/edit/trailingspace.js +0 -27
  36. package/www/codemirror/addon/fold/brace-fold.js +0 -119
  37. package/www/codemirror/addon/fold/comment-fold.js +0 -59
  38. package/www/codemirror/addon/fold/foldcode.js +0 -159
  39. package/www/codemirror/addon/fold/foldgutter.css +0 -20
  40. package/www/codemirror/addon/fold/foldgutter.js +0 -169
  41. package/www/codemirror/addon/fold/indent-fold.js +0 -48
  42. package/www/codemirror/addon/fold/markdown-fold.js +0 -49
  43. package/www/codemirror/addon/fold/xml-fold.js +0 -184
  44. package/www/codemirror/addon/hint/anyword-hint.js +0 -41
  45. package/www/codemirror/addon/hint/css-hint.js +0 -66
  46. package/www/codemirror/addon/hint/html-hint.js +0 -351
  47. package/www/codemirror/addon/hint/javascript-hint.js +0 -162
  48. package/www/codemirror/addon/hint/show-hint.css +0 -37
  49. package/www/codemirror/addon/hint/show-hint.js +0 -523
  50. package/www/codemirror/addon/hint/sql-hint.js +0 -304
  51. package/www/codemirror/addon/hint/xml-hint.js +0 -132
  52. package/www/codemirror/addon/lint/coffeescript-lint.js +0 -47
  53. package/www/codemirror/addon/lint/css-lint.js +0 -40
  54. package/www/codemirror/addon/lint/html-lint.js +0 -59
  55. package/www/codemirror/addon/lint/javascript-lint.js +0 -65
  56. package/www/codemirror/addon/lint/json-lint.js +0 -40
  57. package/www/codemirror/addon/lint/lint.css +0 -79
  58. package/www/codemirror/addon/lint/lint.js +0 -291
  59. package/www/codemirror/addon/lint/yaml-lint.js +0 -41
  60. package/www/codemirror/addon/merge/merge.css +0 -119
  61. package/www/codemirror/addon/merge/merge.js +0 -1018
  62. package/www/codemirror/addon/mode/loadmode.js +0 -66
  63. package/www/codemirror/addon/mode/multiplex.js +0 -136
  64. package/www/codemirror/addon/mode/multiplex_test.js +0 -49
  65. package/www/codemirror/addon/mode/overlay.js +0 -90
  66. package/www/codemirror/addon/mode/simple.js +0 -216
  67. package/www/codemirror/addon/runmode/colorize.js +0 -40
  68. package/www/codemirror/addon/runmode/runmode-standalone.js +0 -334
  69. package/www/codemirror/addon/runmode/runmode.js +0 -76
  70. package/www/codemirror/addon/runmode/runmode.node.js +0 -329
  71. package/www/codemirror/addon/scroll/annotatescrollbar.js +0 -128
  72. package/www/codemirror/addon/scroll/scrollpastend.js +0 -48
  73. package/www/codemirror/addon/scroll/simplescrollbars.css +0 -66
  74. package/www/codemirror/addon/scroll/simplescrollbars.js +0 -152
  75. package/www/codemirror/addon/search/jump-to-line.js +0 -53
  76. package/www/codemirror/addon/search/match-highlighter.js +0 -167
  77. package/www/codemirror/addon/search/matchesonscrollbar.css +0 -8
  78. package/www/codemirror/addon/search/matchesonscrollbar.js +0 -97
  79. package/www/codemirror/addon/search/search.js +0 -295
  80. package/www/codemirror/addon/search/searchcursor.js +0 -305
  81. package/www/codemirror/addon/selection/active-line.js +0 -72
  82. package/www/codemirror/addon/selection/mark-selection.js +0 -119
  83. package/www/codemirror/addon/selection/selection-pointer.js +0 -98
  84. package/www/codemirror/addon/tern/tern.css +0 -87
  85. package/www/codemirror/addon/tern/tern.js +0 -756
  86. package/www/codemirror/addon/tern/worker.js +0 -44
  87. package/www/codemirror/addon/wrap/hardwrap.js +0 -160
  88. package/www/codemirror/bin/source-highlight +0 -48
  89. package/www/codemirror/keymap/emacs.js +0 -545
  90. package/www/codemirror/keymap/sublime.js +0 -720
  91. package/www/codemirror/keymap/vim.js +0 -5978
  92. package/www/codemirror/lib/codemirror.css +0 -344
  93. package/www/codemirror/lib/codemirror.js +0 -9874
  94. package/www/codemirror/mode/apl/apl.js +0 -174
  95. package/www/codemirror/mode/asciiarmor/asciiarmor.js +0 -74
  96. package/www/codemirror/mode/asn.1/asn.1.js +0 -204
  97. package/www/codemirror/mode/asterisk/asterisk.js +0 -220
  98. package/www/codemirror/mode/brainfuck/brainfuck.js +0 -85
  99. package/www/codemirror/mode/clike/clike.js +0 -940
  100. package/www/codemirror/mode/clojure/clojure.js +0 -292
  101. package/www/codemirror/mode/cmake/cmake.js +0 -97
  102. package/www/codemirror/mode/cobol/cobol.js +0 -255
  103. package/www/codemirror/mode/coffeescript/coffeescript.js +0 -359
  104. package/www/codemirror/mode/commonlisp/commonlisp.js +0 -125
  105. package/www/codemirror/mode/crystal/crystal.js +0 -433
  106. package/www/codemirror/mode/css/css.js +0 -862
  107. package/www/codemirror/mode/cypher/cypher.js +0 -152
  108. package/www/codemirror/mode/d/d.js +0 -223
  109. package/www/codemirror/mode/dart/dart.js +0 -166
  110. package/www/codemirror/mode/diff/diff.js +0 -47
  111. package/www/codemirror/mode/django/django.js +0 -356
  112. package/www/codemirror/mode/dockerfile/dockerfile.js +0 -211
  113. package/www/codemirror/mode/dtd/dtd.js +0 -142
  114. package/www/codemirror/mode/dylan/dylan.js +0 -352
  115. package/www/codemirror/mode/ebnf/ebnf.js +0 -195
  116. package/www/codemirror/mode/ecl/ecl.js +0 -206
  117. package/www/codemirror/mode/eiffel/eiffel.js +0 -160
  118. package/www/codemirror/mode/elm/elm.js +0 -245
  119. package/www/codemirror/mode/erlang/erlang.js +0 -619
  120. package/www/codemirror/mode/factor/factor.js +0 -85
  121. package/www/codemirror/mode/fcl/fcl.js +0 -173
  122. package/www/codemirror/mode/forth/forth.js +0 -180
  123. package/www/codemirror/mode/fortran/fortran.js +0 -188
  124. package/www/codemirror/mode/gas/gas.js +0 -353
  125. package/www/codemirror/mode/gfm/gfm.js +0 -129
  126. package/www/codemirror/mode/gherkin/gherkin.js +0 -178
  127. package/www/codemirror/mode/go/go.js +0 -187
  128. package/www/codemirror/mode/groovy/groovy.js +0 -247
  129. package/www/codemirror/mode/haml/haml.js +0 -161
  130. package/www/codemirror/mode/handlebars/handlebars.js +0 -70
  131. package/www/codemirror/mode/haskell/haskell.js +0 -268
  132. package/www/codemirror/mode/haskell-literate/haskell-literate.js +0 -43
  133. package/www/codemirror/mode/haxe/haxe.js +0 -515
  134. package/www/codemirror/mode/htmlembedded/htmlembedded.js +0 -37
  135. package/www/codemirror/mode/htmlmixed/htmlmixed.js +0 -153
  136. package/www/codemirror/mode/http/http.js +0 -113
  137. package/www/codemirror/mode/idl/idl.js +0 -290
  138. package/www/codemirror/mode/javascript/javascript.js +0 -960
  139. package/www/codemirror/mode/jinja2/jinja2.js +0 -193
  140. package/www/codemirror/mode/jsx/jsx.js +0 -148
  141. package/www/codemirror/mode/julia/julia.js +0 -390
  142. package/www/codemirror/mode/livescript/livescript.js +0 -280
  143. package/www/codemirror/mode/lua/lua.js +0 -160
  144. package/www/codemirror/mode/markdown/markdown.js +0 -886
  145. package/www/codemirror/mode/mathematica/mathematica.js +0 -176
  146. package/www/codemirror/mode/mbox/mbox.js +0 -129
  147. package/www/codemirror/mode/meta.js +0 -221
  148. package/www/codemirror/mode/mirc/mirc.js +0 -193
  149. package/www/codemirror/mode/mllike/mllike.js +0 -359
  150. package/www/codemirror/mode/modelica/modelica.js +0 -245
  151. package/www/codemirror/mode/mscgen/mscgen.js +0 -175
  152. package/www/codemirror/mode/mumps/mumps.js +0 -148
  153. package/www/codemirror/mode/nginx/nginx.js +0 -178
  154. package/www/codemirror/mode/nsis/nsis.js +0 -95
  155. package/www/codemirror/mode/ntriples/ntriples.js +0 -195
  156. package/www/codemirror/mode/octave/octave.js +0 -139
  157. package/www/codemirror/mode/oz/oz.js +0 -252
  158. package/www/codemirror/mode/pascal/pascal.js +0 -136
  159. package/www/codemirror/mode/pegjs/pegjs.js +0 -111
  160. package/www/codemirror/mode/perl/perl.js +0 -836
  161. package/www/codemirror/mode/php/php.js +0 -234
  162. package/www/codemirror/mode/pig/pig.js +0 -178
  163. package/www/codemirror/mode/powershell/powershell.js +0 -398
  164. package/www/codemirror/mode/properties/properties.js +0 -78
  165. package/www/codemirror/mode/protobuf/protobuf.js +0 -72
  166. package/www/codemirror/mode/pug/pug.js +0 -591
  167. package/www/codemirror/mode/puppet/puppet.js +0 -220
  168. package/www/codemirror/mode/python/python.js +0 -402
  169. package/www/codemirror/mode/q/q.js +0 -139
  170. package/www/codemirror/mode/r/r.js +0 -190
  171. package/www/codemirror/mode/rpm/changes/index.html +0 -66
  172. package/www/codemirror/mode/rpm/rpm.js +0 -109
  173. package/www/codemirror/mode/rst/rst.js +0 -557
  174. package/www/codemirror/mode/ruby/ruby.js +0 -303
  175. package/www/codemirror/mode/rust/rust.js +0 -72
  176. package/www/codemirror/mode/sas/sas.js +0 -303
  177. package/www/codemirror/mode/sass/sass.js +0 -459
  178. package/www/codemirror/mode/scheme/scheme.js +0 -284
  179. package/www/codemirror/mode/shell/shell.js +0 -168
  180. package/www/codemirror/mode/sieve/sieve.js +0 -193
  181. package/www/codemirror/mode/slim/slim.js +0 -575
  182. package/www/codemirror/mode/smalltalk/smalltalk.js +0 -168
  183. package/www/codemirror/mode/smarty/smarty.js +0 -225
  184. package/www/codemirror/mode/solr/solr.js +0 -104
  185. package/www/codemirror/mode/soy/soy.js +0 -665
  186. package/www/codemirror/mode/sparql/sparql.js +0 -184
  187. package/www/codemirror/mode/spreadsheet/spreadsheet.js +0 -112
  188. package/www/codemirror/mode/sql/sql.js +0 -525
  189. package/www/codemirror/mode/stex/stex.js +0 -264
  190. package/www/codemirror/mode/stylus/stylus.js +0 -775
  191. package/www/codemirror/mode/swift/swift.js +0 -221
  192. package/www/codemirror/mode/tcl/tcl.js +0 -140
  193. package/www/codemirror/mode/textile/textile.js +0 -469
  194. package/www/codemirror/mode/tiddlywiki/tiddlywiki.css +0 -14
  195. package/www/codemirror/mode/tiddlywiki/tiddlywiki.js +0 -308
  196. package/www/codemirror/mode/tiki/tiki.css +0 -26
  197. package/www/codemirror/mode/tiki/tiki.js +0 -312
  198. package/www/codemirror/mode/toml/toml.js +0 -88
  199. package/www/codemirror/mode/tornado/tornado.js +0 -68
  200. package/www/codemirror/mode/troff/troff.js +0 -84
  201. package/www/codemirror/mode/ttcn/ttcn.js +0 -283
  202. package/www/codemirror/mode/ttcn-cfg/ttcn-cfg.js +0 -214
  203. package/www/codemirror/mode/turtle/turtle.js +0 -162
  204. package/www/codemirror/mode/twig/twig.js +0 -141
  205. package/www/codemirror/mode/vb/vb.js +0 -275
  206. package/www/codemirror/mode/vbscript/vbscript.js +0 -350
  207. package/www/codemirror/mode/velocity/velocity.js +0 -202
  208. package/www/codemirror/mode/verilog/verilog.js +0 -781
  209. package/www/codemirror/mode/vhdl/vhdl.js +0 -189
  210. package/www/codemirror/mode/vue/vue.js +0 -77
  211. package/www/codemirror/mode/wast/wast.js +0 -132
  212. package/www/codemirror/mode/webidl/webidl.js +0 -195
  213. package/www/codemirror/mode/xml/xml.js +0 -417
  214. package/www/codemirror/mode/xquery/xquery.js +0 -448
  215. package/www/codemirror/mode/yacas/yacas.js +0 -204
  216. package/www/codemirror/mode/yaml/yaml.js +0 -120
  217. package/www/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +0 -72
  218. package/www/codemirror/mode/z80/z80.js +0 -116
  219. package/www/codemirror/package.json +0 -52
  220. package/www/codemirror/rollup.config.js +0 -52
  221. package/www/codemirror/src/addon/runmode/codemirror-standalone.js +0 -24
  222. package/www/codemirror/src/addon/runmode/codemirror.node.js +0 -21
  223. package/www/codemirror/src/addon/runmode/runmode-standalone.js +0 -2
  224. package/www/codemirror/src/addon/runmode/runmode.node.js +0 -2
  225. package/www/codemirror/src/codemirror.js +0 -3
  226. package/www/codemirror/src/display/Display.js +0 -116
  227. package/www/codemirror/src/display/focus.js +0 -50
  228. package/www/codemirror/src/display/gutters.js +0 -44
  229. package/www/codemirror/src/display/highlight_worker.js +0 -55
  230. package/www/codemirror/src/display/line_numbers.js +0 -48
  231. package/www/codemirror/src/display/mode_state.js +0 -22
  232. package/www/codemirror/src/display/operations.js +0 -206
  233. package/www/codemirror/src/display/scroll_events.js +0 -132
  234. package/www/codemirror/src/display/scrollbars.js +0 -194
  235. package/www/codemirror/src/display/scrolling.js +0 -186
  236. package/www/codemirror/src/display/selection.js +0 -173
  237. package/www/codemirror/src/display/update_display.js +0 -267
  238. package/www/codemirror/src/display/update_line.js +0 -189
  239. package/www/codemirror/src/display/update_lines.js +0 -82
  240. package/www/codemirror/src/display/view_tracking.js +0 -153
  241. package/www/codemirror/src/edit/CodeMirror.js +0 -217
  242. package/www/codemirror/src/edit/commands.js +0 -178
  243. package/www/codemirror/src/edit/deleteNearSelection.js +0 -30
  244. package/www/codemirror/src/edit/drop_events.js +0 -130
  245. package/www/codemirror/src/edit/fromTextArea.js +0 -61
  246. package/www/codemirror/src/edit/global_events.js +0 -45
  247. package/www/codemirror/src/edit/key_events.js +0 -163
  248. package/www/codemirror/src/edit/legacy.js +0 -62
  249. package/www/codemirror/src/edit/main.js +0 -69
  250. package/www/codemirror/src/edit/methods.js +0 -555
  251. package/www/codemirror/src/edit/mouse_events.js +0 -417
  252. package/www/codemirror/src/edit/options.js +0 -194
  253. package/www/codemirror/src/edit/utils.js +0 -7
  254. package/www/codemirror/src/input/ContentEditableInput.js +0 -546
  255. package/www/codemirror/src/input/TextareaInput.js +0 -380
  256. package/www/codemirror/src/input/indent.js +0 -71
  257. package/www/codemirror/src/input/input.js +0 -134
  258. package/www/codemirror/src/input/keymap.js +0 -147
  259. package/www/codemirror/src/input/keynames.js +0 -17
  260. package/www/codemirror/src/input/movement.js +0 -111
  261. package/www/codemirror/src/line/highlight.js +0 -284
  262. package/www/codemirror/src/line/line_data.js +0 -349
  263. package/www/codemirror/src/line/pos.js +0 -40
  264. package/www/codemirror/src/line/saw_special_spans.js +0 -10
  265. package/www/codemirror/src/line/spans.js +0 -390
  266. package/www/codemirror/src/line/utils_line.js +0 -85
  267. package/www/codemirror/src/measurement/position_measurement.js +0 -702
  268. package/www/codemirror/src/measurement/widgets.js +0 -26
  269. package/www/codemirror/src/model/Doc.js +0 -436
  270. package/www/codemirror/src/model/change_measurement.js +0 -61
  271. package/www/codemirror/src/model/changes.js +0 -339
  272. package/www/codemirror/src/model/chunk.js +0 -167
  273. package/www/codemirror/src/model/document_data.js +0 -112
  274. package/www/codemirror/src/model/history.js +0 -228
  275. package/www/codemirror/src/model/line_widget.js +0 -78
  276. package/www/codemirror/src/model/mark_text.js +0 -293
  277. package/www/codemirror/src/model/selection.js +0 -84
  278. package/www/codemirror/src/model/selection_updates.js +0 -216
  279. package/www/codemirror/src/modes.js +0 -96
  280. package/www/codemirror/src/util/StringStream.js +0 -90
  281. package/www/codemirror/src/util/bidi.js +0 -215
  282. package/www/codemirror/src/util/browser.js +0 -34
  283. package/www/codemirror/src/util/dom.js +0 -101
  284. package/www/codemirror/src/util/event.js +0 -103
  285. package/www/codemirror/src/util/feature_detection.js +0 -84
  286. package/www/codemirror/src/util/misc.js +0 -168
  287. package/www/codemirror/src/util/operation_group.js +0 -72
  288. package/www/codemirror/theme/3024-day.css +0 -41
  289. package/www/codemirror/theme/3024-night.css +0 -39
  290. package/www/codemirror/theme/abbott.css +0 -268
  291. package/www/codemirror/theme/abcdef.css +0 -32
  292. package/www/codemirror/theme/ambiance-mobile.css +0 -5
  293. package/www/codemirror/theme/ambiance.css +0 -74
  294. package/www/codemirror/theme/ayu-dark.css +0 -44
  295. package/www/codemirror/theme/ayu-mirage.css +0 -45
  296. package/www/codemirror/theme/base16-dark.css +0 -40
  297. package/www/codemirror/theme/base16-light.css +0 -38
  298. package/www/codemirror/theme/bespin.css +0 -34
  299. package/www/codemirror/theme/blackboard.css +0 -32
  300. package/www/codemirror/theme/cobalt.css +0 -25
  301. package/www/codemirror/theme/colorforth.css +0 -33
  302. package/www/codemirror/theme/darcula.css +0 -53
  303. package/www/codemirror/theme/dracula.css +0 -40
  304. package/www/codemirror/theme/duotone-dark.css +0 -35
  305. package/www/codemirror/theme/duotone-light.css +0 -36
  306. package/www/codemirror/theme/eclipse.css +0 -23
  307. package/www/codemirror/theme/elegant.css +0 -13
  308. package/www/codemirror/theme/erlang-dark.css +0 -34
  309. package/www/codemirror/theme/gruvbox-dark.css +0 -39
  310. package/www/codemirror/theme/hopscotch.css +0 -34
  311. package/www/codemirror/theme/icecoder.css +0 -43
  312. package/www/codemirror/theme/idea.css +0 -42
  313. package/www/codemirror/theme/isotope.css +0 -34
  314. package/www/codemirror/theme/juejin.css +0 -30
  315. package/www/codemirror/theme/lesser-dark.css +0 -47
  316. package/www/codemirror/theme/liquibyte.css +0 -95
  317. package/www/codemirror/theme/lucario.css +0 -37
  318. package/www/codemirror/theme/material-darker.css +0 -135
  319. package/www/codemirror/theme/material-ocean.css +0 -141
  320. package/www/codemirror/theme/material-palenight.css +0 -141
  321. package/www/codemirror/theme/material.css +0 -141
  322. package/www/codemirror/theme/mbo.css +0 -37
  323. package/www/codemirror/theme/mdn-like.css +0 -46
  324. package/www/codemirror/theme/midnight.css +0 -39
  325. package/www/codemirror/theme/monokai.css +0 -41
  326. package/www/codemirror/theme/moxer.css +0 -143
  327. package/www/codemirror/theme/neat.css +0 -12
  328. package/www/codemirror/theme/neo.css +0 -43
  329. package/www/codemirror/theme/night.css +0 -27
  330. package/www/codemirror/theme/nord.css +0 -42
  331. package/www/codemirror/theme/oceanic-next.css +0 -46
  332. package/www/codemirror/theme/panda-syntax.css +0 -85
  333. package/www/codemirror/theme/paraiso-dark.css +0 -38
  334. package/www/codemirror/theme/paraiso-light.css +0 -38
  335. package/www/codemirror/theme/pastel-on-dark.css +0 -52
  336. package/www/codemirror/theme/railscasts.css +0 -34
  337. package/www/codemirror/theme/rubyblue.css +0 -25
  338. package/www/codemirror/theme/seti.css +0 -44
  339. package/www/codemirror/theme/shadowfox.css +0 -52
  340. package/www/codemirror/theme/solarized.css +0 -165
  341. package/www/codemirror/theme/ssms.css +0 -16
  342. package/www/codemirror/theme/the-matrix.css +0 -30
  343. package/www/codemirror/theme/tomorrow-night-bright.css +0 -35
  344. package/www/codemirror/theme/tomorrow-night-eighties.css +0 -38
  345. package/www/codemirror/theme/ttcn.css +0 -64
  346. package/www/codemirror/theme/twilight.css +0 -32
  347. package/www/codemirror/theme/vibrant-ink.css +0 -34
  348. package/www/codemirror/theme/xq-dark.css +0 -53
  349. package/www/codemirror/theme/xq-light.css +0 -43
  350. package/www/codemirror/theme/yeti.css +0 -44
  351. package/www/codemirror/theme/yonce.css +0 -59
  352. package/www/codemirror/theme/zenburn.css +0 -37
  353. package/www/index.html +0 -359
@@ -1,228 +0,0 @@
1
- import { cmp, copyPos } from "../line/pos.js"
2
- import { stretchSpansOverChange } from "../line/spans.js"
3
- import { getBetween } from "../line/utils_line.js"
4
- import { signal } from "../util/event.js"
5
- import { indexOf, lst } from "../util/misc.js"
6
-
7
- import { changeEnd } from "./change_measurement.js"
8
- import { linkedDocs } from "./document_data.js"
9
- import { Selection } from "./selection.js"
10
-
11
- export function History(prev) {
12
- // Arrays of change events and selections. Doing something adds an
13
- // event to done and clears undo. Undoing moves events from done
14
- // to undone, redoing moves them in the other direction.
15
- this.done = []; this.undone = []
16
- this.undoDepth = prev ? prev.undoDepth : Infinity
17
- // Used to track when changes can be merged into a single undo
18
- // event
19
- this.lastModTime = this.lastSelTime = 0
20
- this.lastOp = this.lastSelOp = null
21
- this.lastOrigin = this.lastSelOrigin = null
22
- // Used by the isClean() method
23
- this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1
24
- }
25
-
26
- // Create a history change event from an updateDoc-style change
27
- // object.
28
- export function historyChangeFromChange(doc, change) {
29
- let histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}
30
- attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1)
31
- linkedDocs(doc, doc => attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1), true)
32
- return histChange
33
- }
34
-
35
- // Pop all selection events off the end of a history array. Stop at
36
- // a change event.
37
- function clearSelectionEvents(array) {
38
- while (array.length) {
39
- let last = lst(array)
40
- if (last.ranges) array.pop()
41
- else break
42
- }
43
- }
44
-
45
- // Find the top change event in the history. Pop off selection
46
- // events that are in the way.
47
- function lastChangeEvent(hist, force) {
48
- if (force) {
49
- clearSelectionEvents(hist.done)
50
- return lst(hist.done)
51
- } else if (hist.done.length && !lst(hist.done).ranges) {
52
- return lst(hist.done)
53
- } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {
54
- hist.done.pop()
55
- return lst(hist.done)
56
- }
57
- }
58
-
59
- // Register a change in the history. Merges changes that are within
60
- // a single operation, or are close together with an origin that
61
- // allows merging (starting with "+") into a single event.
62
- export function addChangeToHistory(doc, change, selAfter, opId) {
63
- let hist = doc.history
64
- hist.undone.length = 0
65
- let time = +new Date, cur
66
- let last
67
-
68
- if ((hist.lastOp == opId ||
69
- hist.lastOrigin == change.origin && change.origin &&
70
- ((change.origin.charAt(0) == "+" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||
71
- change.origin.charAt(0) == "*")) &&
72
- (cur = lastChangeEvent(hist, hist.lastOp == opId))) {
73
- // Merge this change into the last event
74
- last = lst(cur.changes)
75
- if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {
76
- // Optimized case for simple insertion -- don't want to add
77
- // new changesets for every character typed
78
- last.to = changeEnd(change)
79
- } else {
80
- // Add new sub-event
81
- cur.changes.push(historyChangeFromChange(doc, change))
82
- }
83
- } else {
84
- // Can not be merged, start a new event.
85
- let before = lst(hist.done)
86
- if (!before || !before.ranges)
87
- pushSelectionToHistory(doc.sel, hist.done)
88
- cur = {changes: [historyChangeFromChange(doc, change)],
89
- generation: hist.generation}
90
- hist.done.push(cur)
91
- while (hist.done.length > hist.undoDepth) {
92
- hist.done.shift()
93
- if (!hist.done[0].ranges) hist.done.shift()
94
- }
95
- }
96
- hist.done.push(selAfter)
97
- hist.generation = ++hist.maxGeneration
98
- hist.lastModTime = hist.lastSelTime = time
99
- hist.lastOp = hist.lastSelOp = opId
100
- hist.lastOrigin = hist.lastSelOrigin = change.origin
101
-
102
- if (!last) signal(doc, "historyAdded")
103
- }
104
-
105
- function selectionEventCanBeMerged(doc, origin, prev, sel) {
106
- let ch = origin.charAt(0)
107
- return ch == "*" ||
108
- ch == "+" &&
109
- prev.ranges.length == sel.ranges.length &&
110
- prev.somethingSelected() == sel.somethingSelected() &&
111
- new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)
112
- }
113
-
114
- // Called whenever the selection changes, sets the new selection as
115
- // the pending selection in the history, and pushes the old pending
116
- // selection into the 'done' array when it was significantly
117
- // different (in number of selected ranges, emptiness, or time).
118
- export function addSelectionToHistory(doc, sel, opId, options) {
119
- let hist = doc.history, origin = options && options.origin
120
-
121
- // A new event is started when the previous origin does not match
122
- // the current, or the origins don't allow matching. Origins
123
- // starting with * are always merged, those starting with + are
124
- // merged when similar and close together in time.
125
- if (opId == hist.lastSelOp ||
126
- (origin && hist.lastSelOrigin == origin &&
127
- (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||
128
- selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))
129
- hist.done[hist.done.length - 1] = sel
130
- else
131
- pushSelectionToHistory(sel, hist.done)
132
-
133
- hist.lastSelTime = +new Date
134
- hist.lastSelOrigin = origin
135
- hist.lastSelOp = opId
136
- if (options && options.clearRedo !== false)
137
- clearSelectionEvents(hist.undone)
138
- }
139
-
140
- export function pushSelectionToHistory(sel, dest) {
141
- let top = lst(dest)
142
- if (!(top && top.ranges && top.equals(sel)))
143
- dest.push(sel)
144
- }
145
-
146
- // Used to store marked span information in the history.
147
- function attachLocalSpans(doc, change, from, to) {
148
- let existing = change["spans_" + doc.id], n = 0
149
- doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), line => {
150
- if (line.markedSpans)
151
- (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans
152
- ++n
153
- })
154
- }
155
-
156
- // When un/re-doing restores text containing marked spans, those
157
- // that have been explicitly cleared should not be restored.
158
- function removeClearedSpans(spans) {
159
- if (!spans) return null
160
- let out
161
- for (let i = 0; i < spans.length; ++i) {
162
- if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i) }
163
- else if (out) out.push(spans[i])
164
- }
165
- return !out ? spans : out.length ? out : null
166
- }
167
-
168
- // Retrieve and filter the old marked spans stored in a change event.
169
- function getOldSpans(doc, change) {
170
- let found = change["spans_" + doc.id]
171
- if (!found) return null
172
- let nw = []
173
- for (let i = 0; i < change.text.length; ++i)
174
- nw.push(removeClearedSpans(found[i]))
175
- return nw
176
- }
177
-
178
- // Used for un/re-doing changes from the history. Combines the
179
- // result of computing the existing spans with the set of spans that
180
- // existed in the history (so that deleting around a span and then
181
- // undoing brings back the span).
182
- export function mergeOldSpans(doc, change) {
183
- let old = getOldSpans(doc, change)
184
- let stretched = stretchSpansOverChange(doc, change)
185
- if (!old) return stretched
186
- if (!stretched) return old
187
-
188
- for (let i = 0; i < old.length; ++i) {
189
- let oldCur = old[i], stretchCur = stretched[i]
190
- if (oldCur && stretchCur) {
191
- spans: for (let j = 0; j < stretchCur.length; ++j) {
192
- let span = stretchCur[j]
193
- for (let k = 0; k < oldCur.length; ++k)
194
- if (oldCur[k].marker == span.marker) continue spans
195
- oldCur.push(span)
196
- }
197
- } else if (stretchCur) {
198
- old[i] = stretchCur
199
- }
200
- }
201
- return old
202
- }
203
-
204
- // Used both to provide a JSON-safe object in .getHistory, and, when
205
- // detaching a document, to split the history in two
206
- export function copyHistoryArray(events, newGroup, instantiateSel) {
207
- let copy = []
208
- for (let i = 0; i < events.length; ++i) {
209
- let event = events[i]
210
- if (event.ranges) {
211
- copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event)
212
- continue
213
- }
214
- let changes = event.changes, newChanges = []
215
- copy.push({changes: newChanges})
216
- for (let j = 0; j < changes.length; ++j) {
217
- let change = changes[j], m
218
- newChanges.push({from: change.from, to: change.to, text: change.text})
219
- if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) {
220
- if (indexOf(newGroup, Number(m[1])) > -1) {
221
- lst(newChanges)[prop] = change[prop]
222
- delete change[prop]
223
- }
224
- }
225
- }
226
- }
227
- return copy
228
- }
@@ -1,78 +0,0 @@
1
- import { runInOp } from "../display/operations.js"
2
- import { addToScrollTop } from "../display/scrolling.js"
3
- import { regLineChange } from "../display/view_tracking.js"
4
- import { heightAtLine, lineIsHidden } from "../line/spans.js"
5
- import { lineNo, updateLineHeight } from "../line/utils_line.js"
6
- import { widgetHeight } from "../measurement/widgets.js"
7
- import { changeLine } from "./changes.js"
8
- import { eventMixin } from "../util/event.js"
9
- import { signalLater } from "../util/operation_group.js"
10
-
11
- // Line widgets are block elements displayed above or below a line.
12
-
13
- export class LineWidget {
14
- constructor(doc, node, options) {
15
- if (options) for (let opt in options) if (options.hasOwnProperty(opt))
16
- this[opt] = options[opt]
17
- this.doc = doc
18
- this.node = node
19
- }
20
-
21
- clear() {
22
- let cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line)
23
- if (no == null || !ws) return
24
- for (let i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1)
25
- if (!ws.length) line.widgets = null
26
- let height = widgetHeight(this)
27
- updateLineHeight(line, Math.max(0, line.height - height))
28
- if (cm) {
29
- runInOp(cm, () => {
30
- adjustScrollWhenAboveVisible(cm, line, -height)
31
- regLineChange(cm, no, "widget")
32
- })
33
- signalLater(cm, "lineWidgetCleared", cm, this, no)
34
- }
35
- }
36
-
37
- changed() {
38
- let oldH = this.height, cm = this.doc.cm, line = this.line
39
- this.height = null
40
- let diff = widgetHeight(this) - oldH
41
- if (!diff) return
42
- if (!lineIsHidden(this.doc, line)) updateLineHeight(line, line.height + diff)
43
- if (cm) {
44
- runInOp(cm, () => {
45
- cm.curOp.forceUpdate = true
46
- adjustScrollWhenAboveVisible(cm, line, diff)
47
- signalLater(cm, "lineWidgetChanged", cm, this, lineNo(line))
48
- })
49
- }
50
- }
51
- }
52
- eventMixin(LineWidget)
53
-
54
- function adjustScrollWhenAboveVisible(cm, line, diff) {
55
- if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))
56
- addToScrollTop(cm, diff)
57
- }
58
-
59
- export function addLineWidget(doc, handle, node, options) {
60
- let widget = new LineWidget(doc, node, options)
61
- let cm = doc.cm
62
- if (cm && widget.noHScroll) cm.display.alignWidgets = true
63
- changeLine(doc, handle, "widget", line => {
64
- let widgets = line.widgets || (line.widgets = [])
65
- if (widget.insertAt == null) widgets.push(widget)
66
- else widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget)
67
- widget.line = line
68
- if (cm && !lineIsHidden(doc, line)) {
69
- let aboveVisible = heightAtLine(line) < doc.scrollTop
70
- updateLineHeight(line, line.height + widgetHeight(widget))
71
- if (aboveVisible) addToScrollTop(cm, widget.height)
72
- cm.curOp.forceUpdate = true
73
- }
74
- return true
75
- })
76
- if (cm) signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle))
77
- return widget
78
- }
@@ -1,293 +0,0 @@
1
- import { eltP } from "../util/dom.js"
2
- import { eventMixin, hasHandler, on } from "../util/event.js"
3
- import { endOperation, operation, runInOp, startOperation } from "../display/operations.js"
4
- import { clipPos, cmp, Pos } from "../line/pos.js"
5
- import { lineNo, updateLineHeight } from "../line/utils_line.js"
6
- import { clearLineMeasurementCacheFor, findViewForLine, textHeight } from "../measurement/position_measurement.js"
7
- import { seeReadOnlySpans, seeCollapsedSpans } from "../line/saw_special_spans.js"
8
- import { addMarkedSpan, conflictingCollapsedRange, getMarkedSpanFor, lineIsHidden, lineLength, MarkedSpan, removeMarkedSpan, visualLine } from "../line/spans.js"
9
- import { copyObj, indexOf, lst } from "../util/misc.js"
10
- import { signalLater } from "../util/operation_group.js"
11
- import { widgetHeight } from "../measurement/widgets.js"
12
- import { regChange, regLineChange } from "../display/view_tracking.js"
13
-
14
- import { linkedDocs } from "./document_data.js"
15
- import { addChangeToHistory } from "./history.js"
16
- import { reCheckSelection } from "./selection_updates.js"
17
-
18
- // TEXTMARKERS
19
-
20
- // Created with markText and setBookmark methods. A TextMarker is a
21
- // handle that can be used to clear or find a marked position in the
22
- // document. Line objects hold arrays (markedSpans) containing
23
- // {from, to, marker} object pointing to such marker objects, and
24
- // indicating that such a marker is present on that line. Multiple
25
- // lines may point to the same marker when it spans across lines.
26
- // The spans will have null for their from/to properties when the
27
- // marker continues beyond the start/end of the line. Markers have
28
- // links back to the lines they currently touch.
29
-
30
- // Collapsed markers have unique ids, in order to be able to order
31
- // them, which is needed for uniquely determining an outer marker
32
- // when they overlap (they may nest, but not partially overlap).
33
- let nextMarkerId = 0
34
-
35
- export class TextMarker {
36
- constructor(doc, type) {
37
- this.lines = []
38
- this.type = type
39
- this.doc = doc
40
- this.id = ++nextMarkerId
41
- }
42
-
43
- // Clear the marker.
44
- clear() {
45
- if (this.explicitlyCleared) return
46
- let cm = this.doc.cm, withOp = cm && !cm.curOp
47
- if (withOp) startOperation(cm)
48
- if (hasHandler(this, "clear")) {
49
- let found = this.find()
50
- if (found) signalLater(this, "clear", found.from, found.to)
51
- }
52
- let min = null, max = null
53
- for (let i = 0; i < this.lines.length; ++i) {
54
- let line = this.lines[i]
55
- let span = getMarkedSpanFor(line.markedSpans, this)
56
- if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text")
57
- else if (cm) {
58
- if (span.to != null) max = lineNo(line)
59
- if (span.from != null) min = lineNo(line)
60
- }
61
- line.markedSpans = removeMarkedSpan(line.markedSpans, span)
62
- if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)
63
- updateLineHeight(line, textHeight(cm.display))
64
- }
65
- if (cm && this.collapsed && !cm.options.lineWrapping) for (let i = 0; i < this.lines.length; ++i) {
66
- let visual = visualLine(this.lines[i]), len = lineLength(visual)
67
- if (len > cm.display.maxLineLength) {
68
- cm.display.maxLine = visual
69
- cm.display.maxLineLength = len
70
- cm.display.maxLineChanged = true
71
- }
72
- }
73
-
74
- if (min != null && cm && this.collapsed) regChange(cm, min, max + 1)
75
- this.lines.length = 0
76
- this.explicitlyCleared = true
77
- if (this.atomic && this.doc.cantEdit) {
78
- this.doc.cantEdit = false
79
- if (cm) reCheckSelection(cm.doc)
80
- }
81
- if (cm) signalLater(cm, "markerCleared", cm, this, min, max)
82
- if (withOp) endOperation(cm)
83
- if (this.parent) this.parent.clear()
84
- }
85
-
86
- // Find the position of the marker in the document. Returns a {from,
87
- // to} object by default. Side can be passed to get a specific side
88
- // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the
89
- // Pos objects returned contain a line object, rather than a line
90
- // number (used to prevent looking up the same line twice).
91
- find(side, lineObj) {
92
- if (side == null && this.type == "bookmark") side = 1
93
- let from, to
94
- for (let i = 0; i < this.lines.length; ++i) {
95
- let line = this.lines[i]
96
- let span = getMarkedSpanFor(line.markedSpans, this)
97
- if (span.from != null) {
98
- from = Pos(lineObj ? line : lineNo(line), span.from)
99
- if (side == -1) return from
100
- }
101
- if (span.to != null) {
102
- to = Pos(lineObj ? line : lineNo(line), span.to)
103
- if (side == 1) return to
104
- }
105
- }
106
- return from && {from: from, to: to}
107
- }
108
-
109
- // Signals that the marker's widget changed, and surrounding layout
110
- // should be recomputed.
111
- changed() {
112
- let pos = this.find(-1, true), widget = this, cm = this.doc.cm
113
- if (!pos || !cm) return
114
- runInOp(cm, () => {
115
- let line = pos.line, lineN = lineNo(pos.line)
116
- let view = findViewForLine(cm, lineN)
117
- if (view) {
118
- clearLineMeasurementCacheFor(view)
119
- cm.curOp.selectionChanged = cm.curOp.forceUpdate = true
120
- }
121
- cm.curOp.updateMaxLine = true
122
- if (!lineIsHidden(widget.doc, line) && widget.height != null) {
123
- let oldHeight = widget.height
124
- widget.height = null
125
- let dHeight = widgetHeight(widget) - oldHeight
126
- if (dHeight)
127
- updateLineHeight(line, line.height + dHeight)
128
- }
129
- signalLater(cm, "markerChanged", cm, this)
130
- })
131
- }
132
-
133
- attachLine(line) {
134
- if (!this.lines.length && this.doc.cm) {
135
- let op = this.doc.cm.curOp
136
- if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)
137
- (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this)
138
- }
139
- this.lines.push(line)
140
- }
141
-
142
- detachLine(line) {
143
- this.lines.splice(indexOf(this.lines, line), 1)
144
- if (!this.lines.length && this.doc.cm) {
145
- let op = this.doc.cm.curOp
146
- ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this)
147
- }
148
- }
149
- }
150
- eventMixin(TextMarker)
151
-
152
- // Create a marker, wire it up to the right lines, and
153
- export function markText(doc, from, to, options, type) {
154
- // Shared markers (across linked documents) are handled separately
155
- // (markTextShared will call out to this again, once per
156
- // document).
157
- if (options && options.shared) return markTextShared(doc, from, to, options, type)
158
- // Ensure we are in an operation.
159
- if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type)
160
-
161
- let marker = new TextMarker(doc, type), diff = cmp(from, to)
162
- if (options) copyObj(options, marker, false)
163
- // Don't connect empty markers unless clearWhenEmpty is false
164
- if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)
165
- return marker
166
- if (marker.replacedWith) {
167
- // Showing up as a widget implies collapsed (widget replaces text)
168
- marker.collapsed = true
169
- marker.widgetNode = eltP("span", [marker.replacedWith], "CodeMirror-widget")
170
- if (!options.handleMouseEvents) marker.widgetNode.setAttribute("cm-ignore-events", "true")
171
- if (options.insertLeft) marker.widgetNode.insertLeft = true
172
- }
173
- if (marker.collapsed) {
174
- if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||
175
- from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))
176
- throw new Error("Inserting collapsed marker partially overlapping an existing one")
177
- seeCollapsedSpans()
178
- }
179
-
180
- if (marker.addToHistory)
181
- addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN)
182
-
183
- let curLine = from.line, cm = doc.cm, updateMaxLine
184
- doc.iter(curLine, to.line + 1, line => {
185
- if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)
186
- updateMaxLine = true
187
- if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0)
188
- addMarkedSpan(line, new MarkedSpan(marker,
189
- curLine == from.line ? from.ch : null,
190
- curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp)
191
- ++curLine
192
- })
193
- // lineIsHidden depends on the presence of the spans, so needs a second pass
194
- if (marker.collapsed) doc.iter(from.line, to.line + 1, line => {
195
- if (lineIsHidden(doc, line)) updateLineHeight(line, 0)
196
- })
197
-
198
- if (marker.clearOnEnter) on(marker, "beforeCursorEnter", () => marker.clear())
199
-
200
- if (marker.readOnly) {
201
- seeReadOnlySpans()
202
- if (doc.history.done.length || doc.history.undone.length)
203
- doc.clearHistory()
204
- }
205
- if (marker.collapsed) {
206
- marker.id = ++nextMarkerId
207
- marker.atomic = true
208
- }
209
- if (cm) {
210
- // Sync editor state
211
- if (updateMaxLine) cm.curOp.updateMaxLine = true
212
- if (marker.collapsed)
213
- regChange(cm, from.line, to.line + 1)
214
- else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||
215
- marker.attributes || marker.title)
216
- for (let i = from.line; i <= to.line; i++) regLineChange(cm, i, "text")
217
- if (marker.atomic) reCheckSelection(cm.doc)
218
- signalLater(cm, "markerAdded", cm, marker)
219
- }
220
- return marker
221
- }
222
-
223
- // SHARED TEXTMARKERS
224
-
225
- // A shared marker spans multiple linked documents. It is
226
- // implemented as a meta-marker-object controlling multiple normal
227
- // markers.
228
- export class SharedTextMarker {
229
- constructor(markers, primary) {
230
- this.markers = markers
231
- this.primary = primary
232
- for (let i = 0; i < markers.length; ++i)
233
- markers[i].parent = this
234
- }
235
-
236
- clear() {
237
- if (this.explicitlyCleared) return
238
- this.explicitlyCleared = true
239
- for (let i = 0; i < this.markers.length; ++i)
240
- this.markers[i].clear()
241
- signalLater(this, "clear")
242
- }
243
-
244
- find(side, lineObj) {
245
- return this.primary.find(side, lineObj)
246
- }
247
- }
248
- eventMixin(SharedTextMarker)
249
-
250
- function markTextShared(doc, from, to, options, type) {
251
- options = copyObj(options)
252
- options.shared = false
253
- let markers = [markText(doc, from, to, options, type)], primary = markers[0]
254
- let widget = options.widgetNode
255
- linkedDocs(doc, doc => {
256
- if (widget) options.widgetNode = widget.cloneNode(true)
257
- markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type))
258
- for (let i = 0; i < doc.linked.length; ++i)
259
- if (doc.linked[i].isParent) return
260
- primary = lst(markers)
261
- })
262
- return new SharedTextMarker(markers, primary)
263
- }
264
-
265
- export function findSharedMarkers(doc) {
266
- return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), m => m.parent)
267
- }
268
-
269
- export function copySharedMarkers(doc, markers) {
270
- for (let i = 0; i < markers.length; i++) {
271
- let marker = markers[i], pos = marker.find()
272
- let mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to)
273
- if (cmp(mFrom, mTo)) {
274
- let subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type)
275
- marker.markers.push(subMark)
276
- subMark.parent = marker
277
- }
278
- }
279
- }
280
-
281
- export function detachSharedMarkers(markers) {
282
- for (let i = 0; i < markers.length; i++) {
283
- let marker = markers[i], linked = [marker.primary.doc]
284
- linkedDocs(marker.primary.doc, d => linked.push(d))
285
- for (let j = 0; j < marker.markers.length; j++) {
286
- let subMarker = marker.markers[j]
287
- if (indexOf(linked, subMarker.doc) == -1) {
288
- subMarker.parent = null
289
- marker.markers.splice(j--, 1)
290
- }
291
- }
292
- }
293
- }
@@ -1,84 +0,0 @@
1
- import { cmp, copyPos, equalCursorPos, maxPos, minPos } from "../line/pos.js"
2
- import { indexOf } from "../util/misc.js"
3
-
4
- // Selection objects are immutable. A new one is created every time
5
- // the selection changes. A selection is one or more non-overlapping
6
- // (and non-touching) ranges, sorted, and an integer that indicates
7
- // which one is the primary selection (the one that's scrolled into
8
- // view, that getCursor returns, etc).
9
- export class Selection {
10
- constructor(ranges, primIndex) {
11
- this.ranges = ranges
12
- this.primIndex = primIndex
13
- }
14
-
15
- primary() { return this.ranges[this.primIndex] }
16
-
17
- equals(other) {
18
- if (other == this) return true
19
- if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false
20
- for (let i = 0; i < this.ranges.length; i++) {
21
- let here = this.ranges[i], there = other.ranges[i]
22
- if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) return false
23
- }
24
- return true
25
- }
26
-
27
- deepCopy() {
28
- let out = []
29
- for (let i = 0; i < this.ranges.length; i++)
30
- out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head))
31
- return new Selection(out, this.primIndex)
32
- }
33
-
34
- somethingSelected() {
35
- for (let i = 0; i < this.ranges.length; i++)
36
- if (!this.ranges[i].empty()) return true
37
- return false
38
- }
39
-
40
- contains(pos, end) {
41
- if (!end) end = pos
42
- for (let i = 0; i < this.ranges.length; i++) {
43
- let range = this.ranges[i]
44
- if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)
45
- return i
46
- }
47
- return -1
48
- }
49
- }
50
-
51
- export class Range {
52
- constructor(anchor, head) {
53
- this.anchor = anchor; this.head = head
54
- }
55
-
56
- from() { return minPos(this.anchor, this.head) }
57
- to() { return maxPos(this.anchor, this.head) }
58
- empty() { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch }
59
- }
60
-
61
- // Take an unsorted, potentially overlapping set of ranges, and
62
- // build a selection out of it. 'Consumes' ranges array (modifying
63
- // it).
64
- export function normalizeSelection(cm, ranges, primIndex) {
65
- let mayTouch = cm && cm.options.selectionsMayTouch
66
- let prim = ranges[primIndex]
67
- ranges.sort((a, b) => cmp(a.from(), b.from()))
68
- primIndex = indexOf(ranges, prim)
69
- for (let i = 1; i < ranges.length; i++) {
70
- let cur = ranges[i], prev = ranges[i - 1]
71
- let diff = cmp(prev.to(), cur.from())
72
- if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {
73
- let from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to())
74
- let inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head
75
- if (i <= primIndex) --primIndex
76
- ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to))
77
- }
78
- }
79
- return new Selection(ranges, primIndex)
80
- }
81
-
82
- export function simpleSelection(anchor, head) {
83
- return new Selection([new Range(anchor, head || anchor)], 0)
84
- }