@elementor/editor-controls 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -2048,7 +2048,7 @@ var LinkControl = createControl((props) => {
2048
2048
  setValue(linkSessionValue.value);
2049
2049
  }
2050
2050
  setLinkSessionValue({
2051
- value: newState ? value : linkSessionValue?.value,
2051
+ value: linkSessionValue?.value,
2052
2052
  meta: { isEnabled: newState }
2053
2053
  });
2054
2054
  };
@@ -2247,18 +2247,106 @@ var Control4 = ({ bind, isLinked }) => {
2247
2247
  return /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React36.createElement(SizeControl, null));
2248
2248
  };
2249
2249
 
2250
+ // src/controls/aspect-ratio-control.tsx
2251
+ import * as React37 from "react";
2252
+ import { useState as useState7 } from "react";
2253
+ import { stringPropTypeUtil as stringPropTypeUtil8 } from "@elementor/editor-props";
2254
+ import { MenuListItem as MenuListItem3 } from "@elementor/editor-ui";
2255
+ import { Grid as Grid9, Select as Select2, Stack as Stack12, TextField as TextField8 } from "@elementor/ui";
2256
+ import { __ as __11 } from "@wordpress/i18n";
2257
+ var RATIO_OPTIONS = [
2258
+ { label: __11("Auto", "elementor"), value: "auto" },
2259
+ { label: "1/1", value: "1/1" },
2260
+ { label: "4/3", value: "4/3" },
2261
+ { label: "3/4", value: "3/4" },
2262
+ { label: "16/9", value: "16/9" },
2263
+ { label: "9/16", value: "9/16" },
2264
+ { label: "3/2", value: "3/2" },
2265
+ { label: "2/3", value: "2/3" }
2266
+ ];
2267
+ var CUSTOM_RATIO = "custom";
2268
+ var AspectRatioControl = createControl(({ label }) => {
2269
+ const { value: aspectRatioValue, setValue: setAspectRatioValue } = useBoundProp(stringPropTypeUtil8);
2270
+ const isCustomSelected = aspectRatioValue && !RATIO_OPTIONS.some((option) => option.value === aspectRatioValue);
2271
+ const [initialWidth, initialHeight] = isCustomSelected ? aspectRatioValue.split("/") : ["", ""];
2272
+ const [isCustom, setIsCustom] = useState7(isCustomSelected);
2273
+ const [customWidth, setCustomWidth] = useState7(initialWidth);
2274
+ const [customHeight, setCustomHeight] = useState7(initialHeight);
2275
+ const [selectedValue, setSelectedValue] = useState7(
2276
+ isCustomSelected ? CUSTOM_RATIO : aspectRatioValue || ""
2277
+ );
2278
+ const handleSelectChange = (event) => {
2279
+ const newValue = event.target.value;
2280
+ const isCustomRatio = newValue === CUSTOM_RATIO;
2281
+ setIsCustom(isCustomRatio);
2282
+ setSelectedValue(newValue);
2283
+ if (isCustomRatio) {
2284
+ return;
2285
+ }
2286
+ setAspectRatioValue(newValue);
2287
+ };
2288
+ const handleCustomWidthChange = (event) => {
2289
+ const newWidth = event.target.value;
2290
+ setCustomWidth(newWidth);
2291
+ if (newWidth && customHeight) {
2292
+ setAspectRatioValue(`${newWidth}/${customHeight}`);
2293
+ }
2294
+ };
2295
+ const handleCustomHeightChange = (event) => {
2296
+ const newHeight = event.target.value;
2297
+ setCustomHeight(newHeight);
2298
+ if (customWidth && newHeight) {
2299
+ setAspectRatioValue(`${customWidth}/${newHeight}`);
2300
+ }
2301
+ };
2302
+ return /* @__PURE__ */ React37.createElement(Stack12, { direction: "column", gap: 2 }, /* @__PURE__ */ React37.createElement(Grid9, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React37.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(ControlLabel, null, label)), /* @__PURE__ */ React37.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(
2303
+ Select2,
2304
+ {
2305
+ sx: { overflow: "hidden" },
2306
+ displayEmpty: true,
2307
+ size: "tiny",
2308
+ value: selectedValue,
2309
+ onChange: handleSelectChange,
2310
+ fullWidth: true
2311
+ },
2312
+ [...RATIO_OPTIONS, { label: __11("Custom", "elementor"), value: CUSTOM_RATIO }].map(
2313
+ ({ label: optionLabel, ...props }) => /* @__PURE__ */ React37.createElement(MenuListItem3, { key: props.value, ...props, value: props.value ?? "" }, optionLabel)
2314
+ )
2315
+ ))), isCustom && /* @__PURE__ */ React37.createElement(Grid9, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React37.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(
2316
+ TextField8,
2317
+ {
2318
+ size: "tiny",
2319
+ type: "number",
2320
+ fullWidth: true,
2321
+ value: customWidth,
2322
+ onChange: handleCustomWidthChange,
2323
+ placeholder: __11("Width", "elementor")
2324
+ }
2325
+ )), /* @__PURE__ */ React37.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(
2326
+ TextField8,
2327
+ {
2328
+ size: "tiny",
2329
+ type: "number",
2330
+ fullWidth: true,
2331
+ value: customHeight,
2332
+ onChange: handleCustomHeightChange,
2333
+ placeholder: __11("Height", "elementor")
2334
+ }
2335
+ ))));
2336
+ });
2337
+
2250
2338
  // src/controls/svg-media-control.tsx
2251
- import * as React38 from "react";
2252
- import { useState as useState8 } from "react";
2339
+ import * as React39 from "react";
2340
+ import { useState as useState9 } from "react";
2253
2341
  import { imageSrcPropTypeUtil as imageSrcPropTypeUtil2 } from "@elementor/editor-props";
2254
2342
  import { UploadIcon as UploadIcon2 } from "@elementor/icons";
2255
- import { Button as Button4, Card as Card2, CardMedia as CardMedia2, CardOverlay as CardOverlay2, CircularProgress as CircularProgress3, Stack as Stack12, styled as styled5 } from "@elementor/ui";
2343
+ import { Button as Button4, Card as Card2, CardMedia as CardMedia2, CardOverlay as CardOverlay2, CircularProgress as CircularProgress3, Stack as Stack13, styled as styled5 } from "@elementor/ui";
2256
2344
  import { useWpMediaAttachment as useWpMediaAttachment2, useWpMediaFrame as useWpMediaFrame2 } from "@elementor/wp-media";
2257
- import { __ as __12 } from "@wordpress/i18n";
2345
+ import { __ as __13 } from "@wordpress/i18n";
2258
2346
 
2259
2347
  // src/components/enable-unfiltered-modal.tsx
