Skip to content

Commit a0d806f

Browse files
authored
Merge pull request #64 from geriyoco/main
🚀 Updating to v0.2.6
2 parents c1ae60a + edbedae commit a0d806f

File tree

9 files changed

+162
-523
lines changed

9 files changed

+162
-523
lines changed

CHANGELOG.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
# Change Log
22

3-
## [0.2.5] - 2022-04-28
3+
## [0.2.6] - 2022-06-23
4+
### Added
5+
- Gallery supports collapsible subfolders
6+
- Sort subfolders and files by alphanumeric order
7+
8+
## [0.2.5] - 2022-05-14
49
### Added
510
- Sort filenames by alphanumeric order by default
611
- Added additional configuration for sorting in settings
712

8-
## [0.2.3] - 2022-04-28
13+
## [0.2.4] - 2022-05-12
14+
15+
## [0.2.3] - 2022-05-01
916
### Added
1017
- Display filename as tab title in the viewer
1118
- Display filename underneath each image in gallery

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ A light-weighted extension that brings you the best image browsing experience in
77
- Smooth panning and zooming
88
- Gallery view of images
99
- Lazily load images as they are scrolled into view
10+
- Collapsible subfolders
1011
- Clicking on an image opens it up in a viewer tab
1112
- Auto-refresh when modified
1213
- Extension size less than 1 MB

media/gallery.css

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
html {
66
scroll-behavior: smooth;
7+
overflow-y: scroll;
78
}
89

910
.grid {
@@ -12,7 +13,7 @@ html {
1213
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1314
grid-auto-rows: 250px;
1415
grid-gap: 10px;
15-
padding: 10px
16+
padding: 10px;
1617
}
1718

1819
.image-container {
@@ -56,4 +57,24 @@ html {
5657
text-overflow: ellipsis;
5758
overflow: hidden;
5859
white-space: nowrap;
60+
}
61+
62+
.folder {
63+
margin-top: 5px;
64+
padding: 15px;
65+
display: flex;
66+
width: 100%;
67+
background-color: hsl(0, 0%, 17%);
68+
color: white;
69+
border: 0;
70+
}
71+
72+
.folder-title {
73+
padding-left: 10px;
74+
text-align: left;
75+
flex-grow: 1;
76+
}
77+
78+
.folder:hover {
79+
box-shadow: 0 0 10px hsl(60, 65%, 90%);
5980
}

media/gallery.js

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
(function () {
33
const vscode = acquireVsCodeApi();
44

5-
let grid = document.getElementsByClassName("grid")[0];
65
let lazyloadImages = document.querySelectorAll(".lazy");
76
let imageObserver = new IntersectionObserver((entries, observer) => {
87
entries.forEach(entry => {
@@ -14,37 +13,55 @@
1413
image.classList.remove("lazy");
1514
image.classList.add("loaded");
1615
};
17-
if (lazyloadImages[lazyloadImages.length - 1].src === image.src) {
18-
imageObserver.disconnect();
19-
}
2016
}
2117
});
2218
});
2319

2420
lazyloadImages.forEach((image) => {
2521
imageObserver.observe(image);
2622
});
27-
23+
2824
document.addEventListener('click', event => {
2925
let node = event && event.target;
26+
const folderHeader = ['folder','folder-title','folder-arrow'];
27+
if (folderHeader.some(el => node.classList.contains(el))) {
28+
console.log(node);
29+
let id = '';
30+
if (node.classList.contains('folder')) {
31+
id = node.id;
32+
} else {
33+
let lastIndexToSplit = node.id.lastIndexOf('-');
34+
id = node.id.slice(0, lastIndexToSplit);
35+
36+
}
37+
38+
let folderGrid = document.getElementById(id + '-grid');
39+
let folderArrow = document.getElementById(id + '-arrow');
40+
console.log({folderGrid, folderArrow});
41+
folderGrid.style.display = folderGrid.style.display === "none" ? "" : "none";
42+
folderArrow.textContent = folderArrow.textContent === "⮟" ? "⮞" : "⮟";
43+
}
3044
if (!node.classList.contains('image')) { return; }
3145

3246
vscode.postMessage({
3347
command: 'vscodeImageGallery.openViewer',
3448
src: node.src,
3549
});
50+
3651
}, true);
3752

53+
3854
window.addEventListener('message', event => {
3955
const message = event.data;
4056

4157
switch (message.command) {
4258
case 'vscodeImageGallery.addImage':
59+
let addedTimestamp = new Date().getTime();
4360
let imgNode = document.createElement("img");
4461
imgNode.setAttribute("class", "image loaded");
4562
imgNode.setAttribute("id", message.imgPath);
46-
imgNode.setAttribute("src", message.imgSrc);
47-
imgNode.setAttribute("data-src", message.imgSrc);
63+
imgNode.setAttribute("src", `${message.imgSrc}?t=${addedTimestamp}`);
64+
imgNode.setAttribute("data-src", `${message.imgSrc}?t=${addedTimestamp}`);
4865

4966
let divNode = document.createElement("div");
5067
divNode.setAttribute("class", "filename");
@@ -55,13 +72,15 @@
5572
containerNode.setAttribute("class", "image-container");
5673
containerNode.appendChild(imgNode);
5774
containerNode.appendChild(divNode);
75+
76+
let grid = document.getElementById(`${Object.keys(message.pathsBySubFolders)[0]}-grid`);
5877
grid.appendChild(containerNode);
5978
break;
6079
case 'vscodeImageGallery.changeImage':
61-
let timestamp = new Date().getTime();
80+
let changedTimestamp = new Date().getTime();
6281
let changeImage = document.getElementById(message.imgPath);
63-
changeImage.setAttribute("src", message.imgSrc + "?t=" + timestamp);
64-
changeImage.setAttribute("data-src", message.imgSrc + "?t=" + timestamp);
82+
changeImage.setAttribute("src", `${message.imgSrc}?t=${changedTimestamp}`);
83+
changeImage.setAttribute("data-src", `${message.imgSrc}?t=${changedTimestamp}`);
6584

6685
let changeFilename = document.getElementById(message.imgPath + "-filename");
6786
changeFilename.setAttribute("class", "filename");

0 commit comments

Comments
 (0)