@elementor/editor-canvas 3.33.0-119 → 3.33.0-121

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 CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as _elementor_editor_props from '@elementor/editor-props';
2
2
  import { AnyTransformable, PropTypeKey, PropsSchema, Props } from '@elementor/editor-props';
3
+ import { V1ElementModelProps } from '@elementor/editor-elements';
3
4
 
4
5
  declare function init(): void;
5
6
 
@@ -59,4 +60,7 @@ type ResolvedProps = Record<string, unknown>;
59
60
  type PropsResolver = ReturnType<typeof createPropsResolver>;
60
61
  declare function createPropsResolver({ transformers, schema: initialSchema, onPropResolve }: CreatePropResolverArgs): ({ props, schema, signal }: ResolveArgs) => Promise<ResolvedProps>;
61
62
 
62
- export { type PropsResolver, createPropsResolver, createTransformer, createTransformersRegistry, init, settingsTransformersRegistry, styleTransformersRegistry };
63
+ declare const startDragElementFromPanel: (props: Omit<V1ElementModelProps, "id">) => void;
64
+ declare const endDragElementFromPanel: () => void;
65
+
66
+ export { type PropsResolver, createPropsResolver, createTransformer, createTransformersRegistry, endDragElementFromPanel, init, settingsTransformersRegistry, startDragElementFromPanel, styleTransformersRegistry };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as _elementor_editor_props from '@elementor/editor-props';
2
2
  import { AnyTransformable, PropTypeKey, PropsSchema, Props } from '@elementor/editor-props';
3
+ import { V1ElementModelProps } from '@elementor/editor-elements';
3
4
 
4
5
  declare function init(): void;
5
6
 
@@ -59,4 +60,7 @@ type ResolvedProps = Record<string, unknown>;
59
60
  type PropsResolver = ReturnType<typeof createPropsResolver>;
60
61
  declare function createPropsResolver({ transformers, schema: initialSchema, onPropResolve }: CreatePropResolverArgs): ({ props, schema, signal }: ResolveArgs) => Promise<ResolvedProps>;
61
62
 
62
- export { type PropsResolver, createPropsResolver, createTransformer, createTransformersRegistry, init, settingsTransformersRegistry, styleTransformersRegistry };
63
+ declare const startDragElementFromPanel: (props: Omit<V1ElementModelProps, "id">) => void;
64
+ declare const endDragElementFromPanel: () => void;
65
+
66
+ export { type PropsResolver, createPropsResolver, createTransformer, createTransformersRegistry, endDragElementFromPanel, init, settingsTransformersRegistry, startDragElementFromPanel, styleTransformersRegistry };
package/dist/index.js CHANGED
@@ -33,8 +33,10 @@ __export(index_exports, {
33
33
  createPropsResolver: () => createPropsResolver,
34
34
  createTransformer: () => createTransformer,
35
35
  createTransformersRegistry: () => createTransformersRegistry,
36
+ endDragElementFromPanel: () => endDragElementFromPanel,
36
37
  init: () => init,
37
38
  settingsTransformersRegistry: () => settingsTransformersRegistry,
39
+ startDragElementFromPanel: () => startDragElementFromPanel,
38
40
  styleTransformersRegistry: () => styleTransformersRegistry
39
41
  });
40
42
  module.exports = __toCommonJS(index_exports);
@@ -1604,13 +1606,50 @@ function init() {
1604
1606
  component: ClassesRename
1605
1607
  });
1606
1608
  }
1609
+
1610
+ // src/sync/drag-element-from-panel.ts
1611
+ var startDragElementFromPanel = (props) => {
1612
+ const channels = getElementorChannels();
1613
+ channels?.editor.reply("element:dragged", null);
1614
+ channels?.panelElements.reply("element:selected", getLegacyPanelElementView(props)).trigger("element:drag:start");
1615
+ };
1616
+ var endDragElementFromPanel = () => {
1617
+ getElementorChannels()?.panelElements?.trigger("element:drag:end");
1618
+ };
1619
+ var getElementorChannels = () => {
1620
+ const extendedWindow = window;
1621
+ const channels = extendedWindow.elementor?.channels;
1622
+ if (!channels) {
1623
+ throw new Error(
1624
+ "Elementor channels not found: Elementor editor is not initialized or channels are unavailable."
1625
+ );
1626
+ }
1627
+ return channels;
1628
+ };
1629
+ var getLegacyPanelElementView = ({ settings, ...rest }) => {
1630
+ const extendedWindow = window;
1631
+ const LegacyElementModel = extendedWindow.elementor?.modules?.elements?.models?.Element;
1632
+ if (!LegacyElementModel) {
1633
+ throw new Error("Elementor legacy Element model not found in editor modules");
1634
+ }
1635
+ const elementModel = new LegacyElementModel({
1636
+ ...rest,
1637
+ custom: {
1638
+ isPreset: !!settings,
1639
+ preset_settings: settings
1640
+ }
1641
+ });
1642
+ return { model: elementModel };
1643
+ };
1607
1644
  // Annotate the CommonJS export names for ESM import in node:
