@@ -56,6 +56,10 @@ function RemoteFunctions(config = {}) {
5656 CACHE_MAX_IMAGES : 50 // max number of images that we store in the localStorage
5757 } ;
5858
59+ const SHARED_STATE = {
60+ __description : "Use this to keep shared state for Live Preview Edit instead of window.*"
61+ } ;
62+
5963 let _localHighlight ;
6064 let _hoverHighlight ;
6165 let _clickHighlight ;
@@ -1511,7 +1515,7 @@ function RemoteFunctions(config = {}) {
15111515 const [ x , y ] = point ;
15121516 let target = document . elementFromPoint ( x , y ) ;
15131517
1514- if ( ! target || target === window . _currentDraggedElement ) {
1518+ if ( ! target || target === SHARED_STATE . _currentDraggedElement ) {
15151519 continue ;
15161520 }
15171521
@@ -1521,7 +1525,7 @@ function RemoteFunctions(config = {}) {
15211525 }
15221526
15231527 // Check if target is valid (not BODY, HTML or inside HEAD)
1524- if ( isElementEditable ( target ) && target !== window . _currentDraggedElement ) {
1528+ if ( isElementEditable ( target ) && target !== SHARED_STATE . _currentDraggedElement ) {
15251529 return target ;
15261530 }
15271531 }
@@ -1532,11 +1536,11 @@ function RemoteFunctions(config = {}) {
15321536 function onDragStart ( event , element ) {
15331537 event . stopPropagation ( ) ;
15341538 event . dataTransfer . setData ( "text/plain" , element . getAttribute ( GLOBALS . DATA_BRACKETS_ID_ATTR ) ) ;
1535- window . _dragStartX = event . clientX ;
1536- window . _dragStartY = event . clientY ;
1539+ SHARED_STATE . _dragStartX = event . clientX ;
1540+ SHARED_STATE . _dragStartY = event . clientY ;
15371541 _dragStartChores ( element ) ;
15381542 _clearDropMarkers ( ) ;
1539- window . _currentDraggedElement = element ;
1543+ SHARED_STATE . _currentDraggedElement = element ;
15401544 dismissUIAndCleanupState ( ) ;
15411545 dismissImageRibbonGallery ( ) ;
15421546 event . dataTransfer . effectAllowed = "move" ;
@@ -1548,9 +1552,9 @@ function RemoteFunctions(config = {}) {
15481552 _dragEndChores ( element ) ;
15491553 _clearDropMarkers ( ) ;
15501554 _stopAutoScroll ( ) ;
1551- delete window . _currentDraggedElement ;
1552- delete window . _dragStartX ;
1553- delete window . _dragStartY ;
1555+ delete SHARED_STATE . _currentDraggedElement ;
1556+ delete SHARED_STATE . _dragStartX ;
1557+ delete SHARED_STATE . _dragStartY ;
15541558 }
15551559
15561560 /**
@@ -1560,15 +1564,15 @@ function RemoteFunctions(config = {}) {
15601564 */
15611565 function onDragOver ( event ) {
15621566 // we set this on dragStart
1563- if ( ! window . _currentDraggedElement ) {
1567+ if ( ! SHARED_STATE . _currentDraggedElement ) {
15641568 return ;
15651569 }
15661570
15671571 event . preventDefault ( ) ;
15681572
15691573 // get the element under the cursor
15701574 let target = document . elementFromPoint ( event . clientX , event . clientY ) ;
1571- if ( ! target || target === window . _currentDraggedElement ) {
1575+ if ( ! target || target === SHARED_STATE . _currentDraggedElement ) {
15721576 return ;
15731577 }
15741578
@@ -1577,7 +1581,7 @@ function RemoteFunctions(config = {}) {
15771581 target = target . parentElement ;
15781582 }
15791583
1580- if ( ! isElementEditable ( target ) || target === window . _currentDraggedElement ) {
1584+ if ( ! isElementEditable ( target ) || target === SHARED_STATE . _currentDraggedElement ) {
15811585 if ( _isAutoScrolling ) { return ; }
15821586 // if direct detection fails, we try to find a nearby valid target
15831587 target = _findNearestValidTarget ( event . clientX , event . clientY ) ;
@@ -1592,7 +1596,7 @@ function RemoteFunctions(config = {}) {
15921596
15931597 // calc indicator type and drop zone for initial target
15941598 const indicatorType = _getIndicatorType ( initialTarget ) ;
1595- const dropZone = _getDropZone ( initialTarget , event . clientX , event . clientY , indicatorType , window . _currentDraggedElement ) ;
1599+ const dropZone = _getDropZone ( initialTarget , event . clientX , event . clientY , indicatorType , SHARED_STATE . _currentDraggedElement ) ;
15961600
15971601 // get the list of all the valid candidates for section selection
15981602 const candidates = _getValidTargetCandidates ( initialTarget , dropZone , indicatorType ) ;
@@ -1632,7 +1636,7 @@ function RemoteFunctions(config = {}) {
16321636 * @param {Event } event - The drop event
16331637 */
16341638 function onDrop ( event ) {
1635- if ( ! window . _currentDraggedElement ) {
1639+ if ( ! SHARED_STATE . _currentDraggedElement ) {
16361640 return ;
16371641 }
16381642
@@ -1643,19 +1647,19 @@ function RemoteFunctions(config = {}) {
16431647 // the drag to happen which was unexpected
16441648 const DRAG_THRESHOLD = 5 ;
16451649
1646- if ( window . _dragStartX !== undefined && window . _dragStartY !== undefined ) {
1647- const deltaX = Math . abs ( event . clientX - window . _dragStartX ) ;
1648- const deltaY = Math . abs ( event . clientY - window . _dragStartY ) ;
1650+ if ( SHARED_STATE . _dragStartX !== undefined && SHARED_STATE . _dragStartY !== undefined ) {
1651+ const deltaX = Math . abs ( event . clientX - SHARED_STATE . _dragStartX ) ;
1652+ const deltaY = Math . abs ( event . clientY - SHARED_STATE . _dragStartY ) ;
16491653
16501654 if ( deltaX <= DRAG_THRESHOLD && deltaY <= DRAG_THRESHOLD ) {
16511655 _clearDropMarkers ( ) ;
16521656 _stopAutoScroll ( ) ;
1653- _dragEndChores ( window . _currentDraggedElement ) ;
1657+ _dragEndChores ( SHARED_STATE . _currentDraggedElement ) ;
16541658 dismissUIAndCleanupState ( ) ;
1655- delete window . _currentDraggedElement ;
1656- delete window . _dragStartX ;
1657- delete window . _dragStartY ;
1658- delete window . _isDraggingSVG ;
1659+ delete SHARED_STATE . _currentDraggedElement ;
1660+ delete SHARED_STATE . _dragStartX ;
1661+ delete SHARED_STATE . _dragStartY ;
1662+ delete SHARED_STATE . _isDraggingSVG ;
16591663 return ;
16601664 }
16611665 }
@@ -1671,7 +1675,7 @@ function RemoteFunctions(config = {}) {
16711675 target = target . parentElement ;
16721676 }
16731677
1674- if ( ! isElementEditable ( target ) || target === window . _currentDraggedElement ) {
1678+ if ( ! isElementEditable ( target ) || target === SHARED_STATE . _currentDraggedElement ) {
16751679 if ( _isAutoScrolling ) { return ; }
16761680
16771681 // if direct detection fails, we try to find a nearby valid target
@@ -1686,29 +1690,29 @@ function RemoteFunctions(config = {}) {
16861690 }
16871691
16881692 // skip if no valid target found or if it's the dragged element
1689- if ( ! isElementEditable ( target ) || target === window . _currentDraggedElement ) {
1693+ if ( ! isElementEditable ( target ) || target === SHARED_STATE . _currentDraggedElement ) {
16901694 _clearDropMarkers ( ) ;
16911695 _stopAutoScroll ( ) ;
1692- _dragEndChores ( window . _currentDraggedElement ) ;
1696+ _dragEndChores ( SHARED_STATE . _currentDraggedElement ) ;
16931697 dismissUIAndCleanupState ( ) ;
1694- delete window . _currentDraggedElement ;
1698+ delete SHARED_STATE . _currentDraggedElement ;
16951699 return ;
16961700 }
16971701
16981702 // Determine drop position based on container layout and cursor position
16991703 const indicatorType = _getIndicatorType ( target ) ;
17001704 const dropZone = _getDropZone (
1701- target , event . clientX , event . clientY , indicatorType , window . _currentDraggedElement
1705+ target , event . clientX , event . clientY , indicatorType , SHARED_STATE . _currentDraggedElement
17021706 ) ;
17031707
17041708 // IDs of the source and target elements
1705- const sourceId = window . _currentDraggedElement . getAttribute ( GLOBALS . DATA_BRACKETS_ID_ATTR ) ;
1709+ const sourceId = SHARED_STATE . _currentDraggedElement . getAttribute ( GLOBALS . DATA_BRACKETS_ID_ATTR ) ;
17061710 const targetId = target . getAttribute ( GLOBALS . DATA_BRACKETS_ID_ATTR ) ;
17071711
17081712 // Handle different drop zones
17091713 let messageData = {
17101714 livePreviewEditEnabled : true ,
1711- sourceElement : window . _currentDraggedElement ,
1715+ sourceElement : SHARED_STATE . _currentDraggedElement ,
17121716 targetElement : target ,
17131717 sourceId : Number ( sourceId ) ,
17141718 targetId : Number ( targetId ) ,
@@ -1729,11 +1733,11 @@ function RemoteFunctions(config = {}) {
17291733
17301734 _clearDropMarkers ( ) ;
17311735 _stopAutoScroll ( ) ;
1732- _dragEndChores ( window . _currentDraggedElement ) ;
1736+ _dragEndChores ( SHARED_STATE . _currentDraggedElement ) ;
17331737 dismissUIAndCleanupState ( ) ;
1734- delete window . _currentDraggedElement ;
1735- delete window . _dragStartX ;
1736- delete window . _dragStartY ;
1738+ delete SHARED_STATE . _currentDraggedElement ;
1739+ delete SHARED_STATE . _dragStartX ;
1740+ delete SHARED_STATE . _dragStartY ;
17371741 }
17381742
17391743 /**
@@ -1745,27 +1749,27 @@ function RemoteFunctions(config = {}) {
17451749 event . preventDefault ( ) ;
17461750 event . stopPropagation ( ) ;
17471751
1748- window . _dragStartX = event . clientX ;
1749- window . _dragStartY = event . clientY ;
1750- window . _currentDraggedElement = element ;
1752+ SHARED_STATE . _dragStartX = event . clientX ;
1753+ SHARED_STATE . _dragStartY = event . clientY ;
1754+ SHARED_STATE . _currentDraggedElement = element ;
17511755 _dragStartChores ( element ) ;
17521756 _clearDropMarkers ( ) ;
17531757 dismissUIAndCleanupState ( ) ;
17541758 dismissImageRibbonGallery ( ) ;
17551759
1756- window . _isDraggingSVG = true ;
1760+ SHARED_STATE . _isDraggingSVG = true ;
17571761 }
17581762
17591763 function onDragMouseUp ( event ) {
1760- if ( window . _isDraggingSVG ) {
1764+ if ( SHARED_STATE . _isDraggingSVG ) {
17611765 event . preventDefault ( ) ;
17621766 onDrop ( event ) ;
1763- delete window . _isDraggingSVG ;
1767+ delete SHARED_STATE . _isDraggingSVG ;
17641768 }
17651769 }
17661770
17671771 function onDragMouseMove ( event ) {
1768- if ( window . _isDraggingSVG ) {
1772+ if ( SHARED_STATE . _isDraggingSVG ) {
17691773 event . preventDefault ( ) ;
17701774 onDragOver ( event ) ;
17711775 }
@@ -4626,7 +4630,7 @@ function RemoteFunctions(config = {}) {
46264630 */
46274631 function cancelSVGDragIfActive ( ) {
46284632 // check if any element is being dragged
4629- if ( ! window . _isDraggingSVG || ! window . _currentDraggedElement ) {
4633+ if ( ! SHARED_STATE . _isDraggingSVG || ! SHARED_STATE . _currentDraggedElement ) {
46304634 return ;
46314635 }
46324636
@@ -4645,9 +4649,9 @@ function RemoteFunctions(config = {}) {
46454649 // revert everything back
46464650 _clearDropMarkers ( ) ;
46474651 _stopAutoScroll ( ) ;
4648- _dragEndChores ( window . _currentDraggedElement ) ;
4649- delete window . _currentDraggedElement ;
4650- delete window . _isDraggingSVG ;
4652+ _dragEndChores ( SHARED_STATE . _currentDraggedElement ) ;
4653+ delete SHARED_STATE . _currentDraggedElement ;
4654+ delete SHARED_STATE . _isDraggingSVG ;
46514655 _lastDragTarget = null ;
46524656 _lastDropZone = null ;
46534657 }
@@ -4681,7 +4685,7 @@ function RemoteFunctions(config = {}) {
46814685 function onElementHover ( event ) {
46824686 // don't want highlighting and stuff when auto scrolling or when dragging (svgs)
46834687 // for dragging normal html elements its already taken care of...so we just add svg drag checking
4684- if ( _isAutoScrolling || window . _isDraggingSVG ) {
4688+ if ( _isAutoScrolling || SHARED_STATE . _isDraggingSVG ) {
46854689 return ;
46864690 }
46874691
0 commit comments