From 628c68ebc3c25fe0c375c09b3e4f0290e807470e Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 03:02:19 -1000 Subject: [PATCH 01/14] Create readme.md --- submissions/Zoom in or out Tool/readme.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 submissions/Zoom in or out Tool/readme.md diff --git a/submissions/Zoom in or out Tool/readme.md b/submissions/Zoom in or out Tool/readme.md new file mode 100644 index 00000000..efce1944 --- /dev/null +++ b/submissions/Zoom in or out Tool/readme.md @@ -0,0 +1,7 @@ +- Simple popup interface with zoom in/out buttons +- Current zoom level display +- "Reset" and "Fit Width" options +- Option to remember zoom settings per website +- Keyboard shortcuts (Ctrl+Plus, Ctrl+Minus, Ctrl+0) +- Works on all websites +- Zoom range from 25% to 400% From 970855bb254d70cea78d7dbff525f5d397338a68 Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 03:03:58 -1000 Subject: [PATCH 02/14] Create Manifest.json --- submissions/Zoom in or out Tool/Manifest.json | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 submissions/Zoom in or out Tool/Manifest.json diff --git a/submissions/Zoom in or out Tool/Manifest.json b/submissions/Zoom in or out Tool/Manifest.json new file mode 100644 index 00000000..6ffd8f97 --- /dev/null +++ b/submissions/Zoom in or out Tool/Manifest.json @@ -0,0 +1,27 @@ + + "manifest_version": 3, + "name": "Zoom Helper", + "version": "1.0", + "description": "A simple extension to help users zoom in and out of web pages", + "permissions": ["activeTab", "storage"], + "action": { + "default_popup": "popup.html", + "default_icon": { + "16": "images/icon16.png", + "48": "images/icon48.png", + "128": "images/icon128.png" + } + }, + "icons": { + "16": "images/icon16.png", + "48": "images/icon48.png", + "128": "images/icon128.png" + }, + "content_scripts": [ + { + "matches": [""], + "js": ["content.js"], + "css": ["styles.css"] + } + ] +} From b40fff5a4c179f2e89912f375441444c00358071 Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 03:05:08 -1000 Subject: [PATCH 03/14] Create popup.html --- submissions/Zoom in or out Tool/popup.html | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 submissions/Zoom in or out Tool/popup.html diff --git a/submissions/Zoom in or out Tool/popup.html b/submissions/Zoom in or out Tool/popup.html new file mode 100644 index 00000000..49a291c4 --- /dev/null +++ b/submissions/Zoom in or out Tool/popup.html @@ -0,0 +1,36 @@ + + + + Zoom Helper + + + +
+

Zoom Helper

+
+ + 100% + +
+
+ + +
+
+ +
+
+

Keyboard Shortcuts

+
    +
  • Zoom In: Ctrl + +
  • +
  • Zoom Out: Ctrl + -
  • +
  • Reset: Ctrl + 0
  • +
