@elementor/editor-components 3.35.0-425 → 3.35.0-426

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.mjs CHANGED
@@ -17,7 +17,7 @@ import { __registerPanel as registerPanel } from "@elementor/editor-panels";
17
17
  import { stylesRepository } from "@elementor/editor-styles-repository";
18
18
  import { registerDataHook as registerDataHook2 } from "@elementor/editor-v1-adapters";
19
19
  import { __registerSlice as registerSlice } from "@elementor/store";
20
- import { __ as __27 } from "@wordpress/i18n";
20
+ import { __ as __28 } from "@wordpress/i18n";
21
21
 
22
22
  // src/component-instance-transformer.ts
23
23
  import { createTransformer } from "@elementor/editor-canvas";
@@ -110,7 +110,7 @@ var slice = createSlice({
110
110
  reducers: {
111
111
  add: (state, { payload }) => {
112
112
  if (Array.isArray(payload)) {
113
- state.data = [...state.data, ...payload];
113
+ state.data = [...payload, ...state.data];
114
114
  } else {
115
115
  state.data.unshift(payload);
116
116
  }
@@ -1693,7 +1693,7 @@ import { useState as useState6 } from "react";
1693
1693
  import { getAngieSdk } from "@elementor/editor-mcp";
1694
1694
  import { AIIcon, ComponentsIcon as ComponentsIcon2 } from "@elementor/icons";
1695
1695
  import { Box as Box11, Button as Button4, Divider as Divider3, Link as Link3, List as List3, Stack as Stack10, Typography as Typography9 } from "@elementor/ui";
1696
- import { __ as __17 } from "@wordpress/i18n";
1696
+ import { __ as __18 } from "@wordpress/i18n";
1697
1697
 
1698
1698
  // src/store/actions/rename-component.ts
1699
1699
  import { getV1DocumentsManager as getV1DocumentsManager4, setDocumentModifiedStatus as setDocumentModifiedStatus3 } from "@elementor/editor-documents";
@@ -2071,19 +2071,23 @@ import {
2071
2071
  Typography as Typography8,
2072
2072
  usePopupState as usePopupState3
2073
2073
  } from "@elementor/ui";
2074
- import { __ as __16 } from "@wordpress/i18n";
2074
+ import { __ as __17 } from "@wordpress/i18n";
2075
2075
 
2076
2076
  // src/store/actions/archive-component.ts
2077
2077
  import { setDocumentModifiedStatus as setDocumentModifiedStatus4 } from "@elementor/editor-documents";
2078
- import { __getStore as getStore } from "@elementor/store";
2079
- var archiveComponent = (componentId) => {
2080
- const store = getStore();
2081
- const dispatch18 = store?.dispatch;
2082
- if (!dispatch18) {
2083
- return;
2084
- }
2085
- dispatch18(slice.actions.archive(componentId));
2078
+ import { notify } from "@elementor/editor-notifications";
2079
+ import { __dispatch as dispatch9 } from "@elementor/store";
2080
+ import { __ as __15 } from "@wordpress/i18n";
2081
+ var successNotification = (componentId, componentName) => ({
2082
+ type: "success",
2083
+ /* translators: %s: component name */
2084
+ message: __15("Successfully deleted component %s", "elementor").replace("%s", componentName),
2085
+ id: `success-archived-components-notification-${componentId}`
2086
+ });
2087
+ var archiveComponent = (componentId, componentName) => {
2088
+ dispatch9(slice.actions.archive(componentId));
2086
2089
  setDocumentModifiedStatus4(true);
2090
+ notify(successNotification(componentId, componentName));
2087
2091
  };
2088
2092
 
2089
2093
  // src/store/actions/load-components-assets.ts
@@ -2121,7 +2125,7 @@ var getComponentIds = async (elements) => {
2121
2125
  };
2122
2126
 
2123
2127
  // src/store/actions/load-components-overridable-props.ts
2124
- import { __dispatch as dispatch9, __getState as getState12 } from "@elementor/store";
2128
+ import { __dispatch as dispatch10, __getState as getState12 } from "@elementor/store";
2125
2129
  function loadComponentsOverridableProps(componentIds) {
2126
2130
  if (!componentIds.length) {
2127
2131
  return;
@@ -2137,7 +2141,7 @@ async function loadComponentOverrides(componentId) {
2137
2141
  if (!overridableProps) {
2138
2142
  return;
2139
2143
  }
2140
- dispatch9(
2144
+ dispatch10(
2141
2145
  slice.actions.setOverridableProps({
2142
2146
  componentId,
2143
2147
  overridableProps
@@ -2146,7 +2150,7 @@ async function loadComponentOverrides(componentId) {
2146
2150
  }
2147
2151
 
2148
2152
  // src/store/actions/load-components-styles.ts
2149
- import { __dispatch as dispatch10, __getState as getState13 } from "@elementor/store";
2153
+ import { __dispatch as dispatch11, __getState as getState13 } from "@elementor/store";
2150
2154
  async function loadComponentsStyles(componentIds) {
2151
2155
  if (!componentIds.length) {
2152
2156
  return;
@@ -2169,7 +2173,7 @@ function addStyles(data) {
2169
2173
  const styles = Object.fromEntries(
2170
2174
  data.map(([componentId, componentData]) => [componentId, extractStyles(componentData)])
2171
2175
  );
2172
- dispatch10(slice.actions.addStyles(styles));
2176
+ dispatch11(slice.actions.addStyles(styles));
2173
2177
  }
2174
2178
  function extractStyles(element) {
2175
2179
  return [...Object.values(element.styles ?? {}), ...(element.elements ?? []).flatMap(extractStyles)];
@@ -2199,14 +2203,14 @@ import { __getState as getState14 } from "@elementor/store";
2199
2203
 
2200
2204
  // src/components/create-component-form/utils/component-form-schema.ts
2201
2205
  import { z } from "@elementor/schema";
2202
- import { __ as __15 } from "@wordpress/i18n";
2206
+ import { __ as __16 } from "@wordpress/i18n";
2203
2207
  var MIN_NAME_LENGTH = 2;
2204
2208
  var MAX_NAME_LENGTH = 50;
2205
- var baseComponentSchema = z.string().trim().max(MAX_NAME_LENGTH, __15("Component name is too long. Please keep it under 50 characters.", "elementor"));
2209
+ var baseComponentSchema = z.string().trim().max(MAX_NAME_LENGTH, __16("Component name is too long. Please keep it under 50 characters.", "elementor"));
2206
2210
  var createBaseComponentSchema = (existingNames) => {
2207
2211
  return z.object({
2208
2212
  componentName: baseComponentSchema.refine((value) => !existingNames.includes(value), {
2209
- message: __15("Component name already exists", "elementor")
2213
+ message: __16("Component name already exists", "elementor")
2210
2214
  })
2211
2215
  });
2212
2216
  };
@@ -2214,9 +2218,9 @@ var createSubmitComponentSchema = (existingNames) => {
2214
2218
  const baseSchema = createBaseComponentSchema(existingNames);
2215
2219
  return baseSchema.extend({
2216
2220
  componentName: baseSchema.shape.componentName.refine((value) => value.length > 0, {
2217
- message: __15("Component name is required.", "elementor")
2221
+ message: __16("Component name is required.", "elementor")
2218
2222
  }).refine((value) => value.length >= MIN_NAME_LENGTH, {
2219
- message: __15("Component name is too short. Please enter at least 2 characters.", "elementor")
2223
+ message: __16("Component name is too short. Please enter at least 2 characters.", "elementor")
2220
2224
  })
2221
2225
  });
2222
2226
  };
@@ -2342,7 +2346,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
2342
2346
  if (!component.id) {
2343
2347
  throw new Error("Component ID is required");
2344
2348
  }
2345
- archiveComponent(component.id);
2349
+ archiveComponent(component.id, component.name);
2346
2350
  };
2347
2351
  return /* @__PURE__ */ React14.createElement(Stack8, null, /* @__PURE__ */ React14.createElement(
2348
2352
  WarningInfotip,
@@ -2425,9 +2429,9 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
2425
2429
  openEditMode();
2426
2430
  }
2427
2431
  },
2428
- __16("Rename", "elementor")
2432
+ __17("Rename", "elementor")
2429
2433
  ),
2430
- /* @__PURE__ */ React14.createElement(MenuListItem3, { sx: { minWidth: "160px" }, onClick: handleArchiveClick }, /* @__PURE__ */ React14.createElement(Typography8, { variant: "caption", sx: { color: "error.light" } }, __16("Archive", "elementor")))
2434
+ /* @__PURE__ */ React14.createElement(MenuListItem3, { sx: { minWidth: "160px" }, onClick: handleArchiveClick }, /* @__PURE__ */ React14.createElement(Typography8, { variant: "caption", sx: { color: "error.light" } }, __17("Delete", "elementor")))
2431
2435
  ));
2432
2436
  };
2433
2437
  var addComponentToPage = (model) => {
@@ -2546,7 +2550,7 @@ var EmptyState = () => {
2546
2550
  const sdk = getAngieSdk();
2547
2551
  if (sdk.isAngieReady()) {
2548
2552
  sdk.triggerAngie({
2549
- prompt: __17(
2553
+ prompt: __18(
2550
2554
  "Create a [hero/testimonial/product card/CTA/feature] component for my [business type]. Include [describe what you want]",
2551
2555
  "elementor"
2552
2556
  ),
@@ -2566,7 +2570,7 @@ var EmptyState = () => {
2566
2570
  gap: 2,
2567
2571
  overflow: "hidden"
2568
2572
  },
2569
- /* @__PURE__ */ React16.createElement(Stack10, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React16.createElement(ComponentsIcon2, { fontSize: "large", sx: { color: "text.secondary" } }), /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "subtitle2", color: "text.secondary", sx: SUBTITLE_OVERRIDE_SX }, __17("No components yet", "elementor")), /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "secondary", sx: { maxWidth: 200 } }, __17("Components are reusable blocks that sync across your site.", "elementor"), /* @__PURE__ */ React16.createElement("br", null), __17("Create once, use everywhere.", "elementor")), /* @__PURE__ */ React16.createElement(
2573
+ /* @__PURE__ */ React16.createElement(Stack10, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React16.createElement(ComponentsIcon2, { fontSize: "large", sx: { color: "text.secondary" } }), /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "subtitle2", color: "text.secondary", sx: SUBTITLE_OVERRIDE_SX }, __18("No components yet", "elementor")), /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "secondary", sx: { maxWidth: 200 } }, __18("Components are reusable blocks that sync across your site.", "elementor"), /* @__PURE__ */ React16.createElement("br", null), __18("Create once, use everywhere.", "elementor")), /* @__PURE__ */ React16.createElement(
2570
2574
  Link3,
2571
2575
  {
2572
2576
  href: LEARN_MORE_URL,
@@ -2575,13 +2579,13 @@ var EmptyState = () => {
2575
2579
  variant: "caption",
2576
2580
  color: "info.main"
2577
2581
  },
2578
- __17("Learn more about components", "elementor")
2582
+ __18("Learn more about components", "elementor")
2579
2583
  )),
2580
2584
  /* @__PURE__ */ React16.createElement(Divider3, { sx: { width: "100%" } }),
2581
- /* @__PURE__ */ React16.createElement(Stack10, { alignItems: "center", gap: 1, width: "100%" }, /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "subtitle2", color: "text.secondary", sx: SUBTITLE_OVERRIDE_SX }, __17("Create your first one:", "elementor")), /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "secondary", sx: { maxWidth: 228 } }, __17(
2585
+ /* @__PURE__ */ React16.createElement(Stack10, { alignItems: "center", gap: 1, width: "100%" }, /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "subtitle2", color: "text.secondary", sx: SUBTITLE_OVERRIDE_SX }, __18("Create your first one:", "elementor")), /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "secondary", sx: { maxWidth: 228 } }, __18(
2582
2586
  'Right-click any div-block or flexbox on your canvas or structure and select "Create component"',
2583
2587
  "elementor"
2584
- )), /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "secondary" }, __17("Or", "elementor")), /* @__PURE__ */ React16.createElement(AngiePromotionModal, { open: isAngieModalOpen, onClose: () => setIsAngieModalOpen(false) }, /* @__PURE__ */ React16.createElement(
2588
+ )), /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "secondary" }, __18("Or", "elementor")), /* @__PURE__ */ React16.createElement(AngiePromotionModal, { open: isAngieModalOpen, onClose: () => setIsAngieModalOpen(false) }, /* @__PURE__ */ React16.createElement(
2585
2589
  Button4,
2586
2590
  {
2587
2591
  color: "secondary",
@@ -2590,7 +2594,7 @@ var EmptyState = () => {
2590
2594
  onClick: handleCreateWithAI,
2591
2595
  endIcon: /* @__PURE__ */ React16.createElement(AIIcon, null)
2592
2596
  },
2593
- __17("Create component with AI", "elementor")
2597
+ __18("Create component with AI", "elementor")
2594
2598
  )))
2595
2599
  );
2596
2600
  };
@@ -2614,7 +2618,7 @@ var EmptySearchResult = () => {
2614
2618
  width: "100%"
2615
2619
  }
2616
2620
  },
