@elementor/editor-canvas 4.1.0-746 → 4.1.0-747

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.js CHANGED
@@ -2421,6 +2421,69 @@ function createNestedTemplatedElementView({
2421
2421
  });
2422
2422
  }
2423
2423
 
2424
+ // src/legacy/create-pro-promotion-nested-type.ts
2425
+ function createProPromotionNestedType({
2426
+ type,
2427
+ renderer,
2428
+ element
2429
+ }) {
2430
+ if (!canBeNestedTemplated(element)) {
2431
+ throw new Error(`Element "${type}" is not a valid nested templated element.`);
2432
+ }
2433
+ const BaseType = createNestedTemplatedElementType({
2434
+ type,
2435
+ renderer,
2436
+ element
2437
+ });
2438
+ let PromotionView = null;
2439
+ return class extends BaseType {
2440
+ getView() {
2441
+ if (!PromotionView) {
2442
+ const BaseView = new BaseType().getView();
2443
+ PromotionView = createPromotionView(BaseView);
2444
+ }
2445
+ return PromotionView;
2446
+ }
2447
+ };
2448
+ }
2449
+ function createPromotionView(BaseView) {
2450
+ return class extends BaseView {
2451
+ _afterRender() {
2452
+ super._afterRender();
2453
+ this.$el.off("click", ".e-form-placeholder__remove-btn");
2454
+ this.$el.on("click", ".e-form-placeholder__remove-btn", (e) => {
2455
+ e.preventDefault();
2456
+ e.stopPropagation();
2457
+ window.$e.run(
2458
+ "document/elements/delete",
2459
+ { container: this.container }
2460
+ );
2461
+ });
2462
+ this.$el.off("click", ".e-form-placeholder__unlock-btn");
2463
+ this.$el.on("click", ".e-form-placeholder__unlock-btn", (e) => {
2464
+ e.stopPropagation();
2465
+ });
2466
+ }
2467
+ _renderChildren() {
2468
+ }
2469
+ behaviors() {
2470
+ const disabledBehaviors = ["InlineEditing", "Draggable", "Resizable"];
2471
+ const behaviorsAsEntries = Object.entries(super.behaviors()).filter(
2472
+ ([key]) => !disabledBehaviors.includes(key)
2473
+ );
2474
+ return Object.fromEntries(behaviorsAsEntries);
2475
+ }
2476
+ getContextMenuGroups() {
2477
+ return super.getContextMenuGroups().filter((group) => group.name !== "save");
2478
+ }
2479
+ onDestroy(...args) {
2480
+ super.onDestroy(...args);
2481
+ this.$el.off("click", ".e-form-placeholder__remove-btn");
2482
+ this.$el.off("click", ".e-form-placeholder__unlock-btn");
2483
+ }
2484
+ };
2485
+ }
2486
+
2424
2487
  // src/legacy/replacements/manager.ts
2425
2488
  var import_client = require("react-dom/client");
2426
2489
 
@@ -3047,6 +3110,7 @@ function initLegacyViews() {
3047
3110
  const widgetsCache = (0, import_editor_elements6.getWidgetsCache)() ?? {};
3048
3111
  const legacyWindow = window;
3049
3112
  const renderer = createDomRenderer();
3113
+ registerProPromotionTypes(widgetsCache);
3050
3114
  Object.entries(widgetsCache).forEach(([type, element]) => {
3051
3115
  if (!element.atomic) {
3052
3116
  return;
@@ -3056,15 +3120,23 @@ function initLegacyViews() {
3056
3120
  });
3057
3121
  });
3058
3122
  }
3123
+ function registerProPromotionTypes(widgetsCache) {
3124
+ Object.entries(widgetsCache).forEach(([type, element]) => {
3125
+ if (element.meta?.is_pro_promotion) {
3126
+ registerElementType(type, (options) => createProPromotionNestedType(options));
3127
+ }
3128
+ });
3129
+ }
3059
3130
  function resolveElementType(type, renderer, element) {
3060
3131
  if (canBeNestedTemplated(element)) {
3061
- return createNestedTemplatedType(type, renderer, element);
3132
+ const customGenerator2 = elementsLegacyTypes[type];
3133
+ return customGenerator2 ? customGenerator2({ type, renderer, element }) : createNestedTemplatedType(type, renderer, element);
3062
3134
  }
3063
3135
  if (!canBeTemplated(element)) {
3064
3136
  return createElementType(type);
3065
3137
  }
3066
3138
  const customGenerator = elementsLegacyTypes[type];
3067
- return customGenerator?.({ type, renderer, element }) ?? createTemplatedElementTypeWithReplacements({ type, renderer, element });
3139
+ return customGenerator ? customGenerator({ type, renderer, element }) : createTemplatedElementTypeWithReplacements({ type, renderer, element });
3068
3140
  }
