@elementor/editor-components 3.35.0-489 → 3.35.0-490
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 -64
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +80 -38
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -22
- package/src/components/create-component-form/create-component-form.tsx +1 -0
- package/src/store/actions/create-unpublished-component.ts +38 -3
- package/src/store/store.ts +9 -0
- package/src/sync/create-components-before-save.ts +4 -1
- package/src/types.ts +6 -0
package/dist/index.js
CHANGED
|
@@ -44,7 +44,7 @@ var import_editor_panels5 = require("@elementor/editor-panels");
|
|
|
44
44
|
var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
|
|
45
45
|
var import_editor_v1_adapters14 = require("@elementor/editor-v1-adapters");
|
|
46
46
|
var import_store80 = require("@elementor/store");
|
|
47
|
-
var
|
|
47
|
+
var import_i18n31 = require("@wordpress/i18n");
|
|
48
48
|
|
|
49
49
|
// src/component-instance-transformer.ts
|
|
50
50
|
var import_editor_canvas = require("@elementor/editor-canvas");
|
|
@@ -146,6 +146,12 @@ var slice = (0, import_store2.__createSlice)({
|
|
|
146
146
|
addUnpublished: (state, { payload }) => {
|
|
147
147
|
state.unpublishedData.unshift(payload);
|
|
148
148
|
},
|
|
149
|
+
removeUnpublished: (state, { payload }) => {
|
|
150
|
+
const uidsToRemove = Array.isArray(payload) ? payload : [payload];
|
|
151
|
+
state.unpublishedData = state.unpublishedData.filter(
|
|
152
|
+
(component) => !uidsToRemove.includes(component.uid)
|
|
153
|
+
);
|
|
154
|
+
},
|
|
149
155
|
resetUnpublished: (state) => {
|
|
150
156
|
state.unpublishedData = [];
|
|
151
157
|
},
|
|
@@ -159,6 +165,9 @@ var slice = (0, import_store2.__createSlice)({
|
|
|
159
165
|
addCreatedThisSession: (state, { payload }) => {
|
|
160
166
|
state.createdThisSession.push(payload);
|
|
161
167
|
},
|
|
168
|
+
removeCreatedThisSession: (state, { payload }) => {
|
|
169
|
+
state.createdThisSession = state.createdThisSession.filter((uid) => uid !== payload);
|
|
170
|
+
},
|
|
162
171
|
archive: (state, { payload }) => {
|
|
163
172
|
const component = state.data.find((comp) => comp.id === payload);
|
|
164
173
|
if (component) {
|
|
@@ -2978,13 +2987,13 @@ var OVERRIDABLE_PROP_REPLACEMENT_ID = "overridable-prop";
|
|
|
2978
2987
|
// src/components/create-component-form/create-component-form.tsx
|
|
2979
2988
|
var React19 = __toESM(require("react"));
|
|
2980
2989
|
var import_react10 = require("react");
|
|
2981
|
-
var
|
|
2990
|
+
var import_editor_elements11 = require("@elementor/editor-elements");
|
|
2982
2991
|
var import_editor_notifications3 = require("@elementor/editor-notifications");
|
|
2983
2992
|
var import_editor_ui11 = require("@elementor/editor-ui");
|
|
2984
2993
|
var import_icons11 = require("@elementor/icons");
|
|
2985
2994
|
var import_store47 = require("@elementor/store");
|
|
2986
2995
|
var import_ui16 = require("@elementor/ui");
|
|
2987
|
-
var
|
|
2996
|
+
var import_i18n23 = require("@wordpress/i18n");
|
|
2988
2997
|
|
|
2989
2998
|
// src/prevent-non-atomic-nesting.ts
|
|
2990
2999
|
var import_editor_canvas6 = require("@elementor/editor-canvas");
|
|
@@ -3105,9 +3114,11 @@ function findNonAtomicElementsInElement(element) {
|
|
|
3105
3114
|
}
|
|
3106
3115
|
|
|
3107
3116
|
// src/store/actions/create-unpublished-component.ts
|
|
3117
|
+
var import_editor_elements10 = require("@elementor/editor-elements");
|
|
3108
3118
|
var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
|
|
3109
3119
|
var import_store45 = require("@elementor/store");
|
|
3110
3120
|
var import_utils4 = require("@elementor/utils");
|
|
3121
|
+
var import_i18n22 = require("@wordpress/i18n");
|
|
3111
3122
|
async function createUnpublishedComponent({
|
|
3112
3123
|
name,
|
|
3113
3124
|
element,
|
|
@@ -3119,6 +3130,13 @@ async function createUnpublishedComponent({
|
|
|
3119
3130
|
const generatedUid = uid ?? (0, import_utils4.generateUniqueId)("component");
|
|
3120
3131
|
const componentBase = { uid: generatedUid, name };
|
|
3121
3132
|
const elementDataWithOverridablesReverted = revertAllOverridablesInElementData(element);
|
|
3133
|
+
const container = (0, import_editor_elements10.getContainer)(element.id);
|
|
3134
|
+
const modelFromContainer = container?.model?.toJSON?.();
|
|
3135
|
+
const originalElement = {
|
|
3136
|
+
model: modelFromContainer ?? element,
|
|
3137
|
+
parentId: container?.parent?.id ?? "",
|
|
3138
|
+
index: container?.view?._index ?? 0
|
|
3139
|
+
};
|
|
3122
3140
|
(0, import_store45.__dispatch)(
|
|
3123
3141
|
slice.actions.addUnpublished({
|
|
3124
3142
|
...componentBase,
|
|
@@ -3135,9 +3153,30 @@ async function createUnpublishedComponent({
|
|
|
3135
3153
|
component_name: name,
|
|
3136
3154
|
...eventData
|
|
3137
3155
|
});
|
|
3138
|
-
|
|
3156
|
+
try {
|
|
3157
|
+
await (0, import_editor_v1_adapters5.__privateRunCommand)("document/save/auto");
|
|
3158
|
+
} catch (error) {
|
|
3159
|
+
restoreOriginalElement(originalElement, componentInstance.id);
|
|
3160
|
+
(0, import_store45.__dispatch)(slice.actions.removeUnpublished(generatedUid));
|
|
3161
|
+
(0, import_store45.__dispatch)(slice.actions.removeCreatedThisSession(generatedUid));
|
|
3162
|
+
throw error;
|
|
3163
|
+
}
|
|
3139
3164
|
return { uid: generatedUid, instanceId: componentInstance.id };
|
|
3140
3165
|
}
|
|
3166
|
+
function restoreOriginalElement(originalElement, componentInstanceId) {
|
|
3167
|
+
(0, import_editor_elements10.deleteElement)({ elementId: componentInstanceId, options: { useHistory: false } });
|
|
3168
|
+
const clonedModel = structuredClone(originalElement.model);
|
|
3169
|
+
(0, import_editor_elements10.createElements)({
|
|
3170
|
+
title: (0, import_i18n22.__)("Restore Element", "elementor"),
|
|
3171
|
+
elements: [
|
|
3172
|
+
{
|
|
3173
|
+
containerId: originalElement.parentId,
|
|
3174
|
+
model: clonedModel,
|
|
3175
|
+
options: { at: originalElement.index }
|
|
3176
|
+
}
|
|
3177
|
+
]
|
|
3178
|
+
});
|
|
3179
|
+
}
|
|
3141
3180
|
|
|
3142
3181
|
// src/components/create-component-form/hooks/use-form.ts
|
|
3143
3182
|
var import_react9 = require("react");
|
|
@@ -3232,7 +3271,7 @@ function CreateComponentForm() {
|
|
|
3232
3271
|
(0, import_editor_notifications3.notify)(notification);
|
|
3233
3272
|
return;
|
|
3234
3273
|
}
|
|
3235
|
-
setElement({ element: event.detail.element, elementLabel: (0,
|
|
3274
|
+
setElement({ element: event.detail.element, elementLabel: (0, import_editor_elements11.getElementLabel)(event.detail.element.id) });
|
|
3236
3275
|
setAnchorPosition(event.detail.anchorPosition);
|
|
3237
3276
|
eventData.current = getComponentEventData(event.detail.element, event.detail.options);
|
|
3238
3277
|
trackComponentEvent({
|
|
@@ -3265,17 +3304,18 @@ function CreateComponentForm() {
|
|
|
3265
3304
|
}
|
|
3266
3305
|
(0, import_editor_notifications3.notify)({
|
|
3267
3306
|
type: "success",
|
|
3268
|
-
message: (0,
|
|
3307
|
+
message: (0, import_i18n23.__)("Component created successfully.", "elementor"),
|
|
3269
3308
|
id: `component-saved-successfully-${uid}`
|
|
3270
3309
|
});
|
|
3271
3310
|
resetAndClosePopup();
|
|
3272
3311
|
} catch {
|
|
3273
|
-
const errorMessage = (0,
|
|
3312
|
+
const errorMessage = (0, import_i18n23.__)("Failed to create component. Please try again.", "elementor");
|
|
3274
3313
|
(0, import_editor_notifications3.notify)({
|
|
3275
3314
|
type: "error",
|
|
3276
3315
|
message: errorMessage,
|
|
3277
3316
|
id: "component-save-failed"
|
|
3278
3317
|
});
|
|
3318
|
+
resetAndClosePopup();
|
|
3279
3319
|
}
|
|
3280
3320
|
};
|
|
3281
3321
|
const resetAndClosePopup = () => {
|
|
@@ -3315,7 +3355,7 @@ function shouldOpenForm(element, componentsCount) {
|
|
|
3315
3355
|
shouldOpen: false,
|
|
3316
3356
|
notification: {
|
|
3317
3357
|
type: "default",
|
|
3318
|
-
message: (0,
|
|
3358
|
+
message: (0, import_i18n23.__)(
|
|
3319
3359
|
"Components require atomic elements only. Remove widgets to create this component.",
|
|
3320
3360
|
"elementor"
|
|
3321
3361
|
),
|
|
@@ -3329,7 +3369,7 @@ function shouldOpenForm(element, componentsCount) {
|
|
|
3329
3369
|
notification: {
|
|
3330
3370
|
type: "default",
|
|
3331
3371
|
/* translators: %s is the maximum number of components */
|
|
3332
|
-
message: (0,
|
|
3372
|
+
message: (0, import_i18n23.__)(
|
|
3333
3373
|
`You've reached the limit of %s components. Please remove an existing one to create a new component.`,
|
|
3334
3374
|
"elementor"
|
|
3335
3375
|
).replace("%s", MAX_COMPONENTS.toString()),
|
|
@@ -3365,10 +3405,10 @@ var Form2 = ({
|
|
|
3365
3405
|
}
|
|
3366
3406
|
};
|
|
3367
3407
|
const texts = {
|
|
3368
|
-
heading: (0,
|
|
3369
|
-
name: (0,
|
|
3370
|
-
cancel: (0,
|
|
3371
|
-
create: (0,
|
|
3408
|
+
heading: (0, import_i18n23.__)("Create component", "elementor"),
|
|
3409
|
+
name: (0, import_i18n23.__)("Name", "elementor"),
|
|
3410
|
+
cancel: (0, import_i18n23.__)("Cancel", "elementor"),
|
|
3411
|
+
create: (0, import_i18n23.__)("Create", "elementor")
|
|
3372
3412
|
};
|
|
3373
3413
|
const nameInputId = "component-name";
|
|
3374
3414
|
return /* @__PURE__ */ React19.createElement(import_editor_ui11.Form, { onSubmit: handleSubmit }, /* @__PURE__ */ React19.createElement(import_ui16.Stack, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React19.createElement(
|
|
@@ -3424,7 +3464,7 @@ function updateCurrentComponent({
|
|
|
3424
3464
|
var React20 = __toESM(require("react"));
|
|
3425
3465
|
var import_react12 = require("react");
|
|
3426
3466
|
var import_react_dom = require("react-dom");
|
|
3427
|
-
var
|
|
3467
|
+
var import_i18n24 = require("@wordpress/i18n");
|
|
3428
3468
|
|
|
3429
3469
|
// src/hooks/use-canvas-document.ts
|
|
3430
3470
|
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
|
|
@@ -3550,7 +3590,7 @@ function Backdrop({
|
|
|
3550
3590
|
onKeyDown: handleKeyDown,
|
|
3551
3591
|
role: "button",
|
|
3552
3592
|
tabIndex: 0,
|
|
3553
|
-
"aria-label": (0,
|
|
3593
|
+
"aria-label": (0, import_i18n24.__)("Exit component editing mode", "elementor")
|
|
3554
3594
|
}
|
|
3555
3595
|
);
|
|
3556
3596
|
}
|
|
@@ -3698,37 +3738,37 @@ var React22 = __toESM(require("react"));
|
|
|
3698
3738
|
var import_editor_ui12 = require("@elementor/editor-ui");
|
|
3699
3739
|
var import_icons12 = require("@elementor/icons");
|
|
3700
3740
|
var import_ui17 = require("@elementor/ui");
|
|
3701
|
-
var
|
|
3741
|
+
var import_i18n25 = require("@wordpress/i18n");
|
|
3702
3742
|
var openEditModeDialog = (lockedBy) => {
|
|
3703
3743
|
(0, import_editor_ui12.openDialog)({
|
|
3704
3744
|
component: /* @__PURE__ */ React22.createElement(EditModeDialog, { lockedBy })
|
|
3705
3745
|
});
|
|
3706
3746
|
};
|
|
3707
3747
|
var EditModeDialog = ({ lockedBy }) => {
|
|
3708
|
-
const content = (0,
|
|
3709
|
-
return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(import_ui17.DialogHeader, { logo: false }, /* @__PURE__ */ React22.createElement(import_ui17.Box, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React22.createElement(import_ui17.Icon, { color: "secondary" }, /* @__PURE__ */ React22.createElement(import_icons12.InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React22.createElement(import_ui17.Typography, { variant: "subtitle1" }, content))), /* @__PURE__ */ React22.createElement(import_ui17.DialogContent, null, /* @__PURE__ */ React22.createElement(import_ui17.Stack, { spacing: 2, direction: "column" }, /* @__PURE__ */ React22.createElement(import_ui17.Typography, { variant: "body2" }, (0,
|
|
3748
|
+
const content = (0, import_i18n25.__)("%s is currently editing this document", "elementor").replace("%s", lockedBy);
|
|
3749
|
+
return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(import_ui17.DialogHeader, { logo: false }, /* @__PURE__ */ React22.createElement(import_ui17.Box, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React22.createElement(import_ui17.Icon, { color: "secondary" }, /* @__PURE__ */ React22.createElement(import_icons12.InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React22.createElement(import_ui17.Typography, { variant: "subtitle1" }, content))), /* @__PURE__ */ React22.createElement(import_ui17.DialogContent, null, /* @__PURE__ */ React22.createElement(import_ui17.Stack, { spacing: 2, direction: "column" }, /* @__PURE__ */ React22.createElement(import_ui17.Typography, { variant: "body2" }, (0, import_i18n25.__)(
|
|
3710
3750
|
"You can wait for them to finish or reach out to coordinate your changes together.",
|
|
3711
3751
|
"elementor"
|
|
3712
|
-
)), /* @__PURE__ */ React22.createElement(import_ui17.DialogActions, null, /* @__PURE__ */ React22.createElement(import_ui17.Button, { color: "secondary", variant: "contained", onClick: import_editor_ui12.closeDialog }, (0,
|
|
3752
|
+
)), /* @__PURE__ */ React22.createElement(import_ui17.DialogActions, null, /* @__PURE__ */ React22.createElement(import_ui17.Button, { color: "secondary", variant: "contained", onClick: import_editor_ui12.closeDialog }, (0, import_i18n25.__)("Close", "elementor"))))));
|
|
3713
3753
|
};
|
|
3714
3754
|
|
|
3715
3755
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
3716
3756
|
var React28 = __toESM(require("react"));
|
|
3717
3757
|
var import_editor_controls4 = require("@elementor/editor-controls");
|
|
3718
3758
|
var import_editor_editing_panel5 = require("@elementor/editor-editing-panel");
|
|
3719
|
-
var
|
|
3759
|
+
var import_editor_elements16 = require("@elementor/editor-elements");
|
|
3720
3760
|
var import_editor_panels4 = require("@elementor/editor-panels");
|
|
3721
3761
|
var import_editor_ui14 = require("@elementor/editor-ui");
|
|
3722
3762
|
var import_icons14 = require("@elementor/icons");
|
|
3723
3763
|
var import_ui22 = require("@elementor/ui");
|
|
3724
|
-
var
|
|
3764
|
+
var import_i18n27 = require("@wordpress/i18n");
|
|
3725
3765
|
|
|
3726
3766
|
// src/hooks/use-component-instance-settings.ts
|
|
3727
3767
|
var import_editor_editing_panel2 = require("@elementor/editor-editing-panel");
|
|
3728
|
-
var
|
|
3768
|
+
var import_editor_elements12 = require("@elementor/editor-elements");
|
|
3729
3769
|
function useComponentInstanceSettings() {
|
|
3730
3770
|
const { element } = (0, import_editor_editing_panel2.useElement)();
|
|
3731
|
-
const settings = (0,
|
|
3771
|
+
const settings = (0, import_editor_elements12.useElementSetting)(element.id, "component_instance");
|
|
3732
3772
|
return componentInstancePropTypeUtil.extract(settings);
|
|
3733
3773
|
}
|
|
3734
3774
|
|
|
@@ -3736,13 +3776,13 @@ function useComponentInstanceSettings() {
|
|
|
3736
3776
|
var React23 = __toESM(require("react"));
|
|
3737
3777
|
var import_icons13 = require("@elementor/icons");
|
|
3738
3778
|
var import_ui18 = require("@elementor/ui");
|
|
3739
|
-
var
|
|
3779
|
+
var import_i18n26 = require("@wordpress/i18n");
|
|
3740
3780
|
var EmptyState2 = ({ onEditComponent }) => {
|
|
3741
3781
|
const { canEdit } = useComponentsPermissions();
|
|
3742
|
-
const message = canEdit ? (0,
|
|
3782
|
+
const message = canEdit ? (0, import_i18n26.__)(
|
|
3743
3783
|
"Edit the component to add properties, manage them or update the design across all instances.",
|
|
3744
3784
|
"elementor"
|
|
3745
|
-
) : (0,
|
|
3785
|
+
) : (0, import_i18n26.__)(
|
|
3746
3786
|
"With your current role, you cannot edit this component. Contact an administrator to add properties.",
|
|
3747
3787
|
"elementor"
|
|
3748
3788
|
);
|
|
@@ -3757,9 +3797,9 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
3757
3797
|
gap: 1.5
|
|
3758
3798
|
},
|
|
3759
3799
|
/* @__PURE__ */ React23.createElement(import_icons13.ComponentPropListIcon, { fontSize: "large" }),
|
|
3760
|
-
/* @__PURE__ */ React23.createElement(import_ui18.Typography, { align: "center", variant: "subtitle2" }, (0,
|
|
3800
|
+
/* @__PURE__ */ React23.createElement(import_ui18.Typography, { align: "center", variant: "subtitle2" }, (0, import_i18n26.__)("No properties yet", "elementor")),
|
|
3761
3801
|
/* @__PURE__ */ React23.createElement(import_ui18.Typography, { align: "center", variant: "caption", maxWidth: "170px" }, message),
|
|
3762
|
-
canEdit && /* @__PURE__ */ React23.createElement(import_ui18.Button, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React23.createElement(import_icons13.PencilIcon, { fontSize: "small" }), (0,
|
|
3802
|
+
canEdit && /* @__PURE__ */ React23.createElement(import_ui18.Button, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React23.createElement(import_icons13.PencilIcon, { fontSize: "small" }), (0, import_i18n26.__)("Edit component", "elementor"))
|
|
3763
3803
|
);
|
|
3764
3804
|
};
|
|
3765
3805
|
|
|
@@ -3774,13 +3814,13 @@ var import_ui21 = require("@elementor/ui");
|
|
|
3774
3814
|
var React26 = __toESM(require("react"));
|
|
3775
3815
|
var import_editor_controls3 = require("@elementor/editor-controls");
|
|
3776
3816
|
var import_editor_editing_panel3 = require("@elementor/editor-editing-panel");
|
|
3777
|
-
var
|
|
3817
|
+
var import_editor_elements15 = require("@elementor/editor-elements");
|
|
3778
3818
|
var import_ui20 = require("@elementor/ui");
|
|
3779
3819
|
|
|
3780
3820
|
// src/hooks/use-controls-by-widget-type.ts
|
|
3781
|
-
var
|
|
3821
|
+
var import_editor_elements13 = require("@elementor/editor-elements");
|
|
3782
3822
|
function useControlsByWidgetType(type) {
|
|
3783
|
-
const elementType = (0,
|
|
3823
|
+
const elementType = (0, import_editor_elements13.getElementType)(type);
|
|
3784
3824
|
if (!elementType) {
|
|
3785
3825
|
return {};
|
|
3786
3826
|
}
|
|
@@ -3888,7 +3928,7 @@ function updateOverridableProp(componentId, propValue, originPropFields) {
|
|
|
3888
3928
|
}
|
|
3889
3929
|
|
|
3890
3930
|
// src/utils/get-prop-type-for-component-override.ts
|
|
3891
|
-
var
|
|
3931
|
+
var import_editor_elements14 = require("@elementor/editor-elements");
|
|
3892
3932
|
var getPropTypeForComponentOverride = (overridableProp) => {
|
|
3893
3933
|
if (overridableProp.originPropFields) {
|
|
3894
3934
|
return getPropType(overridableProp.originPropFields);
|
|
@@ -3902,7 +3942,7 @@ var getPropTypeForComponentOverride = (overridableProp) => {
|
|
|
3902
3942
|
});
|
|
3903
3943
|
};
|
|
3904
3944
|
function getPropType({ widgetType, propKey }) {
|
|
3905
|
-
const widgetPropsSchema = (0,
|
|
3945
|
+
const widgetPropsSchema = (0, import_editor_elements14.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
|
|
3906
3946
|
return widgetPropsSchema?.[propKey];
|
|
3907
3947
|
}
|
|
3908
3948
|
|
|
@@ -3983,14 +4023,14 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
3983
4023
|
overridableProp.label
|
|
3984
4024
|
);
|
|
3985
4025
|
const { elementId, widgetType, elType, propKey } = overridableProp.originPropFields ?? overridableProp;
|
|
3986
|
-
const elementContainer = (0,
|
|
4026
|
+
const elementContainer = (0, import_editor_elements15.getContainer)(elementId);
|
|
3987
4027
|
if (!elementContainer) {
|
|
3988
4028
|
throw new OverrideControlInnerElementNotFoundError({
|
|
3989
4029
|
context: { componentId: componentInstanceId, elementId }
|
|
3990
4030
|
});
|
|
3991
4031
|
}
|
|
3992
4032
|
const type = elType === "widget" ? widgetType : elType;
|
|
3993
|
-
const elementType = (0,
|
|
4033
|
+
const elementType = (0, import_editor_elements15.getElementType)(type);
|
|
3994
4034
|
if (!elementType) {
|
|
3995
4035
|
return null;
|
|
3996
4036
|
}
|
|
@@ -4142,11 +4182,11 @@ function InstanceEditingPanel() {
|
|
|
4142
4182
|
const overrides = settings?.overrides?.value;
|
|
4143
4183
|
const component = useComponent(componentId ?? null);
|
|
4144
4184
|
const overridableProps = useOverridableProps(componentId ?? null);
|
|
4145
|
-
const componentInstanceId = (0,
|
|
4185
|
+
const componentInstanceId = (0, import_editor_elements16.useSelectedElement)()?.element?.id ?? null;
|
|
4146
4186
|
if (!componentId || !overridableProps || !component) {
|
|
4147
4187
|
return null;
|
|
4148
4188
|
}
|
|
4149
|
-
const panelTitle = (0,
|
|
4189
|
+
const panelTitle = (0, import_i18n27.__)("Edit %s", "elementor").replace("%s", component.name);
|
|
4150
4190
|
const handleEditComponent = () => switchToComponent(componentId, componentInstanceId);
|
|
4151
4191
|
const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
|
|
4152
4192
|
const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
|
|
@@ -4237,9 +4277,9 @@ function ControlWithReplacements({
|
|
|
4237
4277
|
var React31 = __toESM(require("react"));
|
|
4238
4278
|
var import_editor_controls6 = require("@elementor/editor-controls");
|
|
4239
4279
|
var import_editor_editing_panel7 = require("@elementor/editor-editing-panel");
|
|
4240
|
-
var
|
|
4280
|
+
var import_editor_elements17 = require("@elementor/editor-elements");
|
|
4241
4281
|
var import_ui24 = require("@elementor/ui");
|
|
4242
|
-
var
|
|
4282
|
+
var import_i18n29 = require("@wordpress/i18n");
|
|
4243
4283
|
|
|
4244
4284
|
// src/store/actions/set-overridable-prop.ts
|
|
4245
4285
|
var import_store58 = require("@elementor/store");
|
|
@@ -4324,7 +4364,7 @@ var React30 = __toESM(require("react"));
|
|
|
4324
4364
|
var import_react16 = require("react");
|
|
4325
4365
|
var import_icons15 = require("@elementor/icons");
|
|
4326
4366
|
var import_ui23 = require("@elementor/ui");
|
|
4327
|
-
var
|
|
4367
|
+
var import_i18n28 = require("@wordpress/i18n");
|
|
4328
4368
|
var SIZE2 = "tiny";
|
|
4329
4369
|
var IconContainer = (0, import_ui23.styled)(import_ui23.Box)`
|
|
4330
4370
|
pointer-events: none;
|
|
@@ -4384,7 +4424,7 @@ var Indicator2 = (0, import_react16.forwardRef)(({ isOpen, isOverridable, ...pro
|
|
|
4384
4424
|
IconContainer,
|
|
4385
4425
|
{
|
|
4386
4426
|
className: "icon",
|
|
4387
|
-
"aria-label": isOverridable ? (0,
|
|
4427
|
+
"aria-label": isOverridable ? (0, import_i18n28.__)("Overridable property", "elementor") : (0, import_i18n28.__)("Make prop overridable", "elementor")
|
|
4388
4428
|
},
|
|
4389
4429
|
isOverridable ? /* @__PURE__ */ React30.createElement(import_icons15.CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React30.createElement(import_icons15.PlusIcon, { fontSize: SIZE2 })
|
|
4390
4430
|
)));
|
|
@@ -4429,7 +4469,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4429
4469
|
});
|
|
4430
4470
|
const triggerProps = (0, import_ui24.bindTrigger)(popupState);
|
|
4431
4471
|
const popoverProps = (0, import_ui24.bindPopover)(popupState);
|
|
4432
|
-
const { elType } = (0,
|
|
4472
|
+
const { elType } = (0, import_editor_elements17.getWidgetsCache)()?.[elementType.key] ?? { elType: "widget" };
|
|
4433
4473
|
const handleSubmit = ({ label, group }) => {
|
|
4434
4474
|
const propTypeDefault = propType.default ?? {};
|
|
4435
4475
|
const originValue = resolveOverridePropValue(overridableValue?.origin_value) ?? value ?? propTypeDefault;
|
|
@@ -4456,7 +4496,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4456
4496
|
popupState.close();
|
|
4457
4497
|
};
|
|
4458
4498
|
const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
|
|
4459
|
-
return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(import_ui24.Tooltip, { placement: "top", title: (0,
|
|
4499
|
+
return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(import_ui24.Tooltip, { placement: "top", title: (0, import_i18n29.__)("Override Property", "elementor") }, /* @__PURE__ */ React31.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React31.createElement(
|
|
4460
4500
|
import_ui24.Popover,
|
|
4461
4501
|
{
|
|
4462
4502
|
disableScrollLock: true,
|
|
@@ -4496,7 +4536,7 @@ var import_editor_mcp2 = require("@elementor/editor-mcp");
|
|
|
4496
4536
|
|
|
4497
4537
|
// src/mcp/save-as-component-tool.ts
|
|
4498
4538
|
var import_editor_canvas7 = require("@elementor/editor-canvas");
|
|
4499
|
-
var
|
|
4539
|
+
var import_editor_elements18 = require("@elementor/editor-elements");
|
|
4500
4540
|
var import_editor_mcp = require("@elementor/editor-mcp");
|
|
4501
4541
|
var import_http_client2 = require("@elementor/http-client");
|
|
4502
4542
|
var import_schema6 = require("@elementor/schema");
|
|
@@ -4534,7 +4574,7 @@ var ERROR_MESSAGES3 = {
|
|
|
4534
4574
|
var handleSaveAsComponent = async (params) => {
|
|
4535
4575
|
const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
|
|
4536
4576
|
const validElementTypes = getValidElementTypes();
|
|
4537
|
-
const container = (0,
|
|
4577
|
+
const container = (0, import_editor_elements18.getContainer)(elementId);
|
|
4538
4578
|
if (!container) {
|
|
4539
4579
|
throw new Error(ERROR_MESSAGES3.ELEMENT_NOT_FOUND);
|
|
4540
4580
|
}
|
|
@@ -4588,7 +4628,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
4588
4628
|
}
|
|
4589
4629
|
const elType = element.elType;
|
|
4590
4630
|
const widgetType = element.widgetType || element.elType;
|
|
4591
|
-
const elementType = (0,
|
|
4631
|
+
const elementType = (0, import_editor_elements18.getElementType)(widgetType);
|
|
4592
4632
|
if (!elementType) {
|
|
4593
4633
|
throw new Error(
|
|
4594
4634
|
`Element type "${widgetType}" is not atomic or does not have a settings schema. Cannot expose property "${propKey}" for element "${elementId}".`
|
|
@@ -4657,7 +4697,7 @@ function findElementById(root, targetId) {
|
|
|
4657
4697
|
return null;
|
|
4658
4698
|
}
|
|
4659
4699
|
function getValidElementTypes() {
|
|
4660
|
-
const types = (0,
|
|
4700
|
+
const types = (0, import_editor_elements18.getWidgetsCache)();
|
|
4661
4701
|
if (!types) {
|
|
4662
4702
|
return [];
|
|
4663
4703
|
}
|
|
@@ -4844,15 +4884,15 @@ function PopulateStore() {
|
|
|
4844
4884
|
}
|
|
4845
4885
|
|
|
4846
4886
|
// src/prevent-circular-nesting.ts
|
|
4847
|
-
var
|
|
4887
|
+
var import_editor_elements19 = require("@elementor/editor-elements");
|
|
4848
4888
|
var import_editor_notifications4 = require("@elementor/editor-notifications");
|
|
4849
4889
|
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
|
|
4850
4890
|
var import_store64 = require("@elementor/store");
|
|
4851
|
-
var
|
|
4891
|
+
var import_i18n30 = require("@wordpress/i18n");
|
|
4852
4892
|
var COMPONENT_TYPE = "e-component";
|
|
4853
4893
|
var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
4854
4894
|
type: "default",
|
|
4855
|
-
message: (0,
|
|
4895
|
+
message: (0, import_i18n30.__)("Can't add this component - components that contain each other can't be nested.", "elementor"),
|
|
4856
4896
|
id: "circular-component-nesting-blocked"
|
|
4857
4897
|
};
|
|
4858
4898
|
function initCircularNestingPrevention() {
|
|
@@ -4939,7 +4979,7 @@ function blockCircularMove(args) {
|
|
|
4939
4979
|
if (!container) {
|
|
4940
4980
|
return false;
|
|
4941
4981
|
}
|
|
4942
|
-
const allElements = (0,
|
|
4982
|
+
const allElements = (0, import_editor_elements19.getAllDescendants)(container);
|
|
4943
4983
|
return allElements.some((element) => {
|
|
4944
4984
|
const componentId = extractComponentIdFromContainer(element);
|
|
4945
4985
|
if (componentId === null) {
|
|
@@ -5000,7 +5040,7 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
|
|
|
5000
5040
|
});
|
|
5001
5041
|
|
|
5002
5042
|
// src/sync/create-components-before-save.ts
|
|
5003
|
-
var
|
|
5043
|
+
var import_editor_elements20 = require("@elementor/editor-elements");
|
|
5004
5044
|
var import_store70 = require("@elementor/store");
|
|
5005
5045
|
async function createComponentsBeforeSave({
|
|
5006
5046
|
elements,
|
|
@@ -5025,7 +5065,9 @@ async function createComponentsBeforeSave({
|
|
|
5025
5065
|
);
|
|
5026
5066
|
(0, import_store70.__dispatch)(slice.actions.resetUnpublished());
|
|
5027
5067
|
} catch (error) {
|
|
5028
|
-
|
|
5068
|
+
const failedUids = unpublishedComponents.map((component) => component.uid);
|
|
5069
|
+
(0, import_store70.__dispatch)(slice.actions.removeUnpublished(failedUids));
|
|
5070
|
+
throw new Error(`Failed to publish components: ${error}`);
|
|
5029
5071
|
}
|
|
5030
5072
|
}
|
|
5031
5073
|
async function createComponents(components, status) {
|
|
@@ -5068,7 +5110,7 @@ function shouldUpdateElement(element, uidToComponentId) {
|
|
|
5068
5110
|
return { shouldUpdate: false, newComponentId: null };
|
|
5069
5111
|
}
|
|
5070
5112
|
function updateElementComponentId(elementId, componentId) {
|
|
5071
|
-
(0,
|
|
5113
|
+
(0, import_editor_elements20.updateElementSettings)({
|
|
5072
5114
|
id: elementId,
|
|
5073
5115
|
props: {
|
|
5074
5116
|
component_instance: {
|
|
@@ -5171,7 +5213,7 @@ var updateExistingComponentsBeforeSave = async ({
|
|
|
5171
5213
|
};
|
|
5172
5214
|
|
|
5173
5215
|
// src/sync/cleanup-overridable-props-on-delete.ts
|
|
5174
|
-
var
|
|
5216
|
+
var import_editor_elements21 = require("@elementor/editor-elements");
|
|
5175
5217
|
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
5176
5218
|
var import_store78 = require("@elementor/store");
|
|
5177
5219
|
function initCleanupOverridablePropsOnDelete() {
|
|
@@ -5221,12 +5263,12 @@ function initCleanupOverridablePropsOnDelete() {
|
|
|
5221
5263
|
});
|
|
5222
5264
|
}
|
|
5223
5265
|
function collectDeletedElementIds(containers) {
|
|
5224
|
-
const elementIds = containers.filter(Boolean).flatMap((container) => [container, ...(0,
|
|
5266
|
+
const elementIds = containers.filter(Boolean).flatMap((container) => [container, ...(0, import_editor_elements21.getAllDescendants)(container)]).map((element) => element.model?.get?.("id") ?? element.id).filter((id2) => Boolean(id2));
|
|
5225
5267
|
return elementIds;
|
|
5226
5268
|
}
|
|
5227
5269
|
|
|
5228
5270
|
// src/sync/handle-component-edit-mode-container.ts
|
|
5229
|
-
var
|
|
5271
|
+
var import_editor_elements22 = require("@elementor/editor-elements");
|
|
5230
5272
|
var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
|
|
5231
5273
|
var V4_DEFAULT_CONTAINER_TYPE = "e-flexbox";
|
|
5232
5274
|
function initHandleComponentEditModeContainer() {
|
|
@@ -5276,11 +5318,11 @@ function initRedirectDropIntoComponent() {
|
|
|
5276
5318
|
});
|
|
5277
5319
|
}
|
|
5278
5320
|
function createEmptyTopLevelContainer(container) {
|
|
5279
|
-
const newContainer = (0,
|
|
5321
|
+
const newContainer = (0, import_editor_elements22.createElement)({
|
|
5280
5322
|
containerId: container.id,
|
|
5281
5323
|
model: { elType: V4_DEFAULT_CONTAINER_TYPE }
|
|
5282
5324
|
});
|
|
5283
|
-
(0,
|
|
5325
|
+
(0, import_editor_elements22.selectElement)(newContainer.id);
|
|
5284
5326
|
}
|
|
5285
5327
|
function getComponentContainer(container) {
|
|
5286
5328
|
const topLevelElement = container.children?.[0];
|
|
@@ -5313,7 +5355,7 @@ function load(result) {
|
|
|
5313
5355
|
}
|
|
5314
5356
|
|
|
5315
5357
|
// src/sync/regenerate-override-keys.ts
|
|
5316
|
-
var
|
|
5358
|
+
var import_editor_elements23 = require("@elementor/editor-elements");
|
|
5317
5359
|
var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
|
|
5318
5360
|
var import_utils10 = require("@elementor/utils");
|
|
5319
5361
|
function initRegenerateOverrideKeys() {
|
|
@@ -5334,11 +5376,11 @@ function regenerateOverrideKeysForContainers(result) {
|
|
|
5334
5376
|
});
|
|
5335
5377
|
}
|
|
5336
5378
|
function regenerateOverrideKeysRecursive(elementId) {
|
|
5337
|
-
const container = (0,
|
|
5379
|
+
const container = (0, import_editor_elements23.getContainer)(elementId);
|
|
5338
5380
|
if (!container) {
|
|
5339
5381
|
return;
|
|
5340
5382
|
}
|
|
5341
|
-
(0,
|
|
5383
|
+
(0, import_editor_elements23.getAllDescendants)(container).forEach(regenerateOverrideKeys);
|
|
5342
5384
|
}
|
|
5343
5385
|
function regenerateOverrideKeys(element) {
|
|
5344
5386
|
if (!isComponentInstance(element.model.toJSON())) {
|
|
@@ -5372,7 +5414,7 @@ function regenerateOverrideKeys(element) {
|
|
|
5372
5414
|
}
|
|
5373
5415
|
}
|
|
5374
5416
|
};
|
|
5375
|
-
(0,
|
|
5417
|
+
(0, import_editor_elements23.updateElementSettings)({
|
|
5376
5418
|
id: element.id,
|
|
5377
5419
|
props: { component_instance: newComponentInstance },
|
|
5378
5420
|
withHistory: false
|
|
@@ -5449,7 +5491,7 @@ function init() {
|
|
|
5449
5491
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
5450
5492
|
(0, import_editor_elements_panel.injectTab)({
|
|
5451
5493
|
id: "components",
|
|
5452
|
-
label: (0,
|
|
5494
|
+
label: (0, import_i18n31.__)("Components", "elementor"),
|
|
5453
5495
|
component: Components,
|
|
5454
5496
|
position: 1
|
|
5455
5497
|
});
|