@elementor/editor-canvas 3.35.0-400 → 3.35.0-402
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +13 -3
- package/dist/index.mjs +13 -3
- package/package.json +18 -18
- package/src/sync/__tests__/drag-element-from-panel.test.ts +69 -0
- package/src/sync/drag-element-from-panel.ts +18 -3
package/dist/index.d.mts
CHANGED
|
@@ -211,8 +211,8 @@ declare const styleTransformersRegistry: {
|
|
|
211
211
|
};
|
|
212
212
|
};
|
|
213
213
|
|
|
214
|
-
declare const startDragElementFromPanel: (props: Omit<V1ElementModelProps, "id">) => void;
|
|
215
214
|
declare const endDragElementFromPanel: () => void;
|
|
215
|
+
declare const startDragElementFromPanel: (props: Omit<V1ElementModelProps, "id">, event: React.DragEvent) => void;
|
|
216
216
|
|
|
217
217
|
declare function getCanvasIframeDocument(): Document | null | undefined;
|
|
218
218
|
|
package/dist/index.d.ts
CHANGED
|
@@ -211,8 +211,8 @@ declare const styleTransformersRegistry: {
|
|
|
211
211
|
};
|
|
212
212
|
};
|
|
213
213
|
|
|
214
|
-
declare const startDragElementFromPanel: (props: Omit<V1ElementModelProps, "id">) => void;
|
|
215
214
|
declare const endDragElementFromPanel: () => void;
|
|
215
|
+
declare const startDragElementFromPanel: (props: Omit<V1ElementModelProps, "id">, event: React.DragEvent) => void;
|
|
216
216
|
|
|
217
217
|
declare function getCanvasIframeDocument(): Document | null | undefined;
|
|
218
218
|
|
package/dist/index.js
CHANGED
|
@@ -3589,13 +3589,23 @@ var RenderContext = class {
|
|
|
3589
3589
|
};
|
|
3590
3590
|
|
|
3591
3591
|
// src/sync/drag-element-from-panel.ts
|
|
3592
|
-
var
|
|
3592
|
+
var DRAG_GROUPS = ["elementor-element"];
|
|
3593
|
+
var endDragElementFromPanel = () => {
|
|
3594
|
+
getElementorChannels()?.panelElements?.trigger("element:drag:end");
|
|
3595
|
+
};
|
|
3596
|
+
var startDragElementFromPanel = (props, event) => {
|
|
3597
|
+
setDragGroups(event);
|
|
3593
3598
|
const channels = getElementorChannels();
|
|
3594
3599
|
channels?.editor.reply("element:dragged", null);
|
|
3595
3600
|
channels?.panelElements.reply("element:selected", getLegacyPanelElementView(props)).trigger("element:drag:start");
|
|
3596
3601
|
};
|
|
3597
|
-
var
|
|
3598
|
-
|
|
3602
|
+
var setDragGroups = (event) => {
|
|
3603
|
+
const dataContainer = { groups: getDragGroups(event) };
|
|
3604
|
+
event.dataTransfer?.setData(JSON.stringify(dataContainer), "true");
|
|
3605
|
+
};
|
|
3606
|
+
var getDragGroups = (event) => {
|
|
3607
|
+
const dataContainer = event.dataTransfer?.getData("text/plain");
|
|
3608
|
+
return dataContainer ? JSON.parse(dataContainer).groups : DRAG_GROUPS;
|
|
3599
3609
|
};
|
|
3600
3610
|
var getElementorChannels = () => {
|
|
3601
3611
|
const extendedWindow = window;
|
package/dist/index.mjs
CHANGED
|
@@ -3579,13 +3579,23 @@ var RenderContext = class {
|
|
|
3579
3579
|
};
|
|
3580
3580
|
|
|
3581
3581
|
// src/sync/drag-element-from-panel.ts
|
|
3582
|
-
var
|
|
3582
|
+
var DRAG_GROUPS = ["elementor-element"];
|
|
3583
|
+
var endDragElementFromPanel = () => {
|
|
3584
|
+
getElementorChannels()?.panelElements?.trigger("element:drag:end");
|
|
3585
|
+
};
|
|
3586
|
+
var startDragElementFromPanel = (props, event) => {
|
|
3587
|
+
setDragGroups(event);
|
|
3583
3588
|
const channels = getElementorChannels();
|
|
3584
3589
|
channels?.editor.reply("element:dragged", null);
|
|
3585
3590
|
channels?.panelElements.reply("element:selected", getLegacyPanelElementView(props)).trigger("element:drag:start");
|
|
3586
3591
|
};
|
|
3587
|
-
var
|
|
3588
|
-
|
|
3592
|
+
var setDragGroups = (event) => {
|
|
3593
|
+
const dataContainer = { groups: getDragGroups(event) };
|
|
3594
|
+
event.dataTransfer?.setData(JSON.stringify(dataContainer), "true");
|
|
3595
|
+
};
|
|
3596
|
+
var getDragGroups = (event) => {
|
|
3597
|
+
const dataContainer = event.dataTransfer?.getData("text/plain");
|
|
3598
|
+
return dataContainer ? JSON.parse(dataContainer).groups : DRAG_GROUPS;
|
|
3589
3599
|
};
|
|
3590
3600
|
var getElementorChannels = () => {
|
|
3591
3601
|
const extendedWindow = window;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-canvas",
|
|
3
3
|
"description": "Elementor Editor Canvas",
|
|
4
|
-
"version": "3.35.0-
|
|
4
|
+
"version": "3.35.0-402",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Elementor Team",
|
|
7
7
|
"homepage": "https://elementor.com/",
|
|
@@ -37,24 +37,24 @@
|
|
|
37
37
|
"react-dom": "^18.3.1"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@elementor/editor": "3.35.0-
|
|
41
|
-
"@elementor/editor-controls": "3.35.0-
|
|
42
|
-
"@elementor/editor-documents": "3.35.0-
|
|
43
|
-
"@elementor/editor-elements": "3.35.0-
|
|
44
|
-
"@elementor/editor-interactions": "3.35.0-
|
|
45
|
-
"@elementor/editor-mcp": "3.35.0-
|
|
46
|
-
"@elementor/editor-notifications": "3.35.0-
|
|
47
|
-
"@elementor/editor-props": "3.35.0-
|
|
48
|
-
"@elementor/editor-responsive": "3.35.0-
|
|
49
|
-
"@elementor/editor-styles": "3.35.0-
|
|
50
|
-
"@elementor/editor-styles-repository": "3.35.0-
|
|
51
|
-
"@elementor/editor-ui": "3.35.0-
|
|
52
|
-
"@elementor/editor-v1-adapters": "3.35.0-
|
|
53
|
-
"@elementor/schema": "3.35.0-
|
|
54
|
-
"@elementor/twing": "3.35.0-
|
|
40
|
+
"@elementor/editor": "3.35.0-402",
|
|
41
|
+
"@elementor/editor-controls": "3.35.0-402",
|
|
42
|
+
"@elementor/editor-documents": "3.35.0-402",
|
|
43
|
+
"@elementor/editor-elements": "3.35.0-402",
|
|
44
|
+
"@elementor/editor-interactions": "3.35.0-402",
|
|
45
|
+
"@elementor/editor-mcp": "3.35.0-402",
|
|
46
|
+
"@elementor/editor-notifications": "3.35.0-402",
|
|
47
|
+
"@elementor/editor-props": "3.35.0-402",
|
|
48
|
+
"@elementor/editor-responsive": "3.35.0-402",
|
|
49
|
+
"@elementor/editor-styles": "3.35.0-402",
|
|
50
|
+
"@elementor/editor-styles-repository": "3.35.0-402",
|
|
51
|
+
"@elementor/editor-ui": "3.35.0-402",
|
|
52
|
+
"@elementor/editor-v1-adapters": "3.35.0-402",
|
|
53
|
+
"@elementor/schema": "3.35.0-402",
|
|
54
|
+
"@elementor/twing": "3.35.0-402",
|
|
55
55
|
"@elementor/ui": "1.36.17",
|
|
56
|
-
"@elementor/utils": "3.35.0-
|
|
57
|
-
"@elementor/wp-media": "3.35.0-
|
|
56
|
+
"@elementor/utils": "3.35.0-402",
|
|
57
|
+
"@elementor/wp-media": "3.35.0-402",
|
|
58
58
|
"@floating-ui/react": "^0.27.5",
|
|
59
59
|
"@wordpress/i18n": "^5.13.0"
|
|
60
60
|
},
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { endDragElementFromPanel, startDragElementFromPanel } from '../drag-element-from-panel';
|
|
2
|
+
import { type CanvasExtendedWindow } from '../types';
|
|
3
|
+
|
|
4
|
+
const EXPECTED_DRAG_GROUPS = [ 'elementor-element' ];
|
|
5
|
+
|
|
6
|
+
const mockTrigger = jest.fn();
|
|
7
|
+
const mockReply = jest.fn( () => ( { trigger: mockTrigger } ) );
|
|
8
|
+
|
|
9
|
+
describe( 'drag-element-from-panel', () => {
|
|
10
|
+
const extendedWindow = window as unknown as CanvasExtendedWindow;
|
|
11
|
+
|
|
12
|
+
extendedWindow.elementor = {
|
|
13
|
+
channels: {
|
|
14
|
+
editor: { reply: mockReply },
|
|
15
|
+
panelElements: { reply: mockReply, trigger: mockTrigger },
|
|
16
|
+
} as unknown as never,
|
|
17
|
+
modules: {
|
|
18
|
+
elements: {
|
|
19
|
+
models: {
|
|
20
|
+
Element: jest.fn( ( props ) => props ),
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
describe( 'startDragElementFromPanel', () => {
|
|
27
|
+
it( 'should set dataTransfer with drag groups', () => {
|
|
28
|
+
// Arrange
|
|
29
|
+
const mockSetData = jest.fn();
|
|
30
|
+
const mockEvent = {
|
|
31
|
+
dataTransfer: {
|
|
32
|
+
setData: mockSetData,
|
|
33
|
+
getData: () => '',
|
|
34
|
+
},
|
|
35
|
+
} as unknown as React.DragEvent;
|
|
36
|
+
|
|
37
|
+
// Act
|
|
38
|
+
startDragElementFromPanel( { elType: 'widget', widgetType: 'test' }, mockEvent );
|
|
39
|
+
|
|
40
|
+
// Assert
|
|
41
|
+
expect( mockSetData ).toHaveBeenCalledWith( JSON.stringify( { groups: EXPECTED_DRAG_GROUPS } ), 'true' );
|
|
42
|
+
} );
|
|
43
|
+
|
|
44
|
+
it( 'should trigger panel element events', () => {
|
|
45
|
+
// Arrange
|
|
46
|
+
const mockEvent = {
|
|
47
|
+
dataTransfer: { setData: jest.fn(), getData: () => '' },
|
|
48
|
+
} as unknown as React.DragEvent;
|
|
49
|
+
|
|
50
|
+
// Act
|
|
51
|
+
startDragElementFromPanel( { elType: 'widget', widgetType: 'test' }, mockEvent );
|
|
52
|
+
|
|
53
|
+
// Assert
|
|
54
|
+
expect( mockReply ).toHaveBeenCalledWith( 'element:dragged', null );
|
|
55
|
+
expect( mockReply ).toHaveBeenCalledWith( 'element:selected', expect.any( Object ) );
|
|
56
|
+
expect( mockTrigger ).toHaveBeenCalledWith( 'element:drag:start' );
|
|
57
|
+
} );
|
|
58
|
+
} );
|
|
59
|
+
|
|
60
|
+
describe( 'endDragElementFromPanel', () => {
|
|
61
|
+
it( 'should trigger element:drag:end event', () => {
|
|
62
|
+
// Act
|
|
63
|
+
endDragElementFromPanel();
|
|
64
|
+
|
|
65
|
+
// Assert
|
|
66
|
+
expect( mockTrigger ).toHaveBeenCalledWith( 'element:drag:end' );
|
|
67
|
+
} );
|
|
68
|
+
} );
|
|
69
|
+
} );
|
|
@@ -2,7 +2,15 @@ import { type V1ElementModelProps } from '@elementor/editor-elements';
|
|
|
2
2
|
|
|
3
3
|
import { type CanvasExtendedWindow } from './types';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const DRAG_GROUPS = [ 'elementor-element' ];
|
|
6
|
+
|
|
7
|
+
export const endDragElementFromPanel = () => {
|
|
8
|
+
getElementorChannels()?.panelElements?.trigger( 'element:drag:end' );
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const startDragElementFromPanel = ( props: Omit< V1ElementModelProps, 'id' >, event: React.DragEvent ) => {
|
|
12
|
+
setDragGroups( event );
|
|
13
|
+
|
|
6
14
|
const channels = getElementorChannels();
|
|
7
15
|
|
|
8
16
|
channels?.editor.reply( 'element:dragged', null );
|
|
@@ -12,8 +20,15 @@ export const startDragElementFromPanel = ( props: Omit< V1ElementModelProps, 'id
|
|
|
12
20
|
.trigger( 'element:drag:start' );
|
|
13
21
|
};
|
|
14
22
|
|
|
15
|
-
|
|
16
|
-
|
|
23
|
+
const setDragGroups = ( event: React.DragEvent ) => {
|
|
24
|
+
const dataContainer = { groups: getDragGroups( event ) };
|
|
25
|
+
event.dataTransfer?.setData( JSON.stringify( dataContainer ), 'true' );
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const getDragGroups = ( event: React.DragEvent ) => {
|
|
29
|
+
const dataContainer = event.dataTransfer?.getData( 'text/plain' );
|
|
30
|
+
|
|
31
|
+
return dataContainer ? JSON.parse( dataContainer ).groups : DRAG_GROUPS;
|
|
17
32
|
};
|
|
18
33
|
|
|
19
34
|
const getElementorChannels = () => {
|