Skip to content

Commit 9830112

Browse files
committed
fix: decouple drag and drop from remote fucntions with direct api calls
1 parent 5af8c54 commit 9830112

File tree

5 files changed

+41
-16
lines changed

5 files changed

+41
-16
lines changed

src/LiveDevelopment/BrowserScripts/RemoteFunctions.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -900,10 +900,10 @@ function RemoteFunctions(config = {}) {
900900
// Render handler options with ordering support
901901
const handlerOptions = LivePreviewView.getAllNodeMoreOptionsHandlers()
902902
.map((handler, index) => {
903-
if (!handler.renderMoreOptions) {
903+
if (!handler.renderMoreOptionsDropdown) {
904904
return null;
905905
}
906-
const result = handler.renderMoreOptions(this.element);
906+
const result = handler.renderMoreOptionsDropdown(this.element);
907907
if (!result) {
908908
return null;
909909
}
@@ -1001,8 +1001,6 @@ function RemoteFunctions(config = {}) {
10011001
}
10021002
});
10031003
});
1004-
1005-
customReturns.registerDragDropForElement(this.element);
10061004
},
10071005

10081006
remove: function() {
@@ -4262,7 +4260,6 @@ function RemoteFunctions(config = {}) {
42624260
window.document.removeEventListener("mouseover", onElementHover);
42634261
window.document.removeEventListener("mouseout", onElementHoverOut);
42644262
window.document.removeEventListener("keydown", onKeyDown);
4265-
customReturns.unregisterDragDropListeners();
42664263
unregisterInteractionBlocker();
42674264

42684265
if (config.mode === 'edit') {
@@ -4276,7 +4273,6 @@ function RemoteFunctions(config = {}) {
42764273
window.document.addEventListener("mouseover", onElementHover);
42774274
window.document.addEventListener("mouseout", onElementHoverOut);
42784275
window.document.addEventListener("keydown", onKeyDown);
4279-
customReturns.registerDragDropListeners();
42804276

42814277
// this is to block all the interactions of the user created elements
42824278
// so that lets say user created link doesn't redirect in edit mode
@@ -4285,6 +4281,11 @@ function RemoteFunctions(config = {}) {
42854281
// Clean up any existing UI when edit features are disabled
42864282
dismissUIAndCleanupState();
42874283
}
4284+
getAllNodeMoreOptionsHandlers().forEach(handler => {
4285+
if (handler.reRegisterEventHandlers) {
4286+
handler.reRegisterEventHandlers();
4287+
}
4288+
});
42884289
}
42894290

42904291
function _requestConfigRefresh() {
@@ -4338,5 +4339,11 @@ function RemoteFunctions(config = {}) {
43384339
// DONT_STRIP_MINIFY:REPLACE_WITH_ADDED_REMOTE_SCRIPTS
43394340

43404341
registerHandlers();
4342+
// Notify handlers about config initialization
4343+
getAllNodeMoreOptionsHandlers().forEach(handler => {
4344+
if (handler.handleConfigChange) {
4345+
handler.handleConfigChange({}, config);
4346+
}
4347+
});
43414348
return customReturns;
43424349
}

src/extensionsIntegrated/phoenix-pro/browser-context/dragAndDrop.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: LicenseRef-Proprietary
44
*/
55

6-
/*global GLOBALS, LivePreviewView, customReturns, dismissUIAndCleanupState, SHARED_STATE*/
6+
/*global GLOBALS, LivePreviewView, dismissUIAndCleanupState, SHARED_STATE, config*/
77

88

99
// =========================== VARIABLE DECLARATION ============================
@@ -1349,10 +1349,20 @@ function registerDragDropForElement(element) {
13491349
}
13501350
}
13511351

1352+
function _reRegisterEventHandlers() {
1353+
unregisterDragDropListeners();
1354+
if (config.mode === 'edit') {
1355+
registerDragDropListeners();
1356+
}
1357+
}
13521358

1359+
function _onElementSelected(element) {
1360+
registerDragDropForElement(element);
1361+
}
13531362

1354-
// ============================ EXPORTS ============================
1355-
customReturns.cancelSVGDragIfActive = cancelSVGDragIfActive;
1356-
customReturns.unregisterDragDropListeners = unregisterDragDropListeners;
1357-
customReturns.registerDragDropListeners = registerDragDropListeners;
1358-
customReturns.registerDragDropForElement = registerDragDropForElement;
1363+
LivePreviewView.registerNodeMoreOptionsHandler("DragAndDrop", {
1364+
dismiss: ()=>{},
1365+
reRegisterEventHandlers: _reRegisterEventHandlers,
1366+
onElementSelected: _onElementSelected,
1367+
_proExtnDismissLivePreviewEditBoxes: cancelSVGDragIfActive
1368+
});

src/extensionsIntegrated/phoenix-pro/browser-context/hyperlink-editor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,5 +156,5 @@ function renderHyperlinkOptions(element, shadow) {
156156
LivePreviewView.registerNodeMoreOptionsHandler("HyperlinkEditor", {
157157
dismiss: dismissHyperlinkEditor,
158158
handleClick: _handleEditHyperlinkOptionClick,
159-
renderMoreOptions: renderHyperlinkOptions
159+
renderMoreOptionsDropdown: renderHyperlinkOptions
160160
});

src/extensionsIntegrated/phoenix-pro/browser-context/remote-utils.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,20 @@
33
* SPDX-License-Identifier: LicenseRef-Proprietary
44
*/
55

6-
/*global customReturns, enableHoverListeners, dismissUIAndCleanupState */
6+
/*global customReturns, enableHoverListeners, dismissUIAndCleanupState, getAllNodeMoreOptionsHandlers */
77

88
function dismissLivePreviewEditBoxes() {
99
enableHoverListeners(); // so that if hover lock is there it will get cleared
1010
dismissUIAndCleanupState();
11-
customReturns.cancelSVGDragIfActive(); // read this function's jsdoc to understand why its here
11+
getAllNodeMoreOptionsHandlers().forEach(handler => {
12+
if (handler._proExtnDismissLivePreviewEditBoxes) {
13+
handler._proExtnDismissLivePreviewEditBoxes();
14+
}
15+
});
1216
}
1317

18+
19+
// only apis that needs to be called from phoenix js layer should be customReturns. APis that are shared within
20+
// the remote function context only should not be in customReturns and should be in either SHARED_STATE for state vars,
21+
// GLOBALS for global vars, or LivePreviewView for shared functions.
1422
customReturns.dismissLivePreviewEditBoxes = dismissLivePreviewEditBoxes;

src/extensionsIntegrated/phoenix-pro/browser-context/ruler-lines.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ window.addEventListener("scroll", _rulerLinesScrollHandler, true);
299299
// Register with LivePreviewView
300300
LivePreviewView.registerNodeMoreOptionsHandler("RulerLines", {
301301
dismiss: dismissRulerLines,
302-
renderMoreOptions: () => '', // No options box button
302+
renderMoreOptionsDropdown: () => '', // No options box button
303303
redraw: redrawRulerLines,
304304
onElementSelected: onRulerLinesElementSelected,
305305
onElementCleanup: onRulerLinesElementCleanup,

0 commit comments

Comments
 (0)