2617
- /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "subtitle2", color: "inherit", sx: SUBTITLE_OVERRIDE_SX }, __17("Sorry, nothing matched", "elementor")),
2621
+ /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "subtitle2", color: "inherit", sx: SUBTITLE_OVERRIDE_SX }, __18("Sorry, nothing matched", "elementor")),
2618
2622
  searchValue && /* @__PURE__ */ React16.createElement(
2619
2623
  Typography9,
2620
2624
  {
@@ -2642,8 +2646,8 @@ var EmptySearchResult = () => {
2642
2646
  /* @__PURE__ */ React16.createElement("span", null, "\u201D.")
2643
2647
  )
2644
2648
  ),
2645
- /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "inherit" }, __17("Try something else.", "elementor")),
2646
- /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "inherit" }, /* @__PURE__ */ React16.createElement(Link3, { color: "secondary", variant: "caption", component: "button", onClick: clearSearch }, __17("Clear & try again", "elementor")))
2649
+ /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "inherit" }, __18("Try something else.", "elementor")),
2650
+ /* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "inherit" }, /* @__PURE__ */ React16.createElement(Link3, { color: "secondary", variant: "caption", component: "button", onClick: clearSearch }, __18("Clear & try again", "elementor")))
2647
2651
  );
2648
2652
  };
