@elementor/editor-components 3.35.0-480 → 3.35.0-482

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 CHANGED
@@ -40,9 +40,9 @@ var import_editor_canvas8 = require("@elementor/editor-canvas");
40
40
  var import_editor_documents13 = require("@elementor/editor-documents");
41
41
  var import_editor_editing_panel8 = require("@elementor/editor-editing-panel");
42
42
  var import_editor_elements_panel = require("@elementor/editor-elements-panel");
43
- var import_editor_panels4 = require("@elementor/editor-panels");
43
+ var import_editor_panels5 = require("@elementor/editor-panels");
44
44
  var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
45
- var import_editor_v1_adapters13 = require("@elementor/editor-v1-adapters");
45
+ var import_editor_v1_adapters14 = require("@elementor/editor-v1-adapters");
46
46
  var import_store80 = require("@elementor/store");
47
47
  var import_i18n31 = require("@wordpress/i18n");
48
48
 
@@ -380,6 +380,8 @@ var componentOverrideTransformer = (0, import_editor_canvas3.createTransformer)(
380
380
  var React10 = __toESM(require("react"));
381
381
  var import_editor_current_user = require("@elementor/editor-current-user");
382
382
  var import_editor_documents6 = require("@elementor/editor-documents");
383
+ var import_editor_panels3 = require("@elementor/editor-panels");
384
+ var import_editor_ui6 = require("@elementor/editor-ui");
383
385
  var import_icons7 = require("@elementor/icons");
384
386
  var import_store29 = require("@elementor/store");
385
387
  var import_ui10 = require("@elementor/ui");
@@ -731,59 +733,9 @@ function deleteOverridableGroup({ componentId, groupId }) {
731
733
  // src/store/actions/delete-overridable-prop.ts
732
734
  var import_store15 = require("@elementor/store");
733
735
 
734
- // src/utils/revert-element-overridable-setting.ts
736
+ // src/utils/revert-overridable-settings.ts
735
737
  var import_editor_elements2 = require("@elementor/editor-elements");
736
738
 
737
- // src/prop-types/component-instance-override-prop-type.ts
738
- var import_editor_props = require("@elementor/editor-props");
739
- var import_schema = require("@elementor/schema");
740
- var componentInstanceOverridePropTypeUtil = (0, import_editor_props.createPropUtils)(
741
- "override",
742
- import_schema.z.object({
743
- override_key: import_schema.z.string(),
744
- override_value: import_schema.z.unknown(),
745
- schema_source: import_schema.z.object({
746
- type: import_schema.z.literal("component"),
747
- id: import_schema.z.number()
748
- })
749
- })
750
- );
751
-
752
- // src/prop-types/component-instance-overrides-prop-type.ts
753
- var import_editor_props3 = require("@elementor/editor-props");
754
- var import_schema3 = require("@elementor/schema");
755
-
756
- // src/prop-types/component-overridable-prop-type.ts
757
- var import_editor_props2 = require("@elementor/editor-props");
758
- var import_schema2 = require("@elementor/schema");
759
- var componentOverridablePropTypeUtil = (0, import_editor_props2.createPropUtils)(
760
- "overridable",
761
- import_schema2.z.object({
762
- override_key: import_schema2.z.string(),
763
- origin_value: import_schema2.z.object({
764
- $$type: import_schema2.z.string(),
765
- value: import_schema2.z.unknown()
766
- }).nullable()
767
- })
768
- );
769
-
770
- // src/prop-types/component-instance-overrides-prop-type.ts
771
- var componentInstanceOverridesPropTypeUtil = (0, import_editor_props3.createPropUtils)(
772
- "overrides",
773
- import_schema3.z.array(import_schema3.z.union([componentInstanceOverridePropTypeUtil.schema, componentOverridablePropTypeUtil.schema])).optional().default([])
774
- );
775
-
776
- // src/prop-types/component-instance-prop-type.ts
777
- var import_editor_props4 = require("@elementor/editor-props");
778
- var import_schema4 = require("@elementor/schema");
779
- var componentInstancePropTypeUtil = (0, import_editor_props4.createPropUtils)(
780
- "component-instance",
781
- import_schema4.z.object({
782
- component_id: import_editor_props4.numberPropTypeUtil.schema,
783
- overrides: import_schema4.z.optional(componentInstanceOverridesPropTypeUtil.schema)
784
- })
785
- );
786
-
787
739
  // src/create-component-type.ts
788
740
  var import_editor_canvas4 = require("@elementor/editor-canvas");
789
741
  var import_editor_documents3 = require("@elementor/editor-documents");
@@ -1026,19 +978,69 @@ function createComponentModel() {
1026
978
  });
1027
979
  }
1028
980
 
