@elementor/editor-components 3.35.0-488 → 3.35.0-490

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
@@ -44,7 +44,7 @@ var import_editor_panels5 = require("@elementor/editor-panels");
44
44
  var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
45
45
  var import_editor_v1_adapters14 = require("@elementor/editor-v1-adapters");
46
46
  var import_store80 = require("@elementor/store");
47
- var import_i18n30 = require("@wordpress/i18n");
47
+ var import_i18n31 = require("@wordpress/i18n");
48
48
 
49
49
  // src/component-instance-transformer.ts
50
50
  var import_editor_canvas = require("@elementor/editor-canvas");
@@ -146,6 +146,12 @@ var slice = (0, import_store2.__createSlice)({
146
146
  addUnpublished: (state, { payload }) => {
147
147
  state.unpublishedData.unshift(payload);
148
148
  },
149
+ removeUnpublished: (state, { payload }) => {
150
+ const uidsToRemove = Array.isArray(payload) ? payload : [payload];
151
+ state.unpublishedData = state.unpublishedData.filter(
152
+ (component) => !uidsToRemove.includes(component.uid)
153
+ );
154
+ },
149
155
  resetUnpublished: (state) => {
150
156
  state.unpublishedData = [];
151
157
  },
@@ -159,6 +165,9 @@ var slice = (0, import_store2.__createSlice)({
159
165
  addCreatedThisSession: (state, { payload }) => {
160
166
  state.createdThisSession.push(payload);
161
167
  },
168
+ removeCreatedThisSession: (state, { payload }) => {
169
+ state.createdThisSession = state.createdThisSession.filter((uid) => uid !== payload);
170
+ },
162
171
  archive: (state, { payload }) => {
163
172
  const component = state.data.find((comp) => comp.id === payload);
164
173
  if (component) {
@@ -2401,7 +2410,7 @@ function loadComponentsOverridableProps(componentIds) {
2401
2410
  if (!componentIds.length) {
2402
2411
  return;
2403
2412
  }
2404
- componentIds.forEach(loadComponentOverrides);
2413
+ return Promise.all(componentIds.map(loadComponentOverrides));
2405
2414
  }
2406
2415
  async function loadComponentOverrides(componentId) {
2407
2416
  const isOverridablePropsLoaded = selectIsOverridablePropsLoaded((0, import_store37.__getState)(), componentId);
@@ -2455,11 +2464,9 @@ function extractStylesFromElement(element) {
2455
2464
  // src/store/actions/load-components-assets.ts
2456
2465
  async function loadComponentsAssets(elements) {
2457
2466
  const documents = await getComponentDocuments(elements);
2458
- return Promise.all([
2459
- updateDocumentState(documents),
2460
- loadComponentsOverridableProps([...documents.keys()]),
2461
- loadComponentsStyles(documents)
2462
- ]);
2467
+ updateDocumentState(documents);
2468
+ loadComponentsStyles(documents);
2469
+ await loadComponentsOverridableProps([...documents.keys()]);
2463
2470
  }
2464
2471
  function updateDocumentState(documents) {
2465
2472
  const isDrafted = [...documents.values()].some(import_editor_documents9.isDocumentDirty);
@@ -2980,13 +2987,13 @@ var OVERRIDABLE_PROP_REPLACEMENT_ID = "overridable-prop";
2980
2987
  // src/components/create-component-form/create-component-form.tsx
2981
2988
  var React19 = __toESM(require("react"));
2982
2989
  var import_react10 = require("react");
2983
- var import_editor_elements10 = require("@elementor/editor-elements");
2990
+ var import_editor_elements11 = require("@elementor/editor-elements");
2984
2991
  var import_editor_notifications3 = require("@elementor/editor-notifications");
2985
2992
  var import_editor_ui11 = require("@elementor/editor-ui");
2986
2993
  var import_icons11 = require("@elementor/icons");
2987
2994
  var import_store47 = require("@elementor/store");
2988
2995
  var import_ui16 = require("@elementor/ui");
2989
- var import_i18n22 = require("@wordpress/i18n");
2996
+ var import_i18n23 = require("@wordpress/i18n");
2990
2997
 
2991
2998
  // src/prevent-non-atomic-nesting.ts
2992
2999
  var import_editor_canvas6 = require("@elementor/editor-canvas");
@@ -3107,9 +3114,11 @@ function findNonAtomicElementsInElement(element) {
3107
3114
  }
3108
3115
 
3109
3116
  // src/store/actions/create-unpublished-component.ts
3117
+ var import_editor_elements10 = require("@elementor/editor-elements");
3110
3118
  var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
3111
3119
  var import_store45 = require("@elementor/store");
3112
3120
  var import_utils4 = require("@elementor/utils");
3121
+ var import_i18n22 = require("@wordpress/i18n");
3113
3122
  async function createUnpublishedComponent({
3114
3123
  name,
3115
3124
  element,
@@ -3121,6 +3130,13 @@ async function createUnpublishedComponent({
3121
3130
  const generatedUid = uid ?? (0, import_utils4.generateUniqueId)("component");
3122
3131
  const componentBase = { uid: generatedUid, name };
3123
3132
  const elementDataWithOverridablesReverted = revertAllOverridablesInElementData(element);
3133
+ const container = (0, import_editor_elements10.getContainer)(element.id);
3134
+ const modelFromContainer = container?.model?.toJSON?.();
3135
+ const originalElement = {
3136
+ model: modelFromContainer ?? element,
3137
+ parentId: container?.parent?.id ?? "",
3138
+ index: container?.view?._index ?? 0
3139
+ };
3124
3140
  (0, import_store45.__dispatch)(
3125
3141
  slice.actions.addUnpublished({
3126
3142
  ...componentBase,
@@ -3137,9 +3153,30 @@ async function createUnpublishedComponent({
3137
3153
  component_name: name,
3138
3154
  ...eventData
3139
3155
  });
3140
- await (0, import_editor_v1_adapters5.__privateRunCommand)("document/save/auto");
3156
+ try {
3157
+ await (0, import_editor_v1_adapters5.__privateRunCommand)("document/save/auto");
3158
+ } catch (error) {
3159
+ restoreOriginalElement(originalElement, componentInstance.id);
3160
+ (0, import_store45.__dispatch)(slice.actions.removeUnpublished(generatedUid));
3161
+ (0, import_store45.__dispatch)(slice.actions.removeCreatedThisSession(generatedUid));
3162
+ throw error;
3163
+ }
3141
3164
  return { uid: generatedUid, instanceId: componentInstance.id };
3142
3165
  }
3166
+ function restoreOriginalElement(originalElement, componentInstanceId) {
3167
+ (0, import_editor_elements10.deleteElement)({ elementId: componentInstanceId, options: { useHistory: false } });
3168
+ const clonedModel = structuredClone(originalElement.model);
3169
+ (0, import_editor_elements10.createElements)({
3170
+ title: (0, import_i18n22.__)("Restore Element", "elementor"),
3171
+ elements: [
3172
+ {
3173
+ containerId: originalElement.parentId,
3174
+ model: clonedModel,
3175
+ options: { at: originalElement.index }
3176
+ }
3177
+ ]
3178
+ });
3179
+ }
3143
3180
 
3144
3181
  // src/components/create-component-form/hooks/use-form.ts
3145
3182
  var import_react9 = require("react");
@@ -3234,7 +3271,7 @@ function CreateComponentForm() {
3234
3271
  (0, import_editor_notifications3.notify)(notification);
3235
3272
  return;
3236
3273
  }
3237
- setElement({ element: event.detail.element, elementLabel: (0, import_editor_elements10.getElementLabel)(event.detail.element.id) });
3274
+ setElement({ element: event.detail.element, elementLabel: (0, import_editor_elements11.getElementLabel)(event.detail.element.id) });
3238
3275
  setAnchorPosition(event.detail.anchorPosition);
3239
3276
  eventData.current = getComponentEventData(event.detail.element, event.detail.options);
3240
3277
  trackComponentEvent({
@@ -3267,17 +3304,18 @@ function CreateComponentForm() {
3267
3304
  }
3268
3305
  (0, import_editor_notifications3.notify)({
3269
3306
  type: "success",
3270
- message: (0, import_i18n22.__)("Component created successfully.", "elementor"),
3307
+ message: (0, import_i18n23.__)("Component created successfully.", "elementor"),
3271
3308
  id: `component-saved-successfully-${uid}`
3272
3309
  });
3273
3310
  resetAndClosePopup();
3274
3311
  } catch {
3275
- const errorMessage = (0, import_i18n22.__)("Failed to create component. Please try again.", "elementor");
3312
+ const errorMessage = (0, import_i18n23.__)("Failed to create component. Please try again.", "elementor");
3276
3313
  (0, import_editor_notifications3.notify)({
3277
3314
  type: "error",
3278
3315
  message: errorMessage,
3279
3316
  id: "component-save-failed"
3280
3317
  });
3318
+ resetAndClosePopup();
3281
3319
  }
3282
3320
  };
3283
3321
  const resetAndClosePopup = () => {
@@ -3317,7 +3355,7 @@ function shouldOpenForm(element, componentsCount) {
3317
3355
  shouldOpen: false,
3318
3356
  notification: {
3319
3357
  type: "default",
3320
- message: (0, import_i18n22.__)(
3358
+ message: (0, import_i18n23.__)(
3321
3359
  "Components require atomic elements only. Remove widgets to create this component.",
3322
3360
  "elementor"
3323
3361
  ),
@@ -3331,7 +3369,7 @@ function shouldOpenForm(element, componentsCount) {
3331
3369
  notification: {
3332
3370
  type: "default",
3333
3371
  /* translators: %s is the maximum number of components */
3334
- message: (0, import_i18n22.__)(
3372
+ message: (0, import_i18n23.__)(
3335
3373
  `You've reached the limit of %s components. Please remove an existing one to create a new component.`,
3336
3374
  "elementor"
3337
3375
  ).replace("%s", MAX_COMPONENTS.toString()),
@@ -3367,10 +3405,10 @@ var Form2 = ({
3367
3405
  }
3368
3406
  };
3369
3407
  const texts = {
3370
- heading: (0, import_i18n22.__)("Create component", "elementor"),
3371
- name: (0, import_i18n22.__)("Name", "elementor"),
3372
- cancel: (0, import_i18n22.__)("Cancel", "elementor"),
3373
- create: (0, import_i18n22.__)("Create", "elementor")
3408
+ heading: (0, import_i18n23.__)("Create component", "elementor"),
3409
+ name: (0, import_i18n23.__)("Name", "elementor"),
3410
+ cancel: (0, import_i18n23.__)("Cancel", "elementor"),
3411
+ create: (0, import_i18n23.__)("Create", "elementor")
3374
3412
  };
3375
3413
  const nameInputId = "component-name";
3376
3414
  return /* @__PURE__ */ React19.createElement(import_editor_ui11.Form, { onSubmit: handleSubmit }, /* @__PURE__ */ React19.createElement(import_ui16.Stack, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React19.createElement(
@@ -3426,7 +3464,7 @@ function updateCurrentComponent({
3426
3464
  var React20 = __toESM(require("react"));
3427
3465
  var import_react12 = require("react");
3428
3466
  var import_react_dom = require("react-dom");
3429
- var import_i18n23 = require("@wordpress/i18n");
3467
+ var import_i18n24 = require("@wordpress/i18n");
3430
3468
 
3431
3469
  // src/hooks/use-canvas-document.ts
3432
3470
  var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
@@ -3552,7 +3590,7 @@ function Backdrop({
3552
3590
  onKeyDown: handleKeyDown,
3553
3591
  role: "button",
3554
3592
  tabIndex: 0,
3555
- "aria-label": (0, import_i18n23.__)("Exit component editing mode", "elementor")
3593
+ "aria-label": (0, import_i18n24.__)("Exit component editing mode", "elementor")
3556
3594
  }
3557
3595
  );
3558
3596
  }
@@ -3700,37 +3738,37 @@ var React22 = __toESM(require("react"));
3700
3738
  var import_editor_ui12 = require("@elementor/editor-ui");
3701
3739
  var import_icons12 = require("@elementor/icons");
3702
3740
  var import_ui17 = require("@elementor/ui");
3703
- var import_i18n24 = require("@wordpress/i18n");
3741
+ var import_i18n25 = require("@wordpress/i18n");
3704
3742
  var openEditModeDialog = (lockedBy) => {
3705
3743
  (0, import_editor_ui12.openDialog)({
3706
3744
  component: /* @__PURE__ */ React22.createElement(EditModeDialog, { lockedBy })
3707
3745
  });
3708
3746
  };
3709
3747
  var EditModeDialog = ({ lockedBy }) => {
3710
- const content = (0, import_i18n24.__)("%s is currently editing this document", "elementor").replace("%s", lockedBy);
3711
- return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(import_ui17.DialogHeader, { logo: false }, /* @__PURE__ */ React22.createElement(import_ui17.Box, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React22.createElement(import_ui17.Icon, { color: "secondary" }, /* @__PURE__ */ React22.createElement(import_icons12.InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React22.createElement(import_ui17.Typography, { variant: "subtitle1" }, content))), /* @__PURE__ */ React22.createElement(import_ui17.DialogContent, null, /* @__PURE__ */ React22.createElement(import_ui17.Stack, { spacing: 2, direction: "column" }, /* @__PURE__ */ React22.createElement(import_ui17.Typography, { variant: "body2" }, (0, import_i18n24.__)(
3748
+ const content = (0, import_i18n25.__)("%s is currently editing this document", "elementor").replace("%s", lockedBy);
3749
+ return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(import_ui17.DialogHeader, { logo: false }, /* @__PURE__ */ React22.createElement(import_ui17.Box, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React22.createElement(import_ui17.Icon, { color: "secondary" }, /* @__PURE__ */ React22.createElement(import_icons12.InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React22.createElement(import_ui17.Typography, { variant: "subtitle1" }, content))), /* @__PURE__ */ React22.createElement(import_ui17.DialogContent, null, /* @__PURE__ */ React22.createElement(import_ui17.Stack, { spacing: 2, direction: "column" }, /* @__PURE__ */ React22.createElement(import_ui17.Typography, { variant: "body2" }, (0, import_i18n25.__)(
3712
3750
  "You can wait for them to finish or reach out to coordinate your changes together.",
3713
3751
  "elementor"
3714
- )), /* @__PURE__ */ React22.createElement(import_ui17.DialogActions, null, /* @__PURE__ */ React22.createElement(import_ui17.Button, { color: "secondary", variant: "contained", onClick: import_editor_ui12.closeDialog }, (0, import_i18n24.__)("Close", "elementor"))))));
3752
+ )), /* @__PURE__ */ React22.createElement(import_ui17.DialogActions, null, /* @__PURE__ */ React22.createElement(import_ui17.Button, { color: "secondary", variant: "contained", onClick: import_editor_ui12.closeDialog }, (0, import_i18n25.__)("Close", "elementor"))))));
3715
3753
  };
3716
3754
 
3717
3755
  // src/components/instance-editing-panel/instance-editing-panel.tsx
3718
3756
  var React28 = __toESM(require("react"));
3719
3757
  var import_editor_controls4 = require("@elementor/editor-controls");
3720
3758
  var import_editor_editing_panel5 = require("@elementor/editor-editing-panel");
3721
- var import_editor_elements15 = require("@elementor/editor-elements");
3759
+ var import_editor_elements16 = require("@elementor/editor-elements");
3722
3760
  var import_editor_panels4 = require("@elementor/editor-panels");
3723
3761
  var import_editor_ui14 = require("@elementor/editor-ui");
3724
3762
  var import_icons14 = require("@elementor/icons");
3725
3763
  var import_ui22 = require("@elementor/ui");
3726
- var import_i18n26 = require("@wordpress/i18n");
3764
+ var import_i18n27 = require("@wordpress/i18n");
3727
3765
 
3728
3766
  // src/hooks/use-component-instance-settings.ts
3729
3767
  var import_editor_editing_panel2 = require("@elementor/editor-editing-panel");
3730
- var import_editor_elements11 = require("@elementor/editor-elements");
3768
+ var import_editor_elements12 = require("@elementor/editor-elements");
3731
3769
  function useComponentInstanceSettings() {
3732
3770
  const { element } = (0, import_editor_editing_panel2.useElement)();
3733
- const settings = (0, import_editor_elements11.useElementSetting)(element.id, "component_instance");
3771
+ const settings = (0, import_editor_elements12.useElementSetting)(element.id, "component_instance");
3734
3772
  return componentInstancePropTypeUtil.extract(settings);
3735
3773
  }
3736
3774
 
@@ -3738,13 +3776,13 @@ function useComponentInstanceSettings() {
3738
3776
  var React23 = __toESM(require("react"));
3739
3777
  var import_icons13 = require("@elementor/icons");
3740
3778
  var import_ui18 = require("@elementor/ui");
3741
- var import_i18n25 = require("@wordpress/i18n");
3779
+ var import_i18n26 = require("@wordpress/i18n");
3742
3780
  var EmptyState2 = ({ onEditComponent }) => {
3743
3781
  const { canEdit } = useComponentsPermissions();
3744
- const message = canEdit ? (0, import_i18n25.__)(
3782
+ const message = canEdit ? (0, import_i18n26.__)(
3745
3783
  "Edit the component to add properties, manage them or update the design across all instances.",
3746
3784
  "elementor"
3747
- ) : (0, import_i18n25.__)(
3785
+ ) : (0, import_i18n26.__)(
3748
3786
  "With your current role, you cannot edit this component. Contact an administrator to add properties.",
3749
3787
  "elementor"
3750
3788
  );
@@ -3759,9 +3797,9 @@ var EmptyState2 = ({ onEditComponent }) => {
3759
3797
  gap: 1.5
3760
3798
  },
3761
3799
  /* @__PURE__ */ React23.createElement(import_icons13.ComponentPropListIcon, { fontSize: "large" }),
3762
- /* @__PURE__ */ React23.createElement(import_ui18.Typography, { align: "center", variant: "subtitle2" }, (0, import_i18n25.__)("No properties yet", "elementor")),
3800
+ /* @__PURE__ */ React23.createElement(import_ui18.Typography, { align: "center", variant: "subtitle2" }, (0, import_i18n26.__)("No properties yet", "elementor")),
3763
3801
  /* @__PURE__ */ React23.createElement(import_ui18.Typography, { align: "center", variant: "caption", maxWidth: "170px" }, message),
3764
- canEdit && /* @__PURE__ */ React23.createElement(import_ui18.Button, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React23.createElement(import_icons13.PencilIcon, { fontSize: "small" }), (0, import_i18n25.__)("Edit component", "elementor"))
3802
+ canEdit && /* @__PURE__ */ React23.createElement(import_ui18.Button, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React23.createElement(import_icons13.PencilIcon, { fontSize: "small" }), (0, import_i18n26.__)("Edit component", "elementor"))
3765
3803
  );
3766
3804
  };
3767
3805
 
@@ -3776,13 +3814,13 @@ var import_ui21 = require("@elementor/ui");
3776
3814
  var React26 = __toESM(require("react"));
3777
3815
  var import_editor_controls3 = require("@elementor/editor-controls");
3778
3816
  var import_editor_editing_panel3 = require("@elementor/editor-editing-panel");
3779
- var import_editor_elements14 = require("@elementor/editor-elements");
3817
+ var import_editor_elements15 = require("@elementor/editor-elements");
3780
3818
  var import_ui20 = require("@elementor/ui");
3781
3819
 
3782
3820
  // src/hooks/use-controls-by-widget-type.ts
3783
- var import_editor_elements12 = require("@elementor/editor-elements");
3821
+ var import_editor_elements13 = require("@elementor/editor-elements");
3784
3822
  function useControlsByWidgetType(type) {
3785
- const elementType = (0, import_editor_elements12.getElementType)(type);
3823
+ const elementType = (0, import_editor_elements13.getElementType)(type);
3786
3824
  if (!elementType) {
3787
3825
  return {};
3788
3826
  }
@@ -3890,7 +3928,7 @@ function updateOverridableProp(componentId, propValue, originPropFields) {
3890
3928
  }
3891
3929
 
3892
3930
  // src/utils/get-prop-type-for-component-override.ts
3893
- var import_editor_elements13 = require("@elementor/editor-elements");
3931
+ var import_editor_elements14 = require("@elementor/editor-elements");
3894
3932
  var getPropTypeForComponentOverride = (overridableProp) => {
3895
3933
  if (overridableProp.originPropFields) {
3896
3934
  return getPropType(overridableProp.originPropFields);
@@ -3904,7 +3942,7 @@ var getPropTypeForComponentOverride = (overridableProp) => {
3904
3942
  });
3905
3943
  };
3906
3944
  function getPropType({ widgetType, propKey }) {
3907
- const widgetPropsSchema = (0, import_editor_elements13.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
3945
+ const widgetPropsSchema = (0, import_editor_elements14.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
3908
3946
  return widgetPropsSchema?.[propKey];
3909
3947
  }
3910
3948
 
@@ -3985,14 +4023,14 @@ function OverrideControl({ overridableProp, overrides }) {
3985
4023
  overridableProp.label
3986
4024
  );
3987
4025
  const { elementId, widgetType, elType, propKey } = overridableProp.originPropFields ?? overridableProp;
3988
- const elementContainer = (0, import_editor_elements14.getContainer)(elementId);
4026
+ const elementContainer = (0, import_editor_elements15.getContainer)(elementId);
3989
4027
  if (!elementContainer) {
3990
4028
  throw new OverrideControlInnerElementNotFoundError({
3991
4029
  context: { componentId: componentInstanceId, elementId }
3992
4030
  });
3993
4031
  }
3994
4032
  const type = elType === "widget" ? widgetType : elType;
3995
- const elementType = (0, import_editor_elements14.getElementType)(type);
4033
+ const elementType = (0, import_editor_elements15.getElementType)(type);
3996
4034
  if (!elementType) {
3997
4035
  return null;
3998
4036
  }
@@ -4144,11 +4182,11 @@ function InstanceEditingPanel() {
4144
4182
  const overrides = settings?.overrides?.value;
4145
4183
  const component = useComponent(componentId ?? null);
4146
4184
  const overridableProps = useOverridableProps(componentId ?? null);
4147
- const componentInstanceId = (0, import_editor_elements15.useSelectedElement)()?.element?.id ?? null;
4185
+ const componentInstanceId = (0, import_editor_elements16.useSelectedElement)()?.element?.id ?? null;
4148
4186
  if (!componentId || !overridableProps || !component) {
4149
4187
  return null;
4150
4188
  }
4151
- const panelTitle = (0, import_i18n26.__)("Edit %s", "elementor").replace("%s", component.name);
4189
+ const panelTitle = (0, import_i18n27.__)("Edit %s", "elementor").replace("%s", component.name);
4152
4190
  const handleEditComponent = () => switchToComponent(componentId, componentInstanceId);
4153
4191
  const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
4154
4192
  const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
@@ -4239,9 +4277,9 @@ function ControlWithReplacements({
4239
4277
  var React31 = __toESM(require("react"));
4240
4278
  var import_editor_controls6 = require("@elementor/editor-controls");
4241
4279
  var import_editor_editing_panel7 = require("@elementor/editor-editing-panel");
4242
- var import_editor_elements16 = require("@elementor/editor-elements");
4280
+ var import_editor_elements17 = require("@elementor/editor-elements");
4243
4281
  var import_ui24 = require("@elementor/ui");
4244
- var import_i18n28 = require("@wordpress/i18n");
4282
+ var import_i18n29 = require("@wordpress/i18n");
4245
4283
 
4246
4284
  // src/store/actions/set-overridable-prop.ts
4247
4285
  var import_store58 = require("@elementor/store");
@@ -4326,7 +4364,7 @@ var React30 = __toESM(require("react"));
4326
4364
  var import_react16 = require("react");
4327
4365
  var import_icons15 = require("@elementor/icons");
4328
4366
  var import_ui23 = require("@elementor/ui");
4329
- var import_i18n27 = require("@wordpress/i18n");
4367
+ var import_i18n28 = require("@wordpress/i18n");
4330
4368
  var SIZE2 = "tiny";
4331
4369
  var IconContainer = (0, import_ui23.styled)(import_ui23.Box)`
4332
4370
  pointer-events: none;
@@ -4386,7 +4424,7 @@ var Indicator2 = (0, import_react16.forwardRef)(({ isOpen, isOverridable, ...pro
4386
4424
  IconContainer,
4387
4425
  {
4388
4426
  className: "icon",
4389
- "aria-label": isOverridable ? (0, import_i18n27.__)("Overridable property", "elementor") : (0, import_i18n27.__)("Make prop overridable", "elementor")
4427
+ "aria-label": isOverridable ? (0, import_i18n28.__)("Overridable property", "elementor") : (0, import_i18n28.__)("Make prop overridable", "elementor")
4390
4428
  },
4391
4429
  isOverridable ? /* @__PURE__ */ React30.createElement(import_icons15.CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React30.createElement(import_icons15.PlusIcon, { fontSize: SIZE2 })
4392
4430
  )));
@@ -4431,7 +4469,7 @@ function Content2({ componentId, overridableProps }) {
4431
4469
  });
4432
4470
  const triggerProps = (0, import_ui24.bindTrigger)(popupState);
4433
4471
  const popoverProps = (0, import_ui24.bindPopover)(popupState);
4434
- const { elType } = (0, import_editor_elements16.getWidgetsCache)()?.[elementType.key] ?? { elType: "widget" };
4472
+ const { elType } = (0, import_editor_elements17.getWidgetsCache)()?.[elementType.key] ?? { elType: "widget" };
4435
4473
  const handleSubmit = ({ label, group }) => {
4436
4474
  const propTypeDefault = propType.default ?? {};
4437
4475
  const originValue = resolveOverridePropValue(overridableValue?.origin_value) ?? value ?? propTypeDefault;
@@ -4458,7 +4496,7 @@ function Content2({ componentId, overridableProps }) {
4458
4496
  popupState.close();
4459
4497
  };
4460
4498
  const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
4461
- return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(import_ui24.Tooltip, { placement: "top", title: (0, import_i18n28.__)("Override Property", "elementor") }, /* @__PURE__ */ React31.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React31.createElement(
4499
+ return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(import_ui24.Tooltip, { placement: "top", title: (0, import_i18n29.__)("Override Property", "elementor") }, /* @__PURE__ */ React31.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React31.createElement(
4462
4500
  import_ui24.Popover,
4463
4501
  {
4464
4502
  disableScrollLock: true,
@@ -4498,7 +4536,7 @@ var import_editor_mcp2 = require("@elementor/editor-mcp");
4498
4536
 
4499
4537
  // src/mcp/save-as-component-tool.ts
4500
4538
  var import_editor_canvas7 = require("@elementor/editor-canvas");
4501
- var import_editor_elements17 = require("@elementor/editor-elements");
4539
+ var import_editor_elements18 = require("@elementor/editor-elements");
4502
4540
  var import_editor_mcp = require("@elementor/editor-mcp");
4503
4541
  var import_http_client2 = require("@elementor/http-client");
4504
4542
  var import_schema6 = require("@elementor/schema");
@@ -4536,7 +4574,7 @@ var ERROR_MESSAGES3 = {
4536
4574
  var handleSaveAsComponent = async (params) => {
4537
4575
  const { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;
4538
4576
  const validElementTypes = getValidElementTypes();
4539
- const container = (0, import_editor_elements17.getContainer)(elementId);
4577
+ const container = (0, import_editor_elements18.getContainer)(elementId);
4540
4578
  if (!container) {
4541
4579
  throw new Error(ERROR_MESSAGES3.ELEMENT_NOT_FOUND);
4542
4580
  }
@@ -4590,7 +4628,7 @@ function enrichOverridableProps(input, rootElement) {
4590
4628
  }
4591
4629
  const elType = element.elType;
4592
4630
  const widgetType = element.widgetType || element.elType;
4593
- const elementType = (0, import_editor_elements17.getElementType)(widgetType);
4631
+ const elementType = (0, import_editor_elements18.getElementType)(widgetType);
4594
4632
  if (!elementType) {
4595
4633
  throw new Error(
4596
4634
  `Element type "${widgetType}" is not atomic or does not have a settings schema. Cannot expose property "${propKey}" for element "${elementId}".`
@@ -4659,7 +4697,7 @@ function findElementById(root, targetId) {
4659
4697
  return null;
4660
4698
  }
4661
4699
  function getValidElementTypes() {
4662
- const types = (0, import_editor_elements17.getWidgetsCache)();
4700
+ const types = (0, import_editor_elements18.getWidgetsCache)();
4663
4701
  if (!types) {
4664
4702
  return [];
4665
4703
  }
@@ -4846,15 +4884,15 @@ function PopulateStore() {
4846
4884
  }
4847
4885
 
4848
4886
  // src/prevent-circular-nesting.ts
4849
- var import_editor_elements18 = require("@elementor/editor-elements");
4887
+ var import_editor_elements19 = require("@elementor/editor-elements");
4850
4888
  var import_editor_notifications4 = require("@elementor/editor-notifications");
4851
4889
  var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
4852
4890
  var import_store64 = require("@elementor/store");
4853
- var import_i18n29 = require("@wordpress/i18n");
4891
+ var import_i18n30 = require("@wordpress/i18n");
4854
4892
  var COMPONENT_TYPE = "e-component";
4855
4893
  var COMPONENT_CIRCULAR_NESTING_ALERT = {
4856
4894
  type: "default",
4857
- message: (0, import_i18n29.__)("Can't add this component - components that contain each other can't be nested.", "elementor"),
4895
+ message: (0, import_i18n30.__)("Can't add this component - components that contain each other can't be nested.", "elementor"),
4858
4896
  id: "circular-component-nesting-blocked"
4859
4897
  };
4860
4898
  function initCircularNestingPrevention() {
@@ -4941,7 +4979,7 @@ function blockCircularMove(args) {
4941
4979
  if (!container) {
4942
4980
  return false;
4943
4981
  }
4944
- const allElements = (0, import_editor_elements18.getAllDescendants)(container);
4982
+ const allElements = (0, import_editor_elements19.getAllDescendants)(container);
4945
4983
  return allElements.some((element) => {
4946
4984
  const componentId = extractComponentIdFromContainer(element);
4947
4985
  if (componentId === null) {
@@ -5002,7 +5040,7 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
5002
5040
  });
5003
5041
 
5004
5042
  // src/sync/create-components-before-save.ts
5005
- var import_editor_elements19 = require("@elementor/editor-elements");
5043
+ var import_editor_elements20 = require("@elementor/editor-elements");
5006
5044
  var import_store70 = require("@elementor/store");
5007
5045
  async function createComponentsBeforeSave({
5008
5046
  elements,
@@ -5027,7 +5065,9 @@ async function createComponentsBeforeSave({
5027
5065
  );
5028
5066
  (0, import_store70.__dispatch)(slice.actions.resetUnpublished());
5029
5067
  } catch (error) {
5030
- throw new Error(`Failed to publish components and update component instances: ${error}`);
5068
+ const failedUids = unpublishedComponents.map((component) => component.uid);
5069
+ (0, import_store70.__dispatch)(slice.actions.removeUnpublished(failedUids));
5070
+ throw new Error(`Failed to publish components: ${error}`);
5031
5071
  }
5032
5072
  }
5033
5073
  async function createComponents(components, status) {
@@ -5070,7 +5110,7 @@ function shouldUpdateElement(element, uidToComponentId) {
5070
5110
  return { shouldUpdate: false, newComponentId: null };
5071
5111
  }
5072
5112
  function updateElementComponentId(elementId, componentId) {
5073
- (0, import_editor_elements19.updateElementSettings)({
5113
+ (0, import_editor_elements20.updateElementSettings)({
5074
5114
  id: elementId,
5075
5115
  props: {
5076
5116
  component_instance: {
@@ -5173,7 +5213,7 @@ var updateExistingComponentsBeforeSave = async ({
5173
5213
  };
5174
5214
 
5175
5215
  // src/sync/cleanup-overridable-props-on-delete.ts
5176
- var import_editor_elements20 = require("@elementor/editor-elements");
5216
+ var import_editor_elements21 = require("@elementor/editor-elements");
5177
5217
  var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
5178
5218
  var import_store78 = require("@elementor/store");
5179
5219
  function initCleanupOverridablePropsOnDelete() {
@@ -5223,12 +5263,12 @@ function initCleanupOverridablePropsOnDelete() {
5223
5263
  });
5224
5264
  }
5225
5265
  function collectDeletedElementIds(containers) {
5226
- 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));
5266
+ const elementIds = containers.filter(Boolean).flatMap((container) => [container, ...(0, import_editor_elements21.getAllDescendants)(container)]).map((element) => element.model?.get?.("id") ?? element.id).filter((id2) => Boolean(id2));
5227
5267
  return elementIds;
5228
5268
  }
5229
5269
 
5230
5270
  // src/sync/handle-component-edit-mode-container.ts
5231
- var import_editor_elements21 = require("@elementor/editor-elements");
5271
+ var import_editor_elements22 = require("@elementor/editor-elements");
5232
5272
  var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
5233
5273
  var V4_DEFAULT_CONTAINER_TYPE = "e-flexbox";
5234
5274
  function initHandleComponentEditModeContainer() {
@@ -5278,11 +5318,11 @@ function initRedirectDropIntoComponent() {
5278
5318
  });
5279
5319
  }
5280
5320
  function createEmptyTopLevelContainer(container) {
5281
- const newContainer = (0, import_editor_elements21.createElement)({
5321
+ const newContainer = (0, import_editor_elements22.createElement)({
5282
5322
  containerId: container.id,
5283
5323
  model: { elType: V4_DEFAULT_CONTAINER_TYPE }
5284
5324
  });
5285
- (0, import_editor_elements21.selectElement)(newContainer.id);
5325
+ (0, import_editor_elements22.selectElement)(newContainer.id);
5286
5326
  }
5287
5327
  function getComponentContainer(container) {
5288
5328
  const topLevelElement = container.children?.[0];
@@ -5315,7 +5355,7 @@ function load(result) {
5315
5355
  }
5316
5356
 
5317
5357
  // src/sync/regenerate-override-keys.ts
5318
- var import_editor_elements22 = require("@elementor/editor-elements");
5358
+ var import_editor_elements23 = require("@elementor/editor-elements");
5319
5359
  var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
5320
5360
  var import_utils10 = require("@elementor/utils");
5321
5361
  function initRegenerateOverrideKeys() {
@@ -5336,11 +5376,11 @@ function regenerateOverrideKeysForContainers(result) {
5336
5376
  });
5337
5377
  }
5338
5378
  function regenerateOverrideKeysRecursive(elementId) {
5339
- const container = (0, import_editor_elements22.getContainer)(elementId);
5379
+ const container = (0, import_editor_elements23.getContainer)(elementId);
5340
5380
  if (!container) {
5341
5381
  return;
5342
5382
  }
5343
- (0, import_editor_elements22.getAllDescendants)(container).forEach(regenerateOverrideKeys);
5383
+ (0, import_editor_elements23.getAllDescendants)(container).forEach(regenerateOverrideKeys);
5344
5384
  }
5345
5385
  function regenerateOverrideKeys(element) {
5346
5386
  if (!isComponentInstance(element.model.toJSON())) {
@@ -5374,7 +5414,7 @@ function regenerateOverrideKeys(element) {
5374
5414
  }
5375
5415
  }
5376
5416
  };
5377
- (0, import_editor_elements22.updateElementSettings)({
5417
+ (0, import_editor_elements23.updateElementSettings)({
5378
5418
  id: element.id,
5379
5419
  props: { component_instance: newComponentInstance },
5380
5420
  withHistory: false
@@ -5451,7 +5491,7 @@ function init() {
5451
5491
  window.elementorCommon.__beforeSave = beforeSave;
5452
5492
  (0, import_editor_elements_panel.injectTab)({
5453
5493
  id: "components",
5454
- label: (0, import_i18n30.__)("Components", "elementor"),
5494
+ label: (0, import_i18n31.__)("Components", "elementor"),
5455
5495
  component: Components,
5456
5496
  position: 1
5457
5497
  });