Skip to content

Commit 1b08c41

Browse files
authored
Merge pull request #109 from codeitcodes/dev
Dev
2 parents d209820 + 0a1e4c6 commit 1b08c41

File tree

18 files changed

+853
-706
lines changed

18 files changed

+853
-706
lines changed

bottomfloat.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,12 @@ floatDownload.addEventListener('click', downloadSelFile);
9898
if (isMobile) {
9999

100100
cd.on('scroll', checkBottomFloat, false);
101+
102+
cd.on('blur', () => {
103+
104+
bottomWrapper.classList.remove('hidden');
105+
106+
});
101107

102108
}
103109

dark-theme.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ body:not(.mobile) ::-webkit-scrollbar-track:horizontal {
1919

2020
body:not(.mobile) ::-webkit-scrollbar-corner {
2121
background-color: #2B303B;
22+
box-shadow: inset -15px -15px 0 0 #2B303B,
23+
inset 1px 1px 0 0 rgba(0,0,0,0.2);
2224
}
2325

2426
body:not(.mobile) ::-webkit-scrollbar-thumb {

filebrowser.js

Lines changed: 88 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,50 @@ async function renderSidebarHTML() {
102102
renderBranchMenuHTML();
103103

104104
}
105+
106+
107+
// if sidebar title is empty
108+
if (sidebarLogo.innerText === '') {
109+
110+
if (contents != '') {
111+
112+
// if repo is owned by logged user
113+
if (user === loggedUser) {
114+
115+
// show repo name and path
116+
sidebarLogo.innerText = repoName + contents;
117+
118+
} else {
119+
120+
// show username, repo name and path
121+
sidebarLogo.innerText = user + '/' + repoName + contents;
122+
123+
}
124+
125+
} else if (repo != '') {
126+
127+
// if repo is owned by logged user
128+
if (user === loggedUser) {
129+
130+
// show repo name
131+
sidebarLogo.innerText = repoName;
132+
133+
} else {
134+
135+
// show username and repo name
136+
sidebarLogo.innerText = user + '/' + repoName;
137+
138+
}
139+
140+
} else {
141+
142+
// show title
143+
sidebarLogo.innerText = 'Repositories';
144+
145+
}
146+
147+
}
148+
105149

106150
// get items in current tree from git
107151
resp = await git.getItems(treeLoc);
@@ -424,7 +468,7 @@ async function renderSidebarHTML() {
424468
if (fileType === 'video') fileIconHTML = videoIcon;
425469
if (fileType === 'audio') fileIconHTML = audioIcon;
426470

427-
out += `
471+
out = `
428472
<div class="item file`+ modified +`" sha="`+ file.sha +`">
429473
<div class="label">
430474
`+ fileIconHTML +`
@@ -434,7 +478,7 @@ async function renderSidebarHTML() {
434478
`+ pushIcon +`
435479
</div>
436480
</div>
437-
`;
481+
` + out;
438482

439483
}
440484

@@ -535,15 +579,15 @@ async function renderSidebarHTML() {
535579

536580
// render repo
537581

538-
out += `
582+
out = `
539583
<div class="item repo" ` + ('fullName="' + modRepoName + '"') + `>
540584
<div class="label">
541585
`+ repoIcon +`
542586
<a class="name">`+ modRepoName.split('/')[1] +`</a>
543587
</div>
544588
`+ arrowIcon +`
545589
</div>
546-
`;
590+
` + out;
547591

548592
}
549593

@@ -1542,12 +1586,13 @@ function createNewRepoInHTML() {
15421586
// play push animation
15431587
playPushAnimation(repoEl.querySelector('.push-wrapper'));
15441588

1545-
// disable pushing file from HTML
1589+
// disable pushing repo from HTML
15461590
repoEl.classList.remove('focused');
15471591

1548-
// make file name uneditable
1592+
// make repo name uneditable
15491593
repoEl.querySelector('.name').setAttribute('contenteditable', 'false');
15501594
repoEl.querySelector('.name').blur();
1595+
repoEl.querySelector('.name').scrollTo(0, 0);
15511596

15521597

15531598
// validate repo name
@@ -1703,6 +1748,7 @@ function createNewFileInHTML() {
17031748
// make file name uneditable
17041749
fileEl.querySelector('.name').setAttribute('contenteditable', 'false');
17051750
fileEl.querySelector('.name').blur();
1751+
fileEl.querySelector('.name').scrollTo(0, 0);
17061752

17071753

17081754
// pad file content with random number of invisible chars
@@ -1746,15 +1792,37 @@ function createNewFileInHTML() {
17461792
});
17471793

17481794
fileEl.querySelector('.name').textContent = fileName;
1749-
1750-
1751-
// change selected file
1752-
changeSelectedFile(treeLoc.join(), fileContent, fileName, encodeUnicode('\r\n'), getFileLang(fileName),
1753-
[0, 0], [0, 0], true);
1795+
1796+
1797+
// generate temporary SHA
1798+
const tempSHA = generateSHA();
1799+
setAttr(fileEl, 'sha', tempSHA);
17541800

17551801

17561802
// open file
17571803

1804+
// if previous file selection exists
1805+
if (selectedFile.sha) {
1806+
1807+
// get previous selection in modifiedFiles array
1808+
let selectedItem = modifiedFiles[selectedFile.sha];
1809+
1810+
// if previous selection was modified
1811+
if (selectedItem) {
1812+
1813+
// save previous selection in localStorage
1814+
updateModFileContent(selectedFile.sha, selectedFile.content);
1815+
updateModFileCaretPos(selectedFile.sha, selectedFile.caretPos);
1816+
updateModFileScrollPos(selectedFile.sha, selectedFile.scrollPos);
1817+
1818+
}
1819+
1820+
}
1821+
1822+
// change selected file
1823+
changeSelectedFile(treeLoc.join(), tempSHA, fileName, encodeUnicode('\r\n'), getFileLang(fileName),
1824+
[0, 0], [0, 0], true);
1825+
17581826
// if on mobile device
17591827
if (isMobile) {
17601828

@@ -1826,27 +1894,28 @@ function createNewFileInHTML() {
18261894
message: commitMessage,
18271895
file: commitFile
18281896
};
1897+
18291898

18301899
// push file asynchronously
1831-
const newSha = await git.push(commit);
1900+
const newSHA = await git.push(commit);
18321901

18331902

1834-
// update file sha in HTML with new sha from Git
1835-
setAttr(fileEl, 'sha', newSha);
1903+
// update file sha in HTML with new sha from git
1904+
setAttr(fileEl, 'sha', newSHA);
18361905

18371906
// change selected file
1838-
changeSelectedFile(treeLoc.join(), newSha, fileName, encodeUnicode('\r\n'), getFileLang(fileName),
1907+
changeSelectedFile(treeLoc.join(), newSHA, fileName, encodeUnicode('\r\n'), getFileLang(fileName),
18391908
[0, 0], [0, 0], true);
1840-
1909+
18411910
// Git file is eclipsed (not updated) in browser private cache,
18421911
// so store the updated file in modifiedFiles object for 1 minute after commit
1843-
if (modifiedFiles[fileContent]) {
1912+
if (modifiedFiles[tempSHA]) {
18441913

1845-
onFileEclipsedInCache(fileContent, newSha, selectedFile);
1914+
onFileEclipsedInCache(tempSHA, newSHA, selectedFile);
18461915

18471916
} else {
18481917

1849-
onFileEclipsedInCache(false, newSha, selectedFile);
1918+
onFileEclipsedInCache(false, newSHA, selectedFile);
18501919

18511920
}
18521921

full.css

Lines changed: 31 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -379,45 +379,41 @@ body.loaded:not(.mobile) .live-view {
379379
transition: none !important;
380380
}
381381

382-
.live-view::before {
383-
content: '';
384-
top: 0;
385-
right: 0;
386-
bottom: 0;
387-
left: 1px;
388-
position: fixed;
389-
background: #1a1c24;
390-
background: #0e0e0e;
391-
transition: .18s var(--ease-function) opacity;
392-
z-index: 1;
393-
}
394-
395-
.live-view::after {
382+
.live-view.visible:not(.loaded)::before,
383+
.bottom-wrapper.expanded + .live-view:not(.loaded)::before {
396384
content: '';
397385
position: fixed;
398-
left: 50%;
399-
top: 50%;
386+
top: 0;
387+
left: 0;
388+
height: 2px;
389+
width: 120px;
390+
border-radius: 6px;
391+
pointer-events: none;
392+
background: var(--rosemary-lighter);
393+
transform: translateX(calc(-100% - env(safe-area-inset-left, 0px)));
394+
will-change: transform;
400395
opacity: 0;
401-
transform: translate(-50%, -50%);
402-
width: var(--spacing-7);
403-
height: var(--spacing-7);
404-
border-radius: 50%;
405-
background: #e06c75;
406-
background: hsl(240deg 87% 55%);
407-
animation: live-pulse 1s var(--cubic-function) infinite;
408-
box-shadow: 0 0 0 15px hsl(240deg 87% 55% / 0%);
409-
transition: .18s var(--ease-function) opacity;
396+
animation: live-loader .72s .4s var(--cubic-function) infinite,
397+
live-visible .4s linear forwards;
410398
z-index: 1;
411399
}
412400

413-
.live-view:not(.loaded).loading::after {
414-
opacity: 1;
401+
@keyframes live-loader {
402+
from {
403+
transform: translateX(calc(-100% - env(safe-area-inset-left, 0px)));
404+
}
405+
to {
406+
transform: translateX(100vw);
407+
}
415408
}
416409

417-
.live-view.loaded::before,
418-
.live-view.loaded::after {
419-
opacity: 0;
420-
pointer-events: none;
410+
@keyframes live-visible {
411+
99.99% {
412+
opacity: 0;
413+
}
414+
100% {
415+
opacity: 1;
416+
}
421417
}
422418

423419
.live-view.file-open {
@@ -448,18 +444,8 @@ body.notransition .live-view.file-open {
448444
transition: none;
449445
}
450446

451-
.live-view.file-open::before,
452-
.live-view.file-open::after {
453-
display: none;
454-
}
455-
456-
@keyframes live-pulse {
457-
from {
458-
box-shadow: 0 0 0 0 hsl(240deg 87% 55%);
459-
}
460-
to {
461-
box-shadow: 0 0 0 15px hsl(240deg 87% 55% / 0%);
462-
}
447+
.live-view.file-open::before {
448+
content: unset;
463449
}
464450

465451
.live-view img {
@@ -1225,6 +1211,7 @@ body:not(.mobile) .sidebar .header .title .branch-icon:active {
12251211
outline: none;
12261212
user-select: text;
12271213
-webkit-user-select: text;
1214+
text-overflow: clip;
12281215
background: hsl(220deg 86% 64% / 9%);
12291216
box-shadow: 0 0 0 2px hsl(223deg 85% 66% / 70%);
12301217
transition: .18s .04s var(--ease-function);
@@ -1553,7 +1540,7 @@ body .sidebar .button:active:not(:hover) {
15531540
font-weight: 500;
15541541
}
15551542

1556-
body:not(.mobile) .menu .icon:hover {
1543+
body:not(.mobile) .menu .icon:not(:active):hover {
15571544
background: rgba(255,255,255,0.05);
15581545
}
15591546

0 commit comments

Comments
 (0)