|
2 | 2 | (function () {
|
3 | 3 | const vscode = acquireVsCodeApi();
|
4 | 4 |
|
5 |
| - let grid = document.getElementsByClassName("grid")[0]; |
6 | 5 | let lazyloadImages = document.querySelectorAll(".lazy");
|
7 | 6 | let imageObserver = new IntersectionObserver((entries, observer) => {
|
8 | 7 | entries.forEach(entry => {
|
|
14 | 13 | image.classList.remove("lazy");
|
15 | 14 | image.classList.add("loaded");
|
16 | 15 | };
|
17 |
| - if (lazyloadImages[lazyloadImages.length - 1].src === image.src) { |
18 |
| - imageObserver.disconnect(); |
19 |
| - } |
20 | 16 | }
|
21 | 17 | });
|
22 | 18 | });
|
23 | 19 |
|
24 | 20 | lazyloadImages.forEach((image) => {
|
25 | 21 | imageObserver.observe(image);
|
26 | 22 | });
|
27 |
| - |
| 23 | + |
28 | 24 | document.addEventListener('click', event => {
|
29 | 25 | 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 | + } |
30 | 44 | if (!node.classList.contains('image')) { return; }
|
31 | 45 |
|
32 | 46 | vscode.postMessage({
|
33 | 47 | command: 'vscodeImageGallery.openViewer',
|
34 | 48 | src: node.src,
|
35 | 49 | });
|
| 50 | + |
36 | 51 | }, true);
|
37 | 52 |
|
| 53 | + |
38 | 54 | window.addEventListener('message', event => {
|
39 | 55 | const message = event.data;
|
40 | 56 |
|
41 | 57 | switch (message.command) {
|
42 | 58 | case 'vscodeImageGallery.addImage':
|
| 59 | + let addedTimestamp = new Date().getTime(); |
43 | 60 | let imgNode = document.createElement("img");
|
44 | 61 | imgNode.setAttribute("class", "image loaded");
|
45 | 62 | 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}`); |
48 | 65 |
|
49 | 66 | let divNode = document.createElement("div");
|
50 | 67 | divNode.setAttribute("class", "filename");
|
|
55 | 72 | containerNode.setAttribute("class", "image-container");
|
56 | 73 | containerNode.appendChild(imgNode);
|
57 | 74 | containerNode.appendChild(divNode);
|
| 75 | + |
| 76 | + let grid = document.getElementById(`${Object.keys(message.pathsBySubFolders)[0]}-grid`); |
58 | 77 | grid.appendChild(containerNode);
|
59 | 78 | break;
|
60 | 79 | case 'vscodeImageGallery.changeImage':
|
61 |
| - let timestamp = new Date().getTime(); |
| 80 | + let changedTimestamp = new Date().getTime(); |
62 | 81 | 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}`); |
65 | 84 |
|
66 | 85 | let changeFilename = document.getElementById(message.imgPath + "-filename");
|
67 | 86 | changeFilename.setAttribute("class", "filename");
|
|
0 commit comments