@elementor/editor-components 3.35.0-388 → 3.35.0-390
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 +407 -173
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +381 -143
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -22
- package/src/component-instance-transformer.ts +2 -2
- package/src/component-override-transformer.ts +2 -2
- package/src/components/component-properties-panel/component-properties-panel-content.tsx +4 -4
- package/src/components/control-label.tsx +15 -0
- package/src/components/instance-editing-panel/instance-editing-panel.tsx +27 -20
- package/src/components/instance-editing-panel/override-prop-control.tsx +207 -0
- package/src/components/instance-editing-panel/override-props-group.tsx +13 -7
- package/src/components/overridable-props/overridable-prop-control.tsx +23 -5
- package/src/components/overridable-props/overridable-prop-indicator.tsx +10 -6
- package/src/create-component-type.ts +4 -3
- package/src/hooks/regenerate-override-keys.ts +6 -4
- package/src/hooks/use-controls-by-widget-type.ts +40 -0
- package/src/prop-types/component-instance-override-prop-type.ts +0 -1
- package/src/prop-types/component-instance-overrides-prop-type.ts +5 -1
- package/src/prop-types/component-instance-prop-type.ts +2 -1
- package/src/store/actions/set-overridable-prop.ts +4 -1
- package/src/store/actions/update-overridable-prop-params.ts +58 -0
- package/src/store/actions/update-overridable-prop.ts +30 -38
- package/src/store/store.ts +8 -0
- package/src/sync/create-components-before-save.ts +9 -5
- package/src/types.ts +3 -20
- package/src/utils/get-component-ids.ts +11 -6
- package/src/utils/get-prop-type-for-component-override.ts +23 -0
- package/src/store/actions/update-overridable-prop-origin-value.ts +0 -37
package/dist/index.js
CHANGED
|
@@ -38,12 +38,12 @@ module.exports = __toCommonJS(index_exports);
|
|
|
38
38
|
var import_editor = require("@elementor/editor");
|
|
39
39
|
var import_editor_canvas8 = require("@elementor/editor-canvas");
|
|
40
40
|
var import_editor_documents12 = require("@elementor/editor-documents");
|
|
41
|
-
var
|
|
41
|
+
var import_editor_editing_panel8 = require("@elementor/editor-editing-panel");
|
|
42
42
|
var import_editor_elements_panel = require("@elementor/editor-elements-panel");
|
|
43
43
|
var import_editor_panels4 = require("@elementor/editor-panels");
|
|
44
44
|
var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
|
|
45
45
|
var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
|
|
46
|
-
var
|
|
46
|
+
var import_store63 = require("@elementor/store");
|
|
47
47
|
var import_i18n24 = require("@wordpress/i18n");
|
|
48
48
|
|
|
49
49
|
// src/component-instance-transformer.ts
|
|
@@ -195,6 +195,9 @@ var getCreatedThisSession = (state) => state[SLICE_NAME].createdThisSession;
|
|
|
195
195
|
var getPath = (state) => state[SLICE_NAME].path;
|
|
196
196
|
var getCurrentComponentId = (state) => state[SLICE_NAME].currentComponentId;
|
|
197
197
|
var selectComponent = (state, componentId) => state[SLICE_NAME].data.find((component) => component.id === componentId);
|
|
198
|
+
var useComponent = (componentId) => {
|
|
199
|
+
return (0, import_store2.__useSelector)((state) => componentId ? selectComponent(state, componentId) : null);
|
|
200
|
+
};
|
|
198
201
|
var selectComponents = (0, import_store2.__createSelector)(
|
|
199
202
|
selectData,
|
|
200
203
|
selectUnpublishedData,
|
|
@@ -235,6 +238,11 @@ var selectOverridableProps = (0, import_store2.__createSelector)(
|
|
|
235
238
|
return component.overridableProps ?? DEFAULT_OVERRIDABLE_PROPS;
|
|
236
239
|
}
|
|
237
240
|
);
|
|
241
|
+
var useOverridableProps = (componentId) => {
|
|
242
|
+
return (0, import_store2.__useSelector)(
|
|
243
|
+
(state) => componentId ? selectOverridableProps(state, componentId) : null
|
|
244
|
+
);
|
|
245
|
+
};
|
|
238
246
|
var selectIsOverridablePropsLoaded = (0, import_store2.__createSelector)(
|
|
239
247
|
selectComponent,
|
|
240
248
|
(component) => {
|
|
@@ -692,11 +700,11 @@ function reorderOverridableGroups({ componentId, newOrder }) {
|
|
|
692
700
|
);
|
|
693
701
|
}
|
|
694
702
|
|
|
695
|
-
// src/store/actions/update-overridable-prop.ts
|
|
703
|
+
// src/store/actions/update-overridable-prop-params.ts
|
|
696
704
|
var import_store17 = require("@elementor/store");
|
|
697
|
-
function
|
|
705
|
+
function updateOverridablePropParams({
|
|
698
706
|
componentId,
|
|
699
|
-
|
|
707
|
+
overrideKey,
|
|
700
708
|
label,
|
|
701
709
|
groupId
|
|
702
710
|
}) {
|
|
@@ -704,7 +712,7 @@ function updateOverridableProp({
|
|
|
704
712
|
if (!overridableProps) {
|
|
705
713
|
return;
|
|
706
714
|
}
|
|
707
|
-
const prop = overridableProps.props[
|
|
715
|
+
const prop = overridableProps.props[overrideKey];
|
|
708
716
|
if (!prop) {
|
|
709
717
|
return;
|
|
710
718
|
}
|
|
@@ -715,7 +723,7 @@ function updateOverridableProp({
|
|
|
715
723
|
label,
|
|
716
724
|
groupId: newGroupId
|
|
717
725
|
};
|
|
718
|
-
const updatedGroups = movePropBetweenGroups(overridableProps.groups,
|
|
726
|
+
const updatedGroups = movePropBetweenGroups(overridableProps.groups, overrideKey, oldGroupId, newGroupId);
|
|
719
727
|
(0, import_store17.__dispatch)(
|
|
720
728
|
slice.actions.setOverridableProps({
|
|
721
729
|
componentId,
|
|
@@ -723,7 +731,7 @@ function updateOverridableProp({
|
|
|
723
731
|
...overridableProps,
|
|
724
732
|
props: {
|
|
725
733
|
...overridableProps.props,
|
|
726
|
-
[
|
|
734
|
+
[overrideKey]: updatedProp
|
|
727
735
|
},
|
|
728
736
|
groups: updatedGroups
|
|
729
737
|
}
|
|
@@ -734,7 +742,7 @@ function updateOverridableProp({
|
|
|
734
742
|
|
|
735
743
|
// src/components/component-panel-header/use-overridable-props.ts
|
|
736
744
|
var import_store19 = require("@elementor/store");
|
|
737
|
-
function
|
|
745
|
+
function useOverridableProps2(componentId) {
|
|
738
746
|
return (0, import_store19.__useSelector)((state) => {
|
|
739
747
|
if (!componentId) {
|
|
740
748
|
return void 0;
|
|
@@ -1253,7 +1261,7 @@ function validateGroupLabel(label, existingGroups) {
|
|
|
1253
1261
|
function useCurrentEditableItem() {
|
|
1254
1262
|
const [editingGroupId, setEditingGroupId] = (0, import_react4.useState)(null);
|
|
1255
1263
|
const currentComponentId = useCurrentComponentId();
|
|
1256
|
-
const overridableProps =
|
|
1264
|
+
const overridableProps = useOverridableProps2(currentComponentId);
|
|
1257
1265
|
const allGroupsRecord = overridableProps?.groups?.items ?? {};
|
|
1258
1266
|
const currentGroup = editingGroupId ? allGroupsRecord[editingGroupId] : null;
|
|
1259
1267
|
const validateLabel = (newLabel) => {
|
|
@@ -1316,7 +1324,7 @@ function generateUniqueLabel(groups) {
|
|
|
1316
1324
|
// src/components/component-properties-panel/component-properties-panel-content.tsx
|
|
1317
1325
|
function ComponentPropertiesPanelContent({ onClose }) {
|
|
1318
1326
|
const currentComponentId = useCurrentComponentId();
|
|
1319
|
-
const overridableProps =
|
|
1327
|
+
const overridableProps = useOverridableProps2(currentComponentId);
|
|
1320
1328
|
const [isAddingGroup, setIsAddingGroup] = (0, import_react5.useState)(false);
|
|
1321
1329
|
const introductionRef = (0, import_react5.useRef)(null);
|
|
1322
1330
|
const groupLabelEditable = useCurrentEditableItem();
|
|
@@ -1359,10 +1367,10 @@ function ComponentPropertiesPanelContent({ onClose }) {
|
|
|
1359
1367
|
deleteOverridableProp({ componentId: currentComponentId, propKey });
|
|
1360
1368
|
(0, import_editor_documents4.setDocumentModifiedStatus)(true);
|
|
1361
1369
|
};
|
|
1362
|
-
const handlePropertyUpdate = (
|
|
1363
|
-
|
|
1370
|
+
const handlePropertyUpdate = (overrideKey, data) => {
|
|
1371
|
+
updateOverridablePropParams({
|
|
1364
1372
|
componentId: currentComponentId,
|
|
1365
|
-
|
|
1373
|
+
overrideKey,
|
|
1366
1374
|
label: data.label,
|
|
1367
1375
|
groupId: data.group
|
|
1368
1376
|
});
|
|
@@ -1500,7 +1508,7 @@ var slideUp = import_ui9.keyframes`
|
|
|
1500
1508
|
var MESSAGE_KEY = "components-properties-introduction";
|
|
1501
1509
|
var ComponentPanelHeader = () => {
|
|
1502
1510
|
const currentComponentId = useCurrentComponentId();
|
|
1503
|
-
const overridableProps =
|
|
1511
|
+
const overridableProps = useOverridableProps2(currentComponentId);
|
|
1504
1512
|
const onBack = useNavigateBack();
|
|
1505
1513
|
const componentName = getComponentName();
|
|
1506
1514
|
const [isMessageSuppressed, suppressMessage] = (0, import_editor_current_user.useSuppressedMessage)(MESSAGE_KEY);
|
|
@@ -1838,6 +1846,9 @@ var getComponentIds = async (elements) => {
|
|
|
1838
1846
|
const isComponent = isComponentInstance({ widgetType, elType });
|
|
1839
1847
|
if (isComponent) {
|
|
1840
1848
|
const componentId = settings?.component_instance?.value?.component_id.value;
|
|
1849
|
+
if (!componentId) {
|
|
1850
|
+
return;
|
|
1851
|
+
}
|
|
1841
1852
|
const document = await getComponentDocumentData(componentId);
|
|
1842
1853
|
childElements = document?.elements;
|
|
1843
1854
|
if (Boolean(componentId)) {
|
|
@@ -1845,12 +1856,13 @@ var getComponentIds = async (elements) => {
|
|
|
1845
1856
|
}
|
|
1846
1857
|
}
|
|
1847
1858
|
if (!!childElements?.length) {
|
|
1848
|
-
|
|
1859
|
+
const newIds = await getComponentIds(childElements);
|
|
1860
|
+
ids.push(...Array.from(new Set(newIds)));
|
|
1849
1861
|
}
|
|
1850
1862
|
return ids;
|
|
1851
1863
|
});
|
|
1852
1864
|
const result = (await Promise.all(components)).flat();
|
|
1853
|
-
return Array.from(new Set(result));
|
|
1865
|
+
return Array.from(new Set(result)).filter((value) => value !== void 0);
|
|
1854
1866
|
};
|
|
1855
1867
|
|
|
1856
1868
|
// src/store/actions/load-components-overridable-props.ts
|
|
@@ -2807,22 +2819,26 @@ var EditModeDialog = ({ lockedBy }) => {
|
|
|
2807
2819
|
};
|
|
2808
2820
|
|
|
2809
2821
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
2810
|
-
var
|
|
2811
|
-
var
|
|
2812
|
-
var
|
|
2822
|
+
var React25 = __toESM(require("react"));
|
|
2823
|
+
var import_editor_controls4 = require("@elementor/editor-controls");
|
|
2824
|
+
var import_editor_editing_panel5 = require("@elementor/editor-editing-panel");
|
|
2825
|
+
var import_editor_elements11 = require("@elementor/editor-elements");
|
|
2813
2826
|
var import_editor_panels3 = require("@elementor/editor-panels");
|
|
2814
2827
|
var import_icons14 = require("@elementor/icons");
|
|
2815
|
-
var
|
|
2816
|
-
var import_ui19 = require("@elementor/ui");
|
|
2828
|
+
var import_ui21 = require("@elementor/ui");
|
|
2817
2829
|
var import_i18n21 = require("@wordpress/i18n");
|
|
2818
2830
|
|
|
2831
|
+
// src/hooks/use-component-instance-settings.ts
|
|
2832
|
+
var import_editor_editing_panel2 = require("@elementor/editor-editing-panel");
|
|
2833
|
+
var import_editor_elements8 = require("@elementor/editor-elements");
|
|
2834
|
+
|
|
2819
2835
|
// src/prop-types/component-instance-prop-type.ts
|
|
2820
|
-
var
|
|
2821
|
-
var
|
|
2836
|
+
var import_editor_props4 = require("@elementor/editor-props");
|
|
2837
|
+
var import_schema5 = require("@elementor/schema");
|
|
2822
2838
|
|
|
2823
2839
|
// src/prop-types/component-instance-overrides-prop-type.ts
|
|
2824
|
-
var
|
|
2825
|
-
var
|
|
2840
|
+
var import_editor_props3 = require("@elementor/editor-props");
|
|
2841
|
+
var import_schema4 = require("@elementor/schema");
|
|
2826
2842
|
|
|
2827
2843
|
// src/prop-types/component-instance-override-prop-type.ts
|
|
2828
2844
|
var import_editor_props = require("@elementor/editor-props");
|
|
@@ -2839,21 +2855,42 @@ var componentInstanceOverridePropTypeUtil = (0, import_editor_props.createPropUt
|
|
|
2839
2855
|
})
|
|
2840
2856
|
);
|
|
2841
2857
|
|
|
2858
|
+
// src/prop-types/component-overridable-prop-type.ts
|
|
2859
|
+
var import_editor_props2 = require("@elementor/editor-props");
|
|
2860
|
+
var import_schema3 = require("@elementor/schema");
|
|
2861
|
+
var componentOverridablePropTypeUtil = (0, import_editor_props2.createPropUtils)(
|
|
2862
|
+
"overridable",
|
|
2863
|
+
import_schema3.z.object({
|
|
2864
|
+
override_key: import_schema3.z.string(),
|
|
2865
|
+
origin_value: import_schema3.z.object({
|
|
2866
|
+
$$type: import_schema3.z.string(),
|
|
2867
|
+
value: import_schema3.z.unknown()
|
|
2868
|
+
}).nullable()
|
|
2869
|
+
})
|
|
2870
|
+
);
|
|
2871
|
+
|
|
2842
2872
|
// src/prop-types/component-instance-overrides-prop-type.ts
|
|
2843
|
-
var componentInstanceOverridesPropTypeUtil = (0,
|
|
2873
|
+
var componentInstanceOverridesPropTypeUtil = (0, import_editor_props3.createPropUtils)(
|
|
2844
2874
|
"overrides",
|
|
2845
|
-
|
|
2875
|
+
import_schema4.z.array(import_schema4.z.union([componentInstanceOverridePropTypeUtil.schema, componentOverridablePropTypeUtil.schema])).optional().default([])
|
|
2846
2876
|
);
|
|
2847
2877
|
|
|
2848
2878
|
// src/prop-types/component-instance-prop-type.ts
|
|
2849
|
-
var componentInstancePropTypeUtil = (0,
|
|
2879
|
+
var componentInstancePropTypeUtil = (0, import_editor_props4.createPropUtils)(
|
|
2850
2880
|
"component-instance",
|
|
2851
|
-
|
|
2852
|
-
component_id:
|
|
2853
|
-
overrides:
|
|
2881
|
+
import_schema5.z.object({
|
|
2882
|
+
component_id: import_editor_props4.numberPropTypeUtil.schema,
|
|
2883
|
+
overrides: import_schema5.z.optional(componentInstanceOverridesPropTypeUtil.schema)
|
|
2854
2884
|
})
|
|
2855
2885
|
);
|
|
2856
2886
|
|
|
2887
|
+
// src/hooks/use-component-instance-settings.ts
|
|
2888
|
+
function useComponentInstanceSettings() {
|
|
2889
|
+
const { element } = (0, import_editor_editing_panel2.useElement)();
|
|
2890
|
+
const settings = (0, import_editor_elements8.useElementSetting)(element.id, "component_instance");
|
|
2891
|
+
return componentInstancePropTypeUtil.extract(settings);
|
|
2892
|
+
}
|
|
2893
|
+
|
|
2857
2894
|
// src/components/instance-editing-panel/empty-state.tsx
|
|
2858
2895
|
var React21 = __toESM(require("react"));
|
|
2859
2896
|
var import_icons13 = require("@elementor/icons");
|
|
@@ -2881,13 +2918,228 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
2881
2918
|
};
|
|
2882
2919
|
|
|
2883
2920
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
2884
|
-
var
|
|
2921
|
+
var React24 = __toESM(require("react"));
|
|
2885
2922
|
var import_react13 = require("react");
|
|
2886
|
-
var
|
|
2923
|
+
var import_editor_editing_panel4 = require("@elementor/editor-editing-panel");
|
|
2887
2924
|
var import_editor_ui10 = require("@elementor/editor-ui");
|
|
2925
|
+
var import_ui20 = require("@elementor/ui");
|
|
2926
|
+
|
|
2927
|
+
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
2928
|
+
var React23 = __toESM(require("react"));
|
|
2929
|
+
var import_editor_controls3 = require("@elementor/editor-controls");
|
|
2930
|
+
var import_editor_editing_panel3 = require("@elementor/editor-editing-panel");
|
|
2931
|
+
var import_ui19 = require("@elementor/ui");
|
|
2932
|
+
|
|
2933
|
+
// src/hooks/use-controls-by-widget-type.ts
|
|
2934
|
+
var import_editor_elements9 = require("@elementor/editor-elements");
|
|
2935
|
+
function useControlsByWidgetType(type) {
|
|
2936
|
+
const elementType = (0, import_editor_elements9.getElementType)(type);
|
|
2937
|
+
if (!elementType) {
|
|
2938
|
+
return {};
|
|
2939
|
+
}
|
|
2940
|
+
const controls = iterateControls(elementType.controls);
|
|
2941
|
+
return getControlsByBind(controls);
|
|
2942
|
+
}
|
|
2943
|
+
function iterateControls(controls) {
|
|
2944
|
+
return controls.map((control) => {
|
|
2945
|
+
if (control.type === "control" && "bind" in control.value) {
|
|
2946
|
+
return control;
|
|
2947
|
+
}
|
|
2948
|
+
if (control.type === "section") {
|
|
2949
|
+
return iterateControls(control.value.items);
|
|
2950
|
+
}
|
|
2951
|
+
return null;
|
|
2952
|
+
}).filter(Boolean).flat();
|
|
2953
|
+
}
|
|
2954
|
+
function getControlsByBind(controls) {
|
|
2955
|
+
return controls.reduce(
|
|
2956
|
+
(controlsByBind, control) => ({
|
|
2957
|
+
...controlsByBind,
|
|
2958
|
+
[control.value.bind]: control
|
|
2959
|
+
}),
|
|
2960
|
+
{}
|
|
2961
|
+
);
|
|
2962
|
+
}
|
|
2963
|
+
|
|
2964
|
+
// src/store/actions/update-overridable-prop.ts
|
|
2965
|
+
var import_store42 = require("@elementor/store");
|
|
2966
|
+
function updateOverridableProp(componentId, propValue, originPropFields) {
|
|
2967
|
+
const overridableProps = selectOverridableProps((0, import_store42.__getState)(), componentId);
|
|
2968
|
+
if (!overridableProps) {
|
|
2969
|
+
return;
|
|
2970
|
+
}
|
|
2971
|
+
const existingOverridableProp = overridableProps.props[propValue.override_key];
|
|
2972
|
+
if (!existingOverridableProp) {
|
|
2973
|
+
return;
|
|
2974
|
+
}
|
|
2975
|
+
const newOverridableProp = originPropFields ? {
|
|
2976
|
+
originValue: propValue.origin_value,
|
|
2977
|
+
originPropFields
|
|
2978
|
+
} : {
|
|
2979
|
+
originValue: propValue.origin_value
|
|
2980
|
+
};
|
|
2981
|
+
const newOverridableProps = {
|
|
2982
|
+
...overridableProps,
|
|
2983
|
+
props: {
|
|
2984
|
+
...overridableProps.props,
|
|
2985
|
+
[existingOverridableProp.overrideKey]: {
|
|
2986
|
+
...existingOverridableProp,
|
|
2987
|
+
...newOverridableProp
|
|
2988
|
+
}
|
|
2989
|
+
}
|
|
2990
|
+
};
|
|
2991
|
+
(0, import_store42.__dispatch)(
|
|
2992
|
+
slice.actions.setOverridableProps({
|
|
2993
|
+
componentId,
|
|
2994
|
+
overridableProps: newOverridableProps
|
|
2995
|
+
})
|
|
2996
|
+
);
|
|
2997
|
+
}
|
|
2998
|
+
|
|
2999
|
+
// src/utils/get-prop-type-for-component-override.ts
|
|
3000
|
+
var import_editor_elements10 = require("@elementor/editor-elements");
|
|
3001
|
+
var getPropTypeForComponentOverride = (overridableProp) => {
|
|
3002
|
+
if (overridableProp.originPropFields) {
|
|
3003
|
+
return getPropType(overridableProp.originPropFields);
|
|
3004
|
+
}
|
|
3005
|
+
const { elType, widgetType, propKey } = overridableProp;
|
|
3006
|
+
return getPropType({
|
|
3007
|
+
elType,
|
|
3008
|
+
widgetType,
|
|
3009
|
+
propKey
|
|
3010
|
+
});
|
|
3011
|
+
};
|
|
3012
|
+
function getPropType({ widgetType, propKey }) {
|
|
3013
|
+
const widgetPropsSchema = (0, import_editor_elements10.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
|
|
3014
|
+
return widgetPropsSchema?.[propKey];
|
|
3015
|
+
}
|
|
3016
|
+
|
|
3017
|
+
// src/components/control-label.tsx
|
|
3018
|
+
var React22 = __toESM(require("react"));
|
|
3019
|
+
var import_editor_controls2 = require("@elementor/editor-controls");
|
|
2888
3020
|
var import_ui18 = require("@elementor/ui");
|
|
2889
|
-
|
|
2890
|
-
|
|
3021
|
+
var ControlLabel = ({ children, ...props }) => {
|
|
3022
|
+
return /* @__PURE__ */ React22.createElement(import_ui18.Stack, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React22.createElement(import_editor_controls2.ControlFormLabel, { ...props }, children), /* @__PURE__ */ React22.createElement(import_editor_controls2.ControlAdornments, null));
|
|
3023
|
+
};
|
|
3024
|
+
|
|
3025
|
+
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
3026
|
+
function OverridePropControl({ overridableProp, overrides }) {
|
|
3027
|
+
return /* @__PURE__ */ React23.createElement(import_editor_editing_panel3.SettingsField, { bind: "component_instance", propDisplayName: overridableProp.label }, /* @__PURE__ */ React23.createElement(OverrideControl, { overridableProp, overrides }));
|
|
3028
|
+
}
|
|
3029
|
+
function OverrideControl({ overridableProp, overrides }) {
|
|
3030
|
+
const componentId = useCurrentComponentId();
|
|
3031
|
+
const { value: instanceValue, setValue: setInstanceValue } = (0, import_editor_controls3.useBoundProp)(componentInstancePropTypeUtil);
|
|
3032
|
+
const controls = useControlsByWidgetType(
|
|
3033
|
+
overridableProp?.originPropFields?.widgetType ?? overridableProp.widgetType
|
|
3034
|
+
);
|
|
3035
|
+
const propType = getPropTypeForComponentOverride(overridableProp);
|
|
3036
|
+
if (!propType) {
|
|
3037
|
+
return null;
|
|
3038
|
+
}
|
|
3039
|
+
const propTypeSchema = (0, import_editor_editing_panel3.createTopLevelObjectType)({
|
|
3040
|
+
schema: {
|
|
3041
|
+
[overridableProp.overrideKey]: propType
|
|
3042
|
+
}
|
|
3043
|
+
});
|
|
3044
|
+
const componentInstanceId = instanceValue.component_id?.value;
|
|
3045
|
+
if (!componentInstanceId) {
|
|
3046
|
+
throw new Error("Component ID is required");
|
|
3047
|
+
}
|
|
3048
|
+
const matchingOverride = getMatchingOverride(overrides, overridableProp.overrideKey);
|
|
3049
|
+
const propValue = matchingOverride ? getPropValue(matchingOverride) : overridableProp.originValue;
|
|
3050
|
+
const value = {
|
|
3051
|
+
[overridableProp.overrideKey]: propValue
|
|
3052
|
+
};
|
|
3053
|
+
const setValue = (newValue) => {
|
|
3054
|
+
const newPropValue = newValue[overridableProp.overrideKey];
|
|
3055
|
+
const newOverrideValue = createOverrideValue(overridableProp.overrideKey, newPropValue, componentInstanceId);
|
|
3056
|
+
let newOverrides = overrides?.map((override) => override === matchingOverride ? newOverrideValue : override) ?? [];
|
|
3057
|
+
if (!matchingOverride) {
|
|
3058
|
+
newOverrides = [...newOverrides, newOverrideValue];
|
|
3059
|
+
}
|
|
3060
|
+
setInstanceValue({
|
|
3061
|
+
...instanceValue,
|
|
3062
|
+
overrides: componentInstanceOverridesPropTypeUtil.create(newOverrides)
|
|
3063
|
+
});
|
|
3064
|
+
const overridableValue = componentOverridablePropTypeUtil.extract(newOverrideValue);
|
|
3065
|
+
if (overridableValue && componentId) {
|
|
3066
|
+
if (overridableProp.originPropFields) {
|
|
3067
|
+
updateOverridableProp(componentId, overridableValue, overridableProp.originPropFields);
|
|
3068
|
+
return;
|
|
3069
|
+
}
|
|
3070
|
+
const { elType, widgetType, propKey } = overridableProp;
|
|
3071
|
+
updateOverridableProp(componentId, overridableValue, { elType, widgetType, propKey });
|
|
3072
|
+
}
|
|
3073
|
+
};
|
|
3074
|
+
return /* @__PURE__ */ React23.createElement(
|
|
3075
|
+
import_editor_controls3.PropProvider,
|
|
3076
|
+
{
|
|
3077
|
+
propType: propTypeSchema,
|
|
3078
|
+
value,
|
|
3079
|
+
setValue,
|
|
3080
|
+
isDisabled: () => {
|
|
3081
|
+
return false;
|
|
3082
|
+
}
|
|
3083
|
+
},
|
|
3084
|
+
/* @__PURE__ */ React23.createElement(import_editor_controls3.PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ React23.createElement(import_ui19.Stack, { direction: "column", gap: 1, mb: 1.5 }, /* @__PURE__ */ React23.createElement(ControlLabel, null, overridableProp.label), getControl(controls, overridableProp?.originPropFields ?? overridableProp)))
|
|
3085
|
+
);
|
|
3086
|
+
}
|
|
3087
|
+
function getPropValue(value) {
|
|
3088
|
+
const overridableValue = componentOverridablePropTypeUtil.extract(value);
|
|
3089
|
+
if (overridableValue) {
|
|
3090
|
+
return value;
|
|
3091
|
+
}
|
|
3092
|
+
if (componentInstanceOverridePropTypeUtil.isValid(value)) {
|
|
3093
|
+
return value.value.override_value;
|
|
3094
|
+
}
|
|
3095
|
+
return null;
|
|
3096
|
+
}
|
|
3097
|
+
function getMatchingOverride(overrides, overrideKey) {
|
|
3098
|
+
return overrides?.find((override) => {
|
|
3099
|
+
const overridableValue = componentOverridablePropTypeUtil.extract(override);
|
|
3100
|
+
let comparedOverrideKey = null;
|
|
3101
|
+
if (overridableValue) {
|
|
3102
|
+
comparedOverrideKey = overridableValue.origin_value?.value?.override_key;
|
|
3103
|
+
} else {
|
|
3104
|
+
comparedOverrideKey = override.value.override_key;
|
|
3105
|
+
}
|
|
3106
|
+
return comparedOverrideKey === overrideKey;
|
|
3107
|
+
}) ?? null;
|
|
3108
|
+
}
|
|
3109
|
+
function createOverrideValue(overrideKey, overrideValue, componentId) {
|
|
3110
|
+
const overridableValue = componentOverridablePropTypeUtil.extract(overrideValue);
|
|
3111
|
+
if (overridableValue) {
|
|
3112
|
+
const innerOverride = componentInstanceOverridePropTypeUtil.create({
|
|
3113
|
+
override_key: overrideKey,
|
|
3114
|
+
override_value: overridableValue.origin_value,
|
|
3115
|
+
schema_source: {
|
|
3116
|
+
type: "component",
|
|
3117
|
+
id: componentId
|
|
3118
|
+
}
|
|
3119
|
+
});
|
|
3120
|
+
return componentOverridablePropTypeUtil.create({
|
|
3121
|
+
override_key: overridableValue.override_key,
|
|
3122
|
+
origin_value: innerOverride
|
|
3123
|
+
});
|
|
3124
|
+
}
|
|
3125
|
+
return componentInstanceOverridePropTypeUtil.create({
|
|
3126
|
+
override_key: overrideKey,
|
|
3127
|
+
override_value: overrideValue,
|
|
3128
|
+
schema_source: {
|
|
3129
|
+
type: "component",
|
|
3130
|
+
id: componentId
|
|
3131
|
+
}
|
|
3132
|
+
});
|
|
3133
|
+
}
|
|
3134
|
+
function getControl(controls, originPropFields) {
|
|
3135
|
+
const ControlComponent = import_editor_editing_panel3.controlsRegistry.get(controls[originPropFields.propKey].value.type);
|
|
3136
|
+
const controlProps = controls[originPropFields.propKey].value.props;
|
|
3137
|
+
return /* @__PURE__ */ React23.createElement(ControlComponent, { ...controlProps });
|
|
3138
|
+
}
|
|
3139
|
+
|
|
3140
|
+
// src/components/instance-editing-panel/override-props-group.tsx
|
|
3141
|
+
function OverridePropsGroup({ group, props, overrides }) {
|
|
3142
|
+
const [isOpen, setIsOpen] = (0, import_editor_editing_panel4.useStateByElement)(group.id, true);
|
|
2891
3143
|
const handleClick = () => {
|
|
2892
3144
|
setIsOpen(!isOpen);
|
|
2893
3145
|
};
|
|
@@ -2895,8 +3147,8 @@ function OverridePropsGroup({ group, props }) {
|
|
|
2895
3147
|
const labelId = `label-${id2}`;
|
|
2896
3148
|
const contentId = `content-${id2}`;
|
|
2897
3149
|
const title = group.label;
|
|
2898
|
-
return /* @__PURE__ */
|
|
2899
|
-
|
|
3150
|
+
return /* @__PURE__ */ React24.createElement(import_ui20.Box, { "aria-label": `${title} section` }, /* @__PURE__ */ React24.createElement(
|
|
3151
|
+
import_ui20.ListItemButton,
|
|
2900
3152
|
{
|
|
2901
3153
|
id: labelId,
|
|
2902
3154
|
"aria-controls": contentId,
|
|
@@ -2905,29 +3157,33 @@ function OverridePropsGroup({ group, props }) {
|
|
|
2905
3157
|
p: 0,
|
|
2906
3158
|
sx: { "&:hover": { backgroundColor: "transparent" } }
|
|
2907
3159
|
},
|
|
2908
|
-
/* @__PURE__ */
|
|
2909
|
-
|
|
3160
|
+
/* @__PURE__ */ React24.createElement(import_ui20.Stack, { direction: "row", alignItems: "center", justifyItems: "start", flexGrow: 1, gap: 0.5 }, /* @__PURE__ */ React24.createElement(
|
|
3161
|
+
import_ui20.ListItemText,
|
|
2910
3162
|
{
|
|
2911
3163
|
secondary: title,
|
|
2912
3164
|
secondaryTypographyProps: { color: "text.primary", variant: "caption", fontWeight: "bold" },
|
|
2913
3165
|
sx: { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 }
|
|
2914
3166
|
}
|
|
2915
3167
|
)),
|
|
2916
|
-
/* @__PURE__ */
|
|
2917
|
-
), /* @__PURE__ */
|
|
2918
|
-
|
|
2919
|
-
|
|
3168
|
+
/* @__PURE__ */ React24.createElement(import_editor_ui10.CollapseIcon, { open: isOpen, color: "secondary", fontSize: "tiny" })
|
|
3169
|
+
), /* @__PURE__ */ React24.createElement(import_ui20.Collapse, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto" }, /* @__PURE__ */ React24.createElement(import_ui20.Stack, { direction: "column", gap: 1, p: 2 }, group.props.map((overrideKey) => /* @__PURE__ */ React24.createElement(
|
|
3170
|
+
OverridePropControl,
|
|
3171
|
+
{
|
|
3172
|
+
key: overrideKey,
|
|
3173
|
+
overridableProp: props[overrideKey],
|
|
3174
|
+
overrides
|
|
3175
|
+
}
|
|
2920
3176
|
)))));
|
|
2921
3177
|
}
|
|
2922
3178
|
|
|
2923
3179
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
2924
3180
|
function InstanceEditingPanel() {
|
|
2925
|
-
const
|
|
2926
|
-
const
|
|
2927
|
-
const
|
|
2928
|
-
const component =
|
|
2929
|
-
const overridableProps =
|
|
2930
|
-
const componentInstanceId = (0,
|
|
3181
|
+
const settings = useComponentInstanceSettings();
|
|
3182
|
+
const componentId = settings?.component_id?.value;
|
|
3183
|
+
const overrides = settings?.overrides?.value;
|
|
3184
|
+
const component = useComponent(componentId ?? null);
|
|
3185
|
+
const overridableProps = useOverridableProps(componentId ?? null);
|
|
3186
|
+
const componentInstanceId = (0, import_editor_elements11.useSelectedElement)()?.element?.id ?? null;
|
|
2931
3187
|
if (!componentId || !overridableProps || !component) {
|
|
2932
3188
|
return null;
|
|
2933
3189
|
}
|
|
@@ -2937,114 +3193,84 @@ function InstanceEditingPanel() {
|
|
|
2937
3193
|
(groupId) => overridableProps.groups.items[groupId] ? overridableProps.groups.items[groupId] : null
|
|
2938
3194
|
).filter(Boolean);
|
|
2939
3195
|
const isEmpty = groups.length === 0 || Object.keys(overridableProps.props).length === 0;
|
|
2940
|
-
return /* @__PURE__ */
|
|
3196
|
+
return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(import_editor_panels3.PanelHeader, { sx: { justifyContent: "start", px: 2 } }, /* @__PURE__ */ React25.createElement(import_ui21.Stack, { direction: "row", alignContent: "space-between", flexGrow: 1 }, /* @__PURE__ */ React25.createElement(import_ui21.Stack, { direction: "row", alignItems: "center", justifyContent: "start", gap: 1, flexGrow: 1 }, /* @__PURE__ */ React25.createElement(import_icons14.ComponentsIcon, { fontSize: "small", sx: { color: "text.tertiary" } }), /* @__PURE__ */ React25.createElement(import_editor_panels3.PanelHeaderTitle, null, component.name)), /* @__PURE__ */ React25.createElement(import_ui21.Tooltip, { title: panelTitle }, /* @__PURE__ */ React25.createElement(import_ui21.IconButton, { size: "tiny", onClick: handleEditComponent, "aria-label": panelTitle }, /* @__PURE__ */ React25.createElement(import_icons14.PencilIcon, { fontSize: "tiny" }))))), /* @__PURE__ */ React25.createElement(import_editor_panels3.PanelBody, null, /* @__PURE__ */ React25.createElement(import_editor_controls4.ControlAdornmentsProvider, { items: (0, import_editor_editing_panel5.getFieldIndicators)("settings") }, isEmpty ? /* @__PURE__ */ React25.createElement(EmptyState2, { onEditComponent: handleEditComponent }) : /* @__PURE__ */ React25.createElement(import_ui21.Stack, { direction: "column", alignItems: "stretch" }, groups.map((group) => /* @__PURE__ */ React25.createElement(
|
|
3197
|
+
OverridePropsGroup,
|
|
3198
|
+
{
|
|
3199
|
+
key: group.id,
|
|
3200
|
+
group,
|
|
3201
|
+
props: overridableProps.props,
|
|
3202
|
+
overrides
|
|
3203
|
+
}
|
|
3204
|
+
))))));
|
|
2941
3205
|
}
|
|
2942
3206
|
|
|
2943
3207
|
// src/components/overridable-props/overridable-prop-control.tsx
|
|
2944
|
-
var
|
|
2945
|
-
var
|
|
2946
|
-
var
|
|
2947
|
-
|
|
2948
|
-
// src/prop-types/component-overridable-prop-type.ts
|
|
2949
|
-
var import_editor_props4 = require("@elementor/editor-props");
|
|
2950
|
-
var import_schema5 = require("@elementor/schema");
|
|
2951
|
-
var componentOverridablePropTypeUtil = (0, import_editor_props4.createPropUtils)(
|
|
2952
|
-
"overridable",
|
|
2953
|
-
import_schema5.z.object({
|
|
2954
|
-
override_key: import_schema5.z.string(),
|
|
2955
|
-
origin_value: import_schema5.z.object({
|
|
2956
|
-
$$type: import_schema5.z.string(),
|
|
2957
|
-
value: import_schema5.z.unknown()
|
|
2958
|
-
}).nullable()
|
|
2959
|
-
})
|
|
2960
|
-
);
|
|
3208
|
+
var React27 = __toESM(require("react"));
|
|
3209
|
+
var import_editor_controls5 = require("@elementor/editor-controls");
|
|
3210
|
+
var import_editor_editing_panel6 = require("@elementor/editor-editing-panel");
|
|
2961
3211
|
|
|
2962
3212
|
// src/provider/overridable-prop-context.tsx
|
|
2963
|
-
var
|
|
3213
|
+
var React26 = __toESM(require("react"));
|
|
2964
3214
|
var import_react14 = require("react");
|
|
2965
3215
|
var OverridablePropContext = (0, import_react14.createContext)(null);
|
|
2966
3216
|
function OverridablePropProvider({ children, ...props }) {
|
|
2967
|
-
return /* @__PURE__ */
|
|
3217
|
+
return /* @__PURE__ */ React26.createElement(OverridablePropContext.Provider, { value: props }, children);
|
|
2968
3218
|
}
|
|
2969
3219
|
var useOverridablePropValue = () => (0, import_react14.useContext)(OverridablePropContext)?.value;
|
|
2970
3220
|
|
|
2971
|
-
// src/store/actions/update-overridable-prop-origin-value.ts
|
|
2972
|
-
var import_store44 = require("@elementor/store");
|
|
2973
|
-
function updateOverridablePropOriginValue(componentId, propValue) {
|
|
2974
|
-
const overridableProps = selectOverridableProps((0, import_store44.__getState)(), componentId);
|
|
2975
|
-
if (!overridableProps) {
|
|
2976
|
-
return;
|
|
2977
|
-
}
|
|
2978
|
-
const existingOverridableProp = overridableProps.props[propValue.override_key];
|
|
2979
|
-
if (!existingOverridableProp) {
|
|
2980
|
-
return;
|
|
2981
|
-
}
|
|
2982
|
-
const newOverridableProps = {
|
|
2983
|
-
...overridableProps,
|
|
2984
|
-
props: {
|
|
2985
|
-
...overridableProps.props,
|
|
2986
|
-
[existingOverridableProp.overrideKey]: {
|
|
2987
|
-
...existingOverridableProp,
|
|
2988
|
-
originValue: propValue.origin_value
|
|
2989
|
-
}
|
|
2990
|
-
}
|
|
2991
|
-
};
|
|
2992
|
-
(0, import_store44.__dispatch)(
|
|
2993
|
-
slice.actions.setOverridableProps({
|
|
2994
|
-
componentId,
|
|
2995
|
-
overridableProps: newOverridableProps
|
|
2996
|
-
})
|
|
2997
|
-
);
|
|
2998
|
-
}
|
|
2999
|
-
|
|
3000
3221
|
// src/components/overridable-props/overridable-prop-control.tsx
|
|
3001
3222
|
function OverridablePropControl({
|
|
3002
3223
|
OriginalControl,
|
|
3003
3224
|
...props
|
|
3004
3225
|
}) {
|
|
3005
|
-
const { elementType } = (0,
|
|
3006
|
-
const { value, bind, setValue, placeholder, ...propContext } = (0,
|
|
3226
|
+
const { elementType } = (0, import_editor_editing_panel6.useElement)();
|
|
3227
|
+
const { value, bind, setValue, placeholder, ...propContext } = (0, import_editor_controls5.useBoundProp)(componentOverridablePropTypeUtil);
|
|
3007
3228
|
const componentId = useCurrentComponentId();
|
|
3229
|
+
const overridableProps = useOverridableProps(componentId);
|
|
3008
3230
|
if (!componentId) {
|
|
3009
3231
|
return null;
|
|
3010
3232
|
}
|
|
3011
3233
|
if (!value?.override_key) {
|
|
3012
3234
|
throw new Error("Override key is required");
|
|
3013
3235
|
}
|
|
3236
|
+
const isComponentInstance2 = elementType.key === "e-component";
|
|
3014
3237
|
const setOverridableValue = (newValue) => {
|
|
3015
|
-
const
|
|
3238
|
+
const propValue2 = {
|
|
3016
3239
|
...value,
|
|
3017
3240
|
origin_value: newValue[bind]
|
|
3018
3241
|
};
|
|
3019
|
-
setValue(
|
|
3020
|
-
|
|
3242
|
+
setValue(propValue2);
|
|
3243
|
+
updateOverridableProp(componentId, propValue2);
|
|
3021
3244
|
};
|
|
3022
|
-
const
|
|
3245
|
+
const defaultPropType = elementType.propsSchema[bind];
|
|
3246
|
+
const propType = (0, import_editor_editing_panel6.createTopLevelObjectType)({
|
|
3023
3247
|
schema: {
|
|
3024
|
-
[bind]:
|
|
3248
|
+
[bind]: isComponentInstance2 && overridableProps ? getPropTypeForComponentOverride(overridableProps.props[value.override_key]) ?? defaultPropType : defaultPropType
|
|
3025
3249
|
}
|
|
3026
3250
|
});
|
|
3251
|
+
const propValue = isComponentInstance2 ? (value.origin_value?.value).override_value : value.origin_value;
|
|
3027
3252
|
const objectPlaceholder = placeholder ? { [bind]: placeholder } : void 0;
|
|
3028
|
-
return /* @__PURE__ */
|
|
3029
|
-
|
|
3253
|
+
return /* @__PURE__ */ React27.createElement(OverridablePropProvider, { value }, /* @__PURE__ */ React27.createElement(
|
|
3254
|
+
import_editor_controls5.PropProvider,
|
|
3030
3255
|
{
|
|
3031
3256
|
...propContext,
|
|
3032
3257
|
propType,
|
|
3033
3258
|
setValue: setOverridableValue,
|
|
3034
|
-
value: {
|
|
3259
|
+
value: {
|
|
3260
|
+
[bind]: propValue
|
|
3261
|
+
},
|
|
3035
3262
|
placeholder: objectPlaceholder
|
|
3036
3263
|
},
|
|
3037
|
-
/* @__PURE__ */
|
|
3264
|
+
/* @__PURE__ */ React27.createElement(import_editor_controls5.PropKeyProvider, { bind }, /* @__PURE__ */ React27.createElement(import_editor_controls5.ControlReplacementsProvider, { replacements: [] }, /* @__PURE__ */ React27.createElement(OriginalControl, { ...props })))
|
|
3038
3265
|
));
|
|
3039
3266
|
}
|
|
3040
3267
|
|
|
3041
3268
|
// src/components/overridable-props/overridable-prop-indicator.tsx
|
|
3042
|
-
var
|
|
3043
|
-
var
|
|
3044
|
-
var
|
|
3045
|
-
var
|
|
3046
|
-
var
|
|
3047
|
-
var import_ui21 = require("@elementor/ui");
|
|
3269
|
+
var React29 = __toESM(require("react"));
|
|
3270
|
+
var import_editor_controls6 = require("@elementor/editor-controls");
|
|
3271
|
+
var import_editor_editing_panel7 = require("@elementor/editor-editing-panel");
|
|
3272
|
+
var import_editor_elements12 = require("@elementor/editor-elements");
|
|
3273
|
+
var import_ui23 = require("@elementor/ui");
|
|
3048
3274
|
var import_i18n23 = require("@wordpress/i18n");
|
|
3049
3275
|
|
|
3050
3276
|
// src/store/actions/set-overridable-prop.ts
|
|
@@ -3059,7 +3285,8 @@ function setOverridableProp({
|
|
|
3059
3285
|
propKey,
|
|
3060
3286
|
elType,
|
|
3061
3287
|
widgetType,
|
|
3062
|
-
originValue
|
|
3288
|
+
originValue,
|
|
3289
|
+
originPropFields
|
|
3063
3290
|
}) {
|
|
3064
3291
|
const overridableProps = selectOverridableProps((0, import_store47.__getState)(), componentId);
|
|
3065
3292
|
if (!overridableProps) {
|
|
@@ -3081,7 +3308,8 @@ function setOverridableProp({
|
|
|
3081
3308
|
widgetType,
|
|
3082
3309
|
elType,
|
|
3083
3310
|
originValue,
|
|
3084
|
-
groupId: currentGroupId
|
|
3311
|
+
groupId: currentGroupId,
|
|
3312
|
+
originPropFields
|
|
3085
3313
|
};
|
|
3086
3314
|
const stateAfterRemovingDuplicates = removePropsFromState(
|
|
3087
3315
|
{ ...overridableProps, groups: groupsAfterResolve },
|
|
@@ -3110,13 +3338,13 @@ function setOverridableProp({
|
|
|
3110
3338
|
}
|
|
3111
3339
|
|
|
3112
3340
|
// src/components/overridable-props/indicator.tsx
|
|
3113
|
-
var
|
|
3341
|
+
var React28 = __toESM(require("react"));
|
|
3114
3342
|
var import_react15 = require("react");
|
|
3115
3343
|
var import_icons15 = require("@elementor/icons");
|
|
3116
|
-
var
|
|
3344
|
+
var import_ui22 = require("@elementor/ui");
|
|
3117
3345
|
var import_i18n22 = require("@wordpress/i18n");
|
|
3118
3346
|
var SIZE2 = "tiny";
|
|
3119
|
-
var IconContainer = (0,
|
|
3347
|
+
var IconContainer = (0, import_ui22.styled)(import_ui22.Box)`
|
|
3120
3348
|
pointer-events: none;
|
|
3121
3349
|
opacity: 0;
|
|
3122
3350
|
transition: opacity 0.2s ease-in-out;
|
|
@@ -3133,7 +3361,7 @@ var IconContainer = (0, import_ui20.styled)(import_ui20.Box)`
|
|
|
3133
3361
|
stroke-width: 2px;
|
|
3134
3362
|
}
|
|
3135
3363
|
`;
|
|
3136
|
-
var Content = (0,
|
|
3364
|
+
var Content = (0, import_ui22.styled)(import_ui22.Box)`
|
|
3137
3365
|
position: relative;
|
|
3138
3366
|
display: flex;
|
|
3139
3367
|
align-items: center;
|
|
@@ -3170,13 +3398,13 @@ var Content = (0, import_ui20.styled)(import_ui20.Box)`
|
|
|
3170
3398
|
}
|
|
3171
3399
|
}
|
|
3172
3400
|
`;
|
|
3173
|
-
var Indicator = (0, import_react15.forwardRef)(({ isOpen, isOverridable, ...props }, ref) => /* @__PURE__ */
|
|
3401
|
+
var Indicator = (0, import_react15.forwardRef)(({ isOpen, isOverridable, ...props }, ref) => /* @__PURE__ */ React28.createElement(Content, { ref, ...props, className: isOpen || isOverridable ? "enlarged" : "" }, /* @__PURE__ */ React28.createElement(
|
|
3174
3402
|
IconContainer,
|
|
3175
3403
|
{
|
|
3176
3404
|
className: "icon",
|
|
3177
3405
|
"aria-label": isOverridable ? (0, import_i18n22.__)("Overridable property", "elementor") : (0, import_i18n22.__)("Make prop overridable", "elementor")
|
|
3178
3406
|
},
|
|
3179
|
-
isOverridable ? /* @__PURE__ */
|
|
3407
|
+
isOverridable ? /* @__PURE__ */ React28.createElement(import_icons15.CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React28.createElement(import_icons15.PlusIcon, { fontSize: SIZE2 })
|
|
3180
3408
|
)));
|
|
3181
3409
|
|
|
3182
3410
|
// src/components/overridable-props/utils/get-overridable-prop.ts
|
|
@@ -3195,33 +3423,35 @@ function getOverridableProp({
|
|
|
3195
3423
|
// src/components/overridable-props/overridable-prop-indicator.tsx
|
|
3196
3424
|
var FORBIDDEN_KEYS = ["_cssid", "attributes"];
|
|
3197
3425
|
function OverridablePropIndicator() {
|
|
3198
|
-
const { bind } = (0,
|
|
3426
|
+
const { bind } = (0, import_editor_controls6.useBoundProp)();
|
|
3199
3427
|
const componentId = useCurrentComponentId();
|
|
3200
|
-
|
|
3428
|
+
const overridableProps = useOverridableProps(componentId);
|
|
3429
|
+
if (!isPropAllowed(bind) || !componentId || !overridableProps) {
|
|
3201
3430
|
return null;
|
|
3202
3431
|
}
|
|
3203
|
-
|
|
3204
|
-
return /* @__PURE__ */ React27.createElement(Content2, { componentId, overridableProps });
|
|
3432
|
+
return /* @__PURE__ */ React29.createElement(Content2, { componentId, overridableProps });
|
|
3205
3433
|
}
|
|
3206
3434
|
function Content2({ componentId, overridableProps }) {
|
|
3207
3435
|
const {
|
|
3208
3436
|
element: { id: elementId },
|
|
3209
3437
|
elementType
|
|
3210
|
-
} = (0,
|
|
3211
|
-
const { value, bind, propType } = (0,
|
|
3438
|
+
} = (0, import_editor_editing_panel7.useElement)();
|
|
3439
|
+
const { value, bind, propType } = (0, import_editor_controls6.useBoundProp)();
|
|
3212
3440
|
const contextOverridableValue = useOverridablePropValue();
|
|
3213
|
-
const { value: boundPropOverridableValue, setValue: setOverridableValue } = (0,
|
|
3441
|
+
const { value: boundPropOverridableValue, setValue: setOverridableValue } = (0, import_editor_controls6.useBoundProp)(
|
|
3214
3442
|
componentOverridablePropTypeUtil
|
|
3215
3443
|
);
|
|
3216
3444
|
const overridableValue = boundPropOverridableValue ?? contextOverridableValue;
|
|
3217
|
-
const popupState = (0,
|
|
3445
|
+
const popupState = (0, import_ui23.usePopupState)({
|
|
3218
3446
|
variant: "popover"
|
|
3219
3447
|
});
|
|
3220
|
-
const triggerProps = (0,
|
|
3221
|
-
const popoverProps = (0,
|
|
3222
|
-
const { elType } = (0,
|
|
3448
|
+
const triggerProps = (0, import_ui23.bindTrigger)(popupState);
|
|
3449
|
+
const popoverProps = (0, import_ui23.bindPopover)(popupState);
|
|
3450
|
+
const { elType } = (0, import_editor_elements12.getWidgetsCache)()?.[elementType.key] ?? { elType: "widget" };
|
|
3223
3451
|
const handleSubmit = ({ label, group }) => {
|
|
3224
|
-
const
|
|
3452
|
+
const propTypeDefault = propType.default ?? {};
|
|
3453
|
+
const originValue = (!overridableValue ? value : overridableValue?.origin_value) ?? propTypeDefault;
|
|
3454
|
+
const matchingOverridableProp = overridableValue ? overridableProps?.props?.[overridableValue.override_key] : void 0;
|
|
3225
3455
|
const overridablePropConfig = setOverridableProp({
|
|
3226
3456
|
componentId,
|
|
3227
3457
|
overrideKey: overridableValue?.override_key ?? null,
|
|
@@ -3231,7 +3461,8 @@ function Content2({ componentId, overridableProps }) {
|
|
|
3231
3461
|
propKey: bind,
|
|
3232
3462
|
elType: elType ?? "widget",
|
|
3233
3463
|
widgetType: elementType.key,
|
|
3234
|
-
originValue
|
|
3464
|
+
originValue,
|
|
3465
|
+
originPropFields: matchingOverridableProp?.originPropFields
|
|
3235
3466
|
});
|
|
3236
3467
|
if (!overridableValue && overridablePropConfig) {
|
|
3237
3468
|
setOverridableValue({
|
|
@@ -3242,8 +3473,8 @@ function Content2({ componentId, overridableProps }) {
|
|
|
3242
3473
|
popupState.close();
|
|
3243
3474
|
};
|
|
3244
3475
|
const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
|
|
3245
|
-
return /* @__PURE__ */
|
|
3246
|
-
|
|
3476
|
+
return /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(import_ui23.Tooltip, { placement: "top", title: (0, import_i18n23.__)("Override Property", "elementor") }, /* @__PURE__ */ React29.createElement(Indicator, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React29.createElement(
|
|
3477
|
+
import_ui23.Popover,
|
|
3247
3478
|
{
|
|
3248
3479
|
disableScrollLock: true,
|
|
3249
3480
|
anchorOrigin: {
|
|
@@ -3259,7 +3490,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
3259
3490
|
},
|
|
3260
3491
|
...popoverProps
|
|
3261
3492
|
},
|
|
3262
|
-
/* @__PURE__ */
|
|
3493
|
+
/* @__PURE__ */ React29.createElement(
|
|
3263
3494
|
OverridablePropForm,
|
|
3264
3495
|
{
|
|
3265
3496
|
onSubmit: handleSubmit,
|
|
@@ -3277,7 +3508,7 @@ function isPropAllowed(bind) {
|
|
|
3277
3508
|
}
|
|
3278
3509
|
|
|
3279
3510
|
// src/hooks/regenerate-override-keys.ts
|
|
3280
|
-
var
|
|
3511
|
+
var import_editor_elements13 = require("@elementor/editor-elements");
|
|
3281
3512
|
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
|
|
3282
3513
|
var import_utils8 = require("@elementor/utils");
|
|
3283
3514
|
function initRegenerateOverrideKeys() {
|
|
@@ -3298,7 +3529,7 @@ function regenerateOverrideKeysForContainers(result) {
|
|
|
3298
3529
|
});
|
|
3299
3530
|
}
|
|
3300
3531
|
function regenerateOverrideKeysRecursive(elementId) {
|
|
3301
|
-
const container = (0,
|
|
3532
|
+
const container = (0, import_editor_elements13.getContainer)(elementId);
|
|
3302
3533
|
if (!container) {
|
|
3303
3534
|
return;
|
|
3304
3535
|
}
|
|
@@ -3340,7 +3571,7 @@ function regenerateOverrideKeys(element) {
|
|
|
3340
3571
|
}
|
|
3341
3572
|
}
|
|
3342
3573
|
};
|
|
3343
|
-
(0,
|
|
3574
|
+
(0, import_editor_elements13.updateElementSettings)({
|
|
3344
3575
|
id: element.id,
|
|
3345
3576
|
props: { component_instance: newComponentInstance },
|
|
3346
3577
|
withHistory: false
|
|
@@ -3364,7 +3595,7 @@ var import_editor_mcp2 = require("@elementor/editor-mcp");
|
|
|
3364
3595
|
|
|
3365
3596
|
// src/mcp/save-as-component-tool.ts
|
|
3366
3597
|
var import_editor_canvas7 = require("@elementor/editor-canvas");
|
|
3367
|
-
var
|
|
3598
|
+
var import_editor_elements14 = require("@elementor/editor-elements");
|
|
3368
3599
|
var import_editor_mcp = require("@elementor/editor-mcp");
|
|
3369
3600
|
var import_http_client2 = require("@elementor/http-client");
|
|
3370
3601
|
var import_schema6 = require("@elementor/schema");
|
|
@@ -3399,7 +3630,7 @@ var ERROR_MESSAGES2 = {
|
|
|
3399
3630
|
var handleSaveAsComponent = async (params) => {
|
|
3400
3631
|
const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
|
|
3401
3632
|
const validElementTypes = getValidElementTypes();
|
|
3402
|
-
const container = (0,
|
|
3633
|
+
const container = (0, import_editor_elements14.getContainer)(elementId);
|
|
3403
3634
|
if (!container) {
|
|
3404
3635
|
throw new Error(ERROR_MESSAGES2.ELEMENT_NOT_FOUND);
|
|
3405
3636
|
}
|
|
@@ -3446,7 +3677,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
3446
3677
|
}
|
|
3447
3678
|
const elType = element.elType;
|
|
3448
3679
|
const widgetType = element.widgetType || element.elType;
|
|
3449
|
-
const elementType = (0,
|
|
3680
|
+
const elementType = (0, import_editor_elements14.getElementType)(widgetType);
|
|
3450
3681
|
if (!elementType) {
|
|
3451
3682
|
throw new Error(
|
|
3452
3683
|
`Element type "${widgetType}" is not atomic or does not have a settings schema. Cannot expose property "${propKey}" for element "${elementId}".`
|
|
@@ -3520,7 +3751,7 @@ function generateLabel(propKey) {
|
|
|
3520
3751
|
return `${uniqueId} - ${propKey}`;
|
|
3521
3752
|
}
|
|
3522
3753
|
function getValidElementTypes() {
|
|
3523
|
-
const types = (0,
|
|
3754
|
+
const types = (0, import_editor_elements14.getWidgetsCache)();
|
|
3524
3755
|
if (!types) {
|
|
3525
3756
|
return [];
|
|
3526
3757
|
}
|
|
@@ -3693,28 +3924,28 @@ function initMcp() {
|
|
|
3693
3924
|
|
|
3694
3925
|
// src/populate-store.ts
|
|
3695
3926
|
var import_react16 = require("react");
|
|
3696
|
-
var
|
|
3927
|
+
var import_store52 = require("@elementor/store");
|
|
3697
3928
|
function PopulateStore() {
|
|
3698
3929
|
(0, import_react16.useEffect)(() => {
|
|
3699
|
-
(0,
|
|
3930
|
+
(0, import_store52.__dispatch)(loadComponents());
|
|
3700
3931
|
}, []);
|
|
3701
3932
|
return null;
|
|
3702
3933
|
}
|
|
3703
3934
|
|
|
3704
3935
|
// src/store/actions/remove-component-styles.ts
|
|
3705
|
-
var
|
|
3936
|
+
var import_store53 = require("@elementor/store");
|
|
3706
3937
|
function removeComponentStyles(id2) {
|
|
3707
3938
|
apiClient.invalidateComponentConfigCache(id2);
|
|
3708
|
-
(0,
|
|
3939
|
+
(0, import_store53.__dispatch)(slice.actions.removeStyles({ id: id2 }));
|
|
3709
3940
|
}
|
|
3710
3941
|
|
|
3711
3942
|
// src/store/components-styles-provider.ts
|
|
3712
3943
|
var import_editor_styles_repository = require("@elementor/editor-styles-repository");
|
|
3713
|
-
var
|
|
3944
|
+
var import_store55 = require("@elementor/store");
|
|
3714
3945
|
var componentsStylesProvider = (0, import_editor_styles_repository.createStylesProvider)({
|
|
3715
3946
|
key: "components-styles",
|
|
3716
3947
|
priority: 100,
|
|
3717
|
-
subscribe: (cb) => (0,
|
|
3948
|
+
subscribe: (cb) => (0, import_store55.__subscribeWithSelector)(
|
|
3718
3949
|
(state) => state[SLICE_NAME],
|
|
3719
3950
|
() => {
|
|
3720
3951
|
cb();
|
|
@@ -3722,29 +3953,29 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
|
|
|
3722
3953
|
),
|
|
3723
3954
|
actions: {
|
|
3724
3955
|
all: () => {
|
|
3725
|
-
return selectFlatStyles((0,
|
|
3956
|
+
return selectFlatStyles((0, import_store55.__getState)());
|
|
3726
3957
|
},
|
|
3727
3958
|
get: (id2) => {
|
|
3728
|
-
return selectFlatStyles((0,
|
|
3959
|
+
return selectFlatStyles((0, import_store55.__getState)()).find((style) => style.id === id2) ?? null;
|
|
3729
3960
|
}
|
|
3730
3961
|
}
|
|
3731
3962
|
});
|
|
3732
3963
|
|
|
3733
3964
|
// src/sync/create-components-before-save.ts
|
|
3734
|
-
var
|
|
3735
|
-
var
|
|
3965
|
+
var import_editor_elements15 = require("@elementor/editor-elements");
|
|
3966
|
+
var import_store57 = require("@elementor/store");
|
|
3736
3967
|
async function createComponentsBeforeSave({
|
|
3737
3968
|
elements,
|
|
3738
3969
|
status
|
|
3739
3970
|
}) {
|
|
3740
|
-
const unpublishedComponents = selectUnpublishedComponents((0,
|
|
3971
|
+
const unpublishedComponents = selectUnpublishedComponents((0, import_store57.__getState)());
|
|
3741
3972
|
if (!unpublishedComponents.length) {
|
|
3742
3973
|
return;
|
|
3743
3974
|
}
|
|
3744
3975
|
try {
|
|
3745
3976
|
const uidToComponentId = await createComponents(unpublishedComponents, status);
|
|
3746
3977
|
updateComponentInstances(elements, uidToComponentId);
|
|
3747
|
-
(0,
|
|
3978
|
+
(0, import_store57.__dispatch)(
|
|
3748
3979
|
slice.actions.add(
|
|
3749
3980
|
unpublishedComponents.map((component) => ({
|
|
3750
3981
|
id: uidToComponentId.get(component.uid),
|
|
@@ -3754,7 +3985,7 @@ async function createComponentsBeforeSave({
|
|
|
3754
3985
|
}))
|
|
3755
3986
|
)
|
|
3756
3987
|
);
|
|
3757
|
-
(0,
|
|
3988
|
+
(0, import_store57.__dispatch)(slice.actions.resetUnpublished());
|
|
3758
3989
|
} catch (error) {
|
|
3759
3990
|
throw new Error(`Failed to publish components and update component instances: ${error}`);
|
|
3760
3991
|
}
|
|
@@ -3789,14 +4020,17 @@ function updateComponentInstances(elements, uidToComponentId) {
|
|
|
3789
4020
|
function shouldUpdateElement(element, uidToComponentId) {
|
|
3790
4021
|
if (element.widgetType === "e-component") {
|
|
3791
4022
|
const currentComponentId = element.settings?.component_instance?.value?.component_id.value;
|
|
3792
|
-
if (currentComponentId && uidToComponentId.has(currentComponentId)) {
|
|
3793
|
-
return {
|
|
4023
|
+
if (currentComponentId && uidToComponentId.has(currentComponentId.toString())) {
|
|
4024
|
+
return {
|
|
4025
|
+
shouldUpdate: true,
|
|
4026
|
+
newComponentId: uidToComponentId.get(currentComponentId.toString())
|
|
4027
|
+
};
|
|
3794
4028
|
}
|
|
3795
4029
|
}
|
|
3796
4030
|
return { shouldUpdate: false, newComponentId: null };
|
|
3797
4031
|
}
|
|
3798
4032
|
function updateElementComponentId(elementId, componentId) {
|
|
3799
|
-
(0,
|
|
4033
|
+
(0, import_editor_elements15.updateElementSettings)({
|
|
3800
4034
|
id: elementId,
|
|
3801
4035
|
props: {
|
|
3802
4036
|
component_instance: {
|
|
@@ -3811,7 +4045,7 @@ function updateElementComponentId(elementId, componentId) {
|
|
|
3811
4045
|
}
|
|
3812
4046
|
|
|
3813
4047
|
// src/sync/set-component-overridable-props-settings-before-save.ts
|
|
3814
|
-
var
|
|
4048
|
+
var import_store59 = require("@elementor/store");
|
|
3815
4049
|
var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
3816
4050
|
container
|
|
3817
4051
|
}) => {
|
|
@@ -3819,7 +4053,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
|
3819
4053
|
if (!currentDocument || currentDocument.config.type !== COMPONENT_DOCUMENT_TYPE) {
|
|
3820
4054
|
return;
|
|
3821
4055
|
}
|
|
3822
|
-
const overridableProps = selectOverridableProps((0,
|
|
4056
|
+
const overridableProps = selectOverridableProps((0, import_store59.__getState)(), currentDocument.id);
|
|
3823
4057
|
if (overridableProps) {
|
|
3824
4058
|
container.settings.set("overridable_props", overridableProps);
|
|
3825
4059
|
}
|
|
@@ -3827,7 +4061,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
|
3827
4061
|
|
|
3828
4062
|
// src/sync/update-archived-component-before-save.ts
|
|
3829
4063
|
var import_editor_notifications = require("@elementor/editor-notifications");
|
|
3830
|
-
var
|
|
4064
|
+
var import_store61 = require("@elementor/store");
|
|
3831
4065
|
var failedNotification = (message) => ({
|
|
3832
4066
|
type: "error",
|
|
3833
4067
|
message: `Failed to archive components: ${message}`,
|
|
@@ -3840,7 +4074,7 @@ var successNotification = (message) => ({
|
|
|
3840
4074
|
});
|
|
3841
4075
|
var updateArchivedComponentBeforeSave = async () => {
|
|
3842
4076
|
try {
|
|
3843
|
-
const archivedComponents = selectArchivedComponents((0,
|
|
4077
|
+
const archivedComponents = selectArchivedComponents((0, import_store61.__getState)());
|
|
3844
4078
|
if (!archivedComponents.length) {
|
|
3845
4079
|
return;
|
|
3846
4080
|
}
|
|
@@ -3890,7 +4124,7 @@ var beforeSave = ({ container, status }) => {
|
|
|
3890
4124
|
// src/init.ts
|
|
3891
4125
|
function init() {
|
|
3892
4126
|
import_editor_styles_repository2.stylesRepository.register(componentsStylesProvider);
|
|
3893
|
-
(0,
|
|
4127
|
+
(0, import_store63.__registerSlice)(slice);
|
|
3894
4128
|
(0, import_editor_panels4.__registerPanel)(panel);
|
|
3895
4129
|
(0, import_editor_canvas8.registerElementType)(
|
|
3896
4130
|
COMPONENT_WIDGET_TYPE,
|
|
@@ -3922,7 +4156,7 @@ function init() {
|
|
|
3922
4156
|
id: "edit-component",
|
|
3923
4157
|
component: EditComponent
|
|
3924
4158
|
});
|
|
3925
|
-
(0,
|
|
4159
|
+
(0, import_editor_editing_panel8.injectIntoPanelHeaderTop)({
|
|
3926
4160
|
id: "component-panel-header",
|
|
3927
4161
|
component: ComponentPanelHeader
|
|
3928
4162
|
});
|
|
@@ -3933,17 +4167,17 @@ function init() {
|
|
|
3933
4167
|
}
|
|
3934
4168
|
await loadComponentsAssets(config?.elements ?? []);
|
|
3935
4169
|
});
|
|
3936
|
-
(0,
|
|
3937
|
-
fieldType:
|
|
4170
|
+
(0, import_editor_editing_panel8.registerFieldIndicator)({
|
|
4171
|
+
fieldType: import_editor_editing_panel8.FIELD_TYPE.SETTINGS,
|
|
3938
4172
|
id: "component-overridable-prop",
|
|
3939
4173
|
priority: 1,
|
|
3940
4174
|
indicator: OverridablePropIndicator
|
|
3941
4175
|
});
|
|
3942
|
-
(0,
|
|
4176
|
+
(0, import_editor_editing_panel8.registerControlReplacement)({
|
|
3943
4177
|
component: OverridablePropControl,
|
|
3944
4178
|
condition: ({ value }) => componentOverridablePropTypeUtil.isValid(value)
|
|
3945
4179
|
});
|
|
3946
|
-
(0,
|
|
4180
|
+
(0, import_editor_editing_panel8.registerEditingPanelReplacement)({
|
|
3947
4181
|
id: "component-instance-edit-panel",
|
|
3948
4182
|
condition: (_, elementType) => elementType.key === "e-component",
|
|
3949
4183
|
component: InstanceEditingPanel
|