UNPKG

ares-ide

Version:

A browser-based code editor and UI designer for Enyo 2 projects

116 lines (97 loc) 3.99 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <link href="style.css" rel="stylesheet" type="text/css"> <title>Ace Bookmarklet Builder</title> </head> <body> <div id="wrapper"> <div class="content" style="width: 950px"> <div class="column1" style="margin-top: 47px"> <textarea id="textarea" style="width:300px; height:300px"> /** * This is Ace injected using a bookmarklet. */ function foo() { var bar = true; }</textarea><br> SourceUrl: <br> <input id="srcURL" style="width:300px" value="http://ajaxorg.github.com/ace-builds/textarea/src/"></input><br> <button id="buBuild">Build Link</button> <br> <a href="#"></a> <a href="https://github.com/ajaxorg/ace/"> <div class="fork_on_github" ></div> </a> </div> <div class="column2"> <h1>Ace Bookmarklet Builder</h1> <p id="first"> <strong>WARNING:</strong> Currently, this is only supported in non IE browsers. </p> <h2>How to use it:</h2> <ul> <li>Select the options as you want them to be by default.</li> <li>Enter the "SourceUrl". This has to be the URL pointing to build/textarea/src/ (you can leave the default to server the scripts from GitHub).</li> <li>Click the "Build Link" button to generate your custom Ace Bookmarklet.</li> <li>Drag the generated link to your toolbar or store it somewhere else.</li> <li>Go to a page with a textarea element and click the bookmarklet - wait a little bit till the files are loaded.</li> <li>Click three times on the textarea you want to replace - Ace will replace it.</li> <li>To change settings, just click the red icon in the bottom right corner.</li> </ul> </div> </div> </div> <script> function inject(callback) { var baseUrl = "src/"; var load = window.__ace_loader__ = function(path, module, callback) { var head = document.getElementsByTagName('head')[0]; var s = document.createElement('script'); s.src = baseUrl + path; head.appendChild(s); s.onload = function() { window.__ace_shadowed__.require([module], callback); }; }; load('ace-bookmarklet.js', "ace/ext/textarea", function() { var ace = window.__ace_shadowed__; ace.options.mode = "javascript"; var Event = ace.require("ace/lib/event"); var areas = document.getElementsByTagName("textarea"); for (var i = 0; i < areas.length; i++) { Event.addListener(areas[i], "click", function(e) { if (e.detail == 3) { ace.transformTextarea(e.target, load); } }); } callback && callback(); }); } // Call the inject function to load the ace files. var textAce; inject(function () { // Transform the textarea on the page into an ace editor. var ace = window.__ace_shadowed__; var t = document.querySelector("textarea"); textAce = ace.transformTextarea(t, window.__ace_loader__); setTimeout(function(){textAce.setDisplaySettings(true)}); }); document.getElementById("buBuild").onclick = function() { var injectSrc = inject.toString().split("\n").join(""); injectSrc = injectSrc.replace('baseUrl = "src/"', 'baseUrl="' + document.getElementById("srcURL").value + '"'); var aceOptions = textAce.getOptions(); var opt = []; for (var option in aceOptions) { opt.push(option + ":'" + aceOptions[option] + "'"); } injectSrc = injectSrc.replace('ace.options.mode = "javascript"', 'ace.options = { ' + opt.join(",") + ' }'); injectSrc = injectSrc.replace(/\s+/g, " "); var a = document.querySelector("a"); a.href = "javascript:(" + injectSrc + ")()"; a.innerHTML = "Ace Bookmarklet Link"; } </script> </body> </html>