Skip to content

Commit 94ecb42

Browse files
committed
feat: add option in edit mode dropdown and preferences to toggle image gallery
1 parent a7a46bc commit 94ecb42

File tree

3 files changed

+49
-2
lines changed

3 files changed

+49
-2
lines changed

src/LiveDevelopment/BrowserScripts/RemoteFunctions.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3020,6 +3020,11 @@ function RemoteFunctions(config = {}) {
30203020
return getHighlightMode() !== "click";
30213021
}
30223022

3023+
// helper function to check if image ribbon gallery should be shown
3024+
function shouldShowImageRibbon() {
3025+
return config.imageRibbon !== false;
3026+
}
3027+
30233028
// helper function to clear element background highlighting
30243029
function clearElementBackground(element) {
30253030
if (element._originalBackgroundColor !== undefined) {
@@ -3140,8 +3145,8 @@ function RemoteFunctions(config = {}) {
31403145
_selectElement(element);
31413146
}
31423147

3143-
// if the image is an element we show the image ribbon gallery
3144-
if(element && element.tagName.toLowerCase() === 'img') {
3148+
// if the image is an element we show the image ribbon gallery (if enabled in preferences)
3149+
if(element && element.tagName.toLowerCase() === 'img' && shouldShowImageRibbon()) {
31453150
event.preventDefault();
31463151
event.stopPropagation();
31473152
event.stopImmediatePropagation();

src/LiveDevelopment/main.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ define(function main(require, exports, module) {
7070
},
7171
isProUser: isProUser,
7272
elemHighlights: "hover", // default value, this will get updated when the extension loads
73+
imageRibbon: true, // default value, this will get updated when the extension loads
7374
// this strings are used in RemoteFunctions.js
7475
// we need to pass this through config as remoteFunctions runs in browser context and cannot
7576
// directly reference Strings file
@@ -365,6 +366,17 @@ define(function main(require, exports, module) {
365366
}
366367
}
367368

369+
// this function is responsible to update image ribbon config
370+
// called from live preview extension when preference changes
371+
function updateImageRibbonConfig() {
372+
const prefValue = PreferencesManager.get("livePreviewImageRibbon");
373+
config.imageRibbon = prefValue !== false; // default to true if undefined
374+
if (MultiBrowserLiveDev && MultiBrowserLiveDev.status >= MultiBrowserLiveDev.STATUS_ACTIVE) {
375+
MultiBrowserLiveDev.updateConfig(JSON.stringify(config));
376+
MultiBrowserLiveDev.registerHandlers();
377+
}
378+
}
379+
368380
// init commands
369381
CommandManager.register(Strings.CMD_LIVE_HIGHLIGHT, Commands.FILE_LIVE_HIGHLIGHT, togglePreviewHighlight);
370382
CommandManager.register(Strings.CMD_RELOAD_LIVE_PREVIEW, Commands.CMD_RELOAD_LIVE_PREVIEW, _handleReloadLivePreviewCommand);
@@ -393,6 +405,7 @@ define(function main(require, exports, module) {
393405
exports.togglePreviewHighlight = togglePreviewHighlight;
394406
exports.setLivePreviewEditFeaturesActive = setLivePreviewEditFeaturesActive;
395407
exports.updateElementHighlightConfig = updateElementHighlightConfig;
408+
exports.updateImageRibbonConfig = updateImageRibbonConfig;
396409
exports.getConnectionIds = MultiBrowserLiveDev.getConnectionIds;
397410
exports.getLivePreviewDetails = MultiBrowserLiveDev.getLivePreviewDetails;
398411
exports.hideHighlight = MultiBrowserLiveDev.hideHighlight;

src/extensionsIntegrated/Phoenix-live-preview/main.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,12 @@ define(function (require, exports, module) {
113113
description: Strings.LIVE_DEV_SETTINGS_ELEMENT_HIGHLIGHT_PREFERENCE
114114
});
115115

116+
// live preview image ribbon gallery preference (whether to show image gallery when clicking images)
117+
const PREFERENCE_PROJECT_IMAGE_RIBBON = "livePreviewImageRibbon";
118+
PreferencesManager.definePreference(PREFERENCE_PROJECT_IMAGE_RIBBON, "boolean", true, {
119+
description: "Show image gallery when clicked"
120+
});
121+
116122
const LIVE_PREVIEW_PANEL_ID = "live-preview-panel";
117123
const LIVE_PREVIEW_IFRAME_ID = "panel-live-preview-frame";
118124
const LIVE_PREVIEW_IFRAME_HTML = `
@@ -419,6 +425,7 @@ define(function (require, exports, module) {
419425
if (isEditFeaturesActive) {
420426
items.push("---");
421427
items.push(Strings.LIVE_PREVIEW_EDIT_HIGHLIGHT_ON);
428+
items.push("Show image gallery when clicked");
422429
}
423430

424431
const rawMode = PreferencesManager.get(PREFERENCE_LIVE_PREVIEW_MODE) || _getDefaultMode();
@@ -444,6 +451,12 @@ define(function (require, exports, module) {
444451
return `✓ ${Strings.LIVE_PREVIEW_EDIT_HIGHLIGHT_ON}`;
445452
}
446453
return `${'\u00A0'.repeat(4)}${Strings.LIVE_PREVIEW_EDIT_HIGHLIGHT_ON}`;
454+
} else if (item === "Show image gallery when clicked") {
455+
const isImageRibbonEnabled = PreferencesManager.get(PREFERENCE_PROJECT_IMAGE_RIBBON) !== false;
456+
if(isImageRibbonEnabled) {
457+
return `✓ ${item}`;
458+
}
459+
return `${'\u00A0'.repeat(4)}${item}`;
447460
}
448461
return item;
449462
});
@@ -492,6 +505,15 @@ define(function (require, exports, module) {
492505
const newMode = currentMode !== "click" ? "click" : "hover";
493506
PreferencesManager.set(PREFERENCE_PROJECT_ELEMENT_HIGHLIGHT, newMode);
494507
return; // Don't dismiss highlights for this option
508+
} else if (item === "Show image gallery when clicked") {
509+
// Don't allow image ribbon toggle if edit features are not active
510+
if (!isEditFeaturesActive) {
511+
return;
512+
}
513+
// Toggle image ribbon preference
514+
const currentEnabled = PreferencesManager.get(PREFERENCE_PROJECT_IMAGE_RIBBON);
515+
PreferencesManager.set(PREFERENCE_PROJECT_IMAGE_RIBBON, !currentEnabled);
516+
return; // Don't dismiss highlights for this option
495517
}
496518

497519
// need to dismiss the previous highlighting and stuff
@@ -1296,8 +1318,15 @@ define(function (require, exports, module) {
12961318
LiveDevelopment.updateElementHighlightConfig();
12971319
});
12981320

1321+
// Handle image ribbon preference changes from this extension
1322+
PreferencesManager.on("change", PREFERENCE_PROJECT_IMAGE_RIBBON, function() {
1323+
LiveDevelopment.updateImageRibbonConfig();
1324+
});
1325+
12991326
// Initialize element highlight config on startup
13001327
LiveDevelopment.updateElementHighlightConfig();
1328+
// Initialize image ribbon config on startup
1329+
LiveDevelopment.updateImageRibbonConfig();
13011330

13021331
LiveDevelopment.openLivePreview();
13031332
LiveDevelopment.on(LiveDevelopment.EVENT_OPEN_PREVIEW_URL, _openLivePreviewURL);

0 commit comments

Comments
 (0)