@elementor/editor-components 3.35.0-459 → 3.35.0-461
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 +193 -176
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +193 -170
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -22
- package/src/components/overridable-props/overridable-prop-control.tsx +9 -2
- package/src/init.ts +5 -2
- package/src/sync/load-component-data-after-instance-added.ts +20 -0
- /package/src/{hooks → sync}/cleanup-overridable-props-on-delete.ts +0 -0
- /package/src/{hooks → sync}/regenerate-override-keys.ts +0 -0
package/dist/index.js
CHANGED
|
@@ -42,7 +42,7 @@ var import_editor_editing_panel8 = 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_adapters12 = require("@elementor/editor-v1-adapters");
|
|
46
46
|
var import_store80 = require("@elementor/store");
|
|
47
47
|
var import_i18n30 = require("@wordpress/i18n");
|
|
48
48
|
|
|
@@ -3959,6 +3959,7 @@ function OverridablePropControl({
|
|
|
3959
3959
|
...props
|
|
3960
3960
|
}) {
|
|
3961
3961
|
const { elementType } = (0, import_editor_editing_panel6.useElement)();
|
|
3962
|
+
const Control = (0, import_editor_controls5.createControl)(OriginalControl2);
|
|
3962
3963
|
const { value, bind, setValue, placeholder, ...propContext } = (0, import_editor_controls5.useBoundProp)(componentOverridablePropTypeUtil);
|
|
3963
3964
|
const componentId = useCurrentComponentId();
|
|
3964
3965
|
const overridableProps = useOverridableProps(componentId);
|
|
@@ -4007,7 +4008,7 @@ function OverridablePropControl({
|
|
|
4007
4008
|
},
|
|
4008
4009
|
placeholder: objectPlaceholder
|
|
4009
4010
|
},
|
|
4010
|
-
/* @__PURE__ */ React29.createElement(import_editor_controls5.PropKeyProvider, { bind }, /* @__PURE__ */ React29.createElement(import_editor_controls5.ControlReplacementsProvider, { replacements: filteredReplacements }, /* @__PURE__ */ React29.createElement(
|
|
4011
|
+
/* @__PURE__ */ React29.createElement(import_editor_controls5.PropKeyProvider, { bind }, /* @__PURE__ */ React29.createElement(import_editor_controls5.ControlReplacementsProvider, { replacements: filteredReplacements }, /* @__PURE__ */ React29.createElement(Control, { ...props })))
|
|
4011
4012
|
));
|
|
4012
4013
|
}
|
|
4013
4014
|
|
|
@@ -4254,150 +4255,16 @@ function isPropAllowed(propType) {
|
|
|
4254
4255
|
return propType.meta.overridable !== false;
|
|
4255
4256
|
}
|
|
4256
4257
|
|
|
4257
|
-
// src/hooks/cleanup-overridable-props-on-delete.ts
|
|
4258
|
-
var import_editor_elements17 = require("@elementor/editor-elements");
|
|
4259
|
-
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
|
|
4260
|
-
var import_store63 = require("@elementor/store");
|
|
4261
|
-
function initCleanupOverridablePropsOnDelete() {
|
|
4262
|
-
(0, import_editor_v1_adapters8.registerDataHook)("dependency", "document/elements/delete", (args) => {
|
|
4263
|
-
const state = (0, import_store63.__getState)();
|
|
4264
|
-
if (!state) {
|
|
4265
|
-
return true;
|
|
4266
|
-
}
|
|
4267
|
-
const currentComponentId = selectCurrentComponentId(state);
|
|
4268
|
-
if (!currentComponentId) {
|
|
4269
|
-
return true;
|
|
4270
|
-
}
|
|
4271
|
-
const overridableProps = selectOverridableProps(state, currentComponentId);
|
|
4272
|
-
if (!overridableProps || Object.keys(overridableProps.props).length === 0) {
|
|
4273
|
-
return true;
|
|
4274
|
-
}
|
|
4275
|
-
const containers = args.containers ?? (args.container ? [args.container] : []);
|
|
4276
|
-
if (containers.length === 0) {
|
|
4277
|
-
return true;
|
|
4278
|
-
}
|
|
4279
|
-
const deletedElementIds = collectDeletedElementIds(containers);
|
|
4280
|
-
if (deletedElementIds.length === 0) {
|
|
4281
|
-
return true;
|
|
4282
|
-
}
|
|
4283
|
-
const propKeysToDelete = Object.entries(overridableProps.props).filter(([, prop]) => deletedElementIds.includes(prop.elementId)).map(([propKey]) => propKey);
|
|
4284
|
-
if (propKeysToDelete.length === 0) {
|
|
4285
|
-
return true;
|
|
4286
|
-
}
|
|
4287
|
-
const remainingProps = Object.fromEntries(
|
|
4288
|
-
Object.entries(overridableProps.props).filter(([propKey]) => !propKeysToDelete.includes(propKey))
|
|
4289
|
-
);
|
|
4290
|
-
let updatedGroups = overridableProps.groups;
|
|
4291
|
-
for (const propKey of propKeysToDelete) {
|
|
4292
|
-
updatedGroups = removePropFromAllGroups(updatedGroups, propKey);
|
|
4293
|
-
}
|
|
4294
|
-
(0, import_store63.__dispatch)(
|
|
4295
|
-
slice.actions.setOverridableProps({
|
|
4296
|
-
componentId: currentComponentId,
|
|
4297
|
-
overridableProps: {
|
|
4298
|
-
...overridableProps,
|
|
4299
|
-
props: remainingProps,
|
|
4300
|
-
groups: updatedGroups
|
|
4301
|
-
}
|
|
4302
|
-
})
|
|
4303
|
-
);
|
|
4304
|
-
return true;
|
|
4305
|
-
});
|
|
4306
|
-
}
|
|
4307
|
-
function collectDeletedElementIds(containers) {
|
|
4308
|
-
const elementIds = containers.filter(Boolean).flatMap((container) => [container, ...(0, import_editor_elements17.getAllDescendants)(container)]).map((element) => element.model?.get?.("id") ?? element.id).filter((id2) => Boolean(id2));
|
|
4309
|
-
return elementIds;
|
|
4310
|
-
}
|
|
4311
|
-
|
|
4312
|
-
// src/hooks/regenerate-override-keys.ts
|
|
4313
|
-
var import_editor_elements18 = require("@elementor/editor-elements");
|
|
4314
|
-
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
4315
|
-
var import_utils9 = require("@elementor/utils");
|
|
4316
|
-
function initRegenerateOverrideKeys() {
|
|
4317
|
-
(0, import_editor_v1_adapters9.registerDataHook)("after", "document/elements/duplicate", (_args, result) => {
|
|
4318
|
-
regenerateOverrideKeysForContainers(result);
|
|
4319
|
-
});
|
|
4320
|
-
(0, import_editor_v1_adapters9.registerDataHook)("after", "document/elements/paste", (_args, result) => {
|
|
4321
|
-
regenerateOverrideKeysForContainers(result);
|
|
4322
|
-
});
|
|
4323
|
-
(0, import_editor_v1_adapters9.registerDataHook)("after", "document/elements/import", (_args, result) => {
|
|
4324
|
-
regenerateOverrideKeysForContainers(result);
|
|
4325
|
-
});
|
|
4326
|
-
}
|
|
4327
|
-
function regenerateOverrideKeysForContainers(result) {
|
|
4328
|
-
const containers = Array.isArray(result) ? result : [result];
|
|
4329
|
-
containers.forEach((container) => {
|
|
4330
|
-
regenerateOverrideKeysRecursive(container.id);
|
|
4331
|
-
});
|
|
4332
|
-
}
|
|
4333
|
-
function regenerateOverrideKeysRecursive(elementId) {
|
|
4334
|
-
const container = (0, import_editor_elements18.getContainer)(elementId);
|
|
4335
|
-
if (!container) {
|
|
4336
|
-
return;
|
|
4337
|
-
}
|
|
4338
|
-
(0, import_editor_elements18.getAllDescendants)(container).forEach(regenerateOverrideKeys);
|
|
4339
|
-
}
|
|
4340
|
-
function regenerateOverrideKeys(element) {
|
|
4341
|
-
if (!isComponentInstance(element.model.toJSON())) {
|
|
4342
|
-
return;
|
|
4343
|
-
}
|
|
4344
|
-
const settings = element.settings?.toJSON() ?? {};
|
|
4345
|
-
if (!hasOverrides(settings)) {
|
|
4346
|
-
return;
|
|
4347
|
-
}
|
|
4348
|
-
const componentInstance = settings.component_instance;
|
|
4349
|
-
const overrides = componentInstance.value.overrides;
|
|
4350
|
-
const newOverrides = overrides.value.map((override) => {
|
|
4351
|
-
if (!componentInstanceOverridePropTypeUtil.isValid(override)) {
|
|
4352
|
-
return override;
|
|
4353
|
-
}
|
|
4354
|
-
return {
|
|
4355
|
-
...override,
|
|
4356
|
-
value: {
|
|
4357
|
-
...override.value,
|
|
4358
|
-
override_key: (0, import_utils9.generateUniqueId)("prop")
|
|
4359
|
-
}
|
|
4360
|
-
};
|
|
4361
|
-
});
|
|
4362
|
-
const newComponentInstance = {
|
|
4363
|
-
...componentInstance,
|
|
4364
|
-
value: {
|
|
4365
|
-
...componentInstance.value,
|
|
4366
|
-
overrides: {
|
|
4367
|
-
...overrides,
|
|
4368
|
-
value: newOverrides
|
|
4369
|
-
}
|
|
4370
|
-
}
|
|
4371
|
-
};
|
|
4372
|
-
(0, import_editor_elements18.updateElementSettings)({
|
|
4373
|
-
id: element.id,
|
|
4374
|
-
props: { component_instance: newComponentInstance },
|
|
4375
|
-
withHistory: false
|
|
4376
|
-
});
|
|
4377
|
-
}
|
|
4378
|
-
function hasOverrides(settings) {
|
|
4379
|
-
if (!componentInstancePropTypeUtil.isValid(settings?.component_instance)) {
|
|
4380
|
-
return false;
|
|
4381
|
-
}
|
|
4382
|
-
const componentInstance = componentInstancePropTypeUtil.extract(settings?.component_instance);
|
|
4383
|
-
const overrides = componentInstance?.overrides;
|
|
4384
|
-
if (!componentInstanceOverridesPropTypeUtil.isValid(overrides)) {
|
|
4385
|
-
return false;
|
|
4386
|
-
}
|
|
4387
|
-
const overridesValue = overrides?.value;
|
|
4388
|
-
return !!overridesValue?.length;
|
|
4389
|
-
}
|
|
4390
|
-
|
|
4391
4258
|
// src/mcp/index.ts
|
|
4392
4259
|
var import_editor_mcp3 = require("@elementor/editor-mcp");
|
|
4393
4260
|
|
|
4394
4261
|
// src/mcp/save-as-component-tool.ts
|
|
4395
4262
|
var import_editor_canvas7 = require("@elementor/editor-canvas");
|
|
4396
|
-
var
|
|
4263
|
+
var import_editor_elements17 = require("@elementor/editor-elements");
|
|
4397
4264
|
var import_editor_mcp2 = require("@elementor/editor-mcp");
|
|
4398
4265
|
var import_http_client2 = require("@elementor/http-client");
|
|
4399
4266
|
var import_schema6 = require("@elementor/schema");
|
|
4400
|
-
var
|
|
4267
|
+
var import_utils9 = require("@elementor/utils");
|
|
4401
4268
|
var InputSchema = {
|
|
4402
4269
|
element_id: import_schema6.z.string().describe(
|
|
4403
4270
|
'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.'
|
|
@@ -4431,7 +4298,7 @@ var ERROR_MESSAGES3 = {
|
|
|
4431
4298
|
var handleSaveAsComponent = async (params) => {
|
|
4432
4299
|
const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
|
|
4433
4300
|
const validElementTypes = getValidElementTypes();
|
|
4434
|
-
const container = (0,
|
|
4301
|
+
const container = (0, import_editor_elements17.getContainer)(elementId);
|
|
4435
4302
|
if (!container) {
|
|
4436
4303
|
throw new Error(ERROR_MESSAGES3.ELEMENT_NOT_FOUND);
|
|
4437
4304
|
}
|
|
@@ -4447,7 +4314,7 @@ var handleSaveAsComponent = async (params) => {
|
|
|
4447
4314
|
if (overridableProps) {
|
|
4448
4315
|
updateElementDataWithOverridableProps(element, overridableProps);
|
|
4449
4316
|
}
|
|
4450
|
-
const uid = (0,
|
|
4317
|
+
const uid = (0, import_utils9.generateUniqueId)("component");
|
|
4451
4318
|
try {
|
|
4452
4319
|
await apiClient.validate({
|
|
4453
4320
|
items: [
|
|
@@ -4469,7 +4336,7 @@ var handleSaveAsComponent = async (params) => {
|
|
|
4469
4336
|
};
|
|
4470
4337
|
function enrichOverridableProps(input, rootElement) {
|
|
4471
4338
|
const enrichedProps = {};
|
|
4472
|
-
const defaultGroupId = (0,
|
|
4339
|
+
const defaultGroupId = (0, import_utils9.generateUniqueId)("group");
|
|
4473
4340
|
Object.entries(input.props).forEach(([, prop]) => {
|
|
4474
4341
|
const { elementId, propKey, label } = prop;
|
|
4475
4342
|
const element = findElementById(rootElement, elementId);
|
|
@@ -4478,7 +4345,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
4478
4345
|
}
|
|
4479
4346
|
const elType = element.elType;
|
|
4480
4347
|
const widgetType = element.widgetType || element.elType;
|
|
4481
|
-
const elementType = (0,
|
|
4348
|
+
const elementType = (0, import_editor_elements17.getElementType)(widgetType);
|
|
4482
4349
|
if (!elementType) {
|
|
4483
4350
|
throw new Error(
|
|
4484
4351
|
`Element type "${widgetType}" is not atomic or does not have a settings schema. Cannot expose property "${propKey}" for element "${elementId}".`
|
|
@@ -4490,7 +4357,7 @@ function enrichOverridableProps(input, rootElement) {
|
|
|
4490
4357
|
`Property "${propKey}" does not exist in element "${elementId}" (type: ${widgetType}). Available properties: ${availableProps}`
|
|
4491
4358
|
);
|
|
4492
4359
|
}
|
|
4493
|
-
const overrideKey = (0,
|
|
4360
|
+
const overrideKey = (0, import_utils9.generateUniqueId)("prop");
|
|
4494
4361
|
const originValue = element.settings?.[propKey] ? element.settings[propKey] : elementType.propsSchema[propKey].default ?? null;
|
|
4495
4362
|
enrichedProps[overrideKey] = {
|
|
4496
4363
|
overrideKey,
|
|
@@ -4547,7 +4414,7 @@ function findElementById(root, targetId) {
|
|
|
4547
4414
|
return null;
|
|
4548
4415
|
}
|
|
4549
4416
|
function getValidElementTypes() {
|
|
4550
|
-
const types = (0,
|
|
4417
|
+
const types = (0, import_editor_elements17.getWidgetsCache)();
|
|
4551
4418
|
if (!types) {
|
|
4552
4419
|
return [];
|
|
4553
4420
|
}
|
|
@@ -4725,19 +4592,19 @@ function initMcp() {
|
|
|
4725
4592
|
|
|
4726
4593
|
// src/populate-store.ts
|
|
4727
4594
|
var import_react18 = require("react");
|
|
4728
|
-
var
|
|
4595
|
+
var import_store63 = require("@elementor/store");
|
|
4729
4596
|
function PopulateStore() {
|
|
4730
4597
|
(0, import_react18.useEffect)(() => {
|
|
4731
|
-
(0,
|
|
4598
|
+
(0, import_store63.__dispatch)(loadComponents());
|
|
4732
4599
|
}, []);
|
|
4733
4600
|
return null;
|
|
4734
4601
|
}
|
|
4735
4602
|
|
|
4736
4603
|
// src/prevent-circular-nesting.ts
|
|
4737
|
-
var
|
|
4604
|
+
var import_editor_elements18 = require("@elementor/editor-elements");
|
|
4738
4605
|
var import_editor_notifications4 = require("@elementor/editor-notifications");
|
|
4739
|
-
var
|
|
4740
|
-
var
|
|
4606
|
+
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
|
|
4607
|
+
var import_store64 = require("@elementor/store");
|
|
4741
4608
|
var import_i18n29 = require("@wordpress/i18n");
|
|
4742
4609
|
var COMPONENT_TYPE = "e-component";
|
|
4743
4610
|
var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
@@ -4746,15 +4613,15 @@ var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
|
4746
4613
|
id: "circular-component-nesting-blocked"
|
|
4747
4614
|
};
|
|
4748
4615
|
function initCircularNestingPrevention() {
|
|
4749
|
-
(0,
|
|
4616
|
+
(0, import_editor_v1_adapters8.blockCommand)({
|
|
4750
4617
|
command: "document/elements/create",
|
|
4751
4618
|
condition: blockCircularCreate
|
|
4752
4619
|
});
|
|
4753
|
-
(0,
|
|
4620
|
+
(0, import_editor_v1_adapters8.blockCommand)({
|
|
4754
4621
|
command: "document/elements/move",
|
|
4755
4622
|
condition: blockCircularMove
|
|
4756
4623
|
});
|
|
4757
|
-
(0,
|
|
4624
|
+
(0, import_editor_v1_adapters8.blockCommand)({
|
|
4758
4625
|
command: "document/elements/paste",
|
|
4759
4626
|
condition: blockCircularPaste
|
|
4760
4627
|
});
|
|
@@ -4763,7 +4630,7 @@ function wouldCreateCircularNesting(componentIdToAdd) {
|
|
|
4763
4630
|
if (componentIdToAdd === void 0) {
|
|
4764
4631
|
return false;
|
|
4765
4632
|
}
|
|
4766
|
-
const state = (0,
|
|
4633
|
+
const state = (0, import_store64.__getState)();
|
|
4767
4634
|
const currentComponentId = selectCurrentComponentId(state);
|
|
4768
4635
|
const path = selectPath(state);
|
|
4769
4636
|
if (currentComponentId === null) {
|
|
@@ -4829,7 +4696,7 @@ function blockCircularMove(args) {
|
|
|
4829
4696
|
if (!container) {
|
|
4830
4697
|
return false;
|
|
4831
4698
|
}
|
|
4832
|
-
const allElements = (0,
|
|
4699
|
+
const allElements = (0, import_editor_elements18.getAllDescendants)(container);
|
|
4833
4700
|
return allElements.some((element) => {
|
|
4834
4701
|
const componentId = extractComponentIdFromContainer(element);
|
|
4835
4702
|
if (componentId === null) {
|
|
@@ -4861,19 +4728,19 @@ function blockCircularPaste(args) {
|
|
|
4861
4728
|
}
|
|
4862
4729
|
|
|
4863
4730
|
// src/store/actions/remove-component-styles.ts
|
|
4864
|
-
var
|
|
4731
|
+
var import_store66 = require("@elementor/store");
|
|
4865
4732
|
function removeComponentStyles(id2) {
|
|
4866
4733
|
apiClient.invalidateComponentConfigCache(id2);
|
|
4867
|
-
(0,
|
|
4734
|
+
(0, import_store66.__dispatch)(slice.actions.removeStyles({ id: id2 }));
|
|
4868
4735
|
}
|
|
4869
4736
|
|
|
4870
4737
|
// src/store/components-styles-provider.ts
|
|
4871
4738
|
var import_editor_styles_repository = require("@elementor/editor-styles-repository");
|
|
4872
|
-
var
|
|
4739
|
+
var import_store68 = require("@elementor/store");
|
|
4873
4740
|
var componentsStylesProvider = (0, import_editor_styles_repository.createStylesProvider)({
|
|
4874
4741
|
key: "components-styles",
|
|
4875
4742
|
priority: 100,
|
|
4876
|
-
subscribe: (cb) => (0,
|
|
4743
|
+
subscribe: (cb) => (0, import_store68.__subscribeWithSelector)(
|
|
4877
4744
|
(state) => state[SLICE_NAME],
|
|
4878
4745
|
() => {
|
|
4879
4746
|
cb();
|
|
@@ -4881,29 +4748,29 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
|
|
|
4881
4748
|
),
|
|
4882
4749
|
actions: {
|
|
4883
4750
|
all: () => {
|
|
4884
|
-
return selectFlatStyles((0,
|
|
4751
|
+
return selectFlatStyles((0, import_store68.__getState)());
|
|
4885
4752
|
},
|
|
4886
4753
|
get: (id2) => {
|
|
4887
|
-
return selectFlatStyles((0,
|
|
4754
|
+
return selectFlatStyles((0, import_store68.__getState)()).find((style) => style.id === id2) ?? null;
|
|
4888
4755
|
}
|
|
4889
4756
|
}
|
|
4890
4757
|
});
|
|
4891
4758
|
|
|
4892
4759
|
// src/sync/create-components-before-save.ts
|
|
4893
|
-
var
|
|
4894
|
-
var
|
|
4760
|
+
var import_editor_elements19 = require("@elementor/editor-elements");
|
|
4761
|
+
var import_store70 = require("@elementor/store");
|
|
4895
4762
|
async function createComponentsBeforeSave({
|
|
4896
4763
|
elements,
|
|
4897
4764
|
status
|
|
4898
4765
|
}) {
|
|
4899
|
-
const unpublishedComponents = selectUnpublishedComponents((0,
|
|
4766
|
+
const unpublishedComponents = selectUnpublishedComponents((0, import_store70.__getState)());
|
|
4900
4767
|
if (!unpublishedComponents.length) {
|
|
4901
4768
|
return;
|
|
4902
4769
|
}
|
|
4903
4770
|
try {
|
|
4904
4771
|
const uidToComponentId = await createComponents(unpublishedComponents, status);
|
|
4905
4772
|
updateComponentInstances(elements, uidToComponentId);
|
|
4906
|
-
(0,
|
|
4773
|
+
(0, import_store70.__dispatch)(
|
|
4907
4774
|
slice.actions.add(
|
|
4908
4775
|
unpublishedComponents.map((component) => ({
|
|
4909
4776
|
id: uidToComponentId.get(component.uid),
|
|
@@ -4913,7 +4780,7 @@ async function createComponentsBeforeSave({
|
|
|
4913
4780
|
}))
|
|
4914
4781
|
)
|
|
4915
4782
|
);
|
|
4916
|
-
(0,
|
|
4783
|
+
(0, import_store70.__dispatch)(slice.actions.resetUnpublished());
|
|
4917
4784
|
} catch (error) {
|
|
4918
4785
|
throw new Error(`Failed to publish components and update component instances: ${error}`);
|
|
4919
4786
|
}
|
|
@@ -4958,7 +4825,7 @@ function shouldUpdateElement(element, uidToComponentId) {
|
|
|
4958
4825
|
return { shouldUpdate: false, newComponentId: null };
|
|
4959
4826
|
}
|
|
4960
4827
|
function updateElementComponentId(elementId, componentId) {
|
|
4961
|
-
(0,
|
|
4828
|
+
(0, import_editor_elements19.updateElementSettings)({
|
|
4962
4829
|
id: elementId,
|
|
4963
4830
|
props: {
|
|
4964
4831
|
component_instance: {
|
|
@@ -4973,7 +4840,7 @@ function updateElementComponentId(elementId, componentId) {
|
|
|
4973
4840
|
}
|
|
4974
4841
|
|
|
4975
4842
|
// src/sync/set-component-overridable-props-settings-before-save.ts
|
|
4976
|
-
var
|
|
4843
|
+
var import_store72 = require("@elementor/store");
|
|
4977
4844
|
var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
4978
4845
|
container
|
|
4979
4846
|
}) => {
|
|
@@ -4981,7 +4848,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
|
4981
4848
|
if (!currentDocument || currentDocument.config.type !== COMPONENT_DOCUMENT_TYPE) {
|
|
4982
4849
|
return;
|
|
4983
4850
|
}
|
|
4984
|
-
const overridableProps = selectOverridableProps((0,
|
|
4851
|
+
const overridableProps = selectOverridableProps((0, import_store72.__getState)(), currentDocument.id);
|
|
4985
4852
|
if (overridableProps) {
|
|
4986
4853
|
container.settings.set("overridable_props", overridableProps);
|
|
4987
4854
|
}
|
|
@@ -4989,7 +4856,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
|
4989
4856
|
|
|
4990
4857
|
// src/sync/update-archived-component-before-save.ts
|
|
4991
4858
|
var import_editor_notifications5 = require("@elementor/editor-notifications");
|
|
4992
|
-
var
|
|
4859
|
+
var import_store74 = require("@elementor/store");
|
|
4993
4860
|
var failedNotification = (message) => ({
|
|
4994
4861
|
type: "error",
|
|
4995
4862
|
message: `Failed to archive components: ${message}`,
|
|
@@ -4997,7 +4864,7 @@ var failedNotification = (message) => ({
|
|
|
4997
4864
|
});
|
|
4998
4865
|
var updateArchivedComponentBeforeSave = async () => {
|
|
4999
4866
|
try {
|
|
5000
|
-
const archivedComponents = selectArchivedThisSession((0,
|
|
4867
|
+
const archivedComponents = selectArchivedThisSession((0, import_store74.__getState)());
|
|
5001
4868
|
if (!archivedComponents.length) {
|
|
5002
4869
|
return;
|
|
5003
4870
|
}
|
|
@@ -5012,15 +4879,15 @@ var updateArchivedComponentBeforeSave = async () => {
|
|
|
5012
4879
|
};
|
|
5013
4880
|
|
|
5014
4881
|
// src/sync/update-component-title-before-save.ts
|
|
5015
|
-
var
|
|
4882
|
+
var import_store76 = require("@elementor/store");
|
|
5016
4883
|
var updateComponentTitleBeforeSave = async () => {
|
|
5017
|
-
const updatedComponentNames = selectUpdatedComponentNames((0,
|
|
4884
|
+
const updatedComponentNames = selectUpdatedComponentNames((0, import_store76.__getState)());
|
|
5018
4885
|
if (!updatedComponentNames.length) {
|
|
5019
4886
|
return;
|
|
5020
4887
|
}
|
|
5021
4888
|
const result = await apiClient.updateComponentTitle(updatedComponentNames);
|
|
5022
4889
|
if (result.failedIds.length === 0) {
|
|
5023
|
-
(0,
|
|
4890
|
+
(0, import_store76.__dispatch)(slice.actions.cleanUpdatedComponentNames());
|
|
5024
4891
|
}
|
|
5025
4892
|
};
|
|
5026
4893
|
|
|
@@ -5052,6 +4919,155 @@ var beforeSave = ({ container, status }) => {
|
|
|
5052
4919
|
]);
|
|
5053
4920
|
};
|
|
5054
4921
|
|
|
4922
|
+
// src/sync/cleanup-overridable-props-on-delete.ts
|
|
4923
|
+
var import_editor_elements20 = require("@elementor/editor-elements");
|
|
4924
|
+
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
4925
|
+
var import_store78 = require("@elementor/store");
|
|
4926
|
+
function initCleanupOverridablePropsOnDelete() {
|
|
4927
|
+
(0, import_editor_v1_adapters9.registerDataHook)("dependency", "document/elements/delete", (args) => {
|
|
4928
|
+
const state = (0, import_store78.__getState)();
|
|
4929
|
+
if (!state) {
|
|
4930
|
+
return true;
|
|
4931
|
+
}
|
|
4932
|
+
const currentComponentId = selectCurrentComponentId(state);
|
|
4933
|
+
if (!currentComponentId) {
|
|
4934
|
+
return true;
|
|
4935
|
+
}
|
|
4936
|
+
const overridableProps = selectOverridableProps(state, currentComponentId);
|
|
4937
|
+
if (!overridableProps || Object.keys(overridableProps.props).length === 0) {
|
|
4938
|
+
return true;
|
|
4939
|
+
}
|
|
4940
|
+
const containers = args.containers ?? (args.container ? [args.container] : []);
|
|
4941
|
+
if (containers.length === 0) {
|
|
4942
|
+
return true;
|
|
4943
|
+
}
|
|
4944
|
+
const deletedElementIds = collectDeletedElementIds(containers);
|
|
4945
|
+
if (deletedElementIds.length === 0) {
|
|
4946
|
+
return true;
|
|
4947
|
+
}
|
|
4948
|
+
const propKeysToDelete = Object.entries(overridableProps.props).filter(([, prop]) => deletedElementIds.includes(prop.elementId)).map(([propKey]) => propKey);
|
|
4949
|
+
if (propKeysToDelete.length === 0) {
|
|
4950
|
+
return true;
|
|
4951
|
+
}
|
|
4952
|
+
const remainingProps = Object.fromEntries(
|
|
4953
|
+
Object.entries(overridableProps.props).filter(([propKey]) => !propKeysToDelete.includes(propKey))
|
|
4954
|
+
);
|
|
4955
|
+
let updatedGroups = overridableProps.groups;
|
|
4956
|
+
for (const propKey of propKeysToDelete) {
|
|
4957
|
+
updatedGroups = removePropFromAllGroups(updatedGroups, propKey);
|
|
4958
|
+
}
|
|
4959
|
+
(0, import_store78.__dispatch)(
|
|
4960
|
+
slice.actions.setOverridableProps({
|
|
4961
|
+
componentId: currentComponentId,
|
|
4962
|
+
overridableProps: {
|
|
4963
|
+
...overridableProps,
|
|
4964
|
+
props: remainingProps,
|
|
4965
|
+
groups: updatedGroups
|
|
4966
|
+
}
|
|
4967
|
+
})
|
|
4968
|
+
);
|
|
4969
|
+
return true;
|
|
4970
|
+
});
|
|
4971
|
+
}
|
|
4972
|
+
function collectDeletedElementIds(containers) {
|
|
4973
|
+
const elementIds = containers.filter(Boolean).flatMap((container) => [container, ...(0, import_editor_elements20.getAllDescendants)(container)]).map((element) => element.model?.get?.("id") ?? element.id).filter((id2) => Boolean(id2));
|
|
4974
|
+
return elementIds;
|
|
4975
|
+
}
|
|
4976
|
+
|
|
4977
|
+
// src/sync/load-component-data-after-instance-added.ts
|
|
4978
|
+
var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
|
|
4979
|
+
function initLoadComponentDataAfterInstanceAdded() {
|
|
4980
|
+
(0, import_editor_v1_adapters10.registerDataHook)("after", "document/elements/paste", (_args, result) => {
|
|
4981
|
+
load(result);
|
|
4982
|
+
});
|
|
4983
|
+
(0, import_editor_v1_adapters10.registerDataHook)("after", "document/elements/import", (_args, result) => {
|
|
4984
|
+
load(result);
|
|
4985
|
+
});
|
|
4986
|
+
}
|
|
4987
|
+
function load(result) {
|
|
4988
|
+
const containers = Array.isArray(result) ? result : [result];
|
|
4989
|
+
loadComponentsAssets(containers.map((container) => container.model.toJSON()));
|
|
4990
|
+
}
|
|
4991
|
+
|
|
4992
|
+
// src/sync/regenerate-override-keys.ts
|
|
4993
|
+
var import_editor_elements21 = require("@elementor/editor-elements");
|
|
4994
|
+
var import_editor_v1_adapters11 = require("@elementor/editor-v1-adapters");
|
|
4995
|
+
var import_utils10 = require("@elementor/utils");
|
|
4996
|
+
function initRegenerateOverrideKeys() {
|
|
4997
|
+
(0, import_editor_v1_adapters11.registerDataHook)("after", "document/elements/duplicate", (_args, result) => {
|
|
4998
|
+
regenerateOverrideKeysForContainers(result);
|
|
4999
|
+
});
|
|
5000
|
+
(0, import_editor_v1_adapters11.registerDataHook)("after", "document/elements/paste", (_args, result) => {
|
|
5001
|
+
regenerateOverrideKeysForContainers(result);
|
|
5002
|
+
});
|
|
5003
|
+
(0, import_editor_v1_adapters11.registerDataHook)("after", "document/elements/import", (_args, result) => {
|
|
5004
|
+
regenerateOverrideKeysForContainers(result);
|
|
5005
|
+
});
|
|
5006
|
+
}
|
|
5007
|
+
function regenerateOverrideKeysForContainers(result) {
|
|
5008
|
+
const containers = Array.isArray(result) ? result : [result];
|
|
5009
|
+
containers.forEach((container) => {
|
|
5010
|
+
regenerateOverrideKeysRecursive(container.id);
|
|
5011
|
+
});
|
|
5012
|
+
}
|
|
5013
|
+
function regenerateOverrideKeysRecursive(elementId) {
|
|
5014
|
+
const container = (0, import_editor_elements21.getContainer)(elementId);
|
|
5015
|
+
if (!container) {
|
|
5016
|
+
return;
|
|
5017
|
+
}
|
|
5018
|
+
(0, import_editor_elements21.getAllDescendants)(container).forEach(regenerateOverrideKeys);
|
|
5019
|
+
}
|
|
5020
|
+
function regenerateOverrideKeys(element) {
|
|
5021
|
+
if (!isComponentInstance(element.model.toJSON())) {
|
|
5022
|
+
return;
|
|
5023
|
+
}
|
|
5024
|
+
const settings = element.settings?.toJSON() ?? {};
|
|
5025
|
+
if (!hasOverrides(settings)) {
|
|
5026
|
+
return;
|
|
5027
|
+
}
|
|
5028
|
+
const componentInstance = settings.component_instance;
|
|
5029
|
+
const overrides = componentInstance.value.overrides;
|
|
5030
|
+
const newOverrides = overrides.value.map((override) => {
|
|
5031
|
+
if (!componentInstanceOverridePropTypeUtil.isValid(override)) {
|
|
5032
|
+
return override;
|
|
5033
|
+
}
|
|
5034
|
+
return {
|
|
5035
|
+
...override,
|
|
5036
|
+
value: {
|
|
5037
|
+
...override.value,
|
|
5038
|
+
override_key: (0, import_utils10.generateUniqueId)("prop")
|
|
5039
|
+
}
|
|
5040
|
+
};
|
|
5041
|
+
});
|
|
5042
|
+
const newComponentInstance = {
|
|
5043
|
+
...componentInstance,
|
|
5044
|
+
value: {
|
|
5045
|
+
...componentInstance.value,
|
|
5046
|
+
overrides: {
|
|
5047
|
+
...overrides,
|
|
5048
|
+
value: newOverrides
|
|
5049
|
+
}
|
|
5050
|
+
}
|
|
5051
|
+
};
|
|
5052
|
+
(0, import_editor_elements21.updateElementSettings)({
|
|
5053
|
+
id: element.id,
|
|
5054
|
+
props: { component_instance: newComponentInstance },
|
|
5055
|
+
withHistory: false
|
|
5056
|
+
});
|
|
5057
|
+
}
|
|
5058
|
+
function hasOverrides(settings) {
|
|
5059
|
+
if (!componentInstancePropTypeUtil.isValid(settings?.component_instance)) {
|
|
5060
|
+
return false;
|
|
5061
|
+
}
|
|
5062
|
+
const componentInstance = componentInstancePropTypeUtil.extract(settings?.component_instance);
|
|
5063
|
+
const overrides = componentInstance?.overrides;
|
|
5064
|
+
if (!componentInstanceOverridesPropTypeUtil.isValid(overrides)) {
|
|
5065
|
+
return false;
|
|
5066
|
+
}
|
|
5067
|
+
const overridesValue = overrides?.value;
|
|
5068
|
+
return !!overridesValue?.length;
|
|
5069
|
+
}
|
|
5070
|
+
|
|
5055
5071
|
// src/init.ts
|
|
5056
5072
|
function init() {
|
|
5057
5073
|
import_editor_styles_repository2.stylesRepository.register(componentsStylesProvider);
|
|
@@ -5061,14 +5077,14 @@ function init() {
|
|
|
5061
5077
|
COMPONENT_WIDGET_TYPE,
|
|
5062
5078
|
(options) => createComponentType({ ...options, showLockedByModal: openEditModeDialog })
|
|
5063
5079
|
);
|
|
5064
|
-
(0,
|
|
5080
|
+
(0, import_editor_v1_adapters12.registerDataHook)("dependency", "editor/documents/close", (args) => {
|
|
5065
5081
|
const document = (0, import_editor_documents13.getV1CurrentDocument)();
|
|
5066
5082
|
if (document.config.type === COMPONENT_DOCUMENT_TYPE) {
|
|
5067
5083
|
args.mode = "autosave";
|
|
5068
5084
|
}
|
|
5069
5085
|
return true;
|
|
5070
5086
|
});
|
|
5071
|
-
(0,
|
|
5087
|
+
(0, import_editor_v1_adapters12.registerDataHook)("after", "preview/drop", onElementDrop);
|
|
5072
5088
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
5073
5089
|
(0, import_editor_elements_panel.injectTab)({
|
|
5074
5090
|
id: "components",
|
|
@@ -5092,7 +5108,7 @@ function init() {
|
|
|
5092
5108
|
id: "component-panel-header",
|
|
5093
5109
|
component: ComponentPanelHeader
|
|
5094
5110
|
});
|
|
5095
|
-
(0,
|
|
5111
|
+
(0, import_editor_v1_adapters12.registerDataHook)("after", "editor/documents/attach-preview", async () => {
|
|
5096
5112
|
const { id: id2, config } = (0, import_editor_documents13.getV1CurrentDocument)();
|
|
5097
5113
|
if (id2) {
|
|
5098
5114
|
removeComponentStyles(id2);
|
|
@@ -5123,6 +5139,7 @@ function init() {
|
|
|
5123
5139
|
initMcp();
|
|
5124
5140
|
initCircularNestingPrevention();
|
|
5125
5141
|
initNonAtomicNestingPrevention();
|
|
5142
|
+
initLoadComponentDataAfterInstanceAdded();
|
|
5126
5143
|
}
|
|
5127
5144
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5128
5145
|
0 && (module.exports = {
|