3069
3141
  function tryRegisterElement(legacyWindow, type, element, ResolvedElementType) {
3070
3142
  const shouldBeRegistered = canBeTemplated(element) || canBeNestedTemplated(element);
package/dist/index.mjs CHANGED
@@ -2387,6 +2387,69 @@ function createNestedTemplatedElementView({
2387
2387
  });
2388
2388
  }
2389
2389
 
2390
+ // src/legacy/create-pro-promotion-nested-type.ts
2391
+ function createProPromotionNestedType({
2392
+ type,
2393
+ renderer,
2394
+ element
2395
+ }) {
2396
+ if (!canBeNestedTemplated(element)) {
2397
+ throw new Error(`Element "${type}" is not a valid nested templated element.`);
2398
+ }
2399
+ const BaseType = createNestedTemplatedElementType({
2400
+ type,
2401
+ renderer,
2402
+ element
2403
+ });
2404
+ let PromotionView = null;
2405
+ return class extends BaseType {
2406
+ getView() {
2407
+ if (!PromotionView) {
2408
+ const BaseView = new BaseType().getView();
2409
+ PromotionView = createPromotionView(BaseView);
2410
+ }
2411
+ return PromotionView;
2412
+ }
2413
+ };
2414
+ }
2415
+ function createPromotionView(BaseView) {
2416
+ return class extends BaseView {
2417
+ _afterRender() {
2418
+ super._afterRender();
2419
+ this.$el.off("click", ".e-form-placeholder__remove-btn");
2420
+ this.$el.on("click", ".e-form-placeholder__remove-btn", (e) => {
2421
+ e.preventDefault();
2422
+ e.stopPropagation();
2423
+ window.$e.run(
2424
+ "document/elements/delete",
2425
+ { container: this.container }
2426
+ );
2427
+ });
2428
+ this.$el.off("click", ".e-form-placeholder__unlock-btn");
2429
+ this.$el.on("click", ".e-form-placeholder__unlock-btn", (e) => {
2430
+ e.stopPropagation();
2431
+ });
2432
+ }
2433
+ _renderChildren() {
2434
+ }
2435
+ behaviors() {
2436
+ const disabledBehaviors = ["InlineEditing", "Draggable", "Resizable"];
2437
+ const behaviorsAsEntries = Object.entries(super.behaviors()).filter(
2438
+ ([key]) => !disabledBehaviors.includes(key)
2439
+ );
2440
+ return Object.fromEntries(behaviorsAsEntries);
2441
+ }
2442
+ getContextMenuGroups() {
2443
+ return super.getContextMenuGroups().filter((group) => group.name !== "save");
2444
+ }
2445
+ onDestroy(...args) {
2446
+ super.onDestroy(...args);
2447
+ this.$el.off("click", ".e-form-placeholder__remove-btn");
2448
+ this.$el.off("click", ".e-form-placeholder__unlock-btn");
2449
+ }
2450
+ };
2451
+ }
2452
+
2390
2453
  // src/legacy/replacements/manager.ts
2391
2454
  import { createRoot } from "react-dom/client";
2392
2455
 
@@ -3017,6 +3080,7 @@ function initLegacyViews() {
3017
3080
  const widgetsCache = getWidgetsCache2() ?? {};
3018
3081
  const legacyWindow = window;
3019
3082
  const renderer = createDomRenderer();
3083
+ registerProPromotionTypes(widgetsCache);
3020
3084
  Object.entries(widgetsCache).forEach(([type, element]) => {
3021
3085
  if (!element.atomic) {
3022
3086
  return;
@@ -3026,15 +3090,23 @@ function initLegacyViews() {
3026
3090
  });
3027
3091
  });
3028
3092
  }
3093
+ function registerProPromotionTypes(widgetsCache) {
3094
+ Object.entries(widgetsCache).forEach(([type, element]) => {
3095
+ if (element.meta?.is_pro_promotion) {
3096
+ registerElementType(type, (options) => createProPromotionNestedType(options));
3097
+ }
3098
+ });
3099
+ }
3029
3100
  function resolveElementType(type, renderer, element) {
3030
3101
  if (canBeNestedTemplated(element)) {
3031
- return createNestedTemplatedType(type, renderer, element);
3102
+ const customGenerator2 = elementsLegacyTypes[type];
3103
+ return customGenerator2 ? customGenerator2({ type, renderer, element }) : createNestedTemplatedType(type, renderer, element);
3032
3104
  }
3033
3105
  if (!canBeTemplated(element)) {
3034
3106
  return createElementType(type);
3035
3107
  }
3036
3108
  const customGenerator = elementsLegacyTypes[type];
3037
- return customGenerator?.({ type, renderer, element }) ?? createTemplatedElementTypeWithReplacements({ type, renderer, element });
3109
+ return customGenerator ? customGenerator({ type, renderer, element }) : createTemplatedElementTypeWithReplacements({ type, renderer, element });
3038
3110
  }