2260
- import * as React37 from "react";
2261
- import { useState as useState7 } from "react";
2348
+ import * as React38 from "react";
2349
+ import { useState as useState8 } from "react";
2262
2350
  import { useCurrentUserCapabilities } from "@elementor/editor-current-user";
2263
2351
  import {
2264
2352
  Button as Button3,
@@ -2271,19 +2359,19 @@ import {
2271
2359
  DialogTitle,
2272
2360
  Divider as Divider3
2273
2361
  } from "@elementor/ui";
2274
- import { __ as __11 } from "@wordpress/i18n";
2275
- var ADMIN_TITLE_TEXT = __11("Enable Unfiltered Uploads", "elementor");
2276
- var ADMIN_CONTENT_TEXT = __11(
2362
+ import { __ as __12 } from "@wordpress/i18n";
2363
+ var ADMIN_TITLE_TEXT = __12("Enable Unfiltered Uploads", "elementor");
2364
+ var ADMIN_CONTENT_TEXT = __12(
2277
2365
  "Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.",
2278
2366
  "elementor"
2279
2367
  );
2280
- var NON_ADMIN_TITLE_TEXT = __11("Sorry, you can't upload that file yet", "elementor");
2281
- var NON_ADMIN_CONTENT_TEXT = __11(
2368
+ var NON_ADMIN_TITLE_TEXT = __12("Sorry, you can't upload that file yet", "elementor");
2369
+ var NON_ADMIN_CONTENT_TEXT = __12(
2282
2370
  "This is because this file type may pose a security risk. To upload them anyway, ask the site administrator to enable unfiltered file uploads.",
2283
2371
  "elementor"
2284
2372
  );
2285
- var ADMIN_FAILED_CONTENT_TEXT_PT1 = __11("Failed to enable unfiltered files upload.", "elementor");
2286
- var ADMIN_FAILED_CONTENT_TEXT_PT2 = __11(
2373
+ var ADMIN_FAILED_CONTENT_TEXT_PT1 = __12("Failed to enable unfiltered files upload.", "elementor");
2374
+ var ADMIN_FAILED_CONTENT_TEXT_PT2 = __12(
2287
2375
  "You can try again, if the problem persists, please contact support.",
2288
2376
  "elementor"
2289
2377
  );
@@ -2291,7 +2379,7 @@ var WAIT_FOR_CLOSE_TIMEOUT_MS = 300;
2291
2379
  var EnableUnfilteredModal = (props) => {
2292
2380
  const { mutateAsync, isPending } = useUpdateUnfilteredFilesUpload();
2293
2381
  const { canUser } = useCurrentUserCapabilities();
2294
- const [isError, setIsError] = useState7(false);
2382
+ const [isError, setIsError] = useState8(false);
2295
2383
  const canManageOptions = canUser("manage_options");
2296
2384
  const onClose = (enabled) => {
2297
2385
  props.onClose(enabled);
@@ -2310,9 +2398,9 @@ var EnableUnfilteredModal = (props) => {
2310
2398
  }
2311
2399
  };
2312
2400
  const dialogProps = { ...props, isPending, handleEnable, isError, onClose };
2313
- return canManageOptions ? /* @__PURE__ */ React37.createElement(AdminDialog, { ...dialogProps }) : /* @__PURE__ */ React37.createElement(NonAdminDialog, { ...dialogProps });
2401
+ return canManageOptions ? /* @__PURE__ */ React38.createElement(AdminDialog, { ...dialogProps }) : /* @__PURE__ */ React38.createElement(NonAdminDialog, { ...dialogProps });
2314
2402
  };
2315
- var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @__PURE__ */ React37.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React37.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React37.createElement(DialogTitle, null, ADMIN_TITLE_TEXT)), /* @__PURE__ */ React37.createElement(Divider3, null), /* @__PURE__ */ React37.createElement(DialogContent, null, /* @__PURE__ */ React37.createElement(DialogContentText, null, isError ? /* @__PURE__ */ React37.createElement(React37.Fragment, null, ADMIN_FAILED_CONTENT_TEXT_PT1, " ", /* @__PURE__ */ React37.createElement("br", null), " ", ADMIN_FAILED_CONTENT_TEXT_PT2) : ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React37.createElement(DialogActions, null, /* @__PURE__ */ React37.createElement(Button3, { size: "medium", color: "secondary", onClick: () => onClose(false) }, __11("Cancel", "elementor")), /* @__PURE__ */ React37.createElement(
2403
+ var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @__PURE__ */ React38.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React38.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React38.createElement(DialogTitle, null, ADMIN_TITLE_TEXT)), /* @__PURE__ */ React38.createElement(Divider3, null), /* @__PURE__ */ React38.createElement(DialogContent, null, /* @__PURE__ */ React38.createElement(DialogContentText, null, isError ? /* @__PURE__ */ React38.createElement(React38.Fragment, null, ADMIN_FAILED_CONTENT_TEXT_PT1, " ", /* @__PURE__ */ React38.createElement("br", null), " ", ADMIN_FAILED_CONTENT_TEXT_PT2) : ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React38.createElement(DialogActions, null, /* @__PURE__ */ React38.createElement(Button3, { size: "medium", color: "secondary", onClick: () => onClose(false) }, __12("Cancel", "elementor")), /* @__PURE__ */ React38.createElement(
2316
2404
  Button3,
2317
2405
  {
2318
2406
  size: "medium",
@@ -2321,9 +2409,9 @@ var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @_
2321
2409
  color: "primary",
2322
2410
  disabled: isPending
2323
2411
  },
2324
- isPending ? /* @__PURE__ */ React37.createElement(CircularProgress2, { size: 24 }) : __11("Enable", "elementor")
2412
+ isPending ? /* @__PURE__ */ React38.createElement(CircularProgress2, { size: 24 }) : __12("Enable", "elementor")
2325
2413
  )));
2326
- var NonAdminDialog = ({ open, onClose }) => /* @__PURE__ */ React37.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React37.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React37.createElement(DialogTitle, null, NON_ADMIN_TITLE_TEXT)), /* @__PURE__ */ React37.createElement(Divider3, null), /* @__PURE__ */ React37.createElement(DialogContent, null, /* @__PURE__ */ React37.createElement(DialogContentText, null, NON_ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React37.createElement(DialogActions, null, /* @__PURE__ */ React37.createElement(Button3, { size: "medium", onClick: () => onClose(false), variant: "contained", color: "primary" }, __11("Got it", "elementor"))));
2414
+ var NonAdminDialog = ({ open, onClose }) => /* @__PURE__ */ React38.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React38.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React38.createElement(DialogTitle, null, NON_ADMIN_TITLE_TEXT)), /* @__PURE__ */ React38.createElement(Divider3, null), /* @__PURE__ */ React38.createElement(DialogContent, null, /* @__PURE__ */ React38.createElement(DialogContentText, null, NON_ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React38.createElement(DialogActions, null, /* @__PURE__ */ React38.createElement(Button3, { size: "medium", onClick: () => onClose(false), variant: "contained", color: "primary" }, __12("Got it", "elementor"))));
2327
2415
 
2328
2416
  // src/controls/svg-media-control.tsx
2329
2417
  var TILE_SIZE = 8;
@@ -2339,7 +2427,7 @@ var StyledCard = styled5(Card2)`
2339
2427
  ${TILE_SIZE / 2}px ${TILE_SIZE / 2}px;
2340
2428
  border: none;
2341
2429
  `;
2342
- var StyledCardMediaContainer = styled5(Stack12)`
2430
+ var StyledCardMediaContainer = styled5(Stack13)`
2343
2431
  position: relative;
2344
2432
  height: 140px;
2345
2433
  object-fit: contain;
@@ -2356,7 +2444,7 @@ var SvgMediaControl = createControl(() => {
2356
2444
  const { data: attachment, isFetching } = useWpMediaAttachment2(id?.value || null);
2357
2445
  const src = attachment?.url ?? url?.value ?? null;
2358
2446
  const { data: allowSvgUpload } = useUnfilteredFilesUpload();
2359
- const [unfilteredModalOpenState, setUnfilteredModalOpenState] = useState8(false);
2447
+ const [unfilteredModalOpenState, setUnfilteredModalOpenState] = useState9(false);
2360
2448
  const { open } = useWpMediaFrame2({
2361
2449
  mediaTypes: ["svg"],
2362
2450
  multiple: false,
@@ -2384,15 +2472,15 @@ var SvgMediaControl = createControl(() => {
2384
2472
  open(openOptions);
2385
2473
  }
2386
2474
  };
2387
- return /* @__PURE__ */ React38.createElement(Stack12, { gap: 1 }, /* @__PURE__ */ React38.createElement(EnableUnfilteredModal, { open: unfilteredModalOpenState, onClose: onCloseUnfilteredModal }), /* @__PURE__ */ React38.createElement(ControlFormLabel, null, " ", __12("SVG", "elementor"), " "), /* @__PURE__ */ React38.createElement(ControlActions, null, /* @__PURE__ */ React38.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React38.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React38.createElement(CircularProgress3, { role: "progressbar" }) : /* @__PURE__ */ React38.createElement(
2475
+ return /* @__PURE__ */ React39.createElement(Stack13, { gap: 1 }, /* @__PURE__ */ React39.createElement(EnableUnfilteredModal, { open: unfilteredModalOpenState, onClose: onCloseUnfilteredModal }), /* @__PURE__ */ React39.createElement(ControlFormLabel, null, " ", __13("SVG", "elementor"), " "), /* @__PURE__ */ React39.createElement(ControlActions, null, /* @__PURE__ */ React39.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React39.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React39.createElement(CircularProgress3, { role: "progressbar" }) : /* @__PURE__ */ React39.createElement(
2388
2476
  CardMedia2,
2389
2477
  {
2390
2478
  component: "img",
2391
2479
  image: src,
2392
- alt: __12("Preview SVG", "elementor"),
2480
+ alt: __13("Preview SVG", "elementor"),
2393
2481
  sx: { maxHeight: "140px", width: "50px" }
2394
2482
  }
2395
- )), /* @__PURE__ */ React38.createElement(
2483
+ )), /* @__PURE__ */ React39.createElement(
2396
2484
  CardOverlay2,
2397
2485
  {
2398
2486
  sx: {
@@ -2401,7 +2489,7 @@ var SvgMediaControl = createControl(() => {
2401
2489
  }
2402
2490
  }
2403
2491
  },
2404
- /* @__PURE__ */ React38.createElement(Stack12, { gap: 1 }, /* @__PURE__ */ React38.createElement(
2492
+ /* @__PURE__ */ React39.createElement(Stack13, { gap: 1 }, /* @__PURE__ */ React39.createElement(
2405
2493
  Button4,
2406
2494
  {
2407
2495
  size: "tiny",
@@ -2409,53 +2497,53 @@ var SvgMediaControl = createControl(() => {
2409
2497
  variant: "outlined",
2410
2498
  onClick: () => handleClick(MODE_BROWSE)
2411
2499
  },
2412
- __12("Select SVG", "elementor")
2413
- ), /* @__PURE__ */ React38.createElement(
2500
+ __13("Select SVG", "elementor")
2501
+ ), /* @__PURE__ */ React39.createElement(
2414
2502
  Button4,
2415
2503
  {
2416
2504
  size: "tiny",
2417
2505
  variant: "text",
2418
2506
  color: "inherit",
2419
- startIcon: /* @__PURE__ */ React38.createElement(UploadIcon2, null),
2507
+ startIcon: /* @__PURE__ */ React39.createElement(UploadIcon2, null),
2420
2508
  onClick: () => handleClick(MODE_UPLOAD)
2421
2509
  },
2422
- __12("Upload", "elementor")
2510
+ __13("Upload", "elementor")
2423
2511
  ))
2424
2512
  ))));
2425
2513
  });
2426
2514
 
2427
2515
  // src/controls/background-control/background-control.tsx
2428
- import * as React45 from "react";
2516
+ import * as React46 from "react";
2429
2517
  import { backgroundPropTypeUtil } from "@elementor/editor-props";
2430
2518
  import { isExperimentActive } from "@elementor/editor-v1-adapters";
2431
- import { Grid as Grid14 } from "@elementor/ui";
2432
- import { __ as __18 } from "@wordpress/i18n";
2519
+ import { Grid as Grid15 } from "@elementor/ui";
2520
+ import { __ as __19 } from "@wordpress/i18n";
2433
2521
 
2434
2522
  // src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx
2435
- import * as React44 from "react";
2523
+ import * as React45 from "react";
2436
2524
  import {
2437
2525
  backgroundColorOverlayPropTypeUtil as backgroundColorOverlayPropTypeUtil2,
2438
2526
  backgroundImageOverlayPropTypeUtil as backgroundImageOverlayPropTypeUtil2,
2439
2527
  backgroundOverlayPropTypeUtil,
2440
2528
  colorPropTypeUtil as colorPropTypeUtil3
2441
2529
  } from "@elementor/editor-props";
2442
- import { Box as Box5, CardMedia as CardMedia3, Grid as Grid13, styled as styled6, Tab, TabPanel, Tabs, UnstableColorIndicator as UnstableColorIndicator2 } from "@elementor/ui";
2530
+ import { Box as Box5, CardMedia as CardMedia3, Grid as Grid14, styled as styled6, Tab, TabPanel, Tabs, UnstableColorIndicator as UnstableColorIndicator2 } from "@elementor/ui";
2443
2531
  import { useWpMediaAttachment as useWpMediaAttachment3 } from "@elementor/wp-media";
2444
- import { __ as __17 } from "@wordpress/i18n";
2532
+ import { __ as __18 } from "@wordpress/i18n";
2445
2533
 
2446
2534
  // src/env.ts
2447
2535
  import { parseEnv } from "@elementor/env";
2448
2536
  var { env } = parseEnv("@elementor/editor-controls");
2449
2537
 
2450
2538
  // src/controls/background-control/background-gradient-color-control.tsx
2451
- import * as React39 from "react";
2539
+ import * as React40 from "react";
2452
2540
  import {
2453
2541
  backgroundGradientOverlayPropTypeUtil,
2454
2542
  colorPropTypeUtil as colorPropTypeUtil2,
2455
2543
  colorStopPropTypeUtil,
2456
2544
  gradientColorStopPropTypeUtil,
2457
2545
  numberPropTypeUtil as numberPropTypeUtil3,
2458
- stringPropTypeUtil as stringPropTypeUtil8
2546
+ stringPropTypeUtil as stringPropTypeUtil9
2459
2547
  } from "@elementor/editor-props";
2460
2548
  import { UnstableGradientBox } from "@elementor/ui";
2461
2549
  var BackgroundGradientColorControl = createControl(() => {
@@ -2463,13 +2551,13 @@ var BackgroundGradientColorControl = createControl(() => {
2463
2551
  const handleChange = (newValue) => {
2464
2552
  const transformedValue = createTransformableValue(newValue);
2465
2553
  if (transformedValue.positions) {
2466
- transformedValue.positions = stringPropTypeUtil8.create(newValue.positions.join(" "));
2554
+ transformedValue.positions = stringPropTypeUtil9.create(newValue.positions.join(" "));
2467
2555
  }
2468
2556
  setValue(transformedValue);
2469
2557
  };
2470
2558
  const createTransformableValue = (newValue) => ({
2471
2559
  ...newValue,
2472
- type: stringPropTypeUtil8.create(newValue.type),
2560
+ type: stringPropTypeUtil9.create(newValue.type),
2473
2561
  angle: numberPropTypeUtil3.create(newValue.angle),
2474
2562
  stops: gradientColorStopPropTypeUtil.create(
2475
2563
  newValue.stops.map(
@@ -2495,7 +2583,7 @@ var BackgroundGradientColorControl = createControl(() => {
2495
2583
  positions: positions?.value.split(" ")
2496
2584
  };
2497
2585
  };
2498
- return /* @__PURE__ */ React39.createElement(ControlActions, null, /* @__PURE__ */ React39.createElement(
2586
+ return /* @__PURE__ */ React40.createElement(ControlActions, null, /* @__PURE__ */ React40.createElement(
2499
2587
  UnstableGradientBox,
2500
2588
  {
2501
2589
  sx: { width: "auto", padding: 1.5 },
@@ -2505,7 +2593,7 @@ var BackgroundGradientColorControl = createControl(() => {
2505
2593
  ));
2506
2594
  });
2507
2595
  var initialBackgroundGradientOverlay = backgroundGradientOverlayPropTypeUtil.create({
2508
- type: stringPropTypeUtil8.create("linear"),
2596
+ type: stringPropTypeUtil9.create("linear"),
2509
2597
  angle: numberPropTypeUtil3.create(180),
2510
2598
  stops: gradientColorStopPropTypeUtil.create([
2511
2599
  colorStopPropTypeUtil.create({
@@ -2520,50 +2608,50 @@ var initialBackgroundGradientOverlay = backgroundGradientOverlayPropTypeUtil.cre
2520
2608
  });
2521
2609
 
2522
2610
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx
2523
- import * as React40 from "react";
2611
+ import * as React41 from "react";
2524
2612
  import { PinIcon, PinnedOffIcon } from "@elementor/icons";
2525
- import { Grid as Grid9 } from "@elementor/ui";
2526
- import { __ as __13 } from "@wordpress/i18n";
2613
+ import { Grid as Grid10 } from "@elementor/ui";
2614
+ import { __ as __14 } from "@wordpress/i18n";
2527
2615
  var attachmentControlOptions = [
2528
2616
  {
2529
2617
  value: "fixed",
2530
- label: __13("Fixed", "elementor"),
2531
- renderContent: ({ size }) => /* @__PURE__ */ React40.createElement(PinIcon, { fontSize: size }),
2618
+ label: __14("Fixed", "elementor"),
2619
+ renderContent: ({ size }) => /* @__PURE__ */ React41.createElement(PinIcon, { fontSize: size }),
2532
2620
  showTooltip: true
2533
2621
  },
2534
2622
  {
2535
2623
  value: "scroll",
2536
- label: __13("Scroll", "elementor"),
2537
- renderContent: ({ size }) => /* @__PURE__ */ React40.createElement(PinnedOffIcon, { fontSize: size }),
2624
+ label: __14("Scroll", "elementor"),
2625
+ renderContent: ({ size }) => /* @__PURE__ */ React41.createElement(PinnedOffIcon, { fontSize: size }),
2538
2626
  showTooltip: true
2539
2627
  }
2540
2628
  ];
2541
2629
  var BackgroundImageOverlayAttachment = () => {
2542
- return /* @__PURE__ */ React40.createElement(PopoverGridContainer, null, /* @__PURE__ */ React40.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(ControlFormLabel, null, __13("Attachment", "elementor"))), /* @__PURE__ */ React40.createElement(Grid9, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React40.createElement(ToggleControl, { options: attachmentControlOptions })));
2630
+ return /* @__PURE__ */ React41.createElement(PopoverGridContainer, null, /* @__PURE__ */ React41.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(ControlFormLabel, null, __14("Attachment", "elementor"))), /* @__PURE__ */ React41.createElement(Grid10, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React41.createElement(ToggleControl, { options: attachmentControlOptions })));
2543
2631
  };
2544
2632
 
2545
2633
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
2546
- import * as React41 from "react";
2547
- import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil9 } from "@elementor/editor-props";
2548
- import { MenuListItem as MenuListItem3 } from "@elementor/editor-ui";
2634
+ import * as React42 from "react";
2635
+ import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil10 } from "@elementor/editor-props";
2636
+ import { MenuListItem as MenuListItem4 } from "@elementor/editor-ui";
2549
2637
  import { LetterXIcon, LetterYIcon } from "@elementor/icons";
2550
- import { Grid as Grid10, Select as Select2 } from "@elementor/ui";
2551
- import { __ as __14 } from "@wordpress/i18n";
2638
+ import { Grid as Grid11, Select as Select3 } from "@elementor/ui";
2639
+ import { __ as __15 } from "@wordpress/i18n";
2552
2640
  var backgroundPositionOptions = [
2553
- { label: __14("Center center", "elementor"), value: "center center" },
2554
- { label: __14("Center left", "elementor"), value: "center left" },
2555
- { label: __14("Center right", "elementor"), value: "center right" },
2556
- { label: __14("Top center", "elementor"), value: "top center" },
2557
- { label: __14("Top left", "elementor"), value: "top left" },
2558
- { label: __14("Top right", "elementor"), value: "top right" },
2559
- { label: __14("Bottom center", "elementor"), value: "bottom center" },
2560
- { label: __14("Bottom left", "elementor"), value: "bottom left" },
2561
- { label: __14("Bottom right", "elementor"), value: "bottom right" },
2562
- { label: __14("Custom", "elementor"), value: "custom" }
2641
+ { label: __15("Center center", "elementor"), value: "center center" },
2642
+ { label: __15("Center left", "elementor"), value: "center left" },
2643
+ { label: __15("Center right", "elementor"), value: "center right" },
2644
+ { label: __15("Top center", "elementor"), value: "top center" },
2645
+ { label: __15("Top left", "elementor"), value: "top left" },
2646
+ { label: __15("Top right", "elementor"), value: "top right" },
2647
+ { label: __15("Bottom center", "elementor"), value: "bottom center" },
2648
+ { label: __15("Bottom left", "elementor"), value: "bottom left" },
2649
+ { label: __15("Bottom right", "elementor"), value: "bottom right" },
2650
+ { label: __15("Custom", "elementor"), value: "custom" }
2563
2651
  ];
2564
2652
  var BackgroundImageOverlayPosition = () => {
2565
2653
  const backgroundImageOffsetContext = useBoundProp(backgroundImagePositionOffsetPropTypeUtil);
2566
- const stringPropContext = useBoundProp(stringPropTypeUtil9);
2654
+ const stringPropContext = useBoundProp(stringPropTypeUtil10);
2567
2655
  const isCustom = !!backgroundImageOffsetContext.value;
2568
2656
  const handlePositionChange = (event) => {
2569
2657
  const value = event.target.value || null;
@@ -2573,56 +2661,56 @@ var BackgroundImageOverlayPosition = () => {
2573
2661
  stringPropContext.setValue(value);
2574
2662
  }
2575
2663
  };
2576
- return /* @__PURE__ */ React41.createElement(Grid10, { container: true, spacing: 1.5 }, /* @__PURE__ */ React41.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React41.createElement(PopoverGridContainer, null, /* @__PURE__ */ React41.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(ControlFormLabel, null, __14("Position", "elementor"))), /* @__PURE__ */ React41.createElement(Grid10, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React41.createElement(
2577
- Select2,
2664
+ return /* @__PURE__ */ React42.createElement(Grid11, { container: true, spacing: 1.5 }, /* @__PURE__ */ React42.createElement(Grid11, { item: true, xs: 12 }, /* @__PURE__ */ React42.createElement(PopoverGridContainer, null, /* @__PURE__ */ React42.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(ControlFormLabel, null, __15("Position", "elementor"))), /* @__PURE__ */ React42.createElement(Grid11, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React42.createElement(
2665
+ Select3,
2578
2666
  {
2579
2667
  size: "tiny",
2580
2668
  value: (backgroundImageOffsetContext.value ? "custom" : stringPropContext.value) ?? "",
2581
2669
  onChange: handlePositionChange,
2582
2670
  fullWidth: true
2583
2671
  },
2584
- backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React41.createElement(MenuListItem3, { key: value, value: value ?? "" }, label))
2585
- )))), isCustom ? /* @__PURE__ */ React41.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React41.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React41.createElement(Grid10, { container: true, spacing: 1.5 }, /* @__PURE__ */ React41.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React41.createElement(SizeControl, { startIcon: /* @__PURE__ */ React41.createElement(LetterXIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React41.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React41.createElement(SizeControl, { startIcon: /* @__PURE__ */ React41.createElement(LetterYIcon, { fontSize: "tiny" }) })))))) : null);
2672
+ backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React42.createElement(MenuListItem4, { key: value, value: value ?? "" }, label))
2673
+ )))), isCustom ? /* @__PURE__ */ React42.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React42.createElement(Grid11, { item: true, xs: 12 }, /* @__PURE__ */ React42.createElement(Grid11, { container: true, spacing: 1.5 }, /* @__PURE__ */ React42.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React42.createElement(SizeControl, { startIcon: /* @__PURE__ */ React42.createElement(LetterXIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React42.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React42.createElement(SizeControl, { startIcon: /* @__PURE__ */ React42.createElement(LetterYIcon, { fontSize: "tiny" }) })))))) : null);
2586
2674
  };
2587
2675
 
2588
2676
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx
2589
- import * as React42 from "react";
2677
+ import * as React43 from "react";
2590
2678
  import { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon as XIcon4 } from "@elementor/icons";
2591
- import { Grid as Grid11 } from "@elementor/ui";
2592
- import { __ as __15 } from "@wordpress/i18n";
2679
+ import { Grid as Grid12 } from "@elementor/ui";
2680
+ import { __ as __16 } from "@wordpress/i18n";
2593
2681
  var repeatControlOptions = [
2594
2682
  {
2595
2683
  value: "repeat",
2596
- label: __15("Repeat", "elementor"),
2597
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(GridDotsIcon, { fontSize: size }),
2684
+ label: __16("Repeat", "elementor"),
2685
+ renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(GridDotsIcon, { fontSize: size }),
2598
2686
  showTooltip: true
2599
2687
  },
2600
2688
  {
2601
2689
  value: "repeat-x",
2602
- label: __15("Repeat-x", "elementor"),
2603
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(DotsHorizontalIcon, { fontSize: size }),
2690
+ label: __16("Repeat-x", "elementor"),
2691
+ renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(DotsHorizontalIcon, { fontSize: size }),
2604
2692
  showTooltip: true
2605
2693
  },
2606
2694
  {
2607
2695
  value: "repeat-y",
2608
- label: __15("Repeat-y", "elementor"),
2609
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(DotsVerticalIcon, { fontSize: size }),
2696
+ label: __16("Repeat-y", "elementor"),
2697
+ renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(DotsVerticalIcon, { fontSize: size }),
2610
2698
  showTooltip: true
2611
2699
  },
2612
2700
  {
2613
2701
  value: "no-repeat",
2614
- label: __15("No-repeat", "elementor"),
2615
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(XIcon4, { fontSize: size }),
2702
+ label: __16("No-repeat", "elementor"),
2703
+ renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(XIcon4, { fontSize: size }),
2616
2704
  showTooltip: true
2617
2705
  }
2618
2706
  ];
2619
2707
  var BackgroundImageOverlayRepeat = () => {
2620
- return /* @__PURE__ */ React42.createElement(PopoverGridContainer, null, /* @__PURE__ */ React42.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(ControlFormLabel, null, __15("Repeat", "elementor"))), /* @__PURE__ */ React42.createElement(Grid11, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React42.createElement(ToggleControl, { options: repeatControlOptions })));
2708
+ return /* @__PURE__ */ React43.createElement(PopoverGridContainer, null, /* @__PURE__ */ React43.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(ControlFormLabel, null, __16("Repeat", "elementor"))), /* @__PURE__ */ React43.createElement(Grid12, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React43.createElement(ToggleControl, { options: repeatControlOptions })));
2621
2709
  };
2622
2710
 
2623
2711
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
2624
- import * as React43 from "react";
2625
- import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil10 } from "@elementor/editor-props";
2712
+ import * as React44 from "react";
2713
+ import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil11 } from "@elementor/editor-props";
2626
2714
  import {
2627
2715
  ArrowBarBothIcon,
2628
2716
  ArrowsMaximizeIcon,
@@ -2631,37 +2719,37 @@ import {
2631
2719
  LetterAIcon,
2632
2720
  PencilIcon
2633
2721
  } from "@elementor/icons";
2634
- import { Grid as Grid12 } from "@elementor/ui";
2635
- import { __ as __16 } from "@wordpress/i18n";
2722
+ import { Grid as Grid13 } from "@elementor/ui";
2723
+ import { __ as __17 } from "@wordpress/i18n";
2636
2724
  var sizeControlOptions = [
2637
2725
  {
2638
2726
  value: "auto",
2639
- label: __16("Auto", "elementor"),
2640
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(LetterAIcon, { fontSize: size }),
2727
+ label: __17("Auto", "elementor"),
2728
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(LetterAIcon, { fontSize: size }),
2641
2729
  showTooltip: true
2642
2730
  },
2643
2731
  {
2644
2732
  value: "cover",
2645
- label: __16("Cover", "elementor"),
2646
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(ArrowsMaximizeIcon, { fontSize: size }),
2733
+ label: __17("Cover", "elementor"),
2734
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(ArrowsMaximizeIcon, { fontSize: size }),
2647
2735
  showTooltip: true
2648
2736
  },
2649
2737
  {
2650
2738
  value: "contain",
2651
- label: __16("Contain", "elementor"),
2652
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(ArrowBarBothIcon, { fontSize: size }),
2739
+ label: __17("Contain", "elementor"),
2740
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(ArrowBarBothIcon, { fontSize: size }),
2653
2741
  showTooltip: true
2654
2742
  },
2655
2743
  {
2656
2744
  value: "custom",
2657
- label: __16("Custom", "elementor"),
2658
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(PencilIcon, { fontSize: size }),
2745
+ label: __17("Custom", "elementor"),
2746
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(PencilIcon, { fontSize: size }),
2659
2747
  showTooltip: true
2660
2748
  }
2661
2749
  ];
2662
2750
  var BackgroundImageOverlaySize = () => {
2663
2751
  const backgroundImageScaleContext = useBoundProp(backgroundImageSizeScalePropTypeUtil);
2664
- const stringPropContext = useBoundProp(stringPropTypeUtil10);
2752
+ const stringPropContext = useBoundProp(stringPropTypeUtil11);
2665
2753
  const isCustom = !!backgroundImageScaleContext.value;
2666
2754
  const handleSizeChange = (size) => {
2667
2755
  if (size === "custom") {
@@ -2670,7 +2758,7 @@ var BackgroundImageOverlaySize = () => {
2670
2758
  stringPropContext.setValue(size);
2671
2759
  }
2672
2760
  };
2673
- return /* @__PURE__ */ React43.createElement(Grid12, { container: true, spacing: 1.5 }, /* @__PURE__ */ React43.createElement(Grid12, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(PopoverGridContainer, null, /* @__PURE__ */ React43.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(ControlFormLabel, null, __16("Size", "elementor"))), /* @__PURE__ */ React43.createElement(Grid12, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React43.createElement(
2761
+ return /* @__PURE__ */ React44.createElement(Grid13, { container: true, spacing: 1.5 }, /* @__PURE__ */ React44.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React44.createElement(PopoverGridContainer, null, /* @__PURE__ */ React44.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(ControlFormLabel, null, __17("Size", "elementor"))), /* @__PURE__ */ React44.createElement(Grid13, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React44.createElement(
2674
2762
  ControlToggleButtonGroup,
2675
2763
  {
2676
2764
  exclusive: true,
@@ -2678,16 +2766,16 @@ var BackgroundImageOverlaySize = () => {
2678
2766
  value: backgroundImageScaleContext.value ? "custom" : stringPropContext.value,
2679
2767
  onChange: handleSizeChange
2680
2768
  }
2681
- )))), isCustom ? /* @__PURE__ */ React43.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React43.createElement(Grid12, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(PopoverGridContainer, null, /* @__PURE__ */ React43.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React43.createElement(
2769
+ )))), isCustom ? /* @__PURE__ */ React44.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React44.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React44.createElement(PopoverGridContainer, null, /* @__PURE__ */ React44.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React44.createElement(
2682
2770
  SizeControl,
2683
2771
  {
2684
- startIcon: /* @__PURE__ */ React43.createElement(ArrowsMoveHorizontalIcon, { fontSize: "tiny" }),
2772
+ startIcon: /* @__PURE__ */ React44.createElement(ArrowsMoveHorizontalIcon, { fontSize: "tiny" }),
2685
2773
  extendedValues: ["auto"]
2686
2774
  }
2687
- ))), /* @__PURE__ */ React43.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React43.createElement(
2775
+ ))), /* @__PURE__ */ React44.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React44.createElement(
2688
2776
  SizeControl,
2689
2777
  {
2690
- startIcon: /* @__PURE__ */ React43.createElement(ArrowsMoveVerticalIcon, { fontSize: "tiny" }),
2778
+ startIcon: /* @__PURE__ */ React44.createElement(ArrowsMoveVerticalIcon, { fontSize: "tiny" }),
2691
2779
  extendedValues: ["auto"]
2692
2780
  }
2693
2781
  )))))) : null);
@@ -2787,20 +2875,20 @@ var getInitialBackgroundOverlay = () => ({
2787
2875
  }
2788
2876
  });
2789
2877
  var backgroundResolutionOptions = [
2790
- { label: __17("Thumbnail - 150 x 150", "elementor"), value: "thumbnail" },
2791
- { label: __17("Medium - 300 x 300", "elementor"), value: "medium" },
2792
- { label: __17("Large 1024 x 1024", "elementor"), value: "large" },
2793
- { label: __17("Full", "elementor"), value: "full" }
2878
+ { label: __18("Thumbnail - 150 x 150", "elementor"), value: "thumbnail" },
2879
+ { label: __18("Medium - 300 x 300", "elementor"), value: "medium" },
2880
+ { label: __18("Large 1024 x 1024", "elementor"), value: "large" },
2881
+ { label: __18("Full", "elementor"), value: "full" }
2794
2882
  ];
2795
2883
  var BackgroundOverlayRepeaterControl = createControl(() => {
2796
2884
  const { propType, value: overlayValues, setValue } = useBoundProp(backgroundOverlayPropTypeUtil);
2797
- return /* @__PURE__ */ React44.createElement(PropProvider, { propType, value: overlayValues, setValue }, /* @__PURE__ */ React44.createElement(
2885
+ return /* @__PURE__ */ React45.createElement(PropProvider, { propType, value: overlayValues, setValue }, /* @__PURE__ */ React45.createElement(
2798
2886
  Repeater,
2799
2887
  {
2800
2888
  openOnAdd: true,
2801
2889
  values: overlayValues ?? [],
2802
2890
  setValues: setValue,
2803
- label: __17("Overlay", "elementor"),
2891
+ label: __18("Overlay", "elementor"),
2804
2892
  itemSettings: {
2805
2893
  Icon: ItemIcon2,
2806
2894
  Label: ItemLabel2,
@@ -2811,7 +2899,7 @@ var BackgroundOverlayRepeaterControl = createControl(() => {
2811
2899
  ));
2812
2900
  });
2813
2901
  var ItemContent2 = ({ anchorEl = null, bind }) => {
2814
- return /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React44.createElement(Content2, { anchorEl }));
2902
+ return /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React45.createElement(Content2, { anchorEl }));
2815
2903
  };
2816
2904
  var Content2 = ({ anchorEl }) => {
2817
2905
  const { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory({
@@ -2819,27 +2907,27 @@ var Content2 = ({ anchorEl }) => {
2819
2907
  color: initialBackgroundColorOverlay.value,
2820
2908
  gradient: initialBackgroundGradientOverlay.value
2821
2909
  });
2822
- return /* @__PURE__ */ React44.createElement(Box5, { sx: { width: "100%" } }, /* @__PURE__ */ React44.createElement(Box5, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React44.createElement(
2910
+ return /* @__PURE__ */ React45.createElement(Box5, { sx: { width: "100%" } }, /* @__PURE__ */ React45.createElement(Box5, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React45.createElement(
2823
2911
  Tabs,
2824
2912
  {
2825
2913
  size: "small",
2826
2914
  variant: "fullWidth",
2827
2915
  ...getTabsProps(),
2828
- "aria-label": __17("Background Overlay", "elementor")
2916
+ "aria-label": __18("Background Overlay", "elementor")
2829
2917
  },
2830
- /* @__PURE__ */ React44.createElement(Tab, { label: __17("Image", "elementor"), ...getTabProps("image") }),
2831
- /* @__PURE__ */ React44.createElement(Tab, { label: __17("Gradient", "elementor"), ...getTabProps("gradient") }),
2832
- /* @__PURE__ */ React44.createElement(Tab, { label: __17("Color", "elementor"), ...getTabProps("color") })
2833
- )), /* @__PURE__ */ React44.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React44.createElement(PopoverContent, null, /* @__PURE__ */ React44.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React44.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("gradient") }, /* @__PURE__ */ React44.createElement(BackgroundGradientColorControl, null)), /* @__PURE__ */ React44.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("color") }, /* @__PURE__ */ React44.createElement(PopoverContent, null, /* @__PURE__ */ React44.createElement(ColorOverlayContent, { anchorEl }))));
2918
+ /* @__PURE__ */ React45.createElement(Tab, { label: __18("Image", "elementor"), ...getTabProps("image") }),
2919
+ /* @__PURE__ */ React45.createElement(Tab, { label: __18("Gradient", "elementor"), ...getTabProps("gradient") }),
2920
+ /* @__PURE__ */ React45.createElement(Tab, { label: __18("Color", "elementor"), ...getTabProps("color") })
2921
+ )), /* @__PURE__ */ React45.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React45.createElement(PopoverContent, null, /* @__PURE__ */ React45.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React45.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("gradient") }, /* @__PURE__ */ React45.createElement(BackgroundGradientColorControl, null)), /* @__PURE__ */ React45.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("color") }, /* @__PURE__ */ React45.createElement(PopoverContent, null, /* @__PURE__ */ React45.createElement(ColorOverlayContent, { anchorEl }))));
2834
2922
  };
2835
2923
  var ItemIcon2 = ({ value }) => {
2836
2924
  switch (value.$$type) {
2837
2925
  case "background-image-overlay":
2838
- return /* @__PURE__ */ React44.createElement(ItemIconImage, { value });
2926
+ return /* @__PURE__ */ React45.createElement(ItemIconImage, { value });
2839
2927
  case "background-color-overlay":
2840
- return /* @__PURE__ */ React44.createElement(ItemIconColor, { value });
2928
+ return /* @__PURE__ */ React45.createElement(ItemIconColor, { value });
2841
2929
  case "background-gradient-overlay":
2842
- return /* @__PURE__ */ React44.createElement(ItemIconGradient, { value });
2930
+ return /* @__PURE__ */ React45.createElement(ItemIconGradient, { value });
2843
2931
  default:
2844
2932
  return null;
2845
2933
  }
@@ -2852,11 +2940,11 @@ var extractColorFrom = (prop) => {
2852
2940
  };
2853
2941
  var ItemIconColor = ({ value: prop }) => {
2854
2942
  const color = extractColorFrom(prop);
2855
- return /* @__PURE__ */ React44.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: color });
2943
+ return /* @__PURE__ */ React45.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: color });
2856
2944
  };
2857
2945
  var ItemIconImage = ({ value }) => {
2858
2946
  const { imageUrl } = useImage(value);
2859
- return /* @__PURE__ */ React44.createElement(
2947
+ return /* @__PURE__ */ React45.createElement(
2860
2948
  CardMedia3,
2861
2949
  {
2862
2950
  image: imageUrl,
@@ -2871,47 +2959,47 @@ var ItemIconImage = ({ value }) => {
2871
2959
  };
2872
2960
  var ItemIconGradient = ({ value }) => {
2873
2961
  const gradient = getGradientValue(value);
2874
- return /* @__PURE__ */ React44.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: gradient });
2962
+ return /* @__PURE__ */ React45.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: gradient });
2875
2963
  };
2876
2964
  var ItemLabel2 = ({ value }) => {
2877
2965
  switch (value.$$type) {
2878
2966
  case "background-image-overlay":
2879
- return /* @__PURE__ */ React44.createElement(ItemLabelImage, { value });
2967
+ return /* @__PURE__ */ React45.createElement(ItemLabelImage, { value });
2880
2968
  case "background-color-overlay":
2881
- return /* @__PURE__ */ React44.createElement(ItemLabelColor, { value });
2969
+ return /* @__PURE__ */ React45.createElement(ItemLabelColor, { value });
2882
2970
  case "background-gradient-overlay":
2883
- return /* @__PURE__ */ React44.createElement(ItemLabelGradient, { value });
2971
+ return /* @__PURE__ */ React45.createElement(ItemLabelGradient, { value });
2884
2972
  default:
2885
2973
  return null;
2886
2974
  }
2887
2975
  };
2888
2976
  var ItemLabelColor = ({ value: prop }) => {
2889
2977
  const color = extractColorFrom(prop);
2890
- return /* @__PURE__ */ React44.createElement("span", null, color);
2978
+ return /* @__PURE__ */ React45.createElement("span", null, color);
2891
2979
  };
2892
2980
  var ItemLabelImage = ({ value }) => {
2893
2981
  const { imageTitle } = useImage(value);
2894
- return /* @__PURE__ */ React44.createElement("span", null, imageTitle);
2982
+ return /* @__PURE__ */ React45.createElement("span", null, imageTitle);
2895
2983
  };
2896
2984
  var ItemLabelGradient = ({ value }) => {
2897
2985
  if (value.value.type.value === "linear") {
2898
- return /* @__PURE__ */ React44.createElement("span", null, __17("Linear Gradient", "elementor"));
2986
+ return /* @__PURE__ */ React45.createElement("span", null, __18("Linear Gradient", "elementor"));
2899
2987
  }
2900
- return /* @__PURE__ */ React44.createElement("span", null, __17("Radial Gradient", "elementor"));
2988
+ return /* @__PURE__ */ React45.createElement("span", null, __18("Radial Gradient", "elementor"));
2901
2989
  };
2902
2990
  var ColorOverlayContent = ({ anchorEl }) => {
2903
2991
  const propContext = useBoundProp(backgroundColorOverlayPropTypeUtil2);
2904
- return /* @__PURE__ */ React44.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React44.createElement(ColorControl, { anchorEl })));
2992
+ return /* @__PURE__ */ React45.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React45.createElement(ColorControl, { anchorEl })));
2905
2993
  };
2906
2994
  var ImageOverlayContent = () => {
2907
2995
  const propContext = useBoundProp(backgroundImageOverlayPropTypeUtil2);
2908
- return /* @__PURE__ */ React44.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React44.createElement(Grid13, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React44.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React44.createElement(
2996
+ return /* @__PURE__ */ React45.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React45.createElement(Grid14, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React45.createElement(Grid14, { item: true, xs: 12 }, /* @__PURE__ */ React45.createElement(
2909
2997
  ImageControl,
2910
2998
  {
2911
- resolutionLabel: __17("Resolution", "elementor"),
2999
+ resolutionLabel: __18("Resolution", "elementor"),
2912
3000
  sizes: backgroundResolutionOptions
2913
3001
  }
2914
- )))), /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React44.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React44.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React44.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React44.createElement(BackgroundImageOverlayAttachment, null)));
3002
+ )))), /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React45.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React45.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React45.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React45.createElement(BackgroundImageOverlayAttachment, null)));
2915
3003
  };