2649
2653
  var useFilteredComponents = () => {
@@ -2675,23 +2679,23 @@ var COMPONENT_DOCUMENT_TYPE = "elementor_component";
2675
2679
  import * as React18 from "react";
2676
2680
  import { useEffect as useEffect2, useMemo as useMemo3, useRef as useRef5, useState as useState8 } from "react";
2677
2681
  import { getElementLabel } from "@elementor/editor-elements";
2678
- import { notify as notify2 } from "@elementor/editor-notifications";
2682
+ import { notify as notify3 } from "@elementor/editor-notifications";
2679
2683
  import { Form as FormElement, ThemeProvider as ThemeProvider3 } from "@elementor/editor-ui";
2680
- import { StarIcon } from "@elementor/icons";
2684
+ import { ComponentsIcon as ComponentsIcon3 } from "@elementor/icons";
2681
2685
  import { __getState as getState15 } from "@elementor/store";
2682
- import { Alert as Alert2, Button as Button5, FormLabel as FormLabel2, Grid as Grid2, Popover as Popover3, Snackbar, Stack as Stack11, TextField as TextField3, Typography as Typography10 } from "@elementor/ui";
2683
- import { __ as __19 } from "@wordpress/i18n";
2686
+ import { Button as Button5, FormLabel as FormLabel2, Grid as Grid2, Popover as Popover3, Stack as Stack11, TextField as TextField3, Typography as Typography10 } from "@elementor/ui";
2687
+ import { __ as __20 } from "@wordpress/i18n";
2684
2688
 
2685
2689
  // src/prevent-non-atomic-nesting.ts
2686
2690
  import { isAtomicWidget } from "@elementor/editor-canvas";
2687
2691
  import { getAllDescendants as getAllDescendants2, getElementType } from "@elementor/editor-elements";
2688
- import { notify } from "@elementor/editor-notifications";
2692
+ import { notify as notify2 } from "@elementor/editor-notifications";
2689
2693
  import { blockCommand } from "@elementor/editor-v1-adapters";
2690
- import { __getStore as getStore2 } from "@elementor/store";
2691
- import { __ as __18 } from "@wordpress/i18n";
2694
+ import { __getStore as getStore } from "@elementor/store";
2695
+ import { __ as __19 } from "@wordpress/i18n";
2692
2696
  var NON_ATOMIC_ELEMENT_ALERT = {
2693
2697
  type: "default",
2694
- message: __18("This widget isn't compatible with components. Use atomic elements instead.", "elementor"),
2698
+ message: __19("This widget isn't compatible with components. Use atomic elements instead.", "elementor"),
2695
2699
  id: "non-atomic-element-blocked"
2696
2700
  };
2697
2701
  function initNonAtomicNestingPrevention() {
@@ -2709,7 +2713,7 @@ function initNonAtomicNestingPrevention() {
2709
2713
  });
2710
2714
  }
2711
2715
  function isEditingComponent() {
2712
- const state = getStore2()?.getState();
2716
+ const state = getStore()?.getState();
2713
2717
  if (!state) {
2714
2718
  return false;
2715
2719
  }
@@ -2730,7 +2734,7 @@ function blockNonAtomicCreate(args) {
2730
2734
  if (isElementAtomic(elementType)) {
2731
2735
  return false;
2732
2736
  }
2733
- notify(NON_ATOMIC_ELEMENT_ALERT);
2737
+ notify2(NON_ATOMIC_ELEMENT_ALERT);
2734
2738
  return true;
2735
2739
  }
2736
2740
  function blockNonAtomicMove(args) {
@@ -2746,7 +2750,7 @@ function blockNonAtomicMove(args) {
2746
2750
  return allElements.some((element) => !isAtomicWidget(element));
2747
2751
  });
2748
2752
  if (hasNonAtomicElement) {
2749
- notify(NON_ATOMIC_ELEMENT_ALERT);
2753
+ notify2(NON_ATOMIC_ELEMENT_ALERT);
2750
2754
  }
2751
2755
  return hasNonAtomicElement;
2752
2756
  }
@@ -2764,7 +2768,7 @@ function blockNonAtomicPaste(args) {
2764
2768
  }
2765
2769
  const hasNonAtomicElement = hasNonAtomicElementsInTree(data.clipboard.elements);