3039
3111
  function tryRegisterElement(legacyWindow, type, element, ResolvedElementType) {
3040
3112
  const shouldBeRegistered = canBeTemplated(element) || canBeNestedTemplated(element);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elementor/editor-canvas",
3
3
  "description": "Elementor Editor Canvas",
4
- "version": "4.1.0-746",
4
+ "version": "4.1.0-747",
5
5
  "private": false,
6
6
  "author": "Elementor Team",
7
7
  "homepage": "https://elementor.com/",
@@ -37,25 +37,25 @@
37
37
  "react-dom": "^18.3.1"
38
38
  },
39
39
  "dependencies": {
40
- "@elementor/editor": "4.1.0-746",
40
+ "@elementor/editor": "4.1.0-747",
41
41
  "dompurify": "^3.2.6",
42
- "@elementor/editor-controls": "4.1.0-746",
43
- "@elementor/editor-documents": "4.1.0-746",
44
- "@elementor/editor-elements": "4.1.0-746",
45
- "@elementor/editor-interactions": "4.1.0-746",
46
- "@elementor/editor-mcp": "4.1.0-746",
47
- "@elementor/editor-notifications": "4.1.0-746",
48
- "@elementor/editor-props": "4.1.0-746",
49
- "@elementor/editor-responsive": "4.1.0-746",
50
- "@elementor/editor-styles": "4.1.0-746",
51
- "@elementor/editor-styles-repository": "4.1.0-746",
52
- "@elementor/editor-ui": "4.1.0-746",
53
- "@elementor/editor-v1-adapters": "4.1.0-746",
54
- "@elementor/schema": "4.1.0-746",
55
- "@elementor/twing": "4.1.0-746",
42
+ "@elementor/editor-controls": "4.1.0-747",
43
+ "@elementor/editor-documents": "4.1.0-747",
44
+ "@elementor/editor-elements": "4.1.0-747",
45
+ "@elementor/editor-interactions": "4.1.0-747",
46
+ "@elementor/editor-mcp": "4.1.0-747",
47
+ "@elementor/editor-notifications": "4.1.0-747",
48
+ "@elementor/editor-props": "4.1.0-747",
49
+ "@elementor/editor-responsive": "4.1.0-747",
50
+ "@elementor/editor-styles": "4.1.0-747",
51
+ "@elementor/editor-styles-repository": "4.1.0-747",
52
+ "@elementor/editor-ui": "4.1.0-747",
53
+ "@elementor/editor-v1-adapters": "4.1.0-747",
54
+ "@elementor/schema": "4.1.0-747",
55
+ "@elementor/twing": "4.1.0-747",
56
56
  "@elementor/ui": "1.36.17",
57
- "@elementor/utils": "4.1.0-746",
58
- "@elementor/wp-media": "4.1.0-746",
57
+ "@elementor/utils": "4.1.0-747",
58
+ "@elementor/wp-media": "4.1.0-747",
59
59
  "@floating-ui/react": "^0.27.5",
60
60
  "@wordpress/i18n": "^5.13.0"
61
61
  },