1608
1645
  0 && (module.exports = {
1609
1646
  createPropsResolver,
1610
1647
  createTransformer,
1611
1648
  createTransformersRegistry,
1649
+ endDragElementFromPanel,
1612
1650
  init,
1613
1651
  settingsTransformersRegistry,
1652
+ startDragElementFromPanel,
1614
1653
  styleTransformersRegistry
1615
1654
  });
1616
1655
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -1587,12 +1587,49 @@ function init() {
1587
1587
  component: ClassesRename
1588
1588
  });
1589
1589
  }
1590
+
1591
+ // src/sync/drag-element-from-panel.ts
1592
+ var startDragElementFromPanel = (props) => {
1593
+ const channels = getElementorChannels();
1594
+ channels?.editor.reply("element:dragged", null);
1595
+ channels?.panelElements.reply("element:selected", getLegacyPanelElementView(props)).trigger("element:drag:start");
1596
+ };
1597
+ var endDragElementFromPanel = () => {
1598
+ getElementorChannels()?.panelElements?.trigger("element:drag:end");
1599
+ };
1600
+ var getElementorChannels = () => {
1601
+ const extendedWindow = window;
1602
+ const channels = extendedWindow.elementor?.channels;
1603
+ if (!channels) {
1604
+ throw new Error(
1605
+ "Elementor channels not found: Elementor editor is not initialized or channels are unavailable."
1606
+ );
1607
+ }
1608
+ return channels;
1609
+ };
1610
+ var getLegacyPanelElementView = ({ settings, ...rest }) => {
1611
+ const extendedWindow = window;
1612
+ const LegacyElementModel = extendedWindow.elementor?.modules?.elements?.models?.Element;
1613
+ if (!LegacyElementModel) {
1614
+ throw new Error("Elementor legacy Element model not found in editor modules");
1615
+ }
1616
+ const elementModel = new LegacyElementModel({
1617
+ ...rest,
1618
+ custom: {
1619
+ isPreset: !!settings,
1620
+ preset_settings: settings
1621
+ }
1622
+ });
1623
+ return { model: elementModel };
1624
+ };
1590
1625
  export {
1591
1626
  createPropsResolver,
1592
1627
  createTransformer,
1593
1628
  createTransformersRegistry,
1629
+ endDragElementFromPanel,
1594
1630
  init,
1595
1631
  settingsTransformersRegistry,
1632
+ startDragElementFromPanel,
1596
1633
  styleTransformersRegistry
1597
1634
  };
1598
1635
  //# sourceMappingURL=index.mjs.map
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.33.0-119",
4
+ "version": "3.33.0-121",
5
5
  "private": false,
6
6
  "author": "Elementor Team",
7
7
  "homepage": "https://elementor.com/",
@@ -37,19 +37,19 @@
37
37
  "react-dom": "^18.3.1"
38
38
  },
39
39
  "dependencies": {
40
- "@elementor/editor": "3.33.0-119",
41
- "@elementor/editor-notifications": "3.33.0-119",
42
- "@elementor/editor-documents": "3.33.0-119",
43
- "@elementor/editor-elements": "3.33.0-119",
44
- "@elementor/editor-props": "3.33.0-119",
45
- "@elementor/editor-responsive": "3.33.0-119",
46
- "@elementor/editor-styles": "3.33.0-119",
47
- "@elementor/editor-styles-repository": "3.33.0-119",
48
- "@elementor/editor-v1-adapters": "3.33.0-119",
49
- "@elementor/twing": "3.33.0-119",
40
+ "@elementor/editor": "3.33.0-121",
41
+ "@elementor/editor-notifications": "3.33.0-121",
42
+ "@elementor/editor-documents": "3.33.0-121",
43
+ "@elementor/editor-elements": "3.33.0-121",
44
+ "@elementor/editor-props": "3.33.0-121",
45
+ "@elementor/editor-responsive": "3.33.0-121",
46
+ "@elementor/editor-styles": "3.33.0-121",
47
+ "@elementor/editor-styles-repository": "3.33.0-121",
48
+ "@elementor/editor-v1-adapters": "3.33.0-121",
49
+ "@elementor/twing": "3.33.0-121",
50
50
  "@elementor/ui": "1.36.12",
51
- "@elementor/utils": "3.33.0-119",
52
- "@elementor/wp-media": "3.33.0-119",
51
+ "@elementor/utils": "3.33.0-121",
52
+ "@elementor/wp-media": "3.33.0-121",
53
53
  "@floating-ui/react": "^0.27.5",
54
54
  "@wordpress/i18n": "^5.13.0"
55
55
  },
