define([ '/api/config?cb=' + Math.random().toString(16).substring(2), '/common/realtime-input.js', '/common/messages.js', '/common/crypto.js', '/common/marked.js', '/common/convert.js', '/bower_components/jquery/dist/jquery.min.js', '/customize/pad.js' ], function (Config, Realtime, Messages, Crypto, Marked, Convert) { var $ = jQuery; var Vdom = Convert.core.vdom, Hyperjson = Convert.core.hyperjson, Hyperscript = Convert.core.hyperscript; window.Vdom = Vdom; window.Hyperjson = Hyperjson; window.Hyperscript = Hyperscript; $(window).on('hashchange', function() { window.location.reload(); }); if (window.location.href.indexOf('#') === -1) { window.location.href = window.location.href + '#' + Crypto.genKey(); return; } var key = Crypto.parseKey(window.location.hash.substring(1)); var $textarea = $('textarea'), $target = $('#target'); var stripScripts = function (md) { return md.replace(/<[\s\S]*?script[\s\S]*?>[\s\S]*?<\/script[\s\S]*?>/ig, ""); }; window.$textarea = $textarea; // set markdwon rendering options Marked.setOptions({ sanitize: true }); window.draw = (function () { var target = $target[0], inner = $target.find('#inner')[0]; if (!target) { throw new Error(); } var Previous = Convert.dom.to.vdom(inner); return function (md) { // strip scripts or people get xss var rendered = stripScripts(Marked(md||"")); // make a dom var R = $('
'+rendered+'
')[0]; var New = Convert.dom.to.vdom(R); var patches = Vdom.diff(Previous, New); Vdom.patch(inner, patches); Previous = New; return patches; }; }()); window.colour = (function () { var r = 0.6, n = 24, i = 0, t = [], rgb = [0,2,4]; while(i