From d02f894d4a5a0db24c955014e65be176be832616 Mon Sep 17 00:00:00 2001 From: Jiiks Date: Mon, 25 Feb 2019 12:41:22 +0200 Subject: [PATCH] Style inject --- client/src/modules/editor.js | 6 ++++++ core/src/modules/editor.js | 16 ++++++++++++++++ editor/src/Editor.vue | 8 +++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/client/src/modules/editor.js b/client/src/modules/editor.js index 2f5a8e10..c4113215 100644 --- a/client/src/modules/editor.js +++ b/client/src/modules/editor.js @@ -9,6 +9,7 @@ */ import Module from './imodule'; +import { DOM } from 'ui'; export default new class extends Module { @@ -30,6 +31,11 @@ export default new class extends Module { e.reply({ err: err.stack || err }); } }); + + ipc.on('editor-injectStyle', (e, { id, style }) => { + DOM.injectStyle(style, `userstyle-${id}`); + e.reply('ok'); + }); } /** diff --git a/core/src/modules/editor.js b/core/src/modules/editor.js index 8f3615f5..0588e93d 100644 --- a/core/src/modules/editor.js +++ b/core/src/modules/editor.js @@ -14,6 +14,7 @@ import { BrowserWindow } from 'electron'; import Module from './modulebase'; import { WindowUtils, FileUtils } from './utils'; import BDIpc from './bdipc'; +import sass from 'node-sass'; export default class Editor extends Module { @@ -68,6 +69,21 @@ export default class Editor extends Module { console.log(snippet); event.reply('ok'); }); + + BDIpc.on('editor-injectStyle', async (event, { id, style }) => { + sass.render({ data: style }, (err, result) => { + if (err) { + console.log(err); + event.reply({ err }); + return; + } + const { css } = result; + (async () => { + await this.sendToDiscord('editor-injectStyle', { id, style: css.toString() }); + event.reply('ok'); + })(); + }); + }); } resolveMode(fileName) { diff --git a/editor/src/Editor.vue b/editor/src/Editor.vue index b79261d2..f35313fc 100644 --- a/editor/src/Editor.vue +++ b/editor/src/Editor.vue @@ -22,7 +22,8 @@ :newFile="newFile" :saveFile="saveFile" :newSnippet="newSnippet" - :saveSnippet="saveSnippet" /> + :saveSnippet="saveSnippet" + :injectStyle="injectStyle"/> @@ -131,6 +132,11 @@ console.log(result); }, + async injectStyle(item) { + const result = await ClientIPC.send('bd-editor-injectStyle', { id: item.name.split('.')[0], style: item.content }); + return result; + }, + toggleaot() { this.alwaysOnTop = !this.alwaysOnTop; remote.getCurrentWindow().setAlwaysOnTop(this.alwaysOnTop);