package/src/index.ts CHANGED
@@ -5,3 +5,4 @@ export { settingsTransformersRegistry } from './settings-transformers-registry';
5
5
  export { createTransformer } from './transformers/create-transformer';
6
6
  export { createTransformersRegistry } from './transformers/create-transformers-registry';
7
7
  export { createPropsResolver, type PropsResolver } from './renderers/create-props-resolver';
8
+ export { startDragElementFromPanel, endDragElementFromPanel } from './sync/drag-element-from-panel';
@@ -0,0 +1,49 @@
1
+ import { type V1ElementModelProps } from '@elementor/editor-elements';
2
+
3
+ import { type CanvasExtendedWindow } from './types';
4
+
5
+ export const startDragElementFromPanel = ( props: Omit< V1ElementModelProps, 'id' > ) => {
6
+ const channels = getElementorChannels();
7
+
8
+ channels?.editor.reply( 'element:dragged', null );
9
+
10
+ channels?.panelElements
11
+ .reply( 'element:selected', getLegacyPanelElementView( props ) )
12
+ .trigger( 'element:drag:start' );
13
+ };
14
+
15
+ export const endDragElementFromPanel = () => {
16
+ getElementorChannels()?.panelElements?.trigger( 'element:drag:end' );
17
+ };
18
+
19
+ const getElementorChannels = () => {
20
+ const extendedWindow = window as unknown as CanvasExtendedWindow;
21
+ const channels = extendedWindow.elementor?.channels;
22
+
23
+ if ( ! channels ) {
24
+ throw new Error(
25
+ 'Elementor channels not found: Elementor editor is not initialized or channels are unavailable.'
26
+ );
27
+ }
28
+
29
+ return channels;
30
+ };
31
+
32
+ const getLegacyPanelElementView = ( { settings, ...rest }: Omit< V1ElementModelProps, 'id' > ) => {
33
+ const extendedWindow = window as unknown as CanvasExtendedWindow;
34
+ const LegacyElementModel = extendedWindow.elementor?.modules?.elements?.models?.Element;
35
+
36
+ if ( ! LegacyElementModel ) {
37
+ throw new Error( 'Elementor legacy Element model not found in editor modules' );
38
+ }
39
+
40
+ const elementModel = new LegacyElementModel( {
41
+ ...rest,
42
+ custom: {
43
+ isPreset: !! settings,
44
+ preset_settings: settings,
45
+ },
46
+ } );
47
+
48
+ return { model: elementModel };
49
+ };
package/src/sync/types.ts CHANGED
@@ -1,13 +1,39 @@
1
- import { type StorageContent } from '../prevent-link-in-link-commands';
1
+ import { type V1ElementModelProps, type V1ElementSettingsProps } from '@elementor/editor-elements';
2
2
 
3
+ import { type StorageContent } from '../prevent-link-in-link-commands';
3
4
  export type EnqueueFont = ( fontFamily: string, context?: 'preview' | 'editor' ) => void;
4
5
 
6
+ export type ElementModelProps = Omit< V1ElementModelProps, 'id' > & {
7
+ custom: {
8
+ isPreset: boolean;
9
+ preset_settings?: V1ElementSettingsProps;
10
+ };
11
+ };
12
+
13
+ type Channel = {
14
+ reply: ( event: string, data: unknown ) => Channel;
15
+ trigger: ( event: string ) => void;
16
+ };
17
+
18
+ type ElementorChannels = {
19
+ editor: Channel;
20
+ panelElements: Channel;
21
+ };
22
+
5
23
  export type CanvasExtendedWindow = Window & {
6
24
  elementor?: {
7
25
  $preview?: [ HTMLIFrameElement ];
8
26
  helpers?: {
9
27
  enqueueFont?: EnqueueFont;
10
28
  };
29
+ channels?: ElementorChannels;
30
+ modules?: {
31
+ elements?: {
32
+ models?: {
33
+ Element?: new ( props: ElementModelProps ) => unknown;
34
+ };
35
+ };
36
+ };
11
37
  };
12
38
  elementorCommon?: {
13
39
  storage?: {