@@ -0,0 +1,82 @@
1
+ import {
2
+ canBeNestedTemplated,
3
+ createNestedTemplatedElementType,
4
+ type NestedTemplatedElementConfig,
5
+ } from './create-nested-templated-element-type';
6
+ import { type CreateTemplatedElementTypeOptions } from './create-templated-element-type';
7
+ import { type ElementType, type ElementView } from './types';
8
+
9
+ export function createProPromotionNestedType( {
10
+ type,
11
+ renderer,
12
+ element,
13
+ }: CreateTemplatedElementTypeOptions ): typeof ElementType {
14
+ if ( ! canBeNestedTemplated( element ) ) {
15
+ throw new Error( `Element "${ type }" is not a valid nested templated element.` );
16
+ }
17
+
18
+ const BaseType = createNestedTemplatedElementType( {
19
+ type,
20
+ renderer,
21
+ element: element as NestedTemplatedElementConfig,
22
+ } );
23
+
24
+ let PromotionView: typeof ElementView | null = null;
25
+
26
+ return class extends BaseType {
27
+ getView() {
28
+ if ( ! PromotionView ) {
29
+ const BaseView = new BaseType().getView();
30
+ PromotionView = createPromotionView( BaseView );
31
+ }
32
+
33
+ return PromotionView;
34
+ }
35
+ };
36
+ }
37
+
38
+ function createPromotionView( BaseView: typeof ElementView ): typeof ElementView {
39
+ return class extends BaseView {
40
+ _afterRender() {
41
+ super._afterRender();
42
+
43
+ this.$el.off( 'click', '.e-form-placeholder__remove-btn' );
44
+ this.$el.on( 'click', '.e-form-placeholder__remove-btn', ( e: Event ) => {
45
+ e.preventDefault();
46
+ e.stopPropagation();
47
+
48
+ ( window as unknown as { $e: { run: ( command: string, args: object ) => void } } ).$e.run(
49
+ 'document/elements/delete',
50
+ { container: this.container }
51
+ );
52
+ } );
53
+
54
+ this.$el.off( 'click', '.e-form-placeholder__unlock-btn' );
55
+ this.$el.on( 'click', '.e-form-placeholder__unlock-btn', ( e: Event ) => {
56
+ e.stopPropagation();
57
+ } );
58
+ }
59
+
60
+ _renderChildren() {}
61
+
62
+ behaviors() {
63
+ const disabledBehaviors = [ 'InlineEditing', 'Draggable', 'Resizable' ];
64
+
65
+ const behaviorsAsEntries = Object.entries( super.behaviors() ).filter(
66
+ ( [ key ] ) => ! disabledBehaviors.includes( key )
67
+ );
68
+
69
+ return Object.fromEntries( behaviorsAsEntries );
70
+ }
71
+
72
+ getContextMenuGroups() {
73
+ return super.getContextMenuGroups().filter( ( group: { name: string } ) => group.name !== 'save' );
74
+ }
75
+
76
+ onDestroy( ...args: unknown[] ) {
77
+ super.onDestroy( ...args );
78
+ this.$el.off( 'click', '.e-form-placeholder__remove-btn' );
79
+ this.$el.off( 'click', '.e-form-placeholder__unlock-btn' );
80
+ }
81
+ } as unknown as typeof ElementView;
82
+ }
@@ -9,6 +9,7 @@ import {
9
9
  type ModelExtensions,
10
10
  type NestedTemplatedElementConfig,
11
11
  } from './create-nested-templated-element-type';
12
+ import { createProPromotionNestedType } from './create-pro-promotion-nested-type';
12
13
  import { canBeTemplated, type CreateTemplatedElementTypeOptions } from './create-templated-element-type';
13
14
  import { createTemplatedElementTypeWithReplacements } from './replacements/manager';
14
15
  import type { ElementType, LegacyWindow } from './types';
@@ -37,6 +38,8 @@ export function initLegacyViews() {
37
38
  const legacyWindow = window as unknown as LegacyWindow;
38
39
  const renderer = createDomRenderer();
39
40
 
41
+ registerProPromotionTypes( widgetsCache );
42
+
40
43
  Object.entries( widgetsCache ).forEach( ( [ type, element ] ) => {
41
44
  if ( ! element.atomic ) {
42
45
  return;
@@ -49,9 +52,21 @@ export function initLegacyViews() {
49
52
  } );
50
53
  }
51
54
 
55
+ function registerProPromotionTypes( widgetsCache: Record< string, V1ElementConfig > ) {
56
+ Object.entries( widgetsCache ).forEach( ( [ type, element ] ) => {
57
+ if ( element.meta?.is_pro_promotion ) {
58
+ registerElementType( type, ( options ) => createProPromotionNestedType( options ) );
59
+ }
60
+ } );
61
+ }
62
+
52
63
  function resolveElementType( type: string, renderer: DomRenderer, element: V1ElementConfig ) {
53
64
  if ( canBeNestedTemplated( element ) ) {
54
- return createNestedTemplatedType( type, renderer, element );
65
+ const customGenerator = elementsLegacyTypes[ type ];
66
+
67
+ return customGenerator
68
+ ? customGenerator( { type, renderer, element } )
69
+ : createNestedTemplatedType( type, renderer, element );
55
70
  }
56
71
 
57
72
  if ( ! canBeTemplated( element ) ) {
@@ -60,10 +75,9 @@ function resolveElementType( type: string, renderer: DomRenderer, element: V1Ele
60
75
 
61
76
  const customGenerator = elementsLegacyTypes[ type ];
62
77
 
63
- return (
64
- customGenerator?.( { type, renderer, element } ) ??
65
- createTemplatedElementTypeWithReplacements( { type, renderer, element } )
66
- );
78
+ return customGenerator
79
+ ? customGenerator( { type, renderer, element } )
80
+ : createTemplatedElementTypeWithReplacements( { type, renderer, element } );
67
81
  }
68
82
 
69
83
  function tryRegisterElement(