diff --git a/css/panel.css b/css/panel.css index 7605592..19c0d38 100644 --- a/css/panel.css +++ b/css/panel.css @@ -16,11 +16,7 @@ top: 5px; } -#export-buttons-row div:first-child { - text-align: right; -} - -#export-buttons-row div:nth-child(2) { +#export-buttons-row div { text-align: center; } diff --git a/js/background.js b/js/background.js index c1dbe33..651bd6c 100644 --- a/js/background.js +++ b/js/background.js @@ -1,17 +1,19 @@ /* Allows to read, change and override settings kept in localStorage - - FIXME Can be replaced with chrome.storage.local as soon as http://crbug.com/178618 will be resolved - FIXME Can be replaced with localStorage on the panel page as soon as http://crbug.com/319328 will be resolved */ -chrome.runtime.onMessage.addListener(function (message, sender, callback) { +chrome.runtime.onMessage.addListener((message, sender, callback) => { "use strict"; - if (message.name === 'getSettings') { + if(message.name === 'getSettings') callback(localStorage); - } else if (message.name === 'setSettings') { - localStorage = message.data; - } else if (message.name === 'changeSetting') { - localStorage[message.item] = message.value; + + else if(message.name === 'setSettings') + chrome.storage.local.set(message.data); + + else if(message.name === 'changeSetting') { + let data = {}; + data[message.item] = message.value; + + chrome.storage.local.set(data); } }); diff --git a/js/panel.js b/js/panel.js index c956473..8379a61 100644 --- a/js/panel.js +++ b/js/panel.js @@ -16,6 +16,7 @@ codepenForm = $('#codepen-form'), jsfiddleForm = $('#jsfiddle-form'), jsbinForm = $('#jsbin-form'), + copyToClipboard = $('#copy-to-clipboard'), propertiesCleanUpInput = $('#properties-clean-up'), removeDefaultValuesInput = $('#remove-default-values'), @@ -56,9 +57,27 @@ jsbinForm.on('submit', function () { var htmlInput = jsbinForm.find('input[name=html]'); var cssInput = jsbinForm.find('input[name=css]'); + var csrfToken = jsbinForm.find('input[name=_csrf]'); - htmlInput.val(encodeURIComponent(htmlTextarea.val())); - cssInput.val(encodeURIComponent(cssTextarea.val())); + htmlInput.val(htmlTextarea.val()); + cssInput.val(cssTextarea.val()); + + if(!csrfToken.val()){ + fetch("https://jsbin.com") + .then(e => e.text()) + .then(e => { + let token = e.match(/name="_csrf" value="(.*?)"/)[1]; + csrfToken.val(token); + jsbinForm.find('[type=submit]').click(); + }); + + e.preventDefault(); + } + }); + + copyToClipboard.on('click', function () { + var text = htmlTextarea.val() + "\n\n\n" + cssTextarea.val(); + navigator.clipboard.writeText(text); }); //Event listeners diff --git a/manifest.json b/manifest.json index d9d39de..4837307 100644 --- a/manifest.json +++ b/manifest.json @@ -4,16 +4,25 @@ "version": "0.5", "manifest_version": 2, "minimum_chrome_version": "18.0", + + "permissions": [ + "storage", + "https://jsbin.com/" + ], + "icons": { "24": "gfx/icon_24.png", "128": "gfx/icon_128.png" }, + "devtools_page": "devtools.html", + "background": { "scripts": [ "js/background.js" ], "persistent": false }, + "content_security_policy": "script-src 'self' https://apis.google.com https://platform.twitter.com https://www.facebook.com; object-src 'self'" } diff --git a/panel.html b/panel.html index e5fb273..ded733e 100644 --- a/panel.html +++ b/panel.html @@ -103,25 +103,40 @@