2766
2770
  if (hasNonAtomicElement) {
2767
- notify(NON_ATOMIC_ELEMENT_ALERT);
2771
+ notify2(NON_ATOMIC_ELEMENT_ALERT);
2768
2772
  }
2769
2773
  return hasNonAtomicElement;
2770
2774
  }
@@ -2798,18 +2802,18 @@ function findNonAtomicElementsInElement(element) {
2798
2802
 
2799
2803
  // src/store/actions/create-unpublished-component.ts
2800
2804
  import { __privateRunCommand as runCommand3 } from "@elementor/editor-v1-adapters";
2801
- import { __dispatch as dispatch11 } from "@elementor/store";
2805
+ import { __dispatch as dispatch12 } from "@elementor/store";
2802
2806
  import { generateUniqueId as generateUniqueId3 } from "@elementor/utils";
2803
2807
  async function createUnpublishedComponent(name, element, eventData, overridableProps, uid) {
2804
2808
  const generatedUid = uid ?? generateUniqueId3("component");
2805
2809
  const componentBase = { uid: generatedUid, name, overridableProps };
2806
- dispatch11(
2810
+ dispatch12(
2807
2811
  slice.actions.addUnpublished({
2808
2812
  ...componentBase,
2809
2813
  elements: [element]
2810
2814
  })
2811
2815
  );
2812
- dispatch11(slice.actions.addCreatedThisSession(generatedUid));
2816
+ dispatch12(slice.actions.addCreatedThisSession(generatedUid));
2813
2817
  const componentInstance = await replaceElementWithComponent(element, componentBase);
2814
2818
  trackComponentEvent({
2815
2819
  action: "created",
@@ -2903,16 +2907,15 @@ function countNestedElements(container) {
2903
2907
  function CreateComponentForm() {
2904
2908
  const [element, setElement] = useState8(null);
2905
2909
  const [anchorPosition, setAnchorPosition] = useState8();
2906
- const [resultNotification, setResultNotification] = useState8(null);
2907
2910
  const eventData = useRef5(null);
2908
2911
  useEffect2(() => {
2909
2912
  const OPEN_SAVE_AS_COMPONENT_FORM_EVENT = "elementor/editor/open-save-as-component-form";
2910
2913
  const openPopup = (event) => {
2911
2914
  const nonAtomicElements = findNonAtomicElementsInElement(event.detail.element);
2912
2915
  if (nonAtomicElements.length > 0) {
2913
- notify2({
2916
+ notify3({
2914
2917
  type: "default",
2915
- message: __19(
2918
+ message: __20(
2916
2919
  "Components require atomic elements only. Remove widgets to create this component.",
2917
2920
  "elementor"
2918
2921
  ),
@@ -2949,19 +2952,18 @@ function CreateComponentForm() {
2949
2952
  } else {
2950
2953
  throw new Error("Failed to find published component");
2951
2954
  }
2952
- setResultNotification({
2953
- show: true,
2954
- // Translators: %1$s: Component name, %2$s: Component UID
2955
- message: __19("Component saved successfully as: %1$s (UID: %2$s)", "elementor").replace("%1$s", values.componentName).replace("%2$s", uid),
2956
- type: "success"
2955
+ notify3({
2956
+ type: "success",
2957
+ message: __20("Component created successfully.", "elementor"),
2958
+ id: `component-saved-successfully-${uid}`
2957
2959
  });
2958
2960
  resetAndClosePopup();
2959
2961
  } catch {
2960
- const errorMessage = __19("Failed to save component. Please try again.", "elementor");
2961
- setResultNotification({
2962
- show: true,
2962
+ const errorMessage = __20("Failed to create component. Please try again.", "elementor");
2963
+ notify3({
2964
+ type: "error",
2963
2965
  message: errorMessage,
2964
- type: "error"
2966
+ id: "component-save-failed"
2965
2967
  });
2966
2968
  }
2967
2969
  };
@@ -2992,15 +2994,7 @@ function CreateComponentForm() {
2992
2994
  closePopup: cancelSave
2993
2995
  }
2994
2996
  )
2995
- ), /* @__PURE__ */ React18.createElement(Snackbar, { open: resultNotification?.show, onClose: () => setResultNotification(null) }, /* @__PURE__ */ React18.createElement(
2996
- Alert2,
2997
- {
2998
- onClose: () => setResultNotification(null),
2999
- severity: resultNotification?.type,
3000
- sx: { width: "100%" }
3001
- },
3002
- resultNotification?.message
3003
- )));
2997
+ ));
3004
2998
  }
3005
2999
  var FONT_SIZE = "tiny";
3006
3000
  var Form2 = ({
@@ -3028,10 +3022,10 @@ var Form2 = ({
3028
3022
  }
3029
3023
  };
3030
3024
  const texts = {
3031
- heading: __19("Save as a component", "elementor"),
3032
- name: __19("Name", "elementor"),
3033
- cancel: __19("Cancel", "elementor"),
3034
- create: __19("Create", "elementor")
3025
+ heading: __20("Create component", "elementor"),
3026
+ name: __20("Name", "elementor"),
3027
+ cancel: __20("Cancel", "elementor"),
3028
+ create: __20("Create", "elementor")
3035
3029
  };
3036
3030
  const nameInputId = "component-name";
3037
3031
  return /* @__PURE__ */ React18.createElement(FormElement, { onSubmit: handleSubmit }, /* @__PURE__ */ React18.createElement(Stack11, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React18.createElement(
@@ -3043,7 +3037,7 @@ var Form2 = ({
3043
3037
  px: 1.5,
3044
3038
  sx: { columnGap: 0.5, borderBottom: "1px solid", borderColor: "divider", width: "100%" }
3045
3039
  },
3046
- /* @__PURE__ */ React18.createElement(StarIcon, { fontSize: FONT_SIZE }),
3040
+ /* @__PURE__ */ React18.createElement(ComponentsIcon3, { fontSize: FONT_SIZE }),
3047
3041
  /* @__PURE__ */ React18.createElement(Typography10, { variant: "caption", sx: { color: "text.primary", fontWeight: "500", lineHeight: 1 } }, texts.heading)
3048
3042
  ), /* @__PURE__ */ React18.createElement(Grid2, { container: true, gap: 0.75, alignItems: "start", p: 1.5 }, /* @__PURE__ */ React18.createElement(Grid2, { item: true, xs: 12 }, /* @__PURE__ */ React18.createElement(FormLabel2, { htmlFor: nameInputId, size: "tiny" }, texts.name)), /* @__PURE__ */ React18.createElement(Grid2, { item: true, xs: 12 }, /* @__PURE__ */ React18.createElement(
3049
3043
  TextField3,
@@ -3070,24 +3064,24 @@ import { throttle as throttle2 } from "@elementor/utils";
3070
3064
 
3071
3065
  // src/store/actions/update-current-component.ts
3072
3066
  import { setDocumentModifiedStatus as setDocumentModifiedStatus6 } from "@elementor/editor-documents";
3073
- import { __getStore as getStore3 } from "@elementor/store";
3067
+ import { __getStore as getStore2 } from "@elementor/store";
3074
3068
  function updateCurrentComponent({
3075
3069
  path,
3076
3070
  currentComponentId
3077
3071
  }) {
3078
- const dispatch18 = getStore3()?.dispatch;
3079
- if (!dispatch18) {
3072
+ const dispatch19 = getStore2()?.dispatch;
3073
+ if (!dispatch19) {
3080
3074
  return;
3081
3075
  }
3082
- dispatch18(slice.actions.setPath(path));
3083
- dispatch18(slice.actions.setCurrentComponentId(currentComponentId));
3076
+ dispatch19(slice.actions.setPath(path));
3077
+ dispatch19(slice.actions.setCurrentComponentId(currentComponentId));
3084
3078
  }
3085
3079
 
3086
3080
  // src/components/edit-component/component-modal.tsx
3087
3081
  import * as React19 from "react";
3088
3082
  import { useEffect as useEffect4 } from "react";
3089
3083
  import { createPortal } from "react-dom";
3090
- import { __ as __20 } from "@wordpress/i18n";
3084
+ import { __ as __21 } from "@wordpress/i18n";
3091
3085
 
3092
3086
  // src/hooks/use-canvas-document.ts
3093
3087
  import { getCanvasIframeDocument } from "@elementor/editor-canvas";
@@ -3209,7 +3203,7 @@ function Backdrop({ canvas, element, onClose }) {
3209
3203
  onKeyDown: handleKeyDown,
3210
3204
  role: "button",
3211
3205
  tabIndex: 0,
3212
- "aria-label": __20("Exit component editing mode", "elementor")
3206
+ "aria-label": __21("Exit component editing mode", "elementor")
3213
3207
  }
3214
3208
  );
3215
3209
  }
@@ -3346,18 +3340,18 @@ import * as React21 from "react";
3346
3340
  import { closeDialog, openDialog } from "@elementor/editor-ui";
3347
3341
  import { InfoCircleFilledIcon } from "@elementor/icons";
3348
3342
  import { Box as Box12, Button as Button6, DialogActions, DialogContent, DialogHeader, Icon, Stack as Stack12, Typography as Typography11 } from "@elementor/ui";
3349
- import { __ as __21 } from "@wordpress/i18n";
3343
+ import { __ as __22 } from "@wordpress/i18n";
3350
3344
  var openEditModeDialog = (lockedBy) => {
3351
3345
  openDialog({
3352
3346
  component: /* @__PURE__ */ React21.createElement(EditModeDialog, { lockedBy })
3353
3347
  });
3354
3348
  };
3355
3349
  var EditModeDialog = ({ lockedBy }) => {
3356
- const content = __21("%s is currently editing this document", "elementor").replace("%s", lockedBy);
3357
- return /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React21.createElement(Box12, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React21.createElement(Icon, { color: "secondary" }, /* @__PURE__ */ React21.createElement(InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React21.createElement(Typography11, { variant: "subtitle1" }, content))), /* @__PURE__ */ React21.createElement(DialogContent, null, /* @__PURE__ */ React21.createElement(Stack12, { spacing: 2, direction: "column" }, /* @__PURE__ */ React21.createElement(Typography11, { variant: "body2" }, __21(
3350
+ const content = __22("%s is currently editing this document", "elementor").replace("%s", lockedBy);
3351
+ return /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React21.createElement(Box12, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React21.createElement(Icon, { color: "secondary" }, /* @__PURE__ */ React21.createElement(InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React21.createElement(Typography11, { variant: "subtitle1" }, content))), /* @__PURE__ */ React21.createElement(DialogContent, null, /* @__PURE__ */ React21.createElement(Stack12, { spacing: 2, direction: "column" }, /* @__PURE__ */ React21.createElement(Typography11, { variant: "body2" }, __22(
3358
3352
  "You can wait for them to finish or reach out to coordinate your changes together.",
3359
3353
  "elementor"
3360
- )), /* @__PURE__ */ React21.createElement(DialogActions, null, /* @__PURE__ */ React21.createElement(Button6, { color: "secondary", variant: "contained", onClick: closeDialog }, __21("Close", "elementor"))))));
3354
+ )), /* @__PURE__ */ React21.createElement(DialogActions, null, /* @__PURE__ */ React21.createElement(Button6, { color: "secondary", variant: "contained", onClick: closeDialog }, __22("Close", "elementor"))))));
3361
3355
  };
3362
3356
 
3363
3357
  // src/components/instance-editing-panel/instance-editing-panel.tsx
@@ -3366,9 +3360,9 @@ import { ControlAdornmentsProvider } from "@elementor/editor-controls";
3366
3360
  import { getFieldIndicators } from "@elementor/editor-editing-panel";
3367
3361
  import { useSelectedElement as useSelectedElement2 } from "@elementor/editor-elements";
3368
3362
  import { PanelBody as PanelBody2, PanelHeader as PanelHeader2, PanelHeaderTitle as PanelHeaderTitle2 } from "@elementor/editor-panels";
3369
- import { ComponentsIcon as ComponentsIcon3, PencilIcon as PencilIcon2 } from "@elementor/icons";
3363
+ import { ComponentsIcon as ComponentsIcon4, PencilIcon as PencilIcon2 } from "@elementor/icons";
3370
3364
  import { IconButton as IconButton6, Stack as Stack17, Tooltip as Tooltip4 } from "@elementor/ui";
3371
- import { __ as __23 } from "@wordpress/i18n";
3365
+ import { __ as __24 } from "@wordpress/i18n";
3372
3366
 
3373
3367
  // src/hooks/use-component-instance-settings.ts
3374
3368
  import { useElement } from "@elementor/editor-editing-panel";
@@ -3437,7 +3431,7 @@ function useComponentInstanceSettings() {
3437
3431
  import * as React22 from "react";
3438
3432
  import { ComponentPropListIcon as ComponentPropListIcon4, PencilIcon } from "@elementor/icons";
3439
3433
  import { Button as Button7, Stack as Stack13, Typography as Typography12 } from "@elementor/ui";
3440
- import { __ as __22 } from "@wordpress/i18n";
3434
+ import { __ as __23 } from "@wordpress/i18n";
3441
3435
  var EmptyState2 = ({ onEditComponent }) => {
3442
3436
  return /* @__PURE__ */ React22.createElement(
3443
3437
  Stack13,
@@ -3450,12 +3444,12 @@ var EmptyState2 = ({ onEditComponent }) => {
3450
3444
  gap: 1.5
3451
3445
  },
3452
3446
  /* @__PURE__ */ React22.createElement(ComponentPropListIcon4, { fontSize: "large" }),
3453
- /* @__PURE__ */ React22.createElement(Typography12, { align: "center", variant: "subtitle2" }, __22("No properties yet", "elementor")),
3454
- /* @__PURE__ */ React22.createElement(Typography12, { align: "center", variant: "caption", maxWidth: "170px" }, __22(
3447
+ /* @__PURE__ */ React22.createElement(Typography12, { align: "center", variant: "subtitle2" }, __23("No properties yet", "elementor")),
3448
+ /* @__PURE__ */ React22.createElement(Typography12, { align: "center", variant: "caption", maxWidth: "170px" }, __23(
3455
3449
  "Edit the component to add properties, manage them or update the design across all instances.",
3456
3450
  "elementor"
3457
3451
  )),
3458
- /* @__PURE__ */ React22.createElement(Button7, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React22.createElement(PencilIcon, { fontSize: "small" }), __22("Edit component", "elementor"))
3452
+ /* @__PURE__ */ React22.createElement(Button7, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React22.createElement(PencilIcon, { fontSize: "small" }), __23("Edit component", "elementor"))
3459
3453
  );
3460
3454
  };
3461
3455
 
@@ -3508,7 +3502,7 @@ function getControlsByBind(controls) {
3508
3502
  }
3509
3503
 
3510
3504
  // src/store/actions/update-overridable-prop.ts
3511
- import { __dispatch as dispatch12, __getState as getState16 } from "@elementor/store";
3505
+ import { __dispatch as dispatch13, __getState as getState16 } from "@elementor/store";
3512
3506
  function updateOverridableProp(componentId, propValue, originPropFields) {
3513
3507
  const overridableProps = selectOverridableProps(getState16(), componentId);
3514
3508
  if (!overridableProps) {
@@ -3534,7 +3528,7 @@ function updateOverridableProp(componentId, propValue, originPropFields) {
3534
3528
  }
3535
3529
  }
3536
3530
  };
3537
- dispatch12(
3531
+ dispatch13(
3538
3532
  slice.actions.setOverridableProps({
3539
3533
  componentId,
3540
3534
  overridableProps: newOverridableProps
@@ -3733,12 +3727,12 @@ function InstanceEditingPanel() {
3733
3727
  if (!componentId || !overridableProps || !component) {
3734
3728
  return null;
3735
3729
  }
3736
- const panelTitle = __23("Edit %s", "elementor").replace("%s", component.name);
3730
+ const panelTitle = __24("Edit %s", "elementor").replace("%s", component.name);
3737
3731
  const handleEditComponent = () => switchToComponent(componentId, componentInstanceId);
3738
3732
  const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
3739
3733
  const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
3740
3734
  const isEmpty = groups.length === 0 || Object.keys(overridableProps.props).length === 0;
3741
- return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement(PanelHeader2, { sx: { justifyContent: "start", px: 2 } }, /* @__PURE__ */ React26.createElement(Stack17, { direction: "row", alignContent: "space-between", flexGrow: 1 }, /* @__PURE__ */ React26.createElement(Stack17, { direction: "row", alignItems: "center", justifyContent: "start", gap: 1, flexGrow: 1 }, /* @__PURE__ */ React26.createElement(ComponentsIcon3, { fontSize: "small", sx: { color: "text.tertiary" } }), /* @__PURE__ */ React26.createElement(PanelHeaderTitle2, null, component.name)), /* @__PURE__ */ React26.createElement(Tooltip4, { title: panelTitle }, /* @__PURE__ */ React26.createElement(IconButton6, { size: "tiny", onClick: handleEditComponent, "aria-label": panelTitle }, /* @__PURE__ */ React26.createElement(PencilIcon2, { fontSize: "tiny" }))))), /* @__PURE__ */ React26.createElement(PanelBody2, null, /* @__PURE__ */ React26.createElement(ControlAdornmentsProvider, { items: getFieldIndicators("settings") }, isEmpty ? /* @__PURE__ */ React26.createElement(EmptyState2, { onEditComponent: handleEditComponent }) : /* @__PURE__ */ React26.createElement(Stack17, { direction: "column", alignItems: "stretch" }, groups.map((group) => /* @__PURE__ */ React26.createElement(
3735
+ return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement(PanelHeader2, { sx: { justifyContent: "start", px: 2 } }, /* @__PURE__ */ React26.createElement(Stack17, { direction: "row", alignContent: "space-between", flexGrow: 1 }, /* @__PURE__ */ React26.createElement(Stack17, { direction: "row", alignItems: "center", justifyContent: "start", gap: 1, flexGrow: 1 }, /* @__PURE__ */ React26.createElement(ComponentsIcon4, { fontSize: "small", sx: { color: "text.tertiary" } }), /* @__PURE__ */ React26.createElement(PanelHeaderTitle2, null, component.name)), /* @__PURE__ */ React26.createElement(Tooltip4, { title: panelTitle }, /* @__PURE__ */ React26.createElement(IconButton6, { size: "tiny", onClick: handleEditComponent, "aria-label": panelTitle }, /* @__PURE__ */ React26.createElement(PencilIcon2, { fontSize: "tiny" }))))), /* @__PURE__ */ React26.createElement(PanelBody2, null, /* @__PURE__ */ React26.createElement(ControlAdornmentsProvider, { items: getFieldIndicators("settings") }, isEmpty ? /* @__PURE__ */ React26.createElement(EmptyState2, { onEditComponent: handleEditComponent }) : /* @__PURE__ */ React26.createElement(Stack17, { direction: "column", alignItems: "stretch" }, groups.map((group) => /* @__PURE__ */ React26.createElement(
3742
3736
  OverridePropsGroup,
3743
3737
  {
3744
3738
  key: group.id,
@@ -3819,10 +3813,10 @@ import { useBoundProp as useBoundProp3 } from "@elementor/editor-controls";
3819
3813
  import { useElement as useElement3 } from "@elementor/editor-editing-panel";
3820
3814
  import { getWidgetsCache as getWidgetsCache3 } from "@elementor/editor-elements";
3821
3815
  import { bindPopover as bindPopover2, bindTrigger as bindTrigger4, Popover as Popover4, Tooltip as Tooltip5, usePopupState as usePopupState4 } from "@elementor/ui";
3822
- import { __ as __25 } from "@wordpress/i18n";
3816
+ import { __ as __26 } from "@wordpress/i18n";
3823
3817
 
3824
3818
  // src/store/actions/set-overridable-prop.ts
3825
- import { __dispatch as dispatch13, __getState as getState17 } from "@elementor/store";
3819
+ import { __dispatch as dispatch14, __getState as getState17 } from "@elementor/store";
3826
3820
  import { generateUniqueId as generateUniqueId4 } from "@elementor/utils";
3827
3821
  function setOverridableProp({
3828
3822
  componentId,
@@ -3873,7 +3867,7 @@ function setOverridableProp({
3873
3867
  if (isChangingGroups) {
3874
3868
  groups = removePropFromGroup(groups, existingOverridableProp.groupId, overridableProp.overrideKey);
3875
3869
  }
3876
- dispatch13(
3870
+ dispatch14(
3877
3871
  slice.actions.setOverridableProps({
3878
3872
  componentId,
3879
3873
  overridableProps: {
@@ -3890,7 +3884,7 @@ import * as React29 from "react";
3890
3884
  import { forwardRef as forwardRef2 } from "react";
3891
3885
  import { CheckIcon, PlusIcon } from "@elementor/icons";
3892
3886
  import { Box as Box14, styled as styled4 } from "@elementor/ui";
3893
- import { __ as __24 } from "@wordpress/i18n";
3887
+ import { __ as __25 } from "@wordpress/i18n";
3894
3888
  var SIZE2 = "tiny";
3895
3889
  var IconContainer = styled4(Box14)`
3896
3890
  pointer-events: none;
@@ -3950,7 +3944,7 @@ var Indicator2 = forwardRef2(({ isOpen, isOverridable, ...props }, ref) => /* @_
3950
3944
  IconContainer,
3951
3945
  {
3952
3946
  className: "icon",
3953
- "aria-label": isOverridable ? __24("Overridable property", "elementor") : __24("Make prop overridable", "elementor")
3947
+ "aria-label": isOverridable ? __25("Overridable property", "elementor") : __25("Make prop overridable", "elementor")
3954
3948
  },
3955
3949
  isOverridable ? /* @__PURE__ */ React29.createElement(CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React29.createElement(PlusIcon, { fontSize: SIZE2 })
3956
3950
  )));
@@ -4021,7 +4015,7 @@ function Content2({ componentId, overridableProps }) {
4021
4015
  popupState.close();
4022
4016
  };
4023
4017
  const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
4024
- return /* @__PURE__ */ React30.createElement(React30.Fragment, null, /* @__PURE__ */ React30.createElement(Tooltip5, { placement: "top", title: __25("Override Property", "elementor") }, /* @__PURE__ */ React30.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React30.createElement(
4018
+ return /* @__PURE__ */ React30.createElement(React30.Fragment, null, /* @__PURE__ */ React30.createElement(Tooltip5, { placement: "top", title: __26("Override Property", "elementor") }, /* @__PURE__ */ React30.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React30.createElement(
4025
4019
  Popover4,
4026
4020
  {
4027
4021
  disableScrollLock: true,
@@ -4471,24 +4465,24 @@ function initMcp() {
4471
4465
 
4472
4466
  // src/populate-store.ts
4473
4467
  import { useEffect as useEffect6 } from "react";
4474
- import { __dispatch as dispatch14 } from "@elementor/store";
4468
+ import { __dispatch as dispatch15 } from "@elementor/store";
4475
4469
  function PopulateStore() {
4476
4470
  useEffect6(() => {
4477
- dispatch14(loadComponents());
4471
+ dispatch15(loadComponents());
4478
4472
  }, []);
4479
4473
  return null;
4480
4474
  }
4481
4475
 
4482
4476
  // src/prevent-circular-nesting.ts
4483
4477
  import { getAllDescendants as getAllDescendants4 } from "@elementor/editor-elements";
4484
- import { notify as notify3 } from "@elementor/editor-notifications";
4478
+ import { notify as notify4 } from "@elementor/editor-notifications";
4485
4479
  import { blockCommand as blockCommand2 } from "@elementor/editor-v1-adapters";
4486
4480
  import { __getState as getState19 } from "@elementor/store";
4487
- import { __ as __26 } from "@wordpress/i18n";
4481
+ import { __ as __27 } from "@wordpress/i18n";
4488
4482
  var COMPONENT_TYPE = "e-component";
4489
4483
  var COMPONENT_CIRCULAR_NESTING_ALERT = {
4490
4484
  type: "default",
4491
- message: __26("Can't add this component - components that contain each other can't be nested.", "elementor"),
4485
+ message: __27("Can't add this component - components that contain each other can't be nested.", "elementor"),
4492
4486
  id: "circular-component-nesting-blocked"
4493
4487
  };
4494
4488
  function initCircularNestingPrevention() {
@@ -4565,7 +4559,7 @@ function blockCircularCreate(args) {
4565
4559
  }
4566
4560
  const isBlocked = wouldCreateCircularNesting(componentId);
4567
4561
  if (isBlocked) {
4568
- notify3(COMPONENT_CIRCULAR_NESTING_ALERT);
4562
+ notify4(COMPONENT_CIRCULAR_NESTING_ALERT);
4569
4563
  }
4570
4564
  return isBlocked;
4571
4565
  }
@@ -4585,7 +4579,7 @@ function blockCircularMove(args) {
4585
4579
  });
4586
4580
  });
4587
4581
  if (hasCircularComponent) {
4588
- notify3(COMPONENT_CIRCULAR_NESTING_ALERT);
4582
+ notify4(COMPONENT_CIRCULAR_NESTING_ALERT);
4589
4583
  }
4590
4584
  return hasCircularComponent;
4591
4585
  }
@@ -4601,16 +4595,16 @@ function blockCircularPaste(args) {
4601
4595
  const allComponentIds = extractComponentIdsFromElements(data.clipboard.elements);
4602
4596
  const hasCircularComponent = allComponentIds.some(wouldCreateCircularNesting);
4603
4597
  if (hasCircularComponent) {
4604
- notify3(COMPONENT_CIRCULAR_NESTING_ALERT);
4598
+ notify4(COMPONENT_CIRCULAR_NESTING_ALERT);
4605
4599
  }
4606
4600
  return hasCircularComponent;
4607
4601
  }
4608
4602
 
4609
4603
  // src/store/actions/remove-component-styles.ts
4610
- import { __dispatch as dispatch15 } from "@elementor/store";
4604
+ import { __dispatch as dispatch16 } from "@elementor/store";
4611
4605
  function removeComponentStyles(id2) {
4612
4606
  apiClient.invalidateComponentConfigCache(id2);
4613
- dispatch15(slice.actions.removeStyles({ id: id2 }));
4607
+ dispatch16(slice.actions.removeStyles({ id: id2 }));
4614
4608
  }
4615
4609
 
4616
4610
  // src/store/components-styles-provider.ts
@@ -4637,7 +4631,7 @@ var componentsStylesProvider = createStylesProvider({
4637
4631
 
4638
4632
  // src/sync/create-components-before-save.ts
4639
4633
  import { updateElementSettings as updateElementSettings3 } from "@elementor/editor-elements";
4640
- import { __dispatch as dispatch16, __getState as getState21 } from "@elementor/store";
4634
+ import { __dispatch as dispatch17, __getState as getState21 } from "@elementor/store";
4641
4635
  async function createComponentsBeforeSave({
4642
4636
  elements,
4643
4637
  status
@@ -4649,7 +4643,7 @@ async function createComponentsBeforeSave({
4649
4643
  try {
4650
4644
  const uidToComponentId = await createComponents(unpublishedComponents, status);
4651
4645
  updateComponentInstances(elements, uidToComponentId);
4652
- dispatch16(
4646
+ dispatch17(
4653
4647
  slice.actions.add(
4654
4648
  unpublishedComponents.map((component) => ({
4655
4649
  id: uidToComponentId.get(component.uid),
@@ -4659,7 +4653,7 @@ async function createComponentsBeforeSave({
4659
4653
  }))
4660
4654
  )
4661
4655
  );
4662
- dispatch16(slice.actions.resetUnpublished());
4656
+ dispatch17(slice.actions.resetUnpublished());
4663
4657
  } catch (error) {
4664
4658
  throw new Error(`Failed to publish components and update component instances: ${error}`);
4665
4659
  }
@@ -4734,18 +4728,13 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
4734
4728
  };
4735
4729
 
4736
4730
  // src/sync/update-archived-component-before-save.ts
4737
- import { notify as notify4 } from "@elementor/editor-notifications";
4731
+ import { notify as notify5 } from "@elementor/editor-notifications";
4738
4732
  import { __getState as getState23 } from "@elementor/store";
4739
4733
  var failedNotification = (message) => ({
4740
4734
  type: "error",
4741
4735
  message: `Failed to archive components: ${message}`,
4742
4736
  id: "failed-archived-components-notification"
4743
4737
  });
4744
- var successNotification = (message) => ({
4745
- type: "success",
4746
- message: `Successfully archived components: ${message}`,
4747
- id: "success-archived-components-notification"
4748
- });
4749
4738
  var updateArchivedComponentBeforeSave = async () => {
4750
4739
  try {
4751
4740
  const archivedComponents = selectArchivedComponents(getState23());
@@ -4756,12 +4745,8 @@ var updateArchivedComponentBeforeSave = async () => {
4756
4745
  archivedComponents.map((component) => component.id)
4757
4746
  );
4758
4747
  const failedIds = result.failedIds.join(", ");
4759
- const successIds = result.successIds.join(", ");
4760
4748
  if (failedIds) {
4761
- notify4(failedNotification(failedIds));
4762
- }
4763
- if (successIds) {
4764
- notify4(successNotification(successIds));
4749
+ notify5(failedNotification(failedIds));
4765
4750
  }
4766
4751
  } catch (error) {
4767
4752
  throw new Error(`Failed to update archived components: ${error}`);
@@ -4769,7 +4754,7 @@ var updateArchivedComponentBeforeSave = async () => {
4769
4754
  };
4770
4755
 
4771
4756
  // src/sync/update-component-title-before-save.ts
4772
- import { __dispatch as dispatch17, __getState as getState24 } from "@elementor/store";
4757
+ import { __dispatch as dispatch18, __getState as getState24 } from "@elementor/store";
4773
4758
  var updateComponentTitleBeforeSave = async () => {
4774
4759
  const updatedComponentNames = selectUpdatedComponentNames(getState24());
4775
4760
  if (!updatedComponentNames.length) {
@@ -4777,7 +4762,7 @@ var updateComponentTitleBeforeSave = async () => {
4777
4762
  }
4778
4763
  const result = await apiClient.updateComponentTitle(updatedComponentNames);
4779
4764
  if (result.failedIds.length === 0) {
4780
- dispatch17(slice.actions.cleanUpdatedComponentNames());
4765
+ dispatch18(slice.actions.cleanUpdatedComponentNames());
4781
4766
  }
4782
4767
  };
4783
4768
 
@@ -4829,7 +4814,7 @@ function init() {
4829
4814
  window.elementorCommon.__beforeSave = beforeSave;
4830
4815
  injectTab({
4831
4816
  id: "components",
4832
- label: __27("Components", "elementor"),
4817
+ label: __28("Components", "elementor"),
4833
4818
  component: Components,
4834
4819
  position: 1
4835
4820
  });