diff --git a/app/index.html b/app/index.html index a19a4aa..dc9ef26 100644 --- a/app/index.html +++ b/app/index.html @@ -229,7 +229,7 @@ - © Web Maker    + ©Web Maker    diff --git a/app/script.js b/app/script.js index 63bef35..31cdb3e 100644 --- a/app/script.js +++ b/app/script.js @@ -238,14 +238,44 @@ if ('serviceWorker' in navigator) { }); } + function downloadFile(fileName, blob) { + function downloadWithAnchor() { + var a = document.createElement('a'); + a.href = window.URL.createObjectURL(blob); + a.download = fileName; + a.style.display = 'none'; + document.body.appendChild(a); + a.click(); + a.remove(); + } + if (window.IS_EXTENSION) { + chrome.downloads.download( + { + url: window.URL.createObjectURL(blob), + filename: fileName, + saveAs: true + }, + () => { + // If there was an error, just download the file using ANCHOR method. + if (chrome.runtime.lastError) { + downloadWithAnchor(); + } + } + ); + } else { + downloadWithAnchor(); + } + } + window.utils = { - semverCompare: semverCompare, - generateRandomId: generateRandomId, - onButtonClick: onButtonClick, - addInfiniteLoopProtection: addInfiniteLoopProtection, - getHumanDate: getHumanDate, - log: log, - once: once + semverCompare, + generateRandomId, + onButtonClick, + addInfiniteLoopProtection, + getHumanDate, + log, + once, + downloadFile }; window.chrome = window.chrome || {}; @@ -1466,6 +1496,12 @@ loginModal utils.log('saving key', key || currentItem.id, currentItem); saveSetting(key || currentItem.id, currentItem); + // If key is `code`, this is a call on unloadbefore to save the last open thing. + // Do not presist that on remote. + if (key === 'code') { + // No deferred required here as this gets called on unloadbefore + return false; + } return itemService.setItem(key || currentItem.id, currentItem).then(() => { alertsService.add('Item saved.'); unsavedEditCount = 0; @@ -2247,14 +2283,9 @@ loginModal fileName = currentItem.title; } - var a = document.createElement('a'); var blob = new Blob([fileContent], { type: 'text/html;charset=UTF-8' }); - a.href = window.URL.createObjectURL(blob); - a.download = fileName; - a.style.display = 'none'; - document.body.appendChild(a); - a.click(); - a.remove(); + utils.downloadFile(fileName, blob); + trackEvent('fn', 'saveFileComplete'); }); } @@ -2451,25 +2482,7 @@ loginModal type: 'application/json;charset=UTF-8' }); - chrome.downloads.download( - { - url: window.URL.createObjectURL(blob), - filename: fileName, - saveAs: true - }, - function() { - // If there was an error, just download the file using ANCHOR method. - if (chrome.runtime.lastError) { - var a = document.createElement('a'); - a.href = window.URL.createObjectURL(blob); - a.download = fileName; - a.style.display = 'none'; - document.body.appendChild(a); - a.click(); - a.remove(); - } - } - ); + utils.downloadFile(fileName, blob); trackEvent('ui', 'exportBtnClicked'); }); @@ -2633,6 +2646,10 @@ loginModal function handleDownloadsPermission() { var d = deferred(); + if (!window.IS_EXTENSION) { + d.resolve(); + return d.promise; + } chrome.permissions.contains( { permissions: ['downloads'] diff --git a/app/service-worker.js b/app/service-worker.js index 4aa1738..72674f6 100644 --- a/app/service-worker.js +++ b/app/service-worker.js @@ -37,7 +37,7 @@ /* eslint-disable indent, no-unused-vars, no-multiple-empty-lines, max-nested-callbacks, space-before-function-paren, quotes, comma-spacing */ 'use strict'; -var precacheConfig = [["FiraCode.ttf","fa1f8c8961adca519738d9518139579c"],["changelog.html","7f40f4b9a97ca60826e7ad09e401d570"],["icon-48.png","ca68956f464ed4fd2e09c66d5edaed5f"],["index.html","cd2ac689891747b6757fdd890f9368c3"],["lib/atomizer.browser.js","451f56bc105c5ad333445998b3c085a2"],["lib/babel-polyfill.min.js","60977959048c0f5ef5aa66d6eac61eb3"],["lib/babel.min.js","77a1a84bbc2661db874c738f9b3ba375"],["lib/code-blast.js","48f8f054be45d3ad5054a7c7f87be0ff"],["lib/codemirror/mode/coffeescript/coffeescript.js","dea87b9f4c669789c4760605d947f1a9"],["lib/codemirror/mode/css/css.js","6c9ca32a78c120340e588ed3df734138"],["lib/codemirror/mode/css/gss.html","9afa6e2f3a7daa6127a3f26e2e68005c"],["lib/codemirror/mode/css/gss_test.js","e40c6fd9abdc6edc2b29e521bda726e1"],["lib/codemirror/mode/css/less.html","a35ff50857d48bb2f4df8ac737f35d64"],["lib/codemirror/mode/css/scss.html","8c96251f27727a9b23b45c41511e23a0"],["lib/codemirror/mode/haml/haml.js","9abc1679e0f54dcdd62d2326ed6133f5"],["lib/codemirror/mode/htmlembedded/htmlembedded.js","67f745ab3879bf7bc3029ac75ea3e181"],["lib/codemirror/mode/htmlmixed/htmlmixed.js","2d6915b576f267e93f0e1cf72f31af37"],["lib/codemirror/mode/javascript/javascript.js","3b2f1591e3175a24846cb182943f2a40"],["lib/codemirror/mode/javascript/json-ld.html","a2a5069194b78b6b5523cace263cab06"],["lib/codemirror/mode/javascript/typescript.html","76c2ffb883a133aa0fc5cc75ec0c56f5"],["lib/codemirror/mode/jsx/jsx.js","7bee6944931c2cc6ccd99b50fca637db"],["lib/codemirror/mode/markdown/markdown.js","30dd4984e2e929429d70cf5174b35c5d"],["lib/codemirror/mode/meta.js","6e456ea5fd8920c85d5281bd1efecb4c"],["lib/codemirror/mode/pug/pug.js","e988fd72c82f3b11836f6a06f7452436"],["lib/codemirror/mode/sass/sass.js","bd31ac70e9a457abc2789c2b83a21984"],["lib/codemirror/mode/stylus/stylus.js","81e2d281ecbb1dcf5c86857097ae60a7"],["lib/codemirror/mode/xml/xml.js","80f64aaafa6af7844d14f32f3219bb26"],["lib/codemirror/theme/3024-day.css","73c8f41583b4b71dbe1e5eac5c96f1a9"],["lib/codemirror/theme/3024-night.css","745180be9a932f24c6c0dd4ebdf5a0ed"],["lib/codemirror/theme/abcdef.css","8004cb71fd65e58bdfa64fdd55241315"],["lib/codemirror/theme/ambiance-mobile.css","256f2dd130b80c6afaa40fddf700d12a"],["lib/codemirror/theme/ambiance.css","6a200e1f3976929816cf3ac4675c810a"],["lib/codemirror/theme/base16-dark.css","84b6347918411d58d7f9b65a7ee87f65"],["lib/codemirror/theme/base16-light.css","037c7f3d16fe6d5ae2baa532e334172b"],["lib/codemirror/theme/base2tone-meadow-dark.css","f9dd12e2e51fc1575c57f3e5edc2232f"],["lib/codemirror/theme/bespin.css","cc414e4ec18bc89b3c79935b0e27fc20"],["lib/codemirror/theme/blackboard.css","cf9366960ff65c8101793bc64fe13e88"],["lib/codemirror/theme/cobalt.css","3488b576456693fd7ced2da0e10c8a16"],["lib/codemirror/theme/colorforth.css","b2ee8d2296277fc2811a7473ee4e9977"],["lib/codemirror/theme/dracula.css","e514d652ae86bfeaed34237b7d3afe44"],["lib/codemirror/theme/duotone-dark.css","02ec891b23125aaf625d978a39fd24ca"],["lib/codemirror/theme/duotone-light.css","608d11459665117d708651ce7f803fde"],["lib/codemirror/theme/eclipse.css","194369eec66630cfaf662ce5f0a193be"],["lib/codemirror/theme/elegant.css","0a4227e805a9d5f73a55dd248c1b052d"],["lib/codemirror/theme/erlang-dark.css","b5543f5273c968449760ab0d6a2af6dc"],["lib/codemirror/theme/hopscotch.css","b924ed31af30b1c68e5a01fc3c9b0553"],["lib/codemirror/theme/icecoder.css","576d776abdf7e28ea9f84e2eb161a20d"],["lib/codemirror/theme/isotope.css","7bb44bff5190c427de5ae750d6369633"],["lib/codemirror/theme/lesser-dark.css","da2c896bff035cec86fa98b6dc13f7cc"],["lib/codemirror/theme/liquibyte.css","9f37e7a4f3c02bec9bb735b78ed082d6"],["lib/codemirror/theme/material.css","11e812a3688805b5c187a6e6852bafe1"],["lib/codemirror/theme/mbo.css","55ff4bdd8a92c3dcbfd5421c532b3059"],["lib/codemirror/theme/mdn-like.css","79f8dabc5593d01d27bc824b801f9f05"],["lib/codemirror/theme/midnight.css","950e76dca6461ee1a2eac39f2d886613"],["lib/codemirror/theme/monokai.css","31c75ebee6311d49c046ffbbb91028f4"],["lib/codemirror/theme/neat.css","6b19894b9787c6791c250a95d0d4f8d6"],["lib/codemirror/theme/neo.css","2886072b53043c167e6f8765606c705c"],["lib/codemirror/theme/night.css","fe3ce7650a77e7e3887816dd7b6d880d"],["lib/codemirror/theme/panda-syntax.css","acbf94261e43c1f29c2252eb445de032"],["lib/codemirror/theme/paraiso-dark.css","3c24cee0dfac767713840b24e8359c99"],["lib/codemirror/theme/paraiso-light.css","e245bbfd22b4f61efe526ff13903f19e"],["lib/codemirror/theme/pastel-on-dark.css","48aae1a42733db57bd0a260ce0d83975"],["lib/codemirror/theme/railscasts.css","a5e7682d89da46244e5464d9572e24d8"],["lib/codemirror/theme/rubyblue.css","52bb601017a90bca522d66f6e82e73aa"],["lib/codemirror/theme/seti.css","f71668880eb1625f420ceaad670436f0"],["lib/codemirror/theme/solarized dark.css","4d05a166d713bb1ac24833061c1522d7"],["lib/codemirror/theme/solarized light.css","4d05a166d713bb1ac24833061c1522d7"],["lib/codemirror/theme/the-matrix.css","33c49ceeedafd0a08e712e465e3ad3ce"],["lib/codemirror/theme/tomorrow-night-bright.css","777d36e1c5bbfeb3bf2ca8dd607eee93"],["lib/codemirror/theme/tomorrow-night-eighties.css","5ceb5531fbe074d5190b55e8c725051e"],["lib/codemirror/theme/ttcn.css","d2cb74dfae563a10e9c286357429ea8b"],["lib/codemirror/theme/twilight.css","684040adf66ef89355cb7ebc6b54b00b"],["lib/codemirror/theme/vibrant-ink.css","f10004836fb29cc9a08c987d3e18938a"],["lib/codemirror/theme/xq-dark.css","60f162f0c4240e7352364d436b5598fa"],["lib/codemirror/theme/xq-light.css","447e80da7fe8c5c2bcf39127200cead2"],["lib/codemirror/theme/yeti.css","623dc805bc84dd6d25deef376593354e"],["lib/codemirror/theme/zenburn.css","94ad50bf3d048ed92cc513cd901dc685"],["lib/coffee-script.js","a43664b71b7b96e90046a605f6fa51a1"],["lib/emmet.js","6fff639e42ec8c00f4f4ff30b52e60df"],["lib/esprima.js","dfe041b0a8a5dda5c62ed8d2a1d3a666"],["lib/hint.min.css","0dc51e410a460622949f927dfda1bc32"],["lib/inlet.css","8242884724cfac965b53cf0a3d774c0b"],["lib/inlet.min.js","7e389291ff8decc675a32e376e318660"],["lib/jade.js","529e365c68f8d5efc4cea18be310bd76"],["lib/less.min.js","6fd457ee80aaf9aa8758fe8a2345c970"],["lib/marked.js","9f948a81f35613d44efa9322cbaf450d"],["lib/sass.js","1263518af3f8b2090c9b08d195bd20d9"],["lib/screenlog.js","dde029b72748bbc12532b309a717c2ca"],["lib/split.js","40ac1c1fba622660e3750405b18ab0bf"],["lib/stylus.min.js","58f6030903ab52f596fb407dcd3df34f"],["lib/typescript.js","cc0882a3185037052e21fa06a38ef077"],["partials/changelog.html","ff90524091c37e22edb0c74e5c380bd4"],["partials/help-modal.html","deb25c0a3cd22ede36cdc82c25e601a7"],["partials/keyboard-shortcuts.html","d7c4124380a4eeb18968d55276d19591"],["partials/login-modal.html","5ff36373475a89699e0fe136c6ca2b6f"],["partials/onboard-modal.html","ea2a2d5af4f2a3898551477e758fdada"],["script.js","8732925d4793bb20e6dbc684225b722d"],["style.css","182d8b5ff77248bc6e3f2548b1beb800"],["vendor.css","6ed94306315b8aaf789c53091c23bb4b"]]; +var precacheConfig = [["FiraCode.ttf","fa1f8c8961adca519738d9518139579c"],["changelog.html","7f40f4b9a97ca60826e7ad09e401d570"],["icon-48.png","ca68956f464ed4fd2e09c66d5edaed5f"],["index.html","657c191d6c52a5f18d0992709319e05d"],["lib/atomizer.browser.js","451f56bc105c5ad333445998b3c085a2"],["lib/babel-polyfill.min.js","60977959048c0f5ef5aa66d6eac61eb3"],["lib/babel.min.js","77a1a84bbc2661db874c738f9b3ba375"],["lib/code-blast.js","48f8f054be45d3ad5054a7c7f87be0ff"],["lib/codemirror/mode/coffeescript/coffeescript.js","dea87b9f4c669789c4760605d947f1a9"],["lib/codemirror/mode/css/css.js","6c9ca32a78c120340e588ed3df734138"],["lib/codemirror/mode/css/gss.html","9afa6e2f3a7daa6127a3f26e2e68005c"],["lib/codemirror/mode/css/gss_test.js","e40c6fd9abdc6edc2b29e521bda726e1"],["lib/codemirror/mode/css/less.html","a35ff50857d48bb2f4df8ac737f35d64"],["lib/codemirror/mode/css/scss.html","8c96251f27727a9b23b45c41511e23a0"],["lib/codemirror/mode/haml/haml.js","9abc1679e0f54dcdd62d2326ed6133f5"],["lib/codemirror/mode/htmlembedded/htmlembedded.js","67f745ab3879bf7bc3029ac75ea3e181"],["lib/codemirror/mode/htmlmixed/htmlmixed.js","2d6915b576f267e93f0e1cf72f31af37"],["lib/codemirror/mode/javascript/javascript.js","3b2f1591e3175a24846cb182943f2a40"],["lib/codemirror/mode/javascript/json-ld.html","a2a5069194b78b6b5523cace263cab06"],["lib/codemirror/mode/javascript/typescript.html","76c2ffb883a133aa0fc5cc75ec0c56f5"],["lib/codemirror/mode/jsx/jsx.js","7bee6944931c2cc6ccd99b50fca637db"],["lib/codemirror/mode/markdown/markdown.js","30dd4984e2e929429d70cf5174b35c5d"],["lib/codemirror/mode/meta.js","6e456ea5fd8920c85d5281bd1efecb4c"],["lib/codemirror/mode/pug/pug.js","e988fd72c82f3b11836f6a06f7452436"],["lib/codemirror/mode/sass/sass.js","bd31ac70e9a457abc2789c2b83a21984"],["lib/codemirror/mode/stylus/stylus.js","81e2d281ecbb1dcf5c86857097ae60a7"],["lib/codemirror/mode/xml/xml.js","80f64aaafa6af7844d14f32f3219bb26"],["lib/codemirror/theme/3024-day.css","73c8f41583b4b71dbe1e5eac5c96f1a9"],["lib/codemirror/theme/3024-night.css","745180be9a932f24c6c0dd4ebdf5a0ed"],["lib/codemirror/theme/abcdef.css","8004cb71fd65e58bdfa64fdd55241315"],["lib/codemirror/theme/ambiance-mobile.css","256f2dd130b80c6afaa40fddf700d12a"],["lib/codemirror/theme/ambiance.css","6a200e1f3976929816cf3ac4675c810a"],["lib/codemirror/theme/base16-dark.css","84b6347918411d58d7f9b65a7ee87f65"],["lib/codemirror/theme/base16-light.css","037c7f3d16fe6d5ae2baa532e334172b"],["lib/codemirror/theme/base2tone-meadow-dark.css","f9dd12e2e51fc1575c57f3e5edc2232f"],["lib/codemirror/theme/bespin.css","cc414e4ec18bc89b3c79935b0e27fc20"],["lib/codemirror/theme/blackboard.css","cf9366960ff65c8101793bc64fe13e88"],["lib/codemirror/theme/cobalt.css","3488b576456693fd7ced2da0e10c8a16"],["lib/codemirror/theme/colorforth.css","b2ee8d2296277fc2811a7473ee4e9977"],["lib/codemirror/theme/dracula.css","e514d652ae86bfeaed34237b7d3afe44"],["lib/codemirror/theme/duotone-dark.css","02ec891b23125aaf625d978a39fd24ca"],["lib/codemirror/theme/duotone-light.css","608d11459665117d708651ce7f803fde"],["lib/codemirror/theme/eclipse.css","194369eec66630cfaf662ce5f0a193be"],["lib/codemirror/theme/elegant.css","0a4227e805a9d5f73a55dd248c1b052d"],["lib/codemirror/theme/erlang-dark.css","b5543f5273c968449760ab0d6a2af6dc"],["lib/codemirror/theme/hopscotch.css","b924ed31af30b1c68e5a01fc3c9b0553"],["lib/codemirror/theme/icecoder.css","576d776abdf7e28ea9f84e2eb161a20d"],["lib/codemirror/theme/isotope.css","7bb44bff5190c427de5ae750d6369633"],["lib/codemirror/theme/lesser-dark.css","da2c896bff035cec86fa98b6dc13f7cc"],["lib/codemirror/theme/liquibyte.css","9f37e7a4f3c02bec9bb735b78ed082d6"],["lib/codemirror/theme/material.css","11e812a3688805b5c187a6e6852bafe1"],["lib/codemirror/theme/mbo.css","55ff4bdd8a92c3dcbfd5421c532b3059"],["lib/codemirror/theme/mdn-like.css","79f8dabc5593d01d27bc824b801f9f05"],["lib/codemirror/theme/midnight.css","950e76dca6461ee1a2eac39f2d886613"],["lib/codemirror/theme/monokai.css","31c75ebee6311d49c046ffbbb91028f4"],["lib/codemirror/theme/neat.css","6b19894b9787c6791c250a95d0d4f8d6"],["lib/codemirror/theme/neo.css","2886072b53043c167e6f8765606c705c"],["lib/codemirror/theme/night.css","fe3ce7650a77e7e3887816dd7b6d880d"],["lib/codemirror/theme/panda-syntax.css","acbf94261e43c1f29c2252eb445de032"],["lib/codemirror/theme/paraiso-dark.css","3c24cee0dfac767713840b24e8359c99"],["lib/codemirror/theme/paraiso-light.css","e245bbfd22b4f61efe526ff13903f19e"],["lib/codemirror/theme/pastel-on-dark.css","48aae1a42733db57bd0a260ce0d83975"],["lib/codemirror/theme/railscasts.css","a5e7682d89da46244e5464d9572e24d8"],["lib/codemirror/theme/rubyblue.css","52bb601017a90bca522d66f6e82e73aa"],["lib/codemirror/theme/seti.css","f71668880eb1625f420ceaad670436f0"],["lib/codemirror/theme/solarized dark.css","4d05a166d713bb1ac24833061c1522d7"],["lib/codemirror/theme/solarized light.css","4d05a166d713bb1ac24833061c1522d7"],["lib/codemirror/theme/the-matrix.css","33c49ceeedafd0a08e712e465e3ad3ce"],["lib/codemirror/theme/tomorrow-night-bright.css","777d36e1c5bbfeb3bf2ca8dd607eee93"],["lib/codemirror/theme/tomorrow-night-eighties.css","5ceb5531fbe074d5190b55e8c725051e"],["lib/codemirror/theme/ttcn.css","d2cb74dfae563a10e9c286357429ea8b"],["lib/codemirror/theme/twilight.css","684040adf66ef89355cb7ebc6b54b00b"],["lib/codemirror/theme/vibrant-ink.css","f10004836fb29cc9a08c987d3e18938a"],["lib/codemirror/theme/xq-dark.css","60f162f0c4240e7352364d436b5598fa"],["lib/codemirror/theme/xq-light.css","447e80da7fe8c5c2bcf39127200cead2"],["lib/codemirror/theme/yeti.css","623dc805bc84dd6d25deef376593354e"],["lib/codemirror/theme/zenburn.css","94ad50bf3d048ed92cc513cd901dc685"],["lib/coffee-script.js","a43664b71b7b96e90046a605f6fa51a1"],["lib/emmet.js","6fff639e42ec8c00f4f4ff30b52e60df"],["lib/esprima.js","dfe041b0a8a5dda5c62ed8d2a1d3a666"],["lib/hint.min.css","0dc51e410a460622949f927dfda1bc32"],["lib/inlet.css","8242884724cfac965b53cf0a3d774c0b"],["lib/inlet.min.js","7e389291ff8decc675a32e376e318660"],["lib/jade.js","529e365c68f8d5efc4cea18be310bd76"],["lib/less.min.js","6fd457ee80aaf9aa8758fe8a2345c970"],["lib/marked.js","9f948a81f35613d44efa9322cbaf450d"],["lib/sass.js","1263518af3f8b2090c9b08d195bd20d9"],["lib/screenlog.js","dde029b72748bbc12532b309a717c2ca"],["lib/split.js","40ac1c1fba622660e3750405b18ab0bf"],["lib/stylus.min.js","58f6030903ab52f596fb407dcd3df34f"],["lib/typescript.js","cc0882a3185037052e21fa06a38ef077"],["partials/changelog.html","ff90524091c37e22edb0c74e5c380bd4"],["partials/help-modal.html","deb25c0a3cd22ede36cdc82c25e601a7"],["partials/keyboard-shortcuts.html","d7c4124380a4eeb18968d55276d19591"],["partials/login-modal.html","5ff36373475a89699e0fe136c6ca2b6f"],["partials/onboard-modal.html","ea2a2d5af4f2a3898551477e758fdada"],["script.js","3df585bec1107181d0f9fc292196c776"],["style.css","8c905a82c751083236adfbbffe843030"],["vendor.css","6ed94306315b8aaf789c53091c23bb4b"]]; var cacheName = 'sw-precache-v3--' + (self.registration ? self.registration.scope : ''); diff --git a/app/style.css b/app/style.css index 8f429a6..7eefb49 100644 --- a/app/style.css +++ b/app/style.css @@ -473,7 +473,8 @@ transition: 0.25s ease; max-height: 90vh; box-sizing: border-box; overflow-y: auto; - transition: all 0.19s; + transition-property: transform, opacity; + transition-duration: 0.19s; transform: translateY(-50px) scale(0.7); } .is-modal-visible { @@ -495,13 +496,13 @@ transition: 0.25s ease; opacity: 0; will-change: opacity; background: rgba(0,0,0,0.6); - transition: all 0.3s; + transition: opacity 0.3s; } /* Make settings modal smaller */ @media screen and (min-width: 600px) { .modal--settings { /* width: 600px; */ - /* margin-left: -300px; */ + /* margin-lef.t: -300px; */ } } .saved-items-pane { @@ -958,6 +959,22 @@ transition: 0.25s ease; .kbd-shortcut__details { display: inline-block; } +.web-maker-with-tag { + position: relative; + display: inline-block; +} +.web-maker-with-tag:after { + content: 'BETA'; + position: relative; + left: 3px; + top: -10px; + border-radius: 4px; + background: #b76b29; + color: white; + letter-spacing: 0.6px; + padding: 2px; + font-size: 10px; +} body.is-logged-in .hide-on-login, body:not(.is-logged-in) .hide-on-logout {