@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.mjs
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import { injectTab } from "@elementor/editor-elements-panel";
|
|
16
16
|
import { __registerPanel as registerPanel } from "@elementor/editor-panels";
|
|
17
17
|
import { stylesRepository } from "@elementor/editor-styles-repository";
|
|
18
|
-
import { registerDataHook } from "@elementor/editor-v1-adapters";
|
|
18
|
+
import { registerDataHook as registerDataHook2 } from "@elementor/editor-v1-adapters";
|
|
19
19
|
import { __registerSlice as registerSlice } from "@elementor/store";
|
|
20
20
|
import { __ as __24 } from "@wordpress/i18n";
|
|
21
21
|
|
|
@@ -1677,7 +1677,7 @@ var onElementDrop = (_args, element) => {
|
|
|
1677
1677
|
};
|
|
1678
1678
|
|
|
1679
1679
|
// src/create-component-type.ts
|
|
1680
|
-
var
|
|
1680
|
+
var COMPONENT_WIDGET_TYPE = "e-component";
|
|
1681
1681
|
var updateGroups = (groups, config) => {
|
|
1682
1682
|
const disableMap = new Map(Object.entries(config.disable ?? {}));
|
|
1683
1683
|
const addMap = new Map(Object.entries(config.add ?? {}));
|
|
@@ -1832,11 +1832,16 @@ function setInactiveRecursively(model) {
|
|
|
1832
1832
|
}
|
|
1833
1833
|
}
|
|
1834
1834
|
|
|
1835
|
+
// src/utils/is-component-instance.ts
|
|
1836
|
+
function isComponentInstance(elementModel) {
|
|
1837
|
+
return [elementModel.widgetType, elementModel.elType].includes(COMPONENT_WIDGET_TYPE);
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1835
1840
|
// src/utils/get-component-ids.ts
|
|
1836
1841
|
var getComponentIds = async (elements) => {
|
|
1837
1842
|
const components = elements.map(async ({ widgetType, elType, elements: childElements, settings }) => {
|
|
1838
1843
|
const ids = [];
|
|
1839
|
-
const isComponent =
|
|
1844
|
+
const isComponent = isComponentInstance({ widgetType, elType });
|
|
1840
1845
|
if (isComponent) {
|
|
1841
1846
|
const componentId = settings?.component_instance?.value?.component_id.value;
|
|
1842
1847
|
const document = await getComponentDocumentData(componentId);
|
|
@@ -3281,16 +3286,99 @@ function isPropAllowed(bind) {
|
|
|
3281
3286
|
return !FORBIDDEN_KEYS.includes(bind);
|
|
3282
3287
|
}
|
|
3283
3288
|
|
|
3289
|
+
// src/hooks/regenerate-override-keys.ts
|
|
3290
|
+
import { getContainer as getContainer3, updateElementSettings as updateElementSettings2 } from "@elementor/editor-elements";
|
|
3291
|
+
import { registerDataHook } from "@elementor/editor-v1-adapters";
|
|
3292
|
+
import { generateUniqueId as generateUniqueId5 } from "@elementor/utils";
|
|
3293
|
+
function initRegenerateOverrideKeys() {
|
|
3294
|
+
registerDataHook("after", "document/elements/duplicate", (_args, result) => {
|
|
3295
|
+
regenerateOverrideKeysForContainers(result);
|
|
3296
|
+
});
|
|
3297
|
+
registerDataHook("after", "document/elements/paste", (_args, result) => {
|
|
3298
|
+
regenerateOverrideKeysForContainers(result);
|
|
3299
|
+
});
|
|
3300
|
+
registerDataHook("after", "document/elements/import", (_args, result) => {
|
|
3301
|
+
regenerateOverrideKeysForContainers(result);
|
|
3302
|
+
});
|
|
3303
|
+
}
|
|
3304
|
+
function regenerateOverrideKeysForContainers(result) {
|
|
3305
|
+
const containers = Array.isArray(result) ? result : [result];
|
|
3306
|
+
containers.forEach((container) => {
|
|
3307
|
+
regenerateOverrideKeysRecursive(container.id);
|
|
3308
|
+
});
|
|
3309
|
+
}
|
|
3310
|
+
function regenerateOverrideKeysRecursive(elementId) {
|
|
3311
|
+
const container = getContainer3(elementId);
|
|
3312
|
+
if (!container) {
|
|
3313
|
+
return;
|
|
3314
|
+
}
|
|
3315
|
+
getAllElements(container).forEach(regenerateOverrideKeys);
|
|
3316
|
+
}
|
|
3317
|
+
function getAllElements(container) {
|
|
3318
|
+
const children = (container.children ?? []).flatMap(getAllElements) ?? [];
|
|
3319
|
+
return [container, ...children];
|
|
3320
|
+
}
|
|
3321
|
+
function regenerateOverrideKeys(element) {
|
|
3322
|
+
if (!isComponentInstance(element.model.toJSON())) {
|
|
3323
|
+
return;
|
|
3324
|
+
}
|
|
3325
|
+
const settings = element.settings?.toJSON() ?? {};
|
|
3326
|
+
if (!hasOverrides(settings)) {
|
|
3327
|
+
return;
|
|
3328
|
+
}
|
|
3329
|
+
const componentInstance = settings.component_instance;
|
|
3330
|
+
const overrides = componentInstance.value.overrides;
|
|
3331
|
+
const newOverrides = overrides.value.map((override) => {
|
|
3332
|
+
if (!componentInstanceOverridePropTypeUtil.isValid(override)) {
|
|
3333
|
+
return override;
|
|
3334
|
+
}
|
|
3335
|
+
return {
|
|
3336
|
+
...override,
|
|
3337
|
+
value: {
|
|
3338
|
+
...override.value,
|
|
3339
|
+
override_key: generateUniqueId5("prop")
|
|
3340
|
+
}
|
|
3341
|
+
};
|
|
3342
|
+
});
|
|
3343
|
+
const newComponentInstance = {
|
|
3344
|
+
...componentInstance,
|
|
3345
|
+
value: {
|
|
3346
|
+
...componentInstance.value,
|
|
3347
|
+
overrides: {
|
|
3348
|
+
...overrides,
|
|
3349
|
+
value: newOverrides
|
|
3350
|
+
}
|
|
3351
|
+
}
|
|
3352
|
+
};
|
|
3353
|
+
updateElementSettings2({
|
|
3354
|
+
id: element.id,
|
|
3355
|
+
props: { component_instance: newComponentInstance },
|
|
3356
|
+
withHistory: false
|
|
3357
|
+
});
|
|
3358
|
+
}
|
|
3359
|
+
function hasOverrides(settings) {
|
|
3360
|
+
if (!componentInstancePropTypeUtil.isValid(settings?.component_instance)) {
|
|
3361
|
+
return false;
|
|
3362
|
+
}
|
|
3363
|
+
const componentInstance = componentInstancePropTypeUtil.extract(settings?.component_instance);
|
|
3364
|
+
const overrides = componentInstance?.overrides;
|
|
3365
|
+
if (!componentInstanceOverridesPropTypeUtil.isValid(overrides)) {
|
|
3366
|
+
return false;
|
|
3367
|
+
}
|
|
3368
|
+
const overridesValue = overrides?.value;
|
|
3369
|
+
return !!overridesValue?.length;
|
|
3370
|
+
}
|
|
3371
|
+
|
|
3284
3372
|
// src/mcp/index.ts
|
|
3285
3373
|
import { getMCPByDomain as getMCPByDomain2 } from "@elementor/editor-mcp";
|
|
3286
3374
|
|
|
3287
3375
|
// src/mcp/save-as-component-tool.ts
|
|
3288
3376
|
import { DOCUMENT_STRUCTURE_URI, WIDGET_SCHEMA_URI } from "@elementor/editor-canvas";
|
|
3289
|
-
import { getContainer as
|
|
3377
|
+
import { getContainer as getContainer4, getElementType, getWidgetsCache as getWidgetsCache3 } from "@elementor/editor-elements";
|
|
3290
3378
|
import { getMCPByDomain, toolPrompts } from "@elementor/editor-mcp";
|
|
3291
3379
|
import { AxiosError } from "@elementor/http-client";
|
|
3292
3380
|
import { z as z6 } from "@elementor/schema";
|
|
3293
|
-
import { generateUniqueId as
|
|
3381
|
+
import { generateUniqueId as generateUniqueId6 } from "@elementor/utils";
|
|
3294
3382
|
var InputSchema = {
|
|
3295
3383
|
element_id: z6.string().describe(
|
|
3296
3384
|
'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.'
|
|
@@ -3321,7 +3409,7 @@ var ERROR_MESSAGES2 = {
|
|
|
3321
3409
|
var handleSaveAsComponent = async (params) => {
|
|
3322
3410
|
const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
|
|
3323
3411
|
const validElementTypes = getValidElementTypes();
|
|
3324
|
-
const container =
|
|
3412
|
+
const container = getContainer4(elementId);
|
|
3325
3413
|
if (!container) {
|
|
3326
3414
|
throw new Error(ERROR_MESSAGES2.ELEMENT_NOT_FOUND);
|
|
3327
3415
|
}
|
|
@@ -3337,7 +3425,7 @@ var handleSaveAsComponent = async (params) => {
|
|
|
3337
3425
|
if (overridableProps) {
|
|
3338
3426
|
updateElementDataWithOverridableProps(element, overridableProps);
|
|
3339
3427
|
}
|
|
3340
|
-
const uid =
|
|
3428
|
+
const uid = generateUniqueId6("component");
|
|
3341
3429
|
try {
|
|
3342
3430
|
await apiClient.validate({
|
|
3343
3431
|
items: [
|
|
@@ -3359,7 +3447,7 @@ var handleSaveAsComponent = async (params) => {
|
|
|
3359
3447
|
};
|
|
3360
3448
|
function enrichOverridableProps(input, rootElement) {
|
|
3361
3449
|
const enrichedProps = {};
|
|
3362
|
-
const defaultGroupId =
|
|
3450
|
+
const defaultGroupId = generateUniqueId6("group");
|
|
3363
3451
|
Object.entries(input.props).forEach(([, prop]) => {
|
|
3364
3452
|
const { elementId, propKey } = prop;
|
|
3365
3453
|
const element = findElementById(rootElement, elementId);
|
|
@@ -3380,7 +3468,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
3380
3468
|
`Property "${propKey}" does not exist in element "${elementId}" (type: ${widgetType}). Available properties: ${availableProps}`
|
|
3381
3469
|
);
|
|
3382
3470
|
}
|
|
3383
|
-
const overrideKey =
|
|
3471
|
+
const overrideKey = generateUniqueId6("prop");
|
|
3384
3472
|
const originValue = element.settings?.[propKey] ? element.settings[propKey] : elementType.propsSchema[propKey].default ?? null;
|
|
3385
3473
|
const label = generateLabel(propKey);
|
|
3386
3474
|
enrichedProps[overrideKey] = {
|
|
@@ -3438,7 +3526,7 @@ function findElementById(root, targetId) {
|
|
|
3438
3526
|
return null;
|
|
3439
3527
|
}
|
|
3440
3528
|
function generateLabel(propKey) {
|
|
3441
|
-
const uniqueId =
|
|
3529
|
+
const uniqueId = generateUniqueId6("prop");
|
|
3442
3530
|
return `${uniqueId} - ${propKey}`;
|
|
3443
3531
|
}
|
|
3444
3532
|
function getValidElementTypes() {
|
|
@@ -3653,7 +3741,7 @@ var componentsStylesProvider = createStylesProvider({
|
|
|
3653
3741
|
});
|
|
3654
3742
|
|
|
3655
3743
|
// src/sync/create-components-before-save.ts
|
|
3656
|
-
import { updateElementSettings as
|
|
3744
|
+
import { updateElementSettings as updateElementSettings3 } from "@elementor/editor-elements";
|
|
3657
3745
|
import { __dispatch as dispatch15, __getState as getState18 } from "@elementor/store";
|
|
3658
3746
|
async function createComponentsBeforeSave({
|
|
3659
3747
|
elements,
|
|
@@ -3718,7 +3806,7 @@ function shouldUpdateElement(element, uidToComponentId) {
|
|
|
3718
3806
|
return { shouldUpdate: false, newComponentId: null };
|
|
3719
3807
|
}
|
|
3720
3808
|
function updateElementComponentId(elementId, componentId) {
|
|
3721
|
-
|
|
3809
|
+
updateElementSettings3({
|
|
3722
3810
|
id: elementId,
|
|
3723
3811
|
props: {
|
|
3724
3812
|
component_instance: {
|
|
@@ -3815,17 +3903,17 @@ function init() {
|
|
|
3815
3903
|
registerSlice(slice);
|
|
3816
3904
|
registerPanel(panel);
|
|
3817
3905
|
registerElementType(
|
|
3818
|
-
|
|
3906
|
+
COMPONENT_WIDGET_TYPE,
|
|
3819
3907
|
(options) => createComponentType({ ...options, showLockedByModal: openEditModeDialog })
|
|
3820
3908
|
);
|
|
3821
|
-
|
|
3909
|
+
registerDataHook2("dependency", "editor/documents/close", (args) => {
|
|
3822
3910
|
const document = getV1CurrentDocument();
|
|
3823
3911
|
if (document.config.type === COMPONENT_DOCUMENT_TYPE) {
|
|
3824
3912
|
args.mode = "autosave";
|
|
3825
3913
|
}
|
|
3826
3914
|
return true;
|
|
3827
3915
|
});
|
|
3828
|
-
|
|
3916
|
+
registerDataHook2("after", "preview/drop", onElementDrop);
|
|
3829
3917
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
3830
3918
|
injectTab({
|
|
3831
3919
|
id: "components",
|
|
@@ -3848,7 +3936,7 @@ function init() {
|
|
|
3848
3936
|
id: "component-panel-header",
|
|
3849
3937
|
component: ComponentPanelHeader
|
|
3850
3938
|
});
|
|
3851
|
-
|
|
3939
|
+
registerDataHook2("after", "editor/documents/attach-preview", async () => {
|
|
3852
3940
|
const { id: id2, config } = getV1CurrentDocument();
|
|
3853
3941
|
if (id2) {
|
|
3854
3942
|
removeComponentStyles(id2);
|
|
@@ -3873,6 +3961,7 @@ function init() {
|
|
|
3873
3961
|
settingsTransformersRegistry2.register("component-instance", componentInstanceTransformer);
|
|
3874
3962
|
settingsTransformersRegistry2.register("overridable", componentOverridableTransformer);
|
|
3875
3963
|
settingsTransformersRegistry2.register("override", componentOverrideTransformer);
|
|
3964
|
+
initRegenerateOverrideKeys();
|
|
3876
3965
|
initMcp();
|
|
3877
3966
|
}
|
|
3878
3967
|
export {
|