@elementor/editor-components 3.35.0-435 → 3.35.0-437
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 +106 -51
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +92 -37
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -22
- package/src/hooks/cleanup-overridable-props-on-delete.ts +83 -0
- package/src/init.ts +3 -0
- package/src/store/actions/load-components-styles.ts +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-components",
|
|
3
3
|
"description": "Elementor editor components",
|
|
4
|
-
"version": "3.35.0-
|
|
4
|
+
"version": "3.35.0-437",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Elementor Team",
|
|
7
7
|
"homepage": "https://elementor.com/",
|
|
@@ -40,30 +40,30 @@
|
|
|
40
40
|
"dev": "tsup --config=../../tsup.dev.ts"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@elementor/editor": "3.35.0-
|
|
44
|
-
"@elementor/editor-canvas": "3.35.0-
|
|
45
|
-
"@elementor/editor-controls": "3.35.0-
|
|
46
|
-
"@elementor/editor-documents": "3.35.0-
|
|
47
|
-
"@elementor/editor-editing-panel": "3.35.0-
|
|
48
|
-
"@elementor/editor-elements": "3.35.0-
|
|
49
|
-
"@elementor/editor-elements-panel": "3.35.0-
|
|
50
|
-
"@elementor/editor-mcp": "3.35.0-
|
|
51
|
-
"@elementor/editor-panels": "3.35.0-
|
|
52
|
-
"@elementor/editor-props": "3.35.0-
|
|
53
|
-
"@elementor/editor-styles-repository": "3.35.0-
|
|
54
|
-
"@elementor/editor-ui": "3.35.0-
|
|
55
|
-
"@elementor/editor-v1-adapters": "3.35.0-
|
|
56
|
-
"@elementor/http-client": "3.35.0-
|
|
43
|
+
"@elementor/editor": "3.35.0-437",
|
|
44
|
+
"@elementor/editor-canvas": "3.35.0-437",
|
|
45
|
+
"@elementor/editor-controls": "3.35.0-437",
|
|
46
|
+
"@elementor/editor-documents": "3.35.0-437",
|
|
47
|
+
"@elementor/editor-editing-panel": "3.35.0-437",
|
|
48
|
+
"@elementor/editor-elements": "3.35.0-437",
|
|
49
|
+
"@elementor/editor-elements-panel": "3.35.0-437",
|
|
50
|
+
"@elementor/editor-mcp": "3.35.0-437",
|
|
51
|
+
"@elementor/editor-panels": "3.35.0-437",
|
|
52
|
+
"@elementor/editor-props": "3.35.0-437",
|
|
53
|
+
"@elementor/editor-styles-repository": "3.35.0-437",
|
|
54
|
+
"@elementor/editor-ui": "3.35.0-437",
|
|
55
|
+
"@elementor/editor-v1-adapters": "3.35.0-437",
|
|
56
|
+
"@elementor/http-client": "3.35.0-437",
|
|
57
57
|
"@elementor/icons": "^1.63.0",
|
|
58
|
-
"@elementor/mixpanel": "3.35.0-
|
|
59
|
-
"@elementor/query": "3.35.0-
|
|
60
|
-
"@elementor/schema": "3.35.0-
|
|
61
|
-
"@elementor/store": "3.35.0-
|
|
58
|
+
"@elementor/mixpanel": "3.35.0-437",
|
|
59
|
+
"@elementor/query": "3.35.0-437",
|
|
60
|
+
"@elementor/schema": "3.35.0-437",
|
|
61
|
+
"@elementor/store": "3.35.0-437",
|
|
62
62
|
"@elementor/ui": "1.36.17",
|
|
63
|
-
"@elementor/utils": "3.35.0-
|
|
63
|
+
"@elementor/utils": "3.35.0-437",
|
|
64
64
|
"@wordpress/i18n": "^5.13.0",
|
|
65
|
-
"@elementor/editor-notifications": "3.35.0-
|
|
66
|
-
"@elementor/editor-current-user": "3.35.0-
|
|
65
|
+
"@elementor/editor-notifications": "3.35.0-437",
|
|
66
|
+
"@elementor/editor-current-user": "3.35.0-437"
|
|
67
67
|
},
|
|
68
68
|
"peerDependencies": {
|
|
69
69
|
"react": "^18.3.1",
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { getAllDescendants, type V1Element } from '@elementor/editor-elements';
|
|
2
|
+
import { registerDataHook } from '@elementor/editor-v1-adapters';
|
|
3
|
+
import { __dispatch as dispatch, __getState as getState } from '@elementor/store';
|
|
4
|
+
|
|
5
|
+
import { type ComponentsSlice, selectCurrentComponentId, selectOverridableProps, slice } from '../store/store';
|
|
6
|
+
import { removePropFromAllGroups } from '../store/utils/groups-transformers';
|
|
7
|
+
|
|
8
|
+
type DeleteCommandArgs = {
|
|
9
|
+
container?: V1Element;
|
|
10
|
+
containers?: V1Element[];
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export function initCleanupOverridablePropsOnDelete() {
|
|
14
|
+
registerDataHook( 'after', 'document/elements/delete', ( args: DeleteCommandArgs ) => {
|
|
15
|
+
const state = getState() as ComponentsSlice | undefined;
|
|
16
|
+
|
|
17
|
+
if ( ! state ) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const currentComponentId = selectCurrentComponentId( state );
|
|
22
|
+
|
|
23
|
+
if ( ! currentComponentId ) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const overridableProps = selectOverridableProps( state, currentComponentId );
|
|
28
|
+
|
|
29
|
+
if ( ! overridableProps || Object.keys( overridableProps.props ).length === 0 ) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const containers = args.containers ?? ( args.container ? [ args.container ] : [] );
|
|
34
|
+
|
|
35
|
+
if ( containers.length === 0 ) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const deletedElementIds = collectDeletedElementIds( containers );
|
|
40
|
+
|
|
41
|
+
if ( deletedElementIds.length === 0 ) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const propKeysToDelete = Object.entries( overridableProps.props )
|
|
46
|
+
.filter( ( [ , prop ] ) => deletedElementIds.includes( prop.elementId ) )
|
|
47
|
+
.map( ( [ propKey ] ) => propKey );
|
|
48
|
+
|
|
49
|
+
if ( propKeysToDelete.length === 0 ) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const remainingProps = Object.fromEntries(
|
|
54
|
+
Object.entries( overridableProps.props ).filter( ( [ propKey ] ) => ! propKeysToDelete.includes( propKey ) )
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
let updatedGroups = overridableProps.groups;
|
|
58
|
+
for ( const propKey of propKeysToDelete ) {
|
|
59
|
+
updatedGroups = removePropFromAllGroups( updatedGroups, propKey );
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
dispatch(
|
|
63
|
+
slice.actions.setOverridableProps( {
|
|
64
|
+
componentId: currentComponentId,
|
|
65
|
+
overridableProps: {
|
|
66
|
+
...overridableProps,
|
|
67
|
+
props: remainingProps,
|
|
68
|
+
groups: updatedGroups,
|
|
69
|
+
},
|
|
70
|
+
} )
|
|
71
|
+
);
|
|
72
|
+
} );
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function collectDeletedElementIds( containers: V1Element[] ): string[] {
|
|
76
|
+
const elementIds = containers
|
|
77
|
+
.filter( Boolean )
|
|
78
|
+
.flatMap( ( container ) => [ container, ...getAllDescendants( container ) ] )
|
|
79
|
+
.map( ( element ) => element.model?.get?.( 'id' ) ?? element.id )
|
|
80
|
+
.filter( ( id ): id is string => Boolean( id ) );
|
|
81
|
+
|
|
82
|
+
return elementIds;
|
|
83
|
+
}
|
package/src/init.ts
CHANGED
|
@@ -34,6 +34,7 @@ import { InstanceEditingPanel } from './components/instance-editing-panel/instan
|
|
|
34
34
|
import { OverridablePropControl } from './components/overridable-props/overridable-prop-control';
|
|
35
35
|
import { OverridablePropIndicator } from './components/overridable-props/overridable-prop-indicator';
|
|
36
36
|
import { COMPONENT_WIDGET_TYPE, createComponentType } from './create-component-type';
|
|
37
|
+
import { initCleanupOverridablePropsOnDelete } from './hooks/cleanup-overridable-props-on-delete';
|
|
37
38
|
import { initRegenerateOverrideKeys } from './hooks/regenerate-override-keys';
|
|
38
39
|
import { initMcp } from './mcp';
|
|
39
40
|
import { PopulateStore } from './populate-store';
|
|
@@ -132,6 +133,8 @@ export function init() {
|
|
|
132
133
|
|
|
133
134
|
initRegenerateOverrideKeys();
|
|
134
135
|
|
|
136
|
+
initCleanupOverridablePropsOnDelete();
|
|
137
|
+
|
|
135
138
|
initMcp();
|
|
136
139
|
|
|
137
140
|
initCircularNestingPrevention();
|