@elementor/editor-components 3.35.0-461 → 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 +131 -108
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +111 -88
- 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/utils/is-pro-user.ts +26 -0
package/dist/index.mjs
CHANGED
|
@@ -17,7 +17,7 @@ import { __registerPanel as registerPanel } from "@elementor/editor-panels";
|
|
|
17
17
|
import { stylesRepository } from "@elementor/editor-styles-repository";
|
|
18
18
|
import { registerDataHook as registerDataHook4 } from "@elementor/editor-v1-adapters";
|
|
19
19
|
import { __registerSlice as registerSlice } from "@elementor/store";
|
|
20
|
-
import { __ as
|
|
20
|
+
import { __ as __31 } from "@wordpress/i18n";
|
|
21
21
|
|
|
22
22
|
// src/component-instance-transformer.ts
|
|
23
23
|
import { createTransformer } from "@elementor/editor-canvas";
|
|
@@ -1683,7 +1683,7 @@ function getComponentName() {
|
|
|
1683
1683
|
}
|
|
1684
1684
|
|
|
1685
1685
|
// src/components/components-tab/components.tsx
|
|
1686
|
-
import * as
|
|
1686
|
+
import * as React19 from "react";
|
|
1687
1687
|
import { ThemeProvider as ThemeProvider2 } from "@elementor/editor-ui";
|
|
1688
1688
|
|
|
1689
1689
|
// src/hooks/use-components.ts
|
|
@@ -1694,6 +1694,17 @@ var useComponents = () => {
|
|
|
1694
1694
|
return { components, isLoading };
|
|
1695
1695
|
};
|
|
1696
1696
|
|
|
1697
|
+
// src/utils/is-pro-user.ts
|
|
1698
|
+
function isProUser() {
|
|
1699
|
+
const extendedWindow = window;
|
|
1700
|
+
const hasPro = extendedWindow.elementor?.helpers?.hasPro?.() ?? false;
|
|
1701
|
+
if (!hasPro) {
|
|
1702
|
+
return false;
|
|
1703
|
+
}
|
|
1704
|
+
const isProActive = extendedWindow.elementorPro?.config?.isActive ?? false;
|
|
1705
|
+
return isProActive;
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1697
1708
|
// src/components/components-tab/component-search.tsx
|
|
1698
1709
|
import * as React12 from "react";
|
|
1699
1710
|
import { SearchIcon } from "@elementor/icons";
|
|
@@ -2783,14 +2794,26 @@ var useFilteredComponents = () => {
|
|
|
2783
2794
|
};
|
|
2784
2795
|
};
|
|
2785
2796
|
|
|
2797
|
+
// src/components/components-tab/components-pro-notification.tsx
|
|
2798
|
+
import * as React18 from "react";
|
|
2799
|
+
import { InfoAlert } from "@elementor/editor-ui";
|
|
2800
|
+
import { Box as Box12, Typography as Typography10 } from "@elementor/ui";
|
|
2801
|
+
import { __ as __21 } from "@wordpress/i18n";
|
|
2802
|
+
function ComponentsProNotification() {
|
|
2803
|
+
return /* @__PURE__ */ React18.createElement(Box12, { sx: { px: 2 } }, /* @__PURE__ */ React18.createElement(InfoAlert, null, /* @__PURE__ */ React18.createElement(Typography10, { variant: "caption", component: "span" }, /* @__PURE__ */ React18.createElement(Typography10, { variant: "caption", component: "span", fontWeight: "bold" }, __21("Try Components for free:", "elementor")), " ", __21(
|
|
2804
|
+
"Soon Components will be part of the Pro subscription, but what you create now will remain on your site.",
|
|
2805
|
+
"elementor"
|
|
2806
|
+
))));
|
|
2807
|
+
}
|
|
2808
|
+
|
|
2786
2809
|
// src/components/components-tab/components.tsx
|
|
2787
2810
|
var ComponentsContent = () => {
|
|
2788
2811
|
const { components, isLoading } = useComponents();
|
|
2789
2812
|
const hasComponents = !isLoading && components.length > 0;
|
|
2790
|
-
return /* @__PURE__ */
|
|
2813
|
+
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));
|
|
2791
2814
|
};
|
|
2792
2815
|
var Components = () => {
|
|
2793
|
-
return /* @__PURE__ */
|
|
2816
|
+
return /* @__PURE__ */ React19.createElement(ThemeProvider2, null, /* @__PURE__ */ React19.createElement(SearchProvider, { localStorageKey: "elementor-components-search" }, /* @__PURE__ */ React19.createElement(ComponentsContent, null)));
|
|
2794
2817
|
};
|
|
2795
2818
|
|
|
2796
2819
|
// src/components/consts.ts
|
|
@@ -2798,15 +2821,15 @@ var COMPONENT_DOCUMENT_TYPE = "elementor_component";
|
|
|
2798
2821
|
var OVERRIDABLE_PROP_REPLACEMENT_ID = "overridable-prop";
|
|
2799
2822
|
|
|
2800
2823
|
// src/components/create-component-form/create-component-form.tsx
|
|
2801
|
-
import * as
|
|
2824
|
+
import * as React20 from "react";
|
|
2802
2825
|
import { useEffect as useEffect2, useMemo as useMemo3, useRef as useRef5, useState as useState9 } from "react";
|
|
2803
2826
|
import { getElementLabel } from "@elementor/editor-elements";
|
|
2804
2827
|
import { notify as notify3 } from "@elementor/editor-notifications";
|
|
2805
2828
|
import { Form as FormElement, ThemeProvider as ThemeProvider3 } from "@elementor/editor-ui";
|
|
2806
2829
|
import { ComponentsIcon as ComponentsIcon3 } from "@elementor/icons";
|
|
2807
2830
|
import { __getState as getState15 } from "@elementor/store";
|
|
2808
|
-
import { Button as Button5, FormLabel as FormLabel2, Grid as Grid2, Popover as Popover3, Stack as Stack11, TextField as TextField3, Typography as
|
|
2809
|
-
import { __ as
|
|
2831
|
+
import { Button as Button5, FormLabel as FormLabel2, Grid as Grid2, Popover as Popover3, Stack as Stack11, TextField as TextField3, Typography as Typography11 } from "@elementor/ui";
|
|
2832
|
+
import { __ as __23 } from "@wordpress/i18n";
|
|
2810
2833
|
|
|
2811
2834
|
// src/prevent-non-atomic-nesting.ts
|
|
2812
2835
|
import { isAtomicWidget } from "@elementor/editor-canvas";
|
|
@@ -2814,10 +2837,10 @@ import { getAllDescendants as getAllDescendants2, getElementType } from "@elemen
|
|
|
2814
2837
|
import { notify as notify2 } from "@elementor/editor-notifications";
|
|
2815
2838
|
import { blockCommand } from "@elementor/editor-v1-adapters";
|
|
2816
2839
|
import { __getStore as getStore } from "@elementor/store";
|
|
2817
|
-
import { __ as
|
|
2840
|
+
import { __ as __22 } from "@wordpress/i18n";
|
|
2818
2841
|
var NON_ATOMIC_ELEMENT_ALERT = {
|
|
2819
2842
|
type: "default",
|
|
2820
|
-
message:
|
|
2843
|
+
message: __22("This widget isn't compatible with components. Use atomic elements instead.", "elementor"),
|
|
2821
2844
|
id: "non-atomic-element-blocked"
|
|
2822
2845
|
};
|
|
2823
2846
|
function initNonAtomicNestingPrevention() {
|
|
@@ -3037,7 +3060,7 @@ function CreateComponentForm() {
|
|
|
3037
3060
|
if (nonAtomicElements.length > 0) {
|
|
3038
3061
|
notify3({
|
|
3039
3062
|
type: "default",
|
|
3040
|
-
message:
|
|
3063
|
+
message: __23(
|
|
3041
3064
|
"Components require atomic elements only. Remove widgets to create this component.",
|
|
3042
3065
|
"elementor"
|
|
3043
3066
|
),
|
|
@@ -3076,12 +3099,12 @@ function CreateComponentForm() {
|
|
|
3076
3099
|
}
|
|
3077
3100
|
notify3({
|
|
3078
3101
|
type: "success",
|
|
3079
|
-
message:
|
|
3102
|
+
message: __23("Component created successfully.", "elementor"),
|
|
3080
3103
|
id: `component-saved-successfully-${uid}`
|
|
3081
3104
|
});
|
|
3082
3105
|
resetAndClosePopup();
|
|
3083
3106
|
} catch {
|
|
3084
|
-
const errorMessage =
|
|
3107
|
+
const errorMessage = __23("Failed to create component. Please try again.", "elementor");
|
|
3085
3108
|
notify3({
|
|
3086
3109
|
type: "error",
|
|
3087
3110
|
message: errorMessage,
|
|
@@ -3100,7 +3123,7 @@ function CreateComponentForm() {
|
|
|
3100
3123
|
...eventData.current
|
|
3101
3124
|
});
|
|
3102
3125
|
};
|
|
3103
|
-
return /* @__PURE__ */
|
|
3126
|
+
return /* @__PURE__ */ React20.createElement(ThemeProvider3, null, /* @__PURE__ */ React20.createElement(
|
|
3104
3127
|
Popover3,
|
|
3105
3128
|
{
|
|
3106
3129
|
open: element !== null,
|
|
@@ -3108,7 +3131,7 @@ function CreateComponentForm() {
|
|
|
3108
3131
|
anchorReference: "anchorPosition",
|
|
3109
3132
|
anchorPosition
|
|
3110
3133
|
},
|
|
3111
|
-
element !== null && /* @__PURE__ */
|
|
3134
|
+
element !== null && /* @__PURE__ */ React20.createElement(
|
|
3112
3135
|
Form2,
|
|
3113
3136
|
{
|
|
3114
3137
|
initialValues: { componentName: element.elementLabel },
|
|
@@ -3144,13 +3167,13 @@ var Form2 = ({
|
|
|
3144
3167
|
}
|
|
3145
3168
|
};
|
|
3146
3169
|
const texts = {
|
|
3147
|
-
heading:
|
|
3148
|
-
name:
|
|
3149
|
-
cancel:
|
|
3150
|
-
create:
|
|
3170
|
+
heading: __23("Create component", "elementor"),
|
|
3171
|
+
name: __23("Name", "elementor"),
|
|
3172
|
+
cancel: __23("Cancel", "elementor"),
|
|
3173
|
+
create: __23("Create", "elementor")
|
|
3151
3174
|
};
|
|
3152
3175
|
const nameInputId = "component-name";
|
|
3153
|
-
return /* @__PURE__ */
|
|
3176
|
+
return /* @__PURE__ */ React20.createElement(FormElement, { onSubmit: handleSubmit }, /* @__PURE__ */ React20.createElement(Stack11, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React20.createElement(
|
|
3154
3177
|
Stack11,
|
|
3155
3178
|
{
|
|
3156
3179
|
direction: "row",
|
|
@@ -3159,9 +3182,9 @@ var Form2 = ({
|
|
|
3159
3182
|
px: 1.5,
|
|
3160
3183
|
sx: { columnGap: 0.5, borderBottom: "1px solid", borderColor: "divider", width: "100%" }
|
|
3161
3184
|
},
|
|
3162
|
-
/* @__PURE__ */
|
|
3163
|
-
/* @__PURE__ */
|
|
3164
|
-
), /* @__PURE__ */
|
|
3185
|
+
/* @__PURE__ */ React20.createElement(ComponentsIcon3, { fontSize: FONT_SIZE }),
|
|
3186
|
+
/* @__PURE__ */ React20.createElement(Typography11, { variant: "caption", sx: { color: "text.primary", fontWeight: "500", lineHeight: 1 } }, texts.heading)
|
|
3187
|
+
), /* @__PURE__ */ React20.createElement(Grid2, { container: true, gap: 0.75, alignItems: "start", p: 1.5 }, /* @__PURE__ */ React20.createElement(Grid2, { item: true, xs: 12 }, /* @__PURE__ */ React20.createElement(FormLabel2, { htmlFor: nameInputId, size: "tiny" }, texts.name)), /* @__PURE__ */ React20.createElement(Grid2, { item: true, xs: 12 }, /* @__PURE__ */ React20.createElement(
|
|
3165
3188
|
TextField3,
|
|
3166
3189
|
{
|
|
3167
3190
|
id: nameInputId,
|
|
@@ -3173,11 +3196,11 @@ var Form2 = ({
|
|
|
3173
3196
|
error: Boolean(errors.componentName),
|
|
3174
3197
|
helperText: errors.componentName
|
|
3175
3198
|
}
|
|
3176
|
-
))), /* @__PURE__ */
|
|
3199
|
+
))), /* @__PURE__ */ React20.createElement(Stack11, { direction: "row", justifyContent: "flex-end", alignSelf: "end", py: 1, px: 1.5 }, /* @__PURE__ */ React20.createElement(Button5, { onClick: closePopup, color: "secondary", variant: "text", size: "small" }, texts.cancel), /* @__PURE__ */ React20.createElement(Button5, { type: "submit", disabled: !isValid, variant: "contained", color: "primary", size: "small" }, texts.create))));
|
|
3177
3200
|
};
|
|
3178
3201
|
|
|
3179
3202
|
// src/components/edit-component/edit-component.tsx
|
|
3180
|
-
import * as
|
|
3203
|
+
import * as React22 from "react";
|
|
3181
3204
|
import { useEffect as useEffect5 } from "react";
|
|
3182
3205
|
import { getV1DocumentsManager as getV1DocumentsManager5 } from "@elementor/editor-documents";
|
|
3183
3206
|
import { __privateListenTo as listenTo, commandEndEvent as commandEndEvent2 } from "@elementor/editor-v1-adapters";
|
|
@@ -3200,10 +3223,10 @@ function updateCurrentComponent({
|
|
|
3200
3223
|
}
|
|
3201
3224
|
|
|
3202
3225
|
// src/components/edit-component/component-modal.tsx
|
|
3203
|
-
import * as
|
|
3226
|
+
import * as React21 from "react";
|
|
3204
3227
|
import { useEffect as useEffect4 } from "react";
|
|
3205
3228
|
import { createPortal } from "react-dom";
|
|
3206
|
-
import { __ as
|
|
3229
|
+
import { __ as __24 } from "@wordpress/i18n";
|
|
3207
3230
|
|
|
3208
3231
|
// src/hooks/use-canvas-document.ts
|
|
3209
3232
|
import {
|
|
@@ -3296,7 +3319,7 @@ function ComponentModal({ element, onClose }) {
|
|
|
3296
3319
|
return null;
|
|
3297
3320
|
}
|
|
3298
3321
|
return createPortal(
|
|
3299
|
-
/* @__PURE__ */
|
|
3322
|
+
/* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement(BlockEditPage, null), /* @__PURE__ */ React21.createElement(Backdrop, { canvas: canvasDocument, element, onClose })),
|
|
3300
3323
|
canvasDocument.body
|
|
3301
3324
|
);
|
|
3302
3325
|
}
|
|
@@ -3320,7 +3343,7 @@ function Backdrop({ canvas, element, onClose }) {
|
|
|
3320
3343
|
onClose();
|
|
3321
3344
|
}
|
|
3322
3345
|
};
|
|
3323
|
-
return /* @__PURE__ */
|
|
3346
|
+
return /* @__PURE__ */ React21.createElement(
|
|
3324
3347
|
"div",
|
|
3325
3348
|
{
|
|
3326
3349
|
style: backdropStyle,
|
|
@@ -3328,7 +3351,7 @@ function Backdrop({ canvas, element, onClose }) {
|
|
|
3328
3351
|
onKeyDown: handleKeyDown,
|
|
3329
3352
|
role: "button",
|
|
3330
3353
|
tabIndex: 0,
|
|
3331
|
-
"aria-label":
|
|
3354
|
+
"aria-label": __24("Exit component editing mode", "elementor")
|
|
3332
3355
|
}
|
|
3333
3356
|
);
|
|
3334
3357
|
}
|
|
@@ -3372,7 +3395,7 @@ function BlockEditPage() {
|
|
|
3372
3395
|
}
|
|
3373
3396
|
}
|
|
3374
3397
|
`;
|
|
3375
|
-
return /* @__PURE__ */
|
|
3398
|
+
return /* @__PURE__ */ React21.createElement("style", { "data-e-style-id": "e-block-v3-document-handles-styles" }, blockV3DocumentHandlesStyles);
|
|
3376
3399
|
}
|
|
3377
3400
|
|
|
3378
3401
|
// src/components/edit-component/edit-component.tsx
|
|
@@ -3385,7 +3408,7 @@ function EditComponent() {
|
|
|
3385
3408
|
if (!elementDom) {
|
|
3386
3409
|
return null;
|
|
3387
3410
|
}
|
|
3388
|
-
return /* @__PURE__ */
|
|
3411
|
+
return /* @__PURE__ */ React22.createElement(ComponentModal, { element: elementDom, onClose });
|
|
3389
3412
|
}
|
|
3390
3413
|
function useHandleDocumentSwitches() {
|
|
3391
3414
|
const documentsManager = getV1DocumentsManager5();
|
|
@@ -3455,26 +3478,26 @@ function getComponentDOMElement(id2) {
|
|
|
3455
3478
|
}
|
|
3456
3479
|
|
|
3457
3480
|
// src/components/in-edit-mode.tsx
|
|
3458
|
-
import * as
|
|
3481
|
+
import * as React23 from "react";
|
|
3459
3482
|
import { closeDialog, openDialog } from "@elementor/editor-ui";
|
|
3460
3483
|
import { InfoCircleFilledIcon } from "@elementor/icons";
|
|
3461
|
-
import { Box as
|
|
3462
|
-
import { __ as
|
|
3484
|
+
import { Box as Box13, Button as Button6, DialogActions, DialogContent, DialogHeader, Icon, Stack as Stack12, Typography as Typography12 } from "@elementor/ui";
|
|
3485
|
+
import { __ as __25 } from "@wordpress/i18n";
|
|
3463
3486
|
var openEditModeDialog = (lockedBy) => {
|
|
3464
3487
|
openDialog({
|
|
3465
|
-
component: /* @__PURE__ */
|
|
3488
|
+
component: /* @__PURE__ */ React23.createElement(EditModeDialog, { lockedBy })
|
|
3466
3489
|
});
|
|
3467
3490
|
};
|
|
3468
3491
|
var EditModeDialog = ({ lockedBy }) => {
|
|
3469
|
-
const content =
|
|
3470
|
-
return /* @__PURE__ */
|
|
3492
|
+
const content = __25("%s is currently editing this document", "elementor").replace("%s", lockedBy);
|
|
3493
|
+
return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React23.createElement(Box13, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React23.createElement(Icon, { color: "secondary" }, /* @__PURE__ */ React23.createElement(InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React23.createElement(Typography12, { variant: "subtitle1" }, content))), /* @__PURE__ */ React23.createElement(DialogContent, null, /* @__PURE__ */ React23.createElement(Stack12, { spacing: 2, direction: "column" }, /* @__PURE__ */ React23.createElement(Typography12, { variant: "body2" }, __25(
|
|
3471
3494
|
"You can wait for them to finish or reach out to coordinate your changes together.",
|
|
3472
3495
|
"elementor"
|
|
3473
|
-
)), /* @__PURE__ */
|
|
3496
|
+
)), /* @__PURE__ */ React23.createElement(DialogActions, null, /* @__PURE__ */ React23.createElement(Button6, { color: "secondary", variant: "contained", onClick: closeDialog }, __25("Close", "elementor"))))));
|
|
3474
3497
|
};
|
|
3475
3498
|
|
|
3476
3499
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
3477
|
-
import * as
|
|
3500
|
+
import * as React29 from "react";
|
|
3478
3501
|
import { ControlAdornmentsProvider } from "@elementor/editor-controls";
|
|
3479
3502
|
import { getFieldIndicators } from "@elementor/editor-editing-panel";
|
|
3480
3503
|
import { useSelectedElement as useSelectedElement2 } from "@elementor/editor-elements";
|
|
@@ -3482,7 +3505,7 @@ import { PanelBody as PanelBody2, PanelHeader as PanelHeader2, PanelHeaderTitle
|
|
|
3482
3505
|
import { EllipsisWithTooltip as EllipsisWithTooltip2 } from "@elementor/editor-ui";
|
|
3483
3506
|
import { ComponentsIcon as ComponentsIcon4, PencilIcon as PencilIcon2 } from "@elementor/icons";
|
|
3484
3507
|
import { Divider as Divider4, IconButton as IconButton6, Stack as Stack17, Tooltip as Tooltip4 } from "@elementor/ui";
|
|
3485
|
-
import { __ as
|
|
3508
|
+
import { __ as __27 } from "@wordpress/i18n";
|
|
3486
3509
|
|
|
3487
3510
|
// src/hooks/use-component-instance-settings.ts
|
|
3488
3511
|
import { useElement } from "@elementor/editor-editing-panel";
|
|
@@ -3548,20 +3571,20 @@ function useComponentInstanceSettings() {
|
|
|
3548
3571
|
}
|
|
3549
3572
|
|
|
3550
3573
|
// src/components/instance-editing-panel/empty-state.tsx
|
|
3551
|
-
import * as
|
|
3574
|
+
import * as React24 from "react";
|
|
3552
3575
|
import { ComponentPropListIcon as ComponentPropListIcon4, PencilIcon } from "@elementor/icons";
|
|
3553
|
-
import { Button as Button7, Stack as Stack13, Typography as
|
|
3554
|
-
import { __ as
|
|
3576
|
+
import { Button as Button7, Stack as Stack13, Typography as Typography13 } from "@elementor/ui";
|
|
3577
|
+
import { __ as __26 } from "@wordpress/i18n";
|
|
3555
3578
|
var EmptyState2 = ({ onEditComponent }) => {
|
|
3556
3579
|
const { canEdit } = useComponentsPermissions();
|
|
3557
|
-
const message = canEdit ?
|
|
3580
|
+
const message = canEdit ? __26(
|
|
3558
3581
|
"Edit the component to add properties, manage them or update the design across all instances.",
|
|
3559
3582
|
"elementor"
|
|
3560
|
-
) :
|
|
3583
|
+
) : __26(
|
|
3561
3584
|
"With your current role, you cannot edit this component. Contact an administrator to add properties.",
|
|
3562
3585
|
"elementor"
|
|
3563
3586
|
);
|
|
3564
|
-
return /* @__PURE__ */
|
|
3587
|
+
return /* @__PURE__ */ React24.createElement(
|
|
3565
3588
|
Stack13,
|
|
3566
3589
|
{
|
|
3567
3590
|
alignItems: "center",
|
|
@@ -3571,22 +3594,22 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
3571
3594
|
sx: { p: 2.5, pt: 8, pb: 5.5, mt: 1 },
|
|
3572
3595
|
gap: 1.5
|
|
3573
3596
|
},
|
|
3574
|
-
/* @__PURE__ */
|
|
3575
|
-
/* @__PURE__ */
|
|
3576
|
-
/* @__PURE__ */
|
|
3577
|
-
canEdit && /* @__PURE__ */
|
|
3597
|
+
/* @__PURE__ */ React24.createElement(ComponentPropListIcon4, { fontSize: "large" }),
|
|
3598
|
+
/* @__PURE__ */ React24.createElement(Typography13, { align: "center", variant: "subtitle2" }, __26("No properties yet", "elementor")),
|
|
3599
|
+
/* @__PURE__ */ React24.createElement(Typography13, { align: "center", variant: "caption", maxWidth: "170px" }, message),
|
|
3600
|
+
canEdit && /* @__PURE__ */ React24.createElement(Button7, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React24.createElement(PencilIcon, { fontSize: "small" }), __26("Edit component", "elementor"))
|
|
3578
3601
|
);
|
|
3579
3602
|
};
|
|
3580
3603
|
|
|
3581
3604
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
3582
|
-
import * as
|
|
3605
|
+
import * as React28 from "react";
|
|
3583
3606
|
import { useId } from "react";
|
|
3584
3607
|
import { useStateByElement } from "@elementor/editor-editing-panel";
|
|
3585
3608
|
import { CollapseIcon } from "@elementor/editor-ui";
|
|
3586
|
-
import { Box as
|
|
3609
|
+
import { Box as Box14, Collapse, ListItemButton as ListItemButton3, ListItemText, Stack as Stack16 } from "@elementor/ui";
|
|
3587
3610
|
|
|
3588
3611
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
3589
|
-
import * as
|
|
3612
|
+
import * as React27 from "react";
|
|
3590
3613
|
import { ControlReplacementsProvider, PropKeyProvider, PropProvider, useBoundProp } from "@elementor/editor-controls";
|
|
3591
3614
|
import {
|
|
3592
3615
|
BaseControl,
|
|
@@ -3632,11 +3655,11 @@ function getControlsByBind(controls) {
|
|
|
3632
3655
|
}
|
|
3633
3656
|
|
|
3634
3657
|
// src/provider/overridable-prop-context.tsx
|
|
3635
|
-
import * as
|
|
3658
|
+
import * as React25 from "react";
|
|
3636
3659
|
import { createContext as createContext2, useContext as useContext2 } from "react";
|
|
3637
3660
|
var OverridablePropContext = createContext2(null);
|
|
3638
3661
|
function OverridablePropProvider({ children, ...props }) {
|
|
3639
|
-
return /* @__PURE__ */
|
|
3662
|
+
return /* @__PURE__ */ React25.createElement(OverridablePropContext.Provider, { value: props }, children);
|
|
3640
3663
|
}
|
|
3641
3664
|
var useOverridablePropValue = () => useContext2(OverridablePropContext)?.value;
|
|
3642
3665
|
var useComponentInstanceElement = () => useContext2(OverridablePropContext)?.componentInstanceElement;
|
|
@@ -3730,11 +3753,11 @@ function getPropType({ widgetType, propKey }) {
|
|
|
3730
3753
|
}
|
|
3731
3754
|
|
|
3732
3755
|
// src/components/control-label.tsx
|
|
3733
|
-
import * as
|
|
3756
|
+
import * as React26 from "react";
|
|
3734
3757
|
import { ControlAdornments, ControlFormLabel } from "@elementor/editor-controls";
|
|
3735
3758
|
import { Stack as Stack14 } from "@elementor/ui";
|
|
3736
3759
|
var ControlLabel = ({ children, ...props }) => {
|
|
3737
|
-
return /* @__PURE__ */
|
|
3760
|
+
return /* @__PURE__ */ React26.createElement(Stack14, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React26.createElement(ControlFormLabel, { ...props }, children), /* @__PURE__ */ React26.createElement(ControlAdornments, null));
|
|
3738
3761
|
};
|
|
3739
3762
|
|
|
3740
3763
|
// src/components/errors.ts
|
|
@@ -3746,7 +3769,7 @@ var OverrideControlInnerElementNotFoundError = createError({
|
|
|
3746
3769
|
|
|
3747
3770
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
3748
3771
|
function OverridePropControl({ overridableProp, overrides }) {
|
|
3749
|
-
return /* @__PURE__ */
|
|
3772
|
+
return /* @__PURE__ */ React27.createElement(SettingsField, { bind: "component_instance", propDisplayName: overridableProp.label }, /* @__PURE__ */ React27.createElement(OverrideControl, { overridableProp, overrides }));
|
|
3750
3773
|
}
|
|
3751
3774
|
function OverrideControl({ overridableProp, overrides }) {
|
|
3752
3775
|
const componentInstanceElement = useElement2();
|
|
@@ -3817,13 +3840,13 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
3817
3840
|
if (!elementType) {
|
|
3818
3841
|
return null;
|
|
3819
3842
|
}
|
|
3820
|
-
return /* @__PURE__ */
|
|
3843
|
+
return /* @__PURE__ */ React27.createElement(
|
|
3821
3844
|
OverridablePropProvider,
|
|
3822
3845
|
{
|
|
3823
3846
|
value: componentOverridablePropTypeUtil.extract(matchingOverride) ?? void 0,
|
|
3824
3847
|
componentInstanceElement
|
|
3825
3848
|
},
|
|
3826
|
-
/* @__PURE__ */
|
|
3849
|
+
/* @__PURE__ */ React27.createElement(ElementProvider2, { element: { id: elementId, type }, elementType }, /* @__PURE__ */ React27.createElement(SettingsField, { bind: propKey, propDisplayName: overridableProp.label }, /* @__PURE__ */ React27.createElement(
|
|
3827
3850
|
PropProvider,
|
|
3828
3851
|
{
|
|
3829
3852
|
propType: propTypeSchema,
|
|
@@ -3833,7 +3856,7 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
3833
3856
|
return false;
|
|
3834
3857
|
}
|
|
3835
3858
|
},
|
|
3836
|
-
/* @__PURE__ */
|
|
3859
|
+
/* @__PURE__ */ React27.createElement(PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ React27.createElement(ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React27.createElement(Stack15, { direction: "column", gap: 1, mb: 1.5 }, layout !== "custom" && /* @__PURE__ */ React27.createElement(ControlLabel, null, overridableProp.label), /* @__PURE__ */ React27.createElement(OriginalControl, { control, controlProps }))))
|
|
3837
3860
|
)))
|
|
3838
3861
|
);
|
|
3839
3862
|
}
|
|
@@ -3897,7 +3920,7 @@ function getControlParams(controls, originPropFields, label) {
|
|
|
3897
3920
|
}
|
|
3898
3921
|
function OriginalControl({ control, controlProps }) {
|
|
3899
3922
|
const { value } = control;
|
|
3900
|
-
return /* @__PURE__ */
|
|
3923
|
+
return /* @__PURE__ */ React27.createElement(BaseControl, { type: value.type, props: controlProps });
|
|
3901
3924
|
}
|
|
3902
3925
|
function getControlLayout(control) {
|
|
3903
3926
|
return control.value.meta?.layout || controlsRegistry.getLayout(control.value.type);
|
|
@@ -3928,7 +3951,7 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
3928
3951
|
const labelId = `label-${id2}`;
|
|
3929
3952
|
const contentId = `content-${id2}`;
|
|
3930
3953
|
const title = group.label;
|
|
3931
|
-
return /* @__PURE__ */
|
|
3954
|
+
return /* @__PURE__ */ React28.createElement(Box14, { "aria-label": `${title} section` }, /* @__PURE__ */ React28.createElement(
|
|
3932
3955
|
ListItemButton3,
|
|
3933
3956
|
{
|
|
3934
3957
|
id: labelId,
|
|
@@ -3938,7 +3961,7 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
3938
3961
|
p: 0,
|
|
3939
3962
|
sx: { "&:hover": { backgroundColor: "transparent" } }
|
|
3940
3963
|
},
|
|
3941
|
-
/* @__PURE__ */
|
|
3964
|
+
/* @__PURE__ */ React28.createElement(Stack16, { direction: "row", alignItems: "center", justifyItems: "start", flexGrow: 1, gap: 0.5 }, /* @__PURE__ */ React28.createElement(
|
|
3942
3965
|
ListItemText,
|
|
3943
3966
|
{
|
|
3944
3967
|
secondary: title,
|
|
@@ -3946,8 +3969,8 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
3946
3969
|
sx: { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 }
|
|
3947
3970
|
}
|
|
3948
3971
|
)),
|
|
3949
|
-
/* @__PURE__ */
|
|
3950
|
-
), /* @__PURE__ */
|
|
3972
|
+
/* @__PURE__ */ React28.createElement(CollapseIcon, { open: isOpen, color: "secondary", fontSize: "tiny" })
|
|
3973
|
+
), /* @__PURE__ */ React28.createElement(Collapse, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto" }, /* @__PURE__ */ React28.createElement(Stack16, { direction: "column", gap: 1, p: 2 }, group.props.map((overrideKey) => /* @__PURE__ */ React28.createElement(
|
|
3951
3974
|
OverridePropControl,
|
|
3952
3975
|
{
|
|
3953
3976
|
key: overrideKey,
|
|
@@ -3969,23 +3992,23 @@ function InstanceEditingPanel() {
|
|
|
3969
3992
|
if (!componentId || !overridableProps || !component) {
|
|
3970
3993
|
return null;
|
|
3971
3994
|
}
|
|
3972
|
-
const panelTitle =
|
|
3995
|
+
const panelTitle = __27("Edit %s", "elementor").replace("%s", component.name);
|
|
3973
3996
|
const handleEditComponent = () => switchToComponent(componentId, componentInstanceId);
|
|
3974
3997
|
const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
|
|
3975
3998
|
const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
|
|
3976
3999
|
const isEmpty = groups.length === 0 || Object.keys(overridableProps.props).length === 0;
|
|
3977
|
-
return /* @__PURE__ */
|
|
4000
|
+
return /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(PanelHeader2, { sx: { justifyContent: "start", px: 2 } }, /* @__PURE__ */ React29.createElement(Stack17, { direction: "row", alignItems: "center", flexGrow: 1, gap: 1, maxWidth: "100%" }, /* @__PURE__ */ React29.createElement(ComponentsIcon4, { fontSize: "small", sx: { color: "text.tertiary" } }), /* @__PURE__ */ React29.createElement(EllipsisWithTooltip2, { title: component.name, as: PanelHeaderTitle2 }), canEdit && /* @__PURE__ */ React29.createElement(Tooltip4, { title: panelTitle }, /* @__PURE__ */ React29.createElement(IconButton6, { size: "tiny", onClick: handleEditComponent, "aria-label": panelTitle }, /* @__PURE__ */ React29.createElement(PencilIcon2, { fontSize: "tiny" }))))), /* @__PURE__ */ React29.createElement(PanelBody2, null, /* @__PURE__ */ React29.createElement(ControlAdornmentsProvider, { items: getFieldIndicators("settings") }, isEmpty ? /* @__PURE__ */ React29.createElement(EmptyState2, { onEditComponent: handleEditComponent }) : /* @__PURE__ */ React29.createElement(Stack17, { direction: "column", alignItems: "stretch" }, groups.map((group) => /* @__PURE__ */ React29.createElement(React29.Fragment, { key: group.id }, /* @__PURE__ */ React29.createElement(
|
|
3978
4001
|
OverridePropsGroup,
|
|
3979
4002
|
{
|
|
3980
4003
|
group,
|
|
3981
4004
|
props: overridableProps.props,
|
|
3982
4005
|
overrides
|
|
3983
4006
|
}
|
|
3984
|
-
), /* @__PURE__ */
|
|
4007
|
+
), /* @__PURE__ */ React29.createElement(Divider4, null)))))));
|
|
3985
4008
|
}
|
|
3986
4009
|
|
|
3987
4010
|
// src/components/overridable-props/overridable-prop-control.tsx
|
|
3988
|
-
import * as
|
|
4011
|
+
import * as React30 from "react";
|
|
3989
4012
|
import {
|
|
3990
4013
|
ControlReplacementsProvider as ControlReplacementsProvider2,
|
|
3991
4014
|
createControl,
|
|
@@ -4037,7 +4060,7 @@ function OverridablePropControl({
|
|
|
4037
4060
|
});
|
|
4038
4061
|
const propValue = isComponentInstance2 ? (value.origin_value?.value).override_value : value.origin_value;
|
|
4039
4062
|
const objectPlaceholder = placeholder ? { [bind]: placeholder } : void 0;
|
|
4040
|
-
return /* @__PURE__ */
|
|
4063
|
+
return /* @__PURE__ */ React30.createElement(OverridablePropProvider, { value }, /* @__PURE__ */ React30.createElement(
|
|
4041
4064
|
PropProvider2,
|
|
4042
4065
|
{
|
|
4043
4066
|
...propContext,
|
|
@@ -4048,17 +4071,17 @@ function OverridablePropControl({
|
|
|
4048
4071
|
},
|
|
4049
4072
|
placeholder: objectPlaceholder
|
|
4050
4073
|
},
|
|
4051
|
-
/* @__PURE__ */
|
|
4074
|
+
/* @__PURE__ */ React30.createElement(PropKeyProvider2, { bind }, /* @__PURE__ */ React30.createElement(ControlReplacementsProvider2, { replacements: filteredReplacements }, /* @__PURE__ */ React30.createElement(Control, { ...props })))
|
|
4052
4075
|
));
|
|
4053
4076
|
}
|
|
4054
4077
|
|
|
4055
4078
|
// src/components/overridable-props/overridable-prop-indicator.tsx
|
|
4056
|
-
import * as
|
|
4079
|
+
import * as React32 from "react";
|
|
4057
4080
|
import { useBoundProp as useBoundProp3 } from "@elementor/editor-controls";
|
|
4058
4081
|
import { useElement as useElement4 } from "@elementor/editor-editing-panel";
|
|
4059
4082
|
import { getWidgetsCache as getWidgetsCache3 } from "@elementor/editor-elements";
|
|
4060
4083
|
import { bindPopover as bindPopover2, bindTrigger as bindTrigger4, Popover as Popover4, Tooltip as Tooltip5, usePopupState as usePopupState4 } from "@elementor/ui";
|
|
4061
|
-
import { __ as
|
|
4084
|
+
import { __ as __29 } from "@wordpress/i18n";
|
|
4062
4085
|
|
|
4063
4086
|
// src/store/actions/set-overridable-prop.ts
|
|
4064
4087
|
import { __dispatch as dispatch14, __getState as getState17 } from "@elementor/store";
|
|
@@ -4125,13 +4148,13 @@ function setOverridableProp({
|
|
|
4125
4148
|
}
|
|
4126
4149
|
|
|
4127
4150
|
// src/components/overridable-props/indicator.tsx
|
|
4128
|
-
import * as
|
|
4151
|
+
import * as React31 from "react";
|
|
4129
4152
|
import { forwardRef as forwardRef2 } from "react";
|
|
4130
4153
|
import { CheckIcon, PlusIcon } from "@elementor/icons";
|
|
4131
|
-
import { Box as
|
|
4132
|
-
import { __ as
|
|
4154
|
+
import { Box as Box15, styled as styled4 } from "@elementor/ui";
|
|
4155
|
+
import { __ as __28 } from "@wordpress/i18n";
|
|
4133
4156
|
var SIZE2 = "tiny";
|
|
4134
|
-
var IconContainer = styled4(
|
|
4157
|
+
var IconContainer = styled4(Box15)`
|
|
4135
4158
|
pointer-events: none;
|
|
4136
4159
|
opacity: 0;
|
|
4137
4160
|
transition: opacity 0.2s ease-in-out;
|
|
@@ -4148,7 +4171,7 @@ var IconContainer = styled4(Box14)`
|
|
|
4148
4171
|
stroke-width: 2px;
|
|
4149
4172
|
}
|
|
4150
4173
|
`;
|
|
4151
|
-
var Content = styled4(
|
|
4174
|
+
var Content = styled4(Box15)`
|
|
4152
4175
|
position: relative;
|
|
4153
4176
|
display: flex;
|
|
4154
4177
|
align-items: center;
|
|
@@ -4185,13 +4208,13 @@ var Content = styled4(Box14)`
|
|
|
4185
4208
|
}
|
|
4186
4209
|
}
|
|
4187
4210
|
`;
|
|
4188
|
-
var Indicator2 = forwardRef2(({ isOpen, isOverridable, ...props }, ref) => /* @__PURE__ */
|
|
4211
|
+
var Indicator2 = forwardRef2(({ isOpen, isOverridable, ...props }, ref) => /* @__PURE__ */ React31.createElement(Content, { ref, ...props, className: isOpen || isOverridable ? "enlarged" : "" }, /* @__PURE__ */ React31.createElement(
|
|
4189
4212
|
IconContainer,
|
|
4190
4213
|
{
|
|
4191
4214
|
className: "icon",
|
|
4192
|
-
"aria-label": isOverridable ?
|
|
4215
|
+
"aria-label": isOverridable ? __28("Overridable property", "elementor") : __28("Make prop overridable", "elementor")
|
|
4193
4216
|
},
|
|
4194
|
-
isOverridable ? /* @__PURE__ */
|
|
4217
|
+
isOverridable ? /* @__PURE__ */ React31.createElement(CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React31.createElement(PlusIcon, { fontSize: SIZE2 })
|
|
4195
4218
|
)));
|
|
4196
4219
|
|
|
4197
4220
|
// src/components/overridable-props/utils/get-overridable-prop.ts
|
|
@@ -4215,7 +4238,7 @@ function OverridablePropIndicator() {
|
|
|
4215
4238
|
if (!isPropAllowed(propType) || !componentId || !overridableProps) {
|
|
4216
4239
|
return null;
|
|
4217
4240
|
}
|
|
4218
|
-
return /* @__PURE__ */
|
|
4241
|
+
return /* @__PURE__ */ React32.createElement(Content2, { componentId, overridableProps });
|
|
4219
4242
|
}
|
|
4220
4243
|
function Content2({ componentId, overridableProps }) {
|
|
4221
4244
|
const {
|
|
@@ -4260,7 +4283,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4260
4283
|
popupState.close();
|
|
4261
4284
|
};
|
|
4262
4285
|
const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
|
|
4263
|
-
return /* @__PURE__ */
|
|
4286
|
+
return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(Tooltip5, { placement: "top", title: __29("Override Property", "elementor") }, /* @__PURE__ */ React32.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React32.createElement(
|
|
4264
4287
|
Popover4,
|
|
4265
4288
|
{
|
|
4266
4289
|
disableScrollLock: true,
|
|
@@ -4277,7 +4300,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4277
4300
|
},
|
|
4278
4301
|
...popoverProps
|
|
4279
4302
|
},
|
|
4280
|
-
/* @__PURE__ */
|
|
4303
|
+
/* @__PURE__ */ React32.createElement(
|
|
4281
4304
|
OverridablePropForm,
|
|
4282
4305
|
{
|
|
4283
4306
|
onSubmit: handleSubmit,
|
|
@@ -4645,11 +4668,11 @@ import { getAllDescendants as getAllDescendants3 } from "@elementor/editor-eleme
|
|
|
4645
4668
|
import { notify as notify4 } from "@elementor/editor-notifications";
|
|
4646
4669
|
import { blockCommand as blockCommand2 } from "@elementor/editor-v1-adapters";
|
|
4647
4670
|
import { __getState as getState19 } from "@elementor/store";
|
|
4648
|
-
import { __ as
|
|
4671
|
+
import { __ as __30 } from "@wordpress/i18n";
|
|
4649
4672
|
var COMPONENT_TYPE = "e-component";
|
|
4650
4673
|
var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
4651
4674
|
type: "default",
|
|
4652
|
-
message:
|
|
4675
|
+
message: __30("Can't add this component - components that contain each other can't be nested.", "elementor"),
|
|
4653
4676
|
id: "circular-component-nesting-blocked"
|
|
4654
4677
|
};
|
|
4655
4678
|
function initCircularNestingPrevention() {
|
|
@@ -5128,7 +5151,7 @@ function init() {
|
|
|
5128
5151
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
5129
5152
|
injectTab({
|
|
5130
5153
|
id: "components",
|
|
5131
|
-
label:
|
|
5154
|
+
label: __31("Components", "elementor"),
|
|
5132
5155
|
component: Components,
|
|
5133
5156
|
position: 1
|
|
5134
5157
|
});
|