@elementor/editor-components 4.0.0-604 → 4.0.0-607

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elementor/editor-components",
3
3
  "description": "Elementor editor components",
4
- "version": "4.0.0-604",
4
+ "version": "4.0.0-607",
5
5
  "private": false,
6
6
  "author": "Elementor Team",
7
7
  "homepage": "https://elementor.com/",
@@ -40,31 +40,31 @@
40
40
  "dev": "tsup --config=../../tsup.dev.ts"
41
41
  },
42
42
  "dependencies": {
43
- "@elementor/editor": "4.0.0-604",
44
- "@elementor/editor-canvas": "4.0.0-604",
45
- "@elementor/editor-controls": "4.0.0-604",
46
- "@elementor/editor-documents": "4.0.0-604",
47
- "@elementor/editor-editing-panel": "4.0.0-604",
48
- "@elementor/editor-elements": "4.0.0-604",
49
- "@elementor/editor-elements-panel": "4.0.0-604",
50
- "@elementor/editor-mcp": "4.0.0-604",
51
- "@elementor/editor-templates": "4.0.0-604",
52
- "@elementor/editor-panels": "4.0.0-604",
53
- "@elementor/editor-props": "4.0.0-604",
54
- "@elementor/editor-styles-repository": "4.0.0-604",
55
- "@elementor/editor-ui": "4.0.0-604",
56
- "@elementor/editor-v1-adapters": "4.0.0-604",
57
- "@elementor/http-client": "4.0.0-604",
43
+ "@elementor/editor": "4.0.0-607",
44
+ "@elementor/editor-canvas": "4.0.0-607",
45
+ "@elementor/editor-controls": "4.0.0-607",
46
+ "@elementor/editor-documents": "4.0.0-607",
47
+ "@elementor/editor-editing-panel": "4.0.0-607",
48
+ "@elementor/editor-elements": "4.0.0-607",
49
+ "@elementor/editor-elements-panel": "4.0.0-607",
50
+ "@elementor/editor-mcp": "4.0.0-607",
51
+ "@elementor/editor-templates": "4.0.0-607",
52
+ "@elementor/editor-panels": "4.0.0-607",
53
+ "@elementor/editor-props": "4.0.0-607",
54
+ "@elementor/editor-styles-repository": "4.0.0-607",
55
+ "@elementor/editor-ui": "4.0.0-607",
56
+ "@elementor/editor-v1-adapters": "4.0.0-607",
57
+ "@elementor/http-client": "4.0.0-607",
58
58
  "@elementor/icons": "^1.68.0",
59
- "@elementor/events": "4.0.0-604",
60
- "@elementor/query": "4.0.0-604",
61
- "@elementor/schema": "4.0.0-604",
62
- "@elementor/store": "4.0.0-604",
59
+ "@elementor/events": "4.0.0-607",
60
+ "@elementor/query": "4.0.0-607",
61
+ "@elementor/schema": "4.0.0-607",
62
+ "@elementor/store": "4.0.0-607",
63
63
  "@elementor/ui": "1.36.17",
64
- "@elementor/utils": "4.0.0-604",
64
+ "@elementor/utils": "4.0.0-607",
65
65
  "@wordpress/i18n": "^5.13.0",
66
- "@elementor/editor-notifications": "4.0.0-604",
67
- "@elementor/editor-current-user": "4.0.0-604"
66
+ "@elementor/editor-notifications": "4.0.0-607",
67
+ "@elementor/editor-current-user": "4.0.0-607"
68
68
  },
