@elementor/editor-components 3.35.0-385 → 3.35.0-387
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 +107 -18
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +105 -16
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -22
- package/src/create-component-type.ts +1 -1
- package/src/hooks/regenerate-override-keys.ts +118 -0
- package/src/init.ts +5 -2
- package/src/prop-types/component-instance-override-prop-type.ts +3 -3
- package/src/types.ts +7 -9
- package/src/utils/get-component-ids.ts +2 -2
- package/src/utils/is-component-instance.ts +7 -0
package/dist/index.js
CHANGED
|
@@ -42,7 +42,7 @@ var import_editor_editing_panel6 = require("@elementor/editor-editing-panel");
|
|
|
42
42
|
var import_editor_elements_panel = require("@elementor/editor-elements-panel");
|
|
43
43
|
var import_editor_panels4 = require("@elementor/editor-panels");
|
|
44
44
|
var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
|
|
45
|
-
var
|
|
45
|
+
var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
|
|
46
46
|
var import_store64 = require("@elementor/store");
|
|
47
47
|
var import_i18n24 = require("@wordpress/i18n");
|
|
48
48
|
|
|
@@ -1671,7 +1671,7 @@ var onElementDrop = (_args, element) => {
|
|
|
1671
1671
|
};
|
|
1672
1672
|
|
|
1673
1673
|
// src/create-component-type.ts
|
|
1674
|
-
var
|
|
1674
|
+
var COMPONENT_WIDGET_TYPE = "e-component";
|
|
1675
1675
|
var updateGroups = (groups, config) => {
|
|
1676
1676
|
const disableMap = new Map(Object.entries(config.disable ?? {}));
|
|
1677
1677
|
const addMap = new Map(Object.entries(config.add ?? {}));
|
|
@@ -1826,11 +1826,16 @@ function setInactiveRecursively(model) {
|
|
|
1826
1826
|
}
|
|
1827
1827
|
}
|
|
1828
1828
|
|
|
1829
|
+
// src/utils/is-component-instance.ts
|
|
1830
|
+
function isComponentInstance(elementModel) {
|
|
1831
|
+
return [elementModel.widgetType, elementModel.elType].includes(COMPONENT_WIDGET_TYPE);
|
|
1832
|
+
}
|
|
1833
|
+
|
|
1829
1834
|
// src/utils/get-component-ids.ts
|
|
1830
1835
|
var getComponentIds = async (elements) => {
|
|
1831
1836
|
const components = elements.map(async ({ widgetType, elType, elements: childElements, settings }) => {
|
|
1832
1837
|
const ids = [];
|
|
1833
|
-
const isComponent =
|
|
1838
|
+
const isComponent = isComponentInstance({ widgetType, elType });
|
|
1834
1839
|
if (isComponent) {
|
|
1835
1840
|
const componentId = settings?.component_instance?.value?.component_id.value;
|
|
1836
1841
|
const document = await getComponentDocumentData(componentId);
|
|
@@ -3271,16 +3276,99 @@ function isPropAllowed(bind) {
|
|
|
3271
3276
|
return !FORBIDDEN_KEYS.includes(bind);
|
|
3272
3277
|
}
|
|
3273
3278
|
|
|
3279
|
+
// src/hooks/regenerate-override-keys.ts
|
|
3280
|
+
var import_editor_elements10 = require("@elementor/editor-elements");
|
|
3281
|
+
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
|
|
3282
|
+
var import_utils8 = require("@elementor/utils");
|
|
3283
|
+
function initRegenerateOverrideKeys() {
|
|
3284
|
+
(0, import_editor_v1_adapters6.registerDataHook)("after", "document/elements/duplicate", (_args, result) => {
|
|
3285
|
+
regenerateOverrideKeysForContainers(result);
|
|
3286
|
+
});
|
|
3287
|
+
(0, import_editor_v1_adapters6.registerDataHook)("after", "document/elements/paste", (_args, result) => {
|
|
3288
|
+
regenerateOverrideKeysForContainers(result);
|
|
3289
|
+
});
|
|
3290
|
+
(0, import_editor_v1_adapters6.registerDataHook)("after", "document/elements/import", (_args, result) => {
|
|
3291
|
+
regenerateOverrideKeysForContainers(result);
|
|
3292
|
+
});
|
|
3293
|
+
}
|
|
3294
|
+
function regenerateOverrideKeysForContainers(result) {
|
|
3295
|
+
const containers = Array.isArray(result) ? result : [result];
|
|
3296
|
+
containers.forEach((container) => {
|
|
3297
|
+
regenerateOverrideKeysRecursive(container.id);
|
|
3298
|
+
});
|
|
3299
|
+
}
|
|
3300
|
+
function regenerateOverrideKeysRecursive(elementId) {
|
|
3301
|
+
const container = (0, import_editor_elements10.getContainer)(elementId);
|
|
3302
|
+
if (!container) {
|
|
3303
|
+
return;
|
|
3304
|
+
}
|
|
3305
|
+
getAllElements(container).forEach(regenerateOverrideKeys);
|
|
3306
|
+
}
|
|
3307
|
+
function getAllElements(container) {
|
|
3308
|
+
const children = (container.children ?? []).flatMap(getAllElements) ?? [];
|
|
3309
|
+
return [container, ...children];
|
|
3310
|
+
}
|
|
3311
|
+
function regenerateOverrideKeys(element) {
|
|
3312
|
+
if (!isComponentInstance(element.model.toJSON())) {
|
|
3313
|
+
return;
|
|
3314
|
+
}
|
|
3315
|
+
const settings = element.settings?.toJSON() ?? {};
|
|
3316
|
+
if (!hasOverrides(settings)) {
|
|
3317
|
+
return;
|
|
3318
|
+
}
|
|
3319
|
+
const componentInstance = settings.component_instance;
|
|
3320
|
+
const overrides = componentInstance.value.overrides;
|
|
3321
|
+
const newOverrides = overrides.value.map((override) => {
|
|
3322
|
+
if (!componentInstanceOverridePropTypeUtil.isValid(override)) {
|
|
3323
|
+
return override;
|
|
3324
|
+
}
|
|
3325
|
+
return {
|
|
3326
|
+
...override,
|
|
3327
|
+
value: {
|
|
3328
|
+
...override.value,
|
|
3329
|
+
override_key: (0, import_utils8.generateUniqueId)("prop")
|
|
3330
|
+
}
|
|
3331
|
+
};
|
|
3332
|
+
});
|
|
3333
|
+
const newComponentInstance = {
|
|
3334
|
+
...componentInstance,
|
|
3335
|
+
value: {
|
|
3336
|
+
...componentInstance.value,
|
|
3337
|
+
overrides: {
|
|
3338
|
+
...overrides,
|
|
3339
|
+
value: newOverrides
|
|
3340
|
+
}
|
|
3341
|
+
}
|
|
3342
|
+
};
|
|
3343
|
+
(0, import_editor_elements10.updateElementSettings)({
|
|
3344
|
+
id: element.id,
|
|
3345
|
+
props: { component_instance: newComponentInstance },
|
|
3346
|
+
withHistory: false
|
|
3347
|
+
});
|
|
3348
|
+
}
|
|
3349
|
+
function hasOverrides(settings) {
|
|
3350
|
+
if (!componentInstancePropTypeUtil.isValid(settings?.component_instance)) {
|
|
3351
|
+
return false;
|
|
3352
|
+
}
|
|
3353
|
+
const componentInstance = componentInstancePropTypeUtil.extract(settings?.component_instance);
|
|
3354
|
+
const overrides = componentInstance?.overrides;
|
|
3355
|
+
if (!componentInstanceOverridesPropTypeUtil.isValid(overrides)) {
|
|
3356
|
+
return false;
|
|
3357
|
+
}
|
|
3358
|
+
const overridesValue = overrides?.value;
|
|
3359
|
+
return !!overridesValue?.length;
|
|
3360
|
+
}
|
|
3361
|
+
|
|
3274
3362
|
// src/mcp/index.ts
|
|
3275
3363
|
var import_editor_mcp2 = require("@elementor/editor-mcp");
|
|
3276
3364
|
|
|
3277
3365
|
// src/mcp/save-as-component-tool.ts
|
|
3278
3366
|
var import_editor_canvas7 = require("@elementor/editor-canvas");
|
|
3279
|
-
var
|
|
3367
|
+
var import_editor_elements11 = require("@elementor/editor-elements");
|
|
3280
3368
|
var import_editor_mcp = require("@elementor/editor-mcp");
|
|
3281
3369
|
var import_http_client2 = require("@elementor/http-client");
|
|
3282
3370
|
var import_schema6 = require("@elementor/schema");
|
|
3283
|
-
var
|
|
3371
|
+
var import_utils9 = require("@elementor/utils");
|
|
3284
3372
|
var InputSchema = {
|
|
3285
3373
|
element_id: import_schema6.z.string().describe(
|
|
3286
3374
|
'The unique identifier of the element to save as a component. Use the "list-elements" tool to find available element IDs in the current document.'
|
|
@@ -3311,7 +3399,7 @@ var ERROR_MESSAGES2 = {
|
|
|
3311
3399
|
var handleSaveAsComponent = async (params) => {
|
|
3312
3400
|
const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
|
|
3313
3401
|
const validElementTypes = getValidElementTypes();
|
|
3314
|
-
const container = (0,
|
|
3402
|
+
const container = (0, import_editor_elements11.getContainer)(elementId);
|
|
3315
3403
|
if (!container) {
|
|
3316
3404
|
throw new Error(ERROR_MESSAGES2.ELEMENT_NOT_FOUND);
|
|
3317
3405
|
}
|
|
@@ -3327,7 +3415,7 @@ var handleSaveAsComponent = async (params) => {
|
|
|
3327
3415
|
if (overridableProps) {
|
|
3328
3416
|
updateElementDataWithOverridableProps(element, overridableProps);
|
|
3329
3417
|
}
|
|
3330
|
-
const uid = (0,
|
|
3418
|
+
const uid = (0, import_utils9.generateUniqueId)("component");
|
|
3331
3419
|
try {
|
|
3332
3420
|
await apiClient.validate({
|
|
3333
3421
|
items: [
|
|
@@ -3349,7 +3437,7 @@ var handleSaveAsComponent = async (params) => {
|
|
|
3349
3437
|
};
|
|
3350
3438
|
function enrichOverridableProps(input, rootElement) {
|
|
3351
3439
|
const enrichedProps = {};
|
|
3352
|
-
const defaultGroupId = (0,
|
|
3440
|
+
const defaultGroupId = (0, import_utils9.generateUniqueId)("group");
|
|
3353
3441
|
Object.entries(input.props).forEach(([, prop]) => {
|
|
3354
3442
|
const { elementId, propKey } = prop;
|
|
3355
3443
|
const element = findElementById(rootElement, elementId);
|
|
@@ -3358,7 +3446,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
3358
3446
|
}
|
|
3359
3447
|
const elType = element.elType;
|
|
3360
3448
|
const widgetType = element.widgetType || element.elType;
|
|
3361
|
-
const elementType = (0,
|
|
3449
|
+
const elementType = (0, import_editor_elements11.getElementType)(widgetType);
|
|
3362
3450
|
if (!elementType) {
|
|
3363
3451
|
throw new Error(
|
|
3364
3452
|
`Element type "${widgetType}" is not atomic or does not have a settings schema. Cannot expose property "${propKey}" for element "${elementId}".`
|
|
@@ -3370,7 +3458,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
3370
3458
|
`Property "${propKey}" does not exist in element "${elementId}" (type: ${widgetType}). Available properties: ${availableProps}`
|
|
3371
3459
|
);
|
|
3372
3460
|
}
|
|
3373
|
-
const overrideKey = (0,
|
|
3461
|
+
const overrideKey = (0, import_utils9.generateUniqueId)("prop");
|
|
3374
3462
|
const originValue = element.settings?.[propKey] ? element.settings[propKey] : elementType.propsSchema[propKey].default ?? null;
|
|
3375
3463
|
const label = generateLabel(propKey);
|
|
3376
3464
|
enrichedProps[overrideKey] = {
|
|
@@ -3428,11 +3516,11 @@ function findElementById(root, targetId) {
|
|
|
3428
3516
|
return null;
|
|
3429
3517
|
}
|
|
3430
3518
|
function generateLabel(propKey) {
|
|
3431
|
-
const uniqueId = (0,
|
|
3519
|
+
const uniqueId = (0, import_utils9.generateUniqueId)("prop");
|
|
3432
3520
|
return `${uniqueId} - ${propKey}`;
|
|
3433
3521
|
}
|
|
3434
3522
|
function getValidElementTypes() {
|
|
3435
|
-
const types = (0,
|
|
3523
|
+
const types = (0, import_editor_elements11.getWidgetsCache)();
|
|
3436
3524
|
if (!types) {
|
|
3437
3525
|
return [];
|
|
3438
3526
|
}
|
|
@@ -3643,7 +3731,7 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
|
|
|
3643
3731
|
});
|
|
3644
3732
|
|
|
3645
3733
|
// src/sync/create-components-before-save.ts
|
|
3646
|
-
var
|
|
3734
|
+
var import_editor_elements12 = require("@elementor/editor-elements");
|
|
3647
3735
|
var import_store58 = require("@elementor/store");
|
|
3648
3736
|
async function createComponentsBeforeSave({
|
|
3649
3737
|
elements,
|
|
@@ -3708,7 +3796,7 @@ function shouldUpdateElement(element, uidToComponentId) {
|
|
|
3708
3796
|
return { shouldUpdate: false, newComponentId: null };
|
|
3709
3797
|
}
|
|
3710
3798
|
function updateElementComponentId(elementId, componentId) {
|
|
3711
|
-
(0,
|
|
3799
|
+
(0, import_editor_elements12.updateElementSettings)({
|
|
3712
3800
|
id: elementId,
|
|
3713
3801
|
props: {
|
|
3714
3802
|
component_instance: {
|
|
@@ -3805,17 +3893,17 @@ function init() {
|
|
|
3805
3893
|
(0, import_store64.__registerSlice)(slice);
|
|
3806
3894
|
(0, import_editor_panels4.__registerPanel)(panel);
|
|
3807
3895
|
(0, import_editor_canvas8.registerElementType)(
|
|
3808
|
-
|
|
3896
|
+
COMPONENT_WIDGET_TYPE,
|
|
3809
3897
|
(options) => createComponentType({ ...options, showLockedByModal: openEditModeDialog })
|
|
3810
3898
|
);
|
|
3811
|
-
(0,
|
|
3899
|
+
(0, import_editor_v1_adapters7.registerDataHook)("dependency", "editor/documents/close", (args) => {
|
|
3812
3900
|
const document = (0, import_editor_documents12.getV1CurrentDocument)();
|
|
3813
3901
|
if (document.config.type === COMPONENT_DOCUMENT_TYPE) {
|
|
3814
3902
|
args.mode = "autosave";
|
|
3815
3903
|
}
|
|
3816
3904
|
return true;
|
|
3817
3905
|
});
|
|
3818
|
-
(0,
|
|
3906
|
+
(0, import_editor_v1_adapters7.registerDataHook)("after", "preview/drop", onElementDrop);
|
|
3819
3907
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
3820
3908
|
(0, import_editor_elements_panel.injectTab)({
|
|
3821
3909
|
id: "components",
|
|
@@ -3838,7 +3926,7 @@ function init() {
|
|
|
3838
3926
|
id: "component-panel-header",
|
|
3839
3927
|
component: ComponentPanelHeader
|
|
3840
3928
|
});
|
|
3841
|
-
(0,
|
|
3929
|
+
(0, import_editor_v1_adapters7.registerDataHook)("after", "editor/documents/attach-preview", async () => {
|
|
3842
3930
|
const { id: id2, config } = (0, import_editor_documents12.getV1CurrentDocument)();
|
|
3843
3931
|
if (id2) {
|
|
3844
3932
|
removeComponentStyles(id2);
|
|
@@ -3863,6 +3951,7 @@ function init() {
|
|
|
3863
3951
|
import_editor_canvas8.settingsTransformersRegistry.register("component-instance", componentInstanceTransformer);
|
|
3864
3952
|
import_editor_canvas8.settingsTransformersRegistry.register("overridable", componentOverridableTransformer);
|
|
3865
3953
|
import_editor_canvas8.settingsTransformersRegistry.register("override", componentOverrideTransformer);
|
|
3954
|
+
initRegenerateOverrideKeys();
|
|
3866
3955
|
initMcp();
|
|
3867
3956
|
}
|
|
3868
3957
|
// Annotate the CommonJS export names for ESM import in node:
|