@elementor/editor-components 3.35.0-488 → 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 +110 -70
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +84 -44
- 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/actions/load-components-assets.ts +4 -5
- package/src/store/actions/load-components-overridable-props.ts +1 -1
- 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) {
|
|
@@ -2401,7 +2410,7 @@ function loadComponentsOverridableProps(componentIds) {
|
|
|
2401
2410
|
if (!componentIds.length) {
|
|
2402
2411
|
return;
|
|
2403
2412
|
}
|
|
2404
|
-
componentIds.
|
|
2413
|
+
return Promise.all(componentIds.map(loadComponentOverrides));
|
|
2405
2414
|
}
|
|
2406
2415
|
async function loadComponentOverrides(componentId) {
|
|
2407
2416
|
const isOverridablePropsLoaded = selectIsOverridablePropsLoaded((0, import_store37.__getState)(), componentId);
|
|
@@ -2455,11 +2464,9 @@ function extractStylesFromElement(element) {
|
|
|
2455
2464
|
// src/store/actions/load-components-assets.ts
|
|
2456
2465
|
async function loadComponentsAssets(elements) {
|
|
2457
2466
|
const documents = await getComponentDocuments(elements);
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
loadComponentsStyles(documents)
|
|
2462
|
-
]);
|
|
2467
|
+
updateDocumentState(documents);
|
|
2468
|
+
loadComponentsStyles(documents);
|
|
2469
|
+
await loadComponentsOverridableProps([...documents.keys()]);
|
|
2463
2470
|
}
|
|
2464
2471
|
function updateDocumentState(documents) {
|
|
2465
2472
|
const isDrafted = [...documents.values()].some(import_editor_documents9.isDocumentDirty);
|
|
@@ -2980,13 +2987,13 @@ var OVERRIDABLE_PROP_REPLACEMENT_ID = "overridable-prop";
|
|
|
2980
2987
|
// src/components/create-component-form/create-component-form.tsx
|
|
2981
2988
|
var React19 = __toESM(require("react"));
|
|
2982
2989
|
var import_react10 = require("react");
|
|
2983
|
-
var
|
|
2990
|
+
var import_editor_elements11 = require("@elementor/editor-elements");
|
|
2984
2991
|
var import_editor_notifications3 = require("@elementor/editor-notifications");
|
|
2985
2992
|
var import_editor_ui11 = require("@elementor/editor-ui");
|
|
2986
2993
|
var import_icons11 = require("@elementor/icons");
|
|
2987
2994
|
var import_store47 = require("@elementor/store");
|
|
2988
2995
|
var import_ui16 = require("@elementor/ui");
|
|
2989
|
-
var
|
|
2996
|
+
var import_i18n23 = require("@wordpress/i18n");
|
|
2990
2997
|
|
|
2991
2998
|
// src/prevent-non-atomic-nesting.ts
|
|
2992
2999
|
var import_editor_canvas6 = require("@elementor/editor-canvas");
|
|
@@ -3107,9 +3114,11 @@ function findNonAtomicElementsInElement(element) {
|
|
|
3107
3114
|
}
|
|
3108
3115
|
|
|
3109
3116
|
// src/store/actions/create-unpublished-component.ts
|
|
3117
|
+
var import_editor_elements10 = require("@elementor/editor-elements");
|
|
3110
3118
|
var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
|
|
3111
3119
|
var import_store45 = require("@elementor/store");
|
|
3112
3120
|
var import_utils4 = require("@elementor/utils");
|
|
3121
|
+
var import_i18n22 = require("@wordpress/i18n");
|
|
3113
3122
|
async function createUnpublishedComponent({
|
|
3114
3123
|
name,
|
|
3115
3124
|
element,
|
|
@@ -3121,6 +3130,13 @@ async function createUnpublishedComponent({
|
|
|
3121
3130
|
const generatedUid = uid ?? (0, import_utils4.generateUniqueId)("component");
|
|
3122
3131
|
const componentBase = { uid: generatedUid, name };
|
|
3123
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
|
+
};
|
|
3124
3140
|
(0, import_store45.__dispatch)(
|
|
3125
3141
|
slice.actions.addUnpublished({
|
|
3126
3142
|
...componentBase,
|
|
@@ -3137,9 +3153,30 @@ async function createUnpublishedComponent({
|
|
|
3137
3153
|
component_name: name,
|
|
3138
3154
|
...eventData
|
|
3139
3155
|
});
|
|
3140
|
-
|
|
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
|
+
}
|
|
3141
3164
|
return { uid: generatedUid, instanceId: componentInstance.id };
|
|
3142
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
|
+
}
|
|
3143
3180
|
|
|
3144
3181
|
// src/components/create-component-form/hooks/use-form.ts
|
|
3145
3182
|
var import_react9 = require("react");
|
|
@@ -3234,7 +3271,7 @@ function CreateComponentForm() {
|
|
|
3234
3271
|
(0, import_editor_notifications3.notify)(notification);
|
|
3235
3272
|
return;
|
|
3236
3273
|
}
|
|
3237
|
-
setElement({ element: event.detail.element, elementLabel: (0,
|
|
3274
|
+
setElement({ element: event.detail.element, elementLabel: (0, import_editor_elements11.getElementLabel)(event.detail.element.id) });
|
|
3238
3275
|
setAnchorPosition(event.detail.anchorPosition);
|
|
3239
3276
|
eventData.current = getComponentEventData(event.detail.element, event.detail.options);
|
|
3240
3277
|
trackComponentEvent({
|
|
@@ -3267,17 +3304,18 @@ function CreateComponentForm() {
|
|
|
3267
3304
|
}
|
|
3268
3305
|
(0, import_editor_notifications3.notify)({
|
|
3269
3306
|
type: "success",
|
|
3270
|
-
message: (0,
|
|
3307
|
+
message: (0, import_i18n23.__)("Component created successfully.", "elementor"),
|
|
3271
3308
|
id: `component-saved-successfully-${uid}`
|
|
3272
3309
|
});
|
|
3273
3310
|
resetAndClosePopup();
|
|
3274
3311
|
} catch {
|
|
3275
|
-
const errorMessage = (0,
|
|
3312
|
+
const errorMessage = (0, import_i18n23.__)("Failed to create component. Please try again.", "elementor");
|
|
3276
3313
|
(0, import_editor_notifications3.notify)({
|
|
3277
3314
|
type: "error",
|
|
3278
3315
|
message: errorMessage,
|
|
3279
3316
|
id: "component-save-failed"
|
|
3280
3317
|
});
|
|
3318
|
+
resetAndClosePopup();
|
|
3281
3319
|
}
|
|
3282
3320
|
};
|
|
3283
3321
|
const resetAndClosePopup = () => {
|
|
@@ -3317,7 +3355,7 @@ function shouldOpenForm(element, componentsCount) {
|
|
|
3317
3355
|
shouldOpen: false,
|
|
3318
3356
|
notification: {
|
|
3319
3357
|
type: "default",
|
|
3320
|
-
message: (0,
|
|
3358
|
+
message: (0, import_i18n23.__)(
|
|
3321
3359
|
"Components require atomic elements only. Remove widgets to create this component.",
|
|
3322
3360
|
"elementor"
|
|
3323
3361
|
),
|
|
@@ -3331,7 +3369,7 @@ function shouldOpenForm(element, componentsCount) {
|
|
|
3331
3369
|
notification: {
|
|
3332
3370
|
type: "default",
|
|
3333
3371
|
/* translators: %s is the maximum number of components */
|
|
3334
|
-
message: (0,
|
|
3372
|
+
message: (0, import_i18n23.__)(
|
|
3335
3373
|
`You've reached the limit of %s components. Please remove an existing one to create a new component.`,
|
|
3336
3374
|
"elementor"
|
|
3337
3375
|
).replace("%s", MAX_COMPONENTS.toString()),
|
|
@@ -3367,10 +3405,10 @@ var Form2 = ({
|
|
|
3367
3405
|
}
|
|
3368
3406
|
};
|
|
3369
3407
|
const texts = {
|
|
3370
|
-
heading: (0,
|
|
3371
|
-
name: (0,
|
|
3372
|
-
cancel: (0,
|
|
3373
|
-
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")
|
|
3374
3412
|
};
|
|
3375
3413
|
const nameInputId = "component-name";
|
|
3376
3414
|
return /* @__PURE__ */ React19.createElement(import_editor_ui11.Form, { onSubmit: handleSubmit }, /* @__PURE__ */ React19.createElement(import_ui16.Stack, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React19.createElement(
|
|
@@ -3426,7 +3464,7 @@ function updateCurrentComponent({
|
|
|
3426
3464
|
var React20 = __toESM(require("react"));
|
|
3427
3465
|
var import_react12 = require("react");
|
|
3428
3466
|
var import_react_dom = require("react-dom");
|
|
3429
|
-
var
|
|
3467
|
+
var import_i18n24 = require("@wordpress/i18n");
|
|
3430
3468
|
|
|
3431
3469
|
// src/hooks/use-canvas-document.ts
|
|
3432
3470
|
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
|
|
@@ -3552,7 +3590,7 @@ function Backdrop({
|
|
|
3552
3590
|
onKeyDown: handleKeyDown,
|
|
3553
3591
|
role: "button",
|
|
3554
3592
|
tabIndex: 0,
|
|
3555
|
-
"aria-label": (0,
|
|
3593
|
+
"aria-label": (0, import_i18n24.__)("Exit component editing mode", "elementor")
|
|
3556
3594
|
}
|
|
3557
3595
|
);
|
|
3558
3596
|
}
|
|
@@ -3700,37 +3738,37 @@ var React22 = __toESM(require("react"));
|
|
|
3700
3738
|
var import_editor_ui12 = require("@elementor/editor-ui");
|
|
3701
3739
|
var import_icons12 = require("@elementor/icons");
|
|
3702
3740
|
var import_ui17 = require("@elementor/ui");
|
|
3703
|
-
var
|
|
3741
|
+
var import_i18n25 = require("@wordpress/i18n");
|
|
3704
3742
|
var openEditModeDialog = (lockedBy) => {
|
|
3705
3743
|
(0, import_editor_ui12.openDialog)({
|
|
3706
3744
|
component: /* @__PURE__ */ React22.createElement(EditModeDialog, { lockedBy })
|
|
3707
3745
|
});
|
|
3708
3746
|
};
|
|
3709
3747
|
var EditModeDialog = ({ lockedBy }) => {
|
|
3710
|
-
const content = (0,
|
|
3711
|
-
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.__)(
|
|
3712
3750
|
"You can wait for them to finish or reach out to coordinate your changes together.",
|
|
3713
3751
|
"elementor"
|
|
3714
|
-
)), /* @__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"))))));
|
|
3715
3753
|
};
|
|
3716
3754
|
|
|
3717
3755
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
3718
3756
|
var React28 = __toESM(require("react"));
|
|
3719
3757
|
var import_editor_controls4 = require("@elementor/editor-controls");
|
|
3720
3758
|
var import_editor_editing_panel5 = require("@elementor/editor-editing-panel");
|
|
3721
|
-
var
|
|
3759
|
+
var import_editor_elements16 = require("@elementor/editor-elements");
|
|
3722
3760
|
var import_editor_panels4 = require("@elementor/editor-panels");
|
|
3723
3761
|
var import_editor_ui14 = require("@elementor/editor-ui");
|
|
3724
3762
|
var import_icons14 = require("@elementor/icons");
|
|
3725
3763
|
var import_ui22 = require("@elementor/ui");
|
|
3726
|
-
var
|
|
3764
|
+
var import_i18n27 = require("@wordpress/i18n");
|
|
3727
3765
|
|
|
3728
3766
|
// src/hooks/use-component-instance-settings.ts
|
|
3729
3767
|
var import_editor_editing_panel2 = require("@elementor/editor-editing-panel");
|
|
3730
|
-
var
|
|
3768
|
+
var import_editor_elements12 = require("@elementor/editor-elements");
|
|
3731
3769
|
function useComponentInstanceSettings() {
|
|
3732
3770
|
const { element } = (0, import_editor_editing_panel2.useElement)();
|
|
3733
|
-
const settings = (0,
|
|
3771
|
+
const settings = (0, import_editor_elements12.useElementSetting)(element.id, "component_instance");
|
|
3734
3772
|
return componentInstancePropTypeUtil.extract(settings);
|
|
3735
3773
|
}
|
|
3736
3774
|
|
|
@@ -3738,13 +3776,13 @@ function useComponentInstanceSettings() {
|
|
|
3738
3776
|
var React23 = __toESM(require("react"));
|
|
3739
3777
|
var import_icons13 = require("@elementor/icons");
|
|
3740
3778
|
var import_ui18 = require("@elementor/ui");
|
|
3741
|
-
var
|
|
3779
|
+
var import_i18n26 = require("@wordpress/i18n");
|
|
3742
3780
|
var EmptyState2 = ({ onEditComponent }) => {
|
|
3743
3781
|
const { canEdit } = useComponentsPermissions();
|
|
3744
|
-
const message = canEdit ? (0,
|
|
3782
|
+
const message = canEdit ? (0, import_i18n26.__)(
|
|
3745
3783
|
"Edit the component to add properties, manage them or update the design across all instances.",
|
|
3746
3784
|
"elementor"
|
|
3747
|
-
) : (0,
|
|
3785
|
+
) : (0, import_i18n26.__)(
|
|
3748
3786
|
"With your current role, you cannot edit this component. Contact an administrator to add properties.",
|
|
3749
3787
|
"elementor"
|
|
3750
3788
|
);
|
|
@@ -3759,9 +3797,9 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
3759
3797
|
gap: 1.5
|
|
3760
3798
|
},
|
|
3761
3799
|
/* @__PURE__ */ React23.createElement(import_icons13.ComponentPropListIcon, { fontSize: "large" }),
|
|
3762
|
-
/* @__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")),
|
|
3763
3801
|
/* @__PURE__ */ React23.createElement(import_ui18.Typography, { align: "center", variant: "caption", maxWidth: "170px" }, message),
|
|
3764
|
-
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"))
|
|
3765
3803
|
);
|
|
3766
3804
|
};
|
|
3767
3805
|
|
|
@@ -3776,13 +3814,13 @@ var import_ui21 = require("@elementor/ui");
|
|
|
3776
3814
|
var React26 = __toESM(require("react"));
|
|
3777
3815
|
var import_editor_controls3 = require("@elementor/editor-controls");
|
|
3778
3816
|
var import_editor_editing_panel3 = require("@elementor/editor-editing-panel");
|
|
3779
|
-
var
|
|
3817
|
+
var import_editor_elements15 = require("@elementor/editor-elements");
|
|
3780
3818
|
var import_ui20 = require("@elementor/ui");
|
|
3781
3819
|
|
|
3782
3820
|
// src/hooks/use-controls-by-widget-type.ts
|
|
3783
|
-
var
|
|
3821
|
+
var import_editor_elements13 = require("@elementor/editor-elements");
|
|
3784
3822
|
function useControlsByWidgetType(type) {
|
|
3785
|
-
const elementType = (0,
|
|
3823
|
+
const elementType = (0, import_editor_elements13.getElementType)(type);
|
|
3786
3824
|
if (!elementType) {
|
|
3787
3825
|
return {};
|
|
3788
3826
|
}
|
|
@@ -3890,7 +3928,7 @@ function updateOverridableProp(componentId, propValue, originPropFields) {
|
|
|
3890
3928
|
}
|
|
3891
3929
|
|
|
3892
3930
|
// src/utils/get-prop-type-for-component-override.ts
|
|
3893
|
-
var
|
|
3931
|
+
var import_editor_elements14 = require("@elementor/editor-elements");
|
|
3894
3932
|
var getPropTypeForComponentOverride = (overridableProp) => {
|
|
3895
3933
|
if (overridableProp.originPropFields) {
|
|
3896
3934
|
return getPropType(overridableProp.originPropFields);
|
|
@@ -3904,7 +3942,7 @@ var getPropTypeForComponentOverride = (overridableProp) => {
|
|
|
3904
3942
|
});
|
|
3905
3943
|
};
|
|
3906
3944
|
function getPropType({ widgetType, propKey }) {
|
|
3907
|
-
const widgetPropsSchema = (0,
|
|
3945
|
+
const widgetPropsSchema = (0, import_editor_elements14.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
|
|
3908
3946
|
return widgetPropsSchema?.[propKey];
|
|
3909
3947
|
}
|
|
3910
3948
|
|
|
@@ -3985,14 +4023,14 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
3985
4023
|
overridableProp.label
|
|
3986
4024
|
);
|
|
3987
4025
|
const { elementId, widgetType, elType, propKey } = overridableProp.originPropFields ?? overridableProp;
|
|
3988
|
-
const elementContainer = (0,
|
|
4026
|
+
const elementContainer = (0, import_editor_elements15.getContainer)(elementId);
|
|
3989
4027
|
if (!elementContainer) {
|
|
3990
4028
|
throw new OverrideControlInnerElementNotFoundError({
|
|
3991
4029
|
context: { componentId: componentInstanceId, elementId }
|
|
3992
4030
|
});
|
|
3993
4031
|
}
|
|
3994
4032
|
const type = elType === "widget" ? widgetType : elType;
|
|
3995
|
-
const elementType = (0,
|
|
4033
|
+
const elementType = (0, import_editor_elements15.getElementType)(type);
|
|
3996
4034
|
if (!elementType) {
|
|
3997
4035
|
return null;
|
|
3998
4036
|
}
|
|
@@ -4144,11 +4182,11 @@ function InstanceEditingPanel() {
|
|
|
4144
4182
|
const overrides = settings?.overrides?.value;
|
|
4145
4183
|
const component = useComponent(componentId ?? null);
|
|
4146
4184
|
const overridableProps = useOverridableProps(componentId ?? null);
|
|
4147
|
-
const componentInstanceId = (0,
|
|
4185
|
+
const componentInstanceId = (0, import_editor_elements16.useSelectedElement)()?.element?.id ?? null;
|
|
4148
4186
|
if (!componentId || !overridableProps || !component) {
|
|
4149
4187
|
return null;
|
|
4150
4188
|
}
|
|
4151
|
-
const panelTitle = (0,
|
|
4189
|
+
const panelTitle = (0, import_i18n27.__)("Edit %s", "elementor").replace("%s", component.name);
|
|
4152
4190
|
const handleEditComponent = () => switchToComponent(componentId, componentInstanceId);
|
|
4153
4191
|
const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
|
|
4154
4192
|
const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
|
|
@@ -4239,9 +4277,9 @@ function ControlWithReplacements({
|
|
|
4239
4277
|
var React31 = __toESM(require("react"));
|
|
4240
4278
|
var import_editor_controls6 = require("@elementor/editor-controls");
|
|
4241
4279
|
var import_editor_editing_panel7 = require("@elementor/editor-editing-panel");
|
|
4242
|
-
var
|
|
4280
|
+
var import_editor_elements17 = require("@elementor/editor-elements");
|
|
4243
4281
|
var import_ui24 = require("@elementor/ui");
|
|
4244
|
-
var
|
|
4282
|
+
var import_i18n29 = require("@wordpress/i18n");
|
|
4245
4283
|
|
|
4246
4284
|
// src/store/actions/set-overridable-prop.ts
|
|
4247
4285
|
var import_store58 = require("@elementor/store");
|
|
@@ -4326,7 +4364,7 @@ var React30 = __toESM(require("react"));
|
|
|
4326
4364
|
var import_react16 = require("react");
|
|
4327
4365
|
var import_icons15 = require("@elementor/icons");
|
|
4328
4366
|
var import_ui23 = require("@elementor/ui");
|
|
4329
|
-
var
|
|
4367
|
+
var import_i18n28 = require("@wordpress/i18n");
|
|
4330
4368
|
var SIZE2 = "tiny";
|
|
4331
4369
|
var IconContainer = (0, import_ui23.styled)(import_ui23.Box)`
|
|
4332
4370
|
pointer-events: none;
|
|
@@ -4386,7 +4424,7 @@ var Indicator2 = (0, import_react16.forwardRef)(({ isOpen, isOverridable, ...pro
|
|
|
4386
4424
|
IconContainer,
|
|
4387
4425
|
{
|
|
4388
4426
|
className: "icon",
|
|
4389
|
-
"aria-label": isOverridable ? (0,
|
|
4427
|
+
"aria-label": isOverridable ? (0, import_i18n28.__)("Overridable property", "elementor") : (0, import_i18n28.__)("Make prop overridable", "elementor")
|
|
4390
4428
|
},
|
|
4391
4429
|
isOverridable ? /* @__PURE__ */ React30.createElement(import_icons15.CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React30.createElement(import_icons15.PlusIcon, { fontSize: SIZE2 })
|
|
4392
4430
|
)));
|
|
@@ -4431,7 +4469,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4431
4469
|
});
|
|
4432
4470
|
const triggerProps = (0, import_ui24.bindTrigger)(popupState);
|
|
4433
4471
|
const popoverProps = (0, import_ui24.bindPopover)(popupState);
|
|
4434
|
-
const { elType } = (0,
|
|
4472
|
+
const { elType } = (0, import_editor_elements17.getWidgetsCache)()?.[elementType.key] ?? { elType: "widget" };
|
|
4435
4473
|
const handleSubmit = ({ label, group }) => {
|
|
4436
4474
|
const propTypeDefault = propType.default ?? {};
|
|
4437
4475
|
const originValue = resolveOverridePropValue(overridableValue?.origin_value) ?? value ?? propTypeDefault;
|
|
@@ -4458,7 +4496,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4458
4496
|
popupState.close();
|
|
4459
4497
|
};
|
|
4460
4498
|
const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
|
|
4461
|
-
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(
|
|
4462
4500
|
import_ui24.Popover,
|
|
4463
4501
|
{
|
|
4464
4502
|
disableScrollLock: true,
|
|
@@ -4498,7 +4536,7 @@ var import_editor_mcp2 = require("@elementor/editor-mcp");
|
|
|
4498
4536
|
|
|
4499
4537
|
// src/mcp/save-as-component-tool.ts
|
|
4500
4538
|
var import_editor_canvas7 = require("@elementor/editor-canvas");
|
|
4501
|
-
var
|
|
4539
|
+
var import_editor_elements18 = require("@elementor/editor-elements");
|
|
4502
4540
|
var import_editor_mcp = require("@elementor/editor-mcp");
|
|
4503
4541
|
var import_http_client2 = require("@elementor/http-client");
|
|
4504
4542
|
var import_schema6 = require("@elementor/schema");
|
|
@@ -4536,7 +4574,7 @@ var ERROR_MESSAGES3 = {
|
|
|
4536
4574
|
var handleSaveAsComponent = async (params) => {
|
|
4537
4575
|
const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
|
|
4538
4576
|
const validElementTypes = getValidElementTypes();
|
|
4539
|
-
const container = (0,
|
|
4577
|
+
const container = (0, import_editor_elements18.getContainer)(elementId);
|
|
4540
4578
|
if (!container) {
|
|
4541
4579
|
throw new Error(ERROR_MESSAGES3.ELEMENT_NOT_FOUND);
|
|
4542
4580
|
}
|
|
@@ -4590,7 +4628,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
4590
4628
|
}
|
|
4591
4629
|
const elType = element.elType;
|
|
4592
4630
|
const widgetType = element.widgetType || element.elType;
|
|
4593
|
-
const elementType = (0,
|
|
4631
|
+
const elementType = (0, import_editor_elements18.getElementType)(widgetType);
|
|
4594
4632
|
if (!elementType) {
|
|
4595
4633
|
throw new Error(
|
|
4596
4634
|
`Element type "${widgetType}" is not atomic or does not have a settings schema. Cannot expose property "${propKey}" for element "${elementId}".`
|
|
@@ -4659,7 +4697,7 @@ function findElementById(root, targetId) {
|
|
|
4659
4697
|
return null;
|
|
4660
4698
|
}
|
|
4661
4699
|
function getValidElementTypes() {
|
|
4662
|
-
const types = (0,
|
|
4700
|
+
const types = (0, import_editor_elements18.getWidgetsCache)();
|
|
4663
4701
|
if (!types) {
|
|
4664
4702
|
return [];
|
|
4665
4703
|
}
|
|
@@ -4846,15 +4884,15 @@ function PopulateStore() {
|
|
|
4846
4884
|
}
|
|
4847
4885
|
|
|
4848
4886
|
// src/prevent-circular-nesting.ts
|
|
4849
|
-
var
|
|
4887
|
+
var import_editor_elements19 = require("@elementor/editor-elements");
|
|
4850
4888
|
var import_editor_notifications4 = require("@elementor/editor-notifications");
|
|
4851
4889
|
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
|
|
4852
4890
|
var import_store64 = require("@elementor/store");
|
|
4853
|
-
var
|
|
4891
|
+
var import_i18n30 = require("@wordpress/i18n");
|
|
4854
4892
|
var COMPONENT_TYPE = "e-component";
|
|
4855
4893
|
var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
4856
4894
|
type: "default",
|
|
4857
|
-
message: (0,
|
|
4895
|
+
message: (0, import_i18n30.__)("Can't add this component - components that contain each other can't be nested.", "elementor"),
|
|
4858
4896
|
id: "circular-component-nesting-blocked"
|
|
4859
4897
|
};
|
|
4860
4898
|
function initCircularNestingPrevention() {
|
|
@@ -4941,7 +4979,7 @@ function blockCircularMove(args) {
|
|
|
4941
4979
|
if (!container) {
|
|
4942
4980
|
return false;
|
|
4943
4981
|
}
|
|
4944
|
-
const allElements = (0,
|
|
4982
|
+
const allElements = (0, import_editor_elements19.getAllDescendants)(container);
|
|
4945
4983
|
return allElements.some((element) => {
|
|
4946
4984
|
const componentId = extractComponentIdFromContainer(element);
|
|
4947
4985
|
if (componentId === null) {
|
|
@@ -5002,7 +5040,7 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
|
|
|
5002
5040
|
});
|
|
5003
5041
|
|
|
5004
5042
|
// src/sync/create-components-before-save.ts
|
|
5005
|
-
var
|
|
5043
|
+
var import_editor_elements20 = require("@elementor/editor-elements");
|
|
5006
5044
|
var import_store70 = require("@elementor/store");
|
|
5007
5045
|
async function createComponentsBeforeSave({
|
|
5008
5046
|
elements,
|
|
@@ -5027,7 +5065,9 @@ async function createComponentsBeforeSave({
|
|
|
5027
5065
|
);
|
|
5028
5066
|
(0, import_store70.__dispatch)(slice.actions.resetUnpublished());
|
|
5029
5067
|
} catch (error) {
|
|
5030
|
-
|
|
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}`);
|
|
5031
5071
|
}
|
|
5032
5072
|
}
|
|
5033
5073
|
async function createComponents(components, status) {
|
|
@@ -5070,7 +5110,7 @@ function shouldUpdateElement(element, uidToComponentId) {
|
|
|
5070
5110
|
return { shouldUpdate: false, newComponentId: null };
|
|
5071
5111
|
}
|
|
5072
5112
|
function updateElementComponentId(elementId, componentId) {
|
|
5073
|
-
(0,
|
|
5113
|
+
(0, import_editor_elements20.updateElementSettings)({
|
|
5074
5114
|
id: elementId,
|
|
5075
5115
|
props: {
|
|
5076
5116
|
component_instance: {
|
|
@@ -5173,7 +5213,7 @@ var updateExistingComponentsBeforeSave = async ({
|
|
|
5173
5213
|
};
|
|
5174
5214
|
|
|
5175
5215
|
// src/sync/cleanup-overridable-props-on-delete.ts
|
|
5176
|
-
var
|
|
5216
|
+
var import_editor_elements21 = require("@elementor/editor-elements");
|
|
5177
5217
|
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
5178
5218
|
var import_store78 = require("@elementor/store");
|
|
5179
5219
|
function initCleanupOverridablePropsOnDelete() {
|
|
@@ -5223,12 +5263,12 @@ function initCleanupOverridablePropsOnDelete() {
|
|
|
5223
5263
|
});
|
|
5224
5264
|
}
|
|
5225
5265
|
function collectDeletedElementIds(containers) {
|
|
5226
|
-
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));
|
|
5227
5267
|
return elementIds;
|
|
5228
5268
|
}
|
|
5229
5269
|
|
|
5230
5270
|
// src/sync/handle-component-edit-mode-container.ts
|
|
5231
|
-
var
|
|
5271
|
+
var import_editor_elements22 = require("@elementor/editor-elements");
|
|
5232
5272
|
var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
|
|
5233
5273
|
var V4_DEFAULT_CONTAINER_TYPE = "e-flexbox";
|
|
5234
5274
|
function initHandleComponentEditModeContainer() {
|
|
@@ -5278,11 +5318,11 @@ function initRedirectDropIntoComponent() {
|
|
|
5278
5318
|
});
|
|
5279
5319
|
}
|
|
5280
5320
|
function createEmptyTopLevelContainer(container) {
|
|
5281
|
-
const newContainer = (0,
|
|
5321
|
+
const newContainer = (0, import_editor_elements22.createElement)({
|
|
5282
5322
|
containerId: container.id,
|
|
5283
5323
|
model: { elType: V4_DEFAULT_CONTAINER_TYPE }
|
|
5284
5324
|
});
|
|
5285
|
-
(0,
|
|
5325
|
+
(0, import_editor_elements22.selectElement)(newContainer.id);
|
|
5286
5326
|
}
|
|
5287
5327
|
function getComponentContainer(container) {
|
|
5288
5328
|
const topLevelElement = container.children?.[0];
|
|
@@ -5315,7 +5355,7 @@ function load(result) {
|
|
|
5315
5355
|
}
|
|
5316
5356
|
|
|
5317
5357
|
// src/sync/regenerate-override-keys.ts
|
|
5318
|
-
var
|
|
5358
|
+
var import_editor_elements23 = require("@elementor/editor-elements");
|
|
5319
5359
|
var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
|
|
5320
5360
|
var import_utils10 = require("@elementor/utils");
|
|
5321
5361
|
function initRegenerateOverrideKeys() {
|
|
@@ -5336,11 +5376,11 @@ function regenerateOverrideKeysForContainers(result) {
|
|
|
5336
5376
|
});
|
|
5337
5377
|
}
|
|
5338
5378
|
function regenerateOverrideKeysRecursive(elementId) {
|
|
5339
|
-
const container = (0,
|
|
5379
|
+
const container = (0, import_editor_elements23.getContainer)(elementId);
|
|
5340
5380
|
if (!container) {
|
|
5341
5381
|
return;
|
|
5342
5382
|
}
|
|
5343
|
-
(0,
|
|
5383
|
+
(0, import_editor_elements23.getAllDescendants)(container).forEach(regenerateOverrideKeys);
|
|
5344
5384
|
}
|
|
5345
5385
|
function regenerateOverrideKeys(element) {
|
|
5346
5386
|
if (!isComponentInstance(element.model.toJSON())) {
|
|
@@ -5374,7 +5414,7 @@ function regenerateOverrideKeys(element) {
|
|
|
5374
5414
|
}
|
|
5375
5415
|
}
|
|
5376
5416
|
};
|
|
5377
|
-
(0,
|
|
5417
|
+
(0, import_editor_elements23.updateElementSettings)({
|
|
5378
5418
|
id: element.id,
|
|
5379
5419
|
props: { component_instance: newComponentInstance },
|
|
5380
5420
|
withHistory: false
|
|
@@ -5451,7 +5491,7 @@ function init() {
|
|
|
5451
5491
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
5452
5492
|
(0, import_editor_elements_panel.injectTab)({
|
|
5453
5493
|
id: "components",
|
|
5454
|
-
label: (0,
|
|
5494
|
+
label: (0, import_i18n31.__)("Components", "elementor"),
|
|
5455
5495
|
component: Components,
|
|
5456
5496
|
position: 1
|
|
5457
5497
|
});
|