@elementor/editor-components 3.35.0-460 → 3.35.0-462
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 +322 -283
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +295 -256
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -22
- package/src/components/components-tab/components-pro-notification.tsx +22 -0
- package/src/components/components-tab/components.tsx +3 -0
- package/src/init.ts +5 -2
- package/src/sync/load-component-data-after-instance-added.ts +20 -0
- package/src/utils/is-pro-user.ts +26 -0
- /package/src/{hooks → sync}/cleanup-overridable-props-on-delete.ts +0 -0
- /package/src/{hooks → sync}/regenerate-override-keys.ts +0 -0
package/dist/index.js
CHANGED
|
@@ -42,9 +42,9 @@ 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
|
-
var
|
|
45
|
+
var import_editor_v1_adapters12 = 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");
|
|
@@ -1690,8 +1690,8 @@ function getComponentName() {
|
|
|
1690
1690
|
}
|
|
1691
1691
|
|
|
1692
1692
|
// src/components/components-tab/components.tsx
|
|
1693
|
-
var
|
|
1694
|
-
var
|
|
1693
|
+
var React19 = __toESM(require("react"));
|
|
1694
|
+
var import_editor_ui9 = require("@elementor/editor-ui");
|
|
1695
1695
|
|
|
1696
1696
|
// src/hooks/use-components.ts
|
|
1697
1697
|
var import_store27 = require("@elementor/store");
|
|
@@ -1701,6 +1701,17 @@ var useComponents = () => {
|
|
|
1701
1701
|
return { components, isLoading };
|
|
1702
1702
|
};
|
|
1703
1703
|
|
|
1704
|
+
// src/utils/is-pro-user.ts
|
|
1705
|
+
function isProUser() {
|
|
1706
|
+
const extendedWindow = window;
|
|
1707
|
+
const hasPro = extendedWindow.elementor?.helpers?.hasPro?.() ?? false;
|
|
1708
|
+
if (!hasPro) {
|
|
1709
|
+
return false;
|
|
1710
|
+
}
|
|
1711
|
+
const isProActive = extendedWindow.elementorPro?.config?.isActive ?? false;
|
|
1712
|
+
return isProActive;
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1704
1715
|
// src/components/components-tab/component-search.tsx
|
|
1705
1716
|
var React12 = __toESM(require("react"));
|
|
1706
1717
|
var import_icons8 = require("@elementor/icons");
|
|
@@ -2761,14 +2772,26 @@ var useFilteredComponents = () => {
|
|
|
2761
2772
|
};
|
|
2762
2773
|
};
|
|
2763
2774
|
|
|
2775
|
+
// src/components/components-tab/components-pro-notification.tsx
|
|
2776
|
+
var React18 = __toESM(require("react"));
|
|
2777
|
+
var import_editor_ui8 = require("@elementor/editor-ui");
|
|
2778
|
+
var import_ui16 = require("@elementor/ui");
|
|
2779
|
+
var import_i18n21 = require("@wordpress/i18n");
|
|
2780
|
+
function ComponentsProNotification() {
|
|
2781
|
+
return /* @__PURE__ */ React18.createElement(import_ui16.Box, { sx: { px: 2 } }, /* @__PURE__ */ React18.createElement(import_editor_ui8.InfoAlert, null, /* @__PURE__ */ React18.createElement(import_ui16.Typography, { variant: "caption", component: "span" }, /* @__PURE__ */ React18.createElement(import_ui16.Typography, { variant: "caption", component: "span", fontWeight: "bold" }, (0, import_i18n21.__)("Try Components for free:", "elementor")), " ", (0, import_i18n21.__)(
|
|
2782
|
+
"Soon Components will be part of the Pro subscription, but what you create now will remain on your site.",
|
|
2783
|
+
"elementor"
|
|
2784
|
+
))));
|
|
2785
|
+
}
|
|
2786
|
+
|
|
2764
2787
|
// src/components/components-tab/components.tsx
|
|
2765
2788
|
var ComponentsContent = () => {
|
|
2766
2789
|
const { components, isLoading } = useComponents();
|
|
2767
2790
|
const hasComponents = !isLoading && components.length > 0;
|
|
2768
|
-
return /* @__PURE__ */
|
|
2791
|
+
return /* @__PURE__ */ React19.createElement(React19.Fragment, null, hasComponents && /* @__PURE__ */ React19.createElement(ComponentSearch, null), hasComponents && !isProUser() && /* @__PURE__ */ React19.createElement(ComponentsProNotification, null), /* @__PURE__ */ React19.createElement(ComponentsList, null));
|
|
2769
2792
|
};
|
|
2770
2793
|
var Components = () => {
|
|
2771
|
-
return /* @__PURE__ */
|
|
2794
|
+
return /* @__PURE__ */ React19.createElement(import_editor_ui9.ThemeProvider, null, /* @__PURE__ */ React19.createElement(SearchProvider, { localStorageKey: "elementor-components-search" }, /* @__PURE__ */ React19.createElement(ComponentsContent, null)));
|
|
2772
2795
|
};
|
|
2773
2796
|
|
|
2774
2797
|
// src/components/consts.ts
|
|
@@ -2776,15 +2799,15 @@ var COMPONENT_DOCUMENT_TYPE = "elementor_component";
|
|
|
2776
2799
|
var OVERRIDABLE_PROP_REPLACEMENT_ID = "overridable-prop";
|
|
2777
2800
|
|
|
2778
2801
|
// src/components/create-component-form/create-component-form.tsx
|
|
2779
|
-
var
|
|
2802
|
+
var React20 = __toESM(require("react"));
|
|
2780
2803
|
var import_react11 = require("react");
|
|
2781
2804
|
var import_editor_elements10 = require("@elementor/editor-elements");
|
|
2782
2805
|
var import_editor_notifications3 = require("@elementor/editor-notifications");
|
|
2783
|
-
var
|
|
2806
|
+
var import_editor_ui10 = require("@elementor/editor-ui");
|
|
2784
2807
|
var import_icons11 = require("@elementor/icons");
|
|
2785
2808
|
var import_store47 = require("@elementor/store");
|
|
2786
|
-
var
|
|
2787
|
-
var
|
|
2809
|
+
var import_ui17 = require("@elementor/ui");
|
|
2810
|
+
var import_i18n23 = require("@wordpress/i18n");
|
|
2788
2811
|
|
|
2789
2812
|
// src/prevent-non-atomic-nesting.ts
|
|
2790
2813
|
var import_editor_canvas6 = require("@elementor/editor-canvas");
|
|
@@ -2792,10 +2815,10 @@ var import_editor_elements9 = require("@elementor/editor-elements");
|
|
|
2792
2815
|
var import_editor_notifications2 = require("@elementor/editor-notifications");
|
|
2793
2816
|
var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
|
|
2794
2817
|
var import_store43 = require("@elementor/store");
|
|
2795
|
-
var
|
|
2818
|
+
var import_i18n22 = require("@wordpress/i18n");
|
|
2796
2819
|
var NON_ATOMIC_ELEMENT_ALERT = {
|
|
2797
2820
|
type: "default",
|
|
2798
|
-
message: (0,
|
|
2821
|
+
message: (0, import_i18n22.__)("This widget isn't compatible with components. Use atomic elements instead.", "elementor"),
|
|
2799
2822
|
id: "non-atomic-element-blocked"
|
|
2800
2823
|
};
|
|
2801
2824
|
function initNonAtomicNestingPrevention() {
|
|
@@ -3015,7 +3038,7 @@ function CreateComponentForm() {
|
|
|
3015
3038
|
if (nonAtomicElements.length > 0) {
|
|
3016
3039
|
(0, import_editor_notifications3.notify)({
|
|
3017
3040
|
type: "default",
|
|
3018
|
-
message: (0,
|
|
3041
|
+
message: (0, import_i18n23.__)(
|
|
3019
3042
|
"Components require atomic elements only. Remove widgets to create this component.",
|
|
3020
3043
|
"elementor"
|
|
3021
3044
|
),
|
|
@@ -3054,12 +3077,12 @@ function CreateComponentForm() {
|
|
|
3054
3077
|
}
|
|
3055
3078
|
(0, import_editor_notifications3.notify)({
|
|
3056
3079
|
type: "success",
|
|
3057
|
-
message: (0,
|
|
3080
|
+
message: (0, import_i18n23.__)("Component created successfully.", "elementor"),
|
|
3058
3081
|
id: `component-saved-successfully-${uid}`
|
|
3059
3082
|
});
|
|
3060
3083
|
resetAndClosePopup();
|
|
3061
3084
|
} catch {
|
|
3062
|
-
const errorMessage = (0,
|
|
3085
|
+
const errorMessage = (0, import_i18n23.__)("Failed to create component. Please try again.", "elementor");
|
|
3063
3086
|
(0, import_editor_notifications3.notify)({
|
|
3064
3087
|
type: "error",
|
|
3065
3088
|
message: errorMessage,
|
|
@@ -3078,15 +3101,15 @@ function CreateComponentForm() {
|
|
|
3078
3101
|
...eventData.current
|
|
3079
3102
|
});
|
|
3080
3103
|
};
|
|
3081
|
-
return /* @__PURE__ */
|
|
3082
|
-
|
|
3104
|
+
return /* @__PURE__ */ React20.createElement(import_editor_ui10.ThemeProvider, null, /* @__PURE__ */ React20.createElement(
|
|
3105
|
+
import_ui17.Popover,
|
|
3083
3106
|
{
|
|
3084
3107
|
open: element !== null,
|
|
3085
3108
|
onClose: cancelSave,
|
|
3086
3109
|
anchorReference: "anchorPosition",
|
|
3087
3110
|
anchorPosition
|
|
3088
3111
|
},
|
|
3089
|
-
element !== null && /* @__PURE__ */
|
|
3112
|
+
element !== null && /* @__PURE__ */ React20.createElement(
|
|
3090
3113
|
Form2,
|
|
3091
3114
|
{
|
|
3092
3115
|
initialValues: { componentName: element.elementLabel },
|
|
@@ -3122,14 +3145,14 @@ var Form2 = ({
|
|
|
3122
3145
|
}
|
|
3123
3146
|
};
|
|
3124
3147
|
const texts = {
|
|
3125
|
-
heading: (0,
|
|
3126
|
-
name: (0,
|
|
3127
|
-
cancel: (0,
|
|
3128
|
-
create: (0,
|
|
3148
|
+
heading: (0, import_i18n23.__)("Create component", "elementor"),
|
|
3149
|
+
name: (0, import_i18n23.__)("Name", "elementor"),
|
|
3150
|
+
cancel: (0, import_i18n23.__)("Cancel", "elementor"),
|
|
3151
|
+
create: (0, import_i18n23.__)("Create", "elementor")
|
|
3129
3152
|
};
|
|
3130
3153
|
const nameInputId = "component-name";
|
|
3131
|
-
return /* @__PURE__ */
|
|
3132
|
-
|
|
3154
|
+
return /* @__PURE__ */ React20.createElement(import_editor_ui10.Form, { onSubmit: handleSubmit }, /* @__PURE__ */ React20.createElement(import_ui17.Stack, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React20.createElement(
|
|
3155
|
+
import_ui17.Stack,
|
|
3133
3156
|
{
|
|
3134
3157
|
direction: "row",
|
|
3135
3158
|
alignItems: "center",
|
|
@@ -3137,10 +3160,10 @@ var Form2 = ({
|
|
|
3137
3160
|
px: 1.5,
|
|
3138
3161
|
sx: { columnGap: 0.5, borderBottom: "1px solid", borderColor: "divider", width: "100%" }
|
|
3139
3162
|
},
|
|
3140
|
-
/* @__PURE__ */
|
|
3141
|
-
/* @__PURE__ */
|
|
3142
|
-
), /* @__PURE__ */
|
|
3143
|
-
|
|
3163
|
+
/* @__PURE__ */ React20.createElement(import_icons11.ComponentsIcon, { fontSize: FONT_SIZE }),
|
|
3164
|
+
/* @__PURE__ */ React20.createElement(import_ui17.Typography, { variant: "caption", sx: { color: "text.primary", fontWeight: "500", lineHeight: 1 } }, texts.heading)
|
|
3165
|
+
), /* @__PURE__ */ React20.createElement(import_ui17.Grid, { container: true, gap: 0.75, alignItems: "start", p: 1.5 }, /* @__PURE__ */ React20.createElement(import_ui17.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React20.createElement(import_ui17.FormLabel, { htmlFor: nameInputId, size: "tiny" }, texts.name)), /* @__PURE__ */ React20.createElement(import_ui17.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React20.createElement(
|
|
3166
|
+
import_ui17.TextField,
|
|
3144
3167
|
{
|
|
3145
3168
|
id: nameInputId,
|
|
3146
3169
|
size: FONT_SIZE,
|
|
@@ -3151,11 +3174,11 @@ var Form2 = ({
|
|
|
3151
3174
|
error: Boolean(errors.componentName),
|
|
3152
3175
|
helperText: errors.componentName
|
|
3153
3176
|
}
|
|
3154
|
-
))), /* @__PURE__ */
|
|
3177
|
+
))), /* @__PURE__ */ React20.createElement(import_ui17.Stack, { direction: "row", justifyContent: "flex-end", alignSelf: "end", py: 1, px: 1.5 }, /* @__PURE__ */ React20.createElement(import_ui17.Button, { onClick: closePopup, color: "secondary", variant: "text", size: "small" }, texts.cancel), /* @__PURE__ */ React20.createElement(import_ui17.Button, { type: "submit", disabled: !isValid, variant: "contained", color: "primary", size: "small" }, texts.create))));
|
|
3155
3178
|
};
|
|
3156
3179
|
|
|
3157
3180
|
// src/components/edit-component/edit-component.tsx
|
|
3158
|
-
var
|
|
3181
|
+
var React22 = __toESM(require("react"));
|
|
3159
3182
|
var import_react14 = require("react");
|
|
3160
3183
|
var import_editor_documents11 = require("@elementor/editor-documents");
|
|
3161
3184
|
var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
|
|
@@ -3178,10 +3201,10 @@ function updateCurrentComponent({
|
|
|
3178
3201
|
}
|
|
3179
3202
|
|
|
3180
3203
|
// src/components/edit-component/component-modal.tsx
|
|
3181
|
-
var
|
|
3204
|
+
var React21 = __toESM(require("react"));
|
|
3182
3205
|
var import_react13 = require("react");
|
|
3183
3206
|
var import_react_dom = require("react-dom");
|
|
3184
|
-
var
|
|
3207
|
+
var import_i18n24 = require("@wordpress/i18n");
|
|
3185
3208
|
|
|
3186
3209
|
// src/hooks/use-canvas-document.ts
|
|
3187
3210
|
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
|
|
@@ -3270,7 +3293,7 @@ function ComponentModal({ element, onClose }) {
|
|
|
3270
3293
|
return null;
|
|
3271
3294
|
}
|
|
3272
3295
|
return (0, import_react_dom.createPortal)(
|
|
3273
|
-
/* @__PURE__ */
|
|
3296
|
+
/* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement(BlockEditPage, null), /* @__PURE__ */ React21.createElement(Backdrop, { canvas: canvasDocument, element, onClose })),
|
|
3274
3297
|
canvasDocument.body
|
|
3275
3298
|
);
|
|
3276
3299
|
}
|
|
@@ -3294,7 +3317,7 @@ function Backdrop({ canvas, element, onClose }) {
|
|
|
3294
3317
|
onClose();
|
|
3295
3318
|
}
|
|
3296
3319
|
};
|
|
3297
|
-
return /* @__PURE__ */
|
|
3320
|
+
return /* @__PURE__ */ React21.createElement(
|
|
3298
3321
|
"div",
|
|
3299
3322
|
{
|
|
3300
3323
|
style: backdropStyle,
|
|
@@ -3302,7 +3325,7 @@ function Backdrop({ canvas, element, onClose }) {
|
|
|
3302
3325
|
onKeyDown: handleKeyDown,
|
|
3303
3326
|
role: "button",
|
|
3304
3327
|
tabIndex: 0,
|
|
3305
|
-
"aria-label": (0,
|
|
3328
|
+
"aria-label": (0, import_i18n24.__)("Exit component editing mode", "elementor")
|
|
3306
3329
|
}
|
|
3307
3330
|
);
|
|
3308
3331
|
}
|
|
@@ -3346,7 +3369,7 @@ function BlockEditPage() {
|
|
|
3346
3369
|
}
|
|
3347
3370
|
}
|
|
3348
3371
|
`;
|
|
3349
|
-
return /* @__PURE__ */
|
|
3372
|
+
return /* @__PURE__ */ React21.createElement("style", { "data-e-style-id": "e-block-v3-document-handles-styles" }, blockV3DocumentHandlesStyles);
|
|
3350
3373
|
}
|
|
3351
3374
|
|
|
3352
3375
|
// src/components/edit-component/edit-component.tsx
|
|
@@ -3359,7 +3382,7 @@ function EditComponent() {
|
|
|
3359
3382
|
if (!elementDom) {
|
|
3360
3383
|
return null;
|
|
3361
3384
|
}
|
|
3362
|
-
return /* @__PURE__ */
|
|
3385
|
+
return /* @__PURE__ */ React22.createElement(ComponentModal, { element: elementDom, onClose });
|
|
3363
3386
|
}
|
|
3364
3387
|
function useHandleDocumentSwitches() {
|
|
3365
3388
|
const documentsManager = (0, import_editor_documents11.getV1DocumentsManager)();
|
|
@@ -3429,34 +3452,34 @@ function getComponentDOMElement(id2) {
|
|
|
3429
3452
|
}
|
|
3430
3453
|
|
|
3431
3454
|
// src/components/in-edit-mode.tsx
|
|
3432
|
-
var
|
|
3433
|
-
var
|
|
3455
|
+
var React23 = __toESM(require("react"));
|
|
3456
|
+
var import_editor_ui11 = require("@elementor/editor-ui");
|
|
3434
3457
|
var import_icons12 = require("@elementor/icons");
|
|
3435
|
-
var
|
|
3436
|
-
var
|
|
3458
|
+
var import_ui18 = require("@elementor/ui");
|
|
3459
|
+
var import_i18n25 = require("@wordpress/i18n");
|
|
3437
3460
|
var openEditModeDialog = (lockedBy) => {
|
|
3438
|
-
(0,
|
|
3439
|
-
component: /* @__PURE__ */
|
|
3461
|
+
(0, import_editor_ui11.openDialog)({
|
|
3462
|
+
component: /* @__PURE__ */ React23.createElement(EditModeDialog, { lockedBy })
|
|
3440
3463
|
});
|
|
3441
3464
|
};
|
|
3442
3465
|
var EditModeDialog = ({ lockedBy }) => {
|
|
3443
|
-
const content = (0,
|
|
3444
|
-
return /* @__PURE__ */
|
|
3466
|
+
const content = (0, import_i18n25.__)("%s is currently editing this document", "elementor").replace("%s", lockedBy);
|
|
3467
|
+
return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(import_ui18.DialogHeader, { logo: false }, /* @__PURE__ */ React23.createElement(import_ui18.Box, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React23.createElement(import_ui18.Icon, { color: "secondary" }, /* @__PURE__ */ React23.createElement(import_icons12.InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React23.createElement(import_ui18.Typography, { variant: "subtitle1" }, content))), /* @__PURE__ */ React23.createElement(import_ui18.DialogContent, null, /* @__PURE__ */ React23.createElement(import_ui18.Stack, { spacing: 2, direction: "column" }, /* @__PURE__ */ React23.createElement(import_ui18.Typography, { variant: "body2" }, (0, import_i18n25.__)(
|
|
3445
3468
|
"You can wait for them to finish or reach out to coordinate your changes together.",
|
|
3446
3469
|
"elementor"
|
|
3447
|
-
)), /* @__PURE__ */
|
|
3470
|
+
)), /* @__PURE__ */ React23.createElement(import_ui18.DialogActions, null, /* @__PURE__ */ React23.createElement(import_ui18.Button, { color: "secondary", variant: "contained", onClick: import_editor_ui11.closeDialog }, (0, import_i18n25.__)("Close", "elementor"))))));
|
|
3448
3471
|
};
|
|
3449
3472
|
|
|
3450
3473
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
3451
|
-
var
|
|
3474
|
+
var React29 = __toESM(require("react"));
|
|
3452
3475
|
var import_editor_controls4 = require("@elementor/editor-controls");
|
|
3453
3476
|
var import_editor_editing_panel5 = require("@elementor/editor-editing-panel");
|
|
3454
3477
|
var import_editor_elements15 = require("@elementor/editor-elements");
|
|
3455
3478
|
var import_editor_panels3 = require("@elementor/editor-panels");
|
|
3456
|
-
var
|
|
3479
|
+
var import_editor_ui13 = require("@elementor/editor-ui");
|
|
3457
3480
|
var import_icons14 = require("@elementor/icons");
|
|
3458
|
-
var
|
|
3459
|
-
var
|
|
3481
|
+
var import_ui23 = require("@elementor/ui");
|
|
3482
|
+
var import_i18n27 = require("@wordpress/i18n");
|
|
3460
3483
|
|
|
3461
3484
|
// src/hooks/use-component-instance-settings.ts
|
|
3462
3485
|
var import_editor_editing_panel2 = require("@elementor/editor-editing-panel");
|
|
@@ -3522,21 +3545,21 @@ function useComponentInstanceSettings() {
|
|
|
3522
3545
|
}
|
|
3523
3546
|
|
|
3524
3547
|
// src/components/instance-editing-panel/empty-state.tsx
|
|
3525
|
-
var
|
|
3548
|
+
var React24 = __toESM(require("react"));
|
|
3526
3549
|
var import_icons13 = require("@elementor/icons");
|
|
3527
|
-
var
|
|
3528
|
-
var
|
|
3550
|
+
var import_ui19 = require("@elementor/ui");
|
|
3551
|
+
var import_i18n26 = require("@wordpress/i18n");
|
|
3529
3552
|
var EmptyState2 = ({ onEditComponent }) => {
|
|
3530
3553
|
const { canEdit } = useComponentsPermissions();
|
|
3531
|
-
const message = canEdit ? (0,
|
|
3554
|
+
const message = canEdit ? (0, import_i18n26.__)(
|
|
3532
3555
|
"Edit the component to add properties, manage them or update the design across all instances.",
|
|
3533
3556
|
"elementor"
|
|
3534
|
-
) : (0,
|
|
3557
|
+
) : (0, import_i18n26.__)(
|
|
3535
3558
|
"With your current role, you cannot edit this component. Contact an administrator to add properties.",
|
|
3536
3559
|
"elementor"
|
|
3537
3560
|
);
|
|
3538
|
-
return /* @__PURE__ */
|
|
3539
|
-
|
|
3561
|
+
return /* @__PURE__ */ React24.createElement(
|
|
3562
|
+
import_ui19.Stack,
|
|
3540
3563
|
{
|
|
3541
3564
|
alignItems: "center",
|
|
3542
3565
|
justifyContent: "start",
|
|
@@ -3545,26 +3568,26 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
3545
3568
|
sx: { p: 2.5, pt: 8, pb: 5.5, mt: 1 },
|
|
3546
3569
|
gap: 1.5
|
|
3547
3570
|
},
|
|
3548
|
-
/* @__PURE__ */
|
|
3549
|
-
/* @__PURE__ */
|
|
3550
|
-
/* @__PURE__ */
|
|
3551
|
-
canEdit && /* @__PURE__ */
|
|
3571
|
+
/* @__PURE__ */ React24.createElement(import_icons13.ComponentPropListIcon, { fontSize: "large" }),
|
|
3572
|
+
/* @__PURE__ */ React24.createElement(import_ui19.Typography, { align: "center", variant: "subtitle2" }, (0, import_i18n26.__)("No properties yet", "elementor")),
|
|
3573
|
+
/* @__PURE__ */ React24.createElement(import_ui19.Typography, { align: "center", variant: "caption", maxWidth: "170px" }, message),
|
|
3574
|
+
canEdit && /* @__PURE__ */ React24.createElement(import_ui19.Button, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React24.createElement(import_icons13.PencilIcon, { fontSize: "small" }), (0, import_i18n26.__)("Edit component", "elementor"))
|
|
3552
3575
|
);
|
|
3553
3576
|
};
|
|
3554
3577
|
|
|
3555
3578
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
3556
|
-
var
|
|
3579
|
+
var React28 = __toESM(require("react"));
|
|
3557
3580
|
var import_react16 = require("react");
|
|
3558
3581
|
var import_editor_editing_panel4 = require("@elementor/editor-editing-panel");
|
|
3559
|
-
var
|
|
3560
|
-
var
|
|
3582
|
+
var import_editor_ui12 = require("@elementor/editor-ui");
|
|
3583
|
+
var import_ui22 = require("@elementor/ui");
|
|
3561
3584
|
|
|
3562
3585
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
3563
|
-
var
|
|
3586
|
+
var React27 = __toESM(require("react"));
|
|
3564
3587
|
var import_editor_controls3 = require("@elementor/editor-controls");
|
|
3565
3588
|
var import_editor_editing_panel3 = require("@elementor/editor-editing-panel");
|
|
3566
3589
|
var import_editor_elements14 = require("@elementor/editor-elements");
|
|
3567
|
-
var
|
|
3590
|
+
var import_ui21 = require("@elementor/ui");
|
|
3568
3591
|
|
|
3569
3592
|
// src/hooks/use-controls-by-widget-type.ts
|
|
3570
3593
|
var import_editor_elements12 = require("@elementor/editor-elements");
|
|
@@ -3598,11 +3621,11 @@ function getControlsByBind(controls) {
|
|
|
3598
3621
|
}
|
|
3599
3622
|
|
|
3600
3623
|
// src/provider/overridable-prop-context.tsx
|
|
3601
|
-
var
|
|
3624
|
+
var React25 = __toESM(require("react"));
|
|
3602
3625
|
var import_react15 = require("react");
|
|
3603
3626
|
var OverridablePropContext = (0, import_react15.createContext)(null);
|
|
3604
3627
|
function OverridablePropProvider({ children, ...props }) {
|
|
3605
|
-
return /* @__PURE__ */
|
|
3628
|
+
return /* @__PURE__ */ React25.createElement(OverridablePropContext.Provider, { value: props }, children);
|
|
3606
3629
|
}
|
|
3607
3630
|
var useOverridablePropValue = () => (0, import_react15.useContext)(OverridablePropContext)?.value;
|
|
3608
3631
|
var useComponentInstanceElement = () => (0, import_react15.useContext)(OverridablePropContext)?.componentInstanceElement;
|
|
@@ -3696,11 +3719,11 @@ function getPropType({ widgetType, propKey }) {
|
|
|
3696
3719
|
}
|
|
3697
3720
|
|
|
3698
3721
|
// src/components/control-label.tsx
|
|
3699
|
-
var
|
|
3722
|
+
var React26 = __toESM(require("react"));
|
|
3700
3723
|
var import_editor_controls2 = require("@elementor/editor-controls");
|
|
3701
|
-
var
|
|
3724
|
+
var import_ui20 = require("@elementor/ui");
|
|
3702
3725
|
var ControlLabel = ({ children, ...props }) => {
|
|
3703
|
-
return /* @__PURE__ */
|
|
3726
|
+
return /* @__PURE__ */ React26.createElement(import_ui20.Stack, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React26.createElement(import_editor_controls2.ControlFormLabel, { ...props }, children), /* @__PURE__ */ React26.createElement(import_editor_controls2.ControlAdornments, null));
|
|
3704
3727
|
};
|
|
3705
3728
|
|
|
3706
3729
|
// src/components/errors.ts
|
|
@@ -3712,7 +3735,7 @@ var OverrideControlInnerElementNotFoundError = (0, import_utils7.createError)({
|
|
|
3712
3735
|
|
|
3713
3736
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
3714
3737
|
function OverridePropControl({ overridableProp, overrides }) {
|
|
3715
|
-
return /* @__PURE__ */
|
|
3738
|
+
return /* @__PURE__ */ React27.createElement(import_editor_editing_panel3.SettingsField, { bind: "component_instance", propDisplayName: overridableProp.label }, /* @__PURE__ */ React27.createElement(OverrideControl, { overridableProp, overrides }));
|
|
3716
3739
|
}
|
|
3717
3740
|
function OverrideControl({ overridableProp, overrides }) {
|
|
3718
3741
|
const componentInstanceElement = (0, import_editor_editing_panel3.useElement)();
|
|
@@ -3783,13 +3806,13 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
3783
3806
|
if (!elementType) {
|
|
3784
3807
|
return null;
|
|
3785
3808
|
}
|
|
3786
|
-
return /* @__PURE__ */
|
|
3809
|
+
return /* @__PURE__ */ React27.createElement(
|
|
3787
3810
|
OverridablePropProvider,
|
|
3788
3811
|
{
|
|
3789
3812
|
value: componentOverridablePropTypeUtil.extract(matchingOverride) ?? void 0,
|
|
3790
3813
|
componentInstanceElement
|
|
3791
3814
|
},
|
|
3792
|
-
/* @__PURE__ */
|
|
3815
|
+
/* @__PURE__ */ React27.createElement(import_editor_editing_panel3.ElementProvider, { element: { id: elementId, type }, elementType }, /* @__PURE__ */ React27.createElement(import_editor_editing_panel3.SettingsField, { bind: propKey, propDisplayName: overridableProp.label }, /* @__PURE__ */ React27.createElement(
|
|
3793
3816
|
import_editor_controls3.PropProvider,
|
|
3794
3817
|
{
|
|
3795
3818
|
propType: propTypeSchema,
|
|
@@ -3799,7 +3822,7 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
3799
3822
|
return false;
|
|
3800
3823
|
}
|
|
3801
3824
|
},
|
|
3802
|
-
/* @__PURE__ */
|
|
3825
|
+
/* @__PURE__ */ React27.createElement(import_editor_controls3.PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ React27.createElement(import_editor_controls3.ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React27.createElement(import_ui21.Stack, { direction: "column", gap: 1, mb: 1.5 }, layout !== "custom" && /* @__PURE__ */ React27.createElement(ControlLabel, null, overridableProp.label), /* @__PURE__ */ React27.createElement(OriginalControl, { control, controlProps }))))
|
|
3803
3826
|
)))
|
|
3804
3827
|
);
|
|
3805
3828
|
}
|
|
@@ -3863,7 +3886,7 @@ function getControlParams(controls, originPropFields, label) {
|
|
|
3863
3886
|
}
|
|
3864
3887
|
function OriginalControl({ control, controlProps }) {
|
|
3865
3888
|
const { value } = control;
|
|
3866
|
-
return /* @__PURE__ */
|
|
3889
|
+
return /* @__PURE__ */ React27.createElement(import_editor_editing_panel3.BaseControl, { type: value.type, props: controlProps });
|
|
3867
3890
|
}
|
|
3868
3891
|
function getControlLayout(control) {
|
|
3869
3892
|
return control.value.meta?.layout || import_editor_editing_panel3.controlsRegistry.getLayout(control.value.type);
|
|
@@ -3894,8 +3917,8 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
3894
3917
|
const labelId = `label-${id2}`;
|
|
3895
3918
|
const contentId = `content-${id2}`;
|
|
3896
3919
|
const title = group.label;
|
|
3897
|
-
return /* @__PURE__ */
|
|
3898
|
-
|
|
3920
|
+
return /* @__PURE__ */ React28.createElement(import_ui22.Box, { "aria-label": `${title} section` }, /* @__PURE__ */ React28.createElement(
|
|
3921
|
+
import_ui22.ListItemButton,
|
|
3899
3922
|
{
|
|
3900
3923
|
id: labelId,
|
|
3901
3924
|
"aria-controls": contentId,
|
|
@@ -3904,16 +3927,16 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
3904
3927
|
p: 0,
|
|
3905
3928
|
sx: { "&:hover": { backgroundColor: "transparent" } }
|
|
3906
3929
|
},
|
|
3907
|
-
/* @__PURE__ */
|
|
3908
|
-
|
|
3930
|
+
/* @__PURE__ */ React28.createElement(import_ui22.Stack, { direction: "row", alignItems: "center", justifyItems: "start", flexGrow: 1, gap: 0.5 }, /* @__PURE__ */ React28.createElement(
|
|
3931
|
+
import_ui22.ListItemText,
|
|
3909
3932
|
{
|
|
3910
3933
|
secondary: title,
|
|
3911
3934
|
secondaryTypographyProps: { color: "text.primary", variant: "caption", fontWeight: "bold" },
|
|
3912
3935
|
sx: { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 }
|
|
3913
3936
|
}
|
|
3914
3937
|
)),
|
|
3915
|
-
/* @__PURE__ */
|
|
3916
|
-
), /* @__PURE__ */
|
|
3938
|
+
/* @__PURE__ */ React28.createElement(import_editor_ui12.CollapseIcon, { open: isOpen, color: "secondary", fontSize: "tiny" })
|
|
3939
|
+
), /* @__PURE__ */ React28.createElement(import_ui22.Collapse, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto" }, /* @__PURE__ */ React28.createElement(import_ui22.Stack, { direction: "column", gap: 1, p: 2 }, group.props.map((overrideKey) => /* @__PURE__ */ React28.createElement(
|
|
3917
3940
|
OverridePropControl,
|
|
3918
3941
|
{
|
|
3919
3942
|
key: overrideKey,
|
|
@@ -3935,23 +3958,23 @@ function InstanceEditingPanel() {
|
|
|
3935
3958
|
if (!componentId || !overridableProps || !component) {
|
|
3936
3959
|
return null;
|
|
3937
3960
|
}
|
|
3938
|
-
const panelTitle = (0,
|
|
3961
|
+
const panelTitle = (0, import_i18n27.__)("Edit %s", "elementor").replace("%s", component.name);
|
|
3939
3962
|
const handleEditComponent = () => switchToComponent(componentId, componentInstanceId);
|
|
3940
3963
|
const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
|
|
3941
3964
|
const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
|
|
3942
3965
|
const isEmpty = groups.length === 0 || Object.keys(overridableProps.props).length === 0;
|
|
3943
|
-
return /* @__PURE__ */
|
|
3966
|
+
return /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(import_editor_panels3.PanelHeader, { sx: { justifyContent: "start", px: 2 } }, /* @__PURE__ */ React29.createElement(import_ui23.Stack, { direction: "row", alignItems: "center", flexGrow: 1, gap: 1, maxWidth: "100%" }, /* @__PURE__ */ React29.createElement(import_icons14.ComponentsIcon, { fontSize: "small", sx: { color: "text.tertiary" } }), /* @__PURE__ */ React29.createElement(import_editor_ui13.EllipsisWithTooltip, { title: component.name, as: import_editor_panels3.PanelHeaderTitle }), canEdit && /* @__PURE__ */ React29.createElement(import_ui23.Tooltip, { title: panelTitle }, /* @__PURE__ */ React29.createElement(import_ui23.IconButton, { size: "tiny", onClick: handleEditComponent, "aria-label": panelTitle }, /* @__PURE__ */ React29.createElement(import_icons14.PencilIcon, { fontSize: "tiny" }))))), /* @__PURE__ */ React29.createElement(import_editor_panels3.PanelBody, null, /* @__PURE__ */ React29.createElement(import_editor_controls4.ControlAdornmentsProvider, { items: (0, import_editor_editing_panel5.getFieldIndicators)("settings") }, isEmpty ? /* @__PURE__ */ React29.createElement(EmptyState2, { onEditComponent: handleEditComponent }) : /* @__PURE__ */ React29.createElement(import_ui23.Stack, { direction: "column", alignItems: "stretch" }, groups.map((group) => /* @__PURE__ */ React29.createElement(React29.Fragment, { key: group.id }, /* @__PURE__ */ React29.createElement(
|
|
3944
3967
|
OverridePropsGroup,
|
|
3945
3968
|
{
|
|
3946
3969
|
group,
|
|
3947
3970
|
props: overridableProps.props,
|
|
3948
3971
|
overrides
|
|
3949
3972
|
}
|
|
3950
|
-
), /* @__PURE__ */
|
|
3973
|
+
), /* @__PURE__ */ React29.createElement(import_ui23.Divider, null)))))));
|
|
3951
3974
|
}
|
|
3952
3975
|
|
|
3953
3976
|
// src/components/overridable-props/overridable-prop-control.tsx
|
|
3954
|
-
var
|
|
3977
|
+
var React30 = __toESM(require("react"));
|
|
3955
3978
|
var import_editor_controls5 = require("@elementor/editor-controls");
|
|
3956
3979
|
var import_editor_editing_panel6 = require("@elementor/editor-editing-panel");
|
|
3957
3980
|
function OverridablePropControl({
|
|
@@ -3997,7 +4020,7 @@ function OverridablePropControl({
|
|
|
3997
4020
|
});
|
|
3998
4021
|
const propValue = isComponentInstance2 ? (value.origin_value?.value).override_value : value.origin_value;
|
|
3999
4022
|
const objectPlaceholder = placeholder ? { [bind]: placeholder } : void 0;
|
|
4000
|
-
return /* @__PURE__ */
|
|
4023
|
+
return /* @__PURE__ */ React30.createElement(OverridablePropProvider, { value }, /* @__PURE__ */ React30.createElement(
|
|
4001
4024
|
import_editor_controls5.PropProvider,
|
|
4002
4025
|
{
|
|
4003
4026
|
...propContext,
|
|
@@ -4008,17 +4031,17 @@ function OverridablePropControl({
|
|
|
4008
4031
|
},
|
|
4009
4032
|
placeholder: objectPlaceholder
|
|
4010
4033
|
},
|
|
4011
|
-
/* @__PURE__ */
|
|
4034
|
+
/* @__PURE__ */ React30.createElement(import_editor_controls5.PropKeyProvider, { bind }, /* @__PURE__ */ React30.createElement(import_editor_controls5.ControlReplacementsProvider, { replacements: filteredReplacements }, /* @__PURE__ */ React30.createElement(Control, { ...props })))
|
|
4012
4035
|
));
|
|
4013
4036
|
}
|
|
4014
4037
|
|
|
4015
4038
|
// src/components/overridable-props/overridable-prop-indicator.tsx
|
|
4016
|
-
var
|
|
4039
|
+
var React32 = __toESM(require("react"));
|
|
4017
4040
|
var import_editor_controls6 = require("@elementor/editor-controls");
|
|
4018
4041
|
var import_editor_editing_panel7 = require("@elementor/editor-editing-panel");
|
|
4019
4042
|
var import_editor_elements16 = require("@elementor/editor-elements");
|
|
4020
|
-
var
|
|
4021
|
-
var
|
|
4043
|
+
var import_ui25 = require("@elementor/ui");
|
|
4044
|
+
var import_i18n29 = require("@wordpress/i18n");
|
|
4022
4045
|
|
|
4023
4046
|
// src/store/actions/set-overridable-prop.ts
|
|
4024
4047
|
var import_store58 = require("@elementor/store");
|
|
@@ -4085,13 +4108,13 @@ function setOverridableProp({
|
|
|
4085
4108
|
}
|
|
4086
4109
|
|
|
4087
4110
|
// src/components/overridable-props/indicator.tsx
|
|
4088
|
-
var
|
|
4111
|
+
var React31 = __toESM(require("react"));
|
|
4089
4112
|
var import_react17 = require("react");
|
|
4090
4113
|
var import_icons15 = require("@elementor/icons");
|
|
4091
|
-
var
|
|
4092
|
-
var
|
|
4114
|
+
var import_ui24 = require("@elementor/ui");
|
|
4115
|
+
var import_i18n28 = require("@wordpress/i18n");
|
|
4093
4116
|
var SIZE2 = "tiny";
|
|
4094
|
-
var IconContainer = (0,
|
|
4117
|
+
var IconContainer = (0, import_ui24.styled)(import_ui24.Box)`
|
|
4095
4118
|
pointer-events: none;
|
|
4096
4119
|
opacity: 0;
|
|
4097
4120
|
transition: opacity 0.2s ease-in-out;
|
|
@@ -4108,7 +4131,7 @@ var IconContainer = (0, import_ui23.styled)(import_ui23.Box)`
|
|
|
4108
4131
|
stroke-width: 2px;
|
|
4109
4132
|
}
|
|
4110
4133
|
`;
|
|
4111
|
-
var Content = (0,
|
|
4134
|
+
var Content = (0, import_ui24.styled)(import_ui24.Box)`
|
|
4112
4135
|
position: relative;
|
|
4113
4136
|
display: flex;
|
|
4114
4137
|
align-items: center;
|
|
@@ -4145,13 +4168,13 @@ var Content = (0, import_ui23.styled)(import_ui23.Box)`
|
|
|
4145
4168
|
}
|
|
4146
4169
|
}
|
|
4147
4170
|
`;
|
|
4148
|
-
var Indicator2 = (0, import_react17.forwardRef)(({ isOpen, isOverridable, ...props }, ref) => /* @__PURE__ */
|
|
4171
|
+
var Indicator2 = (0, import_react17.forwardRef)(({ isOpen, isOverridable, ...props }, ref) => /* @__PURE__ */ React31.createElement(Content, { ref, ...props, className: isOpen || isOverridable ? "enlarged" : "" }, /* @__PURE__ */ React31.createElement(
|
|
4149
4172
|
IconContainer,
|
|
4150
4173
|
{
|
|
4151
4174
|
className: "icon",
|
|
4152
|
-
"aria-label": isOverridable ? (0,
|
|
4175
|
+
"aria-label": isOverridable ? (0, import_i18n28.__)("Overridable property", "elementor") : (0, import_i18n28.__)("Make prop overridable", "elementor")
|
|
4153
4176
|
},
|
|
4154
|
-
isOverridable ? /* @__PURE__ */
|
|
4177
|
+
isOverridable ? /* @__PURE__ */ React31.createElement(import_icons15.CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React31.createElement(import_icons15.PlusIcon, { fontSize: SIZE2 })
|
|
4155
4178
|
)));
|
|
4156
4179
|
|
|
4157
4180
|
// src/components/overridable-props/utils/get-overridable-prop.ts
|
|
@@ -4175,7 +4198,7 @@ function OverridablePropIndicator() {
|
|
|
4175
4198
|
if (!isPropAllowed(propType) || !componentId || !overridableProps) {
|
|
4176
4199
|
return null;
|
|
4177
4200
|
}
|
|
4178
|
-
return /* @__PURE__ */
|
|
4201
|
+
return /* @__PURE__ */ React32.createElement(Content2, { componentId, overridableProps });
|
|
4179
4202
|
}
|
|
4180
4203
|
function Content2({ componentId, overridableProps }) {
|
|
4181
4204
|
const {
|
|
@@ -4189,11 +4212,11 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4189
4212
|
componentOverridablePropTypeUtil
|
|
4190
4213
|
);
|
|
4191
4214
|
const overridableValue = boundPropOverridableValue ?? contextOverridableValue;
|
|
4192
|
-
const popupState = (0,
|
|
4215
|
+
const popupState = (0, import_ui25.usePopupState)({
|
|
4193
4216
|
variant: "popover"
|
|
4194
4217
|
});
|
|
4195
|
-
const triggerProps = (0,
|
|
4196
|
-
const popoverProps = (0,
|
|
4218
|
+
const triggerProps = (0, import_ui25.bindTrigger)(popupState);
|
|
4219
|
+
const popoverProps = (0, import_ui25.bindPopover)(popupState);
|
|
4197
4220
|
const { elType } = (0, import_editor_elements16.getWidgetsCache)()?.[elementType.key] ?? { elType: "widget" };
|
|
4198
4221
|
const handleSubmit = ({ label, group }) => {
|
|
4199
4222
|
const propTypeDefault = propType.default ?? {};
|
|
@@ -4220,8 +4243,8 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4220
4243
|
popupState.close();
|
|
4221
4244
|
};
|
|
4222
4245
|
const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
|
|
4223
|
-
return /* @__PURE__ */
|
|
4224
|
-
|
|
4246
|
+
return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(import_ui25.Tooltip, { placement: "top", title: (0, import_i18n29.__)("Override Property", "elementor") }, /* @__PURE__ */ React32.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React32.createElement(
|
|
4247
|
+
import_ui25.Popover,
|
|
4225
4248
|
{
|
|
4226
4249
|
disableScrollLock: true,
|
|
4227
4250
|
anchorOrigin: {
|
|
@@ -4237,7 +4260,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4237
4260
|
},
|
|
4238
4261
|
...popoverProps
|
|
4239
4262
|
},
|
|
4240
|
-
/* @__PURE__ */
|
|
4263
|
+
/* @__PURE__ */ React32.createElement(
|
|
4241
4264
|
OverridablePropForm,
|
|
4242
4265
|
{
|
|
4243
4266
|
onSubmit: handleSubmit,
|
|
@@ -4255,150 +4278,16 @@ function isPropAllowed(propType) {
|
|
|
4255
4278
|
return propType.meta.overridable !== false;
|
|
4256
4279
|
}
|
|
4257
4280
|
|
|
4258
|
-
// src/hooks/cleanup-overridable-props-on-delete.ts
|
|
4259
|
-
var import_editor_elements17 = require("@elementor/editor-elements");
|
|
4260
|
-
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
|
|
4261
|
-
var import_store63 = require("@elementor/store");
|
|
4262
|
-
function initCleanupOverridablePropsOnDelete() {
|
|
4263
|
-
(0, import_editor_v1_adapters8.registerDataHook)("dependency", "document/elements/delete", (args) => {
|
|
4264
|
-
const state = (0, import_store63.__getState)();
|
|
4265
|
-
if (!state) {
|
|
4266
|
-
return true;
|
|
4267
|
-
}
|
|
4268
|
-
const currentComponentId = selectCurrentComponentId(state);
|
|
4269
|
-
if (!currentComponentId) {
|
|
4270
|
-
return true;
|
|
4271
|
-
}
|
|
4272
|
-
const overridableProps = selectOverridableProps(state, currentComponentId);
|
|
4273
|
-
if (!overridableProps || Object.keys(overridableProps.props).length === 0) {
|
|
4274
|
-
return true;
|
|
4275
|
-
}
|
|
4276
|
-
const containers = args.containers ?? (args.container ? [args.container] : []);
|
|
4277
|
-
if (containers.length === 0) {
|
|
4278
|
-
return true;
|
|
4279
|
-
}
|
|
4280
|
-
const deletedElementIds = collectDeletedElementIds(containers);
|
|
4281
|
-
if (deletedElementIds.length === 0) {
|
|
4282
|
-
return true;
|
|
4283
|
-
}
|
|
4284
|
-
const propKeysToDelete = Object.entries(overridableProps.props).filter(([, prop]) => deletedElementIds.includes(prop.elementId)).map(([propKey]) => propKey);
|
|
4285
|
-
if (propKeysToDelete.length === 0) {
|
|
4286
|
-
return true;
|
|
4287
|
-
}
|
|
4288
|
-
const remainingProps = Object.fromEntries(
|
|
4289
|
-
Object.entries(overridableProps.props).filter(([propKey]) => !propKeysToDelete.includes(propKey))
|
|
4290
|
-
);
|
|
4291
|
-
let updatedGroups = overridableProps.groups;
|
|
4292
|
-
for (const propKey of propKeysToDelete) {
|
|
4293
|
-
updatedGroups = removePropFromAllGroups(updatedGroups, propKey);
|
|
4294
|
-
}
|
|
4295
|
-
(0, import_store63.__dispatch)(
|
|
4296
|
-
slice.actions.setOverridableProps({
|
|
4297
|
-
componentId: currentComponentId,
|
|
4298
|
-
overridableProps: {
|
|
4299
|
-
...overridableProps,
|
|
4300
|
-
props: remainingProps,
|
|
4301
|
-
groups: updatedGroups
|
|
4302
|
-
}
|
|
4303
|
-
})
|
|
4304
|
-
);
|
|
4305
|
-
return true;
|
|
4306
|
-
});
|
|
4307
|
-
}
|
|
4308
|
-
function collectDeletedElementIds(containers) {
|
|
4309
|
-
const elementIds = containers.filter(Boolean).flatMap((container) => [container, ...(0, import_editor_elements17.getAllDescendants)(container)]).map((element) => element.model?.get?.("id") ?? element.id).filter((id2) => Boolean(id2));
|
|
4310
|
-
return elementIds;
|
|
4311
|
-
}
|
|
4312
|
-
|
|
4313
|
-
// src/hooks/regenerate-override-keys.ts
|
|
4314
|
-
var import_editor_elements18 = require("@elementor/editor-elements");
|
|
4315
|
-
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
4316
|
-
var import_utils9 = require("@elementor/utils");
|
|
4317
|
-
function initRegenerateOverrideKeys() {
|
|
4318
|
-
(0, import_editor_v1_adapters9.registerDataHook)("after", "document/elements/duplicate", (_args, result) => {
|
|
4319
|
-
regenerateOverrideKeysForContainers(result);
|
|
4320
|
-
});
|
|
4321
|
-
(0, import_editor_v1_adapters9.registerDataHook)("after", "document/elements/paste", (_args, result) => {
|
|
4322
|
-
regenerateOverrideKeysForContainers(result);
|
|
4323
|
-
});
|
|
4324
|
-
(0, import_editor_v1_adapters9.registerDataHook)("after", "document/elements/import", (_args, result) => {
|
|
4325
|
-
regenerateOverrideKeysForContainers(result);
|
|
4326
|
-
});
|
|
4327
|
-
}
|
|
4328
|
-
function regenerateOverrideKeysForContainers(result) {
|
|
4329
|
-
const containers = Array.isArray(result) ? result : [result];
|
|
4330
|
-
containers.forEach((container) => {
|
|
4331
|
-
regenerateOverrideKeysRecursive(container.id);
|
|
4332
|
-
});
|
|
4333
|
-
}
|
|
4334
|
-
function regenerateOverrideKeysRecursive(elementId) {
|
|
4335
|
-
const container = (0, import_editor_elements18.getContainer)(elementId);
|
|
4336
|
-
if (!container) {
|
|
4337
|
-
return;
|
|
4338
|
-
}
|
|
4339
|
-
(0, import_editor_elements18.getAllDescendants)(container).forEach(regenerateOverrideKeys);
|
|
4340
|
-
}
|
|
4341
|
-
function regenerateOverrideKeys(element) {
|
|
4342
|
-
if (!isComponentInstance(element.model.toJSON())) {
|
|
4343
|
-
return;
|
|
4344
|
-
}
|
|
4345
|
-
const settings = element.settings?.toJSON() ?? {};
|
|
4346
|
-
if (!hasOverrides(settings)) {
|
|
4347
|
-
return;
|
|
4348
|
-
}
|
|
4349
|
-
const componentInstance = settings.component_instance;
|
|
4350
|
-
const overrides = componentInstance.value.overrides;
|
|
4351
|
-
const newOverrides = overrides.value.map((override) => {
|
|
4352
|
-
if (!componentInstanceOverridePropTypeUtil.isValid(override)) {
|
|
4353
|
-
return override;
|
|
4354
|
-
}
|
|
4355
|
-
return {
|
|
4356
|
-
...override,
|
|
4357
|
-
value: {
|
|
4358
|
-
...override.value,
|
|
4359
|
-
override_key: (0, import_utils9.generateUniqueId)("prop")
|
|
4360
|
-
}
|
|
4361
|
-
};
|
|
4362
|
-
});
|
|
4363
|
-
const newComponentInstance = {
|
|
4364
|
-
...componentInstance,
|
|
4365
|
-
value: {
|
|
4366
|
-
...componentInstance.value,
|
|
4367
|
-
overrides: {
|
|
4368
|
-
...overrides,
|
|
4369
|
-
value: newOverrides
|
|
4370
|
-
}
|
|
4371
|
-
}
|
|
4372
|
-
};
|
|
4373
|
-
(0, import_editor_elements18.updateElementSettings)({
|
|
4374
|
-
id: element.id,
|
|
4375
|
-
props: { component_instance: newComponentInstance },
|
|
4376
|
-
withHistory: false
|
|
4377
|
-
});
|
|
4378
|
-
}
|
|
4379
|
-
function hasOverrides(settings) {
|
|
4380
|
-
if (!componentInstancePropTypeUtil.isValid(settings?.component_instance)) {
|
|
4381
|
-
return false;
|
|
4382
|
-
}
|
|
4383
|
-
const componentInstance = componentInstancePropTypeUtil.extract(settings?.component_instance);
|
|
4384
|
-
const overrides = componentInstance?.overrides;
|
|
4385
|
-
if (!componentInstanceOverridesPropTypeUtil.isValid(overrides)) {
|
|
4386
|
-
return false;
|
|
4387
|
-
}
|
|
4388
|
-
const overridesValue = overrides?.value;
|
|
4389
|
-
return !!overridesValue?.length;
|
|
4390
|
-
}
|
|
4391
|
-
|
|
4392
4281
|
// src/mcp/index.ts
|
|
4393
4282
|
var import_editor_mcp3 = require("@elementor/editor-mcp");
|
|
4394
4283
|
|
|
4395
4284
|
// src/mcp/save-as-component-tool.ts
|
|
4396
4285
|
var import_editor_canvas7 = require("@elementor/editor-canvas");
|
|
4397
|
-
var
|
|
4286
|
+
var import_editor_elements17 = require("@elementor/editor-elements");
|
|
4398
4287
|
var import_editor_mcp2 = require("@elementor/editor-mcp");
|
|
4399
4288
|
var import_http_client2 = require("@elementor/http-client");
|
|
4400
4289
|
var import_schema6 = require("@elementor/schema");
|
|
4401
|
-
var
|
|
4290
|
+
var import_utils9 = require("@elementor/utils");
|
|
4402
4291
|
var InputSchema = {
|
|
4403
4292
|
element_id: import_schema6.z.string().describe(
|
|
4404
4293
|
'The unique identifier of the element to save as a component. Use the "list-elements" tool to find available element IDs in the current document.'
|
|
@@ -4432,7 +4321,7 @@ var ERROR_MESSAGES3 = {
|
|
|
4432
4321
|
var handleSaveAsComponent = async (params) => {
|
|
4433
4322
|
const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
|
|
4434
4323
|
const validElementTypes = getValidElementTypes();
|
|
4435
|
-
const container = (0,
|
|
4324
|
+
const container = (0, import_editor_elements17.getContainer)(elementId);
|
|
4436
4325
|
if (!container) {
|
|
4437
4326
|
throw new Error(ERROR_MESSAGES3.ELEMENT_NOT_FOUND);
|
|
4438
4327
|
}
|
|
@@ -4448,7 +4337,7 @@ var handleSaveAsComponent = async (params) => {
|
|
|
4448
4337
|
if (overridableProps) {
|
|
4449
4338
|
updateElementDataWithOverridableProps(element, overridableProps);
|
|
4450
4339
|
}
|
|
4451
|
-
const uid = (0,
|
|
4340
|
+
const uid = (0, import_utils9.generateUniqueId)("component");
|
|
4452
4341
|
try {
|
|
4453
4342
|
await apiClient.validate({
|
|
4454
4343
|
items: [
|
|
@@ -4470,7 +4359,7 @@ var handleSaveAsComponent = async (params) => {
|
|
|
4470
4359
|
};
|
|
4471
4360
|
function enrichOverridableProps(input, rootElement) {
|
|
4472
4361
|
const enrichedProps = {};
|
|
4473
|
-
const defaultGroupId = (0,
|
|
4362
|
+
const defaultGroupId = (0, import_utils9.generateUniqueId)("group");
|
|
4474
4363
|
Object.entries(input.props).forEach(([, prop]) => {
|
|
4475
4364
|
const { elementId, propKey, label } = prop;
|
|
4476
4365
|
const element = findElementById(rootElement, elementId);
|
|
@@ -4479,7 +4368,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
4479
4368
|
}
|
|
4480
4369
|
const elType = element.elType;
|
|
4481
4370
|
const widgetType = element.widgetType || element.elType;
|
|
4482
|
-
const elementType = (0,
|
|
4371
|
+
const elementType = (0, import_editor_elements17.getElementType)(widgetType);
|
|
4483
4372
|
if (!elementType) {
|
|
4484
4373
|
throw new Error(
|
|
4485
4374
|
`Element type "${widgetType}" is not atomic or does not have a settings schema. Cannot expose property "${propKey}" for element "${elementId}".`
|
|
@@ -4491,7 +4380,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
4491
4380
|
`Property "${propKey}" does not exist in element "${elementId}" (type: ${widgetType}). Available properties: ${availableProps}`
|
|
4492
4381
|
);
|
|
4493
4382
|
}
|
|
4494
|
-
const overrideKey = (0,
|
|
4383
|
+
const overrideKey = (0, import_utils9.generateUniqueId)("prop");
|
|
4495
4384
|
const originValue = element.settings?.[propKey] ? element.settings[propKey] : elementType.propsSchema[propKey].default ?? null;
|
|
4496
4385
|
enrichedProps[overrideKey] = {
|
|
4497
4386
|
overrideKey,
|
|
@@ -4548,7 +4437,7 @@ function findElementById(root, targetId) {
|
|
|
4548
4437
|
return null;
|
|
4549
4438
|
}
|
|
4550
4439
|
function getValidElementTypes() {
|
|
4551
|
-
const types = (0,
|
|
4440
|
+
const types = (0, import_editor_elements17.getWidgetsCache)();
|
|
4552
4441
|
if (!types) {
|
|
4553
4442
|
return [];
|
|
4554
4443
|
}
|
|
@@ -4726,36 +4615,36 @@ function initMcp() {
|
|
|
4726
4615
|
|
|
4727
4616
|
// src/populate-store.ts
|
|
4728
4617
|
var import_react18 = require("react");
|
|
4729
|
-
var
|
|
4618
|
+
var import_store63 = require("@elementor/store");
|
|
4730
4619
|
function PopulateStore() {
|
|
4731
4620
|
(0, import_react18.useEffect)(() => {
|
|
4732
|
-
(0,
|
|
4621
|
+
(0, import_store63.__dispatch)(loadComponents());
|
|
4733
4622
|
}, []);
|
|
4734
4623
|
return null;
|
|
4735
4624
|
}
|
|
4736
4625
|
|
|
4737
4626
|
// src/prevent-circular-nesting.ts
|
|
4738
|
-
var
|
|
4627
|
+
var import_editor_elements18 = require("@elementor/editor-elements");
|
|
4739
4628
|
var import_editor_notifications4 = require("@elementor/editor-notifications");
|
|
4740
|
-
var
|
|
4741
|
-
var
|
|
4742
|
-
var
|
|
4629
|
+
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
|
|
4630
|
+
var import_store64 = require("@elementor/store");
|
|
4631
|
+
var import_i18n30 = require("@wordpress/i18n");
|
|
4743
4632
|
var COMPONENT_TYPE = "e-component";
|
|
4744
4633
|
var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
4745
4634
|
type: "default",
|
|
4746
|
-
message: (0,
|
|
4635
|
+
message: (0, import_i18n30.__)("Can't add this component - components that contain each other can't be nested.", "elementor"),
|
|
4747
4636
|
id: "circular-component-nesting-blocked"
|
|
4748
4637
|
};
|
|
4749
4638
|
function initCircularNestingPrevention() {
|
|
4750
|
-
(0,
|
|
4639
|
+
(0, import_editor_v1_adapters8.blockCommand)({
|
|
4751
4640
|
command: "document/elements/create",
|
|
4752
4641
|
condition: blockCircularCreate
|
|
4753
4642
|
});
|
|
4754
|
-
(0,
|
|
4643
|
+
(0, import_editor_v1_adapters8.blockCommand)({
|
|
4755
4644
|
command: "document/elements/move",
|
|
4756
4645
|
condition: blockCircularMove
|
|
4757
4646
|
});
|
|
4758
|
-
(0,
|
|
4647
|
+
(0, import_editor_v1_adapters8.blockCommand)({
|
|
4759
4648
|
command: "document/elements/paste",
|
|
4760
4649
|
condition: blockCircularPaste
|
|
4761
4650
|
});
|
|
@@ -4764,7 +4653,7 @@ function wouldCreateCircularNesting(componentIdToAdd) {
|
|
|
4764
4653
|
if (componentIdToAdd === void 0) {
|
|
4765
4654
|
return false;
|
|
4766
4655
|
}
|
|
4767
|
-
const state = (0,
|
|
4656
|
+
const state = (0, import_store64.__getState)();
|
|
4768
4657
|
const currentComponentId = selectCurrentComponentId(state);
|
|
4769
4658
|
const path = selectPath(state);
|
|
4770
4659
|
if (currentComponentId === null) {
|
|
@@ -4830,7 +4719,7 @@ function blockCircularMove(args) {
|
|
|
4830
4719
|
if (!container) {
|
|
4831
4720
|
return false;
|
|
4832
4721
|
}
|
|
4833
|
-
const allElements = (0,
|
|
4722
|
+
const allElements = (0, import_editor_elements18.getAllDescendants)(container);
|
|
4834
4723
|
return allElements.some((element) => {
|
|
4835
4724
|
const componentId = extractComponentIdFromContainer(element);
|
|
4836
4725
|
if (componentId === null) {
|
|
@@ -4862,19 +4751,19 @@ function blockCircularPaste(args) {
|
|
|
4862
4751
|
}
|
|
4863
4752
|
|
|
4864
4753
|
// src/store/actions/remove-component-styles.ts
|
|
4865
|
-
var
|
|
4754
|
+
var import_store66 = require("@elementor/store");
|
|
4866
4755
|
function removeComponentStyles(id2) {
|
|
4867
4756
|
apiClient.invalidateComponentConfigCache(id2);
|
|
4868
|
-
(0,
|
|
4757
|
+
(0, import_store66.__dispatch)(slice.actions.removeStyles({ id: id2 }));
|
|
4869
4758
|
}
|
|
4870
4759
|
|
|
4871
4760
|
// src/store/components-styles-provider.ts
|
|
4872
4761
|
var import_editor_styles_repository = require("@elementor/editor-styles-repository");
|
|
4873
|
-
var
|
|
4762
|
+
var import_store68 = require("@elementor/store");
|
|
4874
4763
|
var componentsStylesProvider = (0, import_editor_styles_repository.createStylesProvider)({
|
|
4875
4764
|
key: "components-styles",
|
|
4876
4765
|
priority: 100,
|
|
4877
|
-
subscribe: (cb) => (0,
|
|
4766
|
+
subscribe: (cb) => (0, import_store68.__subscribeWithSelector)(
|
|
4878
4767
|
(state) => state[SLICE_NAME],
|
|
4879
4768
|
() => {
|
|
4880
4769
|
cb();
|
|
@@ -4882,29 +4771,29 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
|
|
|
4882
4771
|
),
|
|
4883
4772
|
actions: {
|
|
4884
4773
|
all: () => {
|
|
4885
|
-
return selectFlatStyles((0,
|
|
4774
|
+
return selectFlatStyles((0, import_store68.__getState)());
|
|
4886
4775
|
},
|
|
4887
4776
|
get: (id2) => {
|
|
4888
|
-
return selectFlatStyles((0,
|
|
4777
|
+
return selectFlatStyles((0, import_store68.__getState)()).find((style) => style.id === id2) ?? null;
|
|
4889
4778
|
}
|
|
4890
4779
|
}
|
|
4891
4780
|
});
|
|
4892
4781
|
|
|
4893
4782
|
// src/sync/create-components-before-save.ts
|
|
4894
|
-
var
|
|
4895
|
-
var
|
|
4783
|
+
var import_editor_elements19 = require("@elementor/editor-elements");
|
|
4784
|
+
var import_store70 = require("@elementor/store");
|
|
4896
4785
|
async function createComponentsBeforeSave({
|
|
4897
4786
|
elements,
|
|
4898
4787
|
status
|
|
4899
4788
|
}) {
|
|
4900
|
-
const unpublishedComponents = selectUnpublishedComponents((0,
|
|
4789
|
+
const unpublishedComponents = selectUnpublishedComponents((0, import_store70.__getState)());
|
|
4901
4790
|
if (!unpublishedComponents.length) {
|
|
4902
4791
|
return;
|
|
4903
4792
|
}
|
|
4904
4793
|
try {
|
|
4905
4794
|
const uidToComponentId = await createComponents(unpublishedComponents, status);
|
|
4906
4795
|
updateComponentInstances(elements, uidToComponentId);
|
|
4907
|
-
(0,
|
|
4796
|
+
(0, import_store70.__dispatch)(
|
|
4908
4797
|
slice.actions.add(
|
|
4909
4798
|
unpublishedComponents.map((component) => ({
|
|
4910
4799
|
id: uidToComponentId.get(component.uid),
|
|
@@ -4914,7 +4803,7 @@ async function createComponentsBeforeSave({
|
|
|
4914
4803
|
}))
|
|
4915
4804
|
)
|
|
4916
4805
|
);
|
|
4917
|
-
(0,
|
|
4806
|
+
(0, import_store70.__dispatch)(slice.actions.resetUnpublished());
|
|
4918
4807
|
} catch (error) {
|
|
4919
4808
|
throw new Error(`Failed to publish components and update component instances: ${error}`);
|
|
4920
4809
|
}
|
|
@@ -4959,7 +4848,7 @@ function shouldUpdateElement(element, uidToComponentId) {
|
|
|
4959
4848
|
return { shouldUpdate: false, newComponentId: null };
|
|
4960
4849
|
}
|
|
4961
4850
|
function updateElementComponentId(elementId, componentId) {
|
|
4962
|
-
(0,
|
|
4851
|
+
(0, import_editor_elements19.updateElementSettings)({
|
|
4963
4852
|
id: elementId,
|
|
4964
4853
|
props: {
|
|
4965
4854
|
component_instance: {
|
|
@@ -4974,7 +4863,7 @@ function updateElementComponentId(elementId, componentId) {
|
|
|
4974
4863
|
}
|
|
4975
4864
|
|
|
4976
4865
|
// src/sync/set-component-overridable-props-settings-before-save.ts
|
|
4977
|
-
var
|
|
4866
|
+
var import_store72 = require("@elementor/store");
|
|
4978
4867
|
var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
4979
4868
|
container
|
|
4980
4869
|
}) => {
|
|
@@ -4982,7 +4871,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
|
4982
4871
|
if (!currentDocument || currentDocument.config.type !== COMPONENT_DOCUMENT_TYPE) {
|
|
4983
4872
|
return;
|
|
4984
4873
|
}
|
|
4985
|
-
const overridableProps = selectOverridableProps((0,
|
|
4874
|
+
const overridableProps = selectOverridableProps((0, import_store72.__getState)(), currentDocument.id);
|
|
4986
4875
|
if (overridableProps) {
|
|
4987
4876
|
container.settings.set("overridable_props", overridableProps);
|
|
4988
4877
|
}
|
|
@@ -4990,7 +4879,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
|
4990
4879
|
|
|
4991
4880
|
// src/sync/update-archived-component-before-save.ts
|
|
4992
4881
|
var import_editor_notifications5 = require("@elementor/editor-notifications");
|
|
4993
|
-
var
|
|
4882
|
+
var import_store74 = require("@elementor/store");
|
|
4994
4883
|
var failedNotification = (message) => ({
|
|
4995
4884
|
type: "error",
|
|
4996
4885
|
message: `Failed to archive components: ${message}`,
|
|
@@ -4998,7 +4887,7 @@ var failedNotification = (message) => ({
|
|
|
4998
4887
|
});
|
|
4999
4888
|
var updateArchivedComponentBeforeSave = async () => {
|
|
5000
4889
|
try {
|
|
5001
|
-
const archivedComponents = selectArchivedThisSession((0,
|
|
4890
|
+
const archivedComponents = selectArchivedThisSession((0, import_store74.__getState)());
|
|
5002
4891
|
if (!archivedComponents.length) {
|
|
5003
4892
|
return;
|
|
5004
4893
|
}
|
|
@@ -5013,15 +4902,15 @@ var updateArchivedComponentBeforeSave = async () => {
|
|
|
5013
4902
|
};
|
|
5014
4903
|
|
|
5015
4904
|
// src/sync/update-component-title-before-save.ts
|
|
5016
|
-
var
|
|
4905
|
+
var import_store76 = require("@elementor/store");
|
|
5017
4906
|
var updateComponentTitleBeforeSave = async () => {
|
|
5018
|
-
const updatedComponentNames = selectUpdatedComponentNames((0,
|
|
4907
|
+
const updatedComponentNames = selectUpdatedComponentNames((0, import_store76.__getState)());
|
|
5019
4908
|
if (!updatedComponentNames.length) {
|
|
5020
4909
|
return;
|
|
5021
4910
|
}
|
|
5022
4911
|
const result = await apiClient.updateComponentTitle(updatedComponentNames);
|
|
5023
4912
|
if (result.failedIds.length === 0) {
|
|
5024
|
-
(0,
|
|
4913
|
+
(0, import_store76.__dispatch)(slice.actions.cleanUpdatedComponentNames());
|
|
5025
4914
|
}
|
|
5026
4915
|
};
|
|
5027
4916
|
|
|
@@ -5053,6 +4942,155 @@ var beforeSave = ({ container, status }) => {
|
|
|
5053
4942
|
]);
|
|
5054
4943
|
};
|
|
5055
4944
|
|
|
4945
|
+
// src/sync/cleanup-overridable-props-on-delete.ts
|
|
4946
|
+
var import_editor_elements20 = require("@elementor/editor-elements");
|
|
4947
|
+
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
4948
|
+
var import_store78 = require("@elementor/store");
|
|
4949
|
+
function initCleanupOverridablePropsOnDelete() {
|
|
4950
|
+
(0, import_editor_v1_adapters9.registerDataHook)("dependency", "document/elements/delete", (args) => {
|
|
4951
|
+
const state = (0, import_store78.__getState)();
|
|
4952
|
+
if (!state) {
|
|
4953
|
+
return true;
|
|
4954
|
+
}
|
|
4955
|
+
const currentComponentId = selectCurrentComponentId(state);
|
|
4956
|
+
if (!currentComponentId) {
|
|
4957
|
+
return true;
|
|
4958
|
+
}
|
|
4959
|
+
const overridableProps = selectOverridableProps(state, currentComponentId);
|
|
4960
|
+
if (!overridableProps || Object.keys(overridableProps.props).length === 0) {
|
|
4961
|
+
return true;
|
|
4962
|
+
}
|
|
4963
|
+
const containers = args.containers ?? (args.container ? [args.container] : []);
|
|
4964
|
+
if (containers.length === 0) {
|
|
4965
|
+
return true;
|
|
4966
|
+
}
|
|
4967
|
+
const deletedElementIds = collectDeletedElementIds(containers);
|
|
4968
|
+
if (deletedElementIds.length === 0) {
|
|
4969
|
+
return true;
|
|
4970
|
+
}
|
|
4971
|
+
const propKeysToDelete = Object.entries(overridableProps.props).filter(([, prop]) => deletedElementIds.includes(prop.elementId)).map(([propKey]) => propKey);
|
|
4972
|
+
if (propKeysToDelete.length === 0) {
|
|
4973
|
+
return true;
|
|
4974
|
+
}
|
|
4975
|
+
const remainingProps = Object.fromEntries(
|
|
4976
|
+
Object.entries(overridableProps.props).filter(([propKey]) => !propKeysToDelete.includes(propKey))
|
|
4977
|
+
);
|
|
4978
|
+
let updatedGroups = overridableProps.groups;
|
|
4979
|
+
for (const propKey of propKeysToDelete) {
|
|
4980
|
+
updatedGroups = removePropFromAllGroups(updatedGroups, propKey);
|
|
4981
|
+
}
|
|
4982
|
+
(0, import_store78.__dispatch)(
|
|
4983
|
+
slice.actions.setOverridableProps({
|
|
4984
|
+
componentId: currentComponentId,
|
|
4985
|
+
overridableProps: {
|
|
4986
|
+
...overridableProps,
|
|
4987
|
+
props: remainingProps,
|
|
4988
|
+
groups: updatedGroups
|
|
4989
|
+
}
|
|
4990
|
+
})
|
|
4991
|
+
);
|
|
4992
|
+
return true;
|
|
4993
|
+
});
|
|
4994
|
+
}
|
|
4995
|
+
function collectDeletedElementIds(containers) {
|
|
4996
|
+
const elementIds = containers.filter(Boolean).flatMap((container) => [container, ...(0, import_editor_elements20.getAllDescendants)(container)]).map((element) => element.model?.get?.("id") ?? element.id).filter((id2) => Boolean(id2));
|
|
4997
|
+
return elementIds;
|
|
4998
|
+
}
|
|
4999
|
+
|
|
5000
|
+
// src/sync/load-component-data-after-instance-added.ts
|
|
5001
|
+
var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
|
|
5002
|
+
function initLoadComponentDataAfterInstanceAdded() {
|
|
5003
|
+
(0, import_editor_v1_adapters10.registerDataHook)("after", "document/elements/paste", (_args, result) => {
|
|
5004
|
+
load(result);
|
|
5005
|
+
});
|
|
5006
|
+
(0, import_editor_v1_adapters10.registerDataHook)("after", "document/elements/import", (_args, result) => {
|
|
5007
|
+
load(result);
|
|
5008
|
+
});
|
|
5009
|
+
}
|
|
5010
|
+
function load(result) {
|
|
5011
|
+
const containers = Array.isArray(result) ? result : [result];
|
|
5012
|
+
loadComponentsAssets(containers.map((container) => container.model.toJSON()));
|
|
5013
|
+
}
|
|
5014
|
+
|
|
5015
|
+
// src/sync/regenerate-override-keys.ts
|
|
5016
|
+
var import_editor_elements21 = require("@elementor/editor-elements");
|
|
5017
|
+
var import_editor_v1_adapters11 = require("@elementor/editor-v1-adapters");
|
|
5018
|
+
var import_utils10 = require("@elementor/utils");
|
|
5019
|
+
function initRegenerateOverrideKeys() {
|
|
5020
|
+
(0, import_editor_v1_adapters11.registerDataHook)("after", "document/elements/duplicate", (_args, result) => {
|
|
5021
|
+
regenerateOverrideKeysForContainers(result);
|
|
5022
|
+
});
|
|
5023
|
+
(0, import_editor_v1_adapters11.registerDataHook)("after", "document/elements/paste", (_args, result) => {
|
|
5024
|
+
regenerateOverrideKeysForContainers(result);
|
|
5025
|
+
});
|
|
5026
|
+
(0, import_editor_v1_adapters11.registerDataHook)("after", "document/elements/import", (_args, result) => {
|
|
5027
|
+
regenerateOverrideKeysForContainers(result);
|
|
5028
|
+
});
|
|
5029
|
+
}
|
|
5030
|
+
function regenerateOverrideKeysForContainers(result) {
|
|
5031
|
+
const containers = Array.isArray(result) ? result : [result];
|
|
5032
|
+
containers.forEach((container) => {
|
|
5033
|
+
regenerateOverrideKeysRecursive(container.id);
|
|
5034
|
+
});
|
|
5035
|
+
}
|
|
5036
|
+
function regenerateOverrideKeysRecursive(elementId) {
|
|
5037
|
+
const container = (0, import_editor_elements21.getContainer)(elementId);
|
|
5038
|
+
if (!container) {
|
|
5039
|
+
return;
|
|
5040
|
+
}
|
|
5041
|
+
(0, import_editor_elements21.getAllDescendants)(container).forEach(regenerateOverrideKeys);
|
|
5042
|
+
}
|
|
5043
|
+
function regenerateOverrideKeys(element) {
|
|
5044
|
+
if (!isComponentInstance(element.model.toJSON())) {
|
|
5045
|
+
return;
|
|
5046
|
+
}
|
|
5047
|
+
const settings = element.settings?.toJSON() ?? {};
|
|
5048
|
+
if (!hasOverrides(settings)) {
|
|
5049
|
+
return;
|
|
5050
|
+
}
|
|
5051
|
+
const componentInstance = settings.component_instance;
|
|
5052
|
+
const overrides = componentInstance.value.overrides;
|
|
5053
|
+
const newOverrides = overrides.value.map((override) => {
|
|
5054
|
+
if (!componentInstanceOverridePropTypeUtil.isValid(override)) {
|
|
5055
|
+
return override;
|
|
5056
|
+
}
|
|
5057
|
+
return {
|
|
5058
|
+
...override,
|
|
5059
|
+
value: {
|
|
5060
|
+
...override.value,
|
|
5061
|
+
override_key: (0, import_utils10.generateUniqueId)("prop")
|
|
5062
|
+
}
|
|
5063
|
+
};
|
|
5064
|
+
});
|
|
5065
|
+
const newComponentInstance = {
|
|
5066
|
+
...componentInstance,
|
|
5067
|
+
value: {
|
|
5068
|
+
...componentInstance.value,
|
|
5069
|
+
overrides: {
|
|
5070
|
+
...overrides,
|
|
5071
|
+
value: newOverrides
|
|
5072
|
+
}
|
|
5073
|
+
}
|
|
5074
|
+
};
|
|
5075
|
+
(0, import_editor_elements21.updateElementSettings)({
|
|
5076
|
+
id: element.id,
|
|
5077
|
+
props: { component_instance: newComponentInstance },
|
|
5078
|
+
withHistory: false
|
|
5079
|
+
});
|
|
5080
|
+
}
|
|
5081
|
+
function hasOverrides(settings) {
|
|
5082
|
+
if (!componentInstancePropTypeUtil.isValid(settings?.component_instance)) {
|
|
5083
|
+
return false;
|
|
5084
|
+
}
|
|
5085
|
+
const componentInstance = componentInstancePropTypeUtil.extract(settings?.component_instance);
|
|
5086
|
+
const overrides = componentInstance?.overrides;
|
|
5087
|
+
if (!componentInstanceOverridesPropTypeUtil.isValid(overrides)) {
|
|
5088
|
+
return false;
|
|
5089
|
+
}
|
|
5090
|
+
const overridesValue = overrides?.value;
|
|
5091
|
+
return !!overridesValue?.length;
|
|
5092
|
+
}
|
|
5093
|
+
|
|
5056
5094
|
// src/init.ts
|
|
5057
5095
|
function init() {
|
|
5058
5096
|
import_editor_styles_repository2.stylesRepository.register(componentsStylesProvider);
|
|
@@ -5062,18 +5100,18 @@ function init() {
|
|
|
5062
5100
|
COMPONENT_WIDGET_TYPE,
|
|
5063
5101
|
(options) => createComponentType({ ...options, showLockedByModal: openEditModeDialog })
|
|
5064
5102
|
);
|
|
5065
|
-
(0,
|
|
5103
|
+
(0, import_editor_v1_adapters12.registerDataHook)("dependency", "editor/documents/close", (args) => {
|
|
5066
5104
|
const document = (0, import_editor_documents13.getV1CurrentDocument)();
|
|
5067
5105
|
if (document.config.type === COMPONENT_DOCUMENT_TYPE) {
|
|
5068
5106
|
args.mode = "autosave";
|
|
5069
5107
|
}
|
|
5070
5108
|
return true;
|
|
5071
5109
|
});
|
|
5072
|
-
(0,
|
|
5110
|
+
(0, import_editor_v1_adapters12.registerDataHook)("after", "preview/drop", onElementDrop);
|
|
5073
5111
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
5074
5112
|
(0, import_editor_elements_panel.injectTab)({
|
|
5075
5113
|
id: "components",
|
|
5076
|
-
label: (0,
|
|
5114
|
+
label: (0, import_i18n31.__)("Components", "elementor"),
|
|
5077
5115
|
component: Components,
|
|
5078
5116
|
position: 1
|
|
5079
5117
|
});
|
|
@@ -5093,7 +5131,7 @@ function init() {
|
|
|
5093
5131
|
id: "component-panel-header",
|
|
5094
5132
|
component: ComponentPanelHeader
|
|
5095
5133
|
});
|
|
5096
|
-
(0,
|
|
5134
|
+
(0, import_editor_v1_adapters12.registerDataHook)("after", "editor/documents/attach-preview", async () => {
|
|
5097
5135
|
const { id: id2, config } = (0, import_editor_documents13.getV1CurrentDocument)();
|
|
5098
5136
|
if (id2) {
|
|
5099
5137
|
removeComponentStyles(id2);
|
|
@@ -5124,6 +5162,7 @@ function init() {
|
|
|
5124
5162
|
initMcp();
|
|
5125
5163
|
initCircularNestingPrevention();
|
|
5126
5164
|
initNonAtomicNestingPrevention();
|
|
5165
|
+
initLoadComponentDataAfterInstanceAdded();
|
|
5127
5166
|
}
|
|
5128
5167
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5129
5168
|
0 && (module.exports = {
|