981
+ // src/prop-types/component-instance-override-prop-type.ts
982
+ var import_editor_props = require("@elementor/editor-props");
983
+ var import_schema = require("@elementor/schema");
984
+ var componentInstanceOverridePropTypeUtil = (0, import_editor_props.createPropUtils)(
985
+ "override",
986
+ import_schema.z.object({
987
+ override_key: import_schema.z.string(),
988
+ override_value: import_schema.z.unknown(),
989
+ schema_source: import_schema.z.object({
990
+ type: import_schema.z.literal("component"),
991
+ id: import_schema.z.number()
992
+ })
993
+ })
994
+ );
995
+
996
+ // src/prop-types/component-instance-overrides-prop-type.ts
997
+ var import_editor_props3 = require("@elementor/editor-props");
998
+ var import_schema3 = require("@elementor/schema");
999
+
1000
+ // src/prop-types/component-overridable-prop-type.ts
1001
+ var import_editor_props2 = require("@elementor/editor-props");
1002
+ var import_schema2 = require("@elementor/schema");
1003
+ var componentOverridablePropTypeUtil = (0, import_editor_props2.createPropUtils)(
1004
+ "overridable",
1005
+ import_schema2.z.object({
1006
+ override_key: import_schema2.z.string(),
1007
+ origin_value: import_schema2.z.object({
1008
+ $$type: import_schema2.z.string(),
1009
+ value: import_schema2.z.unknown()
1010
+ }).nullable()
1011
+ })
1012
+ );
1013
+
1014
+ // src/prop-types/component-instance-overrides-prop-type.ts
1015
+ var componentInstanceOverridesPropTypeUtil = (0, import_editor_props3.createPropUtils)(
1016
+ "overrides",
1017
+ import_schema3.z.array(import_schema3.z.union([componentInstanceOverridePropTypeUtil.schema, componentOverridablePropTypeUtil.schema])).optional().default([])
1018
+ );
1019
+
1020
+ // src/prop-types/component-instance-prop-type.ts
1021
+ var import_editor_props4 = require("@elementor/editor-props");
1022
+ var import_schema4 = require("@elementor/schema");
1023
+ var componentInstancePropTypeUtil = (0, import_editor_props4.createPropUtils)(
1024
+ "component-instance",
1025
+ import_schema4.z.object({
1026
+ component_id: import_editor_props4.numberPropTypeUtil.schema,
1027
+ overrides: import_schema4.z.optional(componentInstanceOverridesPropTypeUtil.schema)
1028
+ })
1029
+ );
1030
+
1029
1031
  // src/utils/is-component-instance.ts
1030
1032
  function isComponentInstance(elementModel) {
1031
1033
  return [elementModel.widgetType, elementModel.elType].includes(COMPONENT_WIDGET_TYPE);
1032
1034
  }
1033
1035
 
