@elementor/editor-components 4.0.0-672 → 4.0.0-673
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.d.mts +1 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.js +224 -130
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +208 -113
- package/dist/index.mjs.map +1 -1
- package/package.json +23 -23
- package/src/components/components-tab/components-list.tsx +47 -4
- package/src/components/components-tab/components-pro-notification.tsx +9 -15
- package/src/components/components-tab/components.tsx +7 -3
- package/src/components/components-tab/loading-components.tsx +26 -14
- package/src/components/components-upgrade-alert.tsx +39 -0
- package/src/components/instance-editing-panel/instance-editing-panel.tsx +13 -1
- package/src/create-component-type.ts +3 -4
- package/src/index.ts +1 -6
package/dist/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@ import { injectTab } from "@elementor/editor-elements-panel";
|
|
|
10
10
|
import { stylesRepository } from "@elementor/editor-styles-repository";
|
|
11
11
|
import { registerDataHook as registerDataHook2 } from "@elementor/editor-v1-adapters";
|
|
12
12
|
import { __registerSlice as registerSlice } from "@elementor/store";
|
|
13
|
-
import { __ as
|
|
13
|
+
import { __ as __14 } from "@wordpress/i18n";
|
|
14
14
|
|
|
15
15
|
// src/component-instance-transformer.ts
|
|
16
16
|
import { createTransformer } from "@elementor/editor-canvas";
|
|
@@ -374,8 +374,10 @@ var componentOverrideTransformer = createTransformer3((override) => {
|
|
|
374
374
|
});
|
|
375
375
|
|
|
376
376
|
// src/components/components-tab/components.tsx
|
|
377
|
-
import * as
|
|
377
|
+
import * as React8 from "react";
|
|
378
378
|
import { ThemeProvider } from "@elementor/editor-ui";
|
|
379
|
+
import { Stack as Stack4 } from "@elementor/ui";
|
|
380
|
+
import { hasProInstalled as hasProInstalled2 } from "@elementor/utils";
|
|
379
381
|
|
|
380
382
|
// src/hooks/use-components.ts
|
|
381
383
|
import { __useSelector as useSelector2 } from "@elementor/store";
|
|
@@ -435,8 +437,9 @@ var ComponentSearch = () => {
|
|
|
435
437
|
|
|
436
438
|
// src/components/components-tab/components-list.tsx
|
|
437
439
|
import * as React5 from "react";
|
|
438
|
-
import { ComponentsIcon as ComponentsIcon2 } from "@elementor/icons";
|
|
439
|
-
import { Box as Box4, Divider, Link, List, Stack as Stack3, Typography as Typography2 } from "@elementor/ui";
|
|
440
|
+
import { ComponentsIcon as ComponentsIcon2, CrownFilledIcon } from "@elementor/icons";
|
|
441
|
+
import { Box as Box4, Button, Divider, Link, List, Stack as Stack3, Typography as Typography2 } from "@elementor/ui";
|
|
442
|
+
import { hasProInstalled } from "@elementor/utils";
|
|
440
443
|
import { __ as __2 } from "@wordpress/i18n";
|
|
441
444
|
|
|
442
445
|
// src/hooks/use-components-permissions.ts
|
|
@@ -527,45 +530,60 @@ function ComponentName({ name, editable }) {
|
|
|
527
530
|
|
|
528
531
|
// src/components/components-tab/loading-components.tsx
|
|
529
532
|
import * as React4 from "react";
|
|
530
|
-
import { Box as Box3,
|
|
531
|
-
var ROWS = Array.from({ length:
|
|
533
|
+
import { Box as Box3, Skeleton, Stack as Stack2 } from "@elementor/ui";
|
|
534
|
+
var ROWS = Array.from({ length: 3 }, (_, index) => index);
|
|
535
|
+
var STAGGER_DELAY_MS = 80;
|
|
532
536
|
var LoadingComponents = () => {
|
|
533
537
|
return /* @__PURE__ */ React4.createElement(
|
|
534
538
|
Stack2,
|
|
535
539
|
{
|
|
536
540
|
"aria-label": "Loading components",
|
|
537
|
-
gap: 1,
|
|
541
|
+
gap: 1.5,
|
|
538
542
|
sx: {
|
|
539
543
|
pointerEvents: "none",
|
|
540
544
|
position: "relative",
|
|
541
545
|
maxHeight: "300px",
|
|
542
546
|
overflow: "hidden",
|
|
547
|
+
px: 1,
|
|
543
548
|
"&:after": {
|
|
544
549
|
position: "absolute",
|
|
545
|
-
|
|
550
|
+
bottom: 0,
|
|
546
551
|
content: '""',
|
|
547
552
|
left: 0,
|
|
548
553
|
width: "100%",
|
|
549
|
-
height: "
|
|
550
|
-
|
|
551
|
-
|
|
554
|
+
height: "40%",
|
|
555
|
+
pointerEvents: "none",
|
|
556
|
+
zIndex: 1
|
|
552
557
|
}
|
|
553
558
|
}
|
|
554
559
|
},
|
|
555
560
|
ROWS.map((row) => /* @__PURE__ */ React4.createElement(
|
|
556
|
-
|
|
561
|
+
Box3,
|
|
557
562
|
{
|
|
558
563
|
key: row,
|
|
559
|
-
|
|
560
|
-
|
|
564
|
+
display: "flex",
|
|
565
|
+
alignItems: "center",
|
|
566
|
+
gap: 1.5,
|
|
567
|
+
sx: {
|
|
568
|
+
py: 0.75,
|
|
569
|
+
px: 1.5,
|
|
570
|
+
opacity: 0,
|
|
571
|
+
animation: `e-loading-fade-in 0.4s ease-out ${row * STAGGER_DELAY_MS}ms forwards`,
|
|
572
|
+
"@keyframes e-loading-fade-in": {
|
|
573
|
+
from: { opacity: 0, transform: "translateY(4px)" },
|
|
574
|
+
to: { opacity: 1, transform: "translateY(0)" }
|
|
575
|
+
}
|
|
576
|
+
}
|
|
561
577
|
},
|
|
562
|
-
/* @__PURE__ */ React4.createElement(
|
|
578
|
+
/* @__PURE__ */ React4.createElement(Skeleton, { animation: "wave", variant: "rounded", width: 24, height: 24 }),
|
|
579
|
+
/* @__PURE__ */ React4.createElement(Skeleton, { animation: "wave", variant: "rounded", width: "60%", height: 14 })
|
|
563
580
|
))
|
|
564
581
|
);
|
|
565
582
|
};
|
|
566
583
|
|
|
567
584
|
// src/components/components-tab/components-list.tsx
|
|
568
585
|
var LEARN_MORE_URL = "http://go.elementor.com/components-guide-article";
|
|
586
|
+
var UPGRADE_URL = "https://go.elementor.com/go-pro-components/";
|
|
569
587
|
var SUBTITLE_OVERRIDE_SX = {
|
|
570
588
|
fontSize: "0.875rem !important",
|
|
571
589
|
fontWeight: "500 !important"
|
|
@@ -577,10 +595,40 @@ function ComponentsList() {
|
|
|
577
595
|
}
|
|
578
596
|
const isEmpty = !components?.length;
|
|
579
597
|
if (isEmpty) {
|
|
580
|
-
|
|
598
|
+
if (searchValue.length) {
|
|
599
|
+
return /* @__PURE__ */ React5.createElement(EmptySearchResult, null);
|
|
600
|
+
}
|
|
601
|
+
return hasProInstalled() ? /* @__PURE__ */ React5.createElement(EmptyState, null) : /* @__PURE__ */ React5.createElement(ProUpgradeEmptyState, null);
|
|
581
602
|
}
|
|
582
603
|
return /* @__PURE__ */ React5.createElement(List, { sx: { display: "flex", flexDirection: "column", gap: 1, px: 2 } }, components.map((component) => /* @__PURE__ */ React5.createElement(ComponentItem, { key: component.uid, component })));
|
|
583
604
|
}
|
|
605
|
+
var ProUpgradeEmptyState = () => {
|
|
606
|
+
return /* @__PURE__ */ React5.createElement(
|
|
607
|
+
Stack3,
|
|
608
|
+
{
|
|
609
|
+
alignItems: "center",
|
|
610
|
+
justifyContent: "start",
|
|
611
|
+
height: "100%",
|
|
612
|
+
sx: { px: 2, py: 4 },
|
|
613
|
+
gap: 2,
|
|
614
|
+
overflow: "hidden"
|
|
615
|
+
},
|
|
616
|
+
/* @__PURE__ */ React5.createElement(Stack3, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React5.createElement(ComponentsIcon2, { fontSize: "large", sx: { color: "text.secondary" } }), /* @__PURE__ */ React5.createElement(Typography2, { align: "center", variant: "subtitle2", color: "text.secondary", sx: SUBTITLE_OVERRIDE_SX }, __2("Create Reusable Components", "elementor")), /* @__PURE__ */ React5.createElement(Typography2, { align: "center", variant: "caption", color: "secondary", sx: { maxWidth: 200 } }, __2("Create design elements that sync across your entire site.", "elementor"))),
|
|
617
|
+
/* @__PURE__ */ React5.createElement(
|
|
618
|
+
Button,
|
|
619
|
+
{
|
|
620
|
+
variant: "contained",
|
|
621
|
+
color: "promotion",
|
|
622
|
+
size: "small",
|
|
623
|
+
startIcon: /* @__PURE__ */ React5.createElement(CrownFilledIcon, null),
|
|
624
|
+
href: UPGRADE_URL,
|
|
625
|
+
target: "_blank",
|
|
626
|
+
rel: "noopener noreferrer"
|
|
627
|
+
},
|
|
628
|
+
__2("Upgrade now", "elementor")
|
|
629
|
+
)
|
|
630
|
+
);
|
|
631
|
+
};
|
|
584
632
|
var EmptyState = () => {
|
|
585
633
|
const { canCreate } = useComponentsPermissions();
|
|
586
634
|
return /* @__PURE__ */ React5.createElement(
|
|
@@ -687,46 +735,85 @@ var useFilteredComponents = () => {
|
|
|
687
735
|
};
|
|
688
736
|
|
|
689
737
|
// src/components/components-tab/components-pro-notification.tsx
|
|
738
|
+
import * as React7 from "react";
|
|
739
|
+
import { __ as __4 } from "@wordpress/i18n";
|
|
740
|
+
|
|
741
|
+
// src/components/components-upgrade-alert.tsx
|
|
690
742
|
import * as React6 from "react";
|
|
691
|
-
import {
|
|
692
|
-
import { Box as Box5, Typography as Typography3 } from "@elementor/ui";
|
|
743
|
+
import { CrownFilledIcon as CrownFilledIcon2 } from "@elementor/icons";
|
|
744
|
+
import { Alert, AlertAction, AlertTitle, Box as Box5, Typography as Typography3 } from "@elementor/ui";
|
|
693
745
|
import { __ as __3 } from "@wordpress/i18n";
|
|
746
|
+
function ComponentsUpgradeAlert({ title, description, upgradeUrl }) {
|
|
747
|
+
return /* @__PURE__ */ React6.createElement(Box5, { sx: { mt: "auto" } }, /* @__PURE__ */ React6.createElement(
|
|
748
|
+
Alert,
|
|
749
|
+
{
|
|
750
|
+
variant: "standard",
|
|
751
|
+
color: "promotion",
|
|
752
|
+
icon: /* @__PURE__ */ React6.createElement(CrownFilledIcon2, { fontSize: "tiny" }),
|
|
753
|
+
role: "status",
|
|
754
|
+
size: "small",
|
|
755
|
+
action: /* @__PURE__ */ React6.createElement(
|
|
756
|
+
AlertAction,
|
|
757
|
+
{
|
|
758
|
+
variant: "contained",
|
|
759
|
+
color: "promotion",
|
|
760
|
+
href: upgradeUrl,
|
|
761
|
+
target: "_blank",
|
|
762
|
+
rel: "noopener noreferrer"
|
|
763
|
+
},
|
|
764
|
+
__3("Upgrade now", "elementor")
|
|
765
|
+
),
|
|
766
|
+
sx: { m: 2, mt: 1 }
|
|
767
|
+
},
|
|
768
|
+
/* @__PURE__ */ React6.createElement(AlertTitle, null, title),
|
|
769
|
+
/* @__PURE__ */ React6.createElement(Typography3, { variant: "caption" }, description)
|
|
770
|
+
));
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
// src/components/components-tab/components-pro-notification.tsx
|
|
774
|
+
var UPGRADE_URL2 = "https://go.elementor.com/go-pro-components-create/";
|
|
694
775
|
function ComponentsProNotification() {
|
|
695
|
-
return /* @__PURE__ */
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
776
|
+
return /* @__PURE__ */ React7.createElement(
|
|
777
|
+
ComponentsUpgradeAlert,
|
|
778
|
+
{
|
|
779
|
+
title: __4("Create new components", "elementor"),
|
|
780
|
+
description: __4("Creating new components requires an active Pro subscription.", "elementor"),
|
|
781
|
+
upgradeUrl: UPGRADE_URL2
|
|
782
|
+
}
|
|
783
|
+
);
|
|
699
784
|
}
|
|
700
785
|
|
|
701
786
|
// src/components/components-tab/components.tsx
|
|
702
787
|
var ComponentsContent = () => {
|
|
703
788
|
const { components, isLoading } = useComponents();
|
|
704
789
|
const hasComponents = !isLoading && components.length > 0;
|
|
705
|
-
|
|
790
|
+
const hasPro = hasProInstalled2();
|
|
791
|
+
const showProNotification = !hasPro && hasComponents;
|
|
792
|
+
return /* @__PURE__ */ React8.createElement(Stack4, { sx: { height: "100%" } }, hasComponents && /* @__PURE__ */ React8.createElement(ComponentSearch, null), /* @__PURE__ */ React8.createElement(ComponentsList, null), showProNotification && /* @__PURE__ */ React8.createElement(ComponentsProNotification, null));
|
|
706
793
|
};
|
|
707
794
|
var Components = () => {
|
|
708
|
-
return /* @__PURE__ */
|
|
795
|
+
return /* @__PURE__ */ React8.createElement(ThemeProvider, null, /* @__PURE__ */ React8.createElement(SearchProvider, { localStorageKey: "elementor-components-search" }, /* @__PURE__ */ React8.createElement(ComponentsContent, null)));
|
|
709
796
|
};
|
|
710
797
|
|
|
711
798
|
// src/components/detach-instance-confirmation-dialog.tsx
|
|
712
|
-
import * as
|
|
799
|
+
import * as React9 from "react";
|
|
713
800
|
import { closeDialog, ConfirmationDialog, openDialog } from "@elementor/editor-ui";
|
|
714
801
|
import { AlertTriangleFilledIcon } from "@elementor/icons";
|
|
715
|
-
import { __ as
|
|
802
|
+
import { __ as __5 } from "@wordpress/i18n";
|
|
716
803
|
function DetachInstanceConfirmationDialog({
|
|
717
804
|
open,
|
|
718
805
|
onClose,
|
|
719
806
|
onConfirm
|
|
720
807
|
}) {
|
|
721
|
-
return /* @__PURE__ */
|
|
808
|
+
return /* @__PURE__ */ React9.createElement(ConfirmationDialog, { open, onClose }, /* @__PURE__ */ React9.createElement(ConfirmationDialog.Title, { icon: AlertTriangleFilledIcon, iconColor: "secondary" }, __5("Detach from Component?", "elementor")), /* @__PURE__ */ React9.createElement(ConfirmationDialog.Content, null, /* @__PURE__ */ React9.createElement(ConfirmationDialog.ContentText, null, __5(
|
|
722
809
|
"Detaching this instance will break its link to the Component. Changes to the Component will no longer apply. Continue?",
|
|
723
810
|
"elementor"
|
|
724
|
-
))), /* @__PURE__ */
|
|
811
|
+
))), /* @__PURE__ */ React9.createElement(
|
|
725
812
|
ConfirmationDialog.Actions,
|
|
726
813
|
{
|
|
727
814
|
onClose,
|
|
728
815
|
onConfirm,
|
|
729
|
-
confirmLabel:
|
|
816
|
+
confirmLabel: __5("Detach", "elementor"),
|
|
730
817
|
color: "primary"
|
|
731
818
|
}
|
|
732
819
|
));
|
|
@@ -737,58 +824,59 @@ function openDetachConfirmDialog(onConfirm) {
|
|
|
737
824
|
onConfirm();
|
|
738
825
|
};
|
|
739
826
|
openDialog({
|
|
740
|
-
component: /* @__PURE__ */
|
|
827
|
+
component: /* @__PURE__ */ React9.createElement(DetachInstanceConfirmationDialog, { open: true, onClose: closeDialog, onConfirm: handleConfirm })
|
|
741
828
|
});
|
|
742
829
|
}
|
|
743
830
|
|
|
744
831
|
// src/components/in-edit-mode.tsx
|
|
745
|
-
import * as
|
|
832
|
+
import * as React10 from "react";
|
|
746
833
|
import { closeDialog as closeDialog2, openDialog as openDialog2 } from "@elementor/editor-ui";
|
|
747
834
|
import { InfoCircleFilledIcon } from "@elementor/icons";
|
|
748
|
-
import { Box as Box6, Button, DialogActions, DialogContent, DialogHeader, Icon, Stack as
|
|
749
|
-
import { __ as
|
|
835
|
+
import { Box as Box6, Button as Button2, DialogActions, DialogContent, DialogHeader, Icon, Stack as Stack5, Typography as Typography4 } from "@elementor/ui";
|
|
836
|
+
import { __ as __6 } from "@wordpress/i18n";
|
|
750
837
|
var openEditModeDialog = (lockedBy) => {
|
|
751
838
|
openDialog2({
|
|
752
|
-
component: /* @__PURE__ */
|
|
839
|
+
component: /* @__PURE__ */ React10.createElement(EditModeDialog, { lockedBy })
|
|
753
840
|
});
|
|
754
841
|
};
|
|
755
842
|
var EditModeDialog = ({ lockedBy }) => {
|
|
756
|
-
const content =
|
|
757
|
-
return /* @__PURE__ */
|
|
843
|
+
const content = __6("%s is currently editing this document", "elementor").replace("%s", lockedBy);
|
|
844
|
+
return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React10.createElement(Box6, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React10.createElement(Icon, { color: "secondary" }, /* @__PURE__ */ React10.createElement(InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React10.createElement(Typography4, { variant: "subtitle1" }, content))), /* @__PURE__ */ React10.createElement(DialogContent, null, /* @__PURE__ */ React10.createElement(Stack5, { spacing: 2, direction: "column" }, /* @__PURE__ */ React10.createElement(Typography4, { variant: "body2" }, __6(
|
|
758
845
|
"You can wait for them to finish or reach out to coordinate your changes together.",
|
|
759
846
|
"elementor"
|
|
760
|
-
)), /* @__PURE__ */
|
|
847
|
+
)), /* @__PURE__ */ React10.createElement(DialogActions, null, /* @__PURE__ */ React10.createElement(Button2, { color: "secondary", variant: "contained", onClick: closeDialog2 }, __6("Close", "elementor"))))));
|
|
761
848
|
};
|
|
762
849
|
|
|
763
850
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
764
|
-
import * as
|
|
851
|
+
import * as React20 from "react";
|
|
765
852
|
import { PencilIcon as PencilIcon2 } from "@elementor/icons";
|
|
766
|
-
import { Box as Box8, Stack as
|
|
767
|
-
import {
|
|
853
|
+
import { Box as Box8, Stack as Stack12 } from "@elementor/ui";
|
|
854
|
+
import { hasProInstalled as hasProInstalled3 } from "@elementor/utils";
|
|
855
|
+
import { __ as __10 } from "@wordpress/i18n";
|
|
768
856
|
|
|
769
857
|
// src/provider/component-instance-context.tsx
|
|
770
|
-
import * as
|
|
858
|
+
import * as React11 from "react";
|
|
771
859
|
import { createContext as createContext2, useContext as useContext2 } from "react";
|
|
772
860
|
var ComponentInstanceContext = createContext2(null);
|
|
773
861
|
function ComponentInstanceProvider({ children, ...props }) {
|
|
774
|
-
return /* @__PURE__ */
|
|
862
|
+
return /* @__PURE__ */ React11.createElement(ComponentInstanceContext.Provider, { value: props }, children);
|
|
775
863
|
}
|
|
776
864
|
var useComponentId = () => useContext2(ComponentInstanceContext)?.componentId;
|
|
777
865
|
var useComponentInstanceOverrides = () => useContext2(ComponentInstanceContext)?.overrides;
|
|
778
866
|
var useComponentOverridableProps = () => useContext2(ComponentInstanceContext)?.overridableProps;
|
|
779
867
|
|
|
780
868
|
// src/components/instance-editing-panel/detach-action.tsx
|
|
781
|
-
import * as
|
|
869
|
+
import * as React13 from "react";
|
|
782
870
|
import { useState } from "react";
|
|
783
871
|
import { notify } from "@elementor/editor-notifications";
|
|
784
872
|
import { DetachIcon } from "@elementor/icons";
|
|
785
|
-
import { __ as
|
|
873
|
+
import { __ as __8 } from "@wordpress/i18n";
|
|
786
874
|
|
|
787
875
|
// src/utils/detach-component-instance/detach-component-instance.ts
|
|
788
876
|
import { getContainer, replaceElement } from "@elementor/editor-elements";
|
|
789
877
|
import { undoable } from "@elementor/editor-v1-adapters";
|
|
790
878
|
import { __dispatch as dispatch, __getState as getState3 } from "@elementor/store";
|
|
791
|
-
import { __ as
|
|
879
|
+
import { __ as __7 } from "@wordpress/i18n";
|
|
792
880
|
|
|
793
881
|
// src/prop-types/component-instance-overrides-prop-type.ts
|
|
794
882
|
import { createPropUtils as createPropUtils3 } from "@elementor/editor-props";
|
|
@@ -1137,8 +1225,8 @@ async function detachComponentInstance({
|
|
|
1137
1225
|
}
|
|
1138
1226
|
},
|
|
1139
1227
|
{
|
|
1140
|
-
title:
|
|
1141
|
-
subtitle:
|
|
1228
|
+
title: __7("Detach from Component", "elementor"),
|
|
1229
|
+
subtitle: __7("Instance detached", "elementor")
|
|
1142
1230
|
}
|
|
1143
1231
|
);
|
|
1144
1232
|
return undoableDetach();
|
|
@@ -1153,16 +1241,16 @@ function extractInstanceOverrides(instanceContainer) {
|
|
|
1153
1241
|
}
|
|
1154
1242
|
|
|
1155
1243
|
// src/components/instance-editing-panel/instance-panel-header.tsx
|
|
1156
|
-
import * as
|
|
1244
|
+
import * as React12 from "react";
|
|
1157
1245
|
import { PanelHeader, PanelHeaderTitle } from "@elementor/editor-panels";
|
|
1158
1246
|
import { EllipsisWithTooltip as EllipsisWithTooltip2 } from "@elementor/editor-ui";
|
|
1159
1247
|
import { ComponentsIcon as ComponentsIcon3 } from "@elementor/icons";
|
|
1160
|
-
import { IconButton, Stack as
|
|
1248
|
+
import { IconButton, Stack as Stack6, Tooltip } from "@elementor/ui";
|
|
1161
1249
|
function InstancePanelHeader({ componentName, actions }) {
|
|
1162
|
-
return /* @__PURE__ */
|
|
1250
|
+
return /* @__PURE__ */ React12.createElement(PanelHeader, { sx: { justifyContent: "start", px: 2 } }, /* @__PURE__ */ React12.createElement(Stack6, { direction: "row", alignItems: "center", flexGrow: 1, gap: 1, maxWidth: "100%" }, /* @__PURE__ */ React12.createElement(ComponentsIcon3, { fontSize: "small", sx: { color: "text.tertiary" } }), /* @__PURE__ */ React12.createElement(EllipsisWithTooltip2, { title: componentName, as: PanelHeaderTitle, sx: { flexGrow: 1 } }), actions));
|
|
1163
1251
|
}
|
|
1164
1252
|
function EditComponentAction({ label, onClick, disabled = false, icon: Icon2 }) {
|
|
1165
|
-
return /* @__PURE__ */
|
|
1253
|
+
return /* @__PURE__ */ React12.createElement(Tooltip, { title: label }, /* @__PURE__ */ React12.createElement(IconButton, { size: "tiny", onClick, "aria-label": label, disabled }, /* @__PURE__ */ React12.createElement(Icon2, { fontSize: "tiny" })));
|
|
1166
1254
|
}
|
|
1167
1255
|
|
|
1168
1256
|
// src/components/instance-editing-panel/detach-action.tsx
|
|
@@ -1182,7 +1270,7 @@ var DetachAction = ({
|
|
|
1182
1270
|
} catch {
|
|
1183
1271
|
notify({
|
|
1184
1272
|
type: "error",
|
|
1185
|
-
message:
|
|
1273
|
+
message: __8("Failed to detach component instance.", "elementor"),
|
|
1186
1274
|
id: "detach-component-instance-failed"
|
|
1187
1275
|
});
|
|
1188
1276
|
}
|
|
@@ -1193,8 +1281,8 @@ var DetachAction = ({
|
|
|
1193
1281
|
const handleDetachClick = () => {
|
|
1194
1282
|
setIsDetachDialogOpen(true);
|
|
1195
1283
|
};
|
|
1196
|
-
const detachLabel =
|
|
1197
|
-
return /* @__PURE__ */
|
|
1284
|
+
const detachLabel = __8("Detach from Component", "elementor");
|
|
1285
|
+
return /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(EditComponentAction, { label: detachLabel, icon: DetachIcon, onClick: handleDetachClick }), /* @__PURE__ */ React13.createElement(
|
|
1198
1286
|
DetachInstanceConfirmationDialog,
|
|
1199
1287
|
{
|
|
1200
1288
|
open: isDetachDialogOpen,
|
|
@@ -1219,21 +1307,21 @@ function getDetachTrackingInfo() {
|
|
|
1219
1307
|
}
|
|
1220
1308
|
|
|
1221
1309
|
// src/components/instance-editing-panel/empty-state.tsx
|
|
1222
|
-
import * as
|
|
1310
|
+
import * as React14 from "react";
|
|
1223
1311
|
import { ComponentPropListIcon, PencilIcon } from "@elementor/icons";
|
|
1224
|
-
import { Button as
|
|
1225
|
-
import { __ as
|
|
1312
|
+
import { Button as Button3, Stack as Stack7, Typography as Typography5 } from "@elementor/ui";
|
|
1313
|
+
import { __ as __9 } from "@wordpress/i18n";
|
|
1226
1314
|
var EmptyState2 = ({ onEditComponent }) => {
|
|
1227
1315
|
const { canEdit } = useComponentsPermissions();
|
|
1228
|
-
const message = canEdit ?
|
|
1316
|
+
const message = canEdit ? __9(
|
|
1229
1317
|
"Edit the component to add properties, manage them or update the design across all instances.",
|
|
1230
1318
|
"elementor"
|
|
1231
|
-
) :
|
|
1319
|
+
) : __9(
|
|
1232
1320
|
"With your current role, you cannot edit this component. Contact an administrator to add properties.",
|
|
1233
1321
|
"elementor"
|
|
1234
1322
|
);
|
|
1235
|
-
return /* @__PURE__ */
|
|
1236
|
-
|
|
1323
|
+
return /* @__PURE__ */ React14.createElement(
|
|
1324
|
+
Stack7,
|
|
1237
1325
|
{
|
|
1238
1326
|
alignItems: "center",
|
|
1239
1327
|
justifyContent: "start",
|
|
@@ -1242,29 +1330,29 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
1242
1330
|
sx: { p: 2.5, pt: 8, pb: 5.5, mt: 1 },
|
|
1243
1331
|
gap: 1.5
|
|
1244
1332
|
},
|
|
1245
|
-
/* @__PURE__ */
|
|
1246
|
-
/* @__PURE__ */
|
|
1247
|
-
/* @__PURE__ */
|
|
1248
|
-
canEdit && !!onEditComponent && /* @__PURE__ */
|
|
1333
|
+
/* @__PURE__ */ React14.createElement(ComponentPropListIcon, { fontSize: "large" }),
|
|
1334
|
+
/* @__PURE__ */ React14.createElement(Typography5, { align: "center", variant: "subtitle2" }, __9("No properties yet", "elementor")),
|
|
1335
|
+
/* @__PURE__ */ React14.createElement(Typography5, { align: "center", variant: "caption", maxWidth: "170px" }, message),
|
|
1336
|
+
canEdit && !!onEditComponent && /* @__PURE__ */ React14.createElement(Button3, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React14.createElement(PencilIcon, { fontSize: "small" }), __9("Edit component", "elementor"))
|
|
1249
1337
|
);
|
|
1250
1338
|
};
|
|
1251
1339
|
|
|
1252
1340
|
// src/components/instance-editing-panel/instance-panel-body.tsx
|
|
1253
|
-
import * as
|
|
1341
|
+
import * as React19 from "react";
|
|
1254
1342
|
import { ControlAdornmentsProvider } from "@elementor/editor-controls";
|
|
1255
1343
|
import { getFieldIndicators } from "@elementor/editor-editing-panel";
|
|
1256
1344
|
import { PanelBody } from "@elementor/editor-panels";
|
|
1257
|
-
import { Divider as Divider2, Stack as
|
|
1345
|
+
import { Divider as Divider2, Stack as Stack11 } from "@elementor/ui";
|
|
1258
1346
|
|
|
1259
1347
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
1260
|
-
import * as
|
|
1348
|
+
import * as React18 from "react";
|
|
1261
1349
|
import { useId } from "react";
|
|
1262
1350
|
import { useStateByElement } from "@elementor/editor-editing-panel";
|
|
1263
1351
|
import { CollapseIcon } from "@elementor/editor-ui";
|
|
1264
|
-
import { Box as Box7, Collapse, ListItemButton as
|
|
1352
|
+
import { Box as Box7, Collapse, ListItemButton as ListItemButton2, ListItemText, Stack as Stack10 } from "@elementor/ui";
|
|
1265
1353
|
|
|
1266
1354
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
1267
|
-
import * as
|
|
1355
|
+
import * as React17 from "react";
|
|
1268
1356
|
import {
|
|
1269
1357
|
ControlReplacementsProvider,
|
|
1270
1358
|
getControlReplacements,
|
|
@@ -1282,7 +1370,7 @@ import {
|
|
|
1282
1370
|
useElement
|
|
1283
1371
|
} from "@elementor/editor-editing-panel";
|
|
1284
1372
|
import { getElementSettings, getElementType as getElementType2 } from "@elementor/editor-elements";
|
|
1285
|
-
import { Stack as
|
|
1373
|
+
import { Stack as Stack9 } from "@elementor/ui";
|
|
1286
1374
|
|
|
1287
1375
|
// src/hooks/use-controls-by-widget-type.ts
|
|
1288
1376
|
import { getElementType } from "@elementor/editor-elements";
|
|
@@ -1316,11 +1404,11 @@ function getControlsByBind(controls) {
|
|
|
1316
1404
|
}
|
|
1317
1405
|
|
|
1318
1406
|
// src/provider/overridable-prop-context.tsx
|
|
1319
|
-
import * as
|
|
1407
|
+
import * as React15 from "react";
|
|
1320
1408
|
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
1321
1409
|
var OverridablePropContext = createContext3(null);
|
|
1322
1410
|
function OverridablePropProvider({ children, ...props }) {
|
|
1323
|
-
return /* @__PURE__ */
|
|
1411
|
+
return /* @__PURE__ */ React15.createElement(OverridablePropContext.Provider, { value: props }, children);
|
|
1324
1412
|
}
|
|
1325
1413
|
var useOverridablePropValue = () => useContext3(OverridablePropContext)?.value;
|
|
1326
1414
|
var useComponentInstanceElement = () => useContext3(OverridablePropContext)?.componentInstanceElement;
|
|
@@ -1549,11 +1637,11 @@ function extractInnerOverrideInfo(override) {
|
|
|
1549
1637
|
}
|
|
1550
1638
|
|
|
1551
1639
|
// src/components/control-label.tsx
|
|
1552
|
-
import * as
|
|
1640
|
+
import * as React16 from "react";
|
|
1553
1641
|
import { ControlAdornments, ControlFormLabel } from "@elementor/editor-controls";
|
|
1554
|
-
import { Stack as
|
|
1642
|
+
import { Stack as Stack8 } from "@elementor/ui";
|
|
1555
1643
|
var ControlLabel = ({ children, ...props }) => {
|
|
1556
|
-
return /* @__PURE__ */
|
|
1644
|
+
return /* @__PURE__ */ React16.createElement(Stack8, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React16.createElement(ControlFormLabel, { ...props }, children), /* @__PURE__ */ React16.createElement(ControlAdornments, null));
|
|
1557
1645
|
};
|
|
1558
1646
|
|
|
1559
1647
|
// src/components/errors.ts
|
|
@@ -1662,7 +1750,7 @@ function OverridePropControl({ overrideKey }) {
|
|
|
1662
1750
|
if (!overridableProp) {
|
|
1663
1751
|
return null;
|
|
1664
1752
|
}
|
|
1665
|
-
return /* @__PURE__ */
|
|
1753
|
+
return /* @__PURE__ */ React17.createElement(SettingsField, { bind: "component_instance", propDisplayName: overridableProp.label }, /* @__PURE__ */ React17.createElement(OverrideControl, { overridableProp }));
|
|
1666
1754
|
}
|
|
1667
1755
|
function OverrideControl({ overridableProp }) {
|
|
1668
1756
|
const componentInstanceElement = useElement();
|
|
@@ -1756,13 +1844,13 @@ function OverrideControl({ overridableProp }) {
|
|
|
1756
1844
|
[overridableProp.overrideKey]: propType
|
|
1757
1845
|
}
|
|
1758
1846
|
});
|
|
1759
|
-
return /* @__PURE__ */
|
|
1847
|
+
return /* @__PURE__ */ React17.createElement(
|
|
1760
1848
|
OverridablePropProvider,
|
|
1761
1849
|
{
|
|
1762
1850
|
value: componentOverridablePropTypeUtil.extract(matchingOverride) ?? void 0,
|
|
1763
1851
|
componentInstanceElement
|
|
1764
1852
|
},
|
|
1765
|
-
/* @__PURE__ */
|
|
1853
|
+
/* @__PURE__ */ React17.createElement(ElementProvider, { element: { id: elementId, type }, elementType, settings }, /* @__PURE__ */ React17.createElement(SettingsField, { bind: propKey, propDisplayName: overridableProp.label }, /* @__PURE__ */ React17.createElement(
|
|
1766
1854
|
PropProvider,
|
|
1767
1855
|
{
|
|
1768
1856
|
propType: propTypeSchema,
|
|
@@ -1772,7 +1860,7 @@ function OverrideControl({ overridableProp }) {
|
|
|
1772
1860
|
return false;
|
|
1773
1861
|
}
|
|
1774
1862
|
},
|
|
1775
|
-
/* @__PURE__ */
|
|
1863
|
+
/* @__PURE__ */ React17.createElement(PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ React17.createElement(ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React17.createElement(Stack9, { direction: "column", gap: 1, mb: 1.5 }, layout !== "custom" && /* @__PURE__ */ React17.createElement(ControlLabel, null, overridableProp.label), /* @__PURE__ */ React17.createElement(OriginalControl, { control, controlProps }))))
|
|
1776
1864
|
)))
|
|
1777
1865
|
);
|
|
1778
1866
|
}
|
|
@@ -1831,7 +1919,7 @@ function getControlParams(controls, originPropFields, label) {
|
|
|
1831
1919
|
}
|
|
1832
1920
|
function OriginalControl({ control, controlProps }) {
|
|
1833
1921
|
const { value } = control;
|
|
1834
|
-
return /* @__PURE__ */
|
|
1922
|
+
return /* @__PURE__ */ React17.createElement(BaseControl, { type: value.type, props: controlProps });
|
|
1835
1923
|
}
|
|
1836
1924
|
function getControlLayout(control) {
|
|
1837
1925
|
return control.value.meta?.layout || controlsRegistry.getLayout(control.value.type);
|
|
@@ -1866,8 +1954,8 @@ function OverridePropsGroup({ group }) {
|
|
|
1866
1954
|
const labelId = `label-${id}`;
|
|
1867
1955
|
const contentId = `content-${id}`;
|
|
1868
1956
|
const title = group.label;
|
|
1869
|
-
return /* @__PURE__ */
|
|
1870
|
-
|
|
1957
|
+
return /* @__PURE__ */ React18.createElement(Box7, { "aria-label": `${title} section` }, /* @__PURE__ */ React18.createElement(
|
|
1958
|
+
ListItemButton2,
|
|
1871
1959
|
{
|
|
1872
1960
|
id: labelId,
|
|
1873
1961
|
"aria-controls": contentId,
|
|
@@ -1876,7 +1964,7 @@ function OverridePropsGroup({ group }) {
|
|
|
1876
1964
|
p: 0,
|
|
1877
1965
|
sx: { "&:hover": { backgroundColor: "transparent" } }
|
|
1878
1966
|
},
|
|
1879
|
-
/* @__PURE__ */
|
|
1967
|
+
/* @__PURE__ */ React18.createElement(Stack10, { direction: "row", alignItems: "center", justifyItems: "start", flexGrow: 1, gap: 0.5 }, /* @__PURE__ */ React18.createElement(
|
|
1880
1968
|
ListItemText,
|
|
1881
1969
|
{
|
|
1882
1970
|
secondary: title,
|
|
@@ -1884,13 +1972,13 @@ function OverridePropsGroup({ group }) {
|
|
|
1884
1972
|
sx: { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 }
|
|
1885
1973
|
}
|
|
1886
1974
|
)),
|
|
1887
|
-
/* @__PURE__ */
|
|
1888
|
-
), /* @__PURE__ */
|
|
1975
|
+
/* @__PURE__ */ React18.createElement(CollapseIcon, { open: isOpen, color: "secondary", fontSize: "tiny" })
|
|
1976
|
+
), /* @__PURE__ */ React18.createElement(Collapse, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto" }, /* @__PURE__ */ React18.createElement(Stack10, { direction: "column", gap: 1, p: 2 }, group.props.map((overrideKey) => /* @__PURE__ */ React18.createElement(OverridePropControl, { key: overrideKey, overrideKey })))));
|
|
1889
1977
|
}
|
|
1890
1978
|
|
|
1891
1979
|
// src/components/instance-editing-panel/instance-panel-body.tsx
|
|
1892
1980
|
function InstancePanelBody({ groups, isEmpty, emptyState, componentInstanceId }) {
|
|
1893
|
-
return /* @__PURE__ */
|
|
1981
|
+
return /* @__PURE__ */ React19.createElement(PanelBody, null, /* @__PURE__ */ React19.createElement(ControlAdornmentsProvider, { items: getFieldIndicators("settings") }, isEmpty ? emptyState : /* @__PURE__ */ React19.createElement(Stack11, { direction: "column", alignItems: "stretch" }, groups.map((group) => /* @__PURE__ */ React19.createElement(React19.Fragment, { key: group.id + componentInstanceId }, /* @__PURE__ */ React19.createElement(OverridePropsGroup, { group }), /* @__PURE__ */ React19.createElement(Divider2, null))))));
|
|
1894
1982
|
}
|
|
1895
1983
|
|
|
1896
1984
|
// src/components/instance-editing-panel/use-instance-panel-data.ts
|
|
@@ -1990,32 +2078,41 @@ function useComponentInstanceSettings() {
|
|
|
1990
2078
|
}
|
|
1991
2079
|
|
|
1992
2080
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
2081
|
+
var EDIT_UPGRADE_URL = "https://go.elementor.com/go-pro-components-edit/";
|
|
1993
2082
|
function InstanceEditingPanel() {
|
|
1994
2083
|
const { canEdit } = useComponentsPermissions();
|
|
1995
2084
|
const data = useInstancePanelData();
|
|
2085
|
+
const hasPro = hasProInstalled3();
|
|
1996
2086
|
if (!data) {
|
|
1997
2087
|
return null;
|
|
1998
2088
|
}
|
|
1999
2089
|
const { componentId, component, overrides, overridableProps, groups, isEmpty, componentInstanceId } = data;
|
|
2000
|
-
const panelTitle =
|
|
2001
|
-
const actions = /* @__PURE__ */
|
|
2002
|
-
return /* @__PURE__ */
|
|
2090
|
+
const panelTitle = __10("Edit %s", "elementor").replace("%s", component.name);
|
|
2091
|
+
const actions = /* @__PURE__ */ React20.createElement(Stack12, { direction: "row", gap: 0.5 }, /* @__PURE__ */ React20.createElement(DetachAction, { componentInstanceId, componentId }), canEdit && /* @__PURE__ */ React20.createElement(EditComponentAction, { disabled: true, label: panelTitle, icon: PencilIcon2 }));
|
|
2092
|
+
return /* @__PURE__ */ React20.createElement(Box8, { "data-testid": "instance-editing-panel", sx: { display: "flex", flexDirection: "column", height: "100%" } }, /* @__PURE__ */ React20.createElement(
|
|
2003
2093
|
ComponentInstanceProvider,
|
|
2004
2094
|
{
|
|
2005
2095
|
componentId,
|
|
2006
2096
|
overrides,
|
|
2007
2097
|
overridableProps
|
|
2008
2098
|
},
|
|
2009
|
-
/* @__PURE__ */
|
|
2010
|
-
/* @__PURE__ */
|
|
2099
|
+
/* @__PURE__ */ React20.createElement(InstancePanelHeader, { componentName: component.name, actions }),
|
|
2100
|
+
/* @__PURE__ */ React20.createElement(
|
|
2011
2101
|
InstancePanelBody,
|
|
2012
2102
|
{
|
|
2013
2103
|
groups,
|
|
2014
2104
|
isEmpty,
|
|
2015
|
-
emptyState: /* @__PURE__ */
|
|
2105
|
+
emptyState: /* @__PURE__ */ React20.createElement(EmptyState2, null),
|
|
2016
2106
|
componentInstanceId
|
|
2017
2107
|
}
|
|
2018
2108
|
)
|
|
2109
|
+
), !hasPro && /* @__PURE__ */ React20.createElement(
|
|
2110
|
+
ComponentsUpgradeAlert,
|
|
2111
|
+
{
|
|
2112
|
+
title: __10("Edit components", "elementor"),
|
|
2113
|
+
description: __10("Editing components requires an active Pro subscription.", "elementor"),
|
|
2114
|
+
upgradeUrl: EDIT_UPGRADE_URL
|
|
2115
|
+
}
|
|
2019
2116
|
));
|
|
2020
2117
|
}
|
|
2021
2118
|
|
|
@@ -2156,8 +2253,8 @@ import {
|
|
|
2156
2253
|
import { getCurrentDocument } from "@elementor/editor-documents";
|
|
2157
2254
|
import { notify as notify2 } from "@elementor/editor-notifications";
|
|
2158
2255
|
import { __getState as getState8 } from "@elementor/store";
|
|
2159
|
-
import { hasProInstalled } from "@elementor/utils";
|
|
2160
|
-
import { __ as
|
|
2256
|
+
import { hasProInstalled as hasProInstalled4 } from "@elementor/utils";
|
|
2257
|
+
import { __ as __11 } from "@wordpress/i18n";
|
|
2161
2258
|
|
|
2162
2259
|
// src/utils/format-component-elements-id.ts
|
|
2163
2260
|
import { hashString } from "@elementor/utils";
|
|
@@ -2235,7 +2332,7 @@ function notifyComponentEditUpgrade() {
|
|
|
2235
2332
|
notify2({
|
|
2236
2333
|
type: "promotion",
|
|
2237
2334
|
id: COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID,
|
|
2238
|
-
message:
|
|
2335
|
+
message: __11("Editing components requires an active Pro subscription.", "elementor"),
|
|
2239
2336
|
additionalActionProps: [
|
|
2240
2337
|
{
|
|
2241
2338
|
size: "small",
|
|
@@ -2243,7 +2340,7 @@ function notifyComponentEditUpgrade() {
|
|
|
2243
2340
|
color: "promotion",
|
|
2244
2341
|
href: EDIT_COMPONENT_UPGRADE_URL,
|
|
2245
2342
|
target: "_blank",
|
|
2246
|
-
children:
|
|
2343
|
+
children: __11("Upgrade Now", "elementor")
|
|
2247
2344
|
}
|
|
2248
2345
|
]
|
|
2249
2346
|
});
|
|
@@ -2356,14 +2453,13 @@ function createComponentView(options) {
|
|
|
2356
2453
|
}
|
|
2357
2454
|
_getContextMenuConfig() {
|
|
2358
2455
|
const isAdministrator = isUserAdministrator();
|
|
2359
|
-
const hasPro =
|
|
2360
|
-
const
|
|
2361
|
-
const
|
|
2362
|
-
const proBadge = `<a href="${EDIT_COMPONENT_UPGRADE_URL}" target="_blank" onclick="event.stopPropagation()" class="${badgeClass}">${proLabel}</a>`;
|
|
2456
|
+
const hasPro = hasProInstalled4();
|
|
2457
|
+
const badgeClass = "elementor-context-menu-list__item__shortcut__promotion-badge";
|
|
2458
|
+
const proBadge = `<a href="${EDIT_COMPONENT_UPGRADE_URL}" target="_blank" onclick="event.stopPropagation()" class="${badgeClass}"><i class="eicon-upgrade-crown"></i></a>`;
|
|
2363
2459
|
const editComponentAction = {
|
|
2364
2460
|
name: "edit component",
|
|
2365
2461
|
icon: "eicon-edit",
|
|
2366
|
-
title: () =>
|
|
2462
|
+
title: () => __11("Edit Component", "elementor"),
|
|
2367
2463
|
...!hasPro && { shortcut: proBadge, hasShortcutAction: true },
|
|
2368
2464
|
isEnabled: () => hasPro,
|
|
2369
2465
|
callback: (_, eventData) => this.editComponent(eventData)
|
|
@@ -2371,7 +2467,7 @@ function createComponentView(options) {
|
|
|
2371
2467
|
const detachInstanceAction = {
|
|
2372
2468
|
name: "detach instance",
|
|
2373
2469
|
icon: "eicon-chain-broken",
|
|
2374
|
-
title: () =>
|
|
2470
|
+
title: () => __11("Detach from Component", "elementor"),
|
|
2375
2471
|
isEnabled: () => true,
|
|
2376
2472
|
callback: (_, eventData) => this.detachInstance(eventData)
|
|
2377
2473
|
};
|
|
@@ -2398,7 +2494,7 @@ function createComponentView(options) {
|
|
|
2398
2494
|
}
|
|
2399
2495
|
}
|
|
2400
2496
|
editComponent({ trigger, location, secondaryLocation }) {
|
|
2401
|
-
const hasPro =
|
|
2497
|
+
const hasPro = hasProInstalled4();
|
|
2402
2498
|
if (!hasPro || this.isComponentCurrentlyEdited()) {
|
|
2403
2499
|
return;
|
|
2404
2500
|
}
|
|
@@ -2430,7 +2526,7 @@ function createComponentView(options) {
|
|
|
2430
2526
|
} catch {
|
|
2431
2527
|
notify2({
|
|
2432
2528
|
type: "error",
|
|
2433
|
-
message:
|
|
2529
|
+
message: __11("Failed to detach component instance.", "elementor"),
|
|
2434
2530
|
id: "detach-component-instance-failed"
|
|
2435
2531
|
});
|
|
2436
2532
|
}
|
|
@@ -2442,7 +2538,7 @@ function createComponentView(options) {
|
|
|
2442
2538
|
if (!isUserAdministrator()) {
|
|
2443
2539
|
return;
|
|
2444
2540
|
}
|
|
2445
|
-
if (!
|
|
2541
|
+
if (!hasProInstalled4()) {
|
|
2446
2542
|
notifyComponentEditUpgrade();
|
|
2447
2543
|
return;
|
|
2448
2544
|
}
|
|
@@ -2543,11 +2639,11 @@ import { getAllDescendants } from "@elementor/editor-elements";
|
|
|
2543
2639
|
import { notify as notify3 } from "@elementor/editor-notifications";
|
|
2544
2640
|
import { blockCommand } from "@elementor/editor-v1-adapters";
|
|
2545
2641
|
import { __getState as getState9 } from "@elementor/store";
|
|
2546
|
-
import { __ as
|
|
2642
|
+
import { __ as __12 } from "@wordpress/i18n";
|
|
2547
2643
|
var COMPONENT_TYPE = "e-component";
|
|
2548
2644
|
var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
2549
2645
|
type: "default",
|
|
2550
|
-
message:
|
|
2646
|
+
message: __12("Can't add this component - components that contain each other can't be nested.", "elementor"),
|
|
2551
2647
|
id: "circular-component-nesting-blocked"
|
|
2552
2648
|
};
|
|
2553
2649
|
function initCircularNestingPrevention() {
|
|
@@ -2698,7 +2794,7 @@ var componentsStylesProvider = createStylesProvider({
|
|
|
2698
2794
|
import { invalidateDocumentData as invalidateDocumentData2, isDocumentDirty as isDocumentDirty2 } from "@elementor/editor-documents";
|
|
2699
2795
|
import { notify as notify4 } from "@elementor/editor-notifications";
|
|
2700
2796
|
import { AxiosError } from "@elementor/http-client";
|
|
2701
|
-
import { __ as
|
|
2797
|
+
import { __ as __13 } from "@wordpress/i18n";
|
|
2702
2798
|
var INSUFFICIENT_PERMISSIONS_ERROR_CODE = "insufficient_permissions";
|
|
2703
2799
|
var PUBLISH_UPGRADE_URL = "https://go.elementor.com/go-pro-components-edit/";
|
|
2704
2800
|
var PUBLISH_UPGRADE_NOTIFICATION_ID = "component-publish-upgrade";
|
|
@@ -2729,7 +2825,7 @@ function notifyPublishUpgrade() {
|
|
|
2729
2825
|
notify4({
|
|
2730
2826
|
type: "promotion",
|
|
2731
2827
|
id: PUBLISH_UPGRADE_NOTIFICATION_ID,
|
|
2732
|
-
message:
|
|
2828
|
+
message: __13(
|
|
2733
2829
|
"You have unpublished component on this page. You need a pro version to publish it.",
|
|
2734
2830
|
"elementor"
|
|
2735
2831
|
),
|
|
@@ -2740,7 +2836,7 @@ function notifyPublishUpgrade() {
|
|
|
2740
2836
|
color: "promotion",
|
|
2741
2837
|
href: PUBLISH_UPGRADE_URL,
|
|
2742
2838
|
target: "_blank",
|
|
2743
|
-
children:
|
|
2839
|
+
children: __13("Upgrade Now", "elementor")
|
|
2744
2840
|
}
|
|
2745
2841
|
]
|
|
2746
2842
|
});
|
|
@@ -2782,7 +2878,7 @@ function init() {
|
|
|
2782
2878
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
2783
2879
|
injectTab({
|
|
2784
2880
|
id: "components",
|
|
2785
|
-
label:
|
|
2881
|
+
label: __14("Components", "elementor"),
|
|
2786
2882
|
component: Components,
|
|
2787
2883
|
position: 1
|
|
2788
2884
|
});
|
|
@@ -2818,7 +2914,6 @@ export {
|
|
|
2818
2914
|
ComponentItem,
|
|
2819
2915
|
ComponentName,
|
|
2820
2916
|
ComponentSearch,
|
|
2821
|
-
EmptyState as ComponentsEmptyState,
|
|
2822
2917
|
ComponentsList,
|
|
2823
2918
|
DetachAction,
|
|
2824
2919
|
EditComponentAction,
|