@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.mjs
CHANGED
|
@@ -17,7 +17,7 @@ import { __registerPanel as registerPanel } from "@elementor/editor-panels";
|
|
|
17
17
|
import { stylesRepository } from "@elementor/editor-styles-repository";
|
|
18
18
|
import { registerDataHook as registerDataHook6 } from "@elementor/editor-v1-adapters";
|
|
19
19
|
import { __registerSlice as registerSlice } from "@elementor/store";
|
|
20
|
-
import { __ as
|
|
20
|
+
import { __ as __31 } from "@wordpress/i18n";
|
|
21
21
|
|
|
22
22
|
// src/component-instance-transformer.ts
|
|
23
23
|
import { createTransformer } from "@elementor/editor-canvas";
|
|
@@ -123,6 +123,12 @@ var slice = createSlice({
|
|
|
123
123
|
addUnpublished: (state, { payload }) => {
|
|
124
124
|
state.unpublishedData.unshift(payload);
|
|
125
125
|
},
|
|
126
|
+
removeUnpublished: (state, { payload }) => {
|
|
127
|
+
const uidsToRemove = Array.isArray(payload) ? payload : [payload];
|
|
128
|
+
state.unpublishedData = state.unpublishedData.filter(
|
|
129
|
+
(component) => !uidsToRemove.includes(component.uid)
|
|
130
|
+
);
|
|
131
|
+
},
|
|
126
132
|
resetUnpublished: (state) => {
|
|
127
133
|
state.unpublishedData = [];
|
|
128
134
|
},
|
|
@@ -136,6 +142,9 @@ var slice = createSlice({
|
|
|
136
142
|
addCreatedThisSession: (state, { payload }) => {
|
|
137
143
|
state.createdThisSession.push(payload);
|
|
138
144
|
},
|
|
145
|
+
removeCreatedThisSession: (state, { payload }) => {
|
|
146
|
+
state.createdThisSession = state.createdThisSession.filter((uid) => uid !== payload);
|
|
147
|
+
},
|
|
139
148
|
archive: (state, { payload }) => {
|
|
140
149
|
const component = state.data.find((comp) => comp.id === payload);
|
|
141
150
|
if (component) {
|
|
@@ -3000,7 +3009,7 @@ import { Form as FormElement, ThemeProvider as ThemeProvider3 } from "@elementor
|
|
|
3000
3009
|
import { ComponentsIcon as ComponentsIcon3 } from "@elementor/icons";
|
|
3001
3010
|
import { __getState as getState15 } from "@elementor/store";
|
|
3002
3011
|
import { Button as Button3, FormLabel as FormLabel2, Grid as Grid2, Popover as Popover3, Stack as Stack10, TextField as TextField3, Typography as Typography10 } from "@elementor/ui";
|
|
3003
|
-
import { __ as
|
|
3012
|
+
import { __ as __23 } from "@wordpress/i18n";
|
|
3004
3013
|
|
|
3005
3014
|
// src/prevent-non-atomic-nesting.ts
|
|
3006
3015
|
import { isAtomicWidget } from "@elementor/editor-canvas";
|
|
@@ -3121,9 +3130,11 @@ function findNonAtomicElementsInElement(element) {
|
|
|
3121
3130
|
}
|
|
3122
3131
|
|
|
3123
3132
|
// src/store/actions/create-unpublished-component.ts
|
|
3133
|
+
import { createElements, deleteElement, getContainer as getContainer3 } from "@elementor/editor-elements";
|
|
3124
3134
|
import { __privateRunCommand as runCommand3 } from "@elementor/editor-v1-adapters";
|
|
3125
3135
|
import { __dispatch as dispatch12 } from "@elementor/store";
|
|
3126
3136
|
import { generateUniqueId as generateUniqueId3 } from "@elementor/utils";
|
|
3137
|
+
import { __ as __22 } from "@wordpress/i18n";
|
|
3127
3138
|
async function createUnpublishedComponent({
|
|
3128
3139
|
name,
|
|
3129
3140
|
element,
|
|
@@ -3135,6 +3146,13 @@ async function createUnpublishedComponent({
|
|
|
3135
3146
|
const generatedUid = uid ?? generateUniqueId3("component");
|
|
3136
3147
|
const componentBase = { uid: generatedUid, name };
|
|
3137
3148
|
const elementDataWithOverridablesReverted = revertAllOverridablesInElementData(element);
|
|
3149
|
+
const container = getContainer3(element.id);
|
|
3150
|
+
const modelFromContainer = container?.model?.toJSON?.();
|
|
3151
|
+
const originalElement = {
|
|
3152
|
+
model: modelFromContainer ?? element,
|
|
3153
|
+
parentId: container?.parent?.id ?? "",
|
|
3154
|
+
index: container?.view?._index ?? 0
|
|
3155
|
+
};
|
|
3138
3156
|
dispatch12(
|
|
3139
3157
|
slice.actions.addUnpublished({
|
|
3140
3158
|
...componentBase,
|
|
@@ -3151,9 +3169,30 @@ async function createUnpublishedComponent({
|
|
|
3151
3169
|
component_name: name,
|
|
3152
3170
|
...eventData
|
|
3153
3171
|
});
|
|
3154
|
-
|
|
3172
|
+
try {
|
|
3173
|
+
await runCommand3("document/save/auto");
|
|
3174
|
+
} catch (error) {
|
|
3175
|
+
restoreOriginalElement(originalElement, componentInstance.id);
|
|
3176
|
+
dispatch12(slice.actions.removeUnpublished(generatedUid));
|
|
3177
|
+
dispatch12(slice.actions.removeCreatedThisSession(generatedUid));
|
|
3178
|
+
throw error;
|
|
3179
|
+
}
|
|
3155
3180
|
return { uid: generatedUid, instanceId: componentInstance.id };
|
|
3156
3181
|
}
|
|
3182
|
+
function restoreOriginalElement(originalElement, componentInstanceId) {
|
|
3183
|
+
deleteElement({ elementId: componentInstanceId, options: { useHistory: false } });
|
|
3184
|
+
const clonedModel = structuredClone(originalElement.model);
|
|
3185
|
+
createElements({
|
|
3186
|
+
title: __22("Restore Element", "elementor"),
|
|
3187
|
+
elements: [
|
|
3188
|
+
{
|
|
3189
|
+
containerId: originalElement.parentId,
|
|
3190
|
+
model: clonedModel,
|
|
3191
|
+
options: { at: originalElement.index }
|
|
3192
|
+
}
|
|
3193
|
+
]
|
|
3194
|
+
});
|
|
3195
|
+
}
|
|
3157
3196
|
|
|
3158
3197
|
// src/components/create-component-form/hooks/use-form.ts
|
|
3159
3198
|
import { useMemo as useMemo2, useState as useState7 } from "react";
|
|
@@ -3281,17 +3320,18 @@ function CreateComponentForm() {
|
|
|
3281
3320
|
}
|
|
3282
3321
|
notify3({
|
|
3283
3322
|
type: "success",
|
|
3284
|
-
message:
|
|
3323
|
+
message: __23("Component created successfully.", "elementor"),
|
|
3285
3324
|
id: `component-saved-successfully-${uid}`
|
|
3286
3325
|
});
|
|
3287
3326
|
resetAndClosePopup();
|
|
3288
3327
|
} catch {
|
|
3289
|
-
const errorMessage =
|
|
3328
|
+
const errorMessage = __23("Failed to create component. Please try again.", "elementor");
|
|
3290
3329
|
notify3({
|
|
3291
3330
|
type: "error",
|
|
3292
3331
|
message: errorMessage,
|
|
3293
3332
|
id: "component-save-failed"
|
|
3294
3333
|
});
|
|
3334
|
+
resetAndClosePopup();
|
|
3295
3335
|
}
|
|
3296
3336
|
};
|
|
3297
3337
|
const resetAndClosePopup = () => {
|
|
@@ -3331,7 +3371,7 @@ function shouldOpenForm(element, componentsCount) {
|
|
|
3331
3371
|
shouldOpen: false,
|
|
3332
3372
|
notification: {
|
|
3333
3373
|
type: "default",
|
|
3334
|
-
message:
|
|
3374
|
+
message: __23(
|
|
3335
3375
|
"Components require atomic elements only. Remove widgets to create this component.",
|
|
3336
3376
|
"elementor"
|
|
3337
3377
|
),
|
|
@@ -3345,7 +3385,7 @@ function shouldOpenForm(element, componentsCount) {
|
|
|
3345
3385
|
notification: {
|
|
3346
3386
|
type: "default",
|
|
3347
3387
|
/* translators: %s is the maximum number of components */
|
|
3348
|
-
message:
|
|
3388
|
+
message: __23(
|
|
3349
3389
|
`You've reached the limit of %s components. Please remove an existing one to create a new component.`,
|
|
3350
3390
|
"elementor"
|
|
3351
3391
|
).replace("%s", MAX_COMPONENTS.toString()),
|
|
@@ -3381,10 +3421,10 @@ var Form2 = ({
|
|
|
3381
3421
|
}
|
|
3382
3422
|
};
|
|
3383
3423
|
const texts = {
|
|
3384
|
-
heading:
|
|
3385
|
-
name:
|
|
3386
|
-
cancel:
|
|
3387
|
-
create:
|
|
3424
|
+
heading: __23("Create component", "elementor"),
|
|
3425
|
+
name: __23("Name", "elementor"),
|
|
3426
|
+
cancel: __23("Cancel", "elementor"),
|
|
3427
|
+
create: __23("Create", "elementor")
|
|
3388
3428
|
};
|
|
3389
3429
|
const nameInputId = "component-name";
|
|
3390
3430
|
return /* @__PURE__ */ React19.createElement(FormElement, { onSubmit: handleSubmit }, /* @__PURE__ */ React19.createElement(Stack10, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React19.createElement(
|
|
@@ -3440,7 +3480,7 @@ function updateCurrentComponent({
|
|
|
3440
3480
|
import * as React20 from "react";
|
|
3441
3481
|
import { useEffect as useEffect4 } from "react";
|
|
3442
3482
|
import { createPortal } from "react-dom";
|
|
3443
|
-
import { __ as
|
|
3483
|
+
import { __ as __24 } from "@wordpress/i18n";
|
|
3444
3484
|
|
|
3445
3485
|
// src/hooks/use-canvas-document.ts
|
|
3446
3486
|
import {
|
|
@@ -3570,7 +3610,7 @@ function Backdrop({
|
|
|
3570
3610
|
onKeyDown: handleKeyDown,
|
|
3571
3611
|
role: "button",
|
|
3572
3612
|
tabIndex: 0,
|
|
3573
|
-
"aria-label":
|
|
3613
|
+
"aria-label": __24("Exit component editing mode", "elementor")
|
|
3574
3614
|
}
|
|
3575
3615
|
);
|
|
3576
3616
|
}
|
|
@@ -3718,18 +3758,18 @@ import * as React22 from "react";
|
|
|
3718
3758
|
import { closeDialog, openDialog } from "@elementor/editor-ui";
|
|
3719
3759
|
import { InfoCircleFilledIcon } from "@elementor/icons";
|
|
3720
3760
|
import { Box as Box13, Button as Button4, DialogActions, DialogContent, DialogHeader, Icon, Stack as Stack11, Typography as Typography11 } from "@elementor/ui";
|
|
3721
|
-
import { __ as
|
|
3761
|
+
import { __ as __25 } from "@wordpress/i18n";
|
|
3722
3762
|
var openEditModeDialog = (lockedBy) => {
|
|
3723
3763
|
openDialog({
|
|
3724
3764
|
component: /* @__PURE__ */ React22.createElement(EditModeDialog, { lockedBy })
|
|
3725
3765
|
});
|
|
3726
3766
|
};
|
|
3727
3767
|
var EditModeDialog = ({ lockedBy }) => {
|
|
3728
|
-
const content =
|
|
3729
|
-
return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React22.createElement(Box13, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React22.createElement(Icon, { color: "secondary" }, /* @__PURE__ */ React22.createElement(InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React22.createElement(Typography11, { variant: "subtitle1" }, content))), /* @__PURE__ */ React22.createElement(DialogContent, null, /* @__PURE__ */ React22.createElement(Stack11, { spacing: 2, direction: "column" }, /* @__PURE__ */ React22.createElement(Typography11, { variant: "body2" },
|
|
3768
|
+
const content = __25("%s is currently editing this document", "elementor").replace("%s", lockedBy);
|
|
3769
|
+
return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React22.createElement(Box13, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React22.createElement(Icon, { color: "secondary" }, /* @__PURE__ */ React22.createElement(InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React22.createElement(Typography11, { variant: "subtitle1" }, content))), /* @__PURE__ */ React22.createElement(DialogContent, null, /* @__PURE__ */ React22.createElement(Stack11, { spacing: 2, direction: "column" }, /* @__PURE__ */ React22.createElement(Typography11, { variant: "body2" }, __25(
|
|
3730
3770
|
"You can wait for them to finish or reach out to coordinate your changes together.",
|
|
3731
3771
|
"elementor"
|
|
3732
|
-
)), /* @__PURE__ */ React22.createElement(DialogActions, null, /* @__PURE__ */ React22.createElement(Button4, { color: "secondary", variant: "contained", onClick: closeDialog },
|
|
3772
|
+
)), /* @__PURE__ */ React22.createElement(DialogActions, null, /* @__PURE__ */ React22.createElement(Button4, { color: "secondary", variant: "contained", onClick: closeDialog }, __25("Close", "elementor"))))));
|
|
3733
3773
|
};
|
|
3734
3774
|
|
|
3735
3775
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
@@ -3741,7 +3781,7 @@ import { PanelBody as PanelBody2, PanelHeader as PanelHeader3, PanelHeaderTitle
|
|
|
3741
3781
|
import { EllipsisWithTooltip as EllipsisWithTooltip4 } from "@elementor/editor-ui";
|
|
3742
3782
|
import { ComponentsIcon as ComponentsIcon4, PencilIcon as PencilIcon2 } from "@elementor/icons";
|
|
3743
3783
|
import { Divider as Divider4, IconButton as IconButton6, Stack as Stack16, Tooltip as Tooltip5 } from "@elementor/ui";
|
|
3744
|
-
import { __ as
|
|
3784
|
+
import { __ as __27 } from "@wordpress/i18n";
|
|
3745
3785
|
|
|
3746
3786
|
// src/hooks/use-component-instance-settings.ts
|
|
3747
3787
|
import { useElement } from "@elementor/editor-editing-panel";
|
|
@@ -3756,13 +3796,13 @@ function useComponentInstanceSettings() {
|
|
|
3756
3796
|
import * as React23 from "react";
|
|
3757
3797
|
import { ComponentPropListIcon as ComponentPropListIcon4, PencilIcon } from "@elementor/icons";
|
|
3758
3798
|
import { Button as Button5, Stack as Stack12, Typography as Typography12 } from "@elementor/ui";
|
|
3759
|
-
import { __ as
|
|
3799
|
+
import { __ as __26 } from "@wordpress/i18n";
|
|
3760
3800
|
var EmptyState2 = ({ onEditComponent }) => {
|
|
3761
3801
|
const { canEdit } = useComponentsPermissions();
|
|
3762
|
-
const message = canEdit ?
|
|
3802
|
+
const message = canEdit ? __26(
|
|
3763
3803
|
"Edit the component to add properties, manage them or update the design across all instances.",
|
|
3764
3804
|
"elementor"
|
|
3765
|
-
) :
|
|
3805
|
+
) : __26(
|
|
3766
3806
|
"With your current role, you cannot edit this component. Contact an administrator to add properties.",
|
|
3767
3807
|
"elementor"
|
|
3768
3808
|
);
|
|
@@ -3777,9 +3817,9 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
3777
3817
|
gap: 1.5
|
|
3778
3818
|
},
|
|
3779
3819
|
/* @__PURE__ */ React23.createElement(ComponentPropListIcon4, { fontSize: "large" }),
|
|
3780
|
-
/* @__PURE__ */ React23.createElement(Typography12, { align: "center", variant: "subtitle2" },
|
|
3820
|
+
/* @__PURE__ */ React23.createElement(Typography12, { align: "center", variant: "subtitle2" }, __26("No properties yet", "elementor")),
|
|
3781
3821
|
/* @__PURE__ */ React23.createElement(Typography12, { align: "center", variant: "caption", maxWidth: "170px" }, message),
|
|
3782
|
-
canEdit && /* @__PURE__ */ React23.createElement(Button5, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React23.createElement(PencilIcon, { fontSize: "small" }),
|
|
3822
|
+
canEdit && /* @__PURE__ */ React23.createElement(Button5, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React23.createElement(PencilIcon, { fontSize: "small" }), __26("Edit component", "elementor"))
|
|
3783
3823
|
);
|
|
3784
3824
|
};
|
|
3785
3825
|
|
|
@@ -3802,7 +3842,7 @@ import {
|
|
|
3802
3842
|
SettingsField,
|
|
3803
3843
|
useElement as useElement2
|
|
3804
3844
|
} from "@elementor/editor-editing-panel";
|
|
3805
|
-
import { getContainer as
|
|
3845
|
+
import { getContainer as getContainer4, getElementType as getElementType3 } from "@elementor/editor-elements";
|
|
3806
3846
|
import { Stack as Stack14 } from "@elementor/ui";
|
|
3807
3847
|
|
|
3808
3848
|
// src/hooks/use-controls-by-widget-type.ts
|
|
@@ -4011,7 +4051,7 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
4011
4051
|
overridableProp.label
|
|
4012
4052
|
);
|
|
4013
4053
|
const { elementId, widgetType, elType, propKey } = overridableProp.originPropFields ?? overridableProp;
|
|
4014
|
-
const elementContainer =
|
|
4054
|
+
const elementContainer = getContainer4(elementId);
|
|
4015
4055
|
if (!elementContainer) {
|
|
4016
4056
|
throw new OverrideControlInnerElementNotFoundError({
|
|
4017
4057
|
context: { componentId: componentInstanceId, elementId }
|
|
@@ -4174,7 +4214,7 @@ function InstanceEditingPanel() {
|
|
|
4174
4214
|
if (!componentId || !overridableProps || !component) {
|
|
4175
4215
|
return null;
|
|
4176
4216
|
}
|
|
4177
|
-
const panelTitle =
|
|
4217
|
+
const panelTitle = __27("Edit %s", "elementor").replace("%s", component.name);
|
|
4178
4218
|
const handleEditComponent = () => switchToComponent(componentId, componentInstanceId);
|
|
4179
4219
|
const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
|
|
4180
4220
|
const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
|
|
@@ -4273,7 +4313,7 @@ import { useBoundProp as useBoundProp3 } from "@elementor/editor-controls";
|
|
|
4273
4313
|
import { useElement as useElement4 } from "@elementor/editor-editing-panel";
|
|
4274
4314
|
import { getWidgetsCache as getWidgetsCache3 } from "@elementor/editor-elements";
|
|
4275
4315
|
import { bindPopover as bindPopover2, bindTrigger as bindTrigger4, Popover as Popover4, Tooltip as Tooltip6, usePopupState as usePopupState4 } from "@elementor/ui";
|
|
4276
|
-
import { __ as
|
|
4316
|
+
import { __ as __29 } from "@wordpress/i18n";
|
|
4277
4317
|
|
|
4278
4318
|
// src/store/actions/set-overridable-prop.ts
|
|
4279
4319
|
import { __dispatch as dispatch14, __getState as getState17 } from "@elementor/store";
|
|
@@ -4358,7 +4398,7 @@ import * as React30 from "react";
|
|
|
4358
4398
|
import { forwardRef as forwardRef2 } from "react";
|
|
4359
4399
|
import { CheckIcon, PlusIcon } from "@elementor/icons";
|
|
4360
4400
|
import { Box as Box15, styled as styled4 } from "@elementor/ui";
|
|
4361
|
-
import { __ as
|
|
4401
|
+
import { __ as __28 } from "@wordpress/i18n";
|
|
4362
4402
|
var SIZE2 = "tiny";
|
|
4363
4403
|
var IconContainer = styled4(Box15)`
|
|
4364
4404
|
pointer-events: none;
|
|
@@ -4418,7 +4458,7 @@ var Indicator2 = forwardRef2(({ isOpen, isOverridable, ...props }, ref) => /* @_
|
|
|
4418
4458
|
IconContainer,
|
|
4419
4459
|
{
|
|
4420
4460
|
className: "icon",
|
|
4421
|
-
"aria-label": isOverridable ?
|
|
4461
|
+
"aria-label": isOverridable ? __28("Overridable property", "elementor") : __28("Make prop overridable", "elementor")
|
|
4422
4462
|
},
|
|
4423
4463
|
isOverridable ? /* @__PURE__ */ React30.createElement(CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React30.createElement(PlusIcon, { fontSize: SIZE2 })
|
|
4424
4464
|
)));
|
|
@@ -4490,7 +4530,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4490
4530
|
popupState.close();
|
|
4491
4531
|
};
|
|
4492
4532
|
const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
|
|
4493
|
-
return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(Tooltip6, { placement: "top", title:
|
|
4533
|
+
return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(Tooltip6, { placement: "top", title: __29("Override Property", "elementor") }, /* @__PURE__ */ React31.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React31.createElement(
|
|
4494
4534
|
Popover4,
|
|
4495
4535
|
{
|
|
4496
4536
|
disableScrollLock: true,
|
|
@@ -4530,7 +4570,7 @@ import { getMCPByDomain as getMCPByDomain2 } from "@elementor/editor-mcp";
|
|
|
4530
4570
|
|
|
4531
4571
|
// src/mcp/save-as-component-tool.ts
|
|
4532
4572
|
import { DOCUMENT_STRUCTURE_URI, WIDGET_SCHEMA_URI } from "@elementor/editor-canvas";
|
|
4533
|
-
import { getContainer as
|
|
4573
|
+
import { getContainer as getContainer5, getElementType as getElementType4, getWidgetsCache as getWidgetsCache4 } from "@elementor/editor-elements";
|
|
4534
4574
|
import { getMCPByDomain, toolPrompts } from "@elementor/editor-mcp";
|
|
4535
4575
|
import { AxiosError } from "@elementor/http-client";
|
|
4536
4576
|
import { z as z6 } from "@elementor/schema";
|
|
@@ -4568,7 +4608,7 @@ var ERROR_MESSAGES3 = {
|
|
|
4568
4608
|
var handleSaveAsComponent = async (params) => {
|
|
4569
4609
|
const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
|
|
4570
4610
|
const validElementTypes = getValidElementTypes();
|
|
4571
|
-
const container =
|
|
4611
|
+
const container = getContainer5(elementId);
|
|
4572
4612
|
if (!container) {
|
|
4573
4613
|
throw new Error(ERROR_MESSAGES3.ELEMENT_NOT_FOUND);
|
|
4574
4614
|
}
|
|
@@ -4882,11 +4922,11 @@ import { getAllDescendants as getAllDescendants4 } from "@elementor/editor-eleme
|
|
|
4882
4922
|
import { notify as notify4 } from "@elementor/editor-notifications";
|
|
4883
4923
|
import { blockCommand as blockCommand2 } from "@elementor/editor-v1-adapters";
|
|
4884
4924
|
import { __getState as getState19 } from "@elementor/store";
|
|
4885
|
-
import { __ as
|
|
4925
|
+
import { __ as __30 } from "@wordpress/i18n";
|
|
4886
4926
|
var COMPONENT_TYPE = "e-component";
|
|
4887
4927
|
var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
4888
4928
|
type: "default",
|
|
4889
|
-
message:
|
|
4929
|
+
message: __30("Can't add this component - components that contain each other can't be nested.", "elementor"),
|
|
4890
4930
|
id: "circular-component-nesting-blocked"
|
|
4891
4931
|
};
|
|
4892
4932
|
function initCircularNestingPrevention() {
|
|
@@ -5059,7 +5099,9 @@ async function createComponentsBeforeSave({
|
|
|
5059
5099
|
);
|
|
5060
5100
|
dispatch17(slice.actions.resetUnpublished());
|
|
5061
5101
|
} catch (error) {
|
|
5062
|
-
|
|
5102
|
+
const failedUids = unpublishedComponents.map((component) => component.uid);
|
|
5103
|
+
dispatch17(slice.actions.removeUnpublished(failedUids));
|
|
5104
|
+
throw new Error(`Failed to publish components: ${error}`);
|
|
5063
5105
|
}
|
|
5064
5106
|
}
|
|
5065
5107
|
async function createComponents(components, status) {
|
|
@@ -5347,7 +5389,7 @@ function load(result) {
|
|
|
5347
5389
|
}
|
|
5348
5390
|
|
|
5349
5391
|
// src/sync/regenerate-override-keys.ts
|
|
5350
|
-
import { getAllDescendants as getAllDescendants6, getContainer as
|
|
5392
|
+
import { getAllDescendants as getAllDescendants6, getContainer as getContainer6, updateElementSettings as updateElementSettings3 } from "@elementor/editor-elements";
|
|
5351
5393
|
import { registerDataHook as registerDataHook4 } from "@elementor/editor-v1-adapters";
|
|
5352
5394
|
import { generateUniqueId as generateUniqueId6 } from "@elementor/utils";
|
|
5353
5395
|
function initRegenerateOverrideKeys() {
|
|
@@ -5368,7 +5410,7 @@ function regenerateOverrideKeysForContainers(result) {
|
|
|
5368
5410
|
});
|
|
5369
5411
|
}
|
|
5370
5412
|
function regenerateOverrideKeysRecursive(elementId) {
|
|
5371
|
-
const container =
|
|
5413
|
+
const container = getContainer6(elementId);
|
|
5372
5414
|
if (!container) {
|
|
5373
5415
|
return;
|
|
5374
5416
|
}
|
|
@@ -5483,7 +5525,7 @@ function init() {
|
|
|
5483
5525
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
5484
5526
|
injectTab({
|
|
5485
5527
|
id: "components",
|
|
5486
|
-
label:
|
|
5528
|
+
label: __31("Components", "elementor"),
|
|
5487
5529
|
component: Components,
|
|
5488
5530
|
position: 1
|
|
5489
5531
|
});
|