diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e43b0f9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.DS_Store
diff --git a/README.md b/README.md
index 0b48be2..d2c3485 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,15 @@
# js-examples
-This repository contains examples of JavaScript usage.
-The "editable-samples" directory contains JavaScript examples that are intended to be embedded in MDN pages as live editable samples.
+This repository contains examples of JavaScript usage.
The "promises-test" directory contains a JS promises test example, for learning purposes. [Run the example live](http://mdn.github.io/js-examples/promises-test/).
The "modules" directory contains a series of examples that explain how [JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) are used. The subdirectories are as follows:
-* [basic-modules](module-examples/basic-modules): Simple example that demonstrates module basics, including default exports ([run the example live](http://mdn.github.io/js-examples/module-examples/basic-modules)).
-* [renaming](module-examples/renaming): Shows how exports can be renamed to avoid conflicts, using `x as y` syntax ([run the example live](http://mdn.github.io/js-examples/module-examples/renaming)).
-* [module-objects](module-examples/module-objects)): Shows how to import an entire module as an object using `import * as x from 'y.js'` syntax ([run the example live](http://mdn.github.io/js-examples/module-examples/module-objects)).
-* [classes](module-examples/classes): Provides an example of importing a class from a module ([run the example live](http://mdn.github.io/js-examples/module-examples/classes)).
-* [module-aggregation](module-examples/module-aggregation): Shows how sub module features can be aggregated into a parent module using `export { x } from 'y.js'` syntax ([run the example live](http://mdn.github.io/js-examples/module-examples/module-aggregation)).
-* [dynamic-module-imports](module-examples/dynamic-module-imports): Demonstrates dynamic module loading using `import().then()` ([run the example live](http://mdn.github.io/js-examples/module-examples/dynamic-module-imports)).
-* [top-level-await](module-examples/top-level-await): An example of using the `await` keyword within a module ([run the example live](http://mdn.github.io/js-examples/module-examples/top-level-await)).
+- [basic-modules](module-examples/basic-modules): Simple example that demonstrates module basics, including default exports ([run the example live](http://mdn.github.io/js-examples/module-examples/basic-modules)).
+- [renaming](module-examples/renaming): Shows how exports can be renamed to avoid conflicts, using `x as y` syntax ([run the example live](http://mdn.github.io/js-examples/module-examples/renaming)).
+- [module-objects](module-examples/module-objects)): Shows how to import an entire module as an object using `import * as x from 'y.js'` syntax ([run the example live](http://mdn.github.io/js-examples/module-examples/module-objects)).
+- [classes](module-examples/classes): Provides an example of importing a class from a module ([run the example live](http://mdn.github.io/js-examples/module-examples/classes)).
+- [module-aggregation](module-examples/module-aggregation): Shows how sub module features can be aggregated into a parent module using `export { x } from 'y.js'` syntax ([run the example live](http://mdn.github.io/js-examples/module-examples/module-aggregation)).
+- [dynamic-module-imports](module-examples/dynamic-module-imports): Demonstrates dynamic module loading using `import().then()` ([run the example live](http://mdn.github.io/js-examples/module-examples/dynamic-module-imports)).
+- [top-level-await](module-examples/top-level-await): An example of using the `await` keyword within a module ([run the example live](http://mdn.github.io/js-examples/module-examples/top-level-await)).
diff --git a/editable-samples/editor/codemirror/CHANGELOG.md b/editable-samples/editor/codemirror/CHANGELOG.md
deleted file mode 100644
index 07ed029..0000000
--- a/editable-samples/editor/codemirror/CHANGELOG.md
+++ /dev/null
@@ -1,984 +0,0 @@
-## 5.23.0 (2017-01-19)
-
-### Bug fixes
-
-Presentation-related elements DOM elements are now marked as such to help screen readers.
-
-[markdown mode](http://codemirror.net/mode/markdown/): Be more picky about what HTML tags look like to avoid false positives.
-
-### New features
-
-`findModeByMIME` now understands `+json` and `+xml` MIME suffixes.
-
-[closebrackets addon](http://codemirror.net/doc/manual.html#addon_closebrackets): Add support for an `override` option to ignore language-specific defaults.
-
-[panel addon](http://codemirror.net/doc/manual.html#addon_panel): Add a `stable` option that auto-scrolls the content to keep it in the same place when inserting/removing a panel.
-
-## 5.22.2 (2017-01-12)
-
-### Bug fixes
-
-Include rollup.config.js in NPM package, so that it can be used to build from source.
-
-## 5.22.0 (2016-12-20)
-
-### Bug fixes
-
-[sublime bindings](http://codemirror.net/demo/sublime.html): Make `selectBetweenBrackets` work with multiple cursors.
-
-[javascript mode](http://codemirror.net/mode/javascript/): Fix issues with parsing complex TypeScript types, imports, and exports.
-
-A contentEditable editor instance with autofocus enabled no longer crashes during initializing.
-
-### New features
-
-[emacs bindings](http://codemirror.net/demo/emacs.html): Export `CodeMirror.emacs` to allow other addons to hook into Emacs-style functionality.
-
-[active-line addon](http://codemirror.net/doc/manual.html#addon_active-line): Add `nonEmpty` option.
-
-New event: [`optionChange`](http://codemirror.net/doc/manual.html#event_optionChange).
-
-## 5.21.0 (2016-11-21)
-
-### Bug fixes
-
-Tapping/clicking the editor in [contentEditable mode](http://codemirror.net/doc/manual.html#option_inputStyle) on Chrome now puts the cursor at the tapped position.
-
-Fix various crashes and misbehaviors when reading composition events in [contentEditable mode](http://codemirror.net/doc/manual.html#option_inputStyle).
-
-Catches and ignores an IE 'Unspecified Error' when creating an editor in an iframe before there is a `
`.
-
-[merge addon](http://codemirror.net/doc/manual.html#addon_merge): Fix several issues in the chunk-aligning feature.
-
-[verilog mode](http://codemirror.net/mode/verilog): Rewritten to address various issues.
-
-[julia mode](http://codemirror.net/mode/julia): Recognize Julia 0.5 syntax.
-
-[swift mode](http://codemirror.net/mode/swift): Various fixes and adjustments to current syntax.
-
-[markdown mode](http://codemirror.net/mode/markdown): Allow lists without a blank line above them.
-
-### New features
-
-The [`setGutterMarker`](http://codemirror.net/doc/manual.html#setGutterMarker), [`clearGutter`](http://codemirror.net/doc/manual.html#clearGutter), and [`lineInfo`](http://codemirror.net/doc/manual.html#lineInfo) methods are now available on `Doc` objects.
-
-The [`heightAtLine`](http://codemirror.net/doc/manual.html#heightAtLine) method now takes an extra argument to allow finding the height at the top of the line's line widgets.
-
-[ruby mode](http://codemirror.net/mode/ruby): `else` and `elsif` are now immediately indented.
-
-[vim bindings](http://codemirror.net/demo/vim.html): Bind Ctrl-T and Ctrl-D to in- and dedent in insert mode.
-
-## 5.20.2 (2016-10-21)
-
-### Bug fixes
-
-Fix `CodeMirror.version` returning the wrong version number.
-
-## 5.20.0 (2016-10-20)
-
-### Bug fixes
-
-Make `newlineAndIndent` command work with multiple cursors on the same line.
-
-Make sure keypress events for backspace are ignored.
-
-Tokens styled with overlays no longer get a nonsense `cm-cm-overlay` class.
-
-Line endings for pasted content are now normalized to the editor's [preferred ending](http://codemirror.net/doc/manual.html#option_lineSeparator).
-
-[javascript mode](http://codemirror.net/mode/javascript): Improve support for class expressions. Support TypeScript optional class properties, the `abstract` keyword, and return type declarations for arrow functions.
-
-[css mode](http://codemirror.net/mode/css): Fix highlighting of mixed-case keywords.
-
-[closebrackets addon](http://codemirror.net/doc/manual.html#addon_closebrackets): Improve behavior when typing a quote before a string.
-
-### New features
-
-The core is now maintained as a number of small files, using ES6 syntax and modules, under the `src/` directory. A git checkout no longer contains a working `codemirror.js` until you `npm build` (but when installing from NPM, it is included).
-
-The [`refresh`](http://codemirror.net/doc/manual.html#event_refresh) event is now documented and stable.
-
-## 5.19.0 (2016-09-20)
-
-### Bugfixes
-
-[erlang mode](http://codemirror.net/mode/erlang): Fix mode crash when trying to read an empty context.
-
-[comment addon](http://codemirror.net/doc/manual.html#addon_comment): Fix broken behavior when toggling comments inside a comment.
-
-xml-fold addon: Fix a null-dereference bug.
-
-Page up and page down now do something even in single-line documents.
-
-Fix an issue where the cursor position could be off in really long (~8000 character) tokens.
-
-### New features
-
-[javascript mode](http://codemirror.net/mode/javascript): Better indentation when semicolons are missing. Better support for TypeScript classes, optional parameters, and the `type` keyword.
-
-The [`blur`](http://codemirror.net/doc/manual.html#event_blur) and [`focus`](http://codemirror.net/doc/manual.html#event_focus) events now pass the DOM event to their handlers.
-
-## 5.18.2 (2016-08-23)
-
-### Bugfixes
-
-[vue mode](http://codemirror.net/mode/vue): Fix outdated references to renamed Pug mode dependency.
-
-## 5.18.0 (2016-08-22)
-
-### Bugfixes
-
-Make sure [gutter backgrounds](http://codemirror.net/doc/manual.html#addLineClass) stick to the rest of the gutter during horizontal scrolling.
-
-The contenteditable [`inputStyle`](http://codemirror.net/doc/manual.html#option_inputStyle) now properly supports pasting on pre-Edge IE versions.
-
-[javascript mode](http://codemirror.net/mode/javascript): Fix some small parsing bugs and improve TypeScript support.
-
-[matchbrackets addon](http://codemirror.net/doc/manual.html#addon_matchbrackets): Fix bug where active highlighting was left in editor when the addon was disabled.
-
-[match-highlighter addon](http://codemirror.net/doc/manual.html#addon_match-highlighter): Only start highlighting things when the editor gains focus.
-
-[javascript-hint addon](http://codemirror.net/doc/manual.html#addon_javascript-hint): Also complete non-enumerable properties.
-
-### New features
-
-The [`addOverlay`](http://codemirror.net/doc/manual.html#addOverlay) method now supports a `priority` option to control the order in which overlays are applied.
-
-MIME types that end in `+json` now default to the JSON mode when the MIME itself is not defined.
-
-### Breaking changes
-
-The mode formerly known as Jade was renamed to [Pug](http://codemirror.net/mode/pug).
-
-The [Python mode](http://codemirror.net/mode/python) now defaults to Python 3 (rather than 2) syntax.
-
-## 5.17.0 (2016-07-19)
-
-### Bugfixes
-
-Fix problem with wrapped trailing whitespace displaying incorrectly.
-
-Prevent IME dialog from overlapping typed content in Chrome.
-
-Improve measuring of characters near a line wrap.
-
-[javascript mode](http://codemirror.net/mode/javascript): Improve support for `async`, allow trailing commas in `import` lists.
-
-[vim bindings](http://codemirror.net/demo/vim.html): Fix backspace in replace mode.
-
-[sublime bindings](http://codemirror.net/demo/sublime.html): Fix some key bindings on OS X to match Sublime Text.
-
-### New features
-
-[markdown mode](http://codemirror.net/mode/markdown): Add more classes to image links in highlight-formatting mode.
-
-## 5.16.0 (2016-06-20)
-
-### Bugfixes
-
-Fix glitches when dragging content caused by the drop indicator receiving mouse events.
-
-Make Control-drag work on Firefox.
-
-Make clicking or selection-dragging at the end of a wrapped line select the right position.
-
-[show-hint addon](http://codemirror.net/doc/manual.html#addon_show-hint): Prevent widget scrollbar from hiding part of the hint text.
-
-[rulers addon](http://codemirror.net/doc/manual.html#addon_rulers): Prevent rulers from forcing a horizontal editor scrollbar.
-
-### New features
-
-[search addon](http://codemirror.net/doc/manual.html#addon_search): Automatically bind search-related keys in persistent dialog.
-
-[sublime keymap](http://codemirror.net/demo/sublime.html): Add a multi-cursor aware smart backspace binding.
-
-## 5.15.2 (2016-05-20)
-
-### Bugfixes
-
-Fix a critical document corruption bug that occurs when a document is gradually grown.
-
-## 5.15.0 (2016-05-20)
-
-### Bugfixes
-
-Fix bug that caused the selection to reset when focusing the editor in contentEditable input mode.
-
-Fix issue where not all ASCII control characters were being replaced by placeholders.
-
-Remove the assumption that all modes have a `startState` method from several wrapping modes.
-
-Fix issue where the editor would complain about overlapping collapsed ranges when there weren't any.
-
-Optimize document tree building when loading or pasting huge chunks of content.
-
-[markdown mode](http://codemirror.net/mode/markdown/): Fix several issues in matching link targets.
-
-[clike mode](http://codemirror.net/mode/clike/): Improve indentation of C++ template declarations.
-
-### New features
-
-Explicitly bind Ctrl-O on OS X to make that binding (“open line”) act as expected.
-
-Pasting [linewise-copied](http://codemirror.net/doc/manual.html#option_lineWiseCopyCut) content when there is no selection now inserts the lines above the current line.
-
-[javascript mode](http://codemirror.net/mode/javascript/): Support `async`/`await` and improve support for TypeScript type syntax.
-
-## 5.14.2 (2016-04-20)
-
-### Bugfixes
-
-Push a new package to NPM due to an [NPM bug](https://github.com/npm/npm/issues/5082) omitting the LICENSE file in 5.14.0.
-
-Set `dataTransfer.effectAllowed` in `dragstart` handler to help browsers use the right drag icon.
-
-Add the [mbox mode](http://codemirror.net/mode/mbox/index.html) to `mode/meta.js`.
-
-## 5.14.0 (2016-04-20)
-
-### Bugfixes
-
-[`posFromIndex`](http://codemirror.net/doc/manual.html#posFromIndex) and [`indexFromPos`](http://codemirror.net/doc/manual.html#indexFromPos) now take [`lineSeparator`](http://codemirror.net/doc/manual.html#option_lineSeparator) into account.
-
-[vim bindings](http://codemirror.net/demo/vim.html): Only call `.save()` when it is actually available.
-
-[comment addon](http://codemirror.net/doc/manual.html#addon_comment): Be careful not to mangle multi-line strings.
-
-[Python mode](http://codemirror.net/mode/python/index.html): Improve distinguishing of decorators from `@` operators.
-
-[`findMarks`](http://codemirror.net/doc/manual.html#findMarks): No longer return marks that touch but don't overlap given range.
-
-### New features
-
-[vim bindings](http://codemirror.net/demo/vim.html): Add yank command.
-
-[match-highlighter addon](http://codemirror.net/doc/manual.html#addon_match-highlighter): Add `trim` option to disable ignoring of whitespace.
-
-[PowerShell mode](http://codemirror.net/mode/powershell/index.html): Added.
-
-[Yacas mode](http://codemirror.net/mode/yacas/index.html): Added.
-
-[Web IDL mode](http://codemirror.net/mode/webidl/index.html): Added.
-
-[SAS mode](http://codemirror.net/mode/sas/index.html): Added.
-
-[mbox mode](http://codemirror.net/mode/mbox/index.html): Added.
-
-## 5.13.2 (2016-03-23)
-
-### Bugfixes
-
-Solves a problem where the gutter would sometimes not extend all the way to the end of the document.
-
-## 5.13.0 (2016-03-21)
-
-### New features
-
-New DOM event forwarded: [`"dragleave"`](http://codemirror.net/doc/manual.html#event_dom).
-
-[protobuf mode](http://codemirror.net/mode/protobuf/index.html): Newly added.
-
-### Bugfixes
-
-Fix problem where [`findMarks`](http://codemirror.net/doc/manual.html#findMarks) sometimes failed to find multi-line marks.
-
-Fix crash that showed up when atomic ranges and bidi text were combined.
-
-[show-hint addon](http://codemirror.net/demo/complete.html): Completion widgets no longer close when the line indented or dedented.
-
-[merge addon](http://codemirror.net/demo/merge.html): Fix bug when merging chunks at the end of the file.
-
-[placeholder addon](http://codemirror.net/doc/manual.html#addon_placeholder): No longer gets confused by [`swapDoc`](http://codemirror.net/doc/manual.html#swapDoc).
-
-[simplescrollbars addon](http://codemirror.net/doc/manual.html#addon_simplescrollbars): Fix invalid state when deleting at end of document.
-
-[clike mode](http://codemirror.net/mode/clike/index.html): No longer gets confused when a comment starts after an operator.
-
-[markdown mode](http://codemirror.net/mode/markdown/index.html): Now supports CommonMark-style flexible list indentation.
-
-[dylan mode](http://codemirror.net/mode/dylan/index.html): Several improvements and fixes.
-
-## 5.12.0 (2016-02-19)
-
-### New features
-
-[Vim bindings](http://codemirror.net/demo/vim.html): Ctrl-Q is now an alias for Ctrl-V.
-
-[Vim bindings](http://codemirror.net/demo/vim.html): The Vim API now exposes an `unmap` method to unmap bindings.
-
-[active-line addon](http://codemirror.net/demo/activeline.html): This addon can now style the active line's gutter.
-
-[FCL mode](http://codemirror.net/mode/fcl/): Newly added.
-
-[SQL mode](http://codemirror.net/mode/sql/): Now has a Postgresql dialect.
-
-### Bugfixes
-
-Fix [issue](https://github.com/codemirror/CodeMirror/issues/3781) where trying to scroll to a horizontal position outside of the document's width could cause the gutter to be positioned incorrectly.
-
-Use absolute, rather than fixed positioning in the context-menu intercept hack, to work around a [problem](https://github.com/codemirror/CodeMirror/issues/3238) when the editor is inside a transformed parent container.
-
-Solve a [problem](https://github.com/codemirror/CodeMirror/issues/3821) where the horizontal scrollbar could hide text in Firefox.
-
-Fix a [bug](https://github.com/codemirror/CodeMirror/issues/3834) that caused phantom scroll space under the text in some situations.
-
-[Sublime Text bindings](http://codemirror.net/demo/sublime.html): Bind delete-line to Shift-Ctrl-K on OS X.
-
-[Markdown mode](http://codemirror.net/mode/markdown/): Fix [issue](https://github.com/codemirror/CodeMirror/issues/3787) where the mode would keep state related to fenced code blocks in an unsafe way, leading to occasional corrupted parses.
-
-[Markdown mode](http://codemirror.net/mode/markdown/): Ignore backslashes in code fragments.
-
-[Markdown mode](http://codemirror.net/mode/markdown/): Use whichever mode is registered as `text/html` to parse HTML.
-
-[Clike mode](http://codemirror.net/mode/clike/): Improve indentation of Scala `=>` functions.
-
-[Python mode](http://codemirror.net/mode/python/): Improve indentation of bracketed code.
-
-[HTMLMixed mode](http://codemirror.net/mode/htmlmixed/): Support multi-line opening tags for sub-languages (`
-
-
-
-
-
-
-
-Closure Stylesheets (GSS) mode
-
-
-
- A mode for Closure Stylesheets (GSS).
- MIME type defined: text/x-gss
.
-
- Parsing/Highlighting Tests: normal , verbose .
-
-
diff --git a/editable-samples/editor/codemirror/mode/css/gss_test.js b/editable-samples/editor/codemirror/mode/css/gss_test.js
deleted file mode 100644
index d56e592..0000000
--- a/editable-samples/editor/codemirror/mode/css/gss_test.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function() {
- "use strict";
-
- var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-gss");
- function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "gss"); }
-
- MT("atComponent",
- "[def @component] {",
- "[tag foo] {",
- " [property color]: [keyword black];",
- "}",
- "}");
-
-})();
diff --git a/editable-samples/editor/codemirror/mode/css/index.html b/editable-samples/editor/codemirror/mode/css/index.html
deleted file mode 100644
index 2d2b9b0..0000000
--- a/editable-samples/editor/codemirror/mode/css/index.html
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-CodeMirror: CSS mode
-
-
-
-
-
-
-
-
-
-
-
-
-
-CSS mode
-
-/* Some example CSS */
-
-@import url("something.css");
-
-body {
- margin: 0;
- padding: 3em 6em;
- font-family: tahoma, arial, sans-serif;
- color: #000;
-}
-
-#navigation a {
- font-weight: bold;
- text-decoration: none !important;
-}
-
-h1 {
- font-size: 2.5em;
-}
-
-h2 {
- font-size: 1.7em;
-}
-
-h1:before, h2:before {
- content: "::";
-}
-
-code {
- font-family: courier, monospace;
- font-size: 80%;
- color: #418A8A;
-}
-
-
-
- MIME types defined: text/css
, text/x-scss
(demo ), text/x-less
(demo ).
-
- Parsing/Highlighting Tests: normal , verbose .
-
-
diff --git a/editable-samples/editor/codemirror/mode/css/less.html b/editable-samples/editor/codemirror/mode/css/less.html
deleted file mode 100644
index adf7427..0000000
--- a/editable-samples/editor/codemirror/mode/css/less.html
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-CodeMirror: LESS mode
-
-
-
-
-
-
-
-
-
-
-
-LESS mode
-@media screen and (device-aspect-ratio: 16/9) { … }
-@media screen and (device-aspect-ratio: 1280/720) { … }
-@media screen and (device-aspect-ratio: 2560/1440) { … }
-
-html:lang(fr-be)
-
-tr:nth-child(2n+1) /* represents every odd row of an HTML table */
-
-img:nth-of-type(2n+1) { float: right; }
-img:nth-of-type(2n) { float: left; }
-
-body > h2:not(:first-of-type):not(:last-of-type)
-
-html|*:not(:link):not(:visited)
-*|*:not(:hover)
-p::first-line { text-transform: uppercase }
-
-@namespace foo url(http://www.example.com);
-foo|h1 { color: blue } /* first rule */
-
-span[hello="Ocean"][goodbye="Land"]
-
-E[foo]{
- padding:65px;
-}
-
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
- -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
- padding: 0;
- border: 0;
-}
-.btn {
- // reset here as of 2.0.3 due to Recess property order
- border-color: #ccc;
- border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
-}
-fieldset span button, fieldset span input[type="file"] {
- font-size:12px;
- font-family:Arial, Helvetica, sans-serif;
-}
-
-.rounded-corners (@radius: 5px) {
- border-radius: @radius;
- -webkit-border-radius: @radius;
- -moz-border-radius: @radius;
-}
-
-@import url("something.css");
-
-@light-blue: hsl(190, 50%, 65%);
-
-#menu {
- position: absolute;
- width: 100%;
- z-index: 3;
- clear: both;
- display: block;
- background-color: @blue;
- height: 42px;
- border-top: 2px solid lighten(@alpha-blue, 20%);
- border-bottom: 2px solid darken(@alpha-blue, 25%);
- .box-shadow(0, 1px, 8px, 0.6);
- -moz-box-shadow: 0 0 0 #000; // Because firefox sucks.
-
- &.docked {
- background-color: hsla(210, 60%, 40%, 0.4);
- }
- &:hover {
- background-color: @blue;
- }
-
- #dropdown {
- margin: 0 0 0 117px;
- padding: 0;
- padding-top: 5px;
- display: none;
- width: 190px;
- border-top: 2px solid @medium;
- color: @highlight;
- border: 2px solid darken(@medium, 25%);
- border-left-color: darken(@medium, 15%);
- border-right-color: darken(@medium, 15%);
- border-top-width: 0;
- background-color: darken(@medium, 10%);
- ul {
- padding: 0px;
- }
- li {
- font-size: 14px;
- display: block;
- text-align: left;
- padding: 0;
- border: 0;
- a {
- display: block;
- padding: 0px 15px;
- text-decoration: none;
- color: white;
- &:hover {
- background-color: darken(@medium, 15%);
- text-decoration: none;
- }
- }
- }
- .border-radius(5px, bottom);
- .box-shadow(0, 6px, 8px, 0.5);
- }
-}
-
-
-
- The LESS mode is a sub-mode of the CSS mode (defined in css.js
).
-
- Parsing/Highlighting Tests: normal , verbose .
-
diff --git a/editable-samples/editor/codemirror/mode/css/less_test.js b/editable-samples/editor/codemirror/mode/css/less_test.js
deleted file mode 100644
index dd82155..0000000
--- a/editable-samples/editor/codemirror/mode/css/less_test.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function() {
- "use strict";
-
- var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less");
- function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); }
-
- MT("variable",
- "[variable-2 @base]: [atom #f04615];",
- "[qualifier .class] {",
- " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]",
- " [property color]: [variable saturate]([variable-2 @base], [number 5%]);",
- "}");
-
- MT("amp",
- "[qualifier .child], [qualifier .sibling] {",
- " [qualifier .parent] [atom &] {",
- " [property color]: [keyword black];",
- " }",
- " [atom &] + [atom &] {",
- " [property color]: [keyword red];",
- " }",
- "}");
-
- MT("mixin",
- "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {",
- " [property color]: [atom darken]([variable-2 @color], [number 10%]);",
- "}",
- "[qualifier .mixin] ([variable light]; [variable-2 @color]) {",
- " [property color]: [atom lighten]([variable-2 @color], [number 10%]);",
- "}",
- "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {",
- " [property display]: [atom block];",
- "}",
- "[variable-2 @switch]: [variable light];",
- "[qualifier .class] {",
- " [qualifier .mixin]([variable-2 @switch]; [atom #888]);",
- "}");
-
- MT("nest",
- "[qualifier .one] {",
- " [def @media] ([property width]: [number 400px]) {",
- " [property font-size]: [number 1.2em];",
- " [def @media] [attribute print] [keyword and] [property color] {",
- " [property color]: [keyword blue];",
- " }",
- " }",
- "}");
-
-
- MT("interpolation", ".@{[variable foo]} { [property font-weight]: [atom bold]; }");
-})();
diff --git a/editable-samples/editor/codemirror/mode/css/scss.html b/editable-samples/editor/codemirror/mode/css/scss.html
deleted file mode 100644
index f8e4d37..0000000
--- a/editable-samples/editor/codemirror/mode/css/scss.html
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-CodeMirror: SCSS mode
-
-
-
-
-
-
-
-
-
-
-SCSS mode
-
-/* Some example SCSS */
-
-@import "compass/css3";
-$variable: #333;
-
-$blue: #3bbfce;
-$margin: 16px;
-
-.content-navigation {
- #nested {
- background-color: black;
- }
- border-color: $blue;
- color:
- darken($blue, 9%);
-}
-
-.border {
- padding: $margin / 2;
- margin: $margin / 2;
- border-color: $blue;
-}
-
-@mixin table-base {
- th {
- text-align: center;
- font-weight: bold;
- }
- td, th {padding: 2px}
-}
-
-table.hl {
- margin: 2em 0;
- td.ln {
- text-align: right;
- }
-}
-
-li {
- font: {
- family: serif;
- weight: bold;
- size: 1.2em;
- }
-}
-
-@mixin left($dist) {
- float: left;
- margin-left: $dist;
-}
-
-#data {
- @include left(10px);
- @include table-base;
-}
-
-.source {
- @include flow-into(target);
- border: 10px solid green;
- margin: 20px;
- width: 200px; }
-
-.new-container {
- @include flow-from(target);
- border: 10px solid red;
- margin: 20px;
- width: 200px; }
-
-body {
- margin: 0;
- padding: 3em 6em;
- font-family: tahoma, arial, sans-serif;
- color: #000;
-}
-
-@mixin yellow() {
- background: yellow;
-}
-
-.big {
- font-size: 14px;
-}
-
-.nested {
- @include border-radius(3px);
- @extend .big;
- p {
- background: whitesmoke;
- a {
- color: red;
- }
- }
-}
-
-#navigation a {
- font-weight: bold;
- text-decoration: none !important;
-}
-
-h1 {
- font-size: 2.5em;
-}
-
-h2 {
- font-size: 1.7em;
-}
-
-h1:before, h2:before {
- content: "::";
-}
-
-code {
- font-family: courier, monospace;
- font-size: 80%;
- color: #418A8A;
-}
-
-
-
- The SCSS mode is a sub-mode of the CSS mode (defined in css.js
).
-
- Parsing/Highlighting Tests: normal , verbose .
-
-
diff --git a/editable-samples/editor/codemirror/mode/css/scss_test.js b/editable-samples/editor/codemirror/mode/css/scss_test.js
deleted file mode 100644
index 785921b..0000000
--- a/editable-samples/editor/codemirror/mode/css/scss_test.js
+++ /dev/null
@@ -1,110 +0,0 @@
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function() {
- var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss");
- function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); }
-
- MT('url_with_quotation',
- "[tag foo] { [property background]:[atom url]([string test.jpg]) }");
-
- MT('url_with_double_quotes',
- "[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }");
-
- MT('url_with_single_quotes',
- "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }");
-
- MT('string',
- "[def @import] [string \"compass/css3\"]");
-
- MT('important_keyword',
- "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }");
-
- MT('variable',
- "[variable-2 $blue]:[atom #333]");
-
- MT('variable_as_attribute',
- "[tag foo] { [property color]:[variable-2 $blue] }");
-
- MT('numbers',
- "[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }");
-
- MT('number_percentage',
- "[tag foo] { [property width]:[number 80%] }");
-
- MT('selector',
- "[builtin #hello][qualifier .world]{}");
-
- MT('singleline_comment',
- "[comment // this is a comment]");
-
- MT('multiline_comment',
- "[comment /*foobar*/]");
-
- MT('attribute_with_hyphen',
- "[tag foo] { [property font-size]:[number 10px] }");
-
- MT('string_after_attribute',
- "[tag foo] { [property content]:[string \"::\"] }");
-
- MT('directives',
- "[def @include] [qualifier .mixin]");
-
- MT('basic_structure',
- "[tag p] { [property background]:[keyword red]; }");
-
- MT('nested_structure',
- "[tag p] { [tag a] { [property color]:[keyword red]; } }");
-
- MT('mixin',
- "[def @mixin] [tag table-base] {}");
-
- MT('number_without_semicolon',
- "[tag p] {[property width]:[number 12]}",
- "[tag a] {[property color]:[keyword red];}");
-
- MT('atom_in_nested_block',
- "[tag p] { [tag a] { [property color]:[atom #000]; } }");
-
- MT('interpolation_in_property',
- "[tag foo] { #{[variable-2 $hello]}:[number 2]; }");
-
- MT('interpolation_in_selector',
- "[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }");
-
- MT('interpolation_error',
- "[tag foo]#{[variable foo]} { [property color]:[atom #000]; }");
-
- MT("divide_operator",
- "[tag foo] { [property width]:[number 4] [operator /] [number 2] }");
-
- MT('nested_structure_with_id_selector',
- "[tag p] { [builtin #hello] { [property color]:[keyword red]; } }");
-
- MT('indent_mixin',
- "[def @mixin] [tag container] (",
- " [variable-2 $a]: [number 10],",
- " [variable-2 $b]: [number 10])",
- "{}");
-
- MT('indent_nested',
- "[tag foo] {",
- " [tag bar] {",
- " }",
- "}");
-
- MT('indent_parentheses',
- "[tag foo] {",
- " [property color]: [atom darken]([variable-2 $blue],",
- " [number 9%]);",
- "}");
-
- MT('indent_vardef',
- "[variable-2 $name]:",
- " [string 'val'];",
- "[tag tag] {",
- " [tag inner] {",
- " [property margin]: [number 3px];",
- " }",
- "}");
-})();
diff --git a/editable-samples/editor/codemirror/mode/css/test.js b/editable-samples/editor/codemirror/mode/css/test.js
deleted file mode 100644
index 7a496fb..0000000
--- a/editable-samples/editor/codemirror/mode/css/test.js
+++ /dev/null
@@ -1,200 +0,0 @@
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function() {
- var mode = CodeMirror.getMode({indentUnit: 2}, "css");
- function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
-
- // Error, because "foobarhello" is neither a known type or property, but
- // property was expected (after "and"), and it should be in parentheses.
- MT("atMediaUnknownType",
- "[def @media] [attribute screen] [keyword and] [error foobarhello] { }");
-
- // Soft error, because "foobarhello" is not a known property or type.
- MT("atMediaUnknownProperty",
- "[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }");
-
- // Make sure nesting works with media queries
- MT("atMediaMaxWidthNested",
- "[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }");
-
- MT("atMediaFeatureValueKeyword",
- "[def @media] ([property orientation]: [keyword landscape]) { }");
-
- MT("atMediaUnknownFeatureValueKeyword",
- "[def @media] ([property orientation]: [error upsidedown]) { }");
-
- MT("tagSelector",
- "[tag foo] { }");
-
- MT("classSelector",
- "[qualifier .foo-bar_hello] { }");
-
- MT("idSelector",
- "[builtin #foo] { [error #foo] }");
-
- MT("tagSelectorUnclosed",
- "[tag foo] { [property margin]: [number 0] } [tag bar] { }");
-
- MT("tagStringNoQuotes",
- "[tag foo] { [property font-family]: [variable hello] [variable world]; }");
-
- MT("tagStringDouble",
- "[tag foo] { [property font-family]: [string \"hello world\"]; }");
-
- MT("tagStringSingle",
- "[tag foo] { [property font-family]: [string 'hello world']; }");
-
- MT("tagColorKeyword",
- "[tag foo] {",
- " [property color]: [keyword black];",
- " [property color]: [keyword navy];",
- " [property color]: [keyword yellow];",
- "}");
-
- MT("tagColorHex3",
- "[tag foo] { [property background]: [atom #fff]; }");
-
- MT("tagColorHex4",
- "[tag foo] { [property background]: [atom #ffff]; }");
-
- MT("tagColorHex6",
- "[tag foo] { [property background]: [atom #ffffff]; }");
-
- MT("tagColorHex8",
- "[tag foo] { [property background]: [atom #ffffffff]; }");
-
- MT("tagColorHex5Invalid",
- "[tag foo] { [property background]: [atom&error #fffff]; }");
-
- MT("tagColorHexInvalid",
- "[tag foo] { [property background]: [atom&error #ffg]; }");
-
- MT("tagNegativeNumber",
- "[tag foo] { [property margin]: [number -5px]; }");
-
- MT("tagPositiveNumber",
- "[tag foo] { [property padding]: [number 5px]; }");
-
- MT("tagVendor",
- "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }");
-
- MT("tagBogusProperty",
- "[tag foo] { [property&error barhelloworld]: [number 0]; }");
-
- MT("tagTwoProperties",
- "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }");
-
- MT("tagTwoPropertiesURL",
- "[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }");
-
- MT("indent_tagSelector",
- "[tag strong], [tag em] {",
- " [property background]: [atom rgba](",
- " [number 255], [number 255], [number 0], [number .2]",
- " );",
- "}");
-
- MT("indent_atMedia",
- "[def @media] {",
- " [tag foo] {",
- " [property color]:",
- " [keyword yellow];",
- " }",
- "}");
-
- MT("indent_comma",
- "[tag foo] {",
- " [property font-family]: [variable verdana],",
- " [atom sans-serif];",
- "}");
-
- MT("indent_parentheses",
- "[tag foo]:[variable-3 before] {",
- " [property background]: [atom url](",
- "[string blahblah]",
- "[string etc]",
- "[string ]) [keyword !important];",
- "}");
-
- MT("font_face",
- "[def @font-face] {",
- " [property font-family]: [string 'myfont'];",
- " [error nonsense]: [string 'abc'];",
- " [property src]: [atom url]([string http://blah]),",
- " [atom url]([string http://foo]);",
- "}");
-
- MT("empty_url",
- "[def @import] [atom url]() [attribute screen];");
-
- MT("parens",
- "[qualifier .foo] {",
- " [property background-image]: [variable fade]([atom #000], [number 20%]);",
- " [property border-image]: [atom linear-gradient](",
- " [atom to] [atom bottom],",
- " [variable fade]([atom #000], [number 20%]) [number 0%],",
- " [variable fade]([atom #000], [number 20%]) [number 100%]",
- " );",
- "}");
-
- MT("css_variable",
- ":[variable-3 root] {",
- " [variable-2 --main-color]: [atom #06c];",
- "}",
- "[tag h1][builtin #foo] {",
- " [property color]: [atom var]([variable-2 --main-color]);",
- "}");
-
- MT("supports",
- "[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {",
- " [property text-align-last]: [atom justify];",
- "}");
-
- MT("document",
- "[def @document] [tag url]([string http://blah]),",
- " [tag url-prefix]([string https://]),",
- " [tag domain]([string blah.com]),",
- " [tag regexp]([string \".*blah.+\"]) {",
- " [builtin #id] {",
- " [property background-color]: [keyword white];",
- " }",
- " [tag foo] {",
- " [property font-family]: [variable Verdana], [atom sans-serif];",
- " }",
- "}");
-
- MT("document_url",
- "[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }");
-
- MT("document_urlPrefix",
- "[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }");
-
- MT("document_domain",
- "[def @document] [tag domain]([string blah.com]) { [tag foo] { } }");
-
- MT("document_regexp",
- "[def @document] [tag regexp]([string \".*blah.+\"]) { [builtin #id] { } }");
-
- MT("counter-style",
- "[def @counter-style] [variable binary] {",
- " [property system]: [atom numeric];",
- " [property symbols]: [number 0] [number 1];",
- " [property suffix]: [string \".\"];",
- " [property range]: [atom infinite];",
- " [property speak-as]: [atom numeric];",
- "}");
-
- MT("counter-style-additive-symbols",
- "[def @counter-style] [variable simple-roman] {",
- " [property system]: [atom additive];",
- " [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];",
- " [property range]: [number 1] [number 49];",
- "}");
-
- MT("counter-style-use",
- "[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }");
-
- MT("counter-style-symbols",
- "[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }");
-})();
diff --git a/editable-samples/editor/codemirror/mode/javascript/index.html b/editable-samples/editor/codemirror/mode/javascript/index.html
deleted file mode 100644
index 592a133..0000000
--- a/editable-samples/editor/codemirror/mode/javascript/index.html
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-CodeMirror: JavaScript mode
-
-
-
-
-
-
-
-
-
-
-
-
-
-JavaScript mode
-
-
-
-// Demo code (the actual new parser character stream implementation)
-
-function StringStream(string) {
- this.pos = 0;
- this.string = string;
-}
-
-StringStream.prototype = {
- done: function() {return this.pos >= this.string.length;},
- peek: function() {return this.string.charAt(this.pos);},
- next: function() {
- if (this.pos < this.string.length)
- return this.string.charAt(this.pos++);
- },
- eat: function(match) {
- var ch = this.string.charAt(this.pos);
- if (typeof match == "string") var ok = ch == match;
- else var ok = ch && match.test ? match.test(ch) : match(ch);
- if (ok) {this.pos++; return ch;}
- },
- eatWhile: function(match) {
- var start = this.pos;
- while (this.eat(match));
- if (this.pos > start) return this.string.slice(start, this.pos);
- },
- backUp: function(n) {this.pos -= n;},
- column: function() {return this.pos;},
- eatSpace: function() {
- var start = this.pos;
- while (/\s/.test(this.string.charAt(this.pos))) this.pos++;
- return this.pos - start;
- },
- match: function(pattern, consume, caseInsensitive) {
- if (typeof pattern == "string") {
- function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
- if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) {
- if (consume !== false) this.pos += str.length;
- return true;
- }
- }
- else {
- var match = this.string.slice(this.pos).match(pattern);
- if (match && consume !== false) this.pos += match[0].length;
- return match;
- }
- }
-};
-
-
-
-
-
- JavaScript mode supports several configuration options:
-
- json
which will set the mode to expect JSON
- data rather than a JavaScript program.
- jsonld
which will set the mode to expect
- JSON-LD linked data rather
- than a JavaScript program (demo ).
- typescript
which will activate additional
- syntax highlighting and some other things for TypeScript code
- (demo ).
- statementIndent
which (given a number) will
- determine the amount of indentation to use for statements
- continued on a new line.
- wordCharacters
, a regexp that indicates which
- characters should be considered part of an identifier.
- Defaults to /[\w$]/
, which does not handle
- non-ASCII identifiers. Can be set to something more elaborate
- to improve Unicode support.
-
-
-
- MIME types defined: text/javascript
, application/json
, application/ld+json
, text/typescript
, application/typescript
.
-
diff --git a/editable-samples/editor/codemirror/mode/javascript/javascript.js b/editable-samples/editor/codemirror/mode/javascript/javascript.js
deleted file mode 100644
index e1a19ce..0000000
--- a/editable-samples/editor/codemirror/mode/javascript/javascript.js
+++ /dev/null
@@ -1,800 +0,0 @@
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function(mod) {
- if (typeof exports == "object" && typeof module == "object") // CommonJS
- mod(require("../../lib/codemirror"));
- else if (typeof define == "function" && define.amd) // AMD
- define(["../../lib/codemirror"], mod);
- else // Plain browser env
- mod(CodeMirror);
-})(function(CodeMirror) {
-"use strict";
-
-function expressionAllowed(stream, state, backUp) {
- return /^(?:operator|sof|keyword c|case|new|export|default|[\[{}\(,;:]|=>)$/.test(state.lastType) ||
- (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))
-}
-
-CodeMirror.defineMode("javascript", function(config, parserConfig) {
- var indentUnit = config.indentUnit;
- var statementIndent = parserConfig.statementIndent;
- var jsonldMode = parserConfig.jsonld;
- var jsonMode = parserConfig.json || jsonldMode;
- var isTS = parserConfig.typescript;
- var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/;
-
- // Tokenizer
-
- var keywords = function(){
- function kw(type) {return {type: type, style: "keyword"};}
- var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c");
- var operator = kw("operator"), atom = {type: "atom", style: "atom"};
-
- var jsKeywords = {
- "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,
- "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "throw": C, "debugger": C,
- "var": kw("var"), "const": kw("var"), "let": kw("var"),
- "function": kw("function"), "catch": kw("catch"),
- "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),
- "in": operator, "typeof": operator, "instanceof": operator,
- "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom,
- "this": kw("this"), "class": kw("class"), "super": kw("atom"),
- "yield": C, "export": kw("export"), "import": kw("import"), "extends": C,
- "await": C, "async": kw("async")
- };
-
- // Extend the 'normal' keywords with the TypeScript language extensions
- if (isTS) {
- var type = {type: "variable", style: "variable-3"};
- var tsKeywords = {
- // object-like things
- "interface": kw("class"),
- "implements": C,
- "namespace": C,
- "module": kw("module"),
- "enum": kw("module"),
- "type": kw("type"),
-
- // scope modifiers
- "public": kw("modifier"),
- "private": kw("modifier"),
- "protected": kw("modifier"),
- "abstract": kw("modifier"),
-
- // operators
- "as": operator,
-
- // types
- "string": type, "number": type, "boolean": type, "any": type
- };
-
- for (var attr in tsKeywords) {
- jsKeywords[attr] = tsKeywords[attr];
- }
- }
-
- return jsKeywords;
- }();
-
- var isOperatorChar = /[+\-*&%=<>!?|~^]/;
- var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;
-
- function readRegexp(stream) {
- var escaped = false, next, inSet = false;
- while ((next = stream.next()) != null) {
- if (!escaped) {
- if (next == "/" && !inSet) return;
- if (next == "[") inSet = true;
- else if (inSet && next == "]") inSet = false;
- }
- escaped = !escaped && next == "\\";
- }
- }
-
- // Used as scratch variables to communicate multiple values without
- // consing up tons of objects.
- var type, content;
- function ret(tp, style, cont) {
- type = tp; content = cont;
- return style;
- }
- function tokenBase(stream, state) {
- var ch = stream.next();
- if (ch == '"' || ch == "'") {
- state.tokenize = tokenString(ch);
- return state.tokenize(stream, state);
- } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) {
- return ret("number", "number");
- } else if (ch == "." && stream.match("..")) {
- return ret("spread", "meta");
- } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
- return ret(ch);
- } else if (ch == "=" && stream.eat(">")) {
- return ret("=>", "operator");
- } else if (ch == "0" && stream.eat(/x/i)) {
- stream.eatWhile(/[\da-f]/i);
- return ret("number", "number");
- } else if (ch == "0" && stream.eat(/o/i)) {
- stream.eatWhile(/[0-7]/i);
- return ret("number", "number");
- } else if (ch == "0" && stream.eat(/b/i)) {
- stream.eatWhile(/[01]/i);
- return ret("number", "number");
- } else if (/\d/.test(ch)) {
- stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);
- return ret("number", "number");
- } else if (ch == "/") {
- if (stream.eat("*")) {
- state.tokenize = tokenComment;
- return tokenComment(stream, state);
- } else if (stream.eat("/")) {
- stream.skipToEnd();
- return ret("comment", "comment");
- } else if (expressionAllowed(stream, state, 1)) {
- readRegexp(stream);
- stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/);
- return ret("regexp", "string-2");
- } else {
- stream.eatWhile(isOperatorChar);
- return ret("operator", "operator", stream.current());
- }
- } else if (ch == "`") {
- state.tokenize = tokenQuasi;
- return tokenQuasi(stream, state);
- } else if (ch == "#") {
- stream.skipToEnd();
- return ret("error", "error");
- } else if (isOperatorChar.test(ch)) {
- if (ch != ">" || !state.lexical || state.lexical.type != ">")
- stream.eatWhile(isOperatorChar);
- return ret("operator", "operator", stream.current());
- } else if (wordRE.test(ch)) {
- stream.eatWhile(wordRE);
- var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];
- return (known && state.lastType != ".") ? ret(known.type, known.style, word) :
- ret("variable", "variable", word);
- }
- }
-
- function tokenString(quote) {
- return function(stream, state) {
- var escaped = false, next;
- if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){
- state.tokenize = tokenBase;
- return ret("jsonld-keyword", "meta");
- }
- while ((next = stream.next()) != null) {
- if (next == quote && !escaped) break;
- escaped = !escaped && next == "\\";
- }
- if (!escaped) state.tokenize = tokenBase;
- return ret("string", "string");
- };
- }
-
- function tokenComment(stream, state) {
- var maybeEnd = false, ch;
- while (ch = stream.next()) {
- if (ch == "/" && maybeEnd) {
- state.tokenize = tokenBase;
- break;
- }
- maybeEnd = (ch == "*");
- }
- return ret("comment", "comment");
- }
-
- function tokenQuasi(stream, state) {
- var escaped = false, next;
- while ((next = stream.next()) != null) {
- if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) {
- state.tokenize = tokenBase;
- break;
- }
- escaped = !escaped && next == "\\";
- }
- return ret("quasi", "string-2", stream.current());
- }
-
- var brackets = "([{}])";
- // This is a crude lookahead trick to try and notice that we're
- // parsing the argument patterns for a fat-arrow function before we
- // actually hit the arrow token. It only works if the arrow is on
- // the same line as the arguments and there's no strange noise
- // (comments) in between. Fallback is to only notice when we hit the
- // arrow, and not declare the arguments as locals for the arrow
- // body.
- function findFatArrow(stream, state) {
- if (state.fatArrowAt) state.fatArrowAt = null;
- var arrow = stream.string.indexOf("=>", stream.start);
- if (arrow < 0) return;
-
- if (isTS) { // Try to skip TypeScript return type declarations after the arguments
- var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start, arrow))
- if (m) arrow = m.index
- }
-
- var depth = 0, sawSomething = false;
- for (var pos = arrow - 1; pos >= 0; --pos) {
- var ch = stream.string.charAt(pos);
- var bracket = brackets.indexOf(ch);
- if (bracket >= 0 && bracket < 3) {
- if (!depth) { ++pos; break; }
- if (--depth == 0) { if (ch == "(") sawSomething = true; break; }
- } else if (bracket >= 3 && bracket < 6) {
- ++depth;
- } else if (wordRE.test(ch)) {
- sawSomething = true;
- } else if (/["'\/]/.test(ch)) {
- return;
- } else if (sawSomething && !depth) {
- ++pos;
- break;
- }
- }
- if (sawSomething && !depth) state.fatArrowAt = pos;
- }
-
- // Parser
-
- var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true};
-
- function JSLexical(indented, column, type, align, prev, info) {
- this.indented = indented;
- this.column = column;
- this.type = type;
- this.prev = prev;
- this.info = info;
- if (align != null) this.align = align;
- }
-
- function inScope(state, varname) {
- for (var v = state.localVars; v; v = v.next)
- if (v.name == varname) return true;
- for (var cx = state.context; cx; cx = cx.prev) {
- for (var v = cx.vars; v; v = v.next)
- if (v.name == varname) return true;
- }
- }
-
- function parseJS(state, style, type, content, stream) {
- var cc = state.cc;
- // Communicate our context to the combinators.
- // (Less wasteful than consing up a hundred closures on every call.)
- cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;
-
- if (!state.lexical.hasOwnProperty("align"))
- state.lexical.align = true;
-
- while(true) {
- var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;
- if (combinator(type, content)) {
- while(cc.length && cc[cc.length - 1].lex)
- cc.pop()();
- if (cx.marked) return cx.marked;
- if (type == "variable" && inScope(state, content)) return "variable-2";
- return style;
- }
- }
- }
-
- // Combinator utils
-
- var cx = {state: null, column: null, marked: null, cc: null};
- function pass() {
- for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);
- }
- function cont() {
- pass.apply(null, arguments);
- return true;
- }
- function register(varname) {
- function inList(list) {
- for (var v = list; v; v = v.next)
- if (v.name == varname) return true;
- return false;
- }
- var state = cx.state;
- cx.marked = "def";
- if (state.context) {
- if (inList(state.localVars)) return;
- state.localVars = {name: varname, next: state.localVars};
- } else {
- if (inList(state.globalVars)) return;
- if (parserConfig.globalVars)
- state.globalVars = {name: varname, next: state.globalVars};
- }
- }
-
- // Combinators
-
- var defaultVars = {name: "this", next: {name: "arguments"}};
- function pushcontext() {
- cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};
- cx.state.localVars = defaultVars;
- }
- function popcontext() {
- cx.state.localVars = cx.state.context.vars;
- cx.state.context = cx.state.context.prev;
- }
- function pushlex(type, info) {
- var result = function() {
- var state = cx.state, indent = state.indented;
- if (state.lexical.type == "stat") indent = state.lexical.indented;
- else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev)
- indent = outer.indented;
- state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);
- };
- result.lex = true;
- return result;
- }
- function poplex() {
- var state = cx.state;
- if (state.lexical.prev) {
- if (state.lexical.type == ")")
- state.indented = state.lexical.indented;
- state.lexical = state.lexical.prev;
- }
- }
- poplex.lex = true;
-
- function expect(wanted) {
- function exp(type) {
- if (type == wanted) return cont();
- else if (wanted == ";") return pass();
- else return cont(exp);
- };
- return exp;
- }
-
- function statement(type, value) {
- if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex);
- if (type == "keyword a") return cont(pushlex("form"), parenExpr, statement, poplex);
- if (type == "keyword b") return cont(pushlex("form"), statement, poplex);
- if (type == "{") return cont(pushlex("}"), block, poplex);
- if (type == ";") return cont();
- if (type == "if") {
- if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex)
- cx.state.cc.pop()();
- return cont(pushlex("form"), parenExpr, statement, poplex, maybeelse);
- }
- if (type == "function") return cont(functiondef);
- if (type == "for") return cont(pushlex("form"), forspec, statement, poplex);
- if (type == "variable") return cont(pushlex("stat"), maybelabel);
- if (type == "switch") return cont(pushlex("form"), parenExpr, pushlex("}", "switch"), expect("{"),
- block, poplex, poplex);
- if (type == "case") return cont(expression, expect(":"));
- if (type == "default") return cont(expect(":"));
- if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"),
- statement, poplex, popcontext);
- if (type == "class") return cont(pushlex("form"), className, poplex);
- if (type == "export") return cont(pushlex("stat"), afterExport, poplex);
- if (type == "import") return cont(pushlex("stat"), afterImport, poplex);
- if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), expect("{"), block, poplex, poplex)
- if (type == "type") return cont(typeexpr, expect("operator"), typeexpr, expect(";"));
- if (type == "async") return cont(statement)
- return pass(pushlex("stat"), expression, expect(";"), poplex);
- }
- function expression(type) {
- return expressionInner(type, false);
- }
- function expressionNoComma(type) {
- return expressionInner(type, true);
- }
- function parenExpr(type) {
- if (type != "(") return pass()
- return cont(pushlex(")"), expression, expect(")"), poplex)
- }
- function expressionInner(type, noComma) {
- if (cx.state.fatArrowAt == cx.stream.start) {
- var body = noComma ? arrowBodyNoComma : arrowBody;
- if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext);
- else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext);
- }
-
- var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
- if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
- if (type == "function") return cont(functiondef, maybeop);
- if (type == "class") return cont(pushlex("form"), classExpression, poplex);
- if (type == "keyword c" || type == "async") return cont(noComma ? maybeexpressionNoComma : maybeexpression);
- if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop);
- if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression);
- if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop);
- if (type == "{") return contCommasep(objprop, "}", null, maybeop);
- if (type == "quasi") return pass(quasi, maybeop);
- if (type == "new") return cont(maybeTarget(noComma));
- return cont();
- }
- function maybeexpression(type) {
- if (type.match(/[;\}\)\],]/)) return pass();
- return pass(expression);
- }
- function maybeexpressionNoComma(type) {
- if (type.match(/[;\}\)\],]/)) return pass();
- return pass(expressionNoComma);
- }
-
- function maybeoperatorComma(type, value) {
- if (type == ",") return cont(expression);
- return maybeoperatorNoComma(type, value, false);
- }
- function maybeoperatorNoComma(type, value, noComma) {
- var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
- var expr = noComma == false ? expression : expressionNoComma;
- if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);
- if (type == "operator") {
- if (/\+\+|--/.test(value)) return cont(me);
- if (value == "?") return cont(expression, expect(":"), expr);
- return cont(expr);
- }
- if (type == "quasi") { return pass(quasi, me); }
- if (type == ";") return;
- if (type == "(") return contCommasep(expressionNoComma, ")", "call", me);
- if (type == ".") return cont(property, me);
- if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me);
- }
- function quasi(type, value) {
- if (type != "quasi") return pass();
- if (value.slice(value.length - 2) != "${") return cont(quasi);
- return cont(expression, continueQuasi);
- }
- function continueQuasi(type) {
- if (type == "}") {
- cx.marked = "string-2";
- cx.state.tokenize = tokenQuasi;
- return cont(quasi);
- }
- }
- function arrowBody(type) {
- findFatArrow(cx.stream, cx.state);
- return pass(type == "{" ? statement : expression);
- }
- function arrowBodyNoComma(type) {
- findFatArrow(cx.stream, cx.state);
- return pass(type == "{" ? statement : expressionNoComma);
- }
- function maybeTarget(noComma) {
- return function(type) {
- if (type == ".") return cont(noComma ? targetNoComma : target);
- else return pass(noComma ? expressionNoComma : expression);
- };
- }
- function target(_, value) {
- if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); }
- }
- function targetNoComma(_, value) {
- if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); }
- }
- function maybelabel(type) {
- if (type == ":") return cont(poplex, statement);
- return pass(maybeoperatorComma, expect(";"), poplex);
- }
- function property(type) {
- if (type == "variable") {cx.marked = "property"; return cont();}
- }
- function objprop(type, value) {
- if (type == "async") {
- cx.marked = "property";
- return cont(objprop);
- } else if (type == "variable" || cx.style == "keyword") {
- cx.marked = "property";
- if (value == "get" || value == "set") return cont(getterSetter);
- return cont(afterprop);
- } else if (type == "number" || type == "string") {
- cx.marked = jsonldMode ? "property" : (cx.style + " property");
- return cont(afterprop);
- } else if (type == "jsonld-keyword") {
- return cont(afterprop);
- } else if (type == "modifier") {
- return cont(objprop)
- } else if (type == "[") {
- return cont(expression, expect("]"), afterprop);
- } else if (type == "spread") {
- return cont(expression);
- } else if (type == ":") {
- return pass(afterprop)
- }
- }
- function getterSetter(type) {
- if (type != "variable") return pass(afterprop);
- cx.marked = "property";
- return cont(functiondef);
- }
- function afterprop(type) {
- if (type == ":") return cont(expressionNoComma);
- if (type == "(") return pass(functiondef);
- }
- function commasep(what, end, sep) {
- function proceed(type, value) {
- if (sep ? sep.indexOf(type) > -1 : type == ",") {
- var lex = cx.state.lexical;
- if (lex.info == "call") lex.pos = (lex.pos || 0) + 1;
- return cont(function(type, value) {
- if (type == end || value == end) return pass()
- return pass(what)
- }, proceed);
- }
- if (type == end || value == end) return cont();
- return cont(expect(end));
- }
- return function(type, value) {
- if (type == end || value == end) return cont();
- return pass(what, proceed);
- };
- }
- function contCommasep(what, end, info) {
- for (var i = 3; i < arguments.length; i++)
- cx.cc.push(arguments[i]);
- return cont(pushlex(end, info), commasep(what, end), poplex);
- }
- function block(type) {
- if (type == "}") return cont();
- return pass(statement, block);
- }
- function maybetype(type, value) {
- if (isTS) {
- if (type == ":") return cont(typeexpr);
- if (value == "?") return cont(maybetype);
- }
- }
- function typeexpr(type) {
- if (type == "variable") {cx.marked = "variable-3"; return cont(afterType);}
- if (type == "string" || type == "number" || type == "atom") return cont(afterType);
- if (type == "{") return cont(pushlex("}"), commasep(typeprop, "}", ",;"), poplex)
- if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType)
- }
- function maybeReturnType(type) {
- if (type == "=>") return cont(typeexpr)
- }
- function typeprop(type, value) {
- if (type == "variable" || cx.style == "keyword") {
- cx.marked = "property"
- return cont(typeprop)
- } else if (value == "?") {
- return cont(typeprop)
- } else if (type == ":") {
- return cont(typeexpr)
- }
- }
- function typearg(type) {
- if (type == "variable") return cont(typearg)
- else if (type == ":") return cont(typeexpr)
- }
- function afterType(type, value) {
- if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType)
- if (value == "|" || type == ".") return cont(typeexpr)
- if (type == "[") return cont(expect("]"), afterType)
- }
- function vardef() {
- return pass(pattern, maybetype, maybeAssign, vardefCont);
- }
- function pattern(type, value) {
- if (type == "modifier") return cont(pattern)
- if (type == "variable") { register(value); return cont(); }
- if (type == "spread") return cont(pattern);
- if (type == "[") return contCommasep(pattern, "]");
- if (type == "{") return contCommasep(proppattern, "}");
- }
- function proppattern(type, value) {
- if (type == "variable" && !cx.stream.match(/^\s*:/, false)) {
- register(value);
- return cont(maybeAssign);
- }
- if (type == "variable") cx.marked = "property";
- if (type == "spread") return cont(pattern);
- if (type == "}") return pass();
- return cont(expect(":"), pattern, maybeAssign);
- }
- function maybeAssign(_type, value) {
- if (value == "=") return cont(expressionNoComma);
- }
- function vardefCont(type) {
- if (type == ",") return cont(vardef);
- }
- function maybeelse(type, value) {
- if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex);
- }
- function forspec(type) {
- if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex);
- }
- function forspec1(type) {
- if (type == "var") return cont(vardef, expect(";"), forspec2);
- if (type == ";") return cont(forspec2);
- if (type == "variable") return cont(formaybeinof);
- return pass(expression, expect(";"), forspec2);
- }
- function formaybeinof(_type, value) {
- if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
- return cont(maybeoperatorComma, forspec2);
- }
- function forspec2(type, value) {
- if (type == ";") return cont(forspec3);
- if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
- return pass(expression, expect(";"), forspec3);
- }
- function forspec3(type) {
- if (type != ")") cont(expression);
- }
- function functiondef(type, value) {
- if (value == "*") {cx.marked = "keyword"; return cont(functiondef);}
- if (type == "variable") {register(value); return cont(functiondef);}
- if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, maybetype, statement, popcontext);
- }
- function funarg(type) {
- if (type == "spread") return cont(funarg);
- return pass(pattern, maybetype, maybeAssign);
- }
- function classExpression(type, value) {
- // Class expressions may have an optional name.
- if (type == "variable") return className(type, value);
- return classNameAfter(type, value);
- }
- function className(type, value) {
- if (type == "variable") {register(value); return cont(classNameAfter);}
- }
- function classNameAfter(type, value) {
- if (value == "extends" || value == "implements" || (isTS && type == ","))
- return cont(isTS ? typeexpr : expression, classNameAfter);
- if (type == "{") return cont(pushlex("}"), classBody, poplex);
- }
- function classBody(type, value) {
- if (type == "variable" || cx.style == "keyword") {
- if ((value == "async" || value == "static" || value == "get" || value == "set" ||
- (isTS && (value == "public" || value == "private" || value == "protected" || value == "readonly" || value == "abstract"))) &&
- cx.stream.match(/^\s+[\w$\xa1-\uffff]/, false)) {
- cx.marked = "keyword";
- return cont(classBody);
- }
- cx.marked = "property";
- return cont(isTS ? classfield : functiondef, classBody);
- }
- if (type == "[")
- return cont(expression, expect("]"), isTS ? classfield : functiondef, classBody)
- if (value == "*") {
- cx.marked = "keyword";
- return cont(classBody);
- }
- if (type == ";") return cont(classBody);
- if (type == "}") return cont();
- }
- function classfield(type, value) {
- if (value == "?") return cont(classfield)
- if (type == ":") return cont(typeexpr, maybeAssign)
- return pass(functiondef)
- }
- function afterExport(type, value) {
- if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); }
- if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); }
- if (type == "{") return cont(commasep(exportField, "}"), maybeFrom, expect(";"));
- return pass(statement);
- }
- function exportField(type, value) {
- if (value == "as") { cx.marked = "keyword"; return cont(expect("variable")); }
- if (type == "variable") return pass(expressionNoComma, exportField);
- }
- function afterImport(type) {
- if (type == "string") return cont();
- return pass(importSpec, maybeMoreImports, maybeFrom);
- }
- function importSpec(type, value) {
- if (type == "{") return contCommasep(importSpec, "}");
- if (type == "variable") register(value);
- if (value == "*") cx.marked = "keyword";
- return cont(maybeAs);
- }
- function maybeMoreImports(type) {
- if (type == ",") return cont(importSpec, maybeMoreImports)
- }
- function maybeAs(_type, value) {
- if (value == "as") { cx.marked = "keyword"; return cont(importSpec); }
- }
- function maybeFrom(_type, value) {
- if (value == "from") { cx.marked = "keyword"; return cont(expression); }
- }
- function arrayLiteral(type) {
- if (type == "]") return cont();
- return pass(commasep(expressionNoComma, "]"));
- }
-
- function isContinuedStatement(state, textAfter) {
- return state.lastType == "operator" || state.lastType == "," ||
- isOperatorChar.test(textAfter.charAt(0)) ||
- /[,.]/.test(textAfter.charAt(0));
- }
-
- // Interface
-
- return {
- startState: function(basecolumn) {
- var state = {
- tokenize: tokenBase,
- lastType: "sof",
- cc: [],
- lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false),
- localVars: parserConfig.localVars,
- context: parserConfig.localVars && {vars: parserConfig.localVars},
- indented: basecolumn || 0
- };
- if (parserConfig.globalVars && typeof parserConfig.globalVars == "object")
- state.globalVars = parserConfig.globalVars;
- return state;
- },
-
- token: function(stream, state) {
- if (stream.sol()) {
- if (!state.lexical.hasOwnProperty("align"))
- state.lexical.align = false;
- state.indented = stream.indentation();
- findFatArrow(stream, state);
- }
- if (state.tokenize != tokenComment && stream.eatSpace()) return null;
- var style = state.tokenize(stream, state);
- if (type == "comment") return style;
- state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type;
- return parseJS(state, style, type, content, stream);
- },
-
- indent: function(state, textAfter) {
- if (state.tokenize == tokenComment) return CodeMirror.Pass;
- if (state.tokenize != tokenBase) return 0;
- var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top
- // Kludge to prevent 'maybelse' from blocking lexical scope pops
- if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {
- var c = state.cc[i];
- if (c == poplex) lexical = lexical.prev;
- else if (c != maybeelse) break;
- }
- while ((lexical.type == "stat" || lexical.type == "form") &&
- (firstChar == "}" || ((top = state.cc[state.cc.length - 1]) &&
- (top == maybeoperatorComma || top == maybeoperatorNoComma) &&
- !/^[,\.=+\-*:?[\(]/.test(textAfter))))
- lexical = lexical.prev;
- if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat")
- lexical = lexical.prev;
- var type = lexical.type, closing = firstChar == type;
-
- if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0);
- else if (type == "form" && firstChar == "{") return lexical.indented;
- else if (type == "form") return lexical.indented + indentUnit;
- else if (type == "stat")
- return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);
- else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false)
- return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
- else if (lexical.align) return lexical.column + (closing ? 0 : 1);
- else return lexical.indented + (closing ? 0 : indentUnit);
- },
-
- electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
- blockCommentStart: jsonMode ? null : "/*",
- blockCommentEnd: jsonMode ? null : "*/",
- lineComment: jsonMode ? null : "//",
- fold: "brace",
- closeBrackets: "()[]{}''\"\"``",
-
- helperType: jsonMode ? "json" : "javascript",
- jsonldMode: jsonldMode,
- jsonMode: jsonMode,
-
- expressionAllowed: expressionAllowed,
- skipExpression: function(state) {
- var top = state.cc[state.cc.length - 1]
- if (top == expression || top == expressionNoComma) state.cc.pop()
- }
- };
-});
-
-CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/);
-
-CodeMirror.defineMIME("text/javascript", "javascript");
-CodeMirror.defineMIME("text/ecmascript", "javascript");
-CodeMirror.defineMIME("application/javascript", "javascript");
-CodeMirror.defineMIME("application/x-javascript", "javascript");
-CodeMirror.defineMIME("application/ecmascript", "javascript");
-CodeMirror.defineMIME("application/json", {name: "javascript", json: true});
-CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true});
-CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true});
-CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true });
-CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true });
-
-});
diff --git a/editable-samples/editor/codemirror/mode/javascript/json-ld.html b/editable-samples/editor/codemirror/mode/javascript/json-ld.html
deleted file mode 100644
index 3a37f0b..0000000
--- a/editable-samples/editor/codemirror/mode/javascript/json-ld.html
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-CodeMirror: JSON-LD mode
-
-
-
-
-
-
-
-
-
-
-
-
-
-JSON-LD mode
-
-
-
-{
- "@context": {
- "name": "http://schema.org/name",
- "description": "http://schema.org/description",
- "image": {
- "@id": "http://schema.org/image",
- "@type": "@id"
- },
- "geo": "http://schema.org/geo",
- "latitude": {
- "@id": "http://schema.org/latitude",
- "@type": "xsd:float"
- },
- "longitude": {
- "@id": "http://schema.org/longitude",
- "@type": "xsd:float"
- },
- "xsd": "http://www.w3.org/2001/XMLSchema#"
- },
- "name": "The Empire State Building",
- "description": "The Empire State Building is a 102-story landmark in New York City.",
- "image": "http://www.civil.usherbrooke.ca/cours/gci215a/empire-state-building.jpg",
- "geo": {
- "latitude": "40.75",
- "longitude": "73.98"
- }
-}
-
-
-
-
- This is a specialization of the JavaScript mode .
-
diff --git a/editable-samples/editor/codemirror/mode/javascript/test.js b/editable-samples/editor/codemirror/mode/javascript/test.js
deleted file mode 100644
index 336c187..0000000
--- a/editable-samples/editor/codemirror/mode/javascript/test.js
+++ /dev/null
@@ -1,329 +0,0 @@
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function() {
- var mode = CodeMirror.getMode({indentUnit: 2}, "javascript");
- function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
-
- MT("locals",
- "[keyword function] [def foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }");
-
- MT("comma-and-binop",
- "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }");
-
- MT("destructuring",
- "([keyword function]([def a], [[[def b], [def c] ]]) {",
- " [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);",
- " [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];",
- "})();");
-
- MT("destructure_trailing_comma",
- "[keyword let] {[def a], [def b],} [operator =] [variable foo];",
- "[keyword let] [def c];"); // Parser still in good state?
-
- MT("class_body",
- "[keyword class] [def Foo] {",
- " [property constructor]() {}",
- " [property sayName]() {",
- " [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];",
- " }",
- "}");
-
- MT("class",
- "[keyword class] [def Point] [keyword extends] [variable SuperThing] {",
- " [keyword get] [property prop]() { [keyword return] [number 24]; }",
- " [property constructor]([def x], [def y]) {",
- " [keyword super]([string 'something']);",
- " [keyword this].[property x] [operator =] [variable-2 x];",
- " }",
- "}");
-
- MT("anonymous_class_expression",
- "[keyword const] [def Adder] [operator =] [keyword class] [keyword extends] [variable Arithmetic] {",
- " [property add]([def a], [def b]) {}",
- "};");
-
- MT("named_class_expression",
- "[keyword const] [def Subber] [operator =] [keyword class] [def Subtract] {",
- " [property sub]([def a], [def b]) {}",
- "};");
-
- MT("class_async_method",
- "[keyword class] [def Foo] {",
- " [property sayName1]() {}",
- " [keyword async] [property sayName2]() {}",
- "}");
-
- MT("import",
- "[keyword function] [def foo]() {",
- " [keyword import] [def $] [keyword from] [string 'jquery'];",
- " [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];",
- "}");
-
- MT("import_trailing_comma",
- "[keyword import] {[def foo], [def bar],} [keyword from] [string 'baz']")
-
- MT("const",
- "[keyword function] [def f]() {",
- " [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];",
- "}");
-
- MT("for/of",
- "[keyword for]([keyword let] [def of] [keyword of] [variable something]) {}");
-
- MT("generator",
- "[keyword function*] [def repeat]([def n]) {",
- " [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])",
- " [keyword yield] [variable-2 i];",
- "}");
-
- MT("quotedStringAddition",
- "[keyword let] [def f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];");
-
- MT("quotedFatArrow",
- "[keyword let] [def f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];");
-
- MT("fatArrow",
- "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);",
- "[variable a];", // No longer in scope
- "[keyword let] [def f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];",
- "[variable c];");
-
- MT("spread",
- "[keyword function] [def f]([def a], [meta ...][def b]) {",
- " [variable something]([variable-2 a], [meta ...][variable-2 b]);",
- "}");
-
- MT("quasi",
- "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
-
- MT("quasi_no_function",
- "[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
-
- MT("indent_statement",
- "[keyword var] [def x] [operator =] [number 10]",
- "[variable x] [operator +=] [variable y] [operator +]",
- " [atom Infinity]",
- "[keyword debugger];");
-
- MT("indent_if",
- "[keyword if] ([number 1])",
- " [keyword break];",
- "[keyword else] [keyword if] ([number 2])",
- " [keyword continue];",
- "[keyword else]",
- " [number 10];",
- "[keyword if] ([number 1]) {",
- " [keyword break];",
- "} [keyword else] [keyword if] ([number 2]) {",
- " [keyword continue];",
- "} [keyword else] {",
- " [number 10];",
- "}");
-
- MT("indent_for",
- "[keyword for] ([keyword var] [def i] [operator =] [number 0];",
- " [variable i] [operator <] [number 100];",
- " [variable i][operator ++])",
- " [variable doSomething]([variable i]);",
- "[keyword debugger];");
-
- MT("indent_c_style",
- "[keyword function] [def foo]()",
- "{",
- " [keyword debugger];",
- "}");
-
- MT("indent_else",
- "[keyword for] (;;)",
- " [keyword if] ([variable foo])",
- " [keyword if] ([variable bar])",
- " [number 1];",
- " [keyword else]",
- " [number 2];",
- " [keyword else]",
- " [number 3];");
-
- MT("indent_funarg",
- "[variable foo]([number 10000],",
- " [keyword function]([def a]) {",
- " [keyword debugger];",
- "};");
-
- MT("indent_below_if",
- "[keyword for] (;;)",
- " [keyword if] ([variable foo])",
- " [number 1];",
- "[number 2];");
-
- MT("indent_semicolonless_if",
- "[keyword function] [def foo]() {",
- " [keyword if] ([variable x])",
- " [variable foo]()",
- "}")
-
- MT("indent_semicolonless_if_with_statement",
- "[keyword function] [def foo]() {",
- " [keyword if] ([variable x])",
- " [variable foo]()",
- " [variable bar]()",
- "}")
-
- MT("multilinestring",
- "[keyword var] [def x] [operator =] [string 'foo\\]",
- "[string bar'];");
-
- MT("scary_regexp",
- "[string-2 /foo[[/]]bar/];");
-
- MT("indent_strange_array",
- "[keyword var] [def x] [operator =] [[",
- " [number 1],,",
- " [number 2],",
- "]];",
- "[number 10];");
-
- MT("param_default",
- "[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {",
- " [keyword return] [variable-2 x];",
- "}");
-
- MT("new_target",
- "[keyword function] [def F]([def target]) {",
- " [keyword if] ([variable-2 target] [operator &&] [keyword new].[keyword target].[property name]) {",
- " [keyword return] [keyword new]",
- " .[keyword target];",
- " }",
- "}");
-
- MT("async",
- "[keyword async] [keyword function] [def foo]([def args]) { [keyword return] [atom true]; }");
-
- MT("async_assignment",
- "[keyword const] [def foo] [operator =] [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; };");
-
- MT("async_object",
- "[keyword let] [def obj] [operator =] { [property async]: [atom false] };");
-
- // async be highlighet as keyword and foo as def, but it requires potentially expensive look-ahead. See #4173
- MT("async_object_function",
- "[keyword let] [def obj] [operator =] { [property async] [property foo]([def args]) { [keyword return] [atom true]; } };");
-
- MT("async_object_properties",
- "[keyword let] [def obj] [operator =] {",
- " [property prop1]: [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; },",
- " [property prop2]: [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; },",
- " [property prop3]: [keyword async] [keyword function] [def prop3]([def args]) { [keyword return] [atom true]; },",
- "};");
-
- MT("async_arrow",
- "[keyword const] [def foo] [operator =] [keyword async] ([def args]) [operator =>] { [keyword return] [atom true]; };");
-
- MT("async_jquery",
- "[variable $].[property ajax]({",
- " [property url]: [variable url],",
- " [property async]: [atom true],",
- " [property method]: [string 'GET']",
- "});");
-
- var ts_mode = CodeMirror.getMode({indentUnit: 2}, "application/typescript")
- function TS(name) {
- test.mode(name, ts_mode, Array.prototype.slice.call(arguments, 1))
- }
-
- TS("extend_type",
- "[keyword class] [def Foo] [keyword extends] [variable-3 Some][operator <][variable-3 Type][operator >] {}")
-
- TS("arrow_type",
- "[keyword let] [def x]: ([variable arg]: [variable-3 Type]) [operator =>] [variable-3 ReturnType]")
-
- TS("typescript_class",
- "[keyword class] [def Foo] {",
- " [keyword public] [keyword static] [property main]() {}",
- " [keyword private] [property _foo]: [variable-3 string];",
- "}")
-
- TS("typescript_literal_types",
- "[keyword import] [keyword *] [keyword as] [def Sequelize] [keyword from] [string 'sequelize'];",
- "[keyword interface] [def MyAttributes] {",
- " [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];",
- " [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];",
- "}",
- "[keyword interface] [def MyInstance] [keyword extends] [variable-3 Sequelize].[variable-3 Instance] [operator <] [variable-3 MyAttributes] [operator >] {",
- " [property rawAttributes]: [variable-3 MyAttributes];",
- " [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];",
- " [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];",
- "}")
-
- TS("typescript_extend_operators",
- "[keyword export] [keyword interface] [def UserModel] [keyword extends]",
- " [variable-3 Sequelize].[variable-3 Model] [operator <] [variable-3 UserInstance], [variable-3 UserAttributes] [operator >] {",
- " [property findById]: (",
- " [variable userId]: [variable-3 number]",
- " ) [operator =>] [variable-3 Promise] [operator <] [variable-3 Array] [operator <] { [property id], [property name] } [operator >>];",
- " [property updateById]: (",
- " [variable userId]: [variable-3 number],",
- " [variable isActive]: [variable-3 boolean]",
- " ) [operator =>] [variable-3 Promise] [operator <] [variable-3 AccountHolderNotificationPreferenceInstance] [operator >];",
- " }")
-
- TS("typescript_interface_with_const",
- "[keyword const] [def hello]: {",
- " [property prop1][operator ?]: [variable-3 string];",
- " [property prop2][operator ?]: [variable-3 string];",
- "} [operator =] {};")
-
- TS("typescript_double_extend",
- "[keyword export] [keyword interface] [def UserAttributes] {",
- " [property id][operator ?]: [variable-3 number];",
- " [property createdAt][operator ?]: [variable-3 Date];",
- "}",
- "[keyword export] [keyword interface] [def UserInstance] [keyword extends] [variable-3 Sequelize].[variable-3 Instance][operator <][variable-3 UserAttributes][operator >], [variable-3 UserAttributes] {",
- " [property id]: [variable-3 number];",
- " [property createdAt]: [variable-3 Date];",
- "}");
-
- TS("typescript_index_signature",
- "[keyword interface] [def A] {",
- " [[ [variable prop]: [variable-3 string] ]]: [variable-3 any];",
- " [property prop1]: [variable-3 any];",
- "}");
-
- var jsonld_mode = CodeMirror.getMode(
- {indentUnit: 2},
- {name: "javascript", jsonld: true}
- );
- function LD(name) {
- test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1));
- }
-
- LD("json_ld_keywords",
- '{',
- ' [meta "@context"]: {',
- ' [meta "@base"]: [string "http://example.com"],',
- ' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],',
- ' [property "likesFlavor"]: {',
- ' [meta "@container"]: [meta "@list"]',
- ' [meta "@reverse"]: [string "@beFavoriteOf"]',
- ' },',
- ' [property "nick"]: { [meta "@container"]: [meta "@set"] },',
- ' [property "nick"]: { [meta "@container"]: [meta "@index"] }',
- ' },',
- ' [meta "@graph"]: [[ {',
- ' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],',
- ' [property "name"]: [string "John Lennon"],',
- ' [property "modified"]: {',
- ' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],',
- ' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]',
- ' }',
- ' } ]]',
- '}');
-
- LD("json_ld_fake",
- '{',
- ' [property "@fake"]: [string "@fake"],',
- ' [property "@contextual"]: [string "@identifier"],',
- ' [property "user@domain.com"]: [string "@graphical"],',
- ' [property "@ID"]: [string "@@ID"]',
- '}');
-})();
diff --git a/editable-samples/editor/codemirror/mode/javascript/typescript.html b/editable-samples/editor/codemirror/mode/javascript/typescript.html
deleted file mode 100644
index 1f26d7f..0000000
--- a/editable-samples/editor/codemirror/mode/javascript/typescript.html
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-CodeMirror: TypeScript mode
-
-
-
-
-
-
-
-
-
-
-TypeScript mode
-
-
-
-class Greeter {
- greeting: string;
- constructor (message: string) {
- this.greeting = message;
- }
- greet() {
- return "Hello, " + this.greeting;
- }
-}
-
-var greeter = new Greeter("world");
-
-var button = document.createElement('button')
-button.innerText = "Say Hello"
-button.onclick = function() {
- alert(greeter.greet())
-}
-
-document.body.appendChild(button)
-
-
-
-
-
- This is a specialization of the JavaScript mode .
-
diff --git a/editable-samples/editor/codemirror/theme/3024-day.css b/editable-samples/editor/codemirror/theme/3024-day.css
deleted file mode 100644
index 7132655..0000000
--- a/editable-samples/editor/codemirror/theme/3024-day.css
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-
- Name: 3024 day
- Author: Jan T. Sott (http://github.com/idleberg)
-
- CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
- Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
-
-*/
-
-.cm-s-3024-day.CodeMirror { background: #f7f7f7; color: #3a3432; }
-.cm-s-3024-day div.CodeMirror-selected { background: #d6d5d4; }
-
-.cm-s-3024-day .CodeMirror-line::selection, .cm-s-3024-day .CodeMirror-line > span::selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d6d5d4; }
-.cm-s-3024-day .CodeMirror-line::-moz-selection, .cm-s-3024-day .CodeMirror-line > span::-moz-selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d9d9d9; }
-
-.cm-s-3024-day .CodeMirror-gutters { background: #f7f7f7; border-right: 0px; }
-.cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; }
-.cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; }
-.cm-s-3024-day .CodeMirror-linenumber { color: #807d7c; }
-
-.cm-s-3024-day .CodeMirror-cursor { border-left: 1px solid #5c5855; }
-
-.cm-s-3024-day span.cm-comment { color: #cdab53; }
-.cm-s-3024-day span.cm-atom { color: #a16a94; }
-.cm-s-3024-day span.cm-number { color: #a16a94; }
-
-.cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute { color: #01a252; }
-.cm-s-3024-day span.cm-keyword { color: #db2d20; }
-.cm-s-3024-day span.cm-string { color: #fded02; }
-
-.cm-s-3024-day span.cm-variable { color: #01a252; }
-.cm-s-3024-day span.cm-variable-2 { color: #01a0e4; }
-.cm-s-3024-day span.cm-def { color: #e8bbd0; }
-.cm-s-3024-day span.cm-bracket { color: #3a3432; }
-.cm-s-3024-day span.cm-tag { color: #db2d20; }
-.cm-s-3024-day span.cm-link { color: #a16a94; }
-.cm-s-3024-day span.cm-error { background: #db2d20; color: #5c5855; }
-
-.cm-s-3024-day .CodeMirror-activeline-background { background: #e8f2ff; }
-.cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important; }
diff --git a/editable-samples/editor/codemirror/theme/3024-night.css b/editable-samples/editor/codemirror/theme/3024-night.css
deleted file mode 100644
index adc5900..0000000
--- a/editable-samples/editor/codemirror/theme/3024-night.css
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-
- Name: 3024 night
- Author: Jan T. Sott (http://github.com/idleberg)
-
- CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
- Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
-
-*/
-
-.cm-s-3024-night.CodeMirror { background: #090300; color: #d6d5d4; }
-.cm-s-3024-night div.CodeMirror-selected { background: #3a3432; }
-.cm-s-3024-night .CodeMirror-line::selection, .cm-s-3024-night .CodeMirror-line > span::selection, .cm-s-3024-night .CodeMirror-line > span > span::selection { background: rgba(58, 52, 50, .99); }
-.cm-s-3024-night .CodeMirror-line::-moz-selection, .cm-s-3024-night .CodeMirror-line > span::-moz-selection, .cm-s-3024-night .CodeMirror-line > span > span::-moz-selection { background: rgba(58, 52, 50, .99); }
-.cm-s-3024-night .CodeMirror-gutters { background: #090300; border-right: 0px; }
-.cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; }
-.cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; }
-.cm-s-3024-night .CodeMirror-linenumber { color: #5c5855; }
-
-.cm-s-3024-night .CodeMirror-cursor { border-left: 1px solid #807d7c; }
-
-.cm-s-3024-night span.cm-comment { color: #cdab53; }
-.cm-s-3024-night span.cm-atom { color: #a16a94; }
-.cm-s-3024-night span.cm-number { color: #a16a94; }
-
-.cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute { color: #01a252; }
-.cm-s-3024-night span.cm-keyword { color: #db2d20; }
-.cm-s-3024-night span.cm-string { color: #fded02; }
-
-.cm-s-3024-night span.cm-variable { color: #01a252; }
-.cm-s-3024-night span.cm-variable-2 { color: #01a0e4; }
-.cm-s-3024-night span.cm-def { color: #e8bbd0; }
-.cm-s-3024-night span.cm-bracket { color: #d6d5d4; }
-.cm-s-3024-night span.cm-tag { color: #db2d20; }
-.cm-s-3024-night span.cm-link { color: #a16a94; }
-.cm-s-3024-night span.cm-error { background: #db2d20; color: #807d7c; }
-
-.cm-s-3024-night .CodeMirror-activeline-background { background: #2F2F2F; }
-.cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/editable-samples/editor/codemirror/theme/abcdef.css b/editable-samples/editor/codemirror/theme/abcdef.css
deleted file mode 100644
index 7f9d788..0000000
--- a/editable-samples/editor/codemirror/theme/abcdef.css
+++ /dev/null
@@ -1,32 +0,0 @@
-.cm-s-abcdef.CodeMirror { background: #0f0f0f; color: #defdef; }
-.cm-s-abcdef div.CodeMirror-selected { background: #515151; }
-.cm-s-abcdef .CodeMirror-line::selection, .cm-s-abcdef .CodeMirror-line > span::selection, .cm-s-abcdef .CodeMirror-line > span > span::selection { background: rgba(56, 56, 56, 0.99); }
-.cm-s-abcdef .CodeMirror-line::-moz-selection, .cm-s-abcdef .CodeMirror-line > span::-moz-selection, .cm-s-abcdef .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 56, 56, 0.99); }
-.cm-s-abcdef .CodeMirror-gutters { background: #555; border-right: 2px solid #314151; }
-.cm-s-abcdef .CodeMirror-guttermarker { color: #222; }
-.cm-s-abcdef .CodeMirror-guttermarker-subtle { color: azure; }
-.cm-s-abcdef .CodeMirror-linenumber { color: #FFFFFF; }
-.cm-s-abcdef .CodeMirror-cursor { border-left: 1px solid #00FF00; }
-
-.cm-s-abcdef span.cm-keyword { color: darkgoldenrod; font-weight: bold; }
-.cm-s-abcdef span.cm-atom { color: #77F; }
-.cm-s-abcdef span.cm-number { color: violet; }
-.cm-s-abcdef span.cm-def { color: #fffabc; }
-.cm-s-abcdef span.cm-variable { color: #abcdef; }
-.cm-s-abcdef span.cm-variable-2 { color: #cacbcc; }
-.cm-s-abcdef span.cm-variable-3 { color: #def; }
-.cm-s-abcdef span.cm-property { color: #fedcba; }
-.cm-s-abcdef span.cm-operator { color: #ff0; }
-.cm-s-abcdef span.cm-comment { color: #7a7b7c; font-style: italic;}
-.cm-s-abcdef span.cm-string { color: #2b4; }
-.cm-s-abcdef span.cm-meta { color: #C9F; }
-.cm-s-abcdef span.cm-qualifier { color: #FFF700; }
-.cm-s-abcdef span.cm-builtin { color: #30aabc; }
-.cm-s-abcdef span.cm-bracket { color: #8a8a8a; }
-.cm-s-abcdef span.cm-tag { color: #FFDD44; }
-.cm-s-abcdef span.cm-attribute { color: #DDFF00; }
-.cm-s-abcdef span.cm-error { color: #FF0000; }
-.cm-s-abcdef span.cm-header { color: aquamarine; font-weight: bold; }
-.cm-s-abcdef span.cm-link { color: blueviolet; }
-
-.cm-s-abcdef .CodeMirror-activeline-background { background: #314151; }
diff --git a/editable-samples/editor/codemirror/theme/ambiance-mobile.css b/editable-samples/editor/codemirror/theme/ambiance-mobile.css
deleted file mode 100644
index 88d332e..0000000
--- a/editable-samples/editor/codemirror/theme/ambiance-mobile.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.cm-s-ambiance.CodeMirror {
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
-}
diff --git a/editable-samples/editor/codemirror/theme/ambiance.css b/editable-samples/editor/codemirror/theme/ambiance.css
deleted file mode 100644
index bce3446..0000000
--- a/editable-samples/editor/codemirror/theme/ambiance.css
+++ /dev/null
@@ -1,74 +0,0 @@
-/* ambiance theme for codemirror */
-
-/* Color scheme */
-
-.cm-s-ambiance .cm-header { color: blue; }
-.cm-s-ambiance .cm-quote { color: #24C2C7; }
-
-.cm-s-ambiance .cm-keyword { color: #cda869; }
-.cm-s-ambiance .cm-atom { color: #CF7EA9; }
-.cm-s-ambiance .cm-number { color: #78CF8A; }
-.cm-s-ambiance .cm-def { color: #aac6e3; }
-.cm-s-ambiance .cm-variable { color: #ffb795; }
-.cm-s-ambiance .cm-variable-2 { color: #eed1b3; }
-.cm-s-ambiance .cm-variable-3 { color: #faded3; }
-.cm-s-ambiance .cm-property { color: #eed1b3; }
-.cm-s-ambiance .cm-operator { color: #fa8d6a; }
-.cm-s-ambiance .cm-comment { color: #555; font-style:italic; }
-.cm-s-ambiance .cm-string { color: #8f9d6a; }
-.cm-s-ambiance .cm-string-2 { color: #9d937c; }
-.cm-s-ambiance .cm-meta { color: #D2A8A1; }
-.cm-s-ambiance .cm-qualifier { color: yellow; }
-.cm-s-ambiance .cm-builtin { color: #9999cc; }
-.cm-s-ambiance .cm-bracket { color: #24C2C7; }
-.cm-s-ambiance .cm-tag { color: #fee4ff; }
-.cm-s-ambiance .cm-attribute { color: #9B859D; }
-.cm-s-ambiance .cm-hr { color: pink; }
-.cm-s-ambiance .cm-link { color: #F4C20B; }
-.cm-s-ambiance .cm-special { color: #FF9D00; }
-.cm-s-ambiance .cm-error { color: #AF2018; }
-
-.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; }
-.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; }
-
-.cm-s-ambiance div.CodeMirror-selected { background: rgba(255, 255, 255, 0.15); }
-.cm-s-ambiance.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }
-.cm-s-ambiance .CodeMirror-line::selection, .cm-s-ambiance .CodeMirror-line > span::selection, .cm-s-ambiance .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }
-.cm-s-ambiance .CodeMirror-line::-moz-selection, .cm-s-ambiance .CodeMirror-line > span::-moz-selection, .cm-s-ambiance .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }
-
-/* Editor styling */
-
-.cm-s-ambiance.CodeMirror {
- line-height: 1.40em;
- color: #E6E1DC;
- background-color: #202020;
- -webkit-box-shadow: inset 0 0 10px black;
- -moz-box-shadow: inset 0 0 10px black;
- box-shadow: inset 0 0 10px black;
-}
-
-.cm-s-ambiance .CodeMirror-gutters {
- background: #3D3D3D;
- border-right: 1px solid #4D4D4D;
- box-shadow: 0 10px 20px black;
-}
-
-.cm-s-ambiance .CodeMirror-linenumber {
- text-shadow: 0px 1px 1px #4d4d4d;
- color: #111;
- padding: 0 5px;
-}
-
-.cm-s-ambiance .CodeMirror-guttermarker { color: #aaa; }
-.cm-s-ambiance .CodeMirror-guttermarker-subtle { color: #111; }
-
-.cm-s-ambiance .CodeMirror-cursor { border-left: 1px solid #7991E8; }
-
-.cm-s-ambiance .CodeMirror-activeline-background {
- background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031);
-}
-
-.cm-s-ambiance.CodeMirror,
-.cm-s-ambiance .CodeMirror-gutters {
- background-image: url("data:image/png;base64,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");
-}
diff --git a/editable-samples/editor/codemirror/theme/base16-dark.css b/editable-samples/editor/codemirror/theme/base16-dark.css
deleted file mode 100644
index 026a816..0000000
--- a/editable-samples/editor/codemirror/theme/base16-dark.css
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- Name: Base16 Default Dark
- Author: Chris Kempson (http://chriskempson.com)
-
- CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
- Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
-
-*/
-
-.cm-s-base16-dark.CodeMirror { background: #151515; color: #e0e0e0; }
-.cm-s-base16-dark div.CodeMirror-selected { background: #303030; }
-.cm-s-base16-dark .CodeMirror-line::selection, .cm-s-base16-dark .CodeMirror-line > span::selection, .cm-s-base16-dark .CodeMirror-line > span > span::selection { background: rgba(48, 48, 48, .99); }
-.cm-s-base16-dark .CodeMirror-line::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(48, 48, 48, .99); }
-.cm-s-base16-dark .CodeMirror-gutters { background: #151515; border-right: 0px; }
-.cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; }
-.cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; }
-.cm-s-base16-dark .CodeMirror-linenumber { color: #505050; }
-.cm-s-base16-dark .CodeMirror-cursor { border-left: 1px solid #b0b0b0; }
-
-.cm-s-base16-dark span.cm-comment { color: #8f5536; }
-.cm-s-base16-dark span.cm-atom { color: #aa759f; }
-.cm-s-base16-dark span.cm-number { color: #aa759f; }
-
-.cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute { color: #90a959; }
-.cm-s-base16-dark span.cm-keyword { color: #ac4142; }
-.cm-s-base16-dark span.cm-string { color: #f4bf75; }
-
-.cm-s-base16-dark span.cm-variable { color: #90a959; }
-.cm-s-base16-dark span.cm-variable-2 { color: #6a9fb5; }
-.cm-s-base16-dark span.cm-def { color: #d28445; }
-.cm-s-base16-dark span.cm-bracket { color: #e0e0e0; }
-.cm-s-base16-dark span.cm-tag { color: #ac4142; }
-.cm-s-base16-dark span.cm-link { color: #aa759f; }
-.cm-s-base16-dark span.cm-error { background: #ac4142; color: #b0b0b0; }
-
-.cm-s-base16-dark .CodeMirror-activeline-background { background: #202020; }
-.cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/editable-samples/editor/codemirror/theme/base16-light.css b/editable-samples/editor/codemirror/theme/base16-light.css
deleted file mode 100644
index 474e0ca..0000000
--- a/editable-samples/editor/codemirror/theme/base16-light.css
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- Name: Base16 Default Light
- Author: Chris Kempson (http://chriskempson.com)
-
- CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
- Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
-
-*/
-
-.cm-s-base16-light.CodeMirror { background: #f5f5f5; color: #202020; }
-.cm-s-base16-light div.CodeMirror-selected { background: #e0e0e0; }
-.cm-s-base16-light .CodeMirror-line::selection, .cm-s-base16-light .CodeMirror-line > span::selection, .cm-s-base16-light .CodeMirror-line > span > span::selection { background: #e0e0e0; }
-.cm-s-base16-light .CodeMirror-line::-moz-selection, .cm-s-base16-light .CodeMirror-line > span::-moz-selection, .cm-s-base16-light .CodeMirror-line > span > span::-moz-selection { background: #e0e0e0; }
-.cm-s-base16-light .CodeMirror-gutters { background: #f5f5f5; border-right: 0px; }
-.cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; }
-.cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; }
-.cm-s-base16-light .CodeMirror-linenumber { color: #b0b0b0; }
-.cm-s-base16-light .CodeMirror-cursor { border-left: 1px solid #505050; }
-
-.cm-s-base16-light span.cm-comment { color: #8f5536; }
-.cm-s-base16-light span.cm-atom { color: #aa759f; }
-.cm-s-base16-light span.cm-number { color: #aa759f; }
-
-.cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute { color: #90a959; }
-.cm-s-base16-light span.cm-keyword { color: #ac4142; }
-.cm-s-base16-light span.cm-string { color: #f4bf75; }
-
-.cm-s-base16-light span.cm-variable { color: #90a959; }
-.cm-s-base16-light span.cm-variable-2 { color: #6a9fb5; }
-.cm-s-base16-light span.cm-def { color: #d28445; }
-.cm-s-base16-light span.cm-bracket { color: #202020; }
-.cm-s-base16-light span.cm-tag { color: #ac4142; }
-.cm-s-base16-light span.cm-link { color: #aa759f; }
-.cm-s-base16-light span.cm-error { background: #ac4142; color: #505050; }
-
-.cm-s-base16-light .CodeMirror-activeline-background { background: #DDDCDC; }
-.cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/editable-samples/editor/codemirror/theme/bespin.css b/editable-samples/editor/codemirror/theme/bespin.css
deleted file mode 100644
index 60913ba..0000000
--- a/editable-samples/editor/codemirror/theme/bespin.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
- Name: Bespin
- Author: Mozilla / Jan T. Sott
-
- CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
- Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
-
-*/
-
-.cm-s-bespin.CodeMirror {background: #28211c; color: #9d9b97;}
-.cm-s-bespin div.CodeMirror-selected {background: #36312e !important;}
-.cm-s-bespin .CodeMirror-gutters {background: #28211c; border-right: 0px;}
-.cm-s-bespin .CodeMirror-linenumber {color: #666666;}
-.cm-s-bespin .CodeMirror-cursor {border-left: 1px solid #797977 !important;}
-
-.cm-s-bespin span.cm-comment {color: #937121;}
-.cm-s-bespin span.cm-atom {color: #9b859d;}
-.cm-s-bespin span.cm-number {color: #9b859d;}
-
-.cm-s-bespin span.cm-property, .cm-s-bespin span.cm-attribute {color: #54be0d;}
-.cm-s-bespin span.cm-keyword {color: #cf6a4c;}
-.cm-s-bespin span.cm-string {color: #f9ee98;}
-
-.cm-s-bespin span.cm-variable {color: #54be0d;}
-.cm-s-bespin span.cm-variable-2 {color: #5ea6ea;}
-.cm-s-bespin span.cm-def {color: #cf7d34;}
-.cm-s-bespin span.cm-error {background: #cf6a4c; color: #797977;}
-.cm-s-bespin span.cm-bracket {color: #9d9b97;}
-.cm-s-bespin span.cm-tag {color: #cf6a4c;}
-.cm-s-bespin span.cm-link {color: #9b859d;}
-
-.cm-s-bespin .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
-.cm-s-bespin .CodeMirror-activeline-background { background: #404040; }
diff --git a/editable-samples/editor/codemirror/theme/blackboard.css b/editable-samples/editor/codemirror/theme/blackboard.css
deleted file mode 100644
index b6eaedb..0000000
--- a/editable-samples/editor/codemirror/theme/blackboard.css
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Port of TextMate's Blackboard theme */
-
-.cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; }
-.cm-s-blackboard div.CodeMirror-selected { background: #253B76; }
-.cm-s-blackboard .CodeMirror-line::selection, .cm-s-blackboard .CodeMirror-line > span::selection, .cm-s-blackboard .CodeMirror-line > span > span::selection { background: rgba(37, 59, 118, .99); }
-.cm-s-blackboard .CodeMirror-line::-moz-selection, .cm-s-blackboard .CodeMirror-line > span::-moz-selection, .cm-s-blackboard .CodeMirror-line > span > span::-moz-selection { background: rgba(37, 59, 118, .99); }
-.cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; }
-.cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; }
-.cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; }
-.cm-s-blackboard .CodeMirror-linenumber { color: #888; }
-.cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7; }
-
-.cm-s-blackboard .cm-keyword { color: #FBDE2D; }
-.cm-s-blackboard .cm-atom { color: #D8FA3C; }
-.cm-s-blackboard .cm-number { color: #D8FA3C; }
-.cm-s-blackboard .cm-def { color: #8DA6CE; }
-.cm-s-blackboard .cm-variable { color: #FF6400; }
-.cm-s-blackboard .cm-operator { color: #FBDE2D; }
-.cm-s-blackboard .cm-comment { color: #AEAEAE; }
-.cm-s-blackboard .cm-string { color: #61CE3C; }
-.cm-s-blackboard .cm-string-2 { color: #61CE3C; }
-.cm-s-blackboard .cm-meta { color: #D8FA3C; }
-.cm-s-blackboard .cm-builtin { color: #8DA6CE; }
-.cm-s-blackboard .cm-tag { color: #8DA6CE; }
-.cm-s-blackboard .cm-attribute { color: #8DA6CE; }
-.cm-s-blackboard .cm-header { color: #FF6400; }
-.cm-s-blackboard .cm-hr { color: #AEAEAE; }
-.cm-s-blackboard .cm-link { color: #8DA6CE; }
-.cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; }
-
-.cm-s-blackboard .CodeMirror-activeline-background { background: #3C3636; }
-.cm-s-blackboard .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; }
diff --git a/editable-samples/editor/codemirror/theme/cobalt.css b/editable-samples/editor/codemirror/theme/cobalt.css
deleted file mode 100644
index d88223e..0000000
--- a/editable-samples/editor/codemirror/theme/cobalt.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.cm-s-cobalt.CodeMirror { background: #002240; color: white; }
-.cm-s-cobalt div.CodeMirror-selected { background: #b36539; }
-.cm-s-cobalt .CodeMirror-line::selection, .cm-s-cobalt .CodeMirror-line > span::selection, .cm-s-cobalt .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); }
-.cm-s-cobalt .CodeMirror-line::-moz-selection, .cm-s-cobalt .CodeMirror-line > span::-moz-selection, .cm-s-cobalt .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); }
-.cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
-.cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; }
-.cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
-.cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; }
-.cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white; }
-
-.cm-s-cobalt span.cm-comment { color: #08f; }
-.cm-s-cobalt span.cm-atom { color: #845dc4; }
-.cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; }
-.cm-s-cobalt span.cm-keyword { color: #ffee80; }
-.cm-s-cobalt span.cm-string { color: #3ad900; }
-.cm-s-cobalt span.cm-meta { color: #ff9d00; }
-.cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; }
-.cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; }
-.cm-s-cobalt span.cm-bracket { color: #d8d8d8; }
-.cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; }
-.cm-s-cobalt span.cm-link { color: #845dc4; }
-.cm-s-cobalt span.cm-error { color: #9d1e15; }
-
-.cm-s-cobalt .CodeMirror-activeline-background { background: #002D57; }
-.cm-s-cobalt .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; }
diff --git a/editable-samples/editor/codemirror/theme/colorforth.css b/editable-samples/editor/codemirror/theme/colorforth.css
deleted file mode 100644
index 606899f..0000000
--- a/editable-samples/editor/codemirror/theme/colorforth.css
+++ /dev/null
@@ -1,33 +0,0 @@
-.cm-s-colorforth.CodeMirror { background: #000000; color: #f8f8f8; }
-.cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
-.cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; }
-.cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; }
-.cm-s-colorforth .CodeMirror-linenumber { color: #bababa; }
-.cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white; }
-
-.cm-s-colorforth span.cm-comment { color: #ededed; }
-.cm-s-colorforth span.cm-def { color: #ff1c1c; font-weight:bold; }
-.cm-s-colorforth span.cm-keyword { color: #ffd900; }
-.cm-s-colorforth span.cm-builtin { color: #00d95a; }
-.cm-s-colorforth span.cm-variable { color: #73ff00; }
-.cm-s-colorforth span.cm-string { color: #007bff; }
-.cm-s-colorforth span.cm-number { color: #00c4ff; }
-.cm-s-colorforth span.cm-atom { color: #606060; }
-
-.cm-s-colorforth span.cm-variable-2 { color: #EEE; }
-.cm-s-colorforth span.cm-variable-3 { color: #DDD; }
-.cm-s-colorforth span.cm-property {}
-.cm-s-colorforth span.cm-operator {}
-
-.cm-s-colorforth span.cm-meta { color: yellow; }
-.cm-s-colorforth span.cm-qualifier { color: #FFF700; }
-.cm-s-colorforth span.cm-bracket { color: #cc7; }
-.cm-s-colorforth span.cm-tag { color: #FFBD40; }
-.cm-s-colorforth span.cm-attribute { color: #FFF700; }
-.cm-s-colorforth span.cm-error { color: #f00; }
-
-.cm-s-colorforth div.CodeMirror-selected { background: #333d53; }
-
-.cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255, 0.12); }
-
-.cm-s-colorforth .CodeMirror-activeline-background { background: #253540; }
diff --git a/editable-samples/editor/codemirror/theme/dracula.css b/editable-samples/editor/codemirror/theme/dracula.css
deleted file mode 100644
index 53a660b..0000000
--- a/editable-samples/editor/codemirror/theme/dracula.css
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-
- Name: dracula
- Author: Michael Kaminsky (http://github.com/mkaminsky11)
-
- Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)
-
-*/
-
-
-.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {
- background-color: #282a36 !important;
- color: #f8f8f2 !important;
- border: none;
-}
-.cm-s-dracula .CodeMirror-gutters { color: #282a36; }
-.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }
-.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }
-.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }
-.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }
-.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }
-.cm-s-dracula span.cm-comment { color: #6272a4; }
-.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }
-.cm-s-dracula span.cm-number { color: #bd93f9; }
-.cm-s-dracula span.cm-variable { color: #50fa7b; }
-.cm-s-dracula span.cm-variable-2 { color: white; }
-.cm-s-dracula span.cm-def { color: #50fa7b; }
-.cm-s-dracula span.cm-operator { color: #ff79c6; }
-.cm-s-dracula span.cm-keyword { color: #ff79c6; }
-.cm-s-dracula span.cm-atom { color: #bd93f9; }
-.cm-s-dracula span.cm-meta { color: #f8f8f2; }
-.cm-s-dracula span.cm-tag { color: #ff79c6; }
-.cm-s-dracula span.cm-attribute { color: #50fa7b; }
-.cm-s-dracula span.cm-qualifier { color: #50fa7b; }
-.cm-s-dracula span.cm-property { color: #66d9ef; }
-.cm-s-dracula span.cm-builtin { color: #50fa7b; }
-.cm-s-dracula span.cm-variable-3 { color: #ffb86c; }
-
-.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }
-.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/editable-samples/editor/codemirror/theme/duotone-dark.css b/editable-samples/editor/codemirror/theme/duotone-dark.css
deleted file mode 100644
index b09a585..0000000
--- a/editable-samples/editor/codemirror/theme/duotone-dark.css
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-Name: DuoTone-Dark
-Author: by Bram de Haan, adapted from DuoTone themes by Simurai (http://simurai.com/projects/2016/01/01/duotone-themes)
-
-CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bram de Haan (https://github.com/atelierbram/)
-*/
-
-.cm-s-duotone-dark.CodeMirror { background: #2a2734; color: #6c6783; }
-.cm-s-duotone-dark div.CodeMirror-selected { background: #545167!important; }
-.cm-s-duotone-dark .CodeMirror-gutters { background: #2a2734; border-right: 0px; }
-.cm-s-duotone-dark .CodeMirror-linenumber { color: #545167; }
-
-/* begin cursor */
-.cm-s-duotone-dark .CodeMirror-cursor { border-left: 1px solid #ffad5c; /* border-left: 1px solid #ffad5c80; */ border-right: .5em solid #ffad5c; /* border-right: .5em solid #ffad5c80; */ opacity: .5; }
-.cm-s-duotone-dark .CodeMirror-activeline-background { background: #363342; /* background: #36334280; */ opacity: .5;}
-.cm-s-duotone-dark .cm-fat-cursor .CodeMirror-cursor { background: #ffad5c; /* background: #ffad5c80; */ opacity: .5;}
-/* end cursor */
-
-.cm-s-duotone-dark span.cm-atom, .cm-s-duotone-dark span.cm-number, .cm-s-duotone-dark span.cm-keyword, .cm-s-duotone-dark span.cm-variable, .cm-s-duotone-dark span.cm-attribute, .cm-s-duotone-dark span.cm-quote, .cm-s-duotone-dark span.cm-hr, .cm-s-duotone-dark span.cm-link { color: #ffcc99; }
-
-.cm-s-duotone-dark span.cm-property { color: #9a86fd; }
-.cm-s-duotone-dark span.cm-punctuation, .cm-s-duotone-dark span.cm-unit, .cm-s-duotone-dark span.cm-negative { color: #e09142; }
-.cm-s-duotone-dark span.cm-string { color: #ffb870; }
-.cm-s-duotone-dark span.cm-operator { color: #ffad5c; }
-.cm-s-duotone-dark span.cm-positive { color: #6a51e6; }
-
-.cm-s-duotone-dark span.cm-variable-2, .cm-s-duotone-dark span.cm-variable-3, .cm-s-duotone-dark span.cm-string-2, .cm-s-duotone-dark span.cm-url { color: #7a63ee; }
-.cm-s-duotone-dark span.cm-def, .cm-s-duotone-dark span.cm-tag, .cm-s-duotone-dark span.cm-builtin, .cm-s-duotone-dark span.cm-qualifier, .cm-s-duotone-dark span.cm-header, .cm-s-duotone-dark span.cm-em { color: #eeebff; }
-.cm-s-duotone-dark span.cm-bracket, .cm-s-duotone-dark span.cm-comment { color: #6c6783; }
-
-/* using #f00 red for errors, don't think any of the colorscheme variables will stand out enough, ... maybe by giving it a background-color ... */
-.cm-s-duotone-dark span.cm-error, .cm-s-duotone-dark span.cm-invalidchar { color: #f00; }
-
-.cm-s-duotone-dark span.cm-header { font-weight: normal; }
-.cm-s-duotone-dark .CodeMirror-matchingbracket { text-decoration: underline; color: #eeebff !important; }
diff --git a/editable-samples/editor/codemirror/theme/duotone-light.css b/editable-samples/editor/codemirror/theme/duotone-light.css
deleted file mode 100644
index 80203d1..0000000
--- a/editable-samples/editor/codemirror/theme/duotone-light.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Name: DuoTone-Light
-Author: by Bram de Haan, adapted from DuoTone themes by Simurai (http://simurai.com/projects/2016/01/01/duotone-themes)
-
-CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bram de Haan (https://github.com/atelierbram/)
-*/
-
-.cm-s-duotone-light.CodeMirror { background: #faf8f5; color: #b29762; }
-.cm-s-duotone-light div.CodeMirror-selected { background: #e3dcce !important; }
-.cm-s-duotone-light .CodeMirror-gutters { background: #faf8f5; border-right: 0px; }
-.cm-s-duotone-light .CodeMirror-linenumber { color: #cdc4b1; }
-
-/* begin cursor */
-.cm-s-duotone-light .CodeMirror-cursor { border-left: 1px solid #93abdc; /* border-left: 1px solid #93abdc80; */ border-right: .5em solid #93abdc; /* border-right: .5em solid #93abdc80; */ opacity: .5; }
-.cm-s-duotone-light .CodeMirror-activeline-background { background: #e3dcce; /* background: #e3dcce80; */ opacity: .5; }
-.cm-s-duotone-light .cm-fat-cursor .CodeMirror-cursor { background: #93abdc; /* #93abdc80; */ opacity: .5; }
-/* end cursor */
-
-.cm-s-duotone-light span.cm-atom, .cm-s-duotone-light span.cm-number, .cm-s-duotone-light span.cm-keyword, .cm-s-duotone-light span.cm-variable, .cm-s-duotone-light span.cm-attribute, .cm-s-duotone-light span.cm-quote, .cm-s-duotone-light-light span.cm-hr, .cm-s-duotone-light-light span.cm-link { color: #063289; }
-
-.cm-s-duotone-light span.cm-property { color: #b29762; }
-.cm-s-duotone-light span.cm-punctuation, .cm-s-duotone-light span.cm-unit, .cm-s-duotone-light span.cm-negative { color: #063289; }
-.cm-s-duotone-light span.cm-string, .cm-s-duotone-light span.cm-operator { color: #1659df; }
-.cm-s-duotone-light span.cm-positive { color: #896724; }
-
-.cm-s-duotone-light span.cm-variable-2, .cm-s-duotone-light span.cm-variable-3, .cm-s-duotone-light span.cm-string-2, .cm-s-duotone-light span.cm-url { color: #896724; }
-.cm-s-duotone-light span.cm-def, .cm-s-duotone-light span.cm-tag, .cm-s-duotone-light span.cm-builtin, .cm-s-duotone-light span.cm-qualifier, .cm-s-duotone-light span.cm-header, .cm-s-duotone-light span.cm-em { color: #2d2006; }
-.cm-s-duotone-light span.cm-bracket, .cm-s-duotone-light span.cm-comment { color: #b6ad9a; }
-
-/* using #f00 red for errors, don't think any of the colorscheme variables will stand out enough, ... maybe by giving it a background-color ... */
-/* .cm-s-duotone-light span.cm-error { background: #896724; color: #728fcb; } */
-.cm-s-duotone-light span.cm-error, .cm-s-duotone-light span.cm-invalidchar { color: #f00; }
-
-.cm-s-duotone-light span.cm-header { font-weight: normal; }
-.cm-s-duotone-light .CodeMirror-matchingbracket { text-decoration: underline; color: #faf8f5 !important; }
-
diff --git a/editable-samples/editor/codemirror/theme/eclipse.css b/editable-samples/editor/codemirror/theme/eclipse.css
deleted file mode 100644
index 1bde460..0000000
--- a/editable-samples/editor/codemirror/theme/eclipse.css
+++ /dev/null
@@ -1,23 +0,0 @@
-.cm-s-eclipse span.cm-meta { color: #FF1717; }
-.cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; }
-.cm-s-eclipse span.cm-atom { color: #219; }
-.cm-s-eclipse span.cm-number { color: #164; }
-.cm-s-eclipse span.cm-def { color: #00f; }
-.cm-s-eclipse span.cm-variable { color: black; }
-.cm-s-eclipse span.cm-variable-2 { color: #0000C0; }
-.cm-s-eclipse span.cm-variable-3 { color: #0000C0; }
-.cm-s-eclipse span.cm-property { color: black; }
-.cm-s-eclipse span.cm-operator { color: black; }
-.cm-s-eclipse span.cm-comment { color: #3F7F5F; }
-.cm-s-eclipse span.cm-string { color: #2A00FF; }
-.cm-s-eclipse span.cm-string-2 { color: #f50; }
-.cm-s-eclipse span.cm-qualifier { color: #555; }
-.cm-s-eclipse span.cm-builtin { color: #30a; }
-.cm-s-eclipse span.cm-bracket { color: #cc7; }
-.cm-s-eclipse span.cm-tag { color: #170; }
-.cm-s-eclipse span.cm-attribute { color: #00c; }
-.cm-s-eclipse span.cm-link { color: #219; }
-.cm-s-eclipse span.cm-error { color: #f00; }
-
-.cm-s-eclipse .CodeMirror-activeline-background { background: #e8f2ff; }
-.cm-s-eclipse .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; }
diff --git a/editable-samples/editor/codemirror/theme/elegant.css b/editable-samples/editor/codemirror/theme/elegant.css
deleted file mode 100644
index 45b3ea6..0000000
--- a/editable-samples/editor/codemirror/theme/elegant.css
+++ /dev/null
@@ -1,13 +0,0 @@
-.cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom { color: #762; }
-.cm-s-elegant span.cm-comment { color: #262; font-style: italic; line-height: 1em; }
-.cm-s-elegant span.cm-meta { color: #555; font-style: italic; line-height: 1em; }
-.cm-s-elegant span.cm-variable { color: black; }
-.cm-s-elegant span.cm-variable-2 { color: #b11; }
-.cm-s-elegant span.cm-qualifier { color: #555; }
-.cm-s-elegant span.cm-keyword { color: #730; }
-.cm-s-elegant span.cm-builtin { color: #30a; }
-.cm-s-elegant span.cm-link { color: #762; }
-.cm-s-elegant span.cm-error { background-color: #fdd; }
-
-.cm-s-elegant .CodeMirror-activeline-background { background: #e8f2ff; }
-.cm-s-elegant .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; }
diff --git a/editable-samples/editor/codemirror/theme/erlang-dark.css b/editable-samples/editor/codemirror/theme/erlang-dark.css
deleted file mode 100644
index 65fe481..0000000
--- a/editable-samples/editor/codemirror/theme/erlang-dark.css
+++ /dev/null
@@ -1,34 +0,0 @@
-.cm-s-erlang-dark.CodeMirror { background: #002240; color: white; }
-.cm-s-erlang-dark div.CodeMirror-selected { background: #b36539; }
-.cm-s-erlang-dark .CodeMirror-line::selection, .cm-s-erlang-dark .CodeMirror-line > span::selection, .cm-s-erlang-dark .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); }
-.cm-s-erlang-dark .CodeMirror-line::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); }
-.cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
-.cm-s-erlang-dark .CodeMirror-guttermarker { color: white; }
-.cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
-.cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; }
-.cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white; }
-
-.cm-s-erlang-dark span.cm-quote { color: #ccc; }
-.cm-s-erlang-dark span.cm-atom { color: #f133f1; }
-.cm-s-erlang-dark span.cm-attribute { color: #ff80e1; }
-.cm-s-erlang-dark span.cm-bracket { color: #ff9d00; }
-.cm-s-erlang-dark span.cm-builtin { color: #eaa; }
-.cm-s-erlang-dark span.cm-comment { color: #77f; }
-.cm-s-erlang-dark span.cm-def { color: #e7a; }
-.cm-s-erlang-dark span.cm-keyword { color: #ffee80; }
-.cm-s-erlang-dark span.cm-meta { color: #50fefe; }
-.cm-s-erlang-dark span.cm-number { color: #ffd0d0; }
-.cm-s-erlang-dark span.cm-operator { color: #d55; }
-.cm-s-erlang-dark span.cm-property { color: #ccc; }
-.cm-s-erlang-dark span.cm-qualifier { color: #ccc; }
-.cm-s-erlang-dark span.cm-special { color: #ffbbbb; }
-.cm-s-erlang-dark span.cm-string { color: #3ad900; }
-.cm-s-erlang-dark span.cm-string-2 { color: #ccc; }
-.cm-s-erlang-dark span.cm-tag { color: #9effff; }
-.cm-s-erlang-dark span.cm-variable { color: #50fe50; }
-.cm-s-erlang-dark span.cm-variable-2 { color: #e0e; }
-.cm-s-erlang-dark span.cm-variable-3 { color: #ccc; }
-.cm-s-erlang-dark span.cm-error { color: #9d1e15; }
-
-.cm-s-erlang-dark .CodeMirror-activeline-background { background: #013461; }
-.cm-s-erlang-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; }
diff --git a/editable-samples/editor/codemirror/theme/hopscotch.css b/editable-samples/editor/codemirror/theme/hopscotch.css
deleted file mode 100644
index 7d05431..0000000
--- a/editable-samples/editor/codemirror/theme/hopscotch.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
- Name: Hopscotch
- Author: Jan T. Sott
-
- CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
- Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
-
-*/
-
-.cm-s-hopscotch.CodeMirror {background: #322931; color: #d5d3d5;}
-.cm-s-hopscotch div.CodeMirror-selected {background: #433b42 !important;}
-.cm-s-hopscotch .CodeMirror-gutters {background: #322931; border-right: 0px;}
-.cm-s-hopscotch .CodeMirror-linenumber {color: #797379;}
-.cm-s-hopscotch .CodeMirror-cursor {border-left: 1px solid #989498 !important;}
-
-.cm-s-hopscotch span.cm-comment {color: #b33508;}
-.cm-s-hopscotch span.cm-atom {color: #c85e7c;}
-.cm-s-hopscotch span.cm-number {color: #c85e7c;}
-
-.cm-s-hopscotch span.cm-property, .cm-s-hopscotch span.cm-attribute {color: #8fc13e;}
-.cm-s-hopscotch span.cm-keyword {color: #dd464c;}
-.cm-s-hopscotch span.cm-string {color: #fdcc59;}
-
-.cm-s-hopscotch span.cm-variable {color: #8fc13e;}
-.cm-s-hopscotch span.cm-variable-2 {color: #1290bf;}
-.cm-s-hopscotch span.cm-def {color: #fd8b19;}
-.cm-s-hopscotch span.cm-error {background: #dd464c; color: #989498;}
-.cm-s-hopscotch span.cm-bracket {color: #d5d3d5;}
-.cm-s-hopscotch span.cm-tag {color: #dd464c;}
-.cm-s-hopscotch span.cm-link {color: #c85e7c;}
-
-.cm-s-hopscotch .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
-.cm-s-hopscotch .CodeMirror-activeline-background { background: #302020; }
diff --git a/editable-samples/editor/codemirror/theme/icecoder.css b/editable-samples/editor/codemirror/theme/icecoder.css
deleted file mode 100644
index ffebaf2..0000000
--- a/editable-samples/editor/codemirror/theme/icecoder.css
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-ICEcoder default theme by Matt Pass, used in code editor available at https://icecoder.net
-*/
-
-.cm-s-icecoder { color: #666; background: #1d1d1b; }
-
-.cm-s-icecoder span.cm-keyword { color: #eee; font-weight:bold; } /* off-white 1 */
-.cm-s-icecoder span.cm-atom { color: #e1c76e; } /* yellow */
-.cm-s-icecoder span.cm-number { color: #6cb5d9; } /* blue */
-.cm-s-icecoder span.cm-def { color: #b9ca4a; } /* green */
-
-.cm-s-icecoder span.cm-variable { color: #6cb5d9; } /* blue */
-.cm-s-icecoder span.cm-variable-2 { color: #cc1e5c; } /* pink */
-.cm-s-icecoder span.cm-variable-3 { color: #f9602c; } /* orange */
-
-.cm-s-icecoder span.cm-property { color: #eee; } /* off-white 1 */
-.cm-s-icecoder span.cm-operator { color: #9179bb; } /* purple */
-.cm-s-icecoder span.cm-comment { color: #97a3aa; } /* grey-blue */
-
-.cm-s-icecoder span.cm-string { color: #b9ca4a; } /* green */
-.cm-s-icecoder span.cm-string-2 { color: #6cb5d9; } /* blue */
-
-.cm-s-icecoder span.cm-meta { color: #555; } /* grey */
-
-.cm-s-icecoder span.cm-qualifier { color: #555; } /* grey */
-.cm-s-icecoder span.cm-builtin { color: #214e7b; } /* bright blue */
-.cm-s-icecoder span.cm-bracket { color: #cc7; } /* grey-yellow */
-
-.cm-s-icecoder span.cm-tag { color: #e8e8e8; } /* off-white 2 */
-.cm-s-icecoder span.cm-attribute { color: #099; } /* teal */
-
-.cm-s-icecoder span.cm-header { color: #6a0d6a; } /* purple-pink */
-.cm-s-icecoder span.cm-quote { color: #186718; } /* dark green */
-.cm-s-icecoder span.cm-hr { color: #888; } /* mid-grey */
-.cm-s-icecoder span.cm-link { color: #e1c76e; } /* yellow */
-.cm-s-icecoder span.cm-error { color: #d00; } /* red */
-
-.cm-s-icecoder .CodeMirror-cursor { border-left: 1px solid white; }
-.cm-s-icecoder div.CodeMirror-selected { color: #fff; background: #037; }
-.cm-s-icecoder .CodeMirror-gutters { background: #1d1d1b; min-width: 41px; border-right: 0; }
-.cm-s-icecoder .CodeMirror-linenumber { color: #555; cursor: default; }
-.cm-s-icecoder .CodeMirror-matchingbracket { color: #fff !important; background: #555 !important; }
-.cm-s-icecoder .CodeMirror-activeline-background { background: #000; }
diff --git a/editable-samples/editor/codemirror/theme/isotope.css b/editable-samples/editor/codemirror/theme/isotope.css
deleted file mode 100644
index d0d6263..0000000
--- a/editable-samples/editor/codemirror/theme/isotope.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
- Name: Isotope
- Author: David Desandro / Jan T. Sott
-
- CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
- Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
-
-*/
-
-.cm-s-isotope.CodeMirror {background: #000000; color: #e0e0e0;}
-.cm-s-isotope div.CodeMirror-selected {background: #404040 !important;}
-.cm-s-isotope .CodeMirror-gutters {background: #000000; border-right: 0px;}
-.cm-s-isotope .CodeMirror-linenumber {color: #808080;}
-.cm-s-isotope .CodeMirror-cursor {border-left: 1px solid #c0c0c0 !important;}
-
-.cm-s-isotope span.cm-comment {color: #3300ff;}
-.cm-s-isotope span.cm-atom {color: #cc00ff;}
-.cm-s-isotope span.cm-number {color: #cc00ff;}
-
-.cm-s-isotope span.cm-property, .cm-s-isotope span.cm-attribute {color: #33ff00;}
-.cm-s-isotope span.cm-keyword {color: #ff0000;}
-.cm-s-isotope span.cm-string {color: #ff0099;}
-
-.cm-s-isotope span.cm-variable {color: #33ff00;}
-.cm-s-isotope span.cm-variable-2 {color: #0066ff;}
-.cm-s-isotope span.cm-def {color: #ff9900;}
-.cm-s-isotope span.cm-error {background: #ff0000; color: #c0c0c0;}
-.cm-s-isotope span.cm-bracket {color: #e0e0e0;}
-.cm-s-isotope span.cm-tag {color: #ff0000;}
-.cm-s-isotope span.cm-link {color: #cc00ff;}
-
-.cm-s-isotope .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
-.cm-s-isotope .CodeMirror-activeline-background { background: #202020; }
diff --git a/editable-samples/editor/codemirror/theme/lesser-dark.css b/editable-samples/editor/codemirror/theme/lesser-dark.css
deleted file mode 100644
index 690c183..0000000
--- a/editable-samples/editor/codemirror/theme/lesser-dark.css
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-http://lesscss.org/ dark theme
-Ported to CodeMirror by Peter Kroon
-*/
-.cm-s-lesser-dark {
- line-height: 1.3em;
-}
-.cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; }
-.cm-s-lesser-dark div.CodeMirror-selected { background: #45443B; } /* 33322B*/
-.cm-s-lesser-dark .CodeMirror-line::selection, .cm-s-lesser-dark .CodeMirror-line > span::selection, .cm-s-lesser-dark .CodeMirror-line > span > span::selection { background: rgba(69, 68, 59, .99); }
-.cm-s-lesser-dark .CodeMirror-line::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(69, 68, 59, .99); }
-.cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white; }
-.cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/
-
-.cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
-
-.cm-s-lesser-dark .CodeMirror-gutters { background: #262626; border-right:1px solid #aaa; }
-.cm-s-lesser-dark .CodeMirror-guttermarker { color: #599eff; }
-.cm-s-lesser-dark .CodeMirror-guttermarker-subtle { color: #777; }
-.cm-s-lesser-dark .CodeMirror-linenumber { color: #777; }
-
-.cm-s-lesser-dark span.cm-header { color: #a0a; }
-.cm-s-lesser-dark span.cm-quote { color: #090; }
-.cm-s-lesser-dark span.cm-keyword { color: #599eff; }
-.cm-s-lesser-dark span.cm-atom { color: #C2B470; }
-.cm-s-lesser-dark span.cm-number { color: #B35E4D; }
-.cm-s-lesser-dark span.cm-def { color: white; }
-.cm-s-lesser-dark span.cm-variable { color:#D9BF8C; }
-.cm-s-lesser-dark span.cm-variable-2 { color: #669199; }
-.cm-s-lesser-dark span.cm-variable-3 { color: white; }
-.cm-s-lesser-dark span.cm-property { color: #92A75C; }
-.cm-s-lesser-dark span.cm-operator { color: #92A75C; }
-.cm-s-lesser-dark span.cm-comment { color: #666; }
-.cm-s-lesser-dark span.cm-string { color: #BCD279; }
-.cm-s-lesser-dark span.cm-string-2 { color: #f50; }
-.cm-s-lesser-dark span.cm-meta { color: #738C73; }
-.cm-s-lesser-dark span.cm-qualifier { color: #555; }
-.cm-s-lesser-dark span.cm-builtin { color: #ff9e59; }
-.cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; }
-.cm-s-lesser-dark span.cm-tag { color: #669199; }
-.cm-s-lesser-dark span.cm-attribute { color: #00c; }
-.cm-s-lesser-dark span.cm-hr { color: #999; }
-.cm-s-lesser-dark span.cm-link { color: #00c; }
-.cm-s-lesser-dark span.cm-error { color: #9d1e15; }
-
-.cm-s-lesser-dark .CodeMirror-activeline-background { background: #3C3A3A; }
-.cm-s-lesser-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; }
diff --git a/editable-samples/editor/codemirror/theme/liquibyte.css b/editable-samples/editor/codemirror/theme/liquibyte.css
deleted file mode 100644
index 9db8bde..0000000
--- a/editable-samples/editor/codemirror/theme/liquibyte.css
+++ /dev/null
@@ -1,95 +0,0 @@
-.cm-s-liquibyte.CodeMirror {
- background-color: #000;
- color: #fff;
- line-height: 1.2em;
- font-size: 1em;
-}
-.cm-s-liquibyte .CodeMirror-focused .cm-matchhighlight {
- text-decoration: underline;
- text-decoration-color: #0f0;
- text-decoration-style: wavy;
-}
-.cm-s-liquibyte .cm-trailingspace {
- text-decoration: line-through;
- text-decoration-color: #f00;
- text-decoration-style: dotted;
-}
-.cm-s-liquibyte .cm-tab {
- text-decoration: line-through;
- text-decoration-color: #404040;
- text-decoration-style: dotted;
-}
-.cm-s-liquibyte .CodeMirror-gutters { background-color: #262626; border-right: 1px solid #505050; padding-right: 0.8em; }
-.cm-s-liquibyte .CodeMirror-gutter-elt div { font-size: 1.2em; }
-.cm-s-liquibyte .CodeMirror-guttermarker { }
-.cm-s-liquibyte .CodeMirror-guttermarker-subtle { }
-.cm-s-liquibyte .CodeMirror-linenumber { color: #606060; padding-left: 0; }
-.cm-s-liquibyte .CodeMirror-cursor { border-left: 1px solid #eee; }
-
-.cm-s-liquibyte span.cm-comment { color: #008000; }
-.cm-s-liquibyte span.cm-def { color: #ffaf40; font-weight: bold; }
-.cm-s-liquibyte span.cm-keyword { color: #c080ff; font-weight: bold; }
-.cm-s-liquibyte span.cm-builtin { color: #ffaf40; font-weight: bold; }
-.cm-s-liquibyte span.cm-variable { color: #5967ff; font-weight: bold; }
-.cm-s-liquibyte span.cm-string { color: #ff8000; }
-.cm-s-liquibyte span.cm-number { color: #0f0; font-weight: bold; }
-.cm-s-liquibyte span.cm-atom { color: #bf3030; font-weight: bold; }
-
-.cm-s-liquibyte span.cm-variable-2 { color: #007f7f; font-weight: bold; }
-.cm-s-liquibyte span.cm-variable-3 { color: #c080ff; font-weight: bold; }
-.cm-s-liquibyte span.cm-property { color: #999; font-weight: bold; }
-.cm-s-liquibyte span.cm-operator { color: #fff; }
-
-.cm-s-liquibyte span.cm-meta { color: #0f0; }
-.cm-s-liquibyte span.cm-qualifier { color: #fff700; font-weight: bold; }
-.cm-s-liquibyte span.cm-bracket { color: #cc7; }
-.cm-s-liquibyte span.cm-tag { color: #ff0; font-weight: bold; }
-.cm-s-liquibyte span.cm-attribute { color: #c080ff; font-weight: bold; }
-.cm-s-liquibyte span.cm-error { color: #f00; }
-
-.cm-s-liquibyte div.CodeMirror-selected { background-color: rgba(255, 0, 0, 0.25); }
-
-.cm-s-liquibyte span.cm-compilation { background-color: rgba(255, 255, 255, 0.12); }
-
-.cm-s-liquibyte .CodeMirror-activeline-background { background-color: rgba(0, 255, 0, 0.15); }
-
-/* Default styles for common addons */
-.cm-s-liquibyte .CodeMirror span.CodeMirror-matchingbracket { color: #0f0; font-weight: bold; }
-.cm-s-liquibyte .CodeMirror span.CodeMirror-nonmatchingbracket { color: #f00; font-weight: bold; }
-.CodeMirror-matchingtag { background-color: rgba(150, 255, 0, .3); }
-/* Scrollbars */
-/* Simple */
-.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div:hover, div.CodeMirror-simplescroll-vertical div:hover {
- background-color: rgba(80, 80, 80, .7);
-}
-.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div, div.CodeMirror-simplescroll-vertical div {
- background-color: rgba(80, 80, 80, .3);
- border: 1px solid #404040;
- border-radius: 5px;
-}
-.cm-s-liquibyte div.CodeMirror-simplescroll-vertical div {
- border-top: 1px solid #404040;
- border-bottom: 1px solid #404040;
-}
-.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div {
- border-left: 1px solid #404040;
- border-right: 1px solid #404040;
-}
-.cm-s-liquibyte div.CodeMirror-simplescroll-vertical {
- background-color: #262626;
-}
-.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal {
- background-color: #262626;
- border-top: 1px solid #404040;
-}
-/* Overlay */
-.cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div, div.CodeMirror-overlayscroll-vertical div {
- background-color: #404040;
- border-radius: 5px;
-}
-.cm-s-liquibyte div.CodeMirror-overlayscroll-vertical div {
- border: 1px solid #404040;
-}
-.cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div {
- border: 1px solid #404040;
-}
diff --git a/editable-samples/editor/codemirror/theme/material.css b/editable-samples/editor/codemirror/theme/material.css
deleted file mode 100644
index 01d8679..0000000
--- a/editable-samples/editor/codemirror/theme/material.css
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-
- Name: material
- Author: Michael Kaminsky (http://github.com/mkaminsky11)
-
- Original material color scheme by Mattia Astorino (https://github.com/equinusocio/material-theme)
-
-*/
-
-.cm-s-material.CodeMirror {
- background-color: #263238;
- color: rgba(233, 237, 237, 1);
-}
-.cm-s-material .CodeMirror-gutters {
- background: #263238;
- color: rgb(83,127,126);
- border: none;
-}
-.cm-s-material .CodeMirror-guttermarker, .cm-s-material .CodeMirror-guttermarker-subtle, .cm-s-material .CodeMirror-linenumber { color: rgb(83,127,126); }
-.cm-s-material .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }
-.cm-s-material div.CodeMirror-selected { background: rgba(255, 255, 255, 0.15); }
-.cm-s-material.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }
-.cm-s-material .CodeMirror-line::selection, .cm-s-material .CodeMirror-line > span::selection, .cm-s-material .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }
-.cm-s-material .CodeMirror-line::-moz-selection, .cm-s-material .CodeMirror-line > span::-moz-selection, .cm-s-material .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }
-
-.cm-s-material .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0); }
-.cm-s-material .cm-keyword { color: rgba(199, 146, 234, 1); }
-.cm-s-material .cm-operator { color: rgba(233, 237, 237, 1); }
-.cm-s-material .cm-variable-2 { color: #80CBC4; }
-.cm-s-material .cm-variable-3 { color: #82B1FF; }
-.cm-s-material .cm-builtin { color: #DECB6B; }
-.cm-s-material .cm-atom { color: #F77669; }
-.cm-s-material .cm-number { color: #F77669; }
-.cm-s-material .cm-def { color: rgba(233, 237, 237, 1); }
-.cm-s-material .cm-string { color: #C3E88D; }
-.cm-s-material .cm-string-2 { color: #80CBC4; }
-.cm-s-material .cm-comment { color: #546E7A; }
-.cm-s-material .cm-variable { color: #82B1FF; }
-.cm-s-material .cm-tag { color: #80CBC4; }
-.cm-s-material .cm-meta { color: #80CBC4; }
-.cm-s-material .cm-attribute { color: #FFCB6B; }
-.cm-s-material .cm-property { color: #80CBAE; }
-.cm-s-material .cm-qualifier { color: #DECB6B; }
-.cm-s-material .cm-variable-3 { color: #DECB6B; }
-.cm-s-material .cm-tag { color: rgba(255, 83, 112, 1); }
-.cm-s-material .cm-error {
- color: rgba(255, 255, 255, 1.0);
- background-color: #EC5F67;
-}
-.cm-s-material .CodeMirror-matchingbracket {
- text-decoration: underline;
- color: white !important;
-}
diff --git a/editable-samples/editor/codemirror/theme/mbo.css b/editable-samples/editor/codemirror/theme/mbo.css
deleted file mode 100644
index e164fcf..0000000
--- a/editable-samples/editor/codemirror/theme/mbo.css
+++ /dev/null
@@ -1,37 +0,0 @@
-/****************************************************************/
-/* Based on mbonaci's Brackets mbo theme */
-/* https://github.com/mbonaci/global/blob/master/Mbo.tmTheme */
-/* Create your own: http://tmtheme-editor.herokuapp.com */
-/****************************************************************/
-
-.cm-s-mbo.CodeMirror { background: #2c2c2c; color: #ffffec; }
-.cm-s-mbo div.CodeMirror-selected { background: #716C62; }
-.cm-s-mbo .CodeMirror-line::selection, .cm-s-mbo .CodeMirror-line > span::selection, .cm-s-mbo .CodeMirror-line > span > span::selection { background: rgba(113, 108, 98, .99); }
-.cm-s-mbo .CodeMirror-line::-moz-selection, .cm-s-mbo .CodeMirror-line > span::-moz-selection, .cm-s-mbo .CodeMirror-line > span > span::-moz-selection { background: rgba(113, 108, 98, .99); }
-.cm-s-mbo .CodeMirror-gutters { background: #4e4e4e; border-right: 0px; }
-.cm-s-mbo .CodeMirror-guttermarker { color: white; }
-.cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; }
-.cm-s-mbo .CodeMirror-linenumber { color: #dadada; }
-.cm-s-mbo .CodeMirror-cursor { border-left: 1px solid #ffffec; }
-
-.cm-s-mbo span.cm-comment { color: #95958a; }
-.cm-s-mbo span.cm-atom { color: #00a8c6; }
-.cm-s-mbo span.cm-number { color: #00a8c6; }
-
-.cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute { color: #9ddfe9; }
-.cm-s-mbo span.cm-keyword { color: #ffb928; }
-.cm-s-mbo span.cm-string { color: #ffcf6c; }
-.cm-s-mbo span.cm-string.cm-property { color: #ffffec; }
-
-.cm-s-mbo span.cm-variable { color: #ffffec; }
-.cm-s-mbo span.cm-variable-2 { color: #00a8c6; }
-.cm-s-mbo span.cm-def { color: #ffffec; }
-.cm-s-mbo span.cm-bracket { color: #fffffc; font-weight: bold; }
-.cm-s-mbo span.cm-tag { color: #9ddfe9; }
-.cm-s-mbo span.cm-link { color: #f54b07; }
-.cm-s-mbo span.cm-error { border-bottom: #636363; color: #ffffec; }
-.cm-s-mbo span.cm-qualifier { color: #ffffec; }
-
-.cm-s-mbo .CodeMirror-activeline-background { background: #494b41; }
-.cm-s-mbo .CodeMirror-matchingbracket { color: #ffb928 !important; }
-.cm-s-mbo .CodeMirror-matchingtag { background: rgba(255, 255, 255, .37); }
diff --git a/editable-samples/editor/codemirror/theme/mdn-like.css b/editable-samples/editor/codemirror/theme/mdn-like.css
deleted file mode 100644
index f325d45..0000000
--- a/editable-samples/editor/codemirror/theme/mdn-like.css
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- MDN-LIKE Theme - Mozilla
- Ported to CodeMirror by Peter Kroon
- Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
- GitHub: @peterkroon
-
- The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation
-
-*/
-.cm-s-mdn-like.CodeMirror { color: #999; background-color: #fff; }
-.cm-s-mdn-like div.CodeMirror-selected { background: #cfc; }
-.cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line > span::selection, .cm-s-mdn-like .CodeMirror-line > span > span::selection { background: #cfc; }
-.cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span > span::-moz-selection { background: #cfc; }
-
-.cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px solid rgba(0,83,159,0.65); color: #333; }
-.cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; padding-left: 8px; }
-.cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; }
-
-.cm-s-mdn-like .cm-keyword { color: #6262FF; }
-.cm-s-mdn-like .cm-atom { color: #F90; }
-.cm-s-mdn-like .cm-number { color: #ca7841; }
-.cm-s-mdn-like .cm-def { color: #8DA6CE; }
-.cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag { color: #690; }
-.cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def { color: #07a; }
-
-.cm-s-mdn-like .cm-variable { color: #07a; }
-.cm-s-mdn-like .cm-property { color: #905; }
-.cm-s-mdn-like .cm-qualifier { color: #690; }
-
-.cm-s-mdn-like .cm-operator { color: #cda869; }
-.cm-s-mdn-like .cm-comment { color:#777; font-weight:normal; }
-.cm-s-mdn-like .cm-string { color:#07a; font-style:italic; }
-.cm-s-mdn-like .cm-string-2 { color:#bd6b18; } /*?*/
-.cm-s-mdn-like .cm-meta { color: #000; } /*?*/
-.cm-s-mdn-like .cm-builtin { color: #9B7536; } /*?*/
-.cm-s-mdn-like .cm-tag { color: #997643; }
-.cm-s-mdn-like .cm-attribute { color: #d6bb6d; } /*?*/
-.cm-s-mdn-like .cm-header { color: #FF6400; }
-.cm-s-mdn-like .cm-hr { color: #AEAEAE; }
-.cm-s-mdn-like .cm-link { color:#ad9361; font-style:italic; text-decoration:none; }
-.cm-s-mdn-like .cm-error { border-bottom: 1px solid red; }
-
-div.cm-s-mdn-like .CodeMirror-activeline-background { background: #efefff; }
-div.cm-s-mdn-like span.CodeMirror-matchingbracket { outline:1px solid grey; color: inherit; }
-
-.cm-s-mdn-like.CodeMirror { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=); }
diff --git a/editable-samples/editor/codemirror/theme/midnight.css b/editable-samples/editor/codemirror/theme/midnight.css
deleted file mode 100644
index e41f105..0000000
--- a/editable-samples/editor/codemirror/theme/midnight.css
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */
-
-/**/
-.cm-s-midnight span.CodeMirror-matchhighlight { background: #494949; }
-.cm-s-midnight.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; }
-
-/**/
-.cm-s-midnight .CodeMirror-activeline-background { background: #253540; }
-
-.cm-s-midnight.CodeMirror {
- background: #0F192A;
- color: #D1EDFF;
-}
-
-.cm-s-midnight.CodeMirror { border-top: 1px solid black; border-bottom: 1px solid black; }
-
-.cm-s-midnight div.CodeMirror-selected { background: #314D67; }
-.cm-s-midnight .CodeMirror-line::selection, .cm-s-midnight .CodeMirror-line > span::selection, .cm-s-midnight .CodeMirror-line > span > span::selection { background: rgba(49, 77, 103, .99); }
-.cm-s-midnight .CodeMirror-line::-moz-selection, .cm-s-midnight .CodeMirror-line > span::-moz-selection, .cm-s-midnight .CodeMirror-line > span > span::-moz-selection { background: rgba(49, 77, 103, .99); }
-.cm-s-midnight .CodeMirror-gutters { background: #0F192A; border-right: 1px solid; }
-.cm-s-midnight .CodeMirror-guttermarker { color: white; }
-.cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
-.cm-s-midnight .CodeMirror-linenumber { color: #D0D0D0; }
-.cm-s-midnight .CodeMirror-cursor { border-left: 1px solid #F8F8F0; }
-
-.cm-s-midnight span.cm-comment { color: #428BDD; }
-.cm-s-midnight span.cm-atom { color: #AE81FF; }
-.cm-s-midnight span.cm-number { color: #D1EDFF; }
-
-.cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute { color: #A6E22E; }
-.cm-s-midnight span.cm-keyword { color: #E83737; }
-.cm-s-midnight span.cm-string { color: #1DC116; }
-
-.cm-s-midnight span.cm-variable { color: #FFAA3E; }
-.cm-s-midnight span.cm-variable-2 { color: #FFAA3E; }
-.cm-s-midnight span.cm-def { color: #4DD; }
-.cm-s-midnight span.cm-bracket { color: #D1EDFF; }
-.cm-s-midnight span.cm-tag { color: #449; }
-.cm-s-midnight span.cm-link { color: #AE81FF; }
-.cm-s-midnight span.cm-error { background: #F92672; color: #F8F8F0; }
-
-.cm-s-midnight .CodeMirror-matchingbracket {
- text-decoration: underline;
- color: white !important;
-}
diff --git a/editable-samples/editor/codemirror/theme/monokai.css b/editable-samples/editor/codemirror/theme/monokai.css
deleted file mode 100644
index 7c8a4c5..0000000
--- a/editable-samples/editor/codemirror/theme/monokai.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Based on Sublime Text's Monokai theme */
-
-.cm-s-monokai.CodeMirror { background: #272822; color: #f8f8f2; }
-.cm-s-monokai div.CodeMirror-selected { background: #49483E; }
-.cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line > span::selection, .cm-s-monokai .CodeMirror-line > span > span::selection { background: rgba(73, 72, 62, .99); }
-.cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai .CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line > span > span::-moz-selection { background: rgba(73, 72, 62, .99); }
-.cm-s-monokai .CodeMirror-gutters { background: #272822; border-right: 0px; }
-.cm-s-monokai .CodeMirror-guttermarker { color: white; }
-.cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
-.cm-s-monokai .CodeMirror-linenumber { color: #d0d0d0; }
-.cm-s-monokai .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }
-
-.cm-s-monokai span.cm-comment { color: #75715e; }
-.cm-s-monokai span.cm-atom { color: #ae81ff; }
-.cm-s-monokai span.cm-number { color: #ae81ff; }
-
-.cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute { color: #a6e22e; }
-.cm-s-monokai span.cm-keyword { color: #f92672; }
-.cm-s-monokai span.cm-builtin { color: #66d9ef; }
-.cm-s-monokai span.cm-string { color: #e6db74; }
-
-.cm-s-monokai span.cm-variable { color: #f8f8f2; }
-.cm-s-monokai span.cm-variable-2 { color: #9effff; }
-.cm-s-monokai span.cm-variable-3 { color: #66d9ef; }
-.cm-s-monokai span.cm-def { color: #fd971f; }
-.cm-s-monokai span.cm-bracket { color: #f8f8f2; }
-.cm-s-monokai span.cm-tag { color: #f92672; }
-.cm-s-monokai span.cm-header { color: #ae81ff; }
-.cm-s-monokai span.cm-link { color: #ae81ff; }
-.cm-s-monokai span.cm-error { background: #f92672; color: #f8f8f0; }
-
-.cm-s-monokai .CodeMirror-activeline-background { background: #373831; }
-.cm-s-monokai .CodeMirror-matchingbracket {
- text-decoration: underline;
- color: white !important;
-}
diff --git a/editable-samples/editor/codemirror/theme/neat.css b/editable-samples/editor/codemirror/theme/neat.css
deleted file mode 100644
index 4267b1a..0000000
--- a/editable-samples/editor/codemirror/theme/neat.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.cm-s-neat span.cm-comment { color: #a86; }
-.cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; }
-.cm-s-neat span.cm-string { color: #a22; }
-.cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; }
-.cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; }
-.cm-s-neat span.cm-variable { color: black; }
-.cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; }
-.cm-s-neat span.cm-meta { color: #555; }
-.cm-s-neat span.cm-link { color: #3a3; }
-
-.cm-s-neat .CodeMirror-activeline-background { background: #e8f2ff; }
-.cm-s-neat .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; }
diff --git a/editable-samples/editor/codemirror/theme/neo.css b/editable-samples/editor/codemirror/theme/neo.css
deleted file mode 100644
index b28d5c6..0000000
--- a/editable-samples/editor/codemirror/theme/neo.css
+++ /dev/null
@@ -1,43 +0,0 @@
-/* neo theme for codemirror */
-
-/* Color scheme */
-
-.cm-s-neo.CodeMirror {
- background-color:#ffffff;
- color:#2e383c;
- line-height:1.4375;
-}
-.cm-s-neo .cm-comment { color:#75787b; }
-.cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; }
-.cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; }
-.cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; }
-.cm-s-neo .cm-string { color:#b35e14; }
-.cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; }
-
-
-/* Editor styling */
-
-.cm-s-neo pre {
- padding:0;
-}
-
-.cm-s-neo .CodeMirror-gutters {
- border:none;
- border-right:10px solid transparent;
- background-color:transparent;
-}
-
-.cm-s-neo .CodeMirror-linenumber {
- padding:0;
- color:#e0e2e5;
-}
-
-.cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; }
-.cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; }
-
-.cm-s-neo .CodeMirror-cursor {
- width: auto;
- border: 0;
- background: rgba(155,157,162,0.37);
- z-index: 1;
-}
diff --git a/editable-samples/editor/codemirror/theme/night.css b/editable-samples/editor/codemirror/theme/night.css
deleted file mode 100644
index fd4e561..0000000
--- a/editable-samples/editor/codemirror/theme/night.css
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Loosely based on the Midnight Textmate theme */
-
-.cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; }
-.cm-s-night div.CodeMirror-selected { background: #447; }
-.cm-s-night .CodeMirror-line::selection, .cm-s-night .CodeMirror-line > span::selection, .cm-s-night .CodeMirror-line > span > span::selection { background: rgba(68, 68, 119, .99); }
-.cm-s-night .CodeMirror-line::-moz-selection, .cm-s-night .CodeMirror-line > span::-moz-selection, .cm-s-night .CodeMirror-line > span > span::-moz-selection { background: rgba(68, 68, 119, .99); }
-.cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
-.cm-s-night .CodeMirror-guttermarker { color: white; }
-.cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; }
-.cm-s-night .CodeMirror-linenumber { color: #f8f8f8; }
-.cm-s-night .CodeMirror-cursor { border-left: 1px solid white; }
-
-.cm-s-night span.cm-comment { color: #8900d1; }
-.cm-s-night span.cm-atom { color: #845dc4; }
-.cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; }
-.cm-s-night span.cm-keyword { color: #599eff; }
-.cm-s-night span.cm-string { color: #37f14a; }
-.cm-s-night span.cm-meta { color: #7678e2; }
-.cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; }
-.cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; }
-.cm-s-night span.cm-bracket { color: #8da6ce; }
-.cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; }
-.cm-s-night span.cm-link { color: #845dc4; }
-.cm-s-night span.cm-error { color: #9d1e15; }
-
-.cm-s-night .CodeMirror-activeline-background { background: #1C005A; }
-.cm-s-night .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; }
diff --git a/editable-samples/editor/codemirror/theme/panda-syntax.css b/editable-samples/editor/codemirror/theme/panda-syntax.css
deleted file mode 100644
index c93b2ea..0000000
--- a/editable-samples/editor/codemirror/theme/panda-syntax.css
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- Name: Panda Syntax
- Author: Siamak Mokhtari (http://github.com/siamak/)
- CodeMirror template by Siamak Mokhtari (https://github.com/siamak/atom-panda-syntax)
-*/
-.cm-s-panda-syntax {
- background: #292A2B;
- color: #E6E6E6;
- line-height: 1.5;
- font-family: 'Operator Mono', 'Source Sans Pro', Menlo, Monaco, Consolas, Courier New, monospace;
-}
-.cm-s-panda-syntax .CodeMirror-cursor { border-color: #ff2c6d; }
-.cm-s-panda-syntax .CodeMirror-activeline-background {
- background: rgba(99, 123, 156, 0.1);
-}
-.cm-s-panda-syntax .CodeMirror-selected {
- background: #FFF;
-}
-.cm-s-panda-syntax .cm-comment {
- font-style: italic;
- color: #676B79;
-}
-.cm-s-panda-syntax .cm-operator {
- color: #f3f3f3;
-}
-.cm-s-panda-syntax .cm-string {
- color: #19F9D8;
-}
-.cm-s-panda-syntax .cm-string-2 {
- color: #FFB86C;
-}
-
-.cm-s-panda-syntax .cm-tag {
- color: #ff2c6d;
-}
-.cm-s-panda-syntax .cm-meta {
- color: #b084eb;
-}
-
-.cm-s-panda-syntax .cm-number {
- color: #FFB86C;
-}
-.cm-s-panda-syntax .cm-atom {
- color: #ff2c6d;
-}
-.cm-s-panda-syntax .cm-keyword {
- color: #FF75B5;
-}
-.cm-s-panda-syntax .cm-variable {
- color: #ffb86c;
-}
-.cm-s-panda-syntax .cm-variable-2 {
- color: #ff9ac1;
-}
-.cm-s-panda-syntax .cm-variable-3 {
- color: #ff9ac1;
-}
-
-.cm-s-panda-syntax .cm-def {
- color: #e6e6e6;
-}
-.cm-s-panda-syntax .cm-property {
- color: #f3f3f3;
-}
-.cm-s-panda-syntax .cm-unit {
- color: #ffb86c;
-}
-
-.cm-s-panda-syntax .cm-attribute {
- color: #ffb86c;
-}
-
-.cm-s-panda-syntax .CodeMirror-matchingbracket {
- border-bottom: 1px dotted #19F9D8;
- padding-bottom: 2px;
- color: #e6e6e6;
-}
-.cm-s-panda-syntax .CodeMirror-gutters {
- background: #292a2b;
- border-right-color: rgba(255, 255, 255, 0.1);
-}
-.cm-s-panda-syntax .CodeMirror-linenumber {
- color: #e6e6e6;
- opacity: 0.6;
-}
diff --git a/editable-samples/editor/codemirror/theme/paraiso-dark.css b/editable-samples/editor/codemirror/theme/paraiso-dark.css
deleted file mode 100644
index aa9d207..0000000
--- a/editable-samples/editor/codemirror/theme/paraiso-dark.css
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- Name: Paraíso (Dark)
- Author: Jan T. Sott
-
- Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror)
- Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
-
-*/
-
-.cm-s-paraiso-dark.CodeMirror { background: #2f1e2e; color: #b9b6b0; }
-.cm-s-paraiso-dark div.CodeMirror-selected { background: #41323f; }
-.cm-s-paraiso-dark .CodeMirror-line::selection, .cm-s-paraiso-dark .CodeMirror-line > span::selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::selection { background: rgba(65, 50, 63, .99); }
-.cm-s-paraiso-dark .CodeMirror-line::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(65, 50, 63, .99); }
-.cm-s-paraiso-dark .CodeMirror-gutters { background: #2f1e2e; border-right: 0px; }
-.cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; }
-.cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; }
-.cm-s-paraiso-dark .CodeMirror-linenumber { color: #776e71; }
-.cm-s-paraiso-dark .CodeMirror-cursor { border-left: 1px solid #8d8687; }
-
-.cm-s-paraiso-dark span.cm-comment { color: #e96ba8; }
-.cm-s-paraiso-dark span.cm-atom { color: #815ba4; }
-.cm-s-paraiso-dark span.cm-number { color: #815ba4; }
-
-.cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute { color: #48b685; }
-.cm-s-paraiso-dark span.cm-keyword { color: #ef6155; }
-.cm-s-paraiso-dark span.cm-string { color: #fec418; }
-
-.cm-s-paraiso-dark span.cm-variable { color: #48b685; }
-.cm-s-paraiso-dark span.cm-variable-2 { color: #06b6ef; }
-.cm-s-paraiso-dark span.cm-def { color: #f99b15; }
-.cm-s-paraiso-dark span.cm-bracket { color: #b9b6b0; }
-.cm-s-paraiso-dark span.cm-tag { color: #ef6155; }
-.cm-s-paraiso-dark span.cm-link { color: #815ba4; }
-.cm-s-paraiso-dark span.cm-error { background: #ef6155; color: #8d8687; }
-
-.cm-s-paraiso-dark .CodeMirror-activeline-background { background: #4D344A; }
-.cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/editable-samples/editor/codemirror/theme/paraiso-light.css b/editable-samples/editor/codemirror/theme/paraiso-light.css
deleted file mode 100644
index ae0c755..0000000
--- a/editable-samples/editor/codemirror/theme/paraiso-light.css
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- Name: Paraíso (Light)
- Author: Jan T. Sott
-
- Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror)
- Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
-
-*/
-
-.cm-s-paraiso-light.CodeMirror { background: #e7e9db; color: #41323f; }
-.cm-s-paraiso-light div.CodeMirror-selected { background: #b9b6b0; }
-.cm-s-paraiso-light .CodeMirror-line::selection, .cm-s-paraiso-light .CodeMirror-line > span::selection, .cm-s-paraiso-light .CodeMirror-line > span > span::selection { background: #b9b6b0; }
-.cm-s-paraiso-light .CodeMirror-line::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span > span::-moz-selection { background: #b9b6b0; }
-.cm-s-paraiso-light .CodeMirror-gutters { background: #e7e9db; border-right: 0px; }
-.cm-s-paraiso-light .CodeMirror-guttermarker { color: black; }
-.cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; }
-.cm-s-paraiso-light .CodeMirror-linenumber { color: #8d8687; }
-.cm-s-paraiso-light .CodeMirror-cursor { border-left: 1px solid #776e71; }
-
-.cm-s-paraiso-light span.cm-comment { color: #e96ba8; }
-.cm-s-paraiso-light span.cm-atom { color: #815ba4; }
-.cm-s-paraiso-light span.cm-number { color: #815ba4; }
-
-.cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute { color: #48b685; }
-.cm-s-paraiso-light span.cm-keyword { color: #ef6155; }
-.cm-s-paraiso-light span.cm-string { color: #fec418; }
-
-.cm-s-paraiso-light span.cm-variable { color: #48b685; }
-.cm-s-paraiso-light span.cm-variable-2 { color: #06b6ef; }
-.cm-s-paraiso-light span.cm-def { color: #f99b15; }
-.cm-s-paraiso-light span.cm-bracket { color: #41323f; }
-.cm-s-paraiso-light span.cm-tag { color: #ef6155; }
-.cm-s-paraiso-light span.cm-link { color: #815ba4; }
-.cm-s-paraiso-light span.cm-error { background: #ef6155; color: #776e71; }
-
-.cm-s-paraiso-light .CodeMirror-activeline-background { background: #CFD1C4; }
-.cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/editable-samples/editor/codemirror/theme/pastel-on-dark.css b/editable-samples/editor/codemirror/theme/pastel-on-dark.css
deleted file mode 100644
index 2603d36..0000000
--- a/editable-samples/editor/codemirror/theme/pastel-on-dark.css
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Pastel On Dark theme ported from ACE editor
- * @license MIT
- * @copyright AtomicPages LLC 2014
- * @author Dennis Thompson, AtomicPages LLC
- * @version 1.1
- * @source https://github.com/atomicpages/codemirror-pastel-on-dark-theme
- */
-
-.cm-s-pastel-on-dark.CodeMirror {
- background: #2c2827;
- color: #8F938F;
- line-height: 1.5;
-}
-.cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2); }
-.cm-s-pastel-on-dark .CodeMirror-line::selection, .cm-s-pastel-on-dark .CodeMirror-line > span::selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::selection { background: rgba(221,240,255,0.2); }
-.cm-s-pastel-on-dark .CodeMirror-line::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(221,240,255,0.2); }
-
-.cm-s-pastel-on-dark .CodeMirror-gutters {
- background: #34302f;
- border-right: 0px;
- padding: 0 3px;
-}
-.cm-s-pastel-on-dark .CodeMirror-guttermarker { color: white; }
-.cm-s-pastel-on-dark .CodeMirror-guttermarker-subtle { color: #8F938F; }
-.cm-s-pastel-on-dark .CodeMirror-linenumber { color: #8F938F; }
-.cm-s-pastel-on-dark .CodeMirror-cursor { border-left: 1px solid #A7A7A7; }
-.cm-s-pastel-on-dark span.cm-comment { color: #A6C6FF; }
-.cm-s-pastel-on-dark span.cm-atom { color: #DE8E30; }
-.cm-s-pastel-on-dark span.cm-number { color: #CCCCCC; }
-.cm-s-pastel-on-dark span.cm-property { color: #8F938F; }
-.cm-s-pastel-on-dark span.cm-attribute { color: #a6e22e; }
-.cm-s-pastel-on-dark span.cm-keyword { color: #AEB2F8; }
-.cm-s-pastel-on-dark span.cm-string { color: #66A968; }
-.cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; }
-.cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; }
-.cm-s-pastel-on-dark span.cm-variable-3 { color: #DE8E30; }
-.cm-s-pastel-on-dark span.cm-def { color: #757aD8; }
-.cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; }
-.cm-s-pastel-on-dark span.cm-tag { color: #C1C144; }
-.cm-s-pastel-on-dark span.cm-link { color: #ae81ff; }
-.cm-s-pastel-on-dark span.cm-qualifier,.cm-s-pastel-on-dark span.cm-builtin { color: #C1C144; }
-.cm-s-pastel-on-dark span.cm-error {
- background: #757aD8;
- color: #f8f8f0;
-}
-.cm-s-pastel-on-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.031); }
-.cm-s-pastel-on-dark .CodeMirror-matchingbracket {
- border: 1px solid rgba(255,255,255,0.25);
- color: #8F938F !important;
- margin: -1px -1px 0 -1px;
-}
diff --git a/editable-samples/editor/codemirror/theme/railscasts.css b/editable-samples/editor/codemirror/theme/railscasts.css
deleted file mode 100644
index aeff044..0000000
--- a/editable-samples/editor/codemirror/theme/railscasts.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
- Name: Railscasts
- Author: Ryan Bates (http://railscasts.com)
-
- CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
- Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
-
-*/
-
-.cm-s-railscasts.CodeMirror {background: #2b2b2b; color: #f4f1ed;}
-.cm-s-railscasts div.CodeMirror-selected {background: #272935 !important;}
-.cm-s-railscasts .CodeMirror-gutters {background: #2b2b2b; border-right: 0px;}
-.cm-s-railscasts .CodeMirror-linenumber {color: #5a647e;}
-.cm-s-railscasts .CodeMirror-cursor {border-left: 1px solid #d4cfc9 !important;}
-
-.cm-s-railscasts span.cm-comment {color: #bc9458;}
-.cm-s-railscasts span.cm-atom {color: #b6b3eb;}
-.cm-s-railscasts span.cm-number {color: #b6b3eb;}
-
-.cm-s-railscasts span.cm-property, .cm-s-railscasts span.cm-attribute {color: #a5c261;}
-.cm-s-railscasts span.cm-keyword {color: #da4939;}
-.cm-s-railscasts span.cm-string {color: #ffc66d;}
-
-.cm-s-railscasts span.cm-variable {color: #a5c261;}
-.cm-s-railscasts span.cm-variable-2 {color: #6d9cbe;}
-.cm-s-railscasts span.cm-def {color: #cc7833;}
-.cm-s-railscasts span.cm-error {background: #da4939; color: #d4cfc9;}
-.cm-s-railscasts span.cm-bracket {color: #f4f1ed;}
-.cm-s-railscasts span.cm-tag {color: #da4939;}
-.cm-s-railscasts span.cm-link {color: #b6b3eb;}
-
-.cm-s-railscasts .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
-.cm-s-railscasts .CodeMirror-activeline-background { background: #303040; }
diff --git a/editable-samples/editor/codemirror/theme/rubyblue.css b/editable-samples/editor/codemirror/theme/rubyblue.css
deleted file mode 100644
index 76d33e7..0000000
--- a/editable-samples/editor/codemirror/theme/rubyblue.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.cm-s-rubyblue.CodeMirror { background: #112435; color: white; }
-.cm-s-rubyblue div.CodeMirror-selected { background: #38566F; }
-.cm-s-rubyblue .CodeMirror-line::selection, .cm-s-rubyblue .CodeMirror-line > span::selection, .cm-s-rubyblue .CodeMirror-line > span > span::selection { background: rgba(56, 86, 111, 0.99); }
-.cm-s-rubyblue .CodeMirror-line::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 86, 111, 0.99); }
-.cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; }
-.cm-s-rubyblue .CodeMirror-guttermarker { color: white; }
-.cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; }
-.cm-s-rubyblue .CodeMirror-linenumber { color: white; }
-.cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white; }
-
-.cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; }
-.cm-s-rubyblue span.cm-atom { color: #F4C20B; }
-.cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; }
-.cm-s-rubyblue span.cm-keyword { color: #F0F; }
-.cm-s-rubyblue span.cm-string { color: #F08047; }
-.cm-s-rubyblue span.cm-meta { color: #F0F; }
-.cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; }
-.cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; }
-.cm-s-rubyblue span.cm-bracket { color: #F0F; }
-.cm-s-rubyblue span.cm-link { color: #F4C20B; }
-.cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; }
-.cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; }
-.cm-s-rubyblue span.cm-error { color: #AF2018; }
-
-.cm-s-rubyblue .CodeMirror-activeline-background { background: #173047; }
diff --git a/editable-samples/editor/codemirror/theme/seti.css b/editable-samples/editor/codemirror/theme/seti.css
deleted file mode 100644
index 6632d3f..0000000
--- a/editable-samples/editor/codemirror/theme/seti.css
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-
- Name: seti
- Author: Michael Kaminsky (http://github.com/mkaminsky11)
-
- Original seti color scheme by Jesse Weed (https://github.com/jesseweed/seti-syntax)
-
-*/
-
-
-.cm-s-seti.CodeMirror {
- background-color: #151718 !important;
- color: #CFD2D1 !important;
- border: none;
-}
-.cm-s-seti .CodeMirror-gutters {
- color: #404b53;
- background-color: #0E1112;
- border: none;
-}
-.cm-s-seti .CodeMirror-cursor { border-left: solid thin #f8f8f0; }
-.cm-s-seti .CodeMirror-linenumber { color: #6D8A88; }
-.cm-s-seti.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }
-.cm-s-seti .CodeMirror-line::selection, .cm-s-seti .CodeMirror-line > span::selection, .cm-s-seti .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }
-.cm-s-seti .CodeMirror-line::-moz-selection, .cm-s-seti .CodeMirror-line > span::-moz-selection, .cm-s-seti .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }
-.cm-s-seti span.cm-comment { color: #41535b; }
-.cm-s-seti span.cm-string, .cm-s-seti span.cm-string-2 { color: #55b5db; }
-.cm-s-seti span.cm-number { color: #cd3f45; }
-.cm-s-seti span.cm-variable { color: #55b5db; }
-.cm-s-seti span.cm-variable-2 { color: #a074c4; }
-.cm-s-seti span.cm-def { color: #55b5db; }
-.cm-s-seti span.cm-keyword { color: #ff79c6; }
-.cm-s-seti span.cm-operator { color: #9fca56; }
-.cm-s-seti span.cm-keyword { color: #e6cd69; }
-.cm-s-seti span.cm-atom { color: #cd3f45; }
-.cm-s-seti span.cm-meta { color: #55b5db; }
-.cm-s-seti span.cm-tag { color: #55b5db; }
-.cm-s-seti span.cm-attribute { color: #9fca56; }
-.cm-s-seti span.cm-qualifier { color: #9fca56; }
-.cm-s-seti span.cm-property { color: #a074c4; }
-.cm-s-seti span.cm-variable-3 { color: #9fca56; }
-.cm-s-seti span.cm-builtin { color: #9fca56; }
-.cm-s-seti .CodeMirror-activeline-background { background: #101213; }
-.cm-s-seti .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/editable-samples/editor/codemirror/theme/solarized.css b/editable-samples/editor/codemirror/theme/solarized.css
deleted file mode 100644
index 1f39c7e..0000000
--- a/editable-samples/editor/codemirror/theme/solarized.css
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
-Solarized theme for code-mirror
-http://ethanschoonover.com/solarized
-*/
-
-/*
-Solarized color palette
-http://ethanschoonover.com/solarized/img/solarized-palette.png
-*/
-
-.solarized.base03 { color: #002b36; }
-.solarized.base02 { color: #073642; }
-.solarized.base01 { color: #586e75; }
-.solarized.base00 { color: #657b83; }
-.solarized.base0 { color: #839496; }
-.solarized.base1 { color: #93a1a1; }
-.solarized.base2 { color: #eee8d5; }
-.solarized.base3 { color: #fdf6e3; }
-.solarized.solar-yellow { color: #b58900; }
-.solarized.solar-orange { color: #cb4b16; }
-.solarized.solar-red { color: #dc322f; }
-.solarized.solar-magenta { color: #d33682; }
-.solarized.solar-violet { color: #6c71c4; }
-.solarized.solar-blue { color: #268bd2; }
-.solarized.solar-cyan { color: #2aa198; }
-.solarized.solar-green { color: #859900; }
-
-/* Color scheme for code-mirror */
-
-.cm-s-solarized {
- line-height: 1.45em;
- color-profile: sRGB;
- rendering-intent: auto;
-}
-.cm-s-solarized.cm-s-dark {
- color: #839496;
- background-color: #002b36;
- text-shadow: #002b36 0 1px;
-}
-.cm-s-solarized.cm-s-light {
- background-color: #fdf6e3;
- color: #657b83;
- text-shadow: #eee8d5 0 1px;
-}
-
-.cm-s-solarized .CodeMirror-widget {
- text-shadow: none;
-}
-
-.cm-s-solarized .cm-header { color: #586e75; }
-.cm-s-solarized .cm-quote { color: #93a1a1; }
-
-.cm-s-solarized .cm-keyword { color: #cb4b16; }
-.cm-s-solarized .cm-atom { color: #d33682; }
-.cm-s-solarized .cm-number { color: #d33682; }
-.cm-s-solarized .cm-def { color: #2aa198; }
-
-.cm-s-solarized .cm-variable { color: #839496; }
-.cm-s-solarized .cm-variable-2 { color: #b58900; }
-.cm-s-solarized .cm-variable-3 { color: #6c71c4; }
-
-.cm-s-solarized .cm-property { color: #2aa198; }
-.cm-s-solarized .cm-operator { color: #6c71c4; }
-
-.cm-s-solarized .cm-comment { color: #586e75; font-style:italic; }
-
-.cm-s-solarized .cm-string { color: #859900; }
-.cm-s-solarized .cm-string-2 { color: #b58900; }
-
-.cm-s-solarized .cm-meta { color: #859900; }
-.cm-s-solarized .cm-qualifier { color: #b58900; }
-.cm-s-solarized .cm-builtin { color: #d33682; }
-.cm-s-solarized .cm-bracket { color: #cb4b16; }
-.cm-s-solarized .CodeMirror-matchingbracket { color: #859900; }
-.cm-s-solarized .CodeMirror-nonmatchingbracket { color: #dc322f; }
-.cm-s-solarized .cm-tag { color: #93a1a1; }
-.cm-s-solarized .cm-attribute { color: #2aa198; }
-.cm-s-solarized .cm-hr {
- color: transparent;
- border-top: 1px solid #586e75;
- display: block;
-}
-.cm-s-solarized .cm-link { color: #93a1a1; cursor: pointer; }
-.cm-s-solarized .cm-special { color: #6c71c4; }
-.cm-s-solarized .cm-em {
- color: #999;
- text-decoration: underline;
- text-decoration-style: dotted;
-}
-.cm-s-solarized .cm-strong { color: #eee; }
-.cm-s-solarized .cm-error,
-.cm-s-solarized .cm-invalidchar {
- color: #586e75;
- border-bottom: 1px dotted #dc322f;
-}
-
-.cm-s-solarized.cm-s-dark div.CodeMirror-selected { background: #073642; }
-.cm-s-solarized.cm-s-dark.CodeMirror ::selection { background: rgba(7, 54, 66, 0.99); }
-.cm-s-solarized.cm-s-dark .CodeMirror-line::-moz-selection, .cm-s-dark .CodeMirror-line > span::-moz-selection, .cm-s-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(7, 54, 66, 0.99); }
-
-.cm-s-solarized.cm-s-light div.CodeMirror-selected { background: #eee8d5; }
-.cm-s-solarized.cm-s-light .CodeMirror-line::selection, .cm-s-light .CodeMirror-line > span::selection, .cm-s-light .CodeMirror-line > span > span::selection { background: #eee8d5; }
-.cm-s-solarized.cm-s-light .CodeMirror-line::-moz-selection, .cm-s-ligh .CodeMirror-line > span::-moz-selection, .cm-s-ligh .CodeMirror-line > span > span::-moz-selection { background: #eee8d5; }
-
-/* Editor styling */
-
-
-
-/* Little shadow on the view-port of the buffer view */
-.cm-s-solarized.CodeMirror {
- -moz-box-shadow: inset 7px 0 12px -6px #000;
- -webkit-box-shadow: inset 7px 0 12px -6px #000;
- box-shadow: inset 7px 0 12px -6px #000;
-}
-
-/* Remove gutter border */
-.cm-s-solarized .CodeMirror-gutters {
- border-right: 0;
-}
-
-/* Gutter colors and line number styling based of color scheme (dark / light) */
-
-/* Dark */
-.cm-s-solarized.cm-s-dark .CodeMirror-gutters {
- background-color: #073642;
-}
-
-.cm-s-solarized.cm-s-dark .CodeMirror-linenumber {
- color: #586e75;
- text-shadow: #021014 0 -1px;
-}
-
-/* Light */
-.cm-s-solarized.cm-s-light .CodeMirror-gutters {
- background-color: #eee8d5;
-}
-
-.cm-s-solarized.cm-s-light .CodeMirror-linenumber {
- color: #839496;
-}
-
-/* Common */
-.cm-s-solarized .CodeMirror-linenumber {
- padding: 0 5px;
-}
-.cm-s-solarized .CodeMirror-guttermarker-subtle { color: #586e75; }
-.cm-s-solarized.cm-s-dark .CodeMirror-guttermarker { color: #ddd; }
-.cm-s-solarized.cm-s-light .CodeMirror-guttermarker { color: #cb4b16; }
-
-.cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text {
- color: #586e75;
-}
-
-/* Cursor */
-.cm-s-solarized .CodeMirror-cursor { border-left: 1px solid #819090; }
-
-/* Fat cursor */
-.cm-s-solarized.cm-s-light.cm-fat-cursor .CodeMirror-cursor { background: #77ee77; }
-.cm-s-solarized.cm-s-light .cm-animate-fat-cursor { background-color: #77ee77; }
-.cm-s-solarized.cm-s-dark.cm-fat-cursor .CodeMirror-cursor { background: #586e75; }
-.cm-s-solarized.cm-s-dark .cm-animate-fat-cursor { background-color: #586e75; }
-
-/* Active line */
-.cm-s-solarized.cm-s-dark .CodeMirror-activeline-background {
- background: rgba(255, 255, 255, 0.06);
-}
-.cm-s-solarized.cm-s-light .CodeMirror-activeline-background {
- background: rgba(0, 0, 0, 0.06);
-}
diff --git a/editable-samples/editor/codemirror/theme/the-matrix.css b/editable-samples/editor/codemirror/theme/the-matrix.css
deleted file mode 100644
index 3912a8d..0000000
--- a/editable-samples/editor/codemirror/theme/the-matrix.css
+++ /dev/null
@@ -1,30 +0,0 @@
-.cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; }
-.cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D; }
-.cm-s-the-matrix .CodeMirror-line::selection, .cm-s-the-matrix .CodeMirror-line > span::selection, .cm-s-the-matrix .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); }
-.cm-s-the-matrix .CodeMirror-line::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); }
-.cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; }
-.cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; }
-.cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; }
-.cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; }
-.cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00; }
-
-.cm-s-the-matrix span.cm-keyword { color: #008803; font-weight: bold; }
-.cm-s-the-matrix span.cm-atom { color: #3FF; }
-.cm-s-the-matrix span.cm-number { color: #FFB94F; }
-.cm-s-the-matrix span.cm-def { color: #99C; }
-.cm-s-the-matrix span.cm-variable { color: #F6C; }
-.cm-s-the-matrix span.cm-variable-2 { color: #C6F; }
-.cm-s-the-matrix span.cm-variable-3 { color: #96F; }
-.cm-s-the-matrix span.cm-property { color: #62FFA0; }
-.cm-s-the-matrix span.cm-operator { color: #999; }
-.cm-s-the-matrix span.cm-comment { color: #CCCCCC; }
-.cm-s-the-matrix span.cm-string { color: #39C; }
-.cm-s-the-matrix span.cm-meta { color: #C9F; }
-.cm-s-the-matrix span.cm-qualifier { color: #FFF700; }
-.cm-s-the-matrix span.cm-builtin { color: #30a; }
-.cm-s-the-matrix span.cm-bracket { color: #cc7; }
-.cm-s-the-matrix span.cm-tag { color: #FFBD40; }
-.cm-s-the-matrix span.cm-attribute { color: #FFF700; }
-.cm-s-the-matrix span.cm-error { color: #FF0000; }
-
-.cm-s-the-matrix .CodeMirror-activeline-background { background: #040; }
diff --git a/editable-samples/editor/codemirror/theme/tomorrow-night-bright.css b/editable-samples/editor/codemirror/theme/tomorrow-night-bright.css
deleted file mode 100644
index b6dd4a9..0000000
--- a/editable-samples/editor/codemirror/theme/tomorrow-night-bright.css
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-
- Name: Tomorrow Night - Bright
- Author: Chris Kempson
-
- Port done by Gerard Braad
-
-*/
-
-.cm-s-tomorrow-night-bright.CodeMirror { background: #000000; color: #eaeaea; }
-.cm-s-tomorrow-night-bright div.CodeMirror-selected { background: #424242; }
-.cm-s-tomorrow-night-bright .CodeMirror-gutters { background: #000000; border-right: 0px; }
-.cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; }
-.cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777; }
-.cm-s-tomorrow-night-bright .CodeMirror-linenumber { color: #424242; }
-.cm-s-tomorrow-night-bright .CodeMirror-cursor { border-left: 1px solid #6A6A6A; }
-
-.cm-s-tomorrow-night-bright span.cm-comment { color: #d27b53; }
-.cm-s-tomorrow-night-bright span.cm-atom { color: #a16a94; }
-.cm-s-tomorrow-night-bright span.cm-number { color: #a16a94; }
-
-.cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright span.cm-attribute { color: #99cc99; }
-.cm-s-tomorrow-night-bright span.cm-keyword { color: #d54e53; }
-.cm-s-tomorrow-night-bright span.cm-string { color: #e7c547; }
-
-.cm-s-tomorrow-night-bright span.cm-variable { color: #b9ca4a; }
-.cm-s-tomorrow-night-bright span.cm-variable-2 { color: #7aa6da; }
-.cm-s-tomorrow-night-bright span.cm-def { color: #e78c45; }
-.cm-s-tomorrow-night-bright span.cm-bracket { color: #eaeaea; }
-.cm-s-tomorrow-night-bright span.cm-tag { color: #d54e53; }
-.cm-s-tomorrow-night-bright span.cm-link { color: #a16a94; }
-.cm-s-tomorrow-night-bright span.cm-error { background: #d54e53; color: #6A6A6A; }
-
-.cm-s-tomorrow-night-bright .CodeMirror-activeline-background { background: #2a2a2a; }
-.cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/editable-samples/editor/codemirror/theme/tomorrow-night-eighties.css b/editable-samples/editor/codemirror/theme/tomorrow-night-eighties.css
deleted file mode 100644
index 2a9debc..0000000
--- a/editable-samples/editor/codemirror/theme/tomorrow-night-eighties.css
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- Name: Tomorrow Night - Eighties
- Author: Chris Kempson
-
- CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
- Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
-
-*/
-
-.cm-s-tomorrow-night-eighties.CodeMirror { background: #000000; color: #CCCCCC; }
-.cm-s-tomorrow-night-eighties div.CodeMirror-selected { background: #2D2D2D; }
-.cm-s-tomorrow-night-eighties .CodeMirror-line::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); }
-.cm-s-tomorrow-night-eighties .CodeMirror-line::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); }
-.cm-s-tomorrow-night-eighties .CodeMirror-gutters { background: #000000; border-right: 0px; }
-.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; }
-.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color: #777; }
-.cm-s-tomorrow-night-eighties .CodeMirror-linenumber { color: #515151; }
-.cm-s-tomorrow-night-eighties .CodeMirror-cursor { border-left: 1px solid #6A6A6A; }
-
-.cm-s-tomorrow-night-eighties span.cm-comment { color: #d27b53; }
-.cm-s-tomorrow-night-eighties span.cm-atom { color: #a16a94; }
-.cm-s-tomorrow-night-eighties span.cm-number { color: #a16a94; }
-
-.cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute { color: #99cc99; }
-.cm-s-tomorrow-night-eighties span.cm-keyword { color: #f2777a; }
-.cm-s-tomorrow-night-eighties span.cm-string { color: #ffcc66; }
-
-.cm-s-tomorrow-night-eighties span.cm-variable { color: #99cc99; }
-.cm-s-tomorrow-night-eighties span.cm-variable-2 { color: #6699cc; }
-.cm-s-tomorrow-night-eighties span.cm-def { color: #f99157; }
-.cm-s-tomorrow-night-eighties span.cm-bracket { color: #CCCCCC; }
-.cm-s-tomorrow-night-eighties span.cm-tag { color: #f2777a; }
-.cm-s-tomorrow-night-eighties span.cm-link { color: #a16a94; }
-.cm-s-tomorrow-night-eighties span.cm-error { background: #f2777a; color: #6A6A6A; }
-
-.cm-s-tomorrow-night-eighties .CodeMirror-activeline-background { background: #343600; }
-.cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/editable-samples/editor/codemirror/theme/ttcn.css b/editable-samples/editor/codemirror/theme/ttcn.css
deleted file mode 100644
index b3d4656..0000000
--- a/editable-samples/editor/codemirror/theme/ttcn.css
+++ /dev/null
@@ -1,64 +0,0 @@
-.cm-s-ttcn .cm-quote { color: #090; }
-.cm-s-ttcn .cm-negative { color: #d44; }
-.cm-s-ttcn .cm-positive { color: #292; }
-.cm-s-ttcn .cm-header, .cm-strong { font-weight: bold; }
-.cm-s-ttcn .cm-em { font-style: italic; }
-.cm-s-ttcn .cm-link { text-decoration: underline; }
-.cm-s-ttcn .cm-strikethrough { text-decoration: line-through; }
-.cm-s-ttcn .cm-header { color: #00f; font-weight: bold; }
-
-.cm-s-ttcn .cm-atom { color: #219; }
-.cm-s-ttcn .cm-attribute { color: #00c; }
-.cm-s-ttcn .cm-bracket { color: #997; }
-.cm-s-ttcn .cm-comment { color: #333333; }
-.cm-s-ttcn .cm-def { color: #00f; }
-.cm-s-ttcn .cm-em { font-style: italic; }
-.cm-s-ttcn .cm-error { color: #f00; }
-.cm-s-ttcn .cm-hr { color: #999; }
-.cm-s-ttcn .cm-invalidchar { color: #f00; }
-.cm-s-ttcn .cm-keyword { font-weight:bold; }
-.cm-s-ttcn .cm-link { color: #00c; text-decoration: underline; }
-.cm-s-ttcn .cm-meta { color: #555; }
-.cm-s-ttcn .cm-negative { color: #d44; }
-.cm-s-ttcn .cm-positive { color: #292; }
-.cm-s-ttcn .cm-qualifier { color: #555; }
-.cm-s-ttcn .cm-strikethrough { text-decoration: line-through; }
-.cm-s-ttcn .cm-string { color: #006400; }
-.cm-s-ttcn .cm-string-2 { color: #f50; }
-.cm-s-ttcn .cm-strong { font-weight: bold; }
-.cm-s-ttcn .cm-tag { color: #170; }
-.cm-s-ttcn .cm-variable { color: #8B2252; }
-.cm-s-ttcn .cm-variable-2 { color: #05a; }
-.cm-s-ttcn .cm-variable-3 { color: #085; }
-
-.cm-s-ttcn .cm-invalidchar { color: #f00; }
-
-/* ASN */
-.cm-s-ttcn .cm-accessTypes,
-.cm-s-ttcn .cm-compareTypes { color: #27408B; }
-.cm-s-ttcn .cm-cmipVerbs { color: #8B2252; }
-.cm-s-ttcn .cm-modifier { color:#D2691E; }
-.cm-s-ttcn .cm-status { color:#8B4545; }
-.cm-s-ttcn .cm-storage { color:#A020F0; }
-.cm-s-ttcn .cm-tags { color:#006400; }
-
-/* CFG */
-.cm-s-ttcn .cm-externalCommands { color: #8B4545; font-weight:bold; }
-.cm-s-ttcn .cm-fileNCtrlMaskOptions,
-.cm-s-ttcn .cm-sectionTitle { color: #2E8B57; font-weight:bold; }
-
-/* TTCN */
-.cm-s-ttcn .cm-booleanConsts,
-.cm-s-ttcn .cm-otherConsts,
-.cm-s-ttcn .cm-verdictConsts { color: #006400; }
-.cm-s-ttcn .cm-configOps,
-.cm-s-ttcn .cm-functionOps,
-.cm-s-ttcn .cm-portOps,
-.cm-s-ttcn .cm-sutOps,
-.cm-s-ttcn .cm-timerOps,
-.cm-s-ttcn .cm-verdictOps { color: #0000FF; }
-.cm-s-ttcn .cm-preprocessor,
-.cm-s-ttcn .cm-templateMatch,
-.cm-s-ttcn .cm-ttcn3Macros { color: #27408B; }
-.cm-s-ttcn .cm-types { color: #A52A2A; font-weight:bold; }
-.cm-s-ttcn .cm-visibilityModifiers { font-weight:bold; }
diff --git a/editable-samples/editor/codemirror/theme/twilight.css b/editable-samples/editor/codemirror/theme/twilight.css
deleted file mode 100644
index d342b89..0000000
--- a/editable-samples/editor/codemirror/theme/twilight.css
+++ /dev/null
@@ -1,32 +0,0 @@
-.cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/
-.cm-s-twilight div.CodeMirror-selected { background: #323232; } /**/
-.cm-s-twilight .CodeMirror-line::selection, .cm-s-twilight .CodeMirror-line > span::selection, .cm-s-twilight .CodeMirror-line > span > span::selection { background: rgba(50, 50, 50, 0.99); }
-.cm-s-twilight .CodeMirror-line::-moz-selection, .cm-s-twilight .CodeMirror-line > span::-moz-selection, .cm-s-twilight .CodeMirror-line > span > span::-moz-selection { background: rgba(50, 50, 50, 0.99); }
-
-.cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; }
-.cm-s-twilight .CodeMirror-guttermarker { color: white; }
-.cm-s-twilight .CodeMirror-guttermarker-subtle { color: #aaa; }
-.cm-s-twilight .CodeMirror-linenumber { color: #aaa; }
-.cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white; }
-
-.cm-s-twilight .cm-keyword { color: #f9ee98; } /**/
-.cm-s-twilight .cm-atom { color: #FC0; }
-.cm-s-twilight .cm-number { color: #ca7841; } /**/
-.cm-s-twilight .cm-def { color: #8DA6CE; }
-.cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/
-.cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def { color: #607392; } /**/
-.cm-s-twilight .cm-operator { color: #cda869; } /**/
-.cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/
-.cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/
-.cm-s-twilight .cm-string-2 { color:#bd6b18; } /*?*/
-.cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/
-.cm-s-twilight .cm-builtin { color: #cda869; } /*?*/
-.cm-s-twilight .cm-tag { color: #997643; } /**/
-.cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/
-.cm-s-twilight .cm-header { color: #FF6400; }
-.cm-s-twilight .cm-hr { color: #AEAEAE; }
-.cm-s-twilight .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } /**/
-.cm-s-twilight .cm-error { border-bottom: 1px solid red; }
-
-.cm-s-twilight .CodeMirror-activeline-background { background: #27282E; }
-.cm-s-twilight .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; }
diff --git a/editable-samples/editor/codemirror/theme/vibrant-ink.css b/editable-samples/editor/codemirror/theme/vibrant-ink.css
deleted file mode 100644
index ac4ec6d..0000000
--- a/editable-samples/editor/codemirror/theme/vibrant-ink.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Taken from the popular Visual Studio Vibrant Ink Schema */
-
-.cm-s-vibrant-ink.CodeMirror { background: black; color: white; }
-.cm-s-vibrant-ink div.CodeMirror-selected { background: #35493c; }
-.cm-s-vibrant-ink .CodeMirror-line::selection, .cm-s-vibrant-ink .CodeMirror-line > span::selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::selection { background: rgba(53, 73, 60, 0.99); }
-.cm-s-vibrant-ink .CodeMirror-line::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::-moz-selection { background: rgba(53, 73, 60, 0.99); }
-
-.cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
-.cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; }
-.cm-s-vibrant-ink .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
-.cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; }
-.cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white; }
-
-.cm-s-vibrant-ink .cm-keyword { color: #CC7832; }
-.cm-s-vibrant-ink .cm-atom { color: #FC0; }
-.cm-s-vibrant-ink .cm-number { color: #FFEE98; }
-.cm-s-vibrant-ink .cm-def { color: #8DA6CE; }
-.cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D; }
-.cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def { color: #FFC66D; }
-.cm-s-vibrant-ink .cm-operator { color: #888; }
-.cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; }
-.cm-s-vibrant-ink .cm-string { color: #A5C25C; }
-.cm-s-vibrant-ink .cm-string-2 { color: red; }
-.cm-s-vibrant-ink .cm-meta { color: #D8FA3C; }
-.cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; }
-.cm-s-vibrant-ink .cm-tag { color: #8DA6CE; }
-.cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; }
-.cm-s-vibrant-ink .cm-header { color: #FF6400; }
-.cm-s-vibrant-ink .cm-hr { color: #AEAEAE; }
-.cm-s-vibrant-ink .cm-link { color: blue; }
-.cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; }
-
-.cm-s-vibrant-ink .CodeMirror-activeline-background { background: #27282E; }
-.cm-s-vibrant-ink .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; }
diff --git a/editable-samples/editor/codemirror/theme/xq-dark.css b/editable-samples/editor/codemirror/theme/xq-dark.css
deleted file mode 100644
index e3bd960..0000000
--- a/editable-samples/editor/codemirror/theme/xq-dark.css
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright (C) 2011 by MarkLogic Corporation
-Author: Mike Brevoort
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-.cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; }
-.cm-s-xq-dark div.CodeMirror-selected { background: #27007A; }
-.cm-s-xq-dark .CodeMirror-line::selection, .cm-s-xq-dark .CodeMirror-line > span::selection, .cm-s-xq-dark .CodeMirror-line > span > span::selection { background: rgba(39, 0, 122, 0.99); }
-.cm-s-xq-dark .CodeMirror-line::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(39, 0, 122, 0.99); }
-.cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
-.cm-s-xq-dark .CodeMirror-guttermarker { color: #FFBD40; }
-.cm-s-xq-dark .CodeMirror-guttermarker-subtle { color: #f8f8f8; }
-.cm-s-xq-dark .CodeMirror-linenumber { color: #f8f8f8; }
-.cm-s-xq-dark .CodeMirror-cursor { border-left: 1px solid white; }
-
-.cm-s-xq-dark span.cm-keyword { color: #FFBD40; }
-.cm-s-xq-dark span.cm-atom { color: #6C8CD5; }
-.cm-s-xq-dark span.cm-number { color: #164; }
-.cm-s-xq-dark span.cm-def { color: #FFF; text-decoration:underline; }
-.cm-s-xq-dark span.cm-variable { color: #FFF; }
-.cm-s-xq-dark span.cm-variable-2 { color: #EEE; }
-.cm-s-xq-dark span.cm-variable-3 { color: #DDD; }
-.cm-s-xq-dark span.cm-property {}
-.cm-s-xq-dark span.cm-operator {}
-.cm-s-xq-dark span.cm-comment { color: gray; }
-.cm-s-xq-dark span.cm-string { color: #9FEE00; }
-.cm-s-xq-dark span.cm-meta { color: yellow; }
-.cm-s-xq-dark span.cm-qualifier { color: #FFF700; }
-.cm-s-xq-dark span.cm-builtin { color: #30a; }
-.cm-s-xq-dark span.cm-bracket { color: #cc7; }
-.cm-s-xq-dark span.cm-tag { color: #FFBD40; }
-.cm-s-xq-dark span.cm-attribute { color: #FFF700; }
-.cm-s-xq-dark span.cm-error { color: #f00; }
-
-.cm-s-xq-dark .CodeMirror-activeline-background { background: #27282E; }
-.cm-s-xq-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; }
diff --git a/editable-samples/editor/codemirror/theme/xq-light.css b/editable-samples/editor/codemirror/theme/xq-light.css
deleted file mode 100644
index 8d2fcb6..0000000
--- a/editable-samples/editor/codemirror/theme/xq-light.css
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright (C) 2011 by MarkLogic Corporation
-Author: Mike Brevoort
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-.cm-s-xq-light span.cm-keyword { line-height: 1em; font-weight: bold; color: #5A5CAD; }
-.cm-s-xq-light span.cm-atom { color: #6C8CD5; }
-.cm-s-xq-light span.cm-number { color: #164; }
-.cm-s-xq-light span.cm-def { text-decoration:underline; }
-.cm-s-xq-light span.cm-variable { color: black; }
-.cm-s-xq-light span.cm-variable-2 { color:black; }
-.cm-s-xq-light span.cm-variable-3 { color: black; }
-.cm-s-xq-light span.cm-property {}
-.cm-s-xq-light span.cm-operator {}
-.cm-s-xq-light span.cm-comment { color: #0080FF; font-style: italic; }
-.cm-s-xq-light span.cm-string { color: red; }
-.cm-s-xq-light span.cm-meta { color: yellow; }
-.cm-s-xq-light span.cm-qualifier { color: grey; }
-.cm-s-xq-light span.cm-builtin { color: #7EA656; }
-.cm-s-xq-light span.cm-bracket { color: #cc7; }
-.cm-s-xq-light span.cm-tag { color: #3F7F7F; }
-.cm-s-xq-light span.cm-attribute { color: #7F007F; }
-.cm-s-xq-light span.cm-error { color: #f00; }
-
-.cm-s-xq-light .CodeMirror-activeline-background { background: #e8f2ff; }
-.cm-s-xq-light .CodeMirror-matchingbracket { outline:1px solid grey;color:black !important;background:yellow; }
diff --git a/editable-samples/editor/codemirror/theme/yeti.css b/editable-samples/editor/codemirror/theme/yeti.css
deleted file mode 100644
index c70d4d2..0000000
--- a/editable-samples/editor/codemirror/theme/yeti.css
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-
- Name: yeti
- Author: Michael Kaminsky (http://github.com/mkaminsky11)
-
- Original yeti color scheme by Jesse Weed (https://github.com/jesseweed/yeti-syntax)
-
-*/
-
-
-.cm-s-yeti.CodeMirror {
- background-color: #ECEAE8 !important;
- color: #d1c9c0 !important;
- border: none;
-}
-
-.cm-s-yeti .CodeMirror-gutters {
- color: #adaba6;
- background-color: #E5E1DB;
- border: none;
-}
-.cm-s-yeti .CodeMirror-cursor { border-left: solid thin #d1c9c0; }
-.cm-s-yeti .CodeMirror-linenumber { color: #adaba6; }
-.cm-s-yeti.CodeMirror-focused div.CodeMirror-selected { background: #DCD8D2; }
-.cm-s-yeti .CodeMirror-line::selection, .cm-s-yeti .CodeMirror-line > span::selection, .cm-s-yeti .CodeMirror-line > span > span::selection { background: #DCD8D2; }
-.cm-s-yeti .CodeMirror-line::-moz-selection, .cm-s-yeti .CodeMirror-line > span::-moz-selection, .cm-s-yeti .CodeMirror-line > span > span::-moz-selection { background: #DCD8D2; }
-.cm-s-yeti span.cm-comment { color: #d4c8be; }
-.cm-s-yeti span.cm-string, .cm-s-yeti span.cm-string-2 { color: #96c0d8; }
-.cm-s-yeti span.cm-number { color: #a074c4; }
-.cm-s-yeti span.cm-variable { color: #55b5db; }
-.cm-s-yeti span.cm-variable-2 { color: #a074c4; }
-.cm-s-yeti span.cm-def { color: #55b5db; }
-.cm-s-yeti span.cm-operator { color: #9fb96e; }
-.cm-s-yeti span.cm-keyword { color: #9fb96e; }
-.cm-s-yeti span.cm-atom { color: #a074c4; }
-.cm-s-yeti span.cm-meta { color: #96c0d8; }
-.cm-s-yeti span.cm-tag { color: #96c0d8; }
-.cm-s-yeti span.cm-attribute { color: #9fb96e; }
-.cm-s-yeti span.cm-qualifier { color: #96c0d8; }
-.cm-s-yeti span.cm-property { color: #a074c4; }
-.cm-s-yeti span.cm-builtin { color: #a074c4; }
-.cm-s-yeti span.cm-variable-3 { color: #96c0d8; }
-.cm-s-yeti .CodeMirror-activeline-background { background: #E7E4E0; }
-.cm-s-yeti .CodeMirror-matchingbracket { text-decoration: underline; }
diff --git a/editable-samples/editor/codemirror/theme/zenburn.css b/editable-samples/editor/codemirror/theme/zenburn.css
deleted file mode 100644
index 781c40a..0000000
--- a/editable-samples/editor/codemirror/theme/zenburn.css
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * "
- * Using Zenburn color palette from the Emacs Zenburn Theme
- * https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el
- *
- * Also using parts of https://github.com/xavi/coderay-lighttable-theme
- * "
- * From: https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css
- */
-
-.cm-s-zenburn .CodeMirror-gutters { background: #3f3f3f !important; }
-.cm-s-zenburn .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { color: #999; }
-.cm-s-zenburn .CodeMirror-cursor { border-left: 1px solid white; }
-.cm-s-zenburn { background-color: #3f3f3f; color: #dcdccc; }
-.cm-s-zenburn span.cm-builtin { color: #dcdccc; font-weight: bold; }
-.cm-s-zenburn span.cm-comment { color: #7f9f7f; }
-.cm-s-zenburn span.cm-keyword { color: #f0dfaf; font-weight: bold; }
-.cm-s-zenburn span.cm-atom { color: #bfebbf; }
-.cm-s-zenburn span.cm-def { color: #dcdccc; }
-.cm-s-zenburn span.cm-variable { color: #dfaf8f; }
-.cm-s-zenburn span.cm-variable-2 { color: #dcdccc; }
-.cm-s-zenburn span.cm-string { color: #cc9393; }
-.cm-s-zenburn span.cm-string-2 { color: #cc9393; }
-.cm-s-zenburn span.cm-number { color: #dcdccc; }
-.cm-s-zenburn span.cm-tag { color: #93e0e3; }
-.cm-s-zenburn span.cm-property { color: #dfaf8f; }
-.cm-s-zenburn span.cm-attribute { color: #dfaf8f; }
-.cm-s-zenburn span.cm-qualifier { color: #7cb8bb; }
-.cm-s-zenburn span.cm-meta { color: #f0dfaf; }
-.cm-s-zenburn span.cm-header { color: #f0efd0; }
-.cm-s-zenburn span.cm-operator { color: #f0efd0; }
-.cm-s-zenburn span.CodeMirror-matchingbracket { box-sizing: border-box; background: transparent; border-bottom: 1px solid; }
-.cm-s-zenburn span.CodeMirror-nonmatchingbracket { border-bottom: 1px solid; background: none; }
-.cm-s-zenburn .CodeMirror-activeline { background: #000000; }
-.cm-s-zenburn .CodeMirror-activeline-background { background: #000000; }
-.cm-s-zenburn div.CodeMirror-selected { background: #545454; }
-.cm-s-zenburn .CodeMirror-focused div.CodeMirror-selected { background: #4f4f4f; }
diff --git a/editable-samples/editor/css/editable.css b/editable-samples/editor/css/editable.css
deleted file mode 100644
index ecf3690..0000000
--- a/editable-samples/editor/css/editable.css
+++ /dev/null
@@ -1,68 +0,0 @@
-* {
- box-sizing: border-box;
-}
-
-body {
- background-color: #EAEFF2;
- padding: 0;
- margin: 0;
-}
-
-#buttons {
- margin: 0.5em;
-}
-
-#output {
- width: 100%;
- height: 40px;
- background-color: white;
- padding: 1em;
- font-family: courier;
- font-size: 13px;
- box-shadow: 0px 2px 5px -2px rgba(0,0,0,0.1);
-}
-
-#editor, #output {
- font-size: 14px;
-}
-
-.CodeMirror {
- box-shadow: inset 0px 2px 2px -2px rgba(0,0,0,0.2);
- border: 1px solid rgba(0,0,0,0.2);
- border-top: 1px solid rgba(0,0,0,0.3);
- border-bottom: 1px solid rgba(0,0,0,0.1);
-}
-
-#editor {
- position: relative;
- margin-bottom: 1em;
-}
-
-
-#editor>input {
- position: absolute;
- z-index: 10;
- top: 10px;
- right: 10px;
-}
-
-#editor>input.hidden {
- display: none;
-}
-
-#output>p {
- margin: 0;
-}
-
-.fade-in p {
- animation: fadein 0.5s;
-}
-
-@keyframes fadein {
- from {
- opacity:0;
- }
- to {
- opacity:1;
- }
-}
diff --git a/editable-samples/editor/js/editable.js b/editable-samples/editor/js/editable.js
deleted file mode 100644
index 65e8519..0000000
--- a/editable-samples/editor/js/editable.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var editor = document.getElementById("editor");
-var output = document.getElementById("output");
-
-var execute = document.getElementById("execute");
-var reset = document.getElementById("reset");
-
-var gConsole = console;
-
-var console = {
- log: function(loggedItem) {
- if (typeof(loggedItem) === "string") {
- return loggedItem;
- } else {
- return eval(loggedItem);
- }
- }
-}
-
-var cmOptions = {
- mode: "javascript",
- theme: "eclipse",
- lineNumbers: true,
- showCursorWhenSelecting: true,
- styleActiveLine: true
-}
-
-var cmEditor = CodeMirror(editor, cmOptions);
-cmEditor.setSize("100%", 150);
-cmEditor.doc.setValue(cmInitContent);
-cmEditor.focus();
-cmEditor.doc.setCursor({line: cmSelectLine, ch: cmSelectChStart});
-
-function applyCode() {
-
- var code = cmEditor.doc.getValue();
-
- try {
- var result = eval(code);
- } catch(e) {
- var result = 'Error: ' + e.message;
-}
-
- output.classList.add("fade-in");
- output.firstChild.textContent = result;
-
- output.firstChild.addEventListener("animationend", (e) => {
- e.target.parentNode.classList.remove("fade-in");
- });
-}
-
-reset.addEventListener("click", function() {
- cmEditor.doc.setValue(cmInitContent);
- cmEditor.focus();
- cmEditor.doc.setCursor({line: cmSelectLine, ch: cmSelectChStart});
- applyCode();
-});
-
-execute.addEventListener("click", function() {
- applyCode();
-});
-
-window.addEventListener("load", applyCode);
diff --git a/editable-samples/editor/pages/array-find/array-find.js b/editable-samples/editor/pages/array-find/array-find.js
deleted file mode 100644
index 3971724..0000000
--- a/editable-samples/editor/pages/array-find/array-find.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var cmInitContent =
-`// create an array
-var numbers = [5, 12, 8, 130, 44];
-
-// call find(), passing a function
-var found = numbers.find(function(e) { return e > 10});
-
-// log the result
-console.log(found);`;
-
-var cmSelectLine = 4;
-var cmSelectChStart = 25;
diff --git a/editable-samples/editor/pages/array-find/index.html b/editable-samples/editor/pages/array-find/index.html
deleted file mode 100644
index b07eec8..0000000
--- a/editable-samples/editor/pages/array-find/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/editable-samples/editor/pages/array-indexof/array-indexof.js b/editable-samples/editor/pages/array-indexof/array-indexof.js
deleted file mode 100644
index f796471..0000000
--- a/editable-samples/editor/pages/array-indexof/array-indexof.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var cmInitContent =
-`// create an array
-var beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];
-
-// call indexOf(), passing a value and optional start index
-var index = beasts.indexOf('bison');
-
-// log the result
-console.log(index);`;
-
-var cmSelectLine = 4;
-var cmSelectChStart = 27;
diff --git a/editable-samples/editor/pages/array-indexof/index.html b/editable-samples/editor/pages/array-indexof/index.html
deleted file mode 100644
index 6f7f410..0000000
--- a/editable-samples/editor/pages/array-indexof/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/editable-samples/editor/pages/array-map/array-map.js b/editable-samples/editor/pages/array-map/array-map.js
deleted file mode 100644
index 33246f0..0000000
--- a/editable-samples/editor/pages/array-map/array-map.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var cmInitContent =
-`// create an array
-var numbers = [1, 4, 9, 16];
-
-// call map(), passing a function
-var mapped = numbers.map(function(x) { return x * 2 });
-
-// log the result
-console.log(mapped);`;
-
-var cmSelectLine = 4;
-var cmSelectChStart = 25;
diff --git a/editable-samples/editor/pages/array-map/index.html b/editable-samples/editor/pages/array-map/index.html
deleted file mode 100644
index d627cf8..0000000
--- a/editable-samples/editor/pages/array-map/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/editable-samples/editor/pages/array-push/array-push.js b/editable-samples/editor/pages/array-push/array-push.js
deleted file mode 100644
index 6a8e138..0000000
--- a/editable-samples/editor/pages/array-push/array-push.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var cmInitContent =
-`// create an array
-var exampleArray = ['pigs', 'goats', 'sheep']
-
-// add one or more elements
-exampleArray.push('cows');
-
-// log the result
-console.log(exampleArray);`;
-
-var cmSelectLine = 4;
-var cmSelectChStart = 18;
diff --git a/editable-samples/editor/pages/array-push/index.html b/editable-samples/editor/pages/array-push/index.html
deleted file mode 100644
index a114aea..0000000
--- a/editable-samples/editor/pages/array-push/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/editable-samples/editor/pages/array-slice/array-slice.js b/editable-samples/editor/pages/array-slice/array-slice.js
deleted file mode 100644
index fe7288b..0000000
--- a/editable-samples/editor/pages/array-slice/array-slice.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var cmInitContent =
-`// create an array
-var a = ['ant', 'bison', 'camel', 'duck', 'elephant'];
-
-// call slice(), passing start and end indexes
-var sliced = a.slice(2, 4);
-
-// log the result
-console.log(sliced);`;
-
-var cmSelectLine = 4;
-var cmSelectChStart = 21;
diff --git a/editable-samples/editor/pages/array-slice/index.html b/editable-samples/editor/pages/array-slice/index.html
deleted file mode 100644
index 7519368..0000000
--- a/editable-samples/editor/pages/array-slice/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/editable-samples/repl/array-slice/array-slice.js b/editable-samples/repl/array-slice/array-slice.js
deleted file mode 100644
index dd7a9b5..0000000
--- a/editable-samples/repl/array-slice/array-slice.js
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-var init = 'var a = ["zero", "one", "two", "three"];';
-
-inputBox.value = init;
-var event = new Event('change');
-inputBox.dispatchEvent(event);
diff --git a/editable-samples/repl/array-slice/index.html b/editable-samples/repl/array-slice/index.html
deleted file mode 100644
index ffa0f1d..0000000
--- a/editable-samples/repl/array-slice/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- JavaScript console
-
-
-
-
-
- Reset
-
-
-
-
- >
-
-
-
-
-
-
-
-
diff --git a/editable-samples/repl/css/editable.css b/editable-samples/repl/css/editable.css
deleted file mode 100644
index 223f68a..0000000
--- a/editable-samples/repl/css/editable.css
+++ /dev/null
@@ -1,48 +0,0 @@
-
-* {
- box-sizing: border-box;
-}
-
-html, body {
- height: 100%;
-}
-
-html, input {
- background-color: #F4F7F8;
- color: black;
- font-family: monospace;
- font-size: 16px;
- line-height: 1.5;
-}
-
-body {
- max-width: 700px;
- max-height: 250px;
-}
-
-input {
- border: none;
- width: 90%;
-}
-
-#buttons {
- float: right;
- z-index: 1;
-}
-
-#repl {
- overflow: auto;
- height: 90%;
-}
-
-#history {
- opacity: 0.7;
-}
-
-.history-input {
- color: #690;
-}
-
-.history-output {
- color: #07a;
-}
diff --git a/editable-samples/repl/js/editable.js b/editable-samples/repl/js/editable.js
deleted file mode 100644
index 4e723a5..0000000
--- a/editable-samples/repl/js/editable.js
+++ /dev/null
@@ -1,80 +0,0 @@
-var commandHistory = [];
-var commandHistoryIndex = commandHistory.length;
-
-var reset = document.querySelector("#reset");
-reset.addEventListener('click', (e) => {
- document.location.reload();
-});
-
-var geval = eval;
-var gConsole = console;
-
-var console = {
- log: function(loggedItem) {
- if (typeof(loggedItem) === "string") {
- return loggedItem;
- } else {
- return eval(loggedItem);
- }
- }
-}
-
-var inputBox = document.querySelector("#input>input");
-
-inputBox.addEventListener('change', (e) => {
- executeCode(e.target.value);
-});
-
-inputBox.addEventListener('keyup', (event) => {
- if ((event.key === "Enter") && (event.target.value)) {
- executeCode(event.target.value);
- } else if ((event.key === "ArrowUp")) {
- if (commandHistoryIndex > 0) {
- commandHistoryIndex--;
- }
- event.target.value = commandHistory[commandHistoryIndex];
- } else if ((event.key === "ArrowDown")) {
- if (commandHistoryIndex < commandHistory.length-1) {
- commandHistoryIndex++;
- }
- if (commandHistoryIndex < commandHistory.length) {
- event.target.value = commandHistory[commandHistoryIndex];
- }
- }
-});
-
-function executeCode(code) {
- try {
- var result = geval(code);
- } catch(e) {
- var result = 'Error: ' + e.message;
- }
-
- var lastCommand = document.createElement('div');
- lastCommand.setAttribute('class','history-line');
- lastCommand.setAttribute('class','history-input');
- lastCommand.textContent = `> ${code}`;
-
- var lastResult = document.createElement('div');
- lastResult.setAttribute('class','history-line');
- lastResult.setAttribute('class','history-output');
- lastResult.textContent = result;
-
- var history = document.querySelector("#history");
- history.appendChild(lastCommand);
- history.appendChild(lastResult);
-
- inputBox.value = "";
- inputBox.focus();
-
- document.querySelector("#repl").scrollTop = inputBox.offsetTop;
-
- commandHistory.push(code);
- commandHistoryIndex = commandHistory.length;
-}
-
-document.body.addEventListener("click", (event) => {
- if (event.originalTarget === document.querySelector("#repl")) {
- inputBox.focus();
- }
-});
diff --git a/editable-samples/repl/pages/array-push/array-push.js b/editable-samples/repl/pages/array-push/array-push.js
deleted file mode 100644
index 9f8d23f..0000000
--- a/editable-samples/repl/pages/array-push/array-push.js
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-var init = "var exampleArray = ['pigs', 'goats', 'sheep']";
-
-inputBox.value = init;
-var event = new Event('change');
-inputBox.dispatchEvent(event);
diff --git a/editable-samples/repl/pages/array-push/index.html b/editable-samples/repl/pages/array-push/index.html
deleted file mode 100644
index c5b4fdd..0000000
--- a/editable-samples/repl/pages/array-push/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
JavaScript console
-
-
-
-
-
- Reset
-
-