+
+
+ + + From 79ff63450ce71e0062aa3a1a349fa446c5bb8dae Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 03:06:19 -1000 Subject: [PATCH 04/14] Create popup.js --- submissions/Zoom in or out Tool/popup.js | 65 ++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 submissions/Zoom in or out Tool/popup.js diff --git a/submissions/Zoom in or out Tool/popup.js b/submissions/Zoom in or out Tool/popup.js new file mode 100644 index 00000000..d4138c59 --- /dev/null +++ b/submissions/Zoom in or out Tool/popup.js @@ -0,0 +1,65 @@ +body { + width: 300px; + padding: 15px; + font-family: Arial, sans-serif; +} + +.container { + display: flex; + flex-direction: column; + gap: 15px; +} + +h1 { + margin: 0; + text-align: center; + font-size: 18px; +} + +h2 { + margin: 0; + font-size: 14px; +} + +.zoom-controls { + display: flex; + align-items: center; + justify-content: space-between; +} + +.zoom-controls button { + width: 40px; + height: 40px; + font-size: 20px; + cursor: pointer; +} + +#zoom-level { + font-size: 16px; + font-weight: bold; +} + +.preset-buttons { + display: flex; + gap: 10px; +} + +.preset-buttons button { + flex: 1; + padding: 8px; + cursor: pointer; +} + +.options { + margin-top: 10px; +} + +.keyboard-shortcuts { + margin-top: 10px; + font-size: 12px; +} + +.keyboard-shortcuts ul { + margin: 5px 0 0 0; + padding-left: 20px; +} From 2c9002f32f71bd9e58f9a2ca22468dc64a9f0eed Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:18:09 -1000 Subject: [PATCH 05/14] Update Manifest.json --- submissions/Zoom in or out Tool/Manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submissions/Zoom in or out Tool/Manifest.json b/submissions/Zoom in or out Tool/Manifest.json index 6ffd8f97..3a636121 100644 --- a/submissions/Zoom in or out Tool/Manifest.json +++ b/submissions/Zoom in or out Tool/Manifest.json @@ -1,4 +1,4 @@ - +{ "manifest_version": 3, "name": "Zoom Helper", "version": "1.0", From 13c90fd197a8ea2acdb93cfec5a04ea8d6556d1d Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:20:27 -1000 Subject: [PATCH 06/14] Update popup.html From f1ea0ec679b35063e01d293468d70ec9c19bfaae Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:21:14 -1000 Subject: [PATCH 07/14] Rename Manifest.json to manifest.json --- submissions/Zoom in or out Tool/{Manifest.json => manifest.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename submissions/Zoom in or out Tool/{Manifest.json => manifest.json} (100%) diff --git a/submissions/Zoom in or out Tool/Manifest.json b/submissions/Zoom in or out Tool/manifest.json similarity index 100% rename from submissions/Zoom in or out Tool/Manifest.json rename to submissions/Zoom in or out Tool/manifest.json From 2cde656dd23b983db90d0e7b18276c87a6cf28ae Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:22:57 -1000 Subject: [PATCH 08/14] Update and rename popup.js to popup.css --- submissions/Zoom in or out Tool/{popup.js => popup.css} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename submissions/Zoom in or out Tool/{popup.js => popup.css} (100%) diff --git a/submissions/Zoom in or out Tool/popup.js b/submissions/Zoom in or out Tool/popup.css similarity index 100% rename from submissions/Zoom in or out Tool/popup.js rename to submissions/Zoom in or out Tool/popup.css From 9671d0c43d1f36f6a4a536150cb5987b9bbeda0f Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:26:02 -1000 Subject: [PATCH 09/14] Create popup.js --- submissions/Zoom in or out Tool/popup.js | 100 +++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 submissions/Zoom in or out Tool/popup.js diff --git a/submissions/Zoom in or out Tool/popup.js b/submissions/Zoom in or out Tool/popup.js new file mode 100644 index 00000000..4fbc996c --- /dev/null +++ b/submissions/Zoom in or out Tool/popup.js @@ -0,0 +1,100 @@ +document.addEventListener('DOMContentLoaded', function() { + const zoomInButton = document.getElementById('zoom-in'); + const zoomOutButton = document.getElementById('zoom-out'); + const resetButton = document.getElementById('reset-zoom'); + const fitWidthButton = document.getElementById('fit-width'); + const zoomLevelDisplay = document.getElementById('zoom-level'); + const rememberZoomCheckbox = document.getElementById('remember-zoom'); + + let currentZoom = 100; + let rememberZoom = false; + + // Load saved settings + chrome.storage.sync.get(['rememberZoom'], function(result) { + rememberZoom = result.rememberZoom || false; + rememberZoomCheckbox.checked = rememberZoom; + }); + + // Get current tab's zoom level + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + if (tabs[0]) { + const tabId = tabs[0].id; + const url = new URL(tabs[0].url).hostname; + + if (rememberZoom) { + chrome.storage.sync.get([url], function(result) { + if (result[url]) { + currentZoom = result[url]; + zoomLevelDisplay.textContent = `${currentZoom}%`; + } + }); + } + + // Send message to content script to get current zoom + chrome.tabs.sendMessage(tabId, {action: "getZoom"}, function(response) { + if (response && response.zoom) { + currentZoom = response.zoom; + zoomLevelDisplay.textContent = `${currentZoom}%`; + } + }); + } + }); + + // Zoom in + zoomInButton.addEventListener('click', function() { + changeZoom(10); + }); + + // Zoom out + zoomOutButton.addEventListener('click', function() { + changeZoom(-10); + }); + + // Reset zoom + resetButton.addEventListener('click', function() { + setZoom(100); + }); + + // Fit width + fitWidthButton.addEventListener('click', function() { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + if (tabs[0]) { + chrome.tabs.sendMessage(tabs[0].id, {action: "fitWidth"}); + } + }); + }); + + // Remember zoom checkbox + rememberZoomCheckbox.addEventListener('change', function() { + rememberZoom = this.checked; + chrome.storage.sync.set({rememberZoom: rememberZoom}); + }); + + // Change zoom by a relative amount + function changeZoom(amount) { + currentZoom += amount; + currentZoom = Math.max(25, Math.min(400, currentZoom)); // Limit between 25% and 400% + setZoom(currentZoom); + } + + // Set zoom to a specific level + function setZoom(level) { + currentZoom = level; + zoomLevelDisplay.textContent = `${currentZoom}%`; + + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + if (tabs[0]) { + const tabId = tabs[0].id; + const url = new URL(tabs[0].url).hostname; + + chrome.tabs.sendMessage(tabId, {action: "setZoom", zoom: currentZoom}); + + if (rememberZoom) { + let data = {}; + data[url] = currentZoom; + chrome.storage.sync.set(data); + } + } + }); + } +}); From c57668cb25c87db5f1caa45cf724137ac0f6441a Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:28:09 -1000 Subject: [PATCH 10/14] Create content.js --- submissions/Zoom in or out Tool/content.js | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 submissions/Zoom in or out Tool/content.js diff --git a/submissions/Zoom in or out Tool/content.js b/submissions/Zoom in or out Tool/content.js new file mode 100644 index 00000000..d0b29d61 --- /dev/null +++ b/submissions/Zoom in or out Tool/content.js @@ -0,0 +1,81 @@ +let zoomLevel = 100; +let zoomStyle = null; + +// Listen for messages from the popup +chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { + if (request.action === "getZoom") { + sendResponse({zoom: zoomLevel}); + } else if (request.action === "setZoom") { + zoomLevel = request.zoom; + applyZoom(); + sendResponse({success: true}); + } else if (request.action === "fitWidth") { + fitToWidth(); + sendResponse({success: true}); + } + return true; +}); + +// Apply zoom to the page +function applyZoom() { + if (!zoomStyle) { + zoomStyle = document.createElement('style'); + document.head.appendChild(zoomStyle); + } + + zoomStyle.textContent = ` + html, body { + zoom: ${zoomLevel}% !important; + -moz-transform: scale(${zoomLevel/100}) !important; + -moz-transform-origin: 0 0 !important; + } + `; +} + +// Fit page to width +function fitToWidth() { + const viewportWidth = window.innerWidth; + const pageWidth = document.documentElement.scrollWidth; + const ratio = viewportWidth / pageWidth; + zoomLevel = Math.round(ratio * 100); + zoomLevel = Math.max(25, Math.min(400, zoomLevel)); // Limit between 25% and 400% + applyZoom(); + + // Update popup if it's open + chrome.runtime.sendMessage({action: "updateZoom", zoom: zoomLevel}); +} + +// Initialize zoom +// Check if we should use a saved zoom level +chrome.storage.sync.get(['rememberZoom'], function(result) { + if (result.rememberZoom) { + const hostname = window.location.hostname; + chrome.storage.sync.get([hostname], function(data) { + if (data[hostname]) { + zoomLevel = data[hostname]; + applyZoom(); + } + }); + } +}); + +// Listen for keyboard shortcuts +document.addEventListener('keydown', function(e) { + // Ctrl + Plus: Zoom In + if (e.ctrlKey && e.key === '+') { + zoomLevel += 10; + zoomLevel = Math.min(400, zoomLevel); + applyZoom(); + } + // Ctrl + Minus: Zoom Out + else if (e.ctrlKey && e.key === '-') { + zoomLevel -= 10; + zoomLevel = Math.max(25, zoomLevel); + applyZoom(); + } + // Ctrl + 0: Reset Zoom + else if (e.ctrlKey && e.key === '0') { + zoomLevel = 100; + applyZoom(); + } +}); From 2bf4c0afda4e9d703ab4da0da60644cbeb82801f Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:29:22 -1000 Subject: [PATCH 11/14] Create styles.css --- submissions/Zoom in or out Tool/styles.css | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 submissions/Zoom in or out Tool/styles.css diff --git a/submissions/Zoom in or out Tool/styles.css b/submissions/Zoom in or out Tool/styles.css new file mode 100644 index 00000000..4f6dd509 --- /dev/null +++ b/submissions/Zoom in or out Tool/styles.css @@ -0,0 +1,24 @@ +.zoom-helper-controls { + position: fixed; + bottom: 20px; + right: 20px; + background: rgba(255, 255, 255, 0.8); + border-radius: 5px; + padding: 5px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + z-index: 9999; + display: flex; + align-items: center; +} + +.zoom-helper-controls button { + width: 30px; + height: 30px; + margin: 0 5px; + cursor: pointer; +} + +.zoom-helper-controls span { + margin: 0 5px; + font-weight: bold; +} From f12fa1f6bf8eccf3ea26c731034fa6e730d4aa1f Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:44:30 -1000 Subject: [PATCH 12/14] Create readme.md --- submissions/Zoom in or out Tool/images/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 submissions/Zoom in or out Tool/images/readme.md diff --git a/submissions/Zoom in or out Tool/images/readme.md b/submissions/Zoom in or out Tool/images/readme.md new file mode 100644 index 00000000..695b49f3 --- /dev/null +++ b/submissions/Zoom in or out Tool/images/readme.md @@ -0,0 +1 @@ +This is the images folder From cf43ef5e11508ab1810a7358170ab02fa9b232e9 Mon Sep 17 00:00:00 2001 From: lagofernan <189474463+lagofernan@users.noreply.github.com> Date: Wed, 19 Mar 2025 05:06:20 -1000 Subject: [PATCH 13/14] Add files via upload --- .../Zoom in or out Tool/images/icon128.png | Bin 0 -> 19480 bytes .../Zoom in or out Tool/images/icon16.png | Bin 0 -> 1240 bytes .../Zoom in or out Tool/images/icon48.png | Bin 0 -> 4988 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 submissions/Zoom in or out Tool/images/icon128.png create mode 100644 submissions/Zoom in or out Tool/images/icon16.png create mode 100644 submissions/Zoom in or out Tool/images/icon48.png diff --git a/submissions/Zoom in or out Tool/images/icon128.png b/submissions/Zoom in or out Tool/images/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e38b728373c32e150f6913d0ddff6fdd9b4d5c GIT binary patch literal 19480 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 bEpN=Z;6U$Zd63jYHDF<4Yy8;oX2O2~UF5(I literal 0 HcmV?d00001 diff --git a/submissions/Zoom in or out Tool/images/icon16.png b/submissions/Zoom in or out Tool/images/icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..379604fb9052b7e3ce1d3349eed5aa494f0052d2 GIT binary patch literal 1240 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 Date: Wed, 19 Mar 2025 05:07:25 -1000 Subject: [PATCH 14/14] Delete submissions/Zoom in or out Tool/images/readme.md --- submissions/Zoom in or out Tool/images/readme.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 submissions/Zoom in or out Tool/images/readme.md diff --git a/submissions/Zoom in or out Tool/images/readme.md b/submissions/Zoom in or out Tool/images/readme.md deleted file mode 100644 index 695b49f3..00000000 --- a/submissions/Zoom in or out Tool/images/readme.md +++ /dev/null @@ -1 +0,0 @@ -This is the images folder