Skip to content

Commit 4ec8b76

Browse files
committed
feat: show image gallery by default, saved its state in state manager
1 parent fef347b commit 4ec8b76

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

src/LiveDevelopment/BrowserScripts/RemoteFunctions.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ function RemoteFunctions(config = {}) {
6060
const AUTO_SCROLL_SPEED = 12; // pixels per scroll
6161
const AUTO_SCROLL_EDGE_SIZE = 0.05; // 5% of viewport height (either top/bottom)
6262

63-
// to track the state as we want to have a selected state for image gallery
64-
let imageGallerySelected = false;
63+
// initialized from config, defaults to true if not set
64+
let imageGallerySelected = config.imageGalleryState !== undefined ? config.imageGalleryState : true;
6565

6666
/**
6767
* this function is responsible to auto scroll the live preview when
@@ -288,6 +288,17 @@ function RemoteFunctions(config = {}) {
288288
_imageRibbonGallery = new ImageRibbonGallery(element);
289289
scrollImageToViewportIfRequired(element, _imageRibbonGallery);
290290
}
291+
292+
_handleImageGalleryStateChange();
293+
}
294+
295+
function _handleImageGalleryStateChange() {
296+
// send image gallery state change message to editor to save preference in state manager
297+
window._Brackets_MessageBroker.send({
298+
livePreviewEditEnabled: true,
299+
type: "imageGalleryStateChange",
300+
selected: imageGallerySelected
301+
});
291302
}
292303

293304
/**
@@ -2984,6 +2995,7 @@ function RemoteFunctions(config = {}) {
29842995
e.stopPropagation();
29852996
this.remove();
29862997
imageGallerySelected = false;
2998+
_handleImageGalleryStateChange();
29872999
dismissUIAndCleanupState();
29883000
});
29893001
}
@@ -4303,6 +4315,11 @@ function RemoteFunctions(config = {}) {
43034315
const oldConfig = config;
43044316
config = JSON.parse(newConfig);
43054317

4318+
// update image gallery selected state as per the new config
4319+
if (config.imageGalleryState !== undefined) {
4320+
imageGallerySelected = config.imageGalleryState;
4321+
}
4322+
43064323
// Determine if configuration has changed significantly
43074324
const oldHighlightMode = oldConfig.elemHighlights ? oldConfig.elemHighlights.toLowerCase() : "hover";
43084325
const newHighlightMode = getHighlightMode();

src/LiveDevelopment/LivePreviewEdit.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
define(function (require, exports, module) {
2828
const HTMLInstrumentation = require("LiveDevelopment/MultiBrowserImpl/language/HTMLInstrumentation");
2929
const LiveDevMultiBrowser = require("LiveDevelopment/LiveDevMultiBrowser");
30+
const LiveDevelopment = require("LiveDevelopment/main");
3031
const CodeMirror = require("thirdparty/CodeMirror/lib/codemirror");
3132
const ProjectManager = require("project/ProjectManager");
3233
const FileSystem = require("filesystem/FileSystem");
@@ -1234,6 +1235,12 @@ define(function (require, exports, module) {
12341235
return;
12351236
}
12361237

1238+
// handle image gallery state change message
1239+
if (message.type === "imageGalleryStateChange") {
1240+
LiveDevelopment.setImageGalleryState(message.selected);
1241+
return;
1242+
}
1243+
12371244
// handle move(drag & drop)
12381245
if (message.move && message.sourceId && message.targetId) {
12391246
_moveElementInSource(message.sourceId, message.targetId, message.insertAfter, message.insertInside);

src/LiveDevelopment/main.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ define(function main(require, exports, module) {
3838
LivePreviewTransport = require("LiveDevelopment/MultiBrowserImpl/transports/LivePreviewTransport"),
3939
CommandManager = require("command/CommandManager"),
4040
PreferencesManager = require("preferences/PreferencesManager"),
41+
StateManager = require("preferences/StateManager"),
4142
UrlParams = require("utils/UrlParams").UrlParams,
4243
Strings = require("strings"),
4344
ExtensionUtils = require("utils/ExtensionUtils"),
@@ -56,6 +57,33 @@ define(function main(require, exports, module) {
5657

5758
const EVENT_LIVE_HIGHLIGHT_PREF_CHANGED = "liveHighlightPrefChange";
5859

60+
// state manager key to track image gallery selected state, by default we keep this as selected
61+
// if this is true we show the image gallery when an image element is clicked
62+
const IMAGE_GALLERY_STATE = "livePreview.imageGallery.state";
63+
64+
/**
65+
* get the image gallery state from StateManager
66+
* @returns {boolean} true (default)
67+
*/
68+
function _getImageGalleryState() {
69+
const savedState = StateManager.get(IMAGE_GALLERY_STATE);
70+
return savedState !== undefined && savedState !== null ? savedState : true;
71+
}
72+
73+
/**
74+
* sets the image gallery state
75+
* @param {Boolean} the state that we need to set
76+
*/
77+
function setImageGalleryState(state) {
78+
StateManager.set(IMAGE_GALLERY_STATE, state);
79+
80+
// update the config with the new state
81+
config.imageGalleryState = state;
82+
if (MultiBrowserLiveDev && MultiBrowserLiveDev.status >= MultiBrowserLiveDev.STATUS_ACTIVE) {
83+
MultiBrowserLiveDev.updateConfig(JSON.stringify(config));
84+
}
85+
}
86+
5987
var params = new UrlParams();
6088
var config = {
6189
experimental: false, // enable experimental features
@@ -70,6 +98,7 @@ define(function main(require, exports, module) {
7098
},
7199
isProUser: isProUser,
72100
elemHighlights: "hover", // default value, this will get updated when the extension loads
101+
imageGalleryState: _getImageGalleryState(), // image gallery selected state
73102
// this strings are used in RemoteFunctions.js
74103
// we need to pass this through config as remoteFunctions runs in browser context and cannot
75104
// directly reference Strings file
@@ -404,6 +433,7 @@ define(function main(require, exports, module) {
404433
exports.setLivePreviewTransportBridge = setLivePreviewTransportBridge;
405434
exports.togglePreviewHighlight = togglePreviewHighlight;
406435
exports.setLivePreviewEditFeaturesActive = setLivePreviewEditFeaturesActive;
436+
exports.setImageGalleryState = setImageGalleryState;
407437
exports.updateElementHighlightConfig = updateElementHighlightConfig;
408438
exports.getConnectionIds = MultiBrowserLiveDev.getConnectionIds;
409439
exports.getLivePreviewDetails = MultiBrowserLiveDev.getLivePreviewDetails;

0 commit comments

Comments
 (0)