1034
- // src/utils/revert-element-overridable-setting.ts
1036
+ // src/utils/revert-overridable-settings.ts
1035
1037
  function revertElementOverridableSetting(elementId, settingKey, originValue, overrideKey) {
1036
1038
  const container = (0, import_editor_elements2.getContainer)(elementId);
1037
1039
  if (!container) {
1038
1040
  return;
1039
1041
  }
1040
1042
  if (isComponentInstance(container.model.toJSON())) {
1041
- revertComponentInstanceSetting(elementId, overrideKey);
1043
+ revertComponentInstanceOverridableSetting(elementId, overrideKey);
1042
1044
  return;
1043
1045
  }
1044
1046
  (0, import_editor_elements2.updateElementSettings)({
@@ -1047,17 +1049,17 @@ function revertElementOverridableSetting(elementId, settingKey, originValue, ove
1047
1049
  withHistory: false
1048
1050
  });
1049
1051
  }
1050
- function revertComponentInstanceSetting(elementId, overrideKey) {
1052
+ function revertComponentInstanceOverridableSetting(elementId, overrideKey) {
1051
1053
  const setting = (0, import_editor_elements2.getElementSetting)(elementId, "component_instance");
1052
1054
  const componentInstance = componentInstancePropTypeUtil.extract(setting);
1053
1055
  const overrides = componentInstanceOverridesPropTypeUtil.extract(componentInstance?.overrides);
1054
- if (!overrides) {
1056
+ if (!overrides?.length) {
1055
1057
  return;
1056
1058
  }
1057
- const updatedOverrides = getUpdatedComponentInstanceOverrides(overrides, overrideKey);
1059
+ const revertedOverrides = revertComponentInstanceOverrides(overrides, overrideKey);
1058
1060
  const updatedSetting = componentInstancePropTypeUtil.create({
1059
1061
  ...componentInstance,
1060
- overrides: componentInstanceOverridesPropTypeUtil.create(updatedOverrides)
1062
+ overrides: componentInstanceOverridesPropTypeUtil.create(revertedOverrides)
1061
1063
  });
1062
1064
  (0, import_editor_elements2.updateElementSettings)({
1063
1065
  id: elementId,
@@ -1065,22 +1067,103 @@ function revertComponentInstanceSetting(elementId, overrideKey) {
1065
1067
  withHistory: false
1066
1068
  });
1067
1069
  }
1068
- function getUpdatedComponentInstanceOverrides(overrides, overrideKey) {
1070
+ function revertComponentInstanceOverrides(overrides, filterByKey) {
1069
1071
  return overrides.map((item) => {
1070
- const isOverridable = componentOverridablePropTypeUtil.isValid(item);
1071
- if (!isOverridable) {
1072
+ if (!componentOverridablePropTypeUtil.isValid(item)) {
1072
1073
  return item;
1073
1074
  }
1074
- const isOriginValueOverride2 = componentInstanceOverridePropTypeUtil.isValid(item.value.origin_value);
1075
- if (!isOriginValueOverride2) {
1075
+ if (!componentInstanceOverridePropTypeUtil.isValid(item.value.origin_value)) {
1076
1076
  return null;
1077
1077
  }
1078
- if (item.value.override_key !== overrideKey) {
1078
+ if (filterByKey && item.value.override_key !== filterByKey) {
1079
1079
  return item;
1080
1080
  }
1081
1081
  return item.value.origin_value;
1082
1082
  }).filter((item) => item !== null);
1083
1083
  }
1084
+ function revertOverridablePropsFromSettings(settings) {
1085
+ let hasChanges = false;
1086
+ const revertedSettings = {};
1087
+ for (const [key, value] of Object.entries(settings)) {
1088
+ if (componentOverridablePropTypeUtil.isValid(value)) {
1089
+ revertedSettings[key] = value.value.origin_value;
1090
+ hasChanges = true;
1091
+ } else {
1092
+ revertedSettings[key] = value;
1093
+ }
1094
+ }
1095
+ return { hasChanges, settings: revertedSettings };
1096
+ }
1097
+ function revertAllOverridablesInElementData(elementData) {
1098
+ const revertedElement = { ...elementData };
1099
+ if (isComponentInstance({ widgetType: elementData.widgetType, elType: elementData.elType })) {
1100
+ revertedElement.settings = revertComponentInstanceSettings(elementData.settings);
1101
+ } else if (revertedElement.settings) {
1102
+ const { settings } = revertOverridablePropsFromSettings(revertedElement.settings);
1103
+ revertedElement.settings = settings;
1104
+ }
1105
+ if (revertedElement.elements) {
1106
+ revertedElement.elements = revertedElement.elements.map(revertAllOverridablesInElementData);
1107
+ }
1108
+ return revertedElement;
1109
+ }
1110
+ function revertComponentInstanceSettings(settings) {
1111
+ if (!settings?.component_instance) {
1112
+ return settings;
1113
+ }
1114
+ const componentInstance = componentInstancePropTypeUtil.extract(settings.component_instance);
1115
+ const overrides = componentInstanceOverridesPropTypeUtil.extract(componentInstance?.overrides);
1116
+ if (!overrides?.length) {
1117
+ return settings;
1118
+ }
1119
+ const revertedOverrides = revertComponentInstanceOverrides(overrides);
1120
+ return {
1121
+ ...settings,
1122
+ component_instance: componentInstancePropTypeUtil.create({
1123
+ ...componentInstance,
1124
+ overrides: componentInstanceOverridesPropTypeUtil.create(revertedOverrides)
1125
+ })
1126
+ };
1127
+ }
1128
+ function revertAllOverridablesInContainer(container) {
1129
+ (0, import_editor_elements2.getAllDescendants)(container).forEach((element) => {
1130
+ if (element.model.get("widgetType") === COMPONENT_WIDGET_TYPE) {
1131
+ revertComponentInstanceOverridesInElement(element);
1132
+ } else {
1133
+ revertElementSettings(element);
1134
+ }
1135
+ });
1136
+ }
1137
+ function revertComponentInstanceOverridesInElement(element) {
1138
+ const settings = element.settings?.toJSON() ?? {};
1139
+ const componentInstance = componentInstancePropTypeUtil.extract(settings.component_instance);
1140
+ const overrides = componentInstanceOverridesPropTypeUtil.extract(componentInstance?.overrides);
1141
+ if (!overrides?.length) {
1142
+ return;
1143
+ }
1144
+ const revertedOverrides = revertComponentInstanceOverrides(overrides);
1145
+ const updatedSetting = componentInstancePropTypeUtil.create({
1146
+ ...componentInstance,
1147
+ overrides: componentInstanceOverridesPropTypeUtil.create(revertedOverrides)
1148
+ });
1149
+ (0, import_editor_elements2.updateElementSettings)({
1150
+ id: element.id,
1151
+ props: { component_instance: updatedSetting },
1152
+ withHistory: false
1153
+ });
1154
+ }
1155
+ function revertElementSettings(element) {
1156
+ const settings = element.settings?.toJSON() ?? {};
1157
+ const { hasChanges, settings: revertedSettings } = revertOverridablePropsFromSettings(settings);
1158
+ if (!hasChanges) {
1159
+ return;
1160
+ }
1161
+ (0, import_editor_elements2.updateElementSettings)({
1162
+ id: element.id,
1163
+ props: revertedSettings,
1164
+ withHistory: false
1165
+ });
1166
+ }
1084
1167
 
1085
1168
  // src/store/actions/delete-overridable-prop.ts
1086
1169
  function deleteOverridableProp({ componentId, propKey, source }) {
@@ -1671,14 +1754,18 @@ function PropertiesGroup({
1671
1754
  import_ui6.Box,
1672
1755
  {
1673
1756
  sx: {
1674
- flex: 1,
1675
1757
  height: 28,
1676
1758
  display: "flex",
1677
1759
  alignItems: "center",
1678
1760
  border: 2,
1679
1761
  borderColor: "text.secondary",
1680
1762
  borderRadius: 1,
1681
- pl: 0.5
1763
+ pl: 0.5,
1764
+ flexGrow: 1,
1765
+ overflow: "hidden",
1766
+ textOverflow: "ellipsis",
1767
+ whiteSpace: "nowrap",
1768
+ width: "100%"
1682
1769
  }
1683
1770
  },
1684
1771
  /* @__PURE__ */ React6.createElement(
@@ -1693,12 +1780,13 @@ function PropertiesGroup({
1693
1780
  }
1694
1781
  )
1695
1782
  ) : /* @__PURE__ */ React6.createElement(
1696
- import_ui6.Typography,
1783
+ import_editor_ui3.EllipsisWithTooltip,
1697
1784
  {
1785
+ title: group.label,
1786
+ as: import_ui6.Typography,
1698
1787
  variant: "caption",
1699
1788
  sx: { color: "text.primary", fontWeight: 400, lineHeight: 1.66 }
1700
- },
1701
- group.label
1789
+ }
1702
1790
  ), /* @__PURE__ */ React6.createElement(
1703
1791
  import_ui6.IconButton,
1704
1792
  {
@@ -2075,24 +2163,22 @@ var ComponentPanelHeader = () => {
2075
2163
  properties_count: overridablePropsCount
2076
2164
  });
2077
2165
  };
2078
- return /* @__PURE__ */ React10.createElement(import_ui10.Box, null, /* @__PURE__ */ React10.createElement(
2079
- import_ui10.Stack,
2166
+ return /* @__PURE__ */ React10.createElement(import_ui10.Box, null, /* @__PURE__ */ React10.createElement(import_editor_panels3.PanelHeader, { sx: { justifyContent: "start", px: 2 } }, /* @__PURE__ */ React10.createElement(import_ui10.Tooltip, { title: (0, import_i18n13.__)("Back", "elementor") }, /* @__PURE__ */ React10.createElement(import_ui10.IconButton, { size: "tiny", onClick: onBack, "aria-label": (0, import_i18n13.__)("Back", "elementor") }, /* @__PURE__ */ React10.createElement(import_icons7.ArrowLeftIcon, { fontSize: "tiny" }))), /* @__PURE__ */ React10.createElement(import_icons7.ComponentsFilledIcon, { fontSize: "tiny", stroke: "currentColor" }), /* @__PURE__ */ React10.createElement(
2167
+ import_editor_ui6.EllipsisWithTooltip,
2080
2168
  {
2081
- direction: "row",
2082
- alignItems: "center",
2083
- justifyContent: "space-between",
2084
- sx: { height: 48, pl: 1.5, pr: 2, py: 1 }
2085
- },
2086
- /* @__PURE__ */ React10.createElement(import_ui10.Stack, { direction: "row", alignItems: "center" }, /* @__PURE__ */ React10.createElement(import_ui10.Tooltip, { title: (0, import_i18n13.__)("Back", "elementor") }, /* @__PURE__ */ React10.createElement(import_ui10.IconButton, { size: "tiny", onClick: onBack, "aria-label": (0, import_i18n13.__)("Back", "elementor") }, /* @__PURE__ */ React10.createElement(import_icons7.ArrowLeftIcon, { fontSize: "tiny" }))), /* @__PURE__ */ React10.createElement(import_ui10.Stack, { direction: "row", alignItems: "center", gap: 0.5 }, /* @__PURE__ */ React10.createElement(import_icons7.ComponentsFilledIcon, { fontSize: "tiny", stroke: "currentColor" }), /* @__PURE__ */ React10.createElement(import_ui10.Typography, { variant: "caption", sx: { fontWeight: 500 } }, componentName))),
2087
- /* @__PURE__ */ React10.createElement(
2088
- ComponentsBadge,
2089
- {
2090
- overridablePropsCount,
2091
- ref: anchorRef,
2092
- onClick: handleOpenPropertiesPanel
2093
- }
2094
- )
2095
- ), /* @__PURE__ */ React10.createElement(import_ui10.Divider, null), /* @__PURE__ */ React10.createElement(
2169
+ title: componentName,
2170
+ as: import_ui10.Typography,
2171
+ variant: "caption",
2172
+ sx: { fontWeight: 500, flexGrow: 1 }
2173
+ }
2174
+ ), /* @__PURE__ */ React10.createElement(
2175
+ ComponentsBadge,
2176
+ {
2177
+ overridablePropsCount,
2178
+ ref: anchorRef,
2179
+ onClick: handleOpenPropertiesPanel
2180
+ }
2181
+ )), /* @__PURE__ */ React10.createElement(import_ui10.Divider, null), /* @__PURE__ */ React10.createElement(
2096
2182
  ComponentIntroduction,
2097
2183
  {
2098
2184
  anchorRef,
@@ -2115,7 +2201,7 @@ function getComponentName() {
2115
2201
 
2116
2202
  // src/components/components-tab/components.tsx
2117
2203
  var React19 = __toESM(require("react"));
2118
- var import_editor_ui9 = require("@elementor/editor-ui");
2204
+ var import_editor_ui10 = require("@elementor/editor-ui");
2119
2205
 
2120
2206
  // src/hooks/use-components.ts
2121
2207
  var import_store31 = require("@elementor/store");
@@ -2278,7 +2364,7 @@ var React15 = __toESM(require("react"));
2278
2364
  var import_react8 = require("react");
2279
2365
  var import_editor_canvas5 = require("@elementor/editor-canvas");
2280
2366
  var import_editor_elements8 = require("@elementor/editor-elements");
2281
- var import_editor_ui7 = require("@elementor/editor-ui");
2367
+ var import_editor_ui8 = require("@elementor/editor-ui");
2282
2368
  var import_icons9 = require("@elementor/icons");
2283
2369
  var import_ui13 = require("@elementor/ui");
2284
2370
  var import_i18n19 = require("@wordpress/i18n");
@@ -2533,13 +2619,13 @@ var createComponentModel2 = (component) => {
2533
2619
 
2534
2620
  // src/components/components-tab/delete-confirmation-dialog.tsx
2535
2621
  var React14 = __toESM(require("react"));
2536
- var import_editor_ui6 = require("@elementor/editor-ui");
2622
+ var import_editor_ui7 = require("@elementor/editor-ui");
2537
2623
  var import_i18n18 = require("@wordpress/i18n");
2538
2624
  function DeleteConfirmationDialog({ open, onClose, onConfirm }) {
2539
- return /* @__PURE__ */ React14.createElement(import_editor_ui6.ConfirmationDialog, { open, onClose }, /* @__PURE__ */ React14.createElement(import_editor_ui6.ConfirmationDialog.Title, null, (0, import_i18n18.__)("Delete this component?", "elementor")), /* @__PURE__ */ React14.createElement(import_editor_ui6.ConfirmationDialog.Content, null, /* @__PURE__ */ React14.createElement(import_editor_ui6.ConfirmationDialog.ContentText, null, (0, import_i18n18.__)(
2625
+ return /* @__PURE__ */ React14.createElement(import_editor_ui7.ConfirmationDialog, { open, onClose }, /* @__PURE__ */ React14.createElement(import_editor_ui7.ConfirmationDialog.Title, null, (0, import_i18n18.__)("Delete this component?", "elementor")), /* @__PURE__ */ React14.createElement(import_editor_ui7.ConfirmationDialog.Content, null, /* @__PURE__ */ React14.createElement(import_editor_ui7.ConfirmationDialog.ContentText, null, (0, import_i18n18.__)(
2540
2626
  "Existing instances on your pages will remain functional. You will no longer find this component in your list.",
2541
2627
  "elementor"
2542
- ))), /* @__PURE__ */ React14.createElement(import_editor_ui6.ConfirmationDialog.Actions, { onClose, onConfirm }));
2628
+ ))), /* @__PURE__ */ React14.createElement(import_editor_ui7.ConfirmationDialog.Actions, { onClose, onConfirm }));
2543
2629
  }
2544
2630
 
2545
2631
  // src/components/components-tab/components-item.tsx
@@ -2554,7 +2640,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
2554
2640
  openEditMode,
2555
2641
  error,
2556
2642
  getProps: getEditableProps
2557
- } = (0, import_editor_ui7.useEditable)({
2643
+ } = (0, import_editor_ui8.useEditable)({
2558
2644
  value: component.name,
2559
2645
  onSubmit: renameComponent2,
2560
2646
  validation: validateComponentTitle
@@ -2586,7 +2672,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
2586
2672
  setIsDeleteDialogOpen(false);
2587
2673
  };
2588
2674
  return /* @__PURE__ */ React15.createElement(import_ui13.Stack, null, /* @__PURE__ */ React15.createElement(
2589
- import_editor_ui7.WarningInfotip,
2675
+ import_editor_ui8.WarningInfotip,
2590
2676
  {
2591
2677
  open: Boolean(error),
2592
2678
  text: error ?? "",
@@ -2625,7 +2711,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
2625
2711
  },
2626
2712
  /* @__PURE__ */ React15.createElement(import_ui13.ListItemIcon, { size: "tiny" }, /* @__PURE__ */ React15.createElement(import_icons9.ComponentsIcon, { fontSize: "tiny" })),
2627
2713
  /* @__PURE__ */ React15.createElement(Indicator, { isActive: isEditing, isError: !!error }, /* @__PURE__ */ React15.createElement(import_ui13.Box, { display: "flex", flex: 1, minWidth: 0, flexGrow: 1 }, isEditing ? /* @__PURE__ */ React15.createElement(
2628
- import_editor_ui7.EditableField,
2714
+ import_editor_ui8.EditableField,
2629
2715
  {
2630
2716
  ref: editableRef,
2631
2717
  as: import_ui13.Typography,
@@ -2633,7 +2719,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
2633
2719
  ...getEditableProps()
2634
2720
  }
2635
2721
  ) : /* @__PURE__ */ React15.createElement(
2636
- import_editor_ui7.EllipsisWithTooltip,
2722
+ import_editor_ui8.EllipsisWithTooltip,
2637
2723
  {
2638
2724
  title: component.name,
2639
2725
  as: import_ui13.Typography,
@@ -2658,7 +2744,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
2658
2744
  }
2659
2745
  },
2660
2746
  canRename && /* @__PURE__ */ React15.createElement(
2661
- import_editor_ui7.MenuListItem,
2747
+ import_editor_ui8.MenuListItem,
2662
2748
  {
2663
2749
  sx: { minWidth: "160px" },
2664
2750
  primaryTypographyProps: { variant: "caption", color: "text.primary" },
@@ -2670,7 +2756,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
2670
2756
  (0, import_i18n19.__)("Rename", "elementor")
2671
2757
  ),
2672
2758
  canDelete && /* @__PURE__ */ React15.createElement(
2673
- import_editor_ui7.MenuListItem,
2759
+ import_editor_ui8.MenuListItem,
2674
2760
  {
2675
2761
  sx: { minWidth: "160px" },
2676
2762
  primaryTypographyProps: { variant: "caption", color: "error.light" },
@@ -2929,11 +3015,11 @@ var useFilteredComponents = () => {
2929
3015
 
2930
3016
  // src/components/components-tab/components-pro-notification.tsx
2931
3017
  var React18 = __toESM(require("react"));
2932
- var import_editor_ui8 = require("@elementor/editor-ui");
3018
+ var import_editor_ui9 = require("@elementor/editor-ui");
2933
3019
  var import_ui16 = require("@elementor/ui");
2934
3020
  var import_i18n21 = require("@wordpress/i18n");
2935
3021
  function ComponentsProNotification() {
2936
- 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.__)(
3022
+ return /* @__PURE__ */ React18.createElement(import_ui16.Box, { sx: { px: 2 } }, /* @__PURE__ */ React18.createElement(import_editor_ui9.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.__)(
2937
3023
  "Soon Components will be part of the Pro subscription, but what you create now will remain on your site.",
2938
3024
  "elementor"
2939
3025
  ))));
@@ -2946,7 +3032,7 @@ var ComponentsContent = () => {
2946
3032
  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));
2947
3033
  };
2948
3034
  var Components = () => {
2949
- return /* @__PURE__ */ React19.createElement(import_editor_ui9.ThemeProvider, null, /* @__PURE__ */ React19.createElement(SearchProvider, { localStorageKey: "elementor-components-search" }, /* @__PURE__ */ React19.createElement(ComponentsContent, null)));
3035
+ return /* @__PURE__ */ React19.createElement(import_editor_ui10.ThemeProvider, null, /* @__PURE__ */ React19.createElement(SearchProvider, { localStorageKey: "elementor-components-search" }, /* @__PURE__ */ React19.createElement(ComponentsContent, null)));
2950
3036
  };
2951
3037
 
2952
3038
  // src/components/consts.ts
@@ -2958,7 +3044,7 @@ var React20 = __toESM(require("react"));
2958
3044
  var import_react11 = require("react");
2959
3045
  var import_editor_elements10 = require("@elementor/editor-elements");
2960
3046
  var import_editor_notifications3 = require("@elementor/editor-notifications");
2961
- var import_editor_ui10 = require("@elementor/editor-ui");
3047
+ var import_editor_ui11 = require("@elementor/editor-ui");
2962
3048
  var import_icons11 = require("@elementor/icons");
2963
3049
  var import_store47 = require("@elementor/store");
2964
3050
  var import_ui17 = require("@elementor/ui");
@@ -3096,10 +3182,11 @@ async function createUnpublishedComponent({
3096
3182
  }) {
3097
3183
  const generatedUid = uid ?? (0, import_utils4.generateUniqueId)("component");
3098
3184
  const componentBase = { uid: generatedUid, name };
3185
+ const elementDataWithOverridablesReverted = revertAllOverridablesInElementData(element);
3099
3186
  (0, import_store45.__dispatch)(
3100
3187
  slice.actions.addUnpublished({
3101
3188
  ...componentBase,
3102
- elements: [element],
3189
+ elements: [elementDataWithOverridablesReverted],
3103
3190
  overridableProps
3104
3191
  })
3105
3192
  );
@@ -3272,7 +3359,7 @@ function CreateComponentForm() {
3272
3359
  ...eventData.current
3273
3360
  });
3274
3361
  };
3275
- return /* @__PURE__ */ React20.createElement(import_editor_ui10.ThemeProvider, null, /* @__PURE__ */ React20.createElement(
3362
+ return /* @__PURE__ */ React20.createElement(import_editor_ui11.ThemeProvider, null, /* @__PURE__ */ React20.createElement(
3276
3363
  import_ui17.Popover,
3277
3364
  {
3278
3365
  open: element !== null,
@@ -3322,7 +3409,7 @@ var Form2 = ({
3322
3409
  create: (0, import_i18n23.__)("Create", "elementor")
3323
3410
  };
3324
3411
  const nameInputId = "component-name";
3325
- return /* @__PURE__ */ React20.createElement(import_editor_ui10.Form, { onSubmit: handleSubmit }, /* @__PURE__ */ React20.createElement(import_ui17.Stack, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React20.createElement(
3412
+ return /* @__PURE__ */ React20.createElement(import_editor_ui11.Form, { onSubmit: handleSubmit }, /* @__PURE__ */ React20.createElement(import_ui17.Stack, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React20.createElement(
3326
3413
  import_ui17.Stack,
3327
3414
  {
3328
3415
  direction: "row",
@@ -3646,12 +3733,12 @@ function getComponentDOMElements(id2) {
3646
3733
 
3647
3734
  // src/components/in-edit-mode.tsx
3648
3735
  var React23 = __toESM(require("react"));
3649
- var import_editor_ui11 = require("@elementor/editor-ui");
3736
+ var import_editor_ui12 = require("@elementor/editor-ui");
3650
3737
  var import_icons12 = require("@elementor/icons");
3651
3738
  var import_ui18 = require("@elementor/ui");
3652
3739
  var import_i18n25 = require("@wordpress/i18n");
3653
3740
  var openEditModeDialog = (lockedBy) => {
3654
- (0, import_editor_ui11.openDialog)({
3741
+ (0, import_editor_ui12.openDialog)({
3655
3742
  component: /* @__PURE__ */ React23.createElement(EditModeDialog, { lockedBy })
3656
3743
  });
3657
3744
  };
@@ -3660,7 +3747,7 @@ var EditModeDialog = ({ lockedBy }) => {
3660
3747
  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.__)(
3661
3748
  "You can wait for them to finish or reach out to coordinate your changes together.",
3662
3749
  "elementor"
3663
- )), /* @__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"))))));
3750
+ )), /* @__PURE__ */ React23.createElement(import_ui18.DialogActions, null, /* @__PURE__ */ React23.createElement(import_ui18.Button, { color: "secondary", variant: "contained", onClick: import_editor_ui12.closeDialog }, (0, import_i18n25.__)("Close", "elementor"))))));
3664
3751
  };
3665
3752
 
3666
3753
  // src/components/instance-editing-panel/instance-editing-panel.tsx
@@ -3668,8 +3755,8 @@ var React29 = __toESM(require("react"));
3668
3755
  var import_editor_controls4 = require("@elementor/editor-controls");
3669
3756
  var import_editor_editing_panel5 = require("@elementor/editor-editing-panel");
3670
3757
  var import_editor_elements15 = require("@elementor/editor-elements");
3671
- var import_editor_panels3 = require("@elementor/editor-panels");
3672
- var import_editor_ui13 = require("@elementor/editor-ui");
3758
+ var import_editor_panels4 = require("@elementor/editor-panels");
3759
+ var import_editor_ui14 = require("@elementor/editor-ui");
3673
3760
  var import_icons14 = require("@elementor/icons");
3674
3761
  var import_ui23 = require("@elementor/ui");
3675
3762
  var import_i18n27 = require("@wordpress/i18n");
@@ -3718,7 +3805,7 @@ var EmptyState2 = ({ onEditComponent }) => {
3718
3805
  var React28 = __toESM(require("react"));
3719
3806
  var import_react16 = require("react");
3720
3807
  var import_editor_editing_panel4 = require("@elementor/editor-editing-panel");
3721
- var import_editor_ui12 = require("@elementor/editor-ui");
3808
+ var import_editor_ui13 = require("@elementor/editor-ui");
3722
3809
  var import_ui22 = require("@elementor/ui");
3723
3810
 
3724
3811
  // src/components/instance-editing-panel/override-prop-control.tsx
@@ -4074,7 +4161,7 @@ function OverridePropsGroup({ group, props, overrides }) {
4074
4161
  sx: { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 }
4075
4162
  }
4076
4163
  )),
4077
- /* @__PURE__ */ React28.createElement(import_editor_ui12.CollapseIcon, { open: isOpen, color: "secondary", fontSize: "tiny" })
4164
+ /* @__PURE__ */ React28.createElement(import_editor_ui13.CollapseIcon, { open: isOpen, color: "secondary", fontSize: "tiny" })
4078
4165
  ), /* @__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(
4079
4166
  OverridePropControl,
4080
4167
  {
@@ -4102,7 +4189,7 @@ function InstanceEditingPanel() {
4102
4189
  const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
4103
4190
  const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
4104
4191
  const isEmpty = groups.length === 0 || Object.keys(overridableProps.props).length === 0;
4105
- 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, sx: { flexGrow: 1 } }), 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(
4192
+ return /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(import_editor_panels4.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_ui14.EllipsisWithTooltip, { title: component.name, as: import_editor_panels4.PanelHeaderTitle, sx: { flexGrow: 1 } }), 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_panels4.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(
4106
4193
  OverridePropsGroup,
4107
4194
  {
4108
4195
  group,
@@ -5342,23 +5429,61 @@ function hasOverrides(settings) {
5342
5429
  return !!overridesValue?.length;
5343
5430
  }
5344
5431
 
5432
+ // src/sync/revert-overridables-on-copy-or-duplicate.ts
5433
+ var import_editor_v1_adapters13 = require("@elementor/editor-v1-adapters");
5434
+ function initRevertOverridablesOnCopyOrDuplicate() {
5435
+ (0, import_editor_v1_adapters13.registerDataHook)("after", "document/elements/duplicate", (_args, result) => {
5436
+ if (!isEditingComponent()) {
5437
+ return;
5438
+ }
5439
+ revertOverridablesForDuplicatedElements(result);
5440
+ });
5441
+ (0, import_editor_v1_adapters13.registerDataHook)("after", "document/elements/copy", (args) => {
5442
+ if (!isEditingComponent()) {
5443
+ return;
5444
+ }
5445
+ revertOverridablesInStorage(args.storageKey ?? "clipboard");
5446
+ });
5447
+ }
5448
+ function revertOverridablesForDuplicatedElements(duplicatedElements) {
5449
+ const containers = Array.isArray(duplicatedElements) ? duplicatedElements : [duplicatedElements];
5450
+ containers.forEach((container) => {
5451
+ revertAllOverridablesInContainer(container);
5452
+ });
5453
+ }
5454
+ function revertOverridablesInStorage(storageKey) {
5455
+ const storage = window.elementorCommon?.storage;
5456
+ if (!storage) {
5457
+ return;
5458
+ }
5459
+ const storageData = storage.get(storageKey);
5460
+ if (!storageData?.elements?.length) {
5461
+ return;
5462
+ }
5463
+ const elementsDataWithOverridablesReverted = storageData.elements.map(revertAllOverridablesInElementData);
5464
+ storage.set(storageKey, {
5465
+ ...storageData,
5466
+ elements: elementsDataWithOverridablesReverted
5467
+ });
5468
+ }
5469
+
5345
5470
  // src/init.ts
5346
5471
  function init() {
5347
5472
  import_editor_styles_repository2.stylesRepository.register(componentsStylesProvider);
5348
5473
  (0, import_store80.__registerSlice)(slice);
5349
- (0, import_editor_panels4.__registerPanel)(panel);
5474
+ (0, import_editor_panels5.__registerPanel)(panel);
5350
5475
  (0, import_editor_canvas8.registerElementType)(
5351
5476
  COMPONENT_WIDGET_TYPE,
5352
5477
  (options) => createComponentType({ ...options, showLockedByModal: openEditModeDialog })
5353
5478
  );
5354
- (0, import_editor_v1_adapters13.registerDataHook)("dependency", "editor/documents/close", (args) => {
5479
+ (0, import_editor_v1_adapters14.registerDataHook)("dependency", "editor/documents/close", (args) => {
5355
5480
  const document = (0, import_editor_documents13.getV1CurrentDocument)();
5356
5481
  if (document.config.type === COMPONENT_DOCUMENT_TYPE) {
5357
5482
  args.mode = "autosave";
5358
5483
  }
5359
5484
  return true;
5360
5485
  });
5361
- (0, import_editor_v1_adapters13.registerDataHook)("after", "preview/drop", onElementDrop);
5486
+ (0, import_editor_v1_adapters14.registerDataHook)("after", "preview/drop", onElementDrop);
5362
5487
  window.elementorCommon.__beforeSave = beforeSave;
5363
5488
  (0, import_editor_elements_panel.injectTab)({
5364
5489
  id: "components",
@@ -5382,7 +5507,7 @@ function init() {
5382
5507
  id: "component-panel-header",
5383
5508
  component: ComponentPanelHeader
5384
5509
  });
5385
- (0, import_editor_v1_adapters13.registerDataHook)("after", "editor/documents/attach-preview", async () => {
5510
+ (0, import_editor_v1_adapters14.registerDataHook)("after", "editor/documents/attach-preview", async () => {
5386
5511
  const { id: id2, config } = (0, import_editor_documents13.getV1CurrentDocument)();
5387
5512
  if (id2) {
5388
5513
  removeComponentStyles(id2);
@@ -5415,6 +5540,7 @@ function init() {
5415
5540
  initNonAtomicNestingPrevention();
5416
5541
  initLoadComponentDataAfterInstanceAdded();
5417
5542
  initHandleComponentEditModeContainer();
5543
+ initRevertOverridablesOnCopyOrDuplicate();
5418
5544
  }
5419
5545
  // Annotate the CommonJS export names for ESM import in node:
5420
5546
  0 && (module.exports = {