@elementor/editor-components 3.35.0-481 → 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
@@ -42,7 +42,7 @@ var import_editor_editing_panel8 = require("@elementor/editor-editing-panel");
42
42
  var import_editor_elements_panel = require("@elementor/editor-elements-panel");
43
43
  var import_editor_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
 
@@ -733,59 +733,9 @@ function deleteOverridableGroup({ componentId, groupId }) {
733
733
  // src/store/actions/delete-overridable-prop.ts
734
734
  var import_store15 = require("@elementor/store");
735
735
 
736
- // src/utils/revert-element-overridable-setting.ts
736
+ // src/utils/revert-overridable-settings.ts
737
737
  var import_editor_elements2 = require("@elementor/editor-elements");
738
738
 
739
- // src/prop-types/component-instance-override-prop-type.ts
740
- var import_editor_props = require("@elementor/editor-props");
741
- var import_schema = require("@elementor/schema");
742
- var componentInstanceOverridePropTypeUtil = (0, import_editor_props.createPropUtils)(
743
- "override",
744
- import_schema.z.object({
745
- override_key: import_schema.z.string(),
746
- override_value: import_schema.z.unknown(),
747
- schema_source: import_schema.z.object({
748
- type: import_schema.z.literal("component"),
749
- id: import_schema.z.number()
750
- })
751
- })
752
- );
753
-
754
- // src/prop-types/component-instance-overrides-prop-type.ts
755
- var import_editor_props3 = require("@elementor/editor-props");
756
- var import_schema3 = require("@elementor/schema");
757
-
758
- // src/prop-types/component-overridable-prop-type.ts
759
- var import_editor_props2 = require("@elementor/editor-props");
760
- var import_schema2 = require("@elementor/schema");
761
- var componentOverridablePropTypeUtil = (0, import_editor_props2.createPropUtils)(
762
- "overridable",
763
- import_schema2.z.object({
764
- override_key: import_schema2.z.string(),
765
- origin_value: import_schema2.z.object({
766
- $$type: import_schema2.z.string(),
767
- value: import_schema2.z.unknown()
768
- }).nullable()
769
- })
770
- );
771
-
772
- // src/prop-types/component-instance-overrides-prop-type.ts
773
- var componentInstanceOverridesPropTypeUtil = (0, import_editor_props3.createPropUtils)(
774
- "overrides",
775
- import_schema3.z.array(import_schema3.z.union([componentInstanceOverridePropTypeUtil.schema, componentOverridablePropTypeUtil.schema])).optional().default([])
776
- );
777
-
778
- // src/prop-types/component-instance-prop-type.ts
779
- var import_editor_props4 = require("@elementor/editor-props");
780
- var import_schema4 = require("@elementor/schema");
781
- var componentInstancePropTypeUtil = (0, import_editor_props4.createPropUtils)(
782
- "component-instance",
783
- import_schema4.z.object({
784
- component_id: import_editor_props4.numberPropTypeUtil.schema,
785
- overrides: import_schema4.z.optional(componentInstanceOverridesPropTypeUtil.schema)
786
- })
787
- );
788
-
789
739
  // src/create-component-type.ts
790
740
  var import_editor_canvas4 = require("@elementor/editor-canvas");
791
741
  var import_editor_documents3 = require("@elementor/editor-documents");
@@ -1028,19 +978,69 @@ function createComponentModel() {
1028
978
  });
1029
979
  }
1030
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
+
1031
1031
  // src/utils/is-component-instance.ts
1032
1032
  function isComponentInstance(elementModel) {
1033
1033
  return [elementModel.widgetType, elementModel.elType].includes(COMPONENT_WIDGET_TYPE);
1034
1034
  }
1035
1035
 
