jerkovicl
2/24/2015 - 10:39 AM

LICENSE.txt

<!DOCTYPE html> 
<title>Offline Text Editor</title>
<style>
  body { font: 2rem/1.5 monospace;max-width:60rem;margin:0 auto;padding:4rem;}
</style>
<body>
<script>
 !function(l){with(document.body)contentEditable=!0,innerHTML=[l.c],oninput=function(){l.c=innerHTML}}(localStorage);
</script>
</body>
{
  "name": "offlineTextEditor",

  "description": "ContentEditable-powered Offline text editor",

  "keywords": [
    "text",
    "edit",
    "editor",
    "localStorage",
    "offline"
  ]
}

Edit: Thanks to help from @mathiasbynens, @subzey and @beaufortfrancois we are now down to 115 bytes from my original 136.

I use this as a JavaScript snippet or bookmarklet in Chrome to turn the current blank tab into an offline text-editor which stores what I write in localStorage. The < 140 character version can be run via console.

The original version that you can add as a bookmarklet:

(function(d){l=localStorage,k='c',q=d.body;q.contentEditable=true;q.innerHTML=l[k]||'';q.oninput=function(){l[k]=q.innerHTML;}})(document);

A demo version of this is available on JSBin.

The optimized version (115 bytes):

!function(l){with(document.body)contentEditable=!0,innerHTML=[l.c],oninput=function(){l.c=innerHTML}}(localStorage)

Pretty version

Prettier version of the implementation using document.write (hah) to write over any existing tab content, gives you some styling too:

javascript:(function(d){d.write('<body contenteditable style="font: 2rem/1.5 monospace;max-width:60rem;margin:0 auto;padding:4rem;">');var k = 'c'; var q = d.querySelector('body');q.innerHTML=localStorage[k];q.oninput=function(){localStorage[k]=q.innerHTML;}})(document);

Preview:

!function(l){with(document.body)contentEditable=!0,innerHTML=[l.c],oninput=function(){l.c=innerHTML}}(localStorage)

with({
    l: localStorage // Alias for localStorage, where we'll store text content
}) with(document.body) // With the document body..
contentEditable = !0, // Turn on contentEditable
innerHTML = [l.c], // Set innerHTML of our element to the value stored in localStorage
oninput = function () { // On input..
    l.c = innerHTML // store our content in localStorage
}
            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE

 Copyright (C) 2014 ADDY OSMANI <addyosmani.com>

 Everyone is permitted to copy and distribute verbatim or modified
 copies of this license document, and changing it is allowed as long
 as the name is changed.

            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. You just DO WHAT THE FUCK YOU WANT TO.