Marked in the browser
+Rendered by marked.
+diff --git a/src/js/src/js/solitude.js b/src/js/src/js/solitude.js index be84343..d16e4f2 100644 --- a/src/js/src/js/solitude.js +++ b/src/js/src/js/solitude.js @@ -1,16 +1,122 @@ -window.persistence = persistenceFunc; -function persistenceFunc() { - const strategies = {}; - strategies.local = writeLocal; - return strategies; +(function graftSolitude(global) { + var solitude; + (function dismantleGlobal() { + global.solitude = solitude = global.solitude || { + "variant": "web", + get global() { return global; }, + get postMessage() {return global.postMessage}, + get createURL() {return global.URL.createObjectURL}, + get main() { return global.parent}, + get origin() { return global.parent.location.origin}, + get myOrigin() { return global.location.origin}, + get console() {return global.parent.console}, + get message() {return message}, + get persistence() {return persistenceFunc}, + }; - // declearation + const message = { + get post() {return solitude.postMessage }, + get addListener() {return addMessageListener}, + get removeListener() { return } + }; + + + function addMessageListener(listener, bool) { + bool = bool || false; + global.addEventListener("message",listener,bool); + } + + function removeMessageListener(listener, option, useCapture) { + global.removeEventListener("message", listener) + } + })(); + io(solitude); + return solitude; + + //declaretions + function persistenceFunc() { + const strategies = { + get local() {return writeLocal}, + get download() { return download}, + get console() { return solitude.console} + }; + return strategies; + } + + //file output strategies function writeLocal(path, content) { const message = { "path": path, "content": content, } - window.parent.postMessage(JSON.stringify(message), window.parent.location.origin) + solitude.message.post(JSON.stringify(message), solitude.origin) } -} \ No newline at end of file + + function readLocal(path, response) { + //requestIdは2バイトの後ろのほう + const request = {"path": path, "requestId":__getRandomInt(50000,60000) } + + const receiver = function(event) { + if(event.origin != slitude.origin) + return ; + + const message = jSON.parse(event.data); + if(message.requestId != request.requestId ) { + return; + } + solitude.removeMessageListener(receiver); + response(message.success, message.content); + } + solitude.message.addListener(receiver); + solitude.message.post(JSON.stringify(request), solitude.origin); + } + + function __getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min) + min) + } + + function download(filename, content, mimeType) { + const blob = new Blob([content], { "type": mimeType }); + const link = document.createElement('a'); + + link.href = solitude.createURL(blob); + link.download = filename; + link.click() + } + + function log(log) { + + } + + function io(solitude) { + //std can customize + const initialStd = { + get out() {return solitude.global.console.log }, + get in() {return noop}, + } + var std = initialStd; + + solitude.io = { + get std() { return std; }, + set std(value) { std = value; }, + get console() { return solitude.console; }, + get fs() {return fs} + } + + const fs = { + get write() { return writeLocal}, + get download() {return download}, + get read() { return readLocal}, + get out() { return this.write}, + get in() { return this.read}, + } + } + + function noop() { + //do nothing + } +}) (window); + diff --git a/src/js/src/main/app.html b/src/js/src/main/app.html index 0fd2a7b..fd0022a 100644 --- a/src/js/src/main/app.html +++ b/src/js/src/main/app.html @@ -26,24 +26,36 @@
This is first Solitude
This is second Solitude
+This is third Solitude
Rendered by marked.
+diff --git a/src/js/src/main/css/color-sample.css b/src/js/src/main/css/color-sample.css index c265496..da9fa8d 100644 --- a/src/js/src/main/css/color-sample.css +++ b/src/js/src/main/css/color-sample.css @@ -17,4 +17,8 @@ } #main > div:nth-child(3) { background-color: #CCCCCC; +} + +#plugins { + display: none; } \ No newline at end of file diff --git a/src/js/src/main/css/index.css b/src/js/src/main/css/index.css index b43b608..f857027 100644 --- a/src/js/src/main/css/index.css +++ b/src/js/src/main/css/index.css @@ -7,6 +7,7 @@ #main { white-space:nowrap; overflow-x: scroll; + perspective: 3000px; } #main > div { @@ -78,6 +79,7 @@ height: 1.25em; overflow:hidden; text-overflow: clip; + } #left-menu img { diff --git a/src/js/src/main/index.js b/src/js/src/main/index.js index ce206f4..bc35c34 100644 --- a/src/js/src/main/index.js +++ b/src/js/src/main/index.js @@ -14,6 +14,7 @@ }); }); + function createWindow() { const preloadPath = path.join(__dirname, 'preload.js') console.log(preloadPath); diff --git a/src/js/src/main/preload.js b/src/js/src/main/preload.js index e5946cf..6cf8496 100644 --- a/src/js/src/main/preload.js +++ b/src/js/src/main/preload.js @@ -6,5 +6,9 @@ contextBridge.exposeInMainWorld('solitude', { "write": { "local" : (path,contents) => ipcRenderer.send("write.local", path,contents) - } + }, + + "env": { + "dir" : __dirname + }, }) diff --git a/src/js/src/mdeditor/app.html b/src/js/src/mdeditor/app.html new file mode 100644 index 0000000..9b18661 --- /dev/null +++ b/src/js/src/mdeditor/app.html @@ -0,0 +1,286 @@ + + + +
+ + +
+ + + + + +
+ +