mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-07-27 06:05:16 +02:00
merge main
This commit is contained in:
commit
7d39d63254
8 changed files with 67 additions and 18 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -47,3 +47,5 @@ VendorLib/Breakpad/src/tools/mac/dump_syms/build
|
||||||
DerivedData
|
DerivedData
|
||||||
VendorLib/clang/lib/arc
|
VendorLib/clang/lib/arc
|
||||||
VendorLib/clang/lib/c++
|
VendorLib/clang/lib/c++
|
||||||
|
|
||||||
|
.idea
|
|
@ -41,7 +41,7 @@
|
||||||
"flux": "^3.1.3",
|
"flux": "^3.1.3",
|
||||||
"jquery": "^3.4.0",
|
"jquery": "^3.4.0",
|
||||||
"jquery-ui": "^1.13.0",
|
"jquery-ui": "^1.13.0",
|
||||||
"marked": "^1.0.0",
|
"marked": "^4.0.10",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.7.2",
|
||||||
"q": "^1.5.1",
|
"q": "^1.5.1",
|
||||||
"raphael": "^2.1.0",
|
"raphael": "^2.1.0",
|
||||||
|
|
|
@ -193,6 +193,7 @@ var getAllCommands = function() {
|
||||||
return allCommands;
|
return allCommands;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.getAllCommands = getAllCommands;
|
||||||
exports.instantCommands = instantCommands;
|
exports.instantCommands = instantCommands;
|
||||||
exports.parse = util.genParseCommand(regexMap, 'processSandboxCommand');
|
exports.parse = util.genParseCommand(regexMap, 'processSandboxCommand');
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ var toGlobalize = {
|
||||||
TreeCompare: require('../graph/treeCompare'),
|
TreeCompare: require('../graph/treeCompare'),
|
||||||
Level: require('../level'),
|
Level: require('../level'),
|
||||||
Sandbox: require('../sandbox/'),
|
Sandbox: require('../sandbox/'),
|
||||||
|
SandboxCommands: require('../sandbox/commands'),
|
||||||
GitDemonstrationView: require('../views/gitDemonstrationView'),
|
GitDemonstrationView: require('../views/gitDemonstrationView'),
|
||||||
Markdown: require('marked'),
|
Markdown: require('marked'),
|
||||||
LevelDropdownView: require('../views/levelDropdownView'),
|
LevelDropdownView: require('../views/levelDropdownView'),
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
var Backbone = require('backbone');
|
var Backbone = require('backbone');
|
||||||
|
const {getAllCommands} = require('../sandbox/commands');
|
||||||
|
|
||||||
var Main = require('../app');
|
var Main = require('../app');
|
||||||
var CommandLineStore = require('../stores/CommandLineStore');
|
var CommandLineStore = require('../stores/CommandLineStore');
|
||||||
|
@ -7,6 +8,23 @@ var CommandLineActions = require('../actions/CommandLineActions');
|
||||||
var log = require('../log');
|
var log = require('../log');
|
||||||
var keyboard = require('../util/keyboard');
|
var keyboard = require('../util/keyboard');
|
||||||
|
|
||||||
|
const allCommands = Object.keys(getAllCommands());
|
||||||
|
// Lets push a few commands up in the suggestion order,
|
||||||
|
// which overrides the order from the exportj
|
||||||
|
const autoCompleteSuggestionOrder = [
|
||||||
|
'levels', // above "level"
|
||||||
|
'help', // above help level since you might not be in a level
|
||||||
|
'show solution', // above show goal since you start with a goal view
|
||||||
|
'reset', // over reset solved
|
||||||
|
'import level', // over import tree
|
||||||
|
];
|
||||||
|
|
||||||
|
const allCommandsSorted = autoCompleteSuggestionOrder.concat(
|
||||||
|
// add the rest that arent in the list above
|
||||||
|
allCommands.map(command => autoCompleteSuggestionOrder.indexOf(command) > 0 ? null : command)
|
||||||
|
.filter(command => !!command)
|
||||||
|
);
|
||||||
|
|
||||||
var CommandPromptView = Backbone.View.extend({
|
var CommandPromptView = Backbone.View.extend({
|
||||||
initialize: function() {
|
initialize: function() {
|
||||||
Main.getEvents().on('commandSubmittedPassive', this.addToCommandHistory, this);
|
Main.getEvents().on('commandSubmittedPassive', this.addToCommandHistory, this);
|
||||||
|
@ -49,13 +67,25 @@ var CommandPromptView = Backbone.View.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
onKeyDown: function(e) {
|
onKeyDown: function(e) {
|
||||||
// If its a tab, prevent losing focus
|
var el = e.target;
|
||||||
|
|
||||||
|
const shadowEl = document.querySelector('#shadow');
|
||||||
|
const uc = el.value.replace(/ {2,}/g, ' ');
|
||||||
|
shadowEl.innerHTML = '';
|
||||||
|
if(uc.length){
|
||||||
|
for(const c of allCommandsSorted){
|
||||||
|
if(c.indexOf(uc) === 0){
|
||||||
|
shadowEl.innerHTML = c;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (e.keyCode === 9) {
|
if (e.keyCode === 9) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
// Maybe one day do tab completion or something? :O
|
el.value = shadowEl.innerHTML;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
var el = e.target;
|
|
||||||
this.updatePrompt(el);
|
this.updatePrompt(el);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -1287,3 +1287,12 @@ div.gitDemonstrationView {
|
||||||
border-top-color: #9bcbeb;
|
border-top-color: #9bcbeb;
|
||||||
background: #9bcbeb;
|
background: #9bcbeb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#shadow{
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0px;
|
||||||
|
left: 21px;
|
||||||
|
opacity: 0.4;
|
||||||
|
}
|
|
@ -407,6 +407,7 @@
|
||||||
<span class="promptSign box">$</span>
|
<span class="promptSign box">$</span>
|
||||||
<span class="cursor box"> </span>
|
<span class="cursor box"> </span>
|
||||||
<p class="command"></p>
|
<p class="command"></p>
|
||||||
|
<div id="shadow"></div>
|
||||||
</div>
|
</div>
|
||||||
<textarea
|
<textarea
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
|
|
31
yarn.lock
31
yarn.lock
|
@ -765,9 +765,9 @@ cacheable-request@^6.0.0:
|
||||||
responselike "^1.0.2"
|
responselike "^1.0.2"
|
||||||
|
|
||||||
cached-path-relative@^1.0.0, cached-path-relative@^1.0.2:
|
cached-path-relative@^1.0.0, cached-path-relative@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db"
|
resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.1.0.tgz#865576dfef39c0d6a7defde794d078f5308e3ef3"
|
||||||
integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==
|
integrity sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==
|
||||||
|
|
||||||
call-bind@^1.0.0:
|
call-bind@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
|
@ -1051,12 +1051,12 @@ copy-descriptor@^0.1.0:
|
||||||
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
|
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
|
||||||
|
|
||||||
copy-props@^2.0.1:
|
copy-props@^2.0.1:
|
||||||
version "2.0.4"
|
version "2.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe"
|
resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.5.tgz#03cf9ae328d4ebb36f8f1d804448a6af9ee3f2d2"
|
||||||
integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==
|
integrity sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==
|
||||||
dependencies:
|
dependencies:
|
||||||
each-props "^1.3.0"
|
each-props "^1.3.2"
|
||||||
is-plain-object "^2.0.1"
|
is-plain-object "^5.0.0"
|
||||||
|
|
||||||
core-js@^1.0.0:
|
core-js@^1.0.0:
|
||||||
version "1.2.7"
|
version "1.2.7"
|
||||||
|
@ -1343,7 +1343,7 @@ duplexify@^3.6.0:
|
||||||
readable-stream "^2.0.0"
|
readable-stream "^2.0.0"
|
||||||
stream-shift "^1.0.0"
|
stream-shift "^1.0.0"
|
||||||
|
|
||||||
each-props@^1.3.0:
|
each-props@^1.3.2:
|
||||||
version "1.3.2"
|
version "1.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333"
|
resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333"
|
||||||
integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==
|
integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==
|
||||||
|
@ -2463,6 +2463,11 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
isobject "^3.0.1"
|
isobject "^3.0.1"
|
||||||
|
|
||||||
|
is-plain-object@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
|
||||||
|
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
|
||||||
|
|
||||||
is-posix-bracket@^0.1.0:
|
is-posix-bracket@^0.1.0:
|
||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
|
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
|
||||||
|
@ -3079,10 +3084,10 @@ map-visit@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
object-visit "^1.0.0"
|
object-visit "^1.0.0"
|
||||||
|
|
||||||
marked@^1.0.0:
|
marked@^4.0.10:
|
||||||
version "1.0.0"
|
version "4.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/marked/-/marked-1.0.0.tgz#d35784245a04871e5988a491e28867362e941693"
|
resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.10.tgz#423e295385cc0c3a70fa495e0df68b007b879423"
|
||||||
integrity sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==
|
integrity sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==
|
||||||
|
|
||||||
matchdep@^2.0.0:
|
matchdep@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue