@elementor/editor-components 3.35.0-435 → 3.35.0-437

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 CHANGED
@@ -42,8 +42,8 @@ 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 import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
46
- var import_store78 = require("@elementor/store");
45
+ var import_editor_v1_adapters11 = require("@elementor/editor-v1-adapters");
46
+ var import_store80 = require("@elementor/store");
47
47
  var import_i18n30 = require("@wordpress/i18n");
48
48
 
49
49
  // src/component-instance-transformer.ts
@@ -2204,7 +2204,7 @@ async function loadComponentsStyles(componentIds) {
2204
2204
  if (!unknownComponentIds.length) {
2205
2205
  return;
2206
2206
  }
2207
- addComponentStyles(unknownComponentIds);
2207
+ await addComponentStyles(unknownComponentIds);
2208
2208
  }
2209
2209
  async function addComponentStyles(ids) {
2210
2210
  const newComponents = await loadStyles(ids);
@@ -3136,12 +3136,12 @@ function updateCurrentComponent({
3136
3136
  path,
3137
3137
  currentComponentId
3138
3138
  }) {
3139
- const dispatch19 = (0, import_store49.__getStore)()?.dispatch;
3140
- if (!dispatch19) {
3139
+ const dispatch20 = (0, import_store49.__getStore)()?.dispatch;
3140
+ if (!dispatch20) {
3141
3141
  return;
3142
3142
  }
3143
- dispatch19(slice.actions.setPath(path));
3144
- dispatch19(slice.actions.setCurrentComponentId(currentComponentId));
3143
+ dispatch20(slice.actions.setPath(path));
3144
+ dispatch20(slice.actions.setCurrentComponentId(currentComponentId));
3145
3145
  }
3146
3146
 
3147
3147
  // src/components/edit-component/component-modal.tsx
@@ -4203,18 +4203,72 @@ function isPropAllowed(bind) {
4203
4203
  return !FORBIDDEN_KEYS.includes(bind);
4204
4204
  }
4205
4205
 
4206
- // src/hooks/regenerate-override-keys.ts
4206
+ // src/hooks/cleanup-overridable-props-on-delete.ts
4207
4207
  var import_editor_elements17 = require("@elementor/editor-elements");
4208
4208
  var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
4209
+ var import_store63 = require("@elementor/store");
4210
+ function initCleanupOverridablePropsOnDelete() {
4211
+ (0, import_editor_v1_adapters8.registerDataHook)("after", "document/elements/delete", (args) => {
4212
+ const state = (0, import_store63.__getState)();
4213
+ if (!state) {
4214
+ return;
4215
+ }
4216
+ const currentComponentId = selectCurrentComponentId(state);
4217
+ if (!currentComponentId) {
4218
+ return;
4219
+ }
4220
+ const overridableProps = selectOverridableProps(state, currentComponentId);
4221
+ if (!overridableProps || Object.keys(overridableProps.props).length === 0) {
4222
+ return;
4223
+ }
4224
+ const containers = args.containers ?? (args.container ? [args.container] : []);
4225
+ if (containers.length === 0) {
4226
+ return;
4227
+ }
4228
+ const deletedElementIds = collectDeletedElementIds(containers);
4229
+ if (deletedElementIds.length === 0) {
4230
+ return;
4231
+ }
4232
+ const propKeysToDelete = Object.entries(overridableProps.props).filter(([, prop]) => deletedElementIds.includes(prop.elementId)).map(([propKey]) => propKey);
4233
+ if (propKeysToDelete.length === 0) {
4234
+ return;
4235
+ }
4236
+ const remainingProps = Object.fromEntries(
4237
+ Object.entries(overridableProps.props).filter(([propKey]) => !propKeysToDelete.includes(propKey))
4238
+ );
4239
+ let updatedGroups = overridableProps.groups;
4240
+ for (const propKey of propKeysToDelete) {
4241
+ updatedGroups = removePropFromAllGroups(updatedGroups, propKey);
4242
+ }
4243
+ (0, import_store63.__dispatch)(
4244
+ slice.actions.setOverridableProps({
4245
+ componentId: currentComponentId,
4246
+ overridableProps: {
4247
+ ...overridableProps,
4248
+ props: remainingProps,
4249
+ groups: updatedGroups
4250
+ }
4251
+ })
4252
+ );
4253
+ });
4254
+ }
4255
+ function collectDeletedElementIds(containers) {
4256
+ 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));
4257
+ return elementIds;
4258
+ }
4259
+
4260
+ // src/hooks/regenerate-override-keys.ts
4261
+ var import_editor_elements18 = require("@elementor/editor-elements");
4262
+ var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
4209
4263
  var import_utils8 = require("@elementor/utils");
4210
4264
  function initRegenerateOverrideKeys() {
4211
- (0, import_editor_v1_adapters8.registerDataHook)("after", "document/elements/duplicate", (_args, result) => {
4265
+ (0, import_editor_v1_adapters9.registerDataHook)("after", "document/elements/duplicate", (_args, result) => {
4212
4266
  regenerateOverrideKeysForContainers(result);
4213
4267
  });
4214
- (0, import_editor_v1_adapters8.registerDataHook)("after", "document/elements/paste", (_args, result) => {
4268
+ (0, import_editor_v1_adapters9.registerDataHook)("after", "document/elements/paste", (_args, result) => {
4215
4269
  regenerateOverrideKeysForContainers(result);
4216
4270
  });
4217
- (0, import_editor_v1_adapters8.registerDataHook)("after", "document/elements/import", (_args, result) => {
4271
+ (0, import_editor_v1_adapters9.registerDataHook)("after", "document/elements/import", (_args, result) => {
4218
4272
  regenerateOverrideKeysForContainers(result);
4219
4273
  });
4220
4274
  }
@@ -4225,11 +4279,11 @@ function regenerateOverrideKeysForContainers(result) {
4225
4279
  });
4226
4280
  }
4227
4281
  function regenerateOverrideKeysRecursive(elementId) {
4228
- const container = (0, import_editor_elements17.getContainer)(elementId);
4282
+ const container = (0, import_editor_elements18.getContainer)(elementId);
4229
4283
  if (!container) {
4230
4284
  return;
4231
4285
  }
4232
- (0, import_editor_elements17.getAllDescendants)(container).forEach(regenerateOverrideKeys);
4286
+ (0, import_editor_elements18.getAllDescendants)(container).forEach(regenerateOverrideKeys);
4233
4287
  }
4234
4288
  function regenerateOverrideKeys(element) {
4235
4289
  if (!isComponentInstance(element.model.toJSON())) {
@@ -4263,7 +4317,7 @@ function regenerateOverrideKeys(element) {
4263
4317
  }
4264
4318
  }
4265
4319
  };
4266
- (0, import_editor_elements17.updateElementSettings)({
4320
+ (0, import_editor_elements18.updateElementSettings)({
4267
4321
  id: element.id,
4268
4322
  props: { component_instance: newComponentInstance },
4269
4323
  withHistory: false
@@ -4287,7 +4341,7 @@ var import_editor_mcp3 = require("@elementor/editor-mcp");
4287
4341
 
4288
4342
  // src/mcp/save-as-component-tool.ts
4289
4343
  var import_editor_canvas8 = require("@elementor/editor-canvas");
4290
- var import_editor_elements18 = require("@elementor/editor-elements");
4344
+ var import_editor_elements19 = require("@elementor/editor-elements");
4291
4345
  var import_editor_mcp2 = require("@elementor/editor-mcp");
4292
4346
  var import_http_client2 = require("@elementor/http-client");
4293
4347
  var import_schema6 = require("@elementor/schema");
@@ -4325,7 +4379,7 @@ var ERROR_MESSAGES3 = {
4325
4379
  var handleSaveAsComponent = async (params) => {
4326
4380
  const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
4327
4381
  const validElementTypes = getValidElementTypes();
4328
- const container = (0, import_editor_elements18.getContainer)(elementId);
4382
+ const container = (0, import_editor_elements19.getContainer)(elementId);
4329
4383
  if (!container) {
4330
4384
  throw new Error(ERROR_MESSAGES3.ELEMENT_NOT_FOUND);
4331
4385
  }
@@ -4372,7 +4426,7 @@ function enrichOverridableProps(input, rootElement) {
4372
4426
  }
4373
4427
  const elType = element.elType;
4374
4428
  const widgetType = element.widgetType || element.elType;
4375
- const elementType = (0, import_editor_elements18.getElementType)(widgetType);
4429
+ const elementType = (0, import_editor_elements19.getElementType)(widgetType);
4376
4430
  if (!elementType) {
4377
4431
  throw new Error(
4378
4432
  `Element type "${widgetType}" is not atomic or does not have a settings schema. Cannot expose property "${propKey}" for element "${elementId}".`
@@ -4441,7 +4495,7 @@ function findElementById(root, targetId) {
4441
4495
  return null;
4442
4496
  }
4443
4497
  function getValidElementTypes() {
4444
- const types = (0, import_editor_elements18.getWidgetsCache)();
4498
+ const types = (0, import_editor_elements19.getWidgetsCache)();
4445
4499
  if (!types) {
4446
4500
  return [];
4447
4501
  }
@@ -4619,19 +4673,19 @@ function initMcp() {
4619
4673
 
4620
4674
  // src/populate-store.ts
4621
4675
  var import_react18 = require("react");
4622
- var import_store63 = require("@elementor/store");
4676
+ var import_store65 = require("@elementor/store");
4623
4677
  function PopulateStore() {
4624
4678
  (0, import_react18.useEffect)(() => {
4625
- (0, import_store63.__dispatch)(loadComponents());
4679
+ (0, import_store65.__dispatch)(loadComponents());
4626
4680
  }, []);
4627
4681
  return null;
4628
4682
  }
4629
4683
 
4630
4684
  // src/prevent-circular-nesting.ts
4631
- var import_editor_elements19 = require("@elementor/editor-elements");
4685
+ var import_editor_elements20 = require("@elementor/editor-elements");
4632
4686
  var import_editor_notifications4 = require("@elementor/editor-notifications");
4633
- var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
4634
- var import_store64 = require("@elementor/store");
4687
+ var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
4688
+ var import_store66 = require("@elementor/store");
4635
4689
  var import_i18n29 = require("@wordpress/i18n");
4636
4690
  var COMPONENT_TYPE = "e-component";
4637
4691
  var COMPONENT_CIRCULAR_NESTING_ALERT = {
@@ -4640,15 +4694,15 @@ var COMPONENT_CIRCULAR_NESTING_ALERT = {
4640
4694
  id: "circular-component-nesting-blocked"
4641
4695
  };
4642
4696
  function initCircularNestingPrevention() {
4643
- (0, import_editor_v1_adapters9.blockCommand)({
4697
+ (0, import_editor_v1_adapters10.blockCommand)({
4644
4698
  command: "document/elements/create",
4645
4699
  condition: blockCircularCreate
4646
4700
  });
4647
- (0, import_editor_v1_adapters9.blockCommand)({
4701
+ (0, import_editor_v1_adapters10.blockCommand)({
4648
4702
  command: "document/elements/move",
4649
4703
  condition: blockCircularMove
4650
4704
  });
4651
- (0, import_editor_v1_adapters9.blockCommand)({
4705
+ (0, import_editor_v1_adapters10.blockCommand)({
4652
4706
  command: "document/elements/paste",
4653
4707
  condition: blockCircularPaste
4654
4708
  });
@@ -4657,7 +4711,7 @@ function wouldCreateCircularNesting(componentIdToAdd) {
4657
4711
  if (componentIdToAdd === void 0) {
4658
4712
  return false;
4659
4713
  }
4660
- const state = (0, import_store64.__getState)();
4714
+ const state = (0, import_store66.__getState)();
4661
4715
  const currentComponentId = selectCurrentComponentId(state);
4662
4716
  const path = selectPath(state);
4663
4717
  if (currentComponentId === null) {
@@ -4723,7 +4777,7 @@ function blockCircularMove(args) {
4723
4777
  if (!container) {
4724
4778
  return false;
4725
4779
  }
4726
- const allElements = (0, import_editor_elements19.getAllDescendants)(container);
4780
+ const allElements = (0, import_editor_elements20.getAllDescendants)(container);
4727
4781
  return allElements.some((element) => {
4728
4782
  const componentId = extractComponentIdFromContainer(element);
4729
4783
  if (componentId === null) {
@@ -4755,19 +4809,19 @@ function blockCircularPaste(args) {
4755
4809
  }
4756
4810
 
4757
4811
  // src/store/actions/remove-component-styles.ts
4758
- var import_store66 = require("@elementor/store");
4812
+ var import_store68 = require("@elementor/store");
4759
4813
  function removeComponentStyles(id2) {
4760
4814
  apiClient.invalidateComponentConfigCache(id2);
4761
- (0, import_store66.__dispatch)(slice.actions.removeStyles({ id: id2 }));
4815
+ (0, import_store68.__dispatch)(slice.actions.removeStyles({ id: id2 }));
4762
4816
  }
4763
4817
 
4764
4818
  // src/store/components-styles-provider.ts
4765
4819
  var import_editor_styles_repository = require("@elementor/editor-styles-repository");
4766
- var import_store68 = require("@elementor/store");
4820
+ var import_store70 = require("@elementor/store");
4767
4821
  var componentsStylesProvider = (0, import_editor_styles_repository.createStylesProvider)({
4768
4822
  key: "components-styles",
4769
4823
  priority: 100,
4770
- subscribe: (cb) => (0, import_store68.__subscribeWithSelector)(
4824
+ subscribe: (cb) => (0, import_store70.__subscribeWithSelector)(
4771
4825
  (state) => state[SLICE_NAME],
4772
4826
  () => {
4773
4827
  cb();
@@ -4775,29 +4829,29 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
4775
4829
  ),
4776
4830
  actions: {
4777
4831
  all: () => {
4778
- return selectFlatStyles((0, import_store68.__getState)());
4832
+ return selectFlatStyles((0, import_store70.__getState)());
4779
4833
  },
4780
4834
  get: (id2) => {
4781
- return selectFlatStyles((0, import_store68.__getState)()).find((style) => style.id === id2) ?? null;
4835
+ return selectFlatStyles((0, import_store70.__getState)()).find((style) => style.id === id2) ?? null;
4782
4836
  }
4783
4837
  }
4784
4838
  });
4785
4839
 
4786
4840
  // src/sync/create-components-before-save.ts
4787
- var import_editor_elements20 = require("@elementor/editor-elements");
4788
- var import_store70 = require("@elementor/store");
4841
+ var import_editor_elements21 = require("@elementor/editor-elements");
4842
+ var import_store72 = require("@elementor/store");
4789
4843
  async function createComponentsBeforeSave({
4790
4844
  elements,
4791
4845
  status
4792
4846
  }) {
4793
- const unpublishedComponents = selectUnpublishedComponents((0, import_store70.__getState)());
4847
+ const unpublishedComponents = selectUnpublishedComponents((0, import_store72.__getState)());
4794
4848
  if (!unpublishedComponents.length) {
4795
4849
  return;
4796
4850
  }
4797
4851
  try {
4798
4852
  const uidToComponentId = await createComponents(unpublishedComponents, status);
4799
4853
  updateComponentInstances(elements, uidToComponentId);
4800
- (0, import_store70.__dispatch)(
4854
+ (0, import_store72.__dispatch)(
4801
4855
  slice.actions.add(
4802
4856
  unpublishedComponents.map((component) => ({
4803
4857
  id: uidToComponentId.get(component.uid),
@@ -4807,7 +4861,7 @@ async function createComponentsBeforeSave({
4807
4861
  }))
4808
4862
  )
4809
4863
  );
4810
- (0, import_store70.__dispatch)(slice.actions.resetUnpublished());
4864
+ (0, import_store72.__dispatch)(slice.actions.resetUnpublished());
4811
4865
  } catch (error) {
4812
4866
  throw new Error(`Failed to publish components and update component instances: ${error}`);
4813
4867
  }
@@ -4852,7 +4906,7 @@ function shouldUpdateElement(element, uidToComponentId) {
4852
4906
  return { shouldUpdate: false, newComponentId: null };
4853
4907
  }
4854
4908
  function updateElementComponentId(elementId, componentId) {
4855
- (0, import_editor_elements20.updateElementSettings)({
4909
+ (0, import_editor_elements21.updateElementSettings)({
4856
4910
  id: elementId,
4857
4911
  props: {
4858
4912
  component_instance: {
@@ -4867,7 +4921,7 @@ function updateElementComponentId(elementId, componentId) {
4867
4921
  }
4868
4922
 
4869
4923
  // src/sync/set-component-overridable-props-settings-before-save.ts
4870
- var import_store72 = require("@elementor/store");
4924
+ var import_store74 = require("@elementor/store");
4871
4925
  var setComponentOverridablePropsSettingsBeforeSave = ({
4872
4926
  container
4873
4927
  }) => {
@@ -4875,7 +4929,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
4875
4929
  if (!currentDocument || currentDocument.config.type !== COMPONENT_DOCUMENT_TYPE) {
4876
4930
  return;
4877
4931
  }
4878
- const overridableProps = selectOverridableProps((0, import_store72.__getState)(), currentDocument.id);
4932
+ const overridableProps = selectOverridableProps((0, import_store74.__getState)(), currentDocument.id);
4879
4933
  if (overridableProps) {
4880
4934
  container.settings.set("overridable_props", overridableProps);
4881
4935
  }
@@ -4883,7 +4937,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
4883
4937
 
4884
4938
  // src/sync/update-archived-component-before-save.ts
4885
4939
  var import_editor_notifications5 = require("@elementor/editor-notifications");
4886
- var import_store74 = require("@elementor/store");
4940
+ var import_store76 = require("@elementor/store");
4887
4941
  var failedNotification = (message) => ({
4888
4942
  type: "error",
4889
4943
  message: `Failed to archive components: ${message}`,
@@ -4891,7 +4945,7 @@ var failedNotification = (message) => ({
4891
4945
  });
4892
4946
  var updateArchivedComponentBeforeSave = async () => {
4893
4947
  try {
4894
- const archivedComponents = selectArchivedComponents((0, import_store74.__getState)());
4948
+ const archivedComponents = selectArchivedComponents((0, import_store76.__getState)());
4895
4949
  if (!archivedComponents.length) {
4896
4950
  return;
4897
4951
  }
@@ -4908,15 +4962,15 @@ var updateArchivedComponentBeforeSave = async () => {
4908
4962
  };
4909
4963
 
4910
4964
  // src/sync/update-component-title-before-save.ts
4911
- var import_store76 = require("@elementor/store");
4965
+ var import_store78 = require("@elementor/store");
4912
4966
  var updateComponentTitleBeforeSave = async () => {
4913
- const updatedComponentNames = selectUpdatedComponentNames((0, import_store76.__getState)());
4967
+ const updatedComponentNames = selectUpdatedComponentNames((0, import_store78.__getState)());
4914
4968
  if (!updatedComponentNames.length) {
4915
4969
  return;
4916
4970
  }
4917
4971
  const result = await apiClient.updateComponentTitle(updatedComponentNames);
4918
4972
  if (result.failedIds.length === 0) {
4919
- (0, import_store76.__dispatch)(slice.actions.cleanUpdatedComponentNames());
4973
+ (0, import_store78.__dispatch)(slice.actions.cleanUpdatedComponentNames());
4920
4974
  }
4921
4975
  };
4922
4976
 
@@ -4951,20 +5005,20 @@ var beforeSave = ({ container, status }) => {
4951
5005
  // src/init.ts
4952
5006
  function init() {
4953
5007
  import_editor_styles_repository2.stylesRepository.register(componentsStylesProvider);
4954
- (0, import_store78.__registerSlice)(slice);
5008
+ (0, import_store80.__registerSlice)(slice);
4955
5009
  (0, import_editor_panels4.__registerPanel)(panel);
4956
5010
  (0, import_editor_canvas9.registerElementType)(
4957
5011
  COMPONENT_WIDGET_TYPE,
4958
5012
  (options) => createComponentType({ ...options, showLockedByModal: openEditModeDialog })
4959
5013
  );
4960
- (0, import_editor_v1_adapters10.registerDataHook)("dependency", "editor/documents/close", (args) => {
5014
+ (0, import_editor_v1_adapters11.registerDataHook)("dependency", "editor/documents/close", (args) => {
4961
5015
  const document = (0, import_editor_documents13.getV1CurrentDocument)();
4962
5016
  if (document.config.type === COMPONENT_DOCUMENT_TYPE) {
4963
5017
  args.mode = "autosave";
4964
5018
  }
4965
5019
  return true;
4966
5020
  });
4967
- (0, import_editor_v1_adapters10.registerDataHook)("after", "preview/drop", onElementDrop);
5021
+ (0, import_editor_v1_adapters11.registerDataHook)("after", "preview/drop", onElementDrop);
4968
5022
  window.elementorCommon.__beforeSave = beforeSave;
4969
5023
  (0, import_editor_elements_panel.injectTab)({
4970
5024
  id: "components",
@@ -4988,7 +5042,7 @@ function init() {
4988
5042
  id: "component-panel-header",
4989
5043
  component: ComponentPanelHeader
4990
5044
  });
4991
- (0, import_editor_v1_adapters10.registerDataHook)("after", "editor/documents/attach-preview", async () => {
5045
+ (0, import_editor_v1_adapters11.registerDataHook)("after", "editor/documents/attach-preview", async () => {
4992
5046
  const { id: id2, config } = (0, import_editor_documents13.getV1CurrentDocument)();
4993
5047
  if (id2) {
4994
5048
  removeComponentStyles(id2);
@@ -5015,6 +5069,7 @@ function init() {
5015
5069
  import_editor_canvas9.settingsTransformersRegistry.register("overridable", componentOverridableTransformer);
5016
5070
  import_editor_canvas9.settingsTransformersRegistry.register("override", componentOverrideTransformer);
5017
5071
  initRegenerateOverrideKeys();
5072
+ initCleanupOverridablePropsOnDelete();
5018
5073
  initMcp();
5019
5074
  initCircularNestingPrevention();
5020
5075
  initNonAtomicNestingPrevention();