@elementor/editor-components 4.3.0-1034 → 4.3.0-1036

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
@@ -2650,7 +2650,7 @@ var import_editor_canvas5 = require("@elementor/editor-canvas");
2650
2650
  var import_editor_documents4 = require("@elementor/editor-documents");
2651
2651
  var import_editor_notifications2 = require("@elementor/editor-notifications");
2652
2652
  var import_store23 = require("@elementor/store");
2653
- var import_utils5 = require("@elementor/utils");
2653
+ var import_utils6 = require("@elementor/utils");
2654
2654
  var import_i18n13 = require("@wordpress/i18n");
2655
2655
 
2656
2656
  // src/utils/format-component-elements-id.ts
@@ -2669,9 +2669,66 @@ function formatComponentElementsId(elements, path) {
2669
2669
  });
2670
2670
  }
2671
2671
 
2672
+ // src/utils/reconcile-component-instance-elements.ts
2673
+ var import_editor_elements8 = require("@elementor/editor-elements");
2674
+ var import_utils5 = require("@elementor/utils");
2675
+ var ELEMENT_ID_LENGTH2 = 7;
2676
+ function overridesRecordToMapping(overrides) {
2677
+ const mapping = {};
2678
+ for (const [key, value] of Object.entries(overrides)) {
2679
+ mapping[key] = { value };
2680
+ }
2681
+ return mapping;
2682
+ }
2683
+ function getElementConfig(element) {
2684
+ const type = element.elType === "widget" ? element.widgetType : element.elType;
2685
+ if (!type) {
2686
+ return void 0;
2687
+ }
2688
+ return (0, import_editor_elements8.getWidgetsCache)()?.[type];
2689
+ }
2690
+ function deriveIds(element, seed) {
2691
+ const id = (0, import_utils5.hashString)(seed, ELEMENT_ID_LENGTH2);
2692
+ return {
2693
+ ...element,
2694
+ id,
2695
+ elements: (element.elements ?? []).map((child, index) => deriveIds(child, `${id}_${index}`))
2696
+ };
2697
+ }
2698
+ function reconcileElementTree(element, overridesMapping) {
2699
+ const elementConfig = getElementConfig(element);
2700
+ const withOverrides = applyOverridesToSettings(element.settings ?? {}, overridesMapping);
2701
+ const effectiveSettings = unwrapOverridableSettings(withOverrides);
2702
+ const originalChildren = element.elements ?? [];
2703
+ const originalChildIds = new Set(originalChildren.map((child) => child.id));
2704
+ const attributes = {
2705
+ elements: [...originalChildren],
2706
+ settings: effectiveSettings
2707
+ };
2708
+ if (elementConfig?.children_dependencies?.length) {
2709
+ (0, import_editor_elements8.reconcileInitialChildren)({
2710
+ elementId: element.id,
2711
+ elementConfig,
2712
+ attributes
2713
+ });
2714
+ }
2715
+ const reconciledChildren = (attributes.elements ?? []).map(
2716
+ (child) => originalChildIds.has(child.id) ? child : deriveIds(child, `${element.id}_${child.elType}`)
2717
+ ).map((child) => reconcileElementTree(child, overridesMapping));
2718
+ return {
2719
+ ...element,
2720
+ settings: effectiveSettings,
2721
+ elements: reconciledChildren
2722
+ };
2723
+ }
2724
+ function reconcileComponentInstanceElements(elements, overrides = {}) {
2725
+ const overridesMapping = overridesRecordToMapping(overrides);
2726
+ return elements.map((element) => reconcileElementTree(element, overridesMapping));
2727
+ }
2728
+
2672
2729
  // src/utils/switch-to-component.ts
2673
2730
  var import_editor_documents3 = require("@elementor/editor-documents");
2674
- var import_editor_elements8 = require("@elementor/editor-elements");
2731
+ var import_editor_elements9 = require("@elementor/editor-elements");
2675
2732
  var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
2676
2733
  async function switchToComponent(componentId, componentInstanceId, element) {
2677
2734
  const selector = getSelector(element, componentInstanceId);
@@ -2683,10 +2740,10 @@ async function switchToComponent(componentId, componentInstanceId, element) {
2683
2740
  shouldScroll: false
2684
2741
  });
2685
2742
  await loadComponentsOverridableProps([componentId], { force: true });
2686
- const currentDocumentContainer = (0, import_editor_elements8.getCurrentDocumentContainer)();
2743
+ const currentDocumentContainer = (0, import_editor_elements9.getCurrentDocumentContainer)();
2687
2744
  const topLevelElement = currentDocumentContainer?.children?.[0];
2688
2745
  if (topLevelElement) {
2689
- (0, import_editor_elements8.selectElement)(topLevelElement.id);
2746
+ (0, import_editor_elements9.selectElement)(topLevelElement.id);
2690
2747
  expandNavigator();
2691
2748
  }
2692
2749
  }
@@ -2845,7 +2902,11 @@ function createComponentView(options) {
2845
2902
  };
2846
2903
  const instanceId = this.model.get("id");
2847
2904
  const elements = componentInstance.elements ?? [];
2848
- const formattedElements = formatComponentElementsId(elements, [instanceId]);
2905
+ const reconciledElements = reconcileComponentInstanceElements(
2906
+ elements,
2907
+ componentInstance.overrides ?? {}
2908
+ );
2909
+ const formattedElements = formatComponentElementsId(reconciledElements, [instanceId]);
2849
2910
  this.collection = legacyWindow.elementor.createBackboneElementsCollection(formattedElements);
2850
2911
  this.collection.models.forEach(setInactiveRecursively);
2851
2912
  settings.component_instance = "<template data-children-placeholder></template>";
@@ -2881,7 +2942,7 @@ function createComponentView(options) {
2881
2942
  }
2882
2943
  _getContextMenuConfig() {
2883
2944
  const isAdministrator = isUserAdministrator();
2884
- const hasPro = (0, import_utils5.hasProInstalled)();
2945
+ const hasPro = (0, import_utils6.hasProInstalled)();
2885
2946
  const isOutdated = isProOutdatedForComponents();
2886
2947
  const showPromoBadge = !hasPro && !isOutdated;
2887
2948
  const badgeClass = "elementor-context-menu-list__item__shortcut__promotion-badge";
@@ -2975,7 +3036,7 @@ function createComponentView(options) {
2975
3036
  notifyComponentEditUpdate();
2976
3037
  return;
2977
3038
  }
2978
- if (!(0, import_utils5.hasProInstalled)()) {
3039
+ if (!(0, import_utils6.hasProInstalled)()) {
2979
3040
  notifyComponentEditUpgrade();
2980
3041
  return;
2981
3042
  }
@@ -3072,7 +3133,7 @@ function PopulateStore() {
3072
3133
  }
3073
3134
 
3074
3135
  // src/prevent-circular-nesting.ts
3075
- var import_editor_elements9 = require("@elementor/editor-elements");
3136
+ var import_editor_elements10 = require("@elementor/editor-elements");
3076
3137
  var import_editor_notifications3 = require("@elementor/editor-notifications");
3077
3138
  var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
3078
3139
  var import_store26 = require("@elementor/store");
@@ -3167,7 +3228,7 @@ function blockCircularMove(args) {
3167
3228
  if (!container) {
3168
3229
  return false;
3169
3230
  }
3170
- const allElements = (0, import_editor_elements9.getAllDescendants)(container);
3231
+ const allElements = (0, import_editor_elements10.getAllDescendants)(container);
3171
3232
  return allElements.some((element) => {
3172
3233
  const componentId = extractComponentIdFromContainer(element);
3173
3234
  if (componentId === null) {