@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 +74 -2
- package/dist/index.mjs +74 -2
- package/package.json +18 -18
- package/src/legacy/create-pro-promotion-nested-type.ts +82 -0
- package/src/legacy/init-legacy-views.ts +19 -5
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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-
|
|
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-
|
|
40
|
+
"@elementor/editor": "4.1.0-747",
|
|
41
41
|
"dompurify": "^3.2.6",
|
|
42
|
-
"@elementor/editor-controls": "4.1.0-
|
|
43
|
-
"@elementor/editor-documents": "4.1.0-
|
|
44
|
-
"@elementor/editor-elements": "4.1.0-
|
|
45
|
-
"@elementor/editor-interactions": "4.1.0-
|
|
46
|
-
"@elementor/editor-mcp": "4.1.0-
|
|
47
|
-
"@elementor/editor-notifications": "4.1.0-
|
|
48
|
-
"@elementor/editor-props": "4.1.0-
|
|
49
|
-
"@elementor/editor-responsive": "4.1.0-
|
|
50
|
-
"@elementor/editor-styles": "4.1.0-
|
|
51
|
-
"@elementor/editor-styles-repository": "4.1.0-
|
|
52
|
-
"@elementor/editor-ui": "4.1.0-
|
|
53
|
-
"@elementor/editor-v1-adapters": "4.1.0-
|
|
54
|
-
"@elementor/schema": "4.1.0-
|
|
55
|
-
"@elementor/twing": "4.1.0-
|
|
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-
|
|
58
|
-
"@elementor/wp-media": "4.1.0-
|
|
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
|
-
|
|
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
|
|
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(
|