@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.js +110 -43
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +79 -9
- package/dist/index.mjs.map +1 -1
- package/package.json +23 -23
- package/src/create-component-type.ts +6 -1
- package/src/utils/component-document-data.ts +25 -8
- package/src/utils/reconcile-component-instance-elements.ts +107 -0
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 {
|
|
338
|
-
var
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
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
|
|
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>";
|