@elementor/editor-components 4.3.0-998 → 4.4.0-1064

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.mjs CHANGED
@@ -334,14 +334,21 @@ var useIsSanitizedComponent = (componentId, key) => {
334
334
  };
335
335
 
336
336
  // src/utils/component-document-data.ts
337
- import { getV1DocumentsManager } from "@elementor/editor-documents";
338
- var getComponentDocumentData = async (id) => {
339
- const documentManager = getV1DocumentsManager();
340
- try {
341
- return await documentManager.request(id);
342
- } catch {
343
- return null;
344
- }
337
+ import { ajax as ajax2 } from "@elementor/editor-v1-adapters";
338
+ var getComponentDocumentParams = (id) => ({
339
+ action: "get_document_config",
340
+ unique_id: `document-${id}`,
341
+ data: { id }
342
+ });
343
+ var pendingRequests = /* @__PURE__ */ new Map();
344
+ var getComponentDocumentData = (id) => {
345
+ const pendingRequest = pendingRequests.get(id);
346
+ if (pendingRequest) {
347
+ return pendingRequest;
348
+ }
349
+ const request = ajax2.load(getComponentDocumentParams(id)).catch(() => null).finally(() => pendingRequests.delete(id));
350
+ pendingRequests.set(id, request);
351
+ return request;
345
352
  };
346
353
 
347
354
  // src/component-instance-transformer.ts
@@ -2612,6 +2619,65 @@ function formatComponentElementsId(elements, path) {
2612
2619
  });
2613
2620
  }
2614
2621
 
2622
+ // src/utils/reconcile-component-instance-elements.ts
2623
+ import {
2624
+ getWidgetsCache as getWidgetsCache2,
2625
+ reconcileInitialChildren
2626
+ } from "@elementor/editor-elements";
2627
+ import { hashString as hashString2 } from "@elementor/utils";
2628
+ var ELEMENT_ID_LENGTH2 = 7;
2629
+ function overridesRecordToMapping(overrides) {
2630
+ const mapping = {};
2631
+ for (const [key, value] of Object.entries(overrides)) {
2632
+ mapping[key] = { value };
2633
+ }
2634
+ return mapping;
2635
+ }
2636
+ function getElementConfig(element) {
2637
+ const type = element.elType === "widget" ? element.widgetType : element.elType;
2638
+ if (!type) {
2639
+ return void 0;
2640
+ }
2641
+ return getWidgetsCache2()?.[type];
2642
+ }
2643
+ function deriveIds(element, seed) {
2644
+ const id = hashString2(seed, ELEMENT_ID_LENGTH2);
2645
+ return {
2646
+ ...element,
2647
+ id,
2648
+ elements: (element.elements ?? []).map((child, index) => deriveIds(child, `${id}_${index}`))
2649
+ };
2650
+ }
2651
+ function reconcileElementTree(element, overridesMapping) {
2652
+ const elementConfig = getElementConfig(element);
2653
+ const withOverrides = applyOverridesToSettings(element.settings ?? {}, overridesMapping);
2654
+ const effectiveSettings = unwrapOverridableSettings(withOverrides);
2655
+ const originalChildren = element.elements ?? [];
2656
+ const originalChildIds = new Set(originalChildren.map((child) => child.id));
2657
+ const attributes = {
2658
+ elements: [...originalChildren],
2659
+ settings: effectiveSettings
2660
+ };
2661
+ if (elementConfig?.children_dependencies?.length) {
2662
+ reconcileInitialChildren({
2663
+ elementId: element.id,
2664
+ elementConfig,
2665
+ attributes
2666
+ });
2667
+ }
2668
+ const reconciledChildren = (attributes.elements ?? []).map(
2669
+ (child) => originalChildIds.has(child.id) ? child : deriveIds(child, `${element.id}_${child.elType}`)
2670
+ ).map((child) => reconcileElementTree(child, overridesMapping));
2671
+ return {
2672
+ ...element,
2673
+ elements: reconciledChildren
2674
+ };
2675
+ }
2676
+ function reconcileComponentInstanceElements(elements, overrides = {}) {
2677
+ const overridesMapping = overridesRecordToMapping(overrides);
2678
+ return elements.map((element) => reconcileElementTree(element, overridesMapping));
2679
+ }
2680
+
2615
2681
  // src/utils/switch-to-component.ts
2616
2682
  import { invalidateDocumentData, switchToDocument } from "@elementor/editor-documents";
2617
2683
  import { getCurrentDocumentContainer, selectElement as selectElement2 } from "@elementor/editor-elements";
@@ -2788,7 +2854,11 @@ function createComponentView(options) {
2788
2854
  };
2789
2855
  const instanceId = this.model.get("id");
2790
2856
  const elements = componentInstance.elements ?? [];
2791
- const formattedElements = formatComponentElementsId(elements, [instanceId]);
2857
+ const reconciledElements = reconcileComponentInstanceElements(
2858
+ elements,
2859
+ componentInstance.overrides ?? {}
2860
+ );
2861
+ const formattedElements = formatComponentElementsId(reconciledElements, [instanceId]);
2792
2862
  this.collection = legacyWindow.elementor.createBackboneElementsCollection(formattedElements);
2793
2863
  this.collection.models.forEach(setInactiveRecursively);
2794
2864
  settings.component_instance = "<template data-children-placeholder></template>";