1036
- // src/utils/revert-element-overridable-setting.ts
1036
+ // src/utils/revert-overridable-settings.ts
1037
1037
  function revertElementOverridableSetting(elementId, settingKey, originValue, overrideKey) {
1038
1038
  const container = (0, import_editor_elements2.getContainer)(elementId);
1039
1039
  if (!container) {
1040
1040
  return;
1041
1041
  }
1042
1042
  if (isComponentInstance(container.model.toJSON())) {
1043
- revertComponentInstanceSetting(elementId, overrideKey);
1043
+ revertComponentInstanceOverridableSetting(elementId, overrideKey);
1044
1044
  return;
1045
1045
  }
1046
1046
  (0, import_editor_elements2.updateElementSettings)({
@@ -1049,17 +1049,17 @@ function revertElementOverridableSetting(elementId, settingKey, originValue, ove
1049
1049
  withHistory: false
1050
1050
  });
1051
1051
  }
1052
- function revertComponentInstanceSetting(elementId, overrideKey) {
1052
+ function revertComponentInstanceOverridableSetting(elementId, overrideKey) {
1053
1053
  const setting = (0, import_editor_elements2.getElementSetting)(elementId, "component_instance");
1054
1054
  const componentInstance = componentInstancePropTypeUtil.extract(setting);
1055
1055
  const overrides = componentInstanceOverridesPropTypeUtil.extract(componentInstance?.overrides);
1056
- if (!overrides) {
1056
+ if (!overrides?.length) {
1057
1057
  return;
1058
1058
  }
1059
- const updatedOverrides = getUpdatedComponentInstanceOverrides(overrides, overrideKey);
1059
+ const revertedOverrides = revertComponentInstanceOverrides(overrides, overrideKey);
1060
1060
  const updatedSetting = componentInstancePropTypeUtil.create({
1061
1061
  ...componentInstance,
1062
- overrides: componentInstanceOverridesPropTypeUtil.create(updatedOverrides)
1062
+ overrides: componentInstanceOverridesPropTypeUtil.create(revertedOverrides)
1063
1063
  });
1064
1064
  (0, import_editor_elements2.updateElementSettings)({
1065
1065
  id: elementId,
@@ -1067,22 +1067,103 @@ function revertComponentInstanceSetting(elementId, overrideKey) {
1067
1067
  withHistory: false
1068
1068
  });
1069
1069
  }
1070
- function getUpdatedComponentInstanceOverrides(overrides, overrideKey) {
1070
+ function revertComponentInstanceOverrides(overrides, filterByKey) {
1071
1071
  return overrides.map((item) => {
1072
- const isOverridable = componentOverridablePropTypeUtil.isValid(item);
1073
- if (!isOverridable) {
1072
+ if (!componentOverridablePropTypeUtil.isValid(item)) {
1074
1073
  return item;
1075
1074
  }
1076
- const isOriginValueOverride2 = componentInstanceOverridePropTypeUtil.isValid(item.value.origin_value);
1077
- if (!isOriginValueOverride2) {
1075
+ if (!componentInstanceOverridePropTypeUtil.isValid(item.value.origin_value)) {
1078
1076
  return null;
1079
1077
  }
1080
- if (item.value.override_key !== overrideKey) {
1078
+ if (filterByKey && item.value.override_key !== filterByKey) {
1081
1079
  return item;
1082
1080
  }
1083
1081
  return item.value.origin_value;
1084
1082
  }).filter((item) => item !== null);
1085
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
+ }
1086
1167
 
1087
1168
  // src/store/actions/delete-overridable-prop.ts
1088
1169
  function deleteOverridableProp({ componentId, propKey, source }) {
@@ -3101,10 +3182,11 @@ async function createUnpublishedComponent({
3101
3182
  }) {
3102
3183
  const generatedUid = uid ?? (0, import_utils4.generateUniqueId)("component");
3103
3184
  const componentBase = { uid: generatedUid, name };
3185
+ const elementDataWithOverridablesReverted = revertAllOverridablesInElementData(element);
3104
3186
  (0, import_store45.__dispatch)(
3105
3187
  slice.actions.addUnpublished({
3106
3188
  ...componentBase,
3107
- elements: [element],
3189
+ elements: [elementDataWithOverridablesReverted],
3108
3190
  overridableProps
3109
3191
  })
3110
3192
  );
@@ -5347,6 +5429,44 @@ function hasOverrides(settings) {
5347
5429
  return !!overridesValue?.length;
5348
5430
  }
5349
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
+
5350
5470
  // src/init.ts
5351
5471
  function init() {
5352
5472
  import_editor_styles_repository2.stylesRepository.register(componentsStylesProvider);
@@ -5356,14 +5476,14 @@ function init() {
5356
5476
  COMPONENT_WIDGET_TYPE,
5357
5477
  (options) => createComponentType({ ...options, showLockedByModal: openEditModeDialog })
5358
5478
  );
5359
- (0, import_editor_v1_adapters13.registerDataHook)("dependency", "editor/documents/close", (args) => {
5479
+ (0, import_editor_v1_adapters14.registerDataHook)("dependency", "editor/documents/close", (args) => {
5360
5480
  const document = (0, import_editor_documents13.getV1CurrentDocument)();
5361
5481
  if (document.config.type === COMPONENT_DOCUMENT_TYPE) {
5362
5482
  args.mode = "autosave";
5363
5483
  }
5364
5484
  return true;
5365
5485
  });
5366
- (0, import_editor_v1_adapters13.registerDataHook)("after", "preview/drop", onElementDrop);
5486
+ (0, import_editor_v1_adapters14.registerDataHook)("after", "preview/drop", onElementDrop);
5367
5487
  window.elementorCommon.__beforeSave = beforeSave;
5368
5488
  (0, import_editor_elements_panel.injectTab)({
5369
5489
  id: "components",
@@ -5387,7 +5507,7 @@ function init() {
5387
5507
  id: "component-panel-header",
5388
5508
  component: ComponentPanelHeader
5389
5509
  });
5390
- (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 () => {
5391
5511
  const { id: id2, config } = (0, import_editor_documents13.getV1CurrentDocument)();
5392
5512
  if (id2) {
5393
5513
  removeComponentStyles(id2);
@@ -5420,6 +5540,7 @@ function init() {
5420
5540
  initNonAtomicNestingPrevention();
5421
5541
  initLoadComponentDataAfterInstanceAdded();
5422
5542
  initHandleComponentEditModeContainer();
5543
+ initRevertOverridablesOnCopyOrDuplicate();
5423
5544
  }
5424
5545
  // Annotate the CommonJS export names for ESM import in node:
5425
5546
  0 && (module.exports = {