diff --git a/app.vue b/app.vue
index 2a30a14..42dab78 100644
--- a/app.vue
+++ b/app.vue
@@ -3,7 +3,7 @@ import { getElementInfo } from "moveable";
import { VueSelecto } from "vue3-selecto";
import { useDisplay } from 'vuetify/lib/framework.mjs';
import { HistoryManager } from './composables/history-manager';
-import { FilesManager, supportedExtensions } from './composables/files-manager';
+import { FilesManager, supportedExtensions, imageExtensions } from './composables/files-manager';
import type { iFile } from "composables/worker/7zip-manager"
import { videoExtensions, binaryExtensions } from '#imports';
@@ -73,8 +73,9 @@ watchEffect(async () => {
selectedElement.classList.remove("selected");
}
- // Experimental feature
- if (videoExtensions.includes(filesManager.getFile(selectedPath.value)?.extension?.toLowerCase())) {
+ // Update to handle both video and image files
+ if (videoExtensions.includes(filesManager.getFile(selectedPath.value)?.extension?.toLowerCase()) ||
+ imageExtensions.includes(filesManager.getFile(selectedPath.value)?.extension?.toLowerCase())) {
mediaBlobUrl.value = await filesManager.getFileBlobUrl(selectedPath.value) as string;
}
})
@@ -204,7 +205,11 @@ function stepUp(path: string) {
+ v-if="!filesManager.getFile(selectedPath)?.isFolder && imageExtensions.includes(filesManager.getFile(selectedPath)?.extension)">
+
+
+
+const props = defineProps<{
+ src: string;
+}>();
+
+const scale = ref(1);
+const rotation = ref(0);
+
+function zoomIn() {
+ scale.value = Math.min(scale.value + 0.1, 3);
+}
+
+function zoomOut() {
+ scale.value = Math.max(scale.value - 0.1, 0.1);
+}
+
+function resetZoom() {
+ scale.value = 1;
+ rotation.value = 0;
+}
+
+function rotateImage() {
+ rotation.value = (rotation.value + 90) % 360;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+