@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.js +85 -100
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +113 -128
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -22
- package/src/components/components-tab/components-item.tsx +2 -2
- package/src/components/create-component-form/create-component-form.tsx +11 -31
- package/src/store/actions/archive-component.ts +11 -8
- package/src/store/store.ts +1 -1
- package/src/sync/update-archived-component-before-save.ts +0 -11
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
|
|
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
|
|
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
|
|
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
|
|
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 {
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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,
|
|
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:
|
|
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:
|
|
2221
|
+
message: __16("Component name is required.", "elementor")
|
|
2218
2222
|
}).refine((value) => value.length >= MIN_NAME_LENGTH, {
|
|
2219
|
-
message:
|
|
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
|
-
|
|
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" } },
|
|
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:
|
|
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 },
|
|
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
|
-
|
|
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 },
|
|
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" },
|
|
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
|
-
|
|
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 },
|
|
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" },
|
|
2646
|
-
/* @__PURE__ */ React16.createElement(Typography9, { align: "center", variant: "caption", color: "inherit" }, /* @__PURE__ */ React16.createElement(Link3, { color: "secondary", variant: "caption", component: "button", onClick: clearSearch },
|
|
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
|
|
2682
|
+
import { notify as notify3 } from "@elementor/editor-notifications";
|
|
2679
2683
|
import { Form as FormElement, ThemeProvider as ThemeProvider3 } from "@elementor/editor-ui";
|
|
2680
|
-
import {
|
|
2684
|
+
import { ComponentsIcon as ComponentsIcon3 } from "@elementor/icons";
|
|
2681
2685
|
import { __getState as getState15 } from "@elementor/store";
|
|
2682
|
-
import {
|
|
2683
|
-
import { __ as
|
|
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
|
|
2691
|
-
import { __ as
|
|
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:
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
2810
|
+
dispatch12(
|
|
2807
2811
|
slice.actions.addUnpublished({
|
|
2808
2812
|
...componentBase,
|
|
2809
2813
|
elements: [element]
|
|
2810
2814
|
})
|
|
2811
2815
|
);
|
|
2812
|
-
|
|
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
|
-
|
|
2916
|
+
notify3({
|
|
2914
2917
|
type: "default",
|
|
2915
|
-
message:
|
|
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
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
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 =
|
|
2961
|
-
|
|
2962
|
-
|
|
2962
|
+
const errorMessage = __20("Failed to create component. Please try again.", "elementor");
|
|
2963
|
+
notify3({
|
|
2964
|
+
type: "error",
|
|
2963
2965
|
message: errorMessage,
|
|
2964
|
-
|
|
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
|
-
)
|
|
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:
|
|
3032
|
-
name:
|
|
3033
|
-
cancel:
|
|
3034
|
-
create:
|
|
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(
|
|
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
|
|
3067
|
+
import { __getStore as getStore2 } from "@elementor/store";
|
|
3074
3068
|
function updateCurrentComponent({
|
|
3075
3069
|
path,
|
|
3076
3070
|
currentComponentId
|
|
3077
3071
|
}) {
|
|
3078
|
-
const
|
|
3079
|
-
if (!
|
|
3072
|
+
const dispatch19 = getStore2()?.dispatch;
|
|
3073
|
+
if (!dispatch19) {
|
|
3080
3074
|
return;
|
|
3081
3075
|
}
|
|
3082
|
-
|
|
3083
|
-
|
|
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
|
|
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":
|
|
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
|
|
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 =
|
|
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" },
|
|
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 },
|
|
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
|
|
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
|
|
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
|
|
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" },
|
|
3454
|
-
/* @__PURE__ */ React22.createElement(Typography12, { align: "center", variant: "caption", maxWidth: "170px" },
|
|
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" }),
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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(
|
|
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
|
|
3816
|
+
import { __ as __26 } from "@wordpress/i18n";
|
|
3823
3817
|
|
|
3824
3818
|
// src/store/actions/set-overridable-prop.ts
|
|
3825
|
-
import { __dispatch as
|
|
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
|
-
|
|
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
|
|
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 ?
|
|
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:
|
|
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
|
|
4468
|
+
import { __dispatch as dispatch15 } from "@elementor/store";
|
|
4475
4469
|
function PopulateStore() {
|
|
4476
4470
|
useEffect6(() => {
|
|
4477
|
-
|
|
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
|
|
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
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
4604
|
+
import { __dispatch as dispatch16 } from "@elementor/store";
|
|
4611
4605
|
function removeComponentStyles(id2) {
|
|
4612
4606
|
apiClient.invalidateComponentConfigCache(id2);
|
|
4613
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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:
|
|
4817
|
+
label: __28("Components", "elementor"),
|
|
4833
4818
|
component: Components,
|
|
4834
4819
|
position: 1
|
|
4835
4820
|
});
|