@elementor/editor-components 3.35.0-426 → 3.35.0-428
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 +157 -131
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +157 -131
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -22
- package/src/components/components-tab/components-item.tsx +18 -3
- package/src/components/components-tab/delete-confirmation-dialog.tsx +26 -0
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 __29 } from "@wordpress/i18n";
|
|
21
21
|
|
|
22
22
|
// src/component-instance-transformer.ts
|
|
23
23
|
import { createTransformer } from "@elementor/editor-canvas";
|
|
@@ -1628,7 +1628,7 @@ function getComponentName() {
|
|
|
1628
1628
|
}
|
|
1629
1629
|
|
|
1630
1630
|
// src/components/components-tab/components.tsx
|
|
1631
|
-
import * as
|
|
1631
|
+
import * as React18 from "react";
|
|
1632
1632
|
import { ThemeProvider as ThemeProvider2 } from "@elementor/editor-ui";
|
|
1633
1633
|
|
|
1634
1634
|
// src/hooks/use-components.ts
|
|
@@ -1688,12 +1688,12 @@ var ComponentSearch = () => {
|
|
|
1688
1688
|
};
|
|
1689
1689
|
|
|
1690
1690
|
// src/components/components-tab/components-list.tsx
|
|
1691
|
-
import * as
|
|
1692
|
-
import { useState as
|
|
1691
|
+
import * as React17 from "react";
|
|
1692
|
+
import { useState as useState7 } 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 __19 } 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";
|
|
@@ -2052,8 +2052,8 @@ function AngiePromotionCard({ onClose }) {
|
|
|
2052
2052
|
}
|
|
2053
2053
|
|
|
2054
2054
|
// src/components/components-tab/components-item.tsx
|
|
2055
|
-
import * as
|
|
2056
|
-
import { useRef as useRef4 } from "react";
|
|
2055
|
+
import * as React15 from "react";
|
|
2056
|
+
import { useRef as useRef4, useState as useState6 } from "react";
|
|
2057
2057
|
import { endDragElementFromPanel, startDragElementFromPanel } from "@elementor/editor-canvas";
|
|
2058
2058
|
import { dropElement } from "@elementor/editor-elements";
|
|
2059
2059
|
import { EditableField as EditableField2, EllipsisWithTooltip, MenuListItem as MenuListItem3, useEditable as useEditable2, WarningInfotip } from "@elementor/editor-ui";
|
|
@@ -2071,7 +2071,7 @@ import {
|
|
|
2071
2071
|
Typography as Typography8,
|
|
2072
2072
|
usePopupState as usePopupState3
|
|
2073
2073
|
} from "@elementor/ui";
|
|
2074
|
-
import { __ as
|
|
2074
|
+
import { __ as __18 } from "@wordpress/i18n";
|
|
2075
2075
|
|
|
2076
2076
|
// src/store/actions/archive-component.ts
|
|
2077
2077
|
import { setDocumentModifiedStatus as setDocumentModifiedStatus4 } from "@elementor/editor-documents";
|
|
@@ -2315,9 +2315,21 @@ var createComponentModel2 = (component) => {
|
|
|
2315
2315
|
};
|
|
2316
2316
|
};
|
|
2317
2317
|
|
|
2318
|
+
// src/components/components-tab/delete-confirmation-dialog.tsx
|
|
2319
|
+
import * as React14 from "react";
|
|
2320
|
+
import { ConfirmationDialog } from "@elementor/editor-ui";
|
|
2321
|
+
import { __ as __17 } from "@wordpress/i18n";
|
|
2322
|
+
function DeleteConfirmationDialog({ open, onClose, onConfirm }) {
|
|
2323
|
+
return /* @__PURE__ */ React14.createElement(ConfirmationDialog, { open, onClose }, /* @__PURE__ */ React14.createElement(ConfirmationDialog.Title, null, __17("Delete this component?", "elementor")), /* @__PURE__ */ React14.createElement(ConfirmationDialog.Content, null, /* @__PURE__ */ React14.createElement(ConfirmationDialog.ContentText, null, __17(
|
|
2324
|
+
"Existing instances on your pages will remain functional. You will no longer find this component in your list.",
|
|
2325
|
+
"elementor"
|
|
2326
|
+
))), /* @__PURE__ */ React14.createElement(ConfirmationDialog.Actions, { onClose, onConfirm }));
|
|
2327
|
+
}
|
|
2328
|
+
|
|
2318
2329
|
// src/components/components-tab/components-item.tsx
|
|
2319
2330
|
var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
|
|
2320
2331
|
const itemRef = useRef4(null);
|
|
2332
|
+
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState6(false);
|
|
2321
2333
|
const {
|
|
2322
2334
|
ref: editableRef,
|
|
2323
2335
|
isEditing,
|
|
@@ -2341,14 +2353,21 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
|
|
|
2341
2353
|
loadComponentsAssets([componentModel]);
|
|
2342
2354
|
endDragElementFromPanel();
|
|
2343
2355
|
};
|
|
2344
|
-
const
|
|
2356
|
+
const handleDeleteClick = () => {
|
|
2345
2357
|
popupState.close();
|
|
2358
|
+
setIsDeleteDialogOpen(true);
|
|
2359
|
+
};
|
|
2360
|
+
const handleDeleteConfirm = () => {
|
|
2346
2361
|
if (!component.id) {
|
|
2347
2362
|
throw new Error("Component ID is required");
|
|
2348
2363
|
}
|
|
2364
|
+
setIsDeleteDialogOpen(false);
|
|
2349
2365
|
archiveComponent(component.id, component.name);
|
|
2350
2366
|
};
|
|
2351
|
-
|
|
2367
|
+
const handleDeleteDialogClose = () => {
|
|
2368
|
+
setIsDeleteDialogOpen(false);
|
|
2369
|
+
};
|
|
2370
|
+
return /* @__PURE__ */ React15.createElement(Stack8, null, /* @__PURE__ */ React15.createElement(
|
|
2352
2371
|
WarningInfotip,
|
|
2353
2372
|
{
|
|
2354
2373
|
open: Boolean(error),
|
|
@@ -2357,7 +2376,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
|
|
|
2357
2376
|
width: itemRef.current?.getBoundingClientRect().width,
|
|
2358
2377
|
offset: [0, -15]
|
|
2359
2378
|
},
|
|
2360
|
-
/* @__PURE__ */
|
|
2379
|
+
/* @__PURE__ */ React15.createElement(
|
|
2361
2380
|
ListItemButton,
|
|
2362
2381
|
{
|
|
2363
2382
|
draggable: true,
|
|
@@ -2376,7 +2395,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
|
|
|
2376
2395
|
gap: 1
|
|
2377
2396
|
}
|
|
2378
2397
|
},
|
|
2379
|
-
/* @__PURE__ */
|
|
2398
|
+
/* @__PURE__ */ React15.createElement(
|
|
2380
2399
|
Box9,
|
|
2381
2400
|
{
|
|
2382
2401
|
display: "flex",
|
|
@@ -2386,8 +2405,8 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
|
|
|
2386
2405
|
flexGrow: 1,
|
|
2387
2406
|
onClick: handleClick
|
|
2388
2407
|
},
|
|
2389
|
-
/* @__PURE__ */
|
|
2390
|
-
/* @__PURE__ */
|
|
2408
|
+
/* @__PURE__ */ React15.createElement(ListItemIcon, { size: "tiny" }, /* @__PURE__ */ React15.createElement(ComponentsIcon, { fontSize: "tiny" })),
|
|
2409
|
+
/* @__PURE__ */ React15.createElement(Indicator, { isActive: isEditing, isError: !!error }, /* @__PURE__ */ React15.createElement(Box9, { display: "flex", flex: 1, minWidth: 0, flexGrow: 1 }, isEditing ? /* @__PURE__ */ React15.createElement(
|
|
2391
2410
|
EditableField2,
|
|
2392
2411
|
{
|
|
2393
2412
|
ref: editableRef,
|
|
@@ -2395,7 +2414,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
|
|
|
2395
2414
|
variant: "caption",
|
|
2396
2415
|
...getEditableProps()
|
|
2397
2416
|
}
|
|
2398
|
-
) : /* @__PURE__ */
|
|
2417
|
+
) : /* @__PURE__ */ React15.createElement(
|
|
2399
2418
|
EllipsisWithTooltip,
|
|
2400
2419
|
{
|
|
2401
2420
|
title: component.name,
|
|
@@ -2405,9 +2424,9 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
|
|
|
2405
2424
|
}
|
|
2406
2425
|
)))
|
|
2407
2426
|
),
|
|
2408
|
-
/* @__PURE__ */
|
|
2427
|
+
/* @__PURE__ */ React15.createElement(IconButton5, { size: "tiny", ...bindTrigger3(popupState), "aria-label": "More actions" }, /* @__PURE__ */ React15.createElement(DotsVerticalIcon2, { fontSize: "tiny" }))
|
|
2409
2428
|
)
|
|
2410
|
-
), /* @__PURE__ */
|
|
2429
|
+
), /* @__PURE__ */ React15.createElement(
|
|
2411
2430
|
Menu2,
|
|
2412
2431
|
{
|
|
2413
2432
|
...bindMenu2(popupState),
|
|
@@ -2420,7 +2439,7 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
|
|
|
2420
2439
|
horizontal: "right"
|
|
2421
2440
|
}
|
|
2422
2441
|
},
|
|
2423
|
-
/* @__PURE__ */
|
|
2442
|
+
/* @__PURE__ */ React15.createElement(
|
|
2424
2443
|
MenuListItem3,
|
|
2425
2444
|
{
|
|
2426
2445
|
sx: { minWidth: "160px" },
|
|
@@ -2429,9 +2448,16 @@ var ComponentItem = ({ component, renameComponent: renameComponent2 }) => {
|
|
|
2429
2448
|
openEditMode();
|
|
2430
2449
|
}
|
|
2431
2450
|
},
|
|
2432
|
-
|
|
2451
|
+
__18("Rename", "elementor")
|
|
2433
2452
|
),
|
|
2434
|
-
/* @__PURE__ */
|
|
2453
|
+
/* @__PURE__ */ React15.createElement(MenuListItem3, { sx: { minWidth: "160px" }, onClick: handleDeleteClick }, /* @__PURE__ */ React15.createElement(Typography8, { variant: "caption", sx: { color: "error.light" } }, __18("Delete", "elementor")))
|
|
2454
|
+
), /* @__PURE__ */ React15.createElement(
|
|
2455
|
+
DeleteConfirmationDialog,
|
|
2456
|
+
{
|
|
2457
|
+
open: isDeleteDialogOpen,
|
|
2458
|
+
onClose: handleDeleteDialogClose,
|
|
2459
|
+
onConfirm: handleDeleteConfirm
|
|
2460
|
+
}
|
|
2435
2461
|
));
|
|
2436
2462
|
};
|
|
2437
2463
|
var addComponentToPage = (model) => {
|
|
@@ -2476,12 +2502,12 @@ var getIndicatorBorder = ({ isActive, isError, theme }) => {
|
|
|
2476
2502
|
};
|
|
2477
2503
|
|
|
2478
2504
|
// src/components/components-tab/loading-components.tsx
|
|
2479
|
-
import * as
|
|
2505
|
+
import * as React16 from "react";
|
|
2480
2506
|
import { Box as Box10, ListItemButton as ListItemButton2, Skeleton, Stack as Stack9 } from "@elementor/ui";
|
|
2481
2507
|
var ROWS_COUNT = 6;
|
|
2482
2508
|
var rows = Array.from({ length: ROWS_COUNT }, (_, index) => index);
|
|
2483
2509
|
var LoadingComponents = () => {
|
|
2484
|
-
return /* @__PURE__ */
|
|
2510
|
+
return /* @__PURE__ */ React16.createElement(
|
|
2485
2511
|
Stack9,
|
|
2486
2512
|
{
|
|
2487
2513
|
"aria-label": "Loading components",
|
|
@@ -2503,14 +2529,14 @@ var LoadingComponents = () => {
|
|
|
2503
2529
|
}
|
|
2504
2530
|
}
|
|
2505
2531
|
},
|
|
2506
|
-
rows.map((row) => /* @__PURE__ */
|
|
2532
|
+
rows.map((row) => /* @__PURE__ */ React16.createElement(
|
|
2507
2533
|
ListItemButton2,
|
|
2508
2534
|
{
|
|
2509
2535
|
key: row,
|
|
2510
2536
|
sx: { border: "solid 1px", borderColor: "divider", py: 0.5, px: 1 },
|
|
2511
2537
|
shape: "rounded"
|
|
2512
2538
|
},
|
|
2513
|
-
/* @__PURE__ */
|
|
2539
|
+
/* @__PURE__ */ React16.createElement(Box10, { display: "flex", gap: 1, width: "100%" }, /* @__PURE__ */ React16.createElement(Skeleton, { variant: "text", width: "24px", height: "36px" }), /* @__PURE__ */ React16.createElement(Skeleton, { variant: "text", width: "100%", height: "36px" }))
|
|
2514
2540
|
))
|
|
2515
2541
|
);
|
|
2516
2542
|
};
|
|
@@ -2524,16 +2550,16 @@ var SUBTITLE_OVERRIDE_SX = {
|
|
|
2524
2550
|
function ComponentsList() {
|
|
2525
2551
|
const { components, isLoading, searchValue } = useFilteredComponents();
|
|
2526
2552
|
if (isLoading) {
|
|
2527
|
-
return /* @__PURE__ */
|
|
2553
|
+
return /* @__PURE__ */ React17.createElement(LoadingComponents, null);
|
|
2528
2554
|
}
|
|
2529
2555
|
const isEmpty = !components || components.length === 0;
|
|
2530
2556
|
if (isEmpty) {
|
|
2531
2557
|
if (searchValue.length > 0) {
|
|
2532
|
-
return /* @__PURE__ */
|
|
2558
|
+
return /* @__PURE__ */ React17.createElement(EmptySearchResult, null);
|
|
2533
2559
|
}
|
|
2534
|
-
return /* @__PURE__ */
|
|
2560
|
+
return /* @__PURE__ */ React17.createElement(EmptyState, null);
|
|
2535
2561
|
}
|
|
2536
|
-
return /* @__PURE__ */
|
|
2562
|
+
return /* @__PURE__ */ React17.createElement(List3, { sx: { display: "flex", flexDirection: "column", gap: 1, px: 2 } }, components.map((component) => /* @__PURE__ */ React17.createElement(
|
|
2537
2563
|
ComponentItem,
|
|
2538
2564
|
{
|
|
2539
2565
|
key: component.uid,
|
|
@@ -2545,12 +2571,12 @@ function ComponentsList() {
|
|
|
2545
2571
|
)));
|
|
2546
2572
|
}
|
|
2547
2573
|
var EmptyState = () => {
|
|
2548
|
-
const [isAngieModalOpen, setIsAngieModalOpen] =
|
|
2574
|
+
const [isAngieModalOpen, setIsAngieModalOpen] = useState7(false);
|
|
2549
2575
|
const handleCreateWithAI = () => {
|
|
2550
2576
|
const sdk = getAngieSdk();
|
|
2551
2577
|
if (sdk.isAngieReady()) {
|
|
2552
2578
|
sdk.triggerAngie({
|
|
2553
|
-
prompt:
|
|
2579
|
+
prompt: __19(
|
|
2554
2580
|
"Create a [hero/testimonial/product card/CTA/feature] component for my [business type]. Include [describe what you want]",
|
|
2555
2581
|
"elementor"
|
|
2556
2582
|
),
|
|
@@ -2560,7 +2586,7 @@ var EmptyState = () => {
|
|
|
2560
2586
|
setIsAngieModalOpen(true);
|
|
2561
2587
|
}
|
|
2562
2588
|
};
|
|
2563
|
-
return /* @__PURE__ */
|
|
2589
|
+
return /* @__PURE__ */ React17.createElement(
|
|
2564
2590
|
Stack10,
|
|
2565
2591
|
{
|
|
2566
2592
|
alignItems: "center",
|
|
@@ -2570,7 +2596,7 @@ var EmptyState = () => {
|
|
|
2570
2596
|
gap: 2,
|
|
2571
2597
|
overflow: "hidden"
|
|
2572
2598
|
},
|
|
2573
|
-
/* @__PURE__ */
|
|
2599
|
+
/* @__PURE__ */ React17.createElement(Stack10, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React17.createElement(ComponentsIcon2, { fontSize: "large", sx: { color: "text.secondary" } }), /* @__PURE__ */ React17.createElement(Typography9, { align: "center", variant: "subtitle2", color: "text.secondary", sx: SUBTITLE_OVERRIDE_SX }, __19("No components yet", "elementor")), /* @__PURE__ */ React17.createElement(Typography9, { align: "center", variant: "caption", color: "secondary", sx: { maxWidth: 200 } }, __19("Components are reusable blocks that sync across your site.", "elementor"), /* @__PURE__ */ React17.createElement("br", null), __19("Create once, use everywhere.", "elementor")), /* @__PURE__ */ React17.createElement(
|
|
2574
2600
|
Link3,
|
|
2575
2601
|
{
|
|
2576
2602
|
href: LEARN_MORE_URL,
|
|
@@ -2579,28 +2605,28 @@ var EmptyState = () => {
|
|
|
2579
2605
|
variant: "caption",
|
|
2580
2606
|
color: "info.main"
|
|
2581
2607
|
},
|
|
2582
|
-
|
|
2608
|
+
__19("Learn more about components", "elementor")
|
|
2583
2609
|
)),
|
|
2584
|
-
/* @__PURE__ */
|
|
2585
|
-
/* @__PURE__ */
|
|
2610
|
+
/* @__PURE__ */ React17.createElement(Divider3, { sx: { width: "100%" } }),
|
|
2611
|
+
/* @__PURE__ */ React17.createElement(Stack10, { alignItems: "center", gap: 1, width: "100%" }, /* @__PURE__ */ React17.createElement(Typography9, { align: "center", variant: "subtitle2", color: "text.secondary", sx: SUBTITLE_OVERRIDE_SX }, __19("Create your first one:", "elementor")), /* @__PURE__ */ React17.createElement(Typography9, { align: "center", variant: "caption", color: "secondary", sx: { maxWidth: 228 } }, __19(
|
|
2586
2612
|
'Right-click any div-block or flexbox on your canvas or structure and select "Create component"',
|
|
2587
2613
|
"elementor"
|
|
2588
|
-
)), /* @__PURE__ */
|
|
2614
|
+
)), /* @__PURE__ */ React17.createElement(Typography9, { align: "center", variant: "caption", color: "secondary" }, __19("Or", "elementor")), /* @__PURE__ */ React17.createElement(AngiePromotionModal, { open: isAngieModalOpen, onClose: () => setIsAngieModalOpen(false) }, /* @__PURE__ */ React17.createElement(
|
|
2589
2615
|
Button4,
|
|
2590
2616
|
{
|
|
2591
2617
|
color: "secondary",
|
|
2592
2618
|
variant: "outlined",
|
|
2593
2619
|
size: "small",
|
|
2594
2620
|
onClick: handleCreateWithAI,
|
|
2595
|
-
endIcon: /* @__PURE__ */
|
|
2621
|
+
endIcon: /* @__PURE__ */ React17.createElement(AIIcon, null)
|
|
2596
2622
|
},
|
|
2597
|
-
|
|
2623
|
+
__19("Create component with AI", "elementor")
|
|
2598
2624
|
)))
|
|
2599
2625
|
);
|
|
2600
2626
|
};
|
|
2601
2627
|
var EmptySearchResult = () => {
|
|
2602
2628
|
const { searchValue, clearSearch } = useSearch();
|
|
2603
|
-
return /* @__PURE__ */
|
|
2629
|
+
return /* @__PURE__ */ React17.createElement(
|
|
2604
2630
|
Stack10,
|
|
2605
2631
|
{
|
|
2606
2632
|
color: "text.secondary",
|
|
@@ -2610,16 +2636,16 @@ var EmptySearchResult = () => {
|
|
|
2610
2636
|
overflow: "hidden",
|
|
2611
2637
|
justifySelf: "center"
|
|
2612
2638
|
},
|
|
2613
|
-
/* @__PURE__ */
|
|
2614
|
-
/* @__PURE__ */
|
|
2639
|
+
/* @__PURE__ */ React17.createElement(ComponentsIcon2, null),
|
|
2640
|
+
/* @__PURE__ */ React17.createElement(
|
|
2615
2641
|
Box11,
|
|
2616
2642
|
{
|
|
2617
2643
|
sx: {
|
|
2618
2644
|
width: "100%"
|
|
2619
2645
|
}
|
|
2620
2646
|
},
|
|
2621
|
-
/* @__PURE__ */
|
|
2622
|
-
searchValue && /* @__PURE__ */
|
|
2647
|
+
/* @__PURE__ */ React17.createElement(Typography9, { align: "center", variant: "subtitle2", color: "inherit", sx: SUBTITLE_OVERRIDE_SX }, __19("Sorry, nothing matched", "elementor")),
|
|
2648
|
+
searchValue && /* @__PURE__ */ React17.createElement(
|
|
2623
2649
|
Typography9,
|
|
2624
2650
|
{
|
|
2625
2651
|
variant: "subtitle2",
|
|
@@ -2631,8 +2657,8 @@ var EmptySearchResult = () => {
|
|
|
2631
2657
|
justifyContent: "center"
|
|
2632
2658
|
}
|
|
2633
2659
|
},
|
|
2634
|
-
/* @__PURE__ */
|
|
2635
|
-
/* @__PURE__ */
|
|
2660
|
+
/* @__PURE__ */ React17.createElement("span", null, "\u201C"),
|
|
2661
|
+
/* @__PURE__ */ React17.createElement(
|
|
2636
2662
|
"span",
|
|
2637
2663
|
{
|
|
2638
2664
|
style: {
|
|
@@ -2643,11 +2669,11 @@ var EmptySearchResult = () => {
|
|
|
2643
2669
|
},
|
|
2644
2670
|
searchValue
|
|
2645
2671
|
),
|
|
2646
|
-
/* @__PURE__ */
|
|
2672
|
+
/* @__PURE__ */ React17.createElement("span", null, "\u201D.")
|
|
2647
2673
|
)
|
|
2648
2674
|
),
|
|
2649
|
-
/* @__PURE__ */
|
|
2650
|
-
/* @__PURE__ */
|
|
2675
|
+
/* @__PURE__ */ React17.createElement(Typography9, { align: "center", variant: "caption", color: "inherit" }, __19("Try something else.", "elementor")),
|
|
2676
|
+
/* @__PURE__ */ React17.createElement(Typography9, { align: "center", variant: "caption", color: "inherit" }, /* @__PURE__ */ React17.createElement(Link3, { color: "secondary", variant: "caption", component: "button", onClick: clearSearch }, __19("Clear & try again", "elementor")))
|
|
2651
2677
|
);
|
|
2652
2678
|
};
|
|
2653
2679
|
var useFilteredComponents = () => {
|
|
@@ -2666,25 +2692,25 @@ var useFilteredComponents = () => {
|
|
|
2666
2692
|
var ComponentsContent = () => {
|
|
2667
2693
|
const { components, isLoading } = useComponents();
|
|
2668
2694
|
const hasComponents = !isLoading && components.length > 0;
|
|
2669
|
-
return /* @__PURE__ */
|
|
2695
|
+
return /* @__PURE__ */ React18.createElement(React18.Fragment, null, hasComponents && /* @__PURE__ */ React18.createElement(ComponentSearch, null), /* @__PURE__ */ React18.createElement(ComponentsList, null));
|
|
2670
2696
|
};
|
|
2671
2697
|
var Components = () => {
|
|
2672
|
-
return /* @__PURE__ */
|
|
2698
|
+
return /* @__PURE__ */ React18.createElement(ThemeProvider2, null, /* @__PURE__ */ React18.createElement(SearchProvider, { localStorageKey: "elementor-components-search" }, /* @__PURE__ */ React18.createElement(ComponentsContent, null)));
|
|
2673
2699
|
};
|
|
2674
2700
|
|
|
2675
2701
|
// src/components/consts.ts
|
|
2676
2702
|
var COMPONENT_DOCUMENT_TYPE = "elementor_component";
|
|
2677
2703
|
|
|
2678
2704
|
// src/components/create-component-form/create-component-form.tsx
|
|
2679
|
-
import * as
|
|
2680
|
-
import { useEffect as useEffect2, useMemo as useMemo3, useRef as useRef5, useState as
|
|
2705
|
+
import * as React19 from "react";
|
|
2706
|
+
import { useEffect as useEffect2, useMemo as useMemo3, useRef as useRef5, useState as useState9 } from "react";
|
|
2681
2707
|
import { getElementLabel } from "@elementor/editor-elements";
|
|
2682
2708
|
import { notify as notify3 } from "@elementor/editor-notifications";
|
|
2683
2709
|
import { Form as FormElement, ThemeProvider as ThemeProvider3 } from "@elementor/editor-ui";
|
|
2684
2710
|
import { ComponentsIcon as ComponentsIcon3 } from "@elementor/icons";
|
|
2685
2711
|
import { __getState as getState15 } from "@elementor/store";
|
|
2686
2712
|
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
|
|
2713
|
+
import { __ as __21 } from "@wordpress/i18n";
|
|
2688
2714
|
|
|
2689
2715
|
// src/prevent-non-atomic-nesting.ts
|
|
2690
2716
|
import { isAtomicWidget } from "@elementor/editor-canvas";
|
|
@@ -2692,10 +2718,10 @@ import { getAllDescendants as getAllDescendants2, getElementType } from "@elemen
|
|
|
2692
2718
|
import { notify as notify2 } from "@elementor/editor-notifications";
|
|
2693
2719
|
import { blockCommand } from "@elementor/editor-v1-adapters";
|
|
2694
2720
|
import { __getStore as getStore } from "@elementor/store";
|
|
2695
|
-
import { __ as
|
|
2721
|
+
import { __ as __20 } from "@wordpress/i18n";
|
|
2696
2722
|
var NON_ATOMIC_ELEMENT_ALERT = {
|
|
2697
2723
|
type: "default",
|
|
2698
|
-
message:
|
|
2724
|
+
message: __20("This widget isn't compatible with components. Use atomic elements instead.", "elementor"),
|
|
2699
2725
|
id: "non-atomic-element-blocked"
|
|
2700
2726
|
};
|
|
2701
2727
|
function initNonAtomicNestingPrevention() {
|
|
@@ -2826,10 +2852,10 @@ async function createUnpublishedComponent(name, element, eventData, overridableP
|
|
|
2826
2852
|
}
|
|
2827
2853
|
|
|
2828
2854
|
// src/components/create-component-form/hooks/use-form.ts
|
|
2829
|
-
import { useMemo as useMemo2, useState as
|
|
2855
|
+
import { useMemo as useMemo2, useState as useState8 } from "react";
|
|
2830
2856
|
var useForm = (initialValues) => {
|
|
2831
|
-
const [values, setValues] =
|
|
2832
|
-
const [errors, setErrors] =
|
|
2857
|
+
const [values, setValues] = useState8(initialValues);
|
|
2858
|
+
const [errors, setErrors] = useState8({});
|
|
2833
2859
|
const isValid = useMemo2(() => {
|
|
2834
2860
|
return !Object.values(errors).some((error) => error);
|
|
2835
2861
|
}, [errors]);
|
|
@@ -2905,8 +2931,8 @@ function countNestedElements(container) {
|
|
|
2905
2931
|
|
|
2906
2932
|
// src/components/create-component-form/create-component-form.tsx
|
|
2907
2933
|
function CreateComponentForm() {
|
|
2908
|
-
const [element, setElement] =
|
|
2909
|
-
const [anchorPosition, setAnchorPosition] =
|
|
2934
|
+
const [element, setElement] = useState9(null);
|
|
2935
|
+
const [anchorPosition, setAnchorPosition] = useState9();
|
|
2910
2936
|
const eventData = useRef5(null);
|
|
2911
2937
|
useEffect2(() => {
|
|
2912
2938
|
const OPEN_SAVE_AS_COMPONENT_FORM_EVENT = "elementor/editor/open-save-as-component-form";
|
|
@@ -2915,7 +2941,7 @@ function CreateComponentForm() {
|
|
|
2915
2941
|
if (nonAtomicElements.length > 0) {
|
|
2916
2942
|
notify3({
|
|
2917
2943
|
type: "default",
|
|
2918
|
-
message:
|
|
2944
|
+
message: __21(
|
|
2919
2945
|
"Components require atomic elements only. Remove widgets to create this component.",
|
|
2920
2946
|
"elementor"
|
|
2921
2947
|
),
|
|
@@ -2954,12 +2980,12 @@ function CreateComponentForm() {
|
|
|
2954
2980
|
}
|
|
2955
2981
|
notify3({
|
|
2956
2982
|
type: "success",
|
|
2957
|
-
message:
|
|
2983
|
+
message: __21("Component created successfully.", "elementor"),
|
|
2958
2984
|
id: `component-saved-successfully-${uid}`
|
|
2959
2985
|
});
|
|
2960
2986
|
resetAndClosePopup();
|
|
2961
2987
|
} catch {
|
|
2962
|
-
const errorMessage =
|
|
2988
|
+
const errorMessage = __21("Failed to create component. Please try again.", "elementor");
|
|
2963
2989
|
notify3({
|
|
2964
2990
|
type: "error",
|
|
2965
2991
|
message: errorMessage,
|
|
@@ -2978,7 +3004,7 @@ function CreateComponentForm() {
|
|
|
2978
3004
|
...eventData.current
|
|
2979
3005
|
});
|
|
2980
3006
|
};
|
|
2981
|
-
return /* @__PURE__ */
|
|
3007
|
+
return /* @__PURE__ */ React19.createElement(ThemeProvider3, null, /* @__PURE__ */ React19.createElement(
|
|
2982
3008
|
Popover3,
|
|
2983
3009
|
{
|
|
2984
3010
|
open: element !== null,
|
|
@@ -2986,7 +3012,7 @@ function CreateComponentForm() {
|
|
|
2986
3012
|
anchorReference: "anchorPosition",
|
|
2987
3013
|
anchorPosition
|
|
2988
3014
|
},
|
|
2989
|
-
element !== null && /* @__PURE__ */
|
|
3015
|
+
element !== null && /* @__PURE__ */ React19.createElement(
|
|
2990
3016
|
Form2,
|
|
2991
3017
|
{
|
|
2992
3018
|
initialValues: { componentName: element.elementLabel },
|
|
@@ -3022,13 +3048,13 @@ var Form2 = ({
|
|
|
3022
3048
|
}
|
|
3023
3049
|
};
|
|
3024
3050
|
const texts = {
|
|
3025
|
-
heading:
|
|
3026
|
-
name:
|
|
3027
|
-
cancel:
|
|
3028
|
-
create:
|
|
3051
|
+
heading: __21("Create component", "elementor"),
|
|
3052
|
+
name: __21("Name", "elementor"),
|
|
3053
|
+
cancel: __21("Cancel", "elementor"),
|
|
3054
|
+
create: __21("Create", "elementor")
|
|
3029
3055
|
};
|
|
3030
3056
|
const nameInputId = "component-name";
|
|
3031
|
-
return /* @__PURE__ */
|
|
3057
|
+
return /* @__PURE__ */ React19.createElement(FormElement, { onSubmit: handleSubmit }, /* @__PURE__ */ React19.createElement(Stack11, { alignItems: "start", width: "268px" }, /* @__PURE__ */ React19.createElement(
|
|
3032
3058
|
Stack11,
|
|
3033
3059
|
{
|
|
3034
3060
|
direction: "row",
|
|
@@ -3037,9 +3063,9 @@ var Form2 = ({
|
|
|
3037
3063
|
px: 1.5,
|
|
3038
3064
|
sx: { columnGap: 0.5, borderBottom: "1px solid", borderColor: "divider", width: "100%" }
|
|
3039
3065
|
},
|
|
3040
|
-
/* @__PURE__ */
|
|
3041
|
-
/* @__PURE__ */
|
|
3042
|
-
), /* @__PURE__ */
|
|
3066
|
+
/* @__PURE__ */ React19.createElement(ComponentsIcon3, { fontSize: FONT_SIZE }),
|
|
3067
|
+
/* @__PURE__ */ React19.createElement(Typography10, { variant: "caption", sx: { color: "text.primary", fontWeight: "500", lineHeight: 1 } }, texts.heading)
|
|
3068
|
+
), /* @__PURE__ */ React19.createElement(Grid2, { container: true, gap: 0.75, alignItems: "start", p: 1.5 }, /* @__PURE__ */ React19.createElement(Grid2, { item: true, xs: 12 }, /* @__PURE__ */ React19.createElement(FormLabel2, { htmlFor: nameInputId, size: "tiny" }, texts.name)), /* @__PURE__ */ React19.createElement(Grid2, { item: true, xs: 12 }, /* @__PURE__ */ React19.createElement(
|
|
3043
3069
|
TextField3,
|
|
3044
3070
|
{
|
|
3045
3071
|
id: nameInputId,
|
|
@@ -3051,11 +3077,11 @@ var Form2 = ({
|
|
|
3051
3077
|
error: Boolean(errors.componentName),
|
|
3052
3078
|
helperText: errors.componentName
|
|
3053
3079
|
}
|
|
3054
|
-
))), /* @__PURE__ */
|
|
3080
|
+
))), /* @__PURE__ */ React19.createElement(Stack11, { direction: "row", justifyContent: "flex-end", alignSelf: "end", py: 1, px: 1.5 }, /* @__PURE__ */ React19.createElement(Button5, { onClick: closePopup, color: "secondary", variant: "text", size: "small" }, texts.cancel), /* @__PURE__ */ React19.createElement(Button5, { type: "submit", disabled: !isValid, variant: "contained", color: "primary", size: "small" }, texts.create))));
|
|
3055
3081
|
};
|
|
3056
3082
|
|
|
3057
3083
|
// src/components/edit-component/edit-component.tsx
|
|
3058
|
-
import * as
|
|
3084
|
+
import * as React21 from "react";
|
|
3059
3085
|
import { useEffect as useEffect5 } from "react";
|
|
3060
3086
|
import { getV1DocumentsManager as getV1DocumentsManager5 } from "@elementor/editor-documents";
|
|
3061
3087
|
import { __privateListenTo as listenTo, commandEndEvent as commandEndEvent2 } from "@elementor/editor-v1-adapters";
|
|
@@ -3078,10 +3104,10 @@ function updateCurrentComponent({
|
|
|
3078
3104
|
}
|
|
3079
3105
|
|
|
3080
3106
|
// src/components/edit-component/component-modal.tsx
|
|
3081
|
-
import * as
|
|
3107
|
+
import * as React20 from "react";
|
|
3082
3108
|
import { useEffect as useEffect4 } from "react";
|
|
3083
3109
|
import { createPortal } from "react-dom";
|
|
3084
|
-
import { __ as
|
|
3110
|
+
import { __ as __22 } from "@wordpress/i18n";
|
|
3085
3111
|
|
|
3086
3112
|
// src/hooks/use-canvas-document.ts
|
|
3087
3113
|
import { getCanvasIframeDocument } from "@elementor/editor-canvas";
|
|
@@ -3091,10 +3117,10 @@ function useCanvasDocument() {
|
|
|
3091
3117
|
}
|
|
3092
3118
|
|
|
3093
3119
|
// src/hooks/use-element-rect.ts
|
|
3094
|
-
import { useEffect as useEffect3, useState as
|
|
3120
|
+
import { useEffect as useEffect3, useState as useState10 } from "react";
|
|
3095
3121
|
import { throttle } from "@elementor/utils";
|
|
3096
3122
|
function useElementRect(element) {
|
|
3097
|
-
const [rect, setRect] =
|
|
3123
|
+
const [rect, setRect] = useState10(new DOMRect(0, 0, 0, 0));
|
|
3098
3124
|
const onChange = throttle(
|
|
3099
3125
|
() => {
|
|
3100
3126
|
setRect(element?.getBoundingClientRect() ?? new DOMRect(0, 0, 0, 0));
|
|
@@ -3171,7 +3197,7 @@ function ComponentModal({ element, onClose }) {
|
|
|
3171
3197
|
return null;
|
|
3172
3198
|
}
|
|
3173
3199
|
return createPortal(
|
|
3174
|
-
/* @__PURE__ */
|
|
3200
|
+
/* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(BlockEditPage, null), /* @__PURE__ */ React20.createElement(Backdrop, { canvas: canvasDocument, element, onClose })),
|
|
3175
3201
|
canvasDocument.body
|
|
3176
3202
|
);
|
|
3177
3203
|
}
|
|
@@ -3195,7 +3221,7 @@ function Backdrop({ canvas, element, onClose }) {
|
|
|
3195
3221
|
onClose();
|
|
3196
3222
|
}
|
|
3197
3223
|
};
|
|
3198
|
-
return /* @__PURE__ */
|
|
3224
|
+
return /* @__PURE__ */ React20.createElement(
|
|
3199
3225
|
"div",
|
|
3200
3226
|
{
|
|
3201
3227
|
style: backdropStyle,
|
|
@@ -3203,7 +3229,7 @@ function Backdrop({ canvas, element, onClose }) {
|
|
|
3203
3229
|
onKeyDown: handleKeyDown,
|
|
3204
3230
|
role: "button",
|
|
3205
3231
|
tabIndex: 0,
|
|
3206
|
-
"aria-label":
|
|
3232
|
+
"aria-label": __22("Exit component editing mode", "elementor")
|
|
3207
3233
|
}
|
|
3208
3234
|
);
|
|
3209
3235
|
}
|
|
@@ -3253,7 +3279,7 @@ function BlockEditPage() {
|
|
|
3253
3279
|
}
|
|
3254
3280
|
}
|
|
3255
3281
|
`;
|
|
3256
|
-
return /* @__PURE__ */
|
|
3282
|
+
return /* @__PURE__ */ React20.createElement("style", { "data-e-style-id": "e-block-v3-document-handles-styles" }, blockV3DocumentHandlesStyles);
|
|
3257
3283
|
}
|
|
3258
3284
|
|
|
3259
3285
|
// src/components/edit-component/edit-component.tsx
|
|
@@ -3266,7 +3292,7 @@ function EditComponent() {
|
|
|
3266
3292
|
if (!elementDom) {
|
|
3267
3293
|
return null;
|
|
3268
3294
|
}
|
|
3269
|
-
return /* @__PURE__ */
|
|
3295
|
+
return /* @__PURE__ */ React21.createElement(ComponentModal, { element: elementDom, onClose });
|
|
3270
3296
|
}
|
|
3271
3297
|
function useHandleDocumentSwitches() {
|
|
3272
3298
|
const documentsManager = getV1DocumentsManager5();
|
|
@@ -3336,33 +3362,33 @@ function getComponentDOMElement(id2) {
|
|
|
3336
3362
|
}
|
|
3337
3363
|
|
|
3338
3364
|
// src/components/in-edit-mode.tsx
|
|
3339
|
-
import * as
|
|
3365
|
+
import * as React22 from "react";
|
|
3340
3366
|
import { closeDialog, openDialog } from "@elementor/editor-ui";
|
|
3341
3367
|
import { InfoCircleFilledIcon } from "@elementor/icons";
|
|
3342
3368
|
import { Box as Box12, Button as Button6, DialogActions, DialogContent, DialogHeader, Icon, Stack as Stack12, Typography as Typography11 } from "@elementor/ui";
|
|
3343
|
-
import { __ as
|
|
3369
|
+
import { __ as __23 } from "@wordpress/i18n";
|
|
3344
3370
|
var openEditModeDialog = (lockedBy) => {
|
|
3345
3371
|
openDialog({
|
|
3346
|
-
component: /* @__PURE__ */
|
|
3372
|
+
component: /* @__PURE__ */ React22.createElement(EditModeDialog, { lockedBy })
|
|
3347
3373
|
});
|
|
3348
3374
|
};
|
|
3349
3375
|
var EditModeDialog = ({ lockedBy }) => {
|
|
3350
|
-
const content =
|
|
3351
|
-
return /* @__PURE__ */
|
|
3376
|
+
const content = __23("%s is currently editing this document", "elementor").replace("%s", lockedBy);
|
|
3377
|
+
return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React22.createElement(Box12, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React22.createElement(Icon, { color: "secondary" }, /* @__PURE__ */ React22.createElement(InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React22.createElement(Typography11, { variant: "subtitle1" }, content))), /* @__PURE__ */ React22.createElement(DialogContent, null, /* @__PURE__ */ React22.createElement(Stack12, { spacing: 2, direction: "column" }, /* @__PURE__ */ React22.createElement(Typography11, { variant: "body2" }, __23(
|
|
3352
3378
|
"You can wait for them to finish or reach out to coordinate your changes together.",
|
|
3353
3379
|
"elementor"
|
|
3354
|
-
)), /* @__PURE__ */
|
|
3380
|
+
)), /* @__PURE__ */ React22.createElement(DialogActions, null, /* @__PURE__ */ React22.createElement(Button6, { color: "secondary", variant: "contained", onClick: closeDialog }, __23("Close", "elementor"))))));
|
|
3355
3381
|
};
|
|
3356
3382
|
|
|
3357
3383
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
3358
|
-
import * as
|
|
3384
|
+
import * as React27 from "react";
|
|
3359
3385
|
import { ControlAdornmentsProvider } from "@elementor/editor-controls";
|
|
3360
3386
|
import { getFieldIndicators } from "@elementor/editor-editing-panel";
|
|
3361
3387
|
import { useSelectedElement as useSelectedElement2 } from "@elementor/editor-elements";
|
|
3362
3388
|
import { PanelBody as PanelBody2, PanelHeader as PanelHeader2, PanelHeaderTitle as PanelHeaderTitle2 } from "@elementor/editor-panels";
|
|
3363
3389
|
import { ComponentsIcon as ComponentsIcon4, PencilIcon as PencilIcon2 } from "@elementor/icons";
|
|
3364
3390
|
import { IconButton as IconButton6, Stack as Stack17, Tooltip as Tooltip4 } from "@elementor/ui";
|
|
3365
|
-
import { __ as
|
|
3391
|
+
import { __ as __25 } from "@wordpress/i18n";
|
|
3366
3392
|
|
|
3367
3393
|
// src/hooks/use-component-instance-settings.ts
|
|
3368
3394
|
import { useElement } from "@elementor/editor-editing-panel";
|
|
@@ -3428,12 +3454,12 @@ function useComponentInstanceSettings() {
|
|
|
3428
3454
|
}
|
|
3429
3455
|
|
|
3430
3456
|
// src/components/instance-editing-panel/empty-state.tsx
|
|
3431
|
-
import * as
|
|
3457
|
+
import * as React23 from "react";
|
|
3432
3458
|
import { ComponentPropListIcon as ComponentPropListIcon4, PencilIcon } from "@elementor/icons";
|
|
3433
3459
|
import { Button as Button7, Stack as Stack13, Typography as Typography12 } from "@elementor/ui";
|
|
3434
|
-
import { __ as
|
|
3460
|
+
import { __ as __24 } from "@wordpress/i18n";
|
|
3435
3461
|
var EmptyState2 = ({ onEditComponent }) => {
|
|
3436
|
-
return /* @__PURE__ */
|
|
3462
|
+
return /* @__PURE__ */ React23.createElement(
|
|
3437
3463
|
Stack13,
|
|
3438
3464
|
{
|
|
3439
3465
|
alignItems: "center",
|
|
@@ -3443,25 +3469,25 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
3443
3469
|
sx: { p: 2.5, pt: 8, pb: 5.5, mt: 1 },
|
|
3444
3470
|
gap: 1.5
|
|
3445
3471
|
},
|
|
3446
|
-
/* @__PURE__ */
|
|
3447
|
-
/* @__PURE__ */
|
|
3448
|
-
/* @__PURE__ */
|
|
3472
|
+
/* @__PURE__ */ React23.createElement(ComponentPropListIcon4, { fontSize: "large" }),
|
|
3473
|
+
/* @__PURE__ */ React23.createElement(Typography12, { align: "center", variant: "subtitle2" }, __24("No properties yet", "elementor")),
|
|
3474
|
+
/* @__PURE__ */ React23.createElement(Typography12, { align: "center", variant: "caption", maxWidth: "170px" }, __24(
|
|
3449
3475
|
"Edit the component to add properties, manage them or update the design across all instances.",
|
|
3450
3476
|
"elementor"
|
|
3451
3477
|
)),
|
|
3452
|
-
/* @__PURE__ */
|
|
3478
|
+
/* @__PURE__ */ React23.createElement(Button7, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React23.createElement(PencilIcon, { fontSize: "small" }), __24("Edit component", "elementor"))
|
|
3453
3479
|
);
|
|
3454
3480
|
};
|
|
3455
3481
|
|
|
3456
3482
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
3457
|
-
import * as
|
|
3483
|
+
import * as React26 from "react";
|
|
3458
3484
|
import { useId } from "react";
|
|
3459
3485
|
import { useStateByElement } from "@elementor/editor-editing-panel";
|
|
3460
3486
|
import { CollapseIcon } from "@elementor/editor-ui";
|
|
3461
3487
|
import { Box as Box13, Collapse, ListItemButton as ListItemButton3, ListItemText, Stack as Stack16 } from "@elementor/ui";
|
|
3462
3488
|
|
|
3463
3489
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
3464
|
-
import * as
|
|
3490
|
+
import * as React25 from "react";
|
|
3465
3491
|
import { PropKeyProvider, PropProvider, useBoundProp } from "@elementor/editor-controls";
|
|
3466
3492
|
import {
|
|
3467
3493
|
controlsRegistry,
|
|
@@ -3555,16 +3581,16 @@ function getPropType({ widgetType, propKey }) {
|
|
|
3555
3581
|
}
|
|
3556
3582
|
|
|
3557
3583
|
// src/components/control-label.tsx
|
|
3558
|
-
import * as
|
|
3584
|
+
import * as React24 from "react";
|
|
3559
3585
|
import { ControlAdornments, ControlFormLabel } from "@elementor/editor-controls";
|
|
3560
3586
|
import { Stack as Stack14 } from "@elementor/ui";
|
|
3561
3587
|
var ControlLabel = ({ children, ...props }) => {
|
|
3562
|
-
return /* @__PURE__ */
|
|
3588
|
+
return /* @__PURE__ */ React24.createElement(Stack14, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React24.createElement(ControlFormLabel, { ...props }, children), /* @__PURE__ */ React24.createElement(ControlAdornments, null));
|
|
3563
3589
|
};
|
|
3564
3590
|
|
|
3565
3591
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
3566
3592
|
function OverridePropControl({ overridableProp, overrides }) {
|
|
3567
|
-
return /* @__PURE__ */
|
|
3593
|
+
return /* @__PURE__ */ React25.createElement(SettingsField, { bind: "component_instance", propDisplayName: overridableProp.label }, /* @__PURE__ */ React25.createElement(OverrideControl, { overridableProp, overrides }));
|
|
3568
3594
|
}
|
|
3569
3595
|
function OverrideControl({ overridableProp, overrides }) {
|
|
3570
3596
|
const componentId = useCurrentComponentId();
|
|
@@ -3611,7 +3637,7 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
3611
3637
|
updateOverridableProp(componentId, overridableValue, { elType, widgetType, propKey });
|
|
3612
3638
|
}
|
|
3613
3639
|
};
|
|
3614
|
-
return /* @__PURE__ */
|
|
3640
|
+
return /* @__PURE__ */ React25.createElement(
|
|
3615
3641
|
PropProvider,
|
|
3616
3642
|
{
|
|
3617
3643
|
propType: propTypeSchema,
|
|
@@ -3621,7 +3647,7 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
3621
3647
|
return false;
|
|
3622
3648
|
}
|
|
3623
3649
|
},
|
|
3624
|
-
/* @__PURE__ */
|
|
3650
|
+
/* @__PURE__ */ React25.createElement(PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ React25.createElement(Stack15, { direction: "column", gap: 1, mb: 1.5 }, /* @__PURE__ */ React25.createElement(ControlLabel, null, overridableProp.label), getControl(controls, overridableProp?.originPropFields ?? overridableProp)))
|
|
3625
3651
|
);
|
|
3626
3652
|
}
|
|
3627
3653
|
function getPropValue(value) {
|
|
@@ -3674,7 +3700,7 @@ function createOverrideValue(overrideKey, overrideValue, componentId) {
|
|
|
3674
3700
|
function getControl(controls, originPropFields) {
|
|
3675
3701
|
const ControlComponent = controlsRegistry.get(controls[originPropFields.propKey].value.type);
|
|
3676
3702
|
const controlProps = controls[originPropFields.propKey].value.props;
|
|
3677
|
-
return /* @__PURE__ */
|
|
3703
|
+
return /* @__PURE__ */ React25.createElement(ControlComponent, { ...controlProps });
|
|
3678
3704
|
}
|
|
3679
3705
|
|
|
3680
3706
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
@@ -3687,7 +3713,7 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
3687
3713
|
const labelId = `label-${id2}`;
|
|
3688
3714
|
const contentId = `content-${id2}`;
|
|
3689
3715
|
const title = group.label;
|
|
3690
|
-
return /* @__PURE__ */
|
|
3716
|
+
return /* @__PURE__ */ React26.createElement(Box13, { "aria-label": `${title} section` }, /* @__PURE__ */ React26.createElement(
|
|
3691
3717
|
ListItemButton3,
|
|
3692
3718
|
{
|
|
3693
3719
|
id: labelId,
|
|
@@ -3697,7 +3723,7 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
3697
3723
|
p: 0,
|
|
3698
3724
|
sx: { "&:hover": { backgroundColor: "transparent" } }
|
|
3699
3725
|
},
|
|
3700
|
-
/* @__PURE__ */
|
|
3726
|
+
/* @__PURE__ */ React26.createElement(Stack16, { direction: "row", alignItems: "center", justifyItems: "start", flexGrow: 1, gap: 0.5 }, /* @__PURE__ */ React26.createElement(
|
|
3701
3727
|
ListItemText,
|
|
3702
3728
|
{
|
|
3703
3729
|
secondary: title,
|
|
@@ -3705,8 +3731,8 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
3705
3731
|
sx: { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 }
|
|
3706
3732
|
}
|
|
3707
3733
|
)),
|
|
3708
|
-
/* @__PURE__ */
|
|
3709
|
-
), /* @__PURE__ */
|
|
3734
|
+
/* @__PURE__ */ React26.createElement(CollapseIcon, { open: isOpen, color: "secondary", fontSize: "tiny" })
|
|
3735
|
+
), /* @__PURE__ */ React26.createElement(Collapse, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto" }, /* @__PURE__ */ React26.createElement(Stack16, { direction: "column", gap: 1, p: 2 }, group.props.map((overrideKey) => /* @__PURE__ */ React26.createElement(
|
|
3710
3736
|
OverridePropControl,
|
|
3711
3737
|
{
|
|
3712
3738
|
key: overrideKey,
|
|
@@ -3727,12 +3753,12 @@ function InstanceEditingPanel() {
|
|
|
3727
3753
|
if (!componentId || !overridableProps || !component) {
|
|
3728
3754
|
return null;
|
|
3729
3755
|
}
|
|
3730
|
-
const panelTitle =
|
|
3756
|
+
const panelTitle = __25("Edit %s", "elementor").replace("%s", component.name);
|
|
3731
3757
|
const handleEditComponent = () => switchToComponent(componentId, componentInstanceId);
|
|
3732
3758
|
const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
|
|
3733
3759
|
const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
|
|
3734
3760
|
const isEmpty = groups.length === 0 || Object.keys(overridableProps.props).length === 0;
|
|
3735
|
-
return /* @__PURE__ */
|
|
3761
|
+
return /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(PanelHeader2, { sx: { justifyContent: "start", px: 2 } }, /* @__PURE__ */ React27.createElement(Stack17, { direction: "row", alignContent: "space-between", flexGrow: 1 }, /* @__PURE__ */ React27.createElement(Stack17, { direction: "row", alignItems: "center", justifyContent: "start", gap: 1, flexGrow: 1 }, /* @__PURE__ */ React27.createElement(ComponentsIcon4, { fontSize: "small", sx: { color: "text.tertiary" } }), /* @__PURE__ */ React27.createElement(PanelHeaderTitle2, null, component.name)), /* @__PURE__ */ React27.createElement(Tooltip4, { title: panelTitle }, /* @__PURE__ */ React27.createElement(IconButton6, { size: "tiny", onClick: handleEditComponent, "aria-label": panelTitle }, /* @__PURE__ */ React27.createElement(PencilIcon2, { fontSize: "tiny" }))))), /* @__PURE__ */ React27.createElement(PanelBody2, null, /* @__PURE__ */ React27.createElement(ControlAdornmentsProvider, { items: getFieldIndicators("settings") }, isEmpty ? /* @__PURE__ */ React27.createElement(EmptyState2, { onEditComponent: handleEditComponent }) : /* @__PURE__ */ React27.createElement(Stack17, { direction: "column", alignItems: "stretch" }, groups.map((group) => /* @__PURE__ */ React27.createElement(
|
|
3736
3762
|
OverridePropsGroup,
|
|
3737
3763
|
{
|
|
3738
3764
|
key: group.id,
|
|
@@ -3744,16 +3770,16 @@ function InstanceEditingPanel() {
|
|
|
3744
3770
|
}
|
|
3745
3771
|
|
|
3746
3772
|
// src/components/overridable-props/overridable-prop-control.tsx
|
|
3747
|
-
import * as
|
|
3773
|
+
import * as React29 from "react";
|
|
3748
3774
|
import { ControlReplacementsProvider, PropKeyProvider as PropKeyProvider2, PropProvider as PropProvider2, useBoundProp as useBoundProp2 } from "@elementor/editor-controls";
|
|
3749
3775
|
import { createTopLevelObjectType as createTopLevelObjectType2, useElement as useElement2 } from "@elementor/editor-editing-panel";
|
|
3750
3776
|
|
|
3751
3777
|
// src/provider/overridable-prop-context.tsx
|
|
3752
|
-
import * as
|
|
3778
|
+
import * as React28 from "react";
|
|
3753
3779
|
import { createContext as createContext2, useContext as useContext2 } from "react";
|
|
3754
3780
|
var OverridablePropContext = createContext2(null);
|
|
3755
3781
|
function OverridablePropProvider({ children, ...props }) {
|
|
3756
|
-
return /* @__PURE__ */
|
|
3782
|
+
return /* @__PURE__ */ React28.createElement(OverridablePropContext.Provider, { value: props }, children);
|
|
3757
3783
|
}
|
|
3758
3784
|
var useOverridablePropValue = () => useContext2(OverridablePropContext)?.value;
|
|
3759
3785
|
|
|
@@ -3792,7 +3818,7 @@ function OverridablePropControl({
|
|
|
3792
3818
|
});
|
|
3793
3819
|
const propValue = isComponentInstance2 ? (value.origin_value?.value).override_value : value.origin_value;
|
|
3794
3820
|
const objectPlaceholder = placeholder ? { [bind]: placeholder } : void 0;
|
|
3795
|
-
return /* @__PURE__ */
|
|
3821
|
+
return /* @__PURE__ */ React29.createElement(OverridablePropProvider, { value }, /* @__PURE__ */ React29.createElement(
|
|
3796
3822
|
PropProvider2,
|
|
3797
3823
|
{
|
|
3798
3824
|
...propContext,
|
|
@@ -3803,17 +3829,17 @@ function OverridablePropControl({
|
|
|
3803
3829
|
},
|
|
3804
3830
|
placeholder: objectPlaceholder
|
|
3805
3831
|
},
|
|
3806
|
-
/* @__PURE__ */
|
|
3832
|
+
/* @__PURE__ */ React29.createElement(PropKeyProvider2, { bind }, /* @__PURE__ */ React29.createElement(ControlReplacementsProvider, { replacements: [] }, /* @__PURE__ */ React29.createElement(OriginalControl, { ...props })))
|
|
3807
3833
|
));
|
|
3808
3834
|
}
|
|
3809
3835
|
|
|
3810
3836
|
// src/components/overridable-props/overridable-prop-indicator.tsx
|
|
3811
|
-
import * as
|
|
3837
|
+
import * as React31 from "react";
|
|
3812
3838
|
import { useBoundProp as useBoundProp3 } from "@elementor/editor-controls";
|
|
3813
3839
|
import { useElement as useElement3 } from "@elementor/editor-editing-panel";
|
|
3814
3840
|
import { getWidgetsCache as getWidgetsCache3 } from "@elementor/editor-elements";
|
|
3815
3841
|
import { bindPopover as bindPopover2, bindTrigger as bindTrigger4, Popover as Popover4, Tooltip as Tooltip5, usePopupState as usePopupState4 } from "@elementor/ui";
|
|
3816
|
-
import { __ as
|
|
3842
|
+
import { __ as __27 } from "@wordpress/i18n";
|
|
3817
3843
|
|
|
3818
3844
|
// src/store/actions/set-overridable-prop.ts
|
|
3819
3845
|
import { __dispatch as dispatch14, __getState as getState17 } from "@elementor/store";
|
|
@@ -3880,11 +3906,11 @@ function setOverridableProp({
|
|
|
3880
3906
|
}
|
|
3881
3907
|
|
|
3882
3908
|
// src/components/overridable-props/indicator.tsx
|
|
3883
|
-
import * as
|
|
3909
|
+
import * as React30 from "react";
|
|
3884
3910
|
import { forwardRef as forwardRef2 } from "react";
|
|
3885
3911
|
import { CheckIcon, PlusIcon } from "@elementor/icons";
|
|
3886
3912
|
import { Box as Box14, styled as styled4 } from "@elementor/ui";
|
|
3887
|
-
import { __ as
|
|
3913
|
+
import { __ as __26 } from "@wordpress/i18n";
|
|
3888
3914
|
var SIZE2 = "tiny";
|
|
3889
3915
|
var IconContainer = styled4(Box14)`
|
|
3890
3916
|
pointer-events: none;
|
|
@@ -3940,13 +3966,13 @@ var Content = styled4(Box14)`
|
|
|
3940
3966
|
}
|
|
3941
3967
|
}
|
|
3942
3968
|
`;
|
|
3943
|
-
var Indicator2 = forwardRef2(({ isOpen, isOverridable, ...props }, ref) => /* @__PURE__ */
|
|
3969
|
+
var Indicator2 = forwardRef2(({ isOpen, isOverridable, ...props }, ref) => /* @__PURE__ */ React30.createElement(Content, { ref, ...props, className: isOpen || isOverridable ? "enlarged" : "" }, /* @__PURE__ */ React30.createElement(
|
|
3944
3970
|
IconContainer,
|
|
3945
3971
|
{
|
|
3946
3972
|
className: "icon",
|
|
3947
|
-
"aria-label": isOverridable ?
|
|
3973
|
+
"aria-label": isOverridable ? __26("Overridable property", "elementor") : __26("Make prop overridable", "elementor")
|
|
3948
3974
|
},
|
|
3949
|
-
isOverridable ? /* @__PURE__ */
|
|
3975
|
+
isOverridable ? /* @__PURE__ */ React30.createElement(CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React30.createElement(PlusIcon, { fontSize: SIZE2 })
|
|
3950
3976
|
)));
|
|
3951
3977
|
|
|
3952
3978
|
// src/components/overridable-props/utils/get-overridable-prop.ts
|
|
@@ -3971,7 +3997,7 @@ function OverridablePropIndicator() {
|
|
|
3971
3997
|
if (!isPropAllowed(bind) || !componentId || !overridableProps) {
|
|
3972
3998
|
return null;
|
|
3973
3999
|
}
|
|
3974
|
-
return /* @__PURE__ */
|
|
4000
|
+
return /* @__PURE__ */ React31.createElement(Content2, { componentId, overridableProps });
|
|
3975
4001
|
}
|
|
3976
4002
|
function Content2({ componentId, overridableProps }) {
|
|
3977
4003
|
const {
|
|
@@ -4015,7 +4041,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4015
4041
|
popupState.close();
|
|
4016
4042
|
};
|
|
4017
4043
|
const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
|
|
4018
|
-
return /* @__PURE__ */
|
|
4044
|
+
return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(Tooltip5, { placement: "top", title: __27("Override Property", "elementor") }, /* @__PURE__ */ React31.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React31.createElement(
|
|
4019
4045
|
Popover4,
|
|
4020
4046
|
{
|
|
4021
4047
|
disableScrollLock: true,
|
|
@@ -4032,7 +4058,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4032
4058
|
},
|
|
4033
4059
|
...popoverProps
|
|
4034
4060
|
},
|
|
4035
|
-
/* @__PURE__ */
|
|
4061
|
+
/* @__PURE__ */ React31.createElement(
|
|
4036
4062
|
OverridablePropForm,
|
|
4037
4063
|
{
|
|
4038
4064
|
onSubmit: handleSubmit,
|
|
@@ -4478,11 +4504,11 @@ import { getAllDescendants as getAllDescendants4 } from "@elementor/editor-eleme
|
|
|
4478
4504
|
import { notify as notify4 } from "@elementor/editor-notifications";
|
|
4479
4505
|
import { blockCommand as blockCommand2 } from "@elementor/editor-v1-adapters";
|
|
4480
4506
|
import { __getState as getState19 } from "@elementor/store";
|
|
4481
|
-
import { __ as
|
|
4507
|
+
import { __ as __28 } from "@wordpress/i18n";
|
|
4482
4508
|
var COMPONENT_TYPE = "e-component";
|
|
4483
4509
|
var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
4484
4510
|
type: "default",
|
|
4485
|
-
message:
|
|
4511
|
+
message: __28("Can't add this component - components that contain each other can't be nested.", "elementor"),
|
|
4486
4512
|
id: "circular-component-nesting-blocked"
|
|
4487
4513
|
};
|
|
4488
4514
|
function initCircularNestingPrevention() {
|
|
@@ -4814,7 +4840,7 @@ function init() {
|
|
|
4814
4840
|
window.elementorCommon.__beforeSave = beforeSave;
|
|
4815
4841
|
injectTab({
|
|
4816
4842
|
id: "components",
|
|
4817
|
-
label:
|
|
4843
|
+
label: __29("Components", "elementor"),
|
|
4818
4844
|
component: Components,
|
|
4819
4845
|
position: 1
|
|
4820
4846
|
});
|