69
69
  "peerDependencies": {
70
70
  "react": "^18.3.1",
@@ -1,4 +1,4 @@
1
- import { injectIntoTop } from '@elementor/editor';
1
+ import { injectIntoLogic, injectIntoTop } from '@elementor/editor';
2
2
  import { registerControlReplacement } from '@elementor/editor-controls';
3
3
  import { getV1CurrentDocument } from '@elementor/editor-documents';
4
4
  import { FIELD_TYPE, injectIntoPanelHeaderTop, registerFieldIndicator } from '@elementor/editor-editing-panel';
@@ -21,6 +21,7 @@ import { initCleanupOverridablePropsOnDelete } from './sync/cleanup-overridable-
21
21
  import { initHandleComponentEditModeContainer } from './sync/handle-component-edit-mode-container';
22
22
  import { initNonAtomicNestingPrevention } from './sync/prevent-non-atomic-nesting';
23
23
  import { initRevertOverridablesOnCopyOrDuplicate } from './sync/revert-overridables-on-copy-or-duplicate';
24
+ import { SanitizeOverridableProps } from './sync/sanitize-overridable-props';
24
25
 
25
26
  export function initExtended() {
26
27
  registerPanel( componentPropertiesPanel );
@@ -74,4 +75,9 @@ export function initExtended() {
74
75
  initHandleComponentEditModeContainer();
75
76
 
76
77
  initRevertOverridablesOnCopyOrDuplicate();
78
+
79
+ injectIntoLogic( {
80
+ id: 'sanitize-overridable-props',
81
+ component: SanitizeOverridableProps,
82
+ } );
77
83
  }
@@ -0,0 +1,32 @@
1
+ import { useEffect } from 'react';
2
+
3
+ import { useCurrentComponentId, useIsSanitizedComponent, useOverridableProps } from '../../store/store';
4
+ import { filterValidOverridableProps } from '../../utils/filter-valid-overridable-props';
5
+ import { deleteOverridableProp } from '../store/actions/delete-overridable-prop';
6
+ import { updateComponentSanitizedAttribute } from '../store/actions/update-component-sanitized-attribute';
7
+
8
+ export function SanitizeOverridableProps() {
9
+ const currentComponentId = useCurrentComponentId();
10
+ const overridableProps = useOverridableProps( currentComponentId );
11
+ const isSanitized = useIsSanitizedComponent( currentComponentId, 'overridableProps' );
12
+
13
+ useEffect( () => {
14
+ if ( isSanitized || ! overridableProps || ! currentComponentId ) {
15
+ return;
16
+ }
17
+
18
+ const filtered = filterValidOverridableProps( overridableProps );
19
+
20
+ const propsToDelete = Object.keys( overridableProps.props ?? {} ).filter( ( key ) => ! filtered.props[ key ] );
21
+
22
+ if ( propsToDelete.length > 0 ) {
23
+ propsToDelete.forEach( ( key ) => {
24
+ deleteOverridableProp( { componentId: currentComponentId, propKey: key, source: 'system' } );
25
+ } );
26
+ }
27
+
28
+ updateComponentSanitizedAttribute( currentComponentId, 'overridableProps' );
29
+ }, [ currentComponentId, isSanitized, overridableProps ] );
30
+
31
+ return null;
32
+ }
@@ -1,14 +1,12 @@
1
- import { deleteOverridableProp } from '../extended/store/actions/delete-overridable-prop';
2
- import { updateComponentSanitizedAttribute } from '../extended/store/actions/update-component-sanitized-attribute';
3
1
  import { useIsSanitizedComponent, useOverridableProps } from '../store/store';
4
2
  import { type ComponentId, type OverridableProps } from '../types';
5
3
  import { filterValidOverridableProps } from '../utils/filter-valid-overridable-props';
6
4
 
7
5
  export function useSanitizeOverridableProps(
8
6
  componentId: ComponentId | null,
7
+ instanceElementId?: string
9
8
  // instanceElementId is used to find the component inner elements,
10
9
  // and should be passed when editing component instance (not in component edit mode)
11
- instanceElementId?: string
12
10
  ): OverridableProps | undefined {
13
11
  const overridableProps = useOverridableProps( componentId );
14
12
  const isSanitized = useIsSanitizedComponent( componentId, 'overridableProps' );
@@ -21,16 +19,5 @@ export function useSanitizeOverridableProps(
21
19
  return overridableProps;
22
20
  }
23
21
 
24
- const filteredOverridableProps = filterValidOverridableProps( overridableProps, instanceElementId );
25
-
26
- const originalPropsArray = Object.entries( overridableProps.props ?? {} );
27
- const propsToDelete = originalPropsArray.filter( ( [ key ] ) => ! filteredOverridableProps.props[ key ] );
28
-
29
- propsToDelete.forEach( ( [ key ] ) => {
30
- deleteOverridableProp( { componentId, propKey: key, source: 'system' } );
31
- } );
32
-
33
- updateComponentSanitizedAttribute( componentId, 'overridableProps' );
34
-
35
- return filteredOverridableProps;
22
+ return filterValidOverridableProps( overridableProps, instanceElementId );
36
23
  }