1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-07-12 17:46:26 +02:00

Merge pull request #258 from chinchang/iamandrewluca-keyboard-shortcuts

Iamandrewluca keyboard shortcuts
This commit is contained in:
Kushagra Gour
2018-02-03 14:17:43 +05:30
committed by GitHub
2 changed files with 47 additions and 49 deletions

22
package-lock.json generated
View File

@ -1310,6 +1310,17 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true "dev": true
}, },
"string_decoder": {
"version": "1.0.3",
"resolved":
"https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity":
"sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"string-width": { "string-width": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "resolved":
@ -1341,17 +1352,6 @@
} }
} }
}, },
"string_decoder": {
"version": "1.0.3",
"resolved":
"https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity":
"sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"strip-ansi": { "strip-ansi": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "resolved":

View File

@ -1501,7 +1501,10 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal
var byteString = atob(dataURI.split(',')[1]); var byteString = atob(dataURI.split(',')[1]);
// separate out the mime component // separate out the mime component
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; var mimeString = dataURI
.split(',')[0]
.split(':')[1]
.split(';')[0];
// write the bytes of the string to an ArrayBuffer // write the bytes of the string to an ArrayBuffer
var ab = new ArrayBuffer(byteString.length); var ab = new ArrayBuffer(byteString.length);
@ -2132,7 +2135,6 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal
// Editor keyboard shortucuts // Editor keyboard shortucuts
window.addEventListener('keydown', function(event) { window.addEventListener('keydown', function(event) {
var selectedItemElement;
// TODO: refactor common listener code // TODO: refactor common listener code
// Ctrl/⌘ + S // Ctrl/⌘ + S
if ((event.ctrlKey || event.metaKey) && event.keyCode === 83) { if ((event.ctrlKey || event.metaKey) && event.keyCode === 83) {
@ -2166,40 +2168,37 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal
} else if (event.keyCode === 27) { } else if (event.keyCode === 27) {
closeAllOverlays(); closeAllOverlays();
} }
if (event.keyCode === 40 && isSavedItemsPaneOpen) { });
// Return if no items present.
if (!$all('.js-saved-item-tile').length) { savedItemsPane.addEventListener('keydown', function(event) {
return; if (!isSavedItemsPaneOpen) {
} return;
selectedItemElement = $('.js-saved-item-tile.selected'); }
const isCtrlOrMetaPressed = event.ctrlKey || event.metaKey;
const isForkKeyPressed = isCtrlOrMetaPressed && event.keyCode === 70;
const isDownKeyPressed = event.keyCode === 40;
const isUpKeyPressed = event.keyCode === 38;
const isEnterKeyPressed = event.keyCode === 13;
const selectedItemElement = $('.js-saved-item-tile.selected');
const havePaneItems = $all('.js-saved-item-tile').length !== 0;
if ((isDownKeyPressed || isUpKeyPressed) && havePaneItems) {
const method = isDownKeyPressed ? 'nextUntil' : 'previousUntil';
if (selectedItemElement) { if (selectedItemElement) {
selectedItemElement.classList.remove('selected'); selectedItemElement.classList.remove('selected');
selectedItemElement selectedItemElement[method](
.nextUntil('.js-saved-item-tile:not(.hide)') '.js-saved-item-tile:not(.hide)'
.classList.add('selected'); ).classList.add('selected');
} else { } else {
$('.js-saved-item-tile:not(.hide)').classList.add('selected'); $('.js-saved-item-tile:not(.hide)').classList.add('selected');
} }
$('.js-saved-item-tile.selected').scrollIntoView(false); $('.js-saved-item-tile.selected').scrollIntoView(false);
} else if (event.keyCode === 38 && isSavedItemsPaneOpen) { }
if (!$all('.js-saved-item-tile').length) {
return; if (isEnterKeyPressed && selectedItemElement) {
}
selectedItemElement = $('.js-saved-item-tile.selected');
if (selectedItemElement) {
selectedItemElement.classList.remove('selected');
selectedItemElement
.previousUntil('.js-saved-item-tile:not(.hide)')
.classList.add('selected');
} else {
$('.js-saved-item-tile:not(.hide)').classList.add('selected');
}
$('.js-saved-item-tile.selected').scrollIntoView(false);
} else if (event.keyCode === 13 && isSavedItemsPaneOpen) {
selectedItemElement = $('.js-saved-item-tile.selected');
if (!selectedItemElement) {
return;
}
setTimeout(function() { setTimeout(function() {
openItem(selectedItemElement.dataset.itemId); openItem(selectedItemElement.dataset.itemId);
}, 350); }, 350);
@ -2207,13 +2206,8 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal
} }
// Fork shortcut inside saved creations panel with Ctrl/⌘ + F // Fork shortcut inside saved creations panel with Ctrl/⌘ + F
if ( if (isForkKeyPressed) {
isSavedItemsPaneOpen &&
(event.ctrlKey || event.metaKey) &&
event.keyCode === 70
) {
event.preventDefault(); event.preventDefault();
selectedItemElement = $('.js-saved-item-tile.selected');
setTimeout(function() { setTimeout(function() {
forkItem(savedItems[selectedItemElement.dataset.itemId]); forkItem(savedItems[selectedItemElement.dataset.itemId]);
}, 350); }, 350);
@ -2247,14 +2241,18 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal
var libOptions = window.jsLibs.reduce( var libOptions = window.jsLibs.reduce(
(html, lib) => (html, lib) =>
html + html +
`<option data-type="${lib.type}" value="${lib.url}">${lib.label}</option>`, `<option data-type="${lib.type}" value="${lib.url}">${
lib.label
}</option>`,
'' ''
); );
addLibrarySelect.children[1].innerHTML = libOptions; addLibrarySelect.children[1].innerHTML = libOptions;
libOptions = window.cssLibs.reduce( libOptions = window.cssLibs.reduce(
(html, lib) => (html, lib) =>
html + html +
`<option data-type="${lib.type}" value="${lib.url}">${lib.label}</option>`, `<option data-type="${lib.type}" value="${lib.url}">${
lib.label
}</option>`,
'' ''
); );
addLibrarySelect.children[2].innerHTML = libOptions; addLibrarySelect.children[2].innerHTML = libOptions;