2916
3004
  var StyledUnstableColorIndicator = styled6(UnstableColorIndicator2)(({ theme }) => ({
2917
3005
  borderRadius: `${theme.shape.borderRadius / 2}px`
@@ -2950,10 +3038,23 @@ var getGradientValue = (value) => {
2950
3038
  var BackgroundControl = createControl(() => {
2951
3039
  const propContext = useBoundProp(backgroundPropTypeUtil);
2952
3040
  const isUsingNestedProps = isExperimentActive("e_v_3_30");
2953
- const colorLabel = __18("Color", "elementor");
2954
- return /* @__PURE__ */ React45.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React45.createElement(SectionContent, null, /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React45.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React45.createElement(Grid14, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React45.createElement(Grid14, { item: true, xs: 6 }, isUsingNestedProps ? /* @__PURE__ */ React45.createElement(ControlLabel, null, colorLabel) : /* @__PURE__ */ React45.createElement(ControlFormLabel, null, colorLabel)), /* @__PURE__ */ React45.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(ColorControl, null))))));
3041
+ const colorLabel = __19("Color", "elementor");
3042
+ return /* @__PURE__ */ React46.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React46.createElement(SectionContent, null, /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React46.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React46.createElement(Grid15, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React46.createElement(Grid15, { item: true, xs: 6 }, isUsingNestedProps ? /* @__PURE__ */ React46.createElement(ControlLabel, null, colorLabel) : /* @__PURE__ */ React46.createElement(ControlFormLabel, null, colorLabel)), /* @__PURE__ */ React46.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(ColorControl, null))))));
3043
+ });
3044
+
3045
+ // src/controls/switch-control.tsx
3046
+ import * as React47 from "react";
3047
+ import { booleanPropTypeUtil as booleanPropTypeUtil2 } from "@elementor/editor-props";
3048
+ import { Switch as Switch2 } from "@elementor/ui";
3049
+ var SwitchControl2 = createControl(() => {
3050
+ const { value, setValue } = useBoundProp(booleanPropTypeUtil2);
3051
+ const handleChange = (event) => {
3052
+ setValue(event.target.checked);
3053
+ };
3054
+ return /* @__PURE__ */ React47.createElement("div", { style: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React47.createElement(Switch2, { checked: !!value, onChange: handleChange, size: "small" }));
2955
3055
  });
2956
3056
  export {
3057
+ AspectRatioControl,
2957
3058
  BackgroundControl,
2958
3059
  BoxShadowRepeaterControl,
2959
3060
  ColorControl,
@@ -2976,6 +3077,7 @@ export {
2976
3077
  SizeControl,
2977
3078
  StrokeControl,
2978
3079
  SvgMediaControl,
3080
+ SwitchControl2 as SwitchControl,
2979
3081
  TextAreaControl,
2980
3082
  TextControl,
2981
3083
  ToggleControl,