├── .gitignore
├── CNAME
├── LICENSE
├── README.md
├── css
└── style.css
├── img
├── brand.png
├── icons
│ ├── android-chrome-192x192.png
│ ├── android-chrome-512x512.png
│ ├── apple-touch-icon.png
│ ├── browserconfig.xml
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon.ico
│ ├── mstile-150x150.png
│ └── safari-pinned-tab.svg
├── ipad-1.png
├── logo.png
├── social.jpg
└── splash
│ ├── ipad_splash.png
│ ├── ipadpro1_splash.png
│ ├── ipadpro2_splash.png
│ ├── ipadpro3_splash.png
│ ├── iphone5_splash.png
│ ├── iphone6_splash.png
│ ├── iphoneplus_splash.png
│ ├── iphonex_splash.png
│ ├── iphonexr_splash.png
│ └── iphonexsmax_splash.png
├── index.html
├── js
├── lib
│ ├── ace
│ │ ├── ace.js
│ │ ├── ext-beautify.js
│ │ ├── ext-elastic_tabstops_lite.js
│ │ ├── ext-emmet.js
│ │ ├── ext-error_marker.js
│ │ ├── ext-keybinding_menu.js
│ │ ├── ext-language_tools.js
│ │ ├── ext-linking.js
│ │ ├── ext-modelist.js
│ │ ├── ext-options.js
│ │ ├── ext-prompt.js
│ │ ├── ext-rtl.js
│ │ ├── ext-searchbox.js
│ │ ├── ext-settings_menu.js
│ │ ├── ext-spellcheck.js
│ │ ├── ext-split.js
│ │ ├── ext-static_highlight.js
│ │ ├── ext-statusbar.js
│ │ ├── ext-textarea.js
│ │ ├── ext-themelist.js
│ │ ├── ext-whitespace.js
│ │ ├── keybinding-emacs.js
│ │ ├── keybinding-sublime.js
│ │ ├── keybinding-vim.js
│ │ ├── mode-abap.js
│ │ ├── mode-abc.js
│ │ ├── mode-asciidoc.js
│ │ ├── mode-asl.js
│ │ ├── mode-autohotkey.js
│ │ ├── mode-c9search.js
│ │ ├── mode-coffee.js
│ │ ├── mode-css.js
│ │ ├── mode-curly.js
│ │ ├── mode-diff.js
│ │ ├── mode-dot.js
│ │ ├── mode-haml.js
│ │ ├── mode-handlebars.js
│ │ ├── mode-hjson.js
│ │ ├── mode-html.js
│ │ ├── mode-html_elixir.js
│ │ ├── mode-html_ruby.js
│ │ ├── mode-io.js
│ │ ├── mode-jack.js
│ │ ├── mode-jade.js
│ │ ├── mode-javascript.js
│ │ ├── mode-json.js
│ │ ├── mode-jsoniq.js
│ │ ├── mode-jssm.js
│ │ ├── mode-jsx.js
│ │ ├── mode-less.js
│ │ ├── mode-liquid.js
│ │ ├── mode-markdown.js
│ │ ├── mode-mask.js
│ │ ├── mode-matlab.js
│ │ ├── mode-nim.js
│ │ ├── mode-nix.js
│ │ ├── mode-pig.js
│ │ ├── mode-plain_text.js
│ │ ├── mode-properties.js
│ │ ├── mode-rhtml.js
│ │ ├── mode-sass.js
│ │ ├── mode-scss.js
│ │ ├── mode-slim.js
│ │ ├── mode-smarty.js
│ │ ├── mode-snippets.js
│ │ ├── mode-stylus.js
│ │ ├── mode-svg.js
│ │ ├── mode-text.js
│ │ ├── mode-tsx.js
│ │ ├── mode-twig.js
│ │ ├── mode-typescript.js
│ │ ├── mode-xml.js
│ │ ├── mode-xquery.js
│ │ ├── mode-yaml.js
│ │ ├── snippets
│ │ │ ├── abap.js
│ │ │ ├── abc.js
│ │ │ ├── asciidoc.js
│ │ │ ├── autohotkey.js
│ │ │ ├── c9search.js
│ │ │ ├── coffee.js
│ │ │ ├── css.js
│ │ │ ├── curly.js
│ │ │ ├── diff.js
│ │ │ ├── dot.js
│ │ │ ├── haml.js
│ │ │ ├── handlebars.js
│ │ │ ├── hjson.js
│ │ │ ├── html.js
│ │ │ ├── html_elixir.js
│ │ │ ├── html_ruby.js
│ │ │ ├── ini.js
│ │ │ ├── io.js
│ │ │ ├── jack.js
│ │ │ ├── jade.js
│ │ │ ├── javascript.js
│ │ │ ├── json.js
│ │ │ ├── jsoniq.js
│ │ │ ├── jssm.js
│ │ │ ├── jsx.js
│ │ │ ├── latex.js
│ │ │ ├── less.js
│ │ │ ├── liquid.js
│ │ │ ├── markdown.js
│ │ │ ├── nim.js
│ │ │ ├── nix.js
│ │ │ ├── pig.js
│ │ │ ├── plain_text.js
│ │ │ ├── properties.js
│ │ │ ├── rhtml.js
│ │ │ ├── sass.js
│ │ │ ├── scheme.js
│ │ │ ├── scss.js
│ │ │ ├── sjs.js
│ │ │ ├── slim.js
│ │ │ ├── smarty.js
│ │ │ ├── snippets.js
│ │ │ ├── stylus.js
│ │ │ ├── svg.js
│ │ │ ├── tex.js
│ │ │ ├── text.js
│ │ │ ├── tsx.js
│ │ │ ├── twig.js
│ │ │ ├── typescript.js
│ │ │ ├── xml.js
│ │ │ ├── xquery.js
│ │ │ └── yaml.js
│ │ ├── theme-ambiance.js
│ │ ├── theme-chaos.js
│ │ ├── theme-chrome.js
│ │ ├── theme-clouds.js
│ │ ├── theme-clouds_midnight.js
│ │ ├── theme-cobalt.js
│ │ ├── theme-crimson_editor.js
│ │ ├── theme-dawn.js
│ │ ├── theme-dracula.js
│ │ ├── theme-dreamweaver.js
│ │ ├── theme-eclipse.js
│ │ ├── theme-github.js
│ │ ├── theme-gob.js
│ │ ├── theme-gruvbox.js
│ │ ├── theme-idle_fingers.js
│ │ ├── theme-iplastic.js
│ │ ├── theme-katzenmilch.js
│ │ ├── theme-kr_theme.js
│ │ ├── theme-kuroir.js
│ │ ├── theme-merbivore.js
│ │ ├── theme-merbivore_soft.js
│ │ ├── theme-mono_industrial.js
│ │ ├── theme-monokai.js
│ │ ├── theme-pastel_on_dark.js
│ │ ├── theme-solarized_dark.js
│ │ ├── theme-solarized_light.js
│ │ ├── theme-sqlserver.js
│ │ ├── theme-terminal.js
│ │ ├── theme-textmate.js
│ │ ├── theme-tomorrow.js
│ │ ├── theme-tomorrow_night.js
│ │ ├── theme-tomorrow_night_blue.js
│ │ ├── theme-tomorrow_night_bright.js
│ │ ├── theme-tomorrow_night_eighties.js
│ │ ├── theme-twilight.js
│ │ ├── theme-vibrant_ink.js
│ │ ├── theme-xcode.js
│ │ ├── worker-coffee.js
│ │ ├── worker-css.js
│ │ ├── worker-html.js
│ │ ├── worker-javascript.js
│ │ ├── worker-json.js
│ │ ├── worker-lua.js
│ │ ├── worker-php.js
│ │ ├── worker-xml.js
│ │ └── worker-xquery.js
│ ├── font-awesome.all.min.css
│ ├── framework7.bundle.min.css
│ ├── framework7.bundle.min.js
│ ├── framework7.bundle.min.js.map
│ └── renderjson.js
├── main.js
├── modules
│ ├── app.js
│ ├── console.js
│ ├── editors.js
│ ├── events.js
│ ├── f7.js
│ ├── projects.js
│ ├── settings.js
│ ├── storage.js
│ ├── templates
│ │ ├── help.js
│ │ ├── projects.js
│ │ └── select.js
│ ├── ui.js
│ └── utils.js
├── sw-cache.js
├── sw-init.js
├── version.js
└── webfonts
│ ├── fa-brands-400.eot
│ ├── fa-brands-400.svg
│ ├── fa-brands-400.ttf
│ ├── fa-brands-400.woff
│ ├── fa-brands-400.woff2
│ ├── fa-regular-400.eot
│ ├── fa-regular-400.svg
│ ├── fa-regular-400.ttf
│ ├── fa-regular-400.woff
│ ├── fa-regular-400.woff2
│ ├── fa-solid-900.eot
│ ├── fa-solid-900.svg
│ ├── fa-solid-900.ttf
│ ├── fa-solid-900.woff
│ └── fa-solid-900.woff2
├── landing
└── index.html
├── manifest.json
└── sw.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | .vscode
17 | *.suo
18 | *.ntvs*
19 | *.njsproj
20 | *.sln
21 | *.sw?
22 |
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | webden.dev
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 2-Clause License
2 |
3 | Copyright (c) 2021, Chris Diana
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | 1. Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | 2. Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | [WebDen.dev](https://webden.dev) is an open source mobile and tablet friendly alternative to JSFiddle and JSBin.
5 | It is a fully client-side app so you can install it as a progressive web app (PWA) on
6 | your device to use offline.
7 |
8 | 
9 |
10 |
11 | ## Features
12 |
13 | * HTML, CSS & JS editors
14 | * JavaScript console emulation
15 | * Preview panel
16 | * Designed first for mobile and tablet use
17 | * Import and export projects
18 | * Save code as HTML
19 | * Light & dark themes
20 | * Keyboard shortcuts
21 | * Offline support
22 |
23 | ## Why?
24 |
25 | The landscape of online editors aren't currently optimized for mobile or tablet. The iOS apps
26 | in this space have improved but were limited when this project originally started.
27 |
28 |
29 | ## How to install
30 |
31 | **iOS Safari**
32 |
33 | Go to *Share Menu > Add to Home Screen*
34 |
35 | **Chrome**
36 |
37 | Go to *Settings > Add to Home Screen*
38 |
39 |
40 | ## How to use libraries or frameworks
41 |
42 | Add any scripts to the HTML tab as you would in a HTML file.
43 |
44 |
45 | ## Coming Soon
46 |
47 | [Sign up](http://eepurl.com/gntUvf) to get updates on new features and releases.
48 |
49 | * Save as Github Gist
50 | * Pushing / Pulling from Github
51 | * Updated console features
52 | * Updated editor theme features
53 | * Capture JavaScript errors (for console)
54 |
55 |
56 | ## License
57 |
58 | * The program is distributed under the terms of the Simplified BSD License. The license details can be found in the file `LICENSE`
59 | * The ACE editor is BSD licensed.
60 |
61 |
62 | ## Contributing
63 |
64 | 1. Fork and clone the repo
65 | 2. Run any local web server in the root directory
66 |
67 | ```
68 | $ git clone git@github.com:chrisdiana/webden.git
69 | $ cd webden/
70 | $ python3 -m http.server 8080
71 | ```
72 |
73 | 3. Navigate to the local webserver and pass the `debug=1` param to bypass service workers
74 |
75 | ```
76 | http://localhost:8080?debug=1
77 | ```
78 |
79 | ## Thanks!
80 |
81 | * [Ace](http://ace.c9.io)
82 | * [Framework7](http://framework7.io/)
83 | * [RenderJSON](https://github.com/caldwell/renderjson)
84 |
--------------------------------------------------------------------------------
/img/brand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/brand.png
--------------------------------------------------------------------------------
/img/icons/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/icons/android-chrome-192x192.png
--------------------------------------------------------------------------------
/img/icons/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/icons/android-chrome-512x512.png
--------------------------------------------------------------------------------
/img/icons/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/icons/apple-touch-icon.png
--------------------------------------------------------------------------------
/img/icons/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #262626
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/img/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/img/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/img/icons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/icons/favicon.ico
--------------------------------------------------------------------------------
/img/icons/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/icons/mstile-150x150.png
--------------------------------------------------------------------------------
/img/icons/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
31 |
--------------------------------------------------------------------------------
/img/ipad-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/ipad-1.png
--------------------------------------------------------------------------------
/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/logo.png
--------------------------------------------------------------------------------
/img/social.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/social.jpg
--------------------------------------------------------------------------------
/img/splash/ipad_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/ipad_splash.png
--------------------------------------------------------------------------------
/img/splash/ipadpro1_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/ipadpro1_splash.png
--------------------------------------------------------------------------------
/img/splash/ipadpro2_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/ipadpro2_splash.png
--------------------------------------------------------------------------------
/img/splash/ipadpro3_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/ipadpro3_splash.png
--------------------------------------------------------------------------------
/img/splash/iphone5_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/iphone5_splash.png
--------------------------------------------------------------------------------
/img/splash/iphone6_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/iphone6_splash.png
--------------------------------------------------------------------------------
/img/splash/iphoneplus_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/iphoneplus_splash.png
--------------------------------------------------------------------------------
/img/splash/iphonex_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/iphonex_splash.png
--------------------------------------------------------------------------------
/img/splash/iphonexr_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/iphonexr_splash.png
--------------------------------------------------------------------------------
/img/splash/iphonexsmax_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chrisdiana/webden/1429bb701b3484f974a53bbbb58c7600550ea0a1/img/splash/iphonexsmax_splash.png
--------------------------------------------------------------------------------
/js/lib/ace/ext-beautify.js:
--------------------------------------------------------------------------------
1 | define("ace/ext/beautify",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function i(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../token_iterator").TokenIterator;t.singletonTags=["area","base","br","col","command","embed","hr","html","img","input","keygen","link","meta","param","source","track","wbr"],t.blockTags=["article","aside","blockquote","body","div","dl","fieldset","footer","form","head","header","html","nav","ol","p","script","section","style","table","tbody","tfoot","thead","ul"],t.beautify=function(e){var n=new r(e,0,0),s=n.getCurrentToken(),o=e.getTabString(),u=t.singletonTags,a=t.blockTags,f,l=!1,c=!1,h=!1,p="",d="",v="",m=0,g=0,y=0,b=0,w=0,E=0,S=0,x,T=0,N=0,C=[],k=!1,L,A=!1,O=!1,M=!1,_=!1,D={0:0},P=[],H=function(){f&&f.value&&f.type!=="string.regexp"&&(f.value=f.value.trim())},B=function(){p=p.replace(/ +$/,"")},j=function(){p=p.trimRight(),l=!1};while(s!==null){T=n.getCurrentTokenRow(),C=n.$rowTokens,f=n.stepForward();if(typeof s!="undefined"){d=s.value,w=0,M=v==="style"||e.$modeId==="ace/mode/css",i(s,"tag-open")?(O=!0,f&&(_=a.indexOf(f.value)!==-1),d===""&&(_&&!l&&N<1&&N++,M&&(N=1),w=1,_=!1)):i(s,"tag-close")?O=!1:i(s,"comment.start")?_=!0:i(s,"comment.end")&&(_=!1),!O&&!N&&s.type==="paren.rparen"&&s.value.substr(0,1)==="}"&&N++,T!==x&&(N=T,x&&(N-=x));if(N){j();for(;N>0;N--)p+="\n";l=!0,!i(s,"comment")&&!s.type.match(/^(comment|string)$/)&&(d=d.trimLeft())}if(d){s.type==="keyword"&&d.match(/^(if|else|elseif|for|foreach|while|switch)$/)?(P[m]=d,H(),h=!0,d.match(/^(else|elseif)$/)&&p.match(/\}[\s]*$/)&&(j(),c=!0)):s.type==="paren.lparen"?(H(),d.substr(-1)==="{"&&(h=!0,A=!1,O||(N=1)),d.substr(0,1)==="{"&&(c=!0,p.substr(-1)!=="["&&p.trimRight().substr(-1)==="["?(j(),c=!1):p.trimRight().substr(-1)===")"?j():B())):s.type==="paren.rparen"?(w=1,d.substr(0,1)==="}"&&(P[m-1]==="case"&&w++,p.trimRight().substr(-1)==="{"?j():(c=!0,M&&(N+=2))),d.substr(0,1)==="]"&&p.substr(-1)!=="}"&&p.trimRight().substr(-1)==="}"&&(c=!1,b++,j()),d.substr(0,1)===")"&&p.substr(-1)!=="("&&p.trimRight().substr(-1)==="("&&(c=!1,b++,j()),B()):s.type!=="keyword.operator"&&s.type!=="keyword"||!d.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)?s.type==="punctuation.operator"&&d===";"?(j(),H(),h=!0,M&&N++):s.type==="punctuation.operator"&&d.match(/^(:|,)$/)?(j(),H(),d.match(/^(,)$/)&&S>0&&E===0?N++:(h=!0,l=!1)):s.type==="support.php_tag"&&d==="?>"&&!l?(j(),c=!0):i(s,"attribute-name")&&p.substr(-1).match(/^\s$/)?c=!0:i(s,"attribute-equals")?(B(),H()):i(s,"tag-close")&&(B(),d==="/>"&&(c=!0)):(j(),H(),c=!0,h=!0);if(l&&(!s.type.match(/^(comment)$/)||!!d.substr(0,1).match(/^[/#]$/))&&(!s.type.match(/^(string)$/)||!!d.substr(0,1).match(/^['"]$/))){b=y;if(m>g){b++;for(L=m;L>g;L--)D[L]=b}else m")_&&f&&f.value===""?N=-1:N=1;i(s,"tag-open")&&d===""?m--:i(s,"tag-open")&&d==="<"&&u.indexOf(f.value)===-1?m++:i(s,"tag-name")?v=d:i(s,"tag-close")&&d==="/>"&&u.indexOf(v)===-1&&m--,x=T}}s=f}p=p.trim(),e.doc.setValue(p)},t.commands=[{name:"beautify",description:"Format selection (Beautify)",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]}); (function() {
2 | window.require(["ace/ext/beautify"], function(m) {
3 | if (typeof module == "object" && typeof exports == "object" && module) {
4 | module.exports = m;
5 | }
6 | });
7 | })();
8 |
--------------------------------------------------------------------------------
/js/lib/ace/ext-elastic_tabstops_lite.js:
--------------------------------------------------------------------------------
1 | define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"],function(e,t,n){"use strict";var r=function(e){this.$editor=e;var t=this,n=[],r=!1;this.onAfterExec=function(){r=!1,t.processRows(n),n=[]},this.onExec=function(){r=!0},this.onChange=function(e){r&&(n.indexOf(e.start.row)==-1&&n.push(e.start.row),e.end.row!=e.start.row&&n.push(e.end.row))}};(function(){this.processRows=function(e){this.$inChange=!0;var t=[];for(var n=0,r=e.length;n-1)continue;var s=this.$findCellWidthsForBlock(i),o=this.$setBlockCellWidthsToMax(s.cellWidths),u=s.firstRow;for(var a=0,f=o.length;a=0){n=this.$cellWidthsForRow(r);if(n.length==0)break;t.unshift(n),r--}var i=r+1;r=e;var s=this.$editor.session.getLength();while(r0&&(this.$editor.session.getDocument().insertInLine({row:e,column:f+1},Array(l+1).join(" ")+" "),this.$editor.session.getDocument().removeInLine(e,f,f+1),r+=l),l<0&&p>=-l&&(this.$editor.session.getDocument().removeInLine(e,f+l,f),r+=l)}},this.$izip_longest=function(e){if(!e[0])return[];var t=e[0].length,n=e.length;for(var r=1;rt&&(t=i)}var s=[];for(var o=0;o=t.length?t.length:e.length,r=[];for(var i=0;i