@elementor/editor-controls 1.2.0 → 1.5.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.
Files changed (41) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/dist/index.d.mts +20 -8
  3. package/dist/index.d.ts +20 -8
  4. package/dist/index.js +1092 -714
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +937 -549
  7. package/dist/index.mjs.map +1 -1
  8. package/package.json +7 -7
  9. package/src/bound-prop-context/prop-context.tsx +3 -3
  10. package/src/bound-prop-context/prop-key-context.tsx +1 -0
  11. package/src/bound-prop-context/use-bound-prop.ts +5 -1
  12. package/src/components/font-family-selector.tsx +54 -56
  13. package/src/components/repeater.tsx +22 -11
  14. package/src/components/size-control/size-input.tsx +4 -4
  15. package/src/components/text-field-popover.tsx +19 -18
  16. package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +3 -15
  17. package/src/controls/box-shadow-repeater-control.tsx +1 -1
  18. package/src/controls/color-control.tsx +12 -1
  19. package/src/controls/equal-unequal-sizes-control.tsx +1 -1
  20. package/src/controls/filter-control/drop-shadow-item-content.tsx +69 -0
  21. package/src/controls/filter-control/drop-shadow-item-label.tsx +20 -0
  22. package/src/controls/filter-repeater-control.tsx +108 -21
  23. package/src/controls/font-family-control/font-family-control.tsx +14 -2
  24. package/src/controls/image-control.tsx +45 -16
  25. package/src/controls/key-value-control.tsx +57 -46
  26. package/src/controls/link-control.tsx +25 -20
  27. package/src/controls/linked-dimensions-control.tsx +1 -1
  28. package/src/controls/repeatable-control.tsx +100 -21
  29. package/src/controls/select-control.tsx +22 -2
  30. package/src/controls/size-control.tsx +25 -12
  31. package/src/controls/switch-control.tsx +9 -1
  32. package/src/controls/text-control.tsx +33 -18
  33. package/src/controls/transform-control/functions/axis-row.tsx +32 -0
  34. package/src/controls/transform-control/functions/move.tsx +44 -0
  35. package/src/controls/transform-control/transform-content.tsx +36 -0
  36. package/src/controls/transform-control/transform-icon.tsx +12 -0
  37. package/src/controls/transform-control/transform-label.tsx +27 -0
  38. package/src/controls/transform-control/transform-repeater-control.tsx +42 -0
  39. package/src/hooks/use-repeatable-control-context.ts +6 -1
  40. package/src/index.ts +1 -0
  41. package/src/utils/size-control.ts +4 -2
package/dist/index.mjs CHANGED
@@ -1,7 +1,8 @@
1
1
  // src/controls/image-control.tsx
2
- import * as React9 from "react";
2
+ import * as React10 from "react";
3
3
  import { imagePropTypeUtil } from "@elementor/editor-props";
4
- import { Stack as Stack2 } from "@elementor/ui";
4
+ import { Grid, Stack as Stack2 } from "@elementor/ui";
5
+ import { __ as __2 } from "@wordpress/i18n";
5
6
 
6
7
  // src/bound-prop-context/prop-context.tsx
7
8
  import * as React from "react";
@@ -30,7 +31,7 @@ var PropProvider = ({
30
31
  setValue,
31
32
  propType,
32
33
  placeholder,
33
- disabled
34
+ isDisabled
34
35
  }) => {
35
36
  return /* @__PURE__ */ React.createElement(
36
37
  PropContext.Provider,
@@ -40,7 +41,7 @@ var PropProvider = ({
40
41
  propType,
41
42
  setValue,
42
43
  placeholder,
43
- disabled
44
+ isDisabled
44
45
  }
45
46
  },
46
47
  children
@@ -130,8 +131,9 @@ import { useState } from "react";
130
131
  function useBoundProp(propTypeUtil) {
131
132
  const propKeyContext = usePropKeyContext();
132
133
  const { isValid, validate, restoreValue } = useValidation(propKeyContext.propType);
134
+ const disabled = propKeyContext.isDisabled?.(propKeyContext.propType);
133
135
  if (!propTypeUtil) {
134
- return propKeyContext;
136
+ return { ...propKeyContext, disabled };
135
137
  }
136
138
  function setValue(value2, options, meta) {
137
139
  if (!validate(value2)) {
@@ -151,7 +153,8 @@ function useBoundProp(propTypeUtil) {
151
153
  setValue,
152
154
  value: isValid ? value : null,
153
155
  restoreValue,
154
- placeholder
156
+ placeholder,
157
+ disabled
155
158
  };
156
159
  }
157
160
  var useValidation = (propType) => {
@@ -183,16 +186,23 @@ var resolveUnionPropType = (propType, key) => {
183
186
  return resolvedPropType;
184
187
  };
185
188
 
189
+ // src/components/control-form-label.tsx
190
+ import * as React3 from "react";
191
+ import { FormLabel } from "@elementor/ui";
192
+ var ControlFormLabel = (props) => {
193
+ return /* @__PURE__ */ React3.createElement(FormLabel, { size: "tiny", ...props });
194
+ };
195
+
186
196
  // src/create-control.tsx
187
- import * as React4 from "react";
197
+ import * as React5 from "react";
188
198
  import { ErrorBoundary } from "@elementor/ui";
189
199
 
190
200
  // src/control-replacements.tsx
191
- import * as React3 from "react";
201
+ import * as React4 from "react";
192
202
  import { createContext as createContext3, useContext as useContext3 } from "react";
193
203
  var ControlReplacementContext = createContext3([]);
194
204
  var ControlReplacementsProvider = ({ replacements, children }) => {
195
- return /* @__PURE__ */ React3.createElement(ControlReplacementContext.Provider, { value: replacements }, children);
205
+ return /* @__PURE__ */ React4.createElement(ControlReplacementContext.Provider, { value: replacements }, children);
196
206
  };
197
207
  var useControlReplacement = (OriginalComponent) => {
198
208
  const { value } = useBoundProp();
@@ -220,7 +230,7 @@ var brandSymbol = Symbol("control");
220
230
  function createControl(Control5) {
221
231
  return (props) => {
222
232
  const Component = useControlReplacement(Control5);
223
- return /* @__PURE__ */ React4.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React4.createElement(Component, { ...props }));
233
+ return /* @__PURE__ */ React5.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React5.createElement(Component, { ...props }));
224
234
  };
225
235
  }
226
236
 
@@ -264,7 +274,7 @@ var formatResponse = (response) => {
264
274
  };
265
275
 
266
276
  // src/controls/image-media-control.tsx
267
- import * as React7 from "react";
277
+ import * as React8 from "react";
268
278
  import { imageSrcPropTypeUtil } from "@elementor/editor-props";
269
279
  import { UploadIcon } from "@elementor/icons";
270
280
  import { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from "@elementor/ui";
@@ -272,14 +282,14 @@ import { useWpMediaAttachment, useWpMediaFrame } from "@elementor/wp-media";
272
282
  import { __ } from "@wordpress/i18n";
273
283
 
274
284
  // src/control-actions/control-actions.tsx
275
- import * as React6 from "react";
285
+ import * as React7 from "react";
276
286
  import { styled, UnstableFloatingActionBar } from "@elementor/ui";
277
287
 
278
288
  // src/control-actions/control-actions-context.tsx
279
- import * as React5 from "react";
289
+ import * as React6 from "react";
280
290
  import { createContext as createContext4, useContext as useContext4 } from "react";
281
291
  var Context = createContext4(null);
282
- var ControlActionsProvider = ({ children, items }) => /* @__PURE__ */ React5.createElement(Context.Provider, { value: { items } }, children);
292
+ var ControlActionsProvider = ({ children, items: items2 }) => /* @__PURE__ */ React6.createElement(Context.Provider, { value: { items: items2 } }, children);
283
293
  var useControlActions = () => {
284
294
  const context = useContext4(Context);
285
295
  if (!context) {
@@ -301,13 +311,13 @@ var FloatingBarContainer = styled("span")`
301
311
  }
302
312
  `;
303
313
  function ControlActions({ children }) {
304
- const { items } = useControlActions();
314
+ const { items: items2 } = useControlActions();
305
315
  const { disabled } = useBoundProp();
306
- if (items.length === 0 || disabled) {
316
+ if (items2.length === 0 || disabled) {
307
317
  return children;
308
318
  }
309
- const menuItems = items.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React6.createElement(MenuItem2, { key: id }));
310
- return /* @__PURE__ */ React6.createElement(FloatingBarContainer, null, /* @__PURE__ */ React6.createElement(UnstableFloatingActionBar, { actions: menuItems }, children));
319
+ const menuItems = items2.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React7.createElement(MenuItem2, { key: id }));
320
+ return /* @__PURE__ */ React7.createElement(FloatingBarContainer, null, /* @__PURE__ */ React7.createElement(UnstableFloatingActionBar, { actions: menuItems }, children));
311
321
  }
312
322
 
313
323
  // src/controls/image-media-control.tsx
@@ -330,7 +340,7 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
330
340
  });
331
341
  }
332
342
  });
333
- return /* @__PURE__ */ React7.createElement(ControlActions, null, /* @__PURE__ */ React7.createElement(Card, { variant: "outlined" }, /* @__PURE__ */ React7.createElement(CardMedia, { image: src, sx: { height: 150 } }, isFetching ? /* @__PURE__ */ React7.createElement(Stack, { justifyContent: "center", alignItems: "center", width: "100%", height: "100%" }, /* @__PURE__ */ React7.createElement(CircularProgress, null)) : /* @__PURE__ */ React7.createElement(React7.Fragment, null)), /* @__PURE__ */ React7.createElement(CardOverlay, null, /* @__PURE__ */ React7.createElement(Stack, { gap: 1 }, /* @__PURE__ */ React7.createElement(
343
+ return /* @__PURE__ */ React8.createElement(ControlActions, null, /* @__PURE__ */ React8.createElement(Card, { variant: "outlined" }, /* @__PURE__ */ React8.createElement(CardMedia, { image: src, sx: { height: 150 } }, isFetching ? /* @__PURE__ */ React8.createElement(Stack, { justifyContent: "center", alignItems: "center", width: "100%", height: "100%" }, /* @__PURE__ */ React8.createElement(CircularProgress, null)) : /* @__PURE__ */ React8.createElement(React8.Fragment, null)), /* @__PURE__ */ React8.createElement(CardOverlay, null, /* @__PURE__ */ React8.createElement(Stack, { gap: 1 }, /* @__PURE__ */ React8.createElement(
334
344
  Button,
335
345
  {
336
346
  size: "tiny",
@@ -339,13 +349,13 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
339
349
  onClick: () => open({ mode: "browse" })
340
350
  },
341
351
  __("Select image", "elementor")
342
- ), /* @__PURE__ */ React7.createElement(
352
+ ), /* @__PURE__ */ React8.createElement(
343
353
  Button,
344
354
  {
345
355
  size: "tiny",
346
356
  variant: "text",
347
357
  color: "inherit",
348
- startIcon: /* @__PURE__ */ React7.createElement(UploadIcon, null),
358
+ startIcon: /* @__PURE__ */ React8.createElement(UploadIcon, null),
349
359
  onClick: () => open({ mode: "upload" })
350
360
  },
351
361
  __("Upload", "elementor")
@@ -353,62 +363,103 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
353
363
  });
354
364
 
355
365
  // src/controls/select-control.tsx
356
- import * as React8 from "react";
366
+ import * as React9 from "react";
357
367
  import { stringPropTypeUtil } from "@elementor/editor-props";
358
368
  import { MenuListItem } from "@elementor/editor-ui";
359
- import { Select } from "@elementor/ui";
369
+ import { Select, Typography } from "@elementor/ui";
360
370
  var SelectControl = createControl(({ options, onChange }) => {
361
- const { value, setValue, disabled } = useBoundProp(stringPropTypeUtil);
371
+ const { value, setValue, disabled, placeholder } = useBoundProp(stringPropTypeUtil);
362
372
  const handleChange = (event) => {
363
373
  const newValue = event.target.value || null;
364
374
  onChange?.(newValue, value);
365
375
  setValue(newValue);
366
376
  };
367
- return /* @__PURE__ */ React8.createElement(ControlActions, null, /* @__PURE__ */ React8.createElement(
377
+ return /* @__PURE__ */ React9.createElement(ControlActions, null, /* @__PURE__ */ React9.createElement(
368
378
  Select,
369
379
  {
370
380
  sx: { overflow: "hidden" },
371
381
  displayEmpty: true,
372
382
  size: "tiny",
383
+ renderValue: (selectedValue) => {
384
+ const findOptionByValue = (searchValue) => options.find((opt) => opt.value === searchValue);
385
+ if (!selectedValue || selectedValue === "") {
386
+ if (placeholder) {
387
+ const placeholderOption = findOptionByValue(placeholder);
388
+ const displayText = placeholderOption?.label || placeholder;
389
+ return /* @__PURE__ */ React9.createElement(Typography, { component: "span", variant: "caption", color: "text.tertiary" }, displayText);
390
+ }
391
+ return "";
392
+ }
393
+ const option = findOptionByValue(selectedValue);
394
+ return option?.label || selectedValue;
395
+ },
373
396
  value: value ?? "",
374
397
  onChange: handleChange,
375
398
  disabled,
376
399
  fullWidth: true
377
400
  },
378
- options.map(({ label, ...props }) => /* @__PURE__ */ React8.createElement(MenuListItem, { key: props.value, ...props, value: props.value ?? "" }, label))
401
+ options.map(({ label, ...props }) => /* @__PURE__ */ React9.createElement(MenuListItem, { key: props.value, ...props, value: props.value ?? "" }, label))
379
402
  ));
380
403
  });
381
404
 
382
405
  // src/controls/image-control.tsx
383
406
  var ImageControl = createControl(({ sizes, showMode = "all" }) => {
384
407
  const propContext = useBoundProp(imagePropTypeUtil);
408
+ let componentToRender;
409
+ switch (showMode) {
410
+ case "media":
411
+ componentToRender = /* @__PURE__ */ React10.createElement(ImageSrcControl, null);
412
+ break;
413
+ case "sizes":
414
+ componentToRender = /* @__PURE__ */ React10.createElement(ImageSizeControl, { sizes });
415
+ break;
416
+ case "all":
417
+ default:
418
+ componentToRender = /* @__PURE__ */ React10.createElement(Stack2, { gap: 1.5 }, /* @__PURE__ */ React10.createElement(ControlFormLabel, null, __2("Image", "elementor")), /* @__PURE__ */ React10.createElement(ImageSrcControl, null), /* @__PURE__ */ React10.createElement(Grid, { container: true, gap: 1.5, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React10.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React10.createElement(ControlFormLabel, null, __2("Resolution", "elementor"))), /* @__PURE__ */ React10.createElement(Grid, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React10.createElement(ImageSizeControl, { sizes }))));
419
+ }
420
+ return /* @__PURE__ */ React10.createElement(PropProvider, { ...propContext }, componentToRender);
421
+ });
422
+ var ImageSrcControl = () => {
385
423
  const { data: allowSvgUpload } = useUnfilteredFilesUpload();
386
424
  const mediaTypes = allowSvgUpload ? ["image", "svg"] : ["image"];
387
- return /* @__PURE__ */ React9.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React9.createElement(Stack2, { gap: 1.5 }, ["all", "media"].includes(showMode) ? /* @__PURE__ */ React9.createElement(PropKeyProvider, { bind: "src" }, /* @__PURE__ */ React9.createElement(ImageMediaControl, { mediaTypes })) : null, ["all", "sizes"].includes(showMode) ? /* @__PURE__ */ React9.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React9.createElement(SelectControl, { options: sizes })) : null));
388
- });
425
+ return /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "src" }, /* @__PURE__ */ React10.createElement(ImageMediaControl, { mediaTypes }));
426
+ };
427
+ var ImageSizeControl = ({ sizes }) => {
428
+ return /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React10.createElement(SelectControl, { options: sizes }));
429
+ };
389
430
 
390
431
  // src/controls/text-control.tsx
391
- import * as React10 from "react";
432
+ import * as React11 from "react";
392
433
  import { stringPropTypeUtil as stringPropTypeUtil2 } from "@elementor/editor-props";
393
434
  import { TextField } from "@elementor/ui";
394
- var TextControl = createControl(({ placeholder }) => {
395
- const { value, setValue, disabled } = useBoundProp(stringPropTypeUtil2);
396
- const handleChange = (event) => setValue(event.target.value);
397
- return /* @__PURE__ */ React10.createElement(ControlActions, null, /* @__PURE__ */ React10.createElement(
398
- TextField,
399
- {
400
- size: "tiny",
401
- fullWidth: true,
402
- disabled,
403
- value: value ?? "",
404
- onChange: handleChange,
405
- placeholder
406
- }
407
- ));
408
- });
435
+ var TextControl = createControl(
436
+ ({
437
+ placeholder,
438
+ error,
439
+ inputValue,
440
+ inputDisabled,
441
+ sx
442
+ }) => {
443
+ const { value, setValue, disabled } = useBoundProp(stringPropTypeUtil2);
444
+ const handleChange = (event) => setValue(event.target.value);
445
+ return /* @__PURE__ */ React11.createElement(ControlActions, null, /* @__PURE__ */ React11.createElement(
446
+ TextField,
447
+ {
448
+ size: "tiny",
449
+ fullWidth: true,
450
+ disabled: inputDisabled ?? disabled,
451
+ value: inputValue ?? value ?? "",
452
+ onChange: handleChange,
453
+ placeholder,
454
+ error,
455
+ sx
456
+ }
457
+ ));
458
+ }
459
+ );
409
460
 
410
461
  // src/controls/text-area-control.tsx
411
- import * as React11 from "react";
462
+ import * as React12 from "react";
412
463
  import { stringPropTypeUtil as stringPropTypeUtil3 } from "@elementor/editor-props";
413
464
  import { TextField as TextField2 } from "@elementor/ui";
414
465
  var TextAreaControl = createControl(({ placeholder }) => {
@@ -416,7 +467,7 @@ var TextAreaControl = createControl(({ placeholder }) => {
416
467
  const handleChange = (event) => {
417
468
  setValue(event.target.value);
418
469
  };
419
- return /* @__PURE__ */ React11.createElement(ControlActions, null, /* @__PURE__ */ React11.createElement(
470
+ return /* @__PURE__ */ React12.createElement(ControlActions, null, /* @__PURE__ */ React12.createElement(
420
471
  TextField2,
421
472
  {
422
473
  size: "tiny",
@@ -432,14 +483,14 @@ var TextAreaControl = createControl(({ placeholder }) => {
432
483
  });
433
484
 
434
485
  // src/controls/size-control.tsx
435
- import * as React15 from "react";
486
+ import * as React16 from "react";
436
487
  import { useEffect as useEffect2, useState as useState3 } from "react";
437
488
  import { sizePropTypeUtil } from "@elementor/editor-props";
438
489
  import { useActiveBreakpoint } from "@elementor/editor-responsive";
439
490
  import { usePopupState as usePopupState2 } from "@elementor/ui";
440
491
 
441
492
  // src/components/size-control/size-input.tsx
442
- import * as React13 from "react";
493
+ import * as React14 from "react";
443
494
  import { useRef } from "react";
444
495
  import { PencilIcon } from "@elementor/icons";
445
496
  import { Box, InputAdornment as InputAdornment2 } from "@elementor/ui";
@@ -452,7 +503,7 @@ function isUnitExtendedOption(unit) {
452
503
  }
453
504
 
454
505
  // src/components/size-control/text-field-inner-selection.tsx
455
- import * as React12 from "react";
506
+ import * as React13 from "react";
456
507
  import { forwardRef, useId } from "react";
457
508
  import { MenuListItem as MenuListItem2 } from "@elementor/editor-ui";
458
509
  import {
@@ -477,7 +528,7 @@ var TextFieldInnerSelection = forwardRef(
477
528
  inputProps,
478
529
  disabled
479
530
  }, ref) => {
480
- return /* @__PURE__ */ React12.createElement(
531
+ return /* @__PURE__ */ React13.createElement(
481
532
  TextField3,
482
533
  {
483
534
  ref,
@@ -513,7 +564,7 @@ var SelectionEndAdornment = ({
513
564
  onClick(options[index]);
514
565
  popupState.close();
515
566
  };
516
- return /* @__PURE__ */ React12.createElement(InputAdornment, { position: "end" }, /* @__PURE__ */ React12.createElement(
567
+ return /* @__PURE__ */ React13.createElement(InputAdornment, { position: "end" }, /* @__PURE__ */ React13.createElement(
517
568
  Button2,
518
569
  {
519
570
  size: "small",
@@ -523,7 +574,7 @@ var SelectionEndAdornment = ({
523
574
  ...bindTrigger(popupState)
524
575
  },
525
576
  alternativeOptionLabels[value] ?? value
526
- ), /* @__PURE__ */ React12.createElement(Menu, { MenuListProps: { dense: true }, ...bindMenu(popupState) }, options.map((option, index) => /* @__PURE__ */ React12.createElement(
577
+ ), /* @__PURE__ */ React13.createElement(Menu, { MenuListProps: { dense: true }, ...bindMenu(popupState) }, options.map((option, index) => /* @__PURE__ */ React13.createElement(
527
578
  MenuListItem2,
528
579
  {
529
580
  key: option,
@@ -576,8 +627,8 @@ var SizeInput = ({
576
627
  autoComplete: "off",
577
628
  onClick,
578
629
  onFocus,
579
- startAdornment: startIcon ? /* @__PURE__ */ React13.createElement(InputAdornment2, { position: "start", disabled }, startIcon) : void 0,
580
- endAdornment: /* @__PURE__ */ React13.createElement(
630
+ startAdornment: startIcon ? /* @__PURE__ */ React14.createElement(InputAdornment2, { position: "start", disabled }, startIcon) : void 0,
631
+ endAdornment: /* @__PURE__ */ React14.createElement(
581
632
  SelectionEndAdornment,
582
633
  {
583
634
  disabled,
@@ -585,7 +636,7 @@ var SizeInput = ({
585
636
  onClick: handleUnitChange,
586
637
  value: unit,
587
638
  alternativeOptionLabels: {
588
- custom: /* @__PURE__ */ React13.createElement(PencilIcon, { fontSize: "small" })
639
+ custom: /* @__PURE__ */ React14.createElement(PencilIcon, { fontSize: "small" })
589
640
  },
590
641
  menuItemsAttributes: units2.includes("custom") ? {
591
642
  custom: popupAttributes
@@ -593,7 +644,7 @@ var SizeInput = ({
593
644
  }
594
645
  )
595
646
  };
596
- return /* @__PURE__ */ React13.createElement(ControlActions, null, /* @__PURE__ */ React13.createElement(Box, null, /* @__PURE__ */ React13.createElement(
647
+ return /* @__PURE__ */ React14.createElement(ControlActions, null, /* @__PURE__ */ React14.createElement(Box, null, /* @__PURE__ */ React14.createElement(
597
648
  TextFieldInnerSelection,
598
649
  {
599
650
  disabled,
@@ -615,14 +666,23 @@ var SizeInput = ({
615
666
  };
616
667
 
617
668
  // src/components/text-field-popover.tsx
618
- import * as React14 from "react";
619
- import { bindPopover, Paper, Popover, TextField as TextField4 } from "@elementor/ui";
669
+ import * as React15 from "react";
670
+ import { bindPopover, Popover, TextField as TextField4 } from "@elementor/ui";
620
671
  var TextFieldPopover = (props) => {
621
672
  const { popupState, restoreValue, anchorRef, value, onChange } = props;
622
- return /* @__PURE__ */ React14.createElement(
673
+ return /* @__PURE__ */ React15.createElement(
623
674
  Popover,
624
675
  {
625
676
  disablePortal: true,
677
+ slotProps: {
678
+ paper: {
679
+ sx: {
680
+ borderRadius: 2,
681
+ width: anchorRef.current?.offsetWidth + "px",
682
+ p: 1.5
683
+ }
684
+ }
685
+ },
626
686
  ...bindPopover(popupState),
627
687
  anchorOrigin: { vertical: "bottom", horizontal: "center" },
628
688
  transformOrigin: { vertical: "top", horizontal: "center" },
@@ -631,28 +691,18 @@ var TextFieldPopover = (props) => {
631
691
  popupState.close();
632
692
  }
633
693
  },
634
- /* @__PURE__ */ React14.createElement(
635
- Paper,
694
+ /* @__PURE__ */ React15.createElement(
695
+ TextField4,
636
696
  {
637
- sx: {
638
- width: anchorRef.current?.offsetWidth + "px",
639
- borderRadius: 2,
640
- p: 1.5
641
- }
642
- },
643
- /* @__PURE__ */ React14.createElement(
644
- TextField4,
645
- {
646
- value,
647
- onChange,
648
- size: "tiny",
649
- type: "text",
650
- fullWidth: true,
651
- inputProps: {
652
- autoFocus: true
653
- }
697
+ value,
698
+ onChange,
699
+ size: "tiny",
700
+ type: "text",
701
+ fullWidth: true,
702
+ inputProps: {
703
+ autoFocus: true
654
704
  }
655
- )
705
+ }
656
706
  )
657
707
  );
658
708
  };
@@ -732,12 +782,12 @@ var SizeControl = createControl((props) => {
732
782
  return !!newState?.numeric || newState?.numeric === 0;
733
783
  },
734
784
  fallback: (newState) => ({
735
- unit: newState?.unit ?? props.defaultUnit ?? DEFAULT_UNIT,
785
+ unit: newState?.unit ?? defaultUnit,
736
786
  numeric: newState?.numeric ?? DEFAULT_SIZE,
737
787
  custom: newState?.custom ?? ""
738
788
  })
739
789
  });
740
- const { size: controlSize = DEFAULT_SIZE, unit: controlUnit = DEFAULT_UNIT } = extractValueFromState(state) || {};
790
+ const { size: controlSize = DEFAULT_SIZE, unit: controlUnit = defaultUnit } = extractValueFromState(state) || {};
741
791
  const handleUnitChange = (newUnit) => {
742
792
  if (newUnit === "custom") {
743
793
  popupState.open(anchorRef?.current);
@@ -767,9 +817,13 @@ var SizeControl = createControl((props) => {
767
817
  }
768
818
  };
769
819
  useEffect2(() => {
770
- const newState = createStateFromSizeProp(sizeValue, defaultUnit);
771
- const currentUnit = isUnitExtendedOption(state.unit) ? "custom" : "numeric";
772
- const mergedStates = { ...state, [currentUnit]: newState[currentUnit] };
820
+ const newState = createStateFromSizeProp(sizeValue, state.unit === "custom" ? state.unit : defaultUnit);
821
+ const currentUnitType = isUnitExtendedOption(state.unit) ? "custom" : "numeric";
822
+ const mergedStates = {
823
+ ...state,
824
+ unit: newState.unit ?? state.unit,
825
+ [currentUnitType]: newState[currentUnitType]
826
+ };
773
827
  if (mergedStates.unit !== "auto" && areStatesEqual(state, mergedStates)) {
774
828
  return;
775
829
  }
@@ -785,7 +839,7 @@ var SizeControl = createControl((props) => {
785
839
  setState(newState);
786
840
  }
787
841
  }, [activeBreakpoint]);
788
- return /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(
842
+ return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
789
843
  SizeInput,
790
844
  {
791
845
  disabled,
@@ -801,7 +855,7 @@ var SizeControl = createControl((props) => {
801
855
  onClick: onInputClick,
802
856
  popupState
803
857
  }
804
- ), anchorRef?.current && /* @__PURE__ */ React15.createElement(
858
+ ), anchorRef?.current && /* @__PURE__ */ React16.createElement(
805
859
  TextFieldPopover,
806
860
  {
807
861
  popupState,
@@ -857,15 +911,8 @@ function areStatesEqual(state1, state2) {
857
911
  import * as React19 from "react";
858
912
  import { forwardRef as forwardRef2, useRef as useRef2 } from "react";
859
913
  import { strokePropTypeUtil } from "@elementor/editor-props";
860
- import { Grid } from "@elementor/ui";
861
- import { __ as __2 } from "@wordpress/i18n";
862
-
863
- // src/components/control-form-label.tsx
864
- import * as React16 from "react";
865
- import { FormLabel } from "@elementor/ui";
866
- var ControlFormLabel = (props) => {
867
- return /* @__PURE__ */ React16.createElement(FormLabel, { size: "tiny", ...props });
868
- };
914
+ import { Grid as Grid2 } from "@elementor/ui";
915
+ import { __ as __3 } from "@wordpress/i18n";
869
916
 
870
917
  // src/components/section-content.tsx
871
918
  import * as React17 from "react";
@@ -878,7 +925,8 @@ import { colorPropTypeUtil } from "@elementor/editor-props";
878
925
  import { UnstableColorField } from "@elementor/ui";
879
926
  var ColorControl = createControl(
880
927
  ({ propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, ...props }) => {
881
- const { value, setValue, disabled } = useBoundProp(propTypeUtil);
928
+ const { value, setValue, placeholder: boundPropPlaceholder, disabled } = useBoundProp(propTypeUtil);
929
+ const placeholder = props.placeholder ?? boundPropPlaceholder;
882
930
  const handleChange = (selectedColor) => {
883
931
  setValue(selectedColor || null);
884
932
  };
@@ -888,6 +936,7 @@ var ColorControl = createControl(
888
936
  size: "tiny",
889
937
  fullWidth: true,
890
938
  value: value ?? "",
939
+ placeholder: placeholder ?? "",
891
940
  onChange: handleChange,
892
941
  ...props,
893
942
  disabled,
@@ -902,6 +951,14 @@ var ColorControl = createControl(
902
951
  transformOrigin: {
903
952
  vertical: "top",
904
953
  horizontal: -10
954
+ },
955
+ slotProps: {
956
+ colorIndicator: {
957
+ value: value ?? placeholder ?? ""
958
+ },
959
+ colorBox: {
960
+ value: value ?? placeholder ?? ""
961
+ }
905
962
  }
906
963
  }
907
964
  }
@@ -915,16 +972,16 @@ var units = ["px", "em", "rem"];
915
972
  var StrokeControl = createControl(() => {
916
973
  const propContext = useBoundProp(strokePropTypeUtil);
917
974
  const rowRef = useRef2(null);
918
- return /* @__PURE__ */ React19.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React19.createElement(SectionContent, null, /* @__PURE__ */ React19.createElement(Control, { bind: "width", label: __2("Stroke width", "elementor"), ref: rowRef }, /* @__PURE__ */ React19.createElement(SizeControl, { units, anchorRef: rowRef })), /* @__PURE__ */ React19.createElement(Control, { bind: "color", label: __2("Stroke color", "elementor") }, /* @__PURE__ */ React19.createElement(ColorControl, null))));
975
+ return /* @__PURE__ */ React19.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React19.createElement(SectionContent, null, /* @__PURE__ */ React19.createElement(Control, { bind: "width", label: __3("Stroke width", "elementor"), ref: rowRef }, /* @__PURE__ */ React19.createElement(SizeControl, { units, anchorRef: rowRef })), /* @__PURE__ */ React19.createElement(Control, { bind: "color", label: __3("Stroke color", "elementor") }, /* @__PURE__ */ React19.createElement(ColorControl, null))));
919
976
  });
920
- var Control = forwardRef2(({ bind, label, children }, ref) => /* @__PURE__ */ React19.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React19.createElement(Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref }, /* @__PURE__ */ React19.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React19.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React19.createElement(Grid, { item: true, xs: 6 }, children))));
977
+ var Control = forwardRef2(({ bind, label, children }, ref) => /* @__PURE__ */ React19.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React19.createElement(Grid2, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref }, /* @__PURE__ */ React19.createElement(Grid2, { item: true, xs: 6 }, /* @__PURE__ */ React19.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React19.createElement(Grid2, { item: true, xs: 6 }, children))));
921
978
 
922
979
  // src/controls/box-shadow-repeater-control.tsx
923
980
  import * as React26 from "react";
924
981
  import { useRef as useRef3 } from "react";
925
982
  import { boxShadowPropTypeUtil, shadowPropTypeUtil } from "@elementor/editor-props";
926
- import { FormLabel as FormLabel2, Grid as Grid3, UnstableColorIndicator } from "@elementor/ui";
927
- import { __ as __4 } from "@wordpress/i18n";
983
+ import { FormLabel as FormLabel2, Grid as Grid4, UnstableColorIndicator } from "@elementor/ui";
984
+ import { __ as __5 } from "@wordpress/i18n";
928
985
 
929
986
  // src/components/popover-content.tsx
930
987
  import * as React20 from "react";
@@ -934,9 +991,9 @@ var PopoverContent = ({ gap = 1.5, children, ...props }) => /* @__PURE__ */ Reac
934
991
  // src/components/popover-grid-container.tsx
935
992
  import { forwardRef as forwardRef3 } from "react";
936
993
  import * as React21 from "react";
937
- import { Grid as Grid2 } from "@elementor/ui";
994
+ import { Grid as Grid3 } from "@elementor/ui";
938
995
  var PopoverGridContainer = forwardRef3(
939
- ({ gap = 1.5, alignItems = "center", flexWrap = "nowrap", children }, ref) => /* @__PURE__ */ React21.createElement(Grid2, { container: true, gap, alignItems, flexWrap, ref }, children)
996
+ ({ gap = 1.5, alignItems = "center", flexWrap = "nowrap", children }, ref) => /* @__PURE__ */ React21.createElement(Grid3, { container: true, gap, alignItems, flexWrap, ref }, children)
940
997
  );
941
998
 
942
999
  // src/components/repeater.tsx
@@ -951,11 +1008,11 @@ import {
951
1008
  Popover as Popover2,
952
1009
  Stack as Stack5,
953
1010
  Tooltip,
954
- Typography,
1011
+ Typography as Typography2,
955
1012
  UnstableTag,
956
1013
  usePopupState as usePopupState3
957
1014
  } from "@elementor/ui";
958
- import { __ as __3 } from "@wordpress/i18n";
1015
+ import { __ as __4 } from "@wordpress/i18n";
959
1016
 
960
1017
  // src/control-adornments/control-adornments.tsx
961
1018
  import * as React23 from "react";
@@ -964,7 +1021,7 @@ import * as React23 from "react";
964
1021
  import * as React22 from "react";
965
1022
  import { createContext as createContext5, useContext as useContext5 } from "react";
966
1023
  var Context2 = createContext5(null);
967
- var ControlAdornmentsProvider = ({ children, items }) => /* @__PURE__ */ React22.createElement(Context2.Provider, { value: { items } }, children);
1024
+ var ControlAdornmentsProvider = ({ children, items: items2 }) => /* @__PURE__ */ React22.createElement(Context2.Provider, { value: { items: items2 } }, children);
968
1025
  var useControlAdornments = () => {
969
1026
  const context = useContext5(Context2);
970
1027
  return context?.items ?? [];
@@ -972,11 +1029,11 @@ var useControlAdornments = () => {
972
1029
 
973
1030
  // src/control-adornments/control-adornments.tsx
974
1031
  function ControlAdornments() {
975
- const items = useControlAdornments();
976
- if (items?.length === 0) {
1032
+ const items2 = useControlAdornments();
1033
+ if (items2?.length === 0) {
977
1034
  return null;
978
1035
  }
979
- return /* @__PURE__ */ React23.createElement(React23.Fragment, null, items.map(({ Adornment, id }) => /* @__PURE__ */ React23.createElement(Adornment, { key: id })));
1036
+ return /* @__PURE__ */ React23.createElement(React23.Fragment, null, items2.map(({ Adornment, id }) => /* @__PURE__ */ React23.createElement(Adornment, { key: id })));
980
1037
  }
981
1038
 
982
1039
  // src/locations.ts
@@ -1077,16 +1134,17 @@ var Repeater = ({
1077
1134
  setValues: setRepeaterValues,
1078
1135
  showDuplicate = true,
1079
1136
  showToggle = true,
1080
- isSortable = true
1137
+ isSortable = true,
1138
+ collectionPropUtil
1081
1139
  }) => {
1082
1140
  const [openItem, setOpenItem] = useState4(EMPTY_OPEN_ITEM);
1083
- const [items, setItems] = useSyncExternalState({
1141
+ const [items2, setItems] = useSyncExternalState({
1084
1142
  external: repeaterValues,
1085
1143
  // @ts-expect-error - as long as persistWhen => true, value will never be null
1086
1144
  setExternal: setRepeaterValues,
1087
1145
  persistWhen: () => true
1088
1146
  });
1089
- const [uniqueKeys, setUniqueKeys] = useState4(items.map((_, index) => index));
1147
+ const [uniqueKeys, setUniqueKeys] = useState4(items2.map((_, index) => index));
1090
1148
  const generateNextKey = (source) => {
1091
1149
  return 1 + Math.max(0, ...source);
1092
1150
  };
@@ -1094,10 +1152,10 @@ var Repeater = ({
1094
1152
  const newItem = structuredClone(itemSettings.initialValues);
1095
1153
  const newKey = generateNextKey(uniqueKeys);
1096
1154
  if (addToBottom) {
1097
- setItems([...items, newItem]);
1155
+ setItems([...items2, newItem]);
1098
1156
  setUniqueKeys([...uniqueKeys, newKey]);
1099
1157
  } else {
1100
- setItems([newItem, ...items]);
1158
+ setItems([newItem, ...items2]);
1101
1159
  setUniqueKeys([newKey, ...uniqueKeys]);
1102
1160
  }
1103
1161
  if (openOnAdd) {
@@ -1105,10 +1163,10 @@ var Repeater = ({
1105
1163
  }
1106
1164
  };
1107
1165
  const duplicateRepeaterItem = (index) => {
1108
- const newItem = structuredClone(items[index]);
1166
+ const newItem = structuredClone(items2[index]);
1109
1167
  const newKey = generateNextKey(uniqueKeys);
1110
1168
  const atPosition = 1 + index;
1111
- setItems([...items.slice(0, atPosition), newItem, ...items.slice(atPosition)]);
1169
+ setItems([...items2.slice(0, atPosition), newItem, ...items2.slice(atPosition)]);
1112
1170
  setUniqueKeys([...uniqueKeys.slice(0, atPosition), newKey, ...uniqueKeys.slice(atPosition)]);
1113
1171
  };
1114
1172
  const removeRepeaterItem = (index) => {
@@ -1118,14 +1176,14 @@ var Repeater = ({
1118
1176
  })
1119
1177
  );
1120
1178
  setItems(
1121
- items.filter((_, pos) => {
1179
+ items2.filter((_, pos) => {
1122
1180
  return pos !== index;
1123
1181
  })
1124
1182
  );
1125
1183
  };
1126
1184
  const toggleDisableRepeaterItem = (index) => {
1127
1185
  setItems(
1128
- items.map((value, pos) => {
1186
+ items2.map((value, pos) => {
1129
1187
  if (pos === index) {
1130
1188
  const { disabled: propDisabled, ...rest } = value;
1131
1189
  return { ...rest, ...propDisabled ? {} : { disabled: true } };
@@ -1152,7 +1210,7 @@ var Repeater = ({
1152
1210
  gap: 1,
1153
1211
  sx: { marginInlineEnd: -0.75 }
1154
1212
  },
1155
- /* @__PURE__ */ React25.createElement(Typography, { component: "label", variant: "caption", color: "text.secondary" }, label),
1213
+ /* @__PURE__ */ React25.createElement(Typography2, { component: "label", variant: "caption", color: "text.secondary" }, label),
1156
1214
  /* @__PURE__ */ React25.createElement(ControlAdornments, null),
1157
1215
  /* @__PURE__ */ React25.createElement(
1158
1216
  IconButton,
@@ -1161,12 +1219,12 @@ var Repeater = ({
1161
1219
  sx: { ml: "auto" },
1162
1220
  disabled,
1163
1221
  onClick: addRepeaterItem,
1164
- "aria-label": __3("Add item", "elementor")
1222
+ "aria-label": __4("Add item", "elementor")
1165
1223
  },
1166
1224
  /* @__PURE__ */ React25.createElement(PlusIcon, { fontSize: SIZE })
1167
1225
  )
1168
1226
  ), 0 < uniqueKeys.length && /* @__PURE__ */ React25.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key, index) => {
1169
- const value = items[index];
1227
+ const value = items2[index];
1170
1228
  if (!value) {
1171
1229
  return null;
1172
1230
  }
@@ -1183,7 +1241,8 @@ var Repeater = ({
1183
1241
  openOnMount: openOnAdd && openItem === key,
1184
1242
  onOpen: () => setOpenItem(EMPTY_OPEN_ITEM),
1185
1243
  showDuplicate,
1186
- showToggle
1244
+ showToggle,
1245
+ collectionPropUtil
1187
1246
  },
1188
1247
  (props) => /* @__PURE__ */ React25.createElement(itemSettings.Content, { ...props, value, bind: String(index) })
1189
1248
  ));
@@ -1201,13 +1260,14 @@ var RepeaterItem = ({
1201
1260
  onOpen,
1202
1261
  showDuplicate,
1203
1262
  showToggle,
1204
- disabled
1263
+ disabled,
1264
+ collectionPropUtil
1205
1265
  }) => {
1206
1266
  const [anchorEl, setAnchorEl] = useState4(null);
1207
1267
  const { popoverState, popoverProps, ref, setRef } = usePopover(openOnMount, onOpen);
1208
- const duplicateLabel = __3("Duplicate", "elementor");
1209
- const toggleLabel = propDisabled ? __3("Show", "elementor") : __3("Hide", "elementor");
1210
- const removeLabel = __3("Remove", "elementor");
1268
+ const duplicateLabel = __4("Duplicate", "elementor");
1269
+ const toggleLabel = propDisabled ? __4("Show", "elementor") : __4("Hide", "elementor");
1270
+ const removeLabel = __4("Remove", "elementor");
1211
1271
  return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(
1212
1272
  UnstableTag,
1213
1273
  {
@@ -1217,7 +1277,7 @@ var RepeaterItem = ({
1217
1277
  fullWidth: true,
1218
1278
  ref: setRef,
1219
1279
  variant: "outlined",
1220
- "aria-label": __3("Open item", "elementor"),
1280
+ "aria-label": __4("Open item", "elementor"),
1221
1281
  ...bindTrigger2(popoverState),
1222
1282
  startIcon,
1223
1283
  actions: /* @__PURE__ */ React25.createElement(React25.Fragment, null, showDuplicate && /* @__PURE__ */ React25.createElement(Tooltip, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React25.createElement(IconButton, { size: SIZE, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React25.createElement(CopyIcon, { fontSize: SIZE }))), showToggle && /* @__PURE__ */ React25.createElement(Tooltip, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React25.createElement(IconButton, { size: SIZE, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React25.createElement(EyeOffIcon, { fontSize: SIZE }) : /* @__PURE__ */ React25.createElement(EyeIcon, { fontSize: SIZE }))), /* @__PURE__ */ React25.createElement(Tooltip, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React25.createElement(IconButton, { size: SIZE, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React25.createElement(XIcon, { fontSize: SIZE }))))
@@ -1236,7 +1296,7 @@ var RepeaterItem = ({
1236
1296
  ...popoverProps,
1237
1297
  anchorEl: ref
1238
1298
  },
1239
- /* @__PURE__ */ React25.createElement(Box2, null, children({ anchorEl }))
1299
+ /* @__PURE__ */ React25.createElement(Box2, null, children({ anchorEl, collectionPropUtil }))
1240
1300
  ));
1241
1301
  };
1242
1302
  var usePopover = (openOnMount, onOpen) => {
@@ -1260,14 +1320,14 @@ var usePopover = (openOnMount, onOpen) => {
1260
1320
  // src/controls/box-shadow-repeater-control.tsx
1261
1321
  var BoxShadowRepeaterControl = createControl(() => {
1262
1322
  const { propType, value, setValue, disabled } = useBoundProp(boxShadowPropTypeUtil);
1263
- return /* @__PURE__ */ React26.createElement(PropProvider, { propType, value, setValue, disabled }, /* @__PURE__ */ React26.createElement(
1323
+ return /* @__PURE__ */ React26.createElement(PropProvider, { propType, value, setValue, isDisabled: () => disabled }, /* @__PURE__ */ React26.createElement(
1264
1324
  Repeater,
1265
1325
  {
1266
1326
  openOnAdd: true,
1267
1327
  disabled,
1268
1328
  values: value ?? [],
1269
1329
  setValues: setValue,
1270
- label: __4("Box shadow", "elementor"),
1330
+ label: __5("Box shadow", "elementor"),
1271
1331
  itemSettings: {
1272
1332
  Icon: ItemIcon,
1273
1333
  Label: ItemLabel,
@@ -1284,22 +1344,22 @@ var ItemContent = ({ anchorEl, bind }) => {
1284
1344
  var Content = ({ anchorEl }) => {
1285
1345
  const context = useBoundProp(shadowPropTypeUtil);
1286
1346
  const rowRef = [useRef3(null), useRef3(null)];
1287
- return /* @__PURE__ */ React26.createElement(PropProvider, { ...context }, /* @__PURE__ */ React26.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React26.createElement(PopoverGridContainer, null, /* @__PURE__ */ React26.createElement(Control2, { bind: "color", label: __4("Color", "elementor") }, /* @__PURE__ */ React26.createElement(ColorControl, { anchorEl })), /* @__PURE__ */ React26.createElement(Control2, { bind: "position", label: __4("Position", "elementor"), sx: { overflow: "hidden" } }, /* @__PURE__ */ React26.createElement(
1347
+ return /* @__PURE__ */ React26.createElement(PropProvider, { ...context }, /* @__PURE__ */ React26.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React26.createElement(PopoverGridContainer, null, /* @__PURE__ */ React26.createElement(Control2, { bind: "color", label: __5("Color", "elementor") }, /* @__PURE__ */ React26.createElement(ColorControl, { anchorEl })), /* @__PURE__ */ React26.createElement(Control2, { bind: "position", label: __5("Position", "elementor"), sx: { overflow: "hidden" } }, /* @__PURE__ */ React26.createElement(
1288
1348
  SelectControl,
1289
1349
  {
1290
1350
  options: [
1291
- { label: __4("Inset", "elementor"), value: "inset" },
1292
- { label: __4("Outset", "elementor"), value: null }
1351
+ { label: __5("Inset", "elementor"), value: "inset" },
1352
+ { label: __5("Outset", "elementor"), value: null }
1293
1353
  ]
1294
1354
  }
1295
- ))), /* @__PURE__ */ React26.createElement(PopoverGridContainer, { ref: rowRef[0] }, /* @__PURE__ */ React26.createElement(Control2, { bind: "hOffset", label: __4("Horizontal", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[0] })), /* @__PURE__ */ React26.createElement(Control2, { bind: "vOffset", label: __4("Vertical", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[0] }))), /* @__PURE__ */ React26.createElement(PopoverGridContainer, { ref: rowRef[1] }, /* @__PURE__ */ React26.createElement(Control2, { bind: "blur", label: __4("Blur", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[1] })), /* @__PURE__ */ React26.createElement(Control2, { bind: "spread", label: __4("Spread", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[1] })))));
1355
+ ))), /* @__PURE__ */ React26.createElement(PopoverGridContainer, { ref: rowRef[0] }, /* @__PURE__ */ React26.createElement(Control2, { bind: "hOffset", label: __5("Horizontal", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[0] })), /* @__PURE__ */ React26.createElement(Control2, { bind: "vOffset", label: __5("Vertical", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[0] }))), /* @__PURE__ */ React26.createElement(PopoverGridContainer, { ref: rowRef[1] }, /* @__PURE__ */ React26.createElement(Control2, { bind: "blur", label: __5("Blur", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[1] })), /* @__PURE__ */ React26.createElement(Control2, { bind: "spread", label: __5("Spread", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[1] })))));
1296
1356
  };
1297
1357
  var Control2 = ({
1298
1358
  label,
1299
1359
  bind,
1300
1360
  children,
1301
1361
  sx
1302
- }) => /* @__PURE__ */ React26.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React26.createElement(Grid3, { item: true, xs: 6, sx }, /* @__PURE__ */ React26.createElement(Grid3, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid3, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(FormLabel2, { size: "tiny" }, label)), /* @__PURE__ */ React26.createElement(Grid3, { item: true, xs: 12 }, children))));
1362
+ }) => /* @__PURE__ */ React26.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 6, sx }, /* @__PURE__ */ React26.createElement(Grid4, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(FormLabel2, { size: "tiny" }, label)), /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 12 }, children))));
1303
1363
  var ItemLabel = ({ value }) => {
1304
1364
  const { position, hOffset, vOffset, blur, spread } = value.value;
1305
1365
  const { size: blurSize = "", unit: blurUnit = "" } = blur?.value || {};
@@ -1343,16 +1403,24 @@ var initialShadow = {
1343
1403
  };
1344
1404
 
1345
1405
  // src/controls/filter-repeater-control.tsx
1346
- import * as React28 from "react";
1347
- import { useRef as useRef4 } from "react";
1406
+ import * as React30 from "react";
1407
+ import { useRef as useRef5 } from "react";
1348
1408
  import {
1349
1409
  blurFilterPropTypeUtil,
1350
1410
  brightnessFilterPropTypeUtil,
1351
- filterPropTypeUtil
1411
+ contrastFilterPropTypeUtil,
1412
+ dropShadowFilterPropTypeUtil,
1413
+ filterPropTypeUtil,
1414
+ grayscaleFilterPropTypeUtil,
1415
+ hueRotateFilterPropTypeUtil,
1416
+ invertFilterPropTypeUtil,
1417
+ saturateFilterPropTypeUtil,
1418
+ sepiaFilterPropTypeUtil
1352
1419
  } from "@elementor/editor-props";
1420
+ import { backdropFilterPropTypeUtil } from "@elementor/editor-props";
1353
1421
  import { MenuListItem as MenuListItem3 } from "@elementor/editor-ui";
1354
- import { Box as Box3, Grid as Grid4, Select as Select2 } from "@elementor/ui";
1355
- import { __ as __5 } from "@wordpress/i18n";
1422
+ import { Box as Box4, Grid as Grid6, Select as Select2 } from "@elementor/ui";
1423
+ import { __ as __7 } from "@wordpress/i18n";
1356
1424
 
1357
1425
  // src/components/control-label.tsx
1358
1426
  import * as React27 from "react";
@@ -1361,39 +1429,145 @@ var ControlLabel = ({ children }) => {
1361
1429
  return /* @__PURE__ */ React27.createElement(Stack6, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React27.createElement(ControlFormLabel, null, children), /* @__PURE__ */ React27.createElement(ControlAdornments, null));
1362
1430
  };
1363
1431
 
1432
+ // src/controls/filter-control/drop-shadow-item-content.tsx
1433
+ import * as React28 from "react";
1434
+ import { useRef as useRef4 } from "react";
1435
+ import { Grid as Grid5 } from "@elementor/ui";
1436
+ import { __ as __6 } from "@wordpress/i18n";
1437
+ var items = [
1438
+ {
1439
+ bind: "xAxis",
1440
+ label: __6("X-axis", "elementor"),
1441
+ rowIndex: 0
1442
+ },
1443
+ {
1444
+ bind: "yAxis",
1445
+ label: __6("Y-axis", "elementor"),
1446
+ rowIndex: 0
1447
+ },
1448
+ {
1449
+ bind: "blur",
1450
+ label: __6("Blur", "elementor"),
1451
+ rowIndex: 1
1452
+ },
1453
+ {
1454
+ bind: "color",
1455
+ label: __6("Color", "elementor"),
1456
+ rowIndex: 1
1457
+ }
1458
+ ];
1459
+ var DropShadowItemContent = ({
1460
+ propType,
1461
+ units: units2,
1462
+ anchorEl
1463
+ }) => {
1464
+ const context = useBoundProp(propType);
1465
+ const rowRefs = [useRef4(null), useRef4(null)];
1466
+ return /* @__PURE__ */ React28.createElement(PropProvider, { ...context }, items.map((item) => /* @__PURE__ */ React28.createElement(PopoverGridContainer, { key: item.bind, ref: rowRefs[item.rowIndex] ?? null }, /* @__PURE__ */ React28.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React28.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React28.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React28.createElement(Grid5, { item: true, xs: 6 }, item.bind === "color" ? /* @__PURE__ */ React28.createElement(ColorControl, { anchorEl }) : /* @__PURE__ */ React28.createElement(SizeControl, { anchorRef: rowRefs[item.rowIndex], units: units2, defaultUnit: "px" }))))));
1467
+ };
1468
+
1469
+ // src/controls/filter-control/drop-shadow-item-label.tsx
1470
+ import * as React29 from "react";
1471
+ import { Box as Box3 } from "@elementor/ui";
1472
+ var DropShadowItemLabel = ({ value }) => {
1473
+ const { xAxis, yAxis, blur } = value.value;
1474
+ const xValue = `${xAxis?.value?.size ?? 0}${xAxis?.value?.unit ?? "px"}`;
1475
+ const yValue = `${yAxis?.value?.size ?? 0}${yAxis?.value?.unit ?? "px"}`;
1476
+ const blurValue = `${blur?.value?.size ?? 10}${blur?.value?.unit ?? "px"}`;
1477
+ return /* @__PURE__ */ React29.createElement(Box3, { component: "span" }, /* @__PURE__ */ React29.createElement(Box3, { component: "span", style: { textTransform: "capitalize" } }, "Drop shadow:"), `${xValue} ${yValue} ${blurValue}`);
1478
+ };
1479
+
1364
1480
  // src/controls/filter-repeater-control.tsx
1365
1481
  var DEFAULT_FILTER_KEY = "blur";
1366
1482
  var filterConfig = {
1367
1483
  blur: {
1368
1484
  defaultValue: { $$type: "radius", radius: { $$type: "size", value: { size: 0, unit: "px" } } },
1369
- name: __5("Blur", "elementor"),
1370
- valueName: __5("Radius", "elementor"),
1485
+ name: __7("Blur", "elementor"),
1486
+ valueName: __7("Radius", "elementor"),
1371
1487
  propType: blurFilterPropTypeUtil,
1372
1488
  units: defaultUnits.filter((unit) => unit !== "%")
1373
1489
  },
1490
+ "drop-shadow": {
1491
+ defaultValue: {
1492
+ $$type: "drop-shadow",
1493
+ value: {
1494
+ xAxis: { $$type: "size", value: { size: 0, unit: "px" } },
1495
+ yAxis: { $$type: "size", value: { size: 0, unit: "px" } },
1496
+ blur: { $$type: "size", value: { size: 10, unit: "px" } },
1497
+ color: { $$type: "color", value: "rgba(0, 0, 0, 1)" }
1498
+ }
1499
+ },
1500
+ name: __7("Drop shadow", "elementor"),
1501
+ valueName: __7("Drop-shadow", "elementor"),
1502
+ propType: dropShadowFilterPropTypeUtil,
1503
+ units: defaultUnits.filter((unit) => unit !== "%")
1504
+ },
1374
1505
  brightness: {
1375
1506
  defaultValue: { $$type: "amount", amount: { $$type: "size", value: { size: 100, unit: "%" } } },
1376
- name: __5("Brightness", "elementor"),
1377
- valueName: __5("Amount", "elementor"),
1507
+ name: __7("Brightness", "elementor"),
1508
+ valueName: __7("Amount", "elementor"),
1378
1509
  propType: brightnessFilterPropTypeUtil,
1379
1510
  units: ["%"]
1511
+ },
1512
+ contrast: {
1513
+ defaultValue: { $$type: "contrast", contrast: { $$type: "size", value: { size: 100, unit: "%" } } },
1514
+ name: __7("Contrast", "elementor"),
1515
+ valueName: __7("Amount", "elementor"),
1516
+ propType: contrastFilterPropTypeUtil,
1517
+ units: ["%"]
1518
+ },
1519
+ "hue-rotate": {
1520
+ defaultValue: { $$type: "hue-rotate", "hue-rotate": { $$type: "size", value: { size: 0, unit: "deg" } } },
1521
+ name: __7("Hue Rotate", "elementor"),
1522
+ valueName: __7("Angle", "elementor"),
1523
+ propType: hueRotateFilterPropTypeUtil,
1524
+ units: ["deg", "rad", "grad", "turn"]
1525
+ },
1526
+ saturate: {
1527
+ defaultValue: { $$type: "saturate", saturate: { $$type: "size", value: { size: 100, unit: "%" } } },
1528
+ name: __7("Saturate", "elementor"),
1529
+ valueName: __7("Amount", "elementor"),
1530
+ propType: saturateFilterPropTypeUtil,
1531
+ units: ["%"]
1532
+ },
1533
+ grayscale: {
1534
+ defaultValue: { $$type: "grayscale", grayscale: { $$type: "size", value: { size: 0, unit: "%" } } },
1535
+ name: __7("Grayscale", "elementor"),
1536
+ valueName: __7("Amount", "elementor"),
1537
+ propType: grayscaleFilterPropTypeUtil,
1538
+ units: ["%"]
1539
+ },
1540
+ invert: {
1541
+ defaultValue: { $$type: "invert", invert: { $$type: "size", value: { size: 0, unit: "%" } } },
1542
+ name: __7("Invert", "elementor"),
1543
+ valueName: __7("Amount", "elementor"),
1544
+ propType: invertFilterPropTypeUtil,
1545
+ units: ["%"]
1546
+ },
1547
+ sepia: {
1548
+ defaultValue: { $$type: "sepia", sepia: { $$type: "size", value: { size: 0, unit: "%" } } },
1549
+ name: __7("Sepia", "elementor"),
1550
+ valueName: __7("Amount", "elementor"),
1551
+ propType: sepiaFilterPropTypeUtil,
1552
+ units: ["%"]
1380
1553
  }
1381
1554
  };
1382
1555
  var filterKeys = Object.keys(filterConfig);
1383
- var singleSizeFilterNames = filterKeys.filter((name) => {
1384
- const filter = filterConfig[name].defaultValue;
1385
- return filter[filter.$$type].$$type === "size";
1386
- });
1387
- var FilterRepeaterControl = createControl(() => {
1388
- const { propType, value: filterValues, setValue, disabled } = useBoundProp(filterPropTypeUtil);
1389
- return /* @__PURE__ */ React28.createElement(PropProvider, { propType, value: filterValues, setValue }, /* @__PURE__ */ React28.createElement(
1556
+ var isSingleSize = (key) => {
1557
+ return !["drop-shadow"].includes(key);
1558
+ };
1559
+ var FilterRepeaterControl = createControl(({ filterPropName = "filter" }) => {
1560
+ const [propUtil, label] = filterPropName === "backdrop-filter" ? [backdropFilterPropTypeUtil, __7("Backdrop Filters", "elementor")] : [filterPropTypeUtil, __7("Filters", "elementor")];
1561
+ const { propType, value: filterValues, setValue, disabled } = useBoundProp(propUtil);
1562
+ return /* @__PURE__ */ React30.createElement(PropProvider, { propType, value: filterValues, setValue }, /* @__PURE__ */ React30.createElement(
1390
1563
  Repeater,
1391
1564
  {
1392
1565
  openOnAdd: true,
1393
1566
  disabled,
1394
1567
  values: filterValues ?? [],
1395
1568
  setValues: setValue,
1396
- label: __5("Filter", "elementor"),
1569
+ label,
1570
+ collectionPropUtil: propUtil,
1397
1571
  itemSettings: {
1398
1572
  Icon: ItemIcon2,
1399
1573
  Label: ItemLabel2,
@@ -1406,21 +1580,24 @@ var FilterRepeaterControl = createControl(() => {
1406
1580
  }
1407
1581
  ));
1408
1582
  });
1409
- var ItemIcon2 = () => /* @__PURE__ */ React28.createElement(React28.Fragment, null);
1410
- var ItemLabel2 = (props) => {
1411
- const { $$type } = props.value;
1412
- return singleSizeFilterNames.includes($$type) && /* @__PURE__ */ React28.createElement(SingleSizeItemLabel, { value: props.value });
1583
+ var ItemIcon2 = () => /* @__PURE__ */ React30.createElement(React30.Fragment, null);
1584
+ var ItemLabel2 = ({ value }) => {
1585
+ return isSingleSize(value.$$type) ? /* @__PURE__ */ React30.createElement(SingleSizeItemLabel, { value }) : /* @__PURE__ */ React30.createElement(DropShadowItemLabel, { value });
1413
1586
  };
1414
1587
  var SingleSizeItemLabel = ({ value }) => {
1415
1588
  const { $$type, value: sizeValue } = value;
1416
1589
  const { $$type: key } = filterConfig[$$type].defaultValue;
1417
1590
  const defaultUnit = filterConfig[$$type].defaultValue[key].value.unit;
1418
1591
  const { unit, size } = sizeValue[key]?.value ?? { unit: defaultUnit, size: 0 };
1419
- const label = /* @__PURE__ */ React28.createElement(Box3, { component: "span", style: { textTransform: "capitalize" } }, value.$$type, ":");
1420
- return /* @__PURE__ */ React28.createElement(Box3, { component: "span" }, label, unit !== "custom" ? ` ${size ?? 0}${unit ?? defaultUnit}` : size);
1592
+ const label = /* @__PURE__ */ React30.createElement(Box4, { component: "span", style: { textTransform: "capitalize" } }, value.$$type, ":");
1593
+ return /* @__PURE__ */ React30.createElement(Box4, { component: "span" }, label, unit !== "custom" ? ` ${size ?? 0}${unit ?? defaultUnit}` : size);
1421
1594
  };
1422
- var ItemContent2 = ({ bind }) => {
1423
- const { value: filterValues, setValue } = useBoundProp(filterPropTypeUtil);
1595
+ var ItemContent2 = ({
1596
+ bind,
1597
+ collectionPropUtil,
1598
+ anchorEl
1599
+ }) => {
1600
+ const { value: filterValues, setValue } = useBoundProp(collectionPropUtil ?? filterPropTypeUtil);
1424
1601
  const itemIndex = parseInt(bind, 10);
1425
1602
  const item = filterValues?.[itemIndex];
1426
1603
  const handleChange = (e) => {
@@ -1428,11 +1605,11 @@ var ItemContent2 = ({ bind }) => {
1428
1605
  const filterType = e.target.value;
1429
1606
  newFilterValues[itemIndex] = {
1430
1607
  $$type: filterType,
1431
- value: filterConfig[filterType].defaultValue
1608
+ value: { ...filterConfig[filterType].defaultValue }
1432
1609
  };
1433
1610
  setValue(newFilterValues);
1434
1611
  };
1435
- return /* @__PURE__ */ React28.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React28.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React28.createElement(PopoverGridContainer, null, /* @__PURE__ */ React28.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React28.createElement(ControlLabel, null, __5("Filter", "elementor"))), /* @__PURE__ */ React28.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React28.createElement(
1612
+ return /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React30.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React30.createElement(PopoverGridContainer, null, /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel, null, __7("Filter", "elementor"))), /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(
1436
1613
  Select2,
1437
1614
  {
1438
1615
  sx: { overflow: "hidden" },
@@ -1441,27 +1618,29 @@ var ItemContent2 = ({ bind }) => {
1441
1618
  onChange: handleChange,
1442
1619
  fullWidth: true
1443
1620
  },
1444
- filterKeys.map((filterKey) => /* @__PURE__ */ React28.createElement(MenuListItem3, { key: filterKey, value: filterKey }, filterConfig[filterKey].name))
1445
- ))), /* @__PURE__ */ React28.createElement(Content2, { filterType: item?.$$type })));
1621
+ filterKeys.map((filterKey) => /* @__PURE__ */ React30.createElement(MenuListItem3, { key: filterKey, value: filterKey }, filterConfig[filterKey].name))
1622
+ ))), /* @__PURE__ */ React30.createElement(Content2, { filterType: item?.$$type, anchorEl })));
1446
1623
  };
1447
- var Content2 = ({ filterType }) => {
1448
- return singleSizeFilterNames.includes(filterType) && /* @__PURE__ */ React28.createElement(SingleSizeItemContent, { filterType });
1624
+ var Content2 = ({ filterType, anchorEl }) => {
1625
+ const { propType, units: units2 = [] } = filterConfig[filterType];
1626
+ return isSingleSize(filterType) ? /* @__PURE__ */ React30.createElement(SingleSizeItemContent, { filterType }) : /* @__PURE__ */ React30.createElement(DropShadowItemContent, { propType, units: units2, anchorEl });
1449
1627
  };
1450
1628
  var SingleSizeItemContent = ({ filterType }) => {
1451
1629
  const { propType, valueName, defaultValue, units: units2 } = filterConfig[filterType];
1452
1630
  const { $$type } = defaultValue;
1453
1631
  const context = useBoundProp(propType);
1454
- const rowRef = useRef4(null);
1455
- return /* @__PURE__ */ React28.createElement(PropProvider, { ...context }, /* @__PURE__ */ React28.createElement(PropKeyProvider, { bind: $$type }, /* @__PURE__ */ React28.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React28.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React28.createElement(ControlLabel, null, valueName)), /* @__PURE__ */ React28.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React28.createElement(SizeControl, { anchorRef: rowRef, units: units2 })))));
1632
+ const rowRef = useRef5(null);
1633
+ const defaultUnit = defaultValue[$$type].value.unit;
1634
+ return /* @__PURE__ */ React30.createElement(PropProvider, { ...context }, /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind: $$type }, /* @__PURE__ */ React30.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel, null, valueName)), /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(SizeControl, { anchorRef: rowRef, units: units2, defaultUnit })))));
1456
1635
  };
1457
1636
 
1458
1637
  // src/controls/toggle-control.tsx
1459
- import * as React31 from "react";
1638
+ import * as React33 from "react";
1460
1639
  import { stringPropTypeUtil as stringPropTypeUtil4 } from "@elementor/editor-props";
1461
1640
 
1462
1641
  // src/components/control-toggle-button-group.tsx
1463
- import * as React30 from "react";
1464
- import { useEffect as useEffect4, useMemo as useMemo2, useRef as useRef5, useState as useState5 } from "react";
1642
+ import * as React32 from "react";
1643
+ import { useEffect as useEffect4, useMemo as useMemo2, useRef as useRef6, useState as useState5 } from "react";
1465
1644
  import { ChevronDownIcon } from "@elementor/icons";
1466
1645
  import {
1467
1646
  ListItemText,
@@ -1470,19 +1649,19 @@ import {
1470
1649
  styled as styled3,
1471
1650
  ToggleButton,
1472
1651
  ToggleButtonGroup,
1473
- Typography as Typography2,
1652
+ Typography as Typography3,
1474
1653
  useTheme
1475
1654
  } from "@elementor/ui";
1476
1655
 
1477
1656
  // src/components/conditional-tooltip.tsx
1478
- import * as React29 from "react";
1657
+ import * as React31 from "react";
1479
1658
  import { Tooltip as Tooltip2 } from "@elementor/ui";
1480
1659
  var ConditionalTooltip = ({
1481
1660
  showTooltip,
1482
1661
  children,
1483
1662
  label
1484
1663
  }) => {
1485
- return showTooltip && label ? /* @__PURE__ */ React29.createElement(Tooltip2, { title: label, disableFocusListener: true, placement: "top" }, children) : children;
1664
+ return showTooltip && label ? /* @__PURE__ */ React31.createElement(Tooltip2, { title: label, disableFocusListener: true, placement: "top" }, children) : children;
1486
1665
  };
1487
1666
 
1488
1667
  // src/components/control-toggle-button-group.tsx
@@ -1506,15 +1685,15 @@ var ControlToggleButtonGroup = ({
1506
1685
  size = "tiny",
1507
1686
  value,
1508
1687
  onChange,
1509
- items,
1688
+ items: items2,
1510
1689
  maxItems,
1511
1690
  exclusive = false,
1512
1691
  fullWidth = false,
1513
1692
  disabled
1514
1693
  }) => {
1515
- const shouldSliceItems = exclusive && maxItems !== void 0 && items.length > maxItems;
1516
- const menuItems = shouldSliceItems ? items.slice(maxItems - 1) : [];
1517
- const fixedItems = shouldSliceItems ? items.slice(0, maxItems - 1) : items;
1694
+ const shouldSliceItems = exclusive && maxItems !== void 0 && items2.length > maxItems;
1695
+ const menuItems = shouldSliceItems ? items2.slice(maxItems - 1) : [];
1696
+ const fixedItems = shouldSliceItems ? items2.slice(0, maxItems - 1) : items2;
1518
1697
  const isRtl = "rtl" === useTheme().direction;
1519
1698
  const handleChange = (_, newValue) => {
1520
1699
  onChange(newValue);
@@ -1525,7 +1704,7 @@ var ControlToggleButtonGroup = ({
1525
1704
  const templateColumnsSuffix = isOffLimits ? "auto" : "";
1526
1705
  return `repeat(${itemsCount}, minmax(0, 25%)) ${templateColumnsSuffix}`;
1527
1706
  }, [menuItems?.length, fixedItems.length]);
1528
- return /* @__PURE__ */ React30.createElement(ControlActions, null, /* @__PURE__ */ React30.createElement(
1707
+ return /* @__PURE__ */ React32.createElement(ControlActions, null, /* @__PURE__ */ React32.createElement(
1529
1708
  StyledToggleButtonGroup,
1530
1709
  {
1531
1710
  justify,
@@ -1540,16 +1719,16 @@ var ControlToggleButtonGroup = ({
1540
1719
  width: `100%`
1541
1720
  }
1542
1721
  },
1543
- fixedItems.map(({ label, value: buttonValue, renderContent: Content5, showTooltip }) => /* @__PURE__ */ React30.createElement(
1722
+ fixedItems.map(({ label, value: buttonValue, renderContent: Content5, showTooltip }) => /* @__PURE__ */ React32.createElement(
1544
1723
  ConditionalTooltip,
1545
1724
  {
1546
1725
  key: buttonValue,
1547
1726
  label,
1548
1727
  showTooltip: showTooltip || false
1549
1728
  },
1550
- /* @__PURE__ */ React30.createElement(ToggleButton, { value: buttonValue, "aria-label": label, size, fullWidth }, /* @__PURE__ */ React30.createElement(Content5, { size }))
1729
+ /* @__PURE__ */ React32.createElement(ToggleButton, { value: buttonValue, "aria-label": label, size, fullWidth }, /* @__PURE__ */ React32.createElement(Content5, { size }))
1551
1730
  )),
1552
- menuItems.length && exclusive && /* @__PURE__ */ React30.createElement(
1731
+ menuItems.length && exclusive && /* @__PURE__ */ React32.createElement(
1553
1732
  SplitButtonGroup,
1554
1733
  {
1555
1734
  size,
@@ -1564,13 +1743,13 @@ var ControlToggleButtonGroup = ({
1564
1743
  var SplitButtonGroup = ({
1565
1744
  size = "tiny",
1566
1745
  onChange,
1567
- items,
1746
+ items: items2,
1568
1747
  fullWidth,
1569
1748
  value
1570
1749
  }) => {
1571
- const previewButton = usePreviewButton(items, value);
1750
+ const previewButton = usePreviewButton(items2, value);
1572
1751
  const [isMenuOpen, setIsMenuOpen] = useState5(false);
1573
- const menuButtonRef = useRef5(null);
1752
+ const menuButtonRef = useRef6(null);
1574
1753
  const onMenuToggle = (ev) => {
1575
1754
  setIsMenuOpen((prev) => !prev);
1576
1755
  ev.preventDefault();
@@ -1583,7 +1762,7 @@ var SplitButtonGroup = ({
1583
1762
  const shouldRemove = newValue === value;
1584
1763
  onChange(shouldRemove ? null : newValue);
1585
1764
  };
1586
- return /* @__PURE__ */ React30.createElement(React30.Fragment, null, /* @__PURE__ */ React30.createElement(
1765
+ return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(
1587
1766
  ToggleButton,
1588
1767
  {
1589
1768
  value: previewButton.value,
@@ -1597,7 +1776,7 @@ var SplitButtonGroup = ({
1597
1776
  ref: menuButtonRef
1598
1777
  },
1599
1778
  previewButton.renderContent({ size })
1600
- ), /* @__PURE__ */ React30.createElement(
1779
+ ), /* @__PURE__ */ React32.createElement(
1601
1780
  ToggleButton,
1602
1781
  {
1603
1782
  size,
@@ -1608,8 +1787,8 @@ var SplitButtonGroup = ({
1608
1787
  ref: menuButtonRef,
1609
1788
  value: "__chevron-icon-button__"
1610
1789
  },
1611
- /* @__PURE__ */ React30.createElement(ChevronDownIcon, { fontSize: size })
1612
- ), /* @__PURE__ */ React30.createElement(
1790
+ /* @__PURE__ */ React32.createElement(ChevronDownIcon, { fontSize: size })
1791
+ ), /* @__PURE__ */ React32.createElement(
1613
1792
  Menu2,
1614
1793
  {
1615
1794
  open: isMenuOpen,
@@ -1627,27 +1806,27 @@ var SplitButtonGroup = ({
1627
1806
  mt: 0.5
1628
1807
  }
1629
1808
  },
1630
- items.map(({ label, value: buttonValue }) => /* @__PURE__ */ React30.createElement(
1809
+ items2.map(({ label, value: buttonValue }) => /* @__PURE__ */ React32.createElement(
1631
1810
  MenuItem,
1632
1811
  {
1633
1812
  key: buttonValue,
1634
1813
  selected: buttonValue === value,
1635
1814
  onClick: () => onMenuItemClick(buttonValue)
1636
1815
  },
1637
- /* @__PURE__ */ React30.createElement(ListItemText, null, /* @__PURE__ */ React30.createElement(Typography2, { sx: { fontSize: "14px" } }, label))
1816
+ /* @__PURE__ */ React32.createElement(ListItemText, null, /* @__PURE__ */ React32.createElement(Typography3, { sx: { fontSize: "14px" } }, label))
1638
1817
  ))
1639
1818
  ));
1640
1819
  };
1641
- var usePreviewButton = (items, value) => {
1820
+ var usePreviewButton = (items2, value) => {
1642
1821
  const [previewButton, setPreviewButton] = useState5(
1643
- items.find((item) => item.value === value) ?? items[0]
1822
+ items2.find((item) => item.value === value) ?? items2[0]
1644
1823
  );
1645
1824
  useEffect4(() => {
1646
- const selectedButton = items.find((item) => item.value === value);
1825
+ const selectedButton = items2.find((item) => item.value === value);
1647
1826
  if (selectedButton) {
1648
1827
  setPreviewButton(selectedButton);
1649
1828
  }
1650
- }, [items, value]);
1829
+ }, [items2, value]);
1651
1830
  return previewButton;
1652
1831
  };
1653
1832
 
@@ -1674,7 +1853,7 @@ var ToggleControl = createControl(
1674
1853
  fullWidth,
1675
1854
  size
1676
1855
  };
1677
- return exclusive ? /* @__PURE__ */ React31.createElement(
1856
+ return exclusive ? /* @__PURE__ */ React33.createElement(
1678
1857
  ControlToggleButtonGroup,
1679
1858
  {
1680
1859
  ...toggleButtonGroupProps,
@@ -1683,7 +1862,7 @@ var ToggleControl = createControl(
1683
1862
  disabled,
1684
1863
  exclusive: true
1685
1864
  }
1686
- ) : /* @__PURE__ */ React31.createElement(
1865
+ ) : /* @__PURE__ */ React33.createElement(
1687
1866
  ControlToggleButtonGroup,
1688
1867
  {
1689
1868
  ...toggleButtonGroupProps,
@@ -1697,7 +1876,7 @@ var ToggleControl = createControl(
1697
1876
  );
1698
1877
 
1699
1878
  // src/controls/number-control.tsx
1700
- import * as React32 from "react";
1879
+ import * as React34 from "react";
1701
1880
  import { numberPropTypeUtil } from "@elementor/editor-props";
1702
1881
  import { TextField as TextField5 } from "@elementor/ui";
1703
1882
  var isEmptyOrNaN = (value) => value === null || value === void 0 || value === "" || Number.isNaN(Number(value));
@@ -1720,7 +1899,7 @@ var NumberControl = createControl(
1720
1899
  const formattedValue = shouldForceInt ? +parseInt(eventValue) : Number(eventValue);
1721
1900
  setValue(Math.min(Math.max(formattedValue, min), max));
1722
1901
  };
1723
- return /* @__PURE__ */ React32.createElement(ControlActions, null, /* @__PURE__ */ React32.createElement(
1902
+ return /* @__PURE__ */ React34.createElement(ControlActions, null, /* @__PURE__ */ React34.createElement(
1724
1903
  TextField5,
1725
1904
  {
1726
1905
  size: "tiny",
@@ -1742,15 +1921,15 @@ var NumberControl = createControl(
1742
1921
  );
1743
1922
 
1744
1923
  // src/controls/equal-unequal-sizes-control.tsx
1745
- import * as React33 from "react";
1746
- import { useId as useId2, useRef as useRef6 } from "react";
1924
+ import * as React35 from "react";
1925
+ import { useId as useId2, useRef as useRef7 } from "react";
1747
1926
  import { sizePropTypeUtil as sizePropTypeUtil2 } from "@elementor/editor-props";
1748
1927
  import { isExperimentActive as isExperimentActive2 } from "@elementor/editor-v1-adapters";
1749
- import { bindPopover as bindPopover3, bindToggle, Grid as Grid5, Popover as Popover3, Stack as Stack7, ToggleButton as ToggleButton2, Tooltip as Tooltip3, usePopupState as usePopupState4 } from "@elementor/ui";
1750
- import { __ as __6 } from "@wordpress/i18n";
1751
- var isEqualSizes = (propValue, items) => {
1928
+ import { bindPopover as bindPopover3, bindToggle, Grid as Grid7, Popover as Popover3, Stack as Stack7, ToggleButton as ToggleButton2, Tooltip as Tooltip3, usePopupState as usePopupState4 } from "@elementor/ui";
1929
+ import { __ as __8 } from "@wordpress/i18n";
1930
+ var isEqualSizes = (propValue, items2) => {
1752
1931
  const values = Object.values(propValue);
1753
- if (values.length !== items.length) {
1932
+ if (values.length !== items2.length) {
1754
1933
  return false;
1755
1934
  }
1756
1935
  const [firstValue, ...restValues] = values;
@@ -1762,7 +1941,7 @@ function EqualUnequalSizesControl({
1762
1941
  label,
1763
1942
  icon,
1764
1943
  tooltipLabel,
1765
- items,
1944
+ items: items2,
1766
1945
  multiSizePropTypeUtil
1767
1946
  }) {
1768
1947
  const popupId = useId2();
@@ -1774,12 +1953,12 @@ function EqualUnequalSizesControl({
1774
1953
  disabled: multiSizeDisabled
1775
1954
  } = useBoundProp(multiSizePropTypeUtil);
1776
1955
  const { value: sizeValue, setValue: setSizeValue } = useBoundProp(sizePropTypeUtil2);
1777
- const rowRefs = [useRef6(null), useRef6(null)];
1956
+ const rowRefs = [useRef7(null), useRef7(null)];
1778
1957
  const splitEqualValue = () => {
1779
1958
  if (!sizeValue) {
1780
1959
  return null;
1781
1960
  }
1782
- return items.reduce(
1961
+ return items2.reduce(
1783
1962
  (acc, { bind }) => ({ ...acc, [bind]: sizePropTypeUtil2.create(sizeValue) }),
1784
1963
  {}
1785
1964
  );
@@ -1789,7 +1968,7 @@ function EqualUnequalSizesControl({
1789
1968
  ...multiSizeValue ?? splitEqualValue(),
1790
1969
  ...newValue
1791
1970
  };
1792
- const isEqual = isEqualSizes(newMappedValues, items);
1971
+ const isEqual = isEqualSizes(newMappedValues, items2);
1793
1972
  if (isEqual) {
1794
1973
  return setSizeValue(Object.values(newMappedValues)[0]?.value);
1795
1974
  }
@@ -1803,13 +1982,13 @@ function EqualUnequalSizesControl({
1803
1982
  };
1804
1983
  const isShowingGeneralIndicator = !isExperimentActive2("e_v_3_30") || !popupState.isOpen;
1805
1984
  const isMixed = !!multiSizeValue;
1806
- return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement(Grid5, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRefs[0] }, /* @__PURE__ */ React33.createElement(Grid5, { item: true, xs: 6 }, !isShowingGeneralIndicator ? /* @__PURE__ */ React33.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React33.createElement(ControlLabel, null, label)), /* @__PURE__ */ React33.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(Stack7, { direction: "row", alignItems: "center", gap: 1 }, /* @__PURE__ */ React33.createElement(
1985
+ return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRefs[0] }, /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 6 }, !isShowingGeneralIndicator ? /* @__PURE__ */ React35.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React35.createElement(ControlLabel, null, label)), /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React35.createElement(Stack7, { direction: "row", alignItems: "center", gap: 1 }, /* @__PURE__ */ React35.createElement(
1807
1986
  SizeControl,
1808
1987
  {
1809
- placeholder: isMixed ? __6("Mixed", "elementor") : void 0,
1988
+ placeholder: isMixed ? __8("Mixed", "elementor") : void 0,
1810
1989
  anchorRef: rowRefs[0]
1811
1990
  }
1812
- ), /* @__PURE__ */ React33.createElement(Tooltip3, { title: tooltipLabel, placement: "top" }, /* @__PURE__ */ React33.createElement(
1991
+ ), /* @__PURE__ */ React35.createElement(Tooltip3, { title: tooltipLabel, placement: "top" }, /* @__PURE__ */ React35.createElement(
1813
1992
  ToggleButton2,
1814
1993
  {
1815
1994
  size: "tiny",
@@ -1820,7 +1999,7 @@ function EqualUnequalSizesControl({
1820
1999
  "aria-label": tooltipLabel
1821
2000
  },
1822
2001
  icon
1823
- ))))), /* @__PURE__ */ React33.createElement(
2002
+ ))))), /* @__PURE__ */ React35.createElement(
1824
2003
  Popover3,
1825
2004
  {
1826
2005
  disablePortal: true,
@@ -1838,31 +2017,31 @@ function EqualUnequalSizesControl({
1838
2017
  paper: { sx: { mt: 0.5, width: rowRefs[0].current?.getBoundingClientRect().width } }
1839
2018
  }
1840
2019
  },
1841
- /* @__PURE__ */ React33.createElement(
2020
+ /* @__PURE__ */ React35.createElement(
1842
2021
  PropProvider,
1843
2022
  {
1844
2023
  propType: multiSizePropType,
1845
2024
  value: getMultiSizeValues(),
1846
2025
  setValue: setNestedProp,
1847
- disabled: multiSizeDisabled
2026
+ isDisabled: () => multiSizeDisabled
1848
2027
  },
1849
- /* @__PURE__ */ React33.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React33.createElement(PopoverGridContainer, { ref: rowRefs[1] }, /* @__PURE__ */ React33.createElement(MultiSizeValueControl, { item: items[0], rowRef: rowRefs[1] }), /* @__PURE__ */ React33.createElement(MultiSizeValueControl, { item: items[1], rowRef: rowRefs[1] })), /* @__PURE__ */ React33.createElement(PopoverGridContainer, { ref: rowRefs[2] }, /* @__PURE__ */ React33.createElement(MultiSizeValueControl, { item: items[2], rowRef: rowRefs[2] }), /* @__PURE__ */ React33.createElement(MultiSizeValueControl, { item: items[3], rowRef: rowRefs[2] })))
2028
+ /* @__PURE__ */ React35.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React35.createElement(PopoverGridContainer, { ref: rowRefs[1] }, /* @__PURE__ */ React35.createElement(MultiSizeValueControl, { item: items2[0], rowRef: rowRefs[1] }), /* @__PURE__ */ React35.createElement(MultiSizeValueControl, { item: items2[1], rowRef: rowRefs[1] })), /* @__PURE__ */ React35.createElement(PopoverGridContainer, { ref: rowRefs[2] }, /* @__PURE__ */ React35.createElement(MultiSizeValueControl, { item: items2[2], rowRef: rowRefs[2] }), /* @__PURE__ */ React35.createElement(MultiSizeValueControl, { item: items2[3], rowRef: rowRefs[2] })))
1850
2029
  )
1851
2030
  ));
1852
2031
  }
1853
2032
  var MultiSizeValueControl = ({ item, rowRef }) => {
1854
2033
  const isUsingNestedProps = isExperimentActive2("e_v_3_30");
1855
- return /* @__PURE__ */ React33.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React33.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(Grid5, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React33.createElement(Grid5, { item: true, xs: 12 }, isUsingNestedProps ? /* @__PURE__ */ React33.createElement(ControlLabel, null, item.label) : /* @__PURE__ */ React33.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React33.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React33.createElement(SizeControl, { startIcon: item.icon, anchorRef: rowRef })))));
2034
+ return /* @__PURE__ */ React35.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React35.createElement(Grid7, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 12 }, isUsingNestedProps ? /* @__PURE__ */ React35.createElement(ControlLabel, null, item.label) : /* @__PURE__ */ React35.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 12 }, /* @__PURE__ */ React35.createElement(SizeControl, { startIcon: item.icon, anchorRef: rowRef })))));
1856
2035
  };
1857
2036
 
1858
2037
  // src/controls/linked-dimensions-control.tsx
1859
- import * as React34 from "react";
1860
- import { useRef as useRef7 } from "react";
2038
+ import * as React36 from "react";
2039
+ import { useRef as useRef8 } from "react";
1861
2040
  import { dimensionsPropTypeUtil, sizePropTypeUtil as sizePropTypeUtil3 } from "@elementor/editor-props";
1862
2041
  import { isExperimentActive as isExperimentActive3 } from "@elementor/editor-v1-adapters";
1863
2042
  import { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from "@elementor/icons";
1864
- import { Grid as Grid6, Stack as Stack8, ToggleButton as ToggleButton3, Tooltip as Tooltip4 } from "@elementor/ui";
1865
- import { __ as __7 } from "@wordpress/i18n";
2043
+ import { Grid as Grid8, Stack as Stack8, ToggleButton as ToggleButton3, Tooltip as Tooltip4 } from "@elementor/ui";
2044
+ import { __ as __9 } from "@wordpress/i18n";
1866
2045
  var LinkedDimensionsControl = createControl(
1867
2046
  ({
1868
2047
  label,
@@ -1870,7 +2049,7 @@ var LinkedDimensionsControl = createControl(
1870
2049
  extendedOptions
1871
2050
  }) => {
1872
2051
  const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(sizePropTypeUtil3);
1873
- const gridRowRefs = [useRef7(null), useRef7(null)];
2052
+ const gridRowRefs = [useRef8(null), useRef8(null)];
1874
2053
  const {
1875
2054
  value: dimensionsValue,
1876
2055
  setValue: setDimensionsValue,
@@ -1894,18 +2073,18 @@ var LinkedDimensionsControl = createControl(
1894
2073
  };
1895
2074
  const tooltipLabel = label.toLowerCase();
1896
2075
  const LinkedIcon = isLinked ? LinkIcon : DetachIcon;
1897
- const linkedLabel = __7("Link %s", "elementor").replace("%s", tooltipLabel);
1898
- const unlinkedLabel = __7("Unlink %s", "elementor").replace("%s", tooltipLabel);
2076
+ const linkedLabel = __9("Link %s", "elementor").replace("%s", tooltipLabel);
2077
+ const unlinkedLabel = __9("Unlink %s", "elementor").replace("%s", tooltipLabel);
1899
2078
  const disabled = sizeDisabled || dimensionsDisabled;
1900
- return /* @__PURE__ */ React34.createElement(
2079
+ return /* @__PURE__ */ React36.createElement(
1901
2080
  PropProvider,
1902
2081
  {
1903
2082
  propType,
1904
2083
  value: dimensionsValue,
1905
2084
  setValue: setDimensionsValue,
1906
- disabled
2085
+ isDisabled: () => disabled
1907
2086
  },
1908
- /* @__PURE__ */ React34.createElement(Stack8, { direction: "row", gap: 2, flexWrap: "nowrap" }, isUsingNestedProps ? /* @__PURE__ */ React34.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React34.createElement(ControlLabel, null, label), /* @__PURE__ */ React34.createElement(Tooltip4, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React34.createElement(
2087
+ /* @__PURE__ */ React36.createElement(Stack8, { direction: "row", gap: 2, flexWrap: "nowrap" }, isUsingNestedProps ? /* @__PURE__ */ React36.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React36.createElement(ControlLabel, null, label), /* @__PURE__ */ React36.createElement(Tooltip4, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React36.createElement(
1909
2088
  ToggleButton3,
1910
2089
  {
1911
2090
  "aria-label": isLinked ? unlinkedLabel : linkedLabel,
@@ -1916,9 +2095,9 @@ var LinkedDimensionsControl = createControl(
1916
2095
  onChange: onLinkToggle,
1917
2096
  disabled
1918
2097
  },
1919
- /* @__PURE__ */ React34.createElement(LinkedIcon, { fontSize: "tiny" })
2098
+ /* @__PURE__ */ React36.createElement(LinkedIcon, { fontSize: "tiny" })
1920
2099
  ))),
1921
- getCssMarginProps(isSiteRtl).map((row, index) => /* @__PURE__ */ React34.createElement(Stack8, { direction: "row", gap: 2, flexWrap: "nowrap", key: index, ref: gridRowRefs[index] }, row.map(({ icon, ...props }) => /* @__PURE__ */ React34.createElement(Grid6, { container: true, gap: 0.75, alignItems: "center", key: props.bind }, /* @__PURE__ */ React34.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React34.createElement(Label, { ...props })), /* @__PURE__ */ React34.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React34.createElement(
2100
+ getCssMarginProps(isSiteRtl).map((row, index) => /* @__PURE__ */ React36.createElement(Stack8, { direction: "row", gap: 2, flexWrap: "nowrap", key: index, ref: gridRowRefs[index] }, row.map(({ icon, ...props }) => /* @__PURE__ */ React36.createElement(Grid8, { container: true, gap: 0.75, alignItems: "center", key: props.bind }, /* @__PURE__ */ React36.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(Label, { ...props })), /* @__PURE__ */ React36.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(
1922
2101
  Control3,
1923
2102
  {
1924
2103
  bind: props.bind,
@@ -1939,60 +2118,60 @@ var Control3 = ({
1939
2118
  anchorRef
1940
2119
  }) => {
1941
2120
  if (isLinked) {
1942
- return /* @__PURE__ */ React34.createElement(SizeControl, { startIcon, extendedOptions, anchorRef });
2121
+ return /* @__PURE__ */ React36.createElement(SizeControl, { startIcon, extendedOptions, anchorRef });
1943
2122
  }
1944
- return /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React34.createElement(SizeControl, { startIcon, extendedOptions, anchorRef }));
2123
+ return /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React36.createElement(SizeControl, { startIcon, extendedOptions, anchorRef }));
1945
2124
  };
1946
2125
  var Label = ({ label, bind }) => {
1947
2126
  const isUsingNestedProps = isExperimentActive3("e_v_3_30");
1948
2127
  if (!isUsingNestedProps) {
1949
- return /* @__PURE__ */ React34.createElement(ControlFormLabel, null, label);
2128
+ return /* @__PURE__ */ React36.createElement(ControlFormLabel, null, label);
1950
2129
  }
1951
- return /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React34.createElement(ControlLabel, null, label));
2130
+ return /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React36.createElement(ControlLabel, null, label));
1952
2131
  };
1953
2132
  function getCssMarginProps(isSiteRtl) {
1954
2133
  return [
1955
2134
  [
1956
2135
  {
1957
2136
  bind: "block-start",
1958
- label: __7("Top", "elementor"),
1959
- icon: /* @__PURE__ */ React34.createElement(SideTopIcon, { fontSize: "tiny" })
2137
+ label: __9("Top", "elementor"),
2138
+ icon: /* @__PURE__ */ React36.createElement(SideTopIcon, { fontSize: "tiny" })
1960
2139
  },
1961
2140
  {
1962
2141
  bind: "inline-end",
1963
- label: isSiteRtl ? __7("Left", "elementor") : __7("Right", "elementor"),
1964
- icon: isSiteRtl ? /* @__PURE__ */ React34.createElement(SideLeftIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React34.createElement(SideRightIcon, { fontSize: "tiny" })
2142
+ label: isSiteRtl ? __9("Left", "elementor") : __9("Right", "elementor"),
2143
+ icon: isSiteRtl ? /* @__PURE__ */ React36.createElement(SideLeftIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React36.createElement(SideRightIcon, { fontSize: "tiny" })
1965
2144
  }
1966
2145
  ],
1967
2146
  [
1968
2147
  {
1969
2148
  bind: "block-end",
1970
- label: __7("Bottom", "elementor"),
1971
- icon: /* @__PURE__ */ React34.createElement(SideBottomIcon, { fontSize: "tiny" })
2149
+ label: __9("Bottom", "elementor"),
2150
+ icon: /* @__PURE__ */ React36.createElement(SideBottomIcon, { fontSize: "tiny" })
1972
2151
  },
1973
2152
  {
1974
2153
  bind: "inline-start",
1975
- label: isSiteRtl ? __7("Right", "elementor") : __7("Left", "elementor"),
1976
- icon: isSiteRtl ? /* @__PURE__ */ React34.createElement(SideRightIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React34.createElement(SideLeftIcon, { fontSize: "tiny" })
2154
+ label: isSiteRtl ? __9("Right", "elementor") : __9("Left", "elementor"),
2155
+ icon: isSiteRtl ? /* @__PURE__ */ React36.createElement(SideRightIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React36.createElement(SideLeftIcon, { fontSize: "tiny" })
1977
2156
  }
1978
2157
  ]
1979
2158
  ];
1980
2159
  }
1981
2160
 
1982
2161
  // src/controls/font-family-control/font-family-control.tsx
1983
- import * as React36 from "react";
2162
+ import * as React38 from "react";
1984
2163
  import { stringPropTypeUtil as stringPropTypeUtil5 } from "@elementor/editor-props";
1985
2164
  import { ChevronDownIcon as ChevronDownIcon2 } from "@elementor/icons";
1986
2165
  import { bindPopover as bindPopover4, bindTrigger as bindTrigger3, Popover as Popover4, UnstableTag as UnstableTag2, usePopupState as usePopupState5 } from "@elementor/ui";
1987
2166
 
1988
2167
  // src/components/font-family-selector.tsx
1989
- import * as React35 from "react";
2168
+ import * as React37 from "react";
1990
2169
  import { useEffect as useEffect5, useState as useState6 } from "react";
1991
- import { PopoverHeader, PopoverMenuList, PopoverScrollableContent, PopoverSearch } from "@elementor/editor-ui";
2170
+ import { PopoverBody, PopoverHeader, PopoverMenuList, PopoverSearch } from "@elementor/editor-ui";
1992
2171
  import { TextIcon } from "@elementor/icons";
1993
- import { Box as Box4, Divider as Divider2, Link, Stack as Stack9, Typography as Typography3 } from "@elementor/ui";
2172
+ import { Box as Box5, Divider as Divider2, Link, Stack as Stack9, Typography as Typography4 } from "@elementor/ui";
1994
2173
  import { debounce } from "@elementor/utils";
1995
- import { __ as __8 } from "@wordpress/i18n";
2174
+ import { __ as __10 } from "@wordpress/i18n";
1996
2175
 
1997
2176
  // src/controls/font-family-control/enqueue-font.tsx
1998
2177
  var enqueueFont = (fontFamily, context = "editor") => {
@@ -2034,21 +2213,21 @@ var FontFamilySelector = ({
2034
2213
  setSearchValue("");
2035
2214
  onClose();
2036
2215
  };
2037
- return /* @__PURE__ */ React35.createElement(Stack9, null, /* @__PURE__ */ React35.createElement(
2216
+ return /* @__PURE__ */ React37.createElement(PopoverBody, { width: sectionWidth }, /* @__PURE__ */ React37.createElement(
2038
2217
  PopoverHeader,
2039
2218
  {
2040
- title: __8("Font Family", "elementor"),
2219
+ title: __10("Font Family", "elementor"),
2041
2220
  onClose: handleClose,
2042
- icon: /* @__PURE__ */ React35.createElement(TextIcon, { fontSize: SIZE2 })
2221
+ icon: /* @__PURE__ */ React37.createElement(TextIcon, { fontSize: SIZE2 })
2043
2222
  }
2044
- ), /* @__PURE__ */ React35.createElement(
2223
+ ), /* @__PURE__ */ React37.createElement(
2045
2224
  PopoverSearch,
2046
2225
  {
2047
2226
  value: searchValue,
2048
2227
  onSearch: handleSearch,
2049
- placeholder: __8("Search", "elementor")
2228
+ placeholder: __10("Search", "elementor")
2050
2229
  }
2051
- ), /* @__PURE__ */ React35.createElement(Divider2, null), /* @__PURE__ */ React35.createElement(PopoverScrollableContent, { width: sectionWidth }, filteredFontFamilies.length > 0 ? /* @__PURE__ */ React35.createElement(
2230
+ ), /* @__PURE__ */ React37.createElement(Divider2, null), filteredFontFamilies.length > 0 ? /* @__PURE__ */ React37.createElement(
2052
2231
  FontList,
2053
2232
  {
2054
2233
  fontListItems: filteredFontFamilies,
@@ -2056,7 +2235,7 @@ var FontFamilySelector = ({
2056
2235
  handleClose,
2057
2236
  fontFamily
2058
2237
  }
2059
- ) : /* @__PURE__ */ React35.createElement(
2238
+ ) : /* @__PURE__ */ React37.createElement(
2060
2239
  Stack9,
2061
2240
  {
2062
2241
  alignItems: "center",
@@ -2066,9 +2245,9 @@ var FontFamilySelector = ({
2066
2245
  gap: 1.5,
2067
2246
  overflow: "hidden"
2068
2247
  },
2069
- /* @__PURE__ */ React35.createElement(TextIcon, { fontSize: "large" }),
2070
- /* @__PURE__ */ React35.createElement(Box4, { sx: { maxWidth: 160, overflow: "hidden" } }, /* @__PURE__ */ React35.createElement(Typography3, { align: "center", variant: "subtitle2", color: "text.secondary" }, __8("Sorry, nothing matched", "elementor")), /* @__PURE__ */ React35.createElement(
2071
- Typography3,
2248
+ /* @__PURE__ */ React37.createElement(TextIcon, { fontSize: "large" }),
2249
+ /* @__PURE__ */ React37.createElement(Box5, { sx: { maxWidth: 160, overflow: "hidden" } }, /* @__PURE__ */ React37.createElement(Typography4, { align: "center", variant: "subtitle2", color: "text.secondary" }, __10("Sorry, nothing matched", "elementor")), /* @__PURE__ */ React37.createElement(
2250
+ Typography4,
2072
2251
  {
2073
2252
  variant: "subtitle2",
2074
2253
  color: "text.secondary",
@@ -2078,20 +2257,20 @@ var FontFamilySelector = ({
2078
2257
  justifyContent: "center"
2079
2258
  }
2080
2259
  },
2081
- /* @__PURE__ */ React35.createElement("span", null, "\u201C"),
2082
- /* @__PURE__ */ React35.createElement("span", { style: { maxWidth: "80%", overflow: "hidden", textOverflow: "ellipsis" } }, searchValue),
2083
- /* @__PURE__ */ React35.createElement("span", null, "\u201D.")
2260
+ /* @__PURE__ */ React37.createElement("span", null, "\u201C"),
2261
+ /* @__PURE__ */ React37.createElement("span", { style: { maxWidth: "80%", overflow: "hidden", textOverflow: "ellipsis" } }, searchValue),
2262
+ /* @__PURE__ */ React37.createElement("span", null, "\u201D.")
2084
2263
  )),
2085
- /* @__PURE__ */ React35.createElement(
2086
- Typography3,
2264
+ /* @__PURE__ */ React37.createElement(
2265
+ Typography4,
2087
2266
  {
2088
2267
  align: "center",
2089
2268
  variant: "caption",
2090
2269
  color: "text.secondary",
2091
2270
  sx: { display: "flex", flexDirection: "column" }
2092
2271
  },
2093
- __8("Try something else.", "elementor"),
2094
- /* @__PURE__ */ React35.createElement(
2272
+ __10("Try something else.", "elementor"),
2273
+ /* @__PURE__ */ React37.createElement(
2095
2274
  Link,
2096
2275
  {
2097
2276
  color: "secondary",
@@ -2099,10 +2278,10 @@ var FontFamilySelector = ({
2099
2278
  component: "button",
2100
2279
  onClick: () => setSearchValue("")
2101
2280
  },
2102
- __8("Clear & try again", "elementor")
2281
+ __10("Clear & try again", "elementor")
2103
2282
  )
2104
2283
  )
2105
- )));
2284
+ ));
2106
2285
  };
2107
2286
  var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
2108
2287
  const selectedItem = fontListItems.find((item) => item.value === fontFamily);
@@ -2114,7 +2293,7 @@ var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
2114
2293
  }
2115
2294
  });
2116
2295
  }, 100);
2117
- return /* @__PURE__ */ React35.createElement(
2296
+ return /* @__PURE__ */ React37.createElement(
2118
2297
  PopoverMenuList,
2119
2298
  {
2120
2299
  items: fontListItems,
@@ -2136,19 +2315,26 @@ var useDebounce = (fn, delay) => {
2136
2315
  // src/controls/font-family-control/font-family-control.tsx
2137
2316
  var SIZE3 = "tiny";
2138
2317
  var FontFamilyControl = createControl(({ fontFamilies, sectionWidth }) => {
2139
- const { value: fontFamily, setValue: setFontFamily, disabled } = useBoundProp(stringPropTypeUtil5);
2318
+ const { value: fontFamily, setValue: setFontFamily, disabled, placeholder } = useBoundProp(stringPropTypeUtil5);
2140
2319
  const popoverState = usePopupState5({ variant: "popover" });
2141
- return /* @__PURE__ */ React36.createElement(React36.Fragment, null, /* @__PURE__ */ React36.createElement(ControlActions, null, /* @__PURE__ */ React36.createElement(
2320
+ const isShowingPlaceholder = !fontFamily && placeholder;
2321
+ return /* @__PURE__ */ React38.createElement(React38.Fragment, null, /* @__PURE__ */ React38.createElement(ControlActions, null, /* @__PURE__ */ React38.createElement(
2142
2322
  UnstableTag2,
2143
2323
  {
2144
2324
  variant: "outlined",
2145
- label: fontFamily,
2146
- endIcon: /* @__PURE__ */ React36.createElement(ChevronDownIcon2, { fontSize: SIZE3 }),
2325
+ label: fontFamily || placeholder,
2326
+ endIcon: /* @__PURE__ */ React38.createElement(ChevronDownIcon2, { fontSize: SIZE3 }),
2147
2327
  ...bindTrigger3(popoverState),
2148
2328
  fullWidth: true,
2149
- disabled
2329
+ disabled,
2330
+ sx: isShowingPlaceholder ? {
2331
+ "& .MuiTag-label": {
2332
+ color: (theme) => theme.palette.text.tertiary
2333
+ },
2334
+ textTransform: "capitalize"
2335
+ } : void 0
2150
2336
  }
2151
- )), /* @__PURE__ */ React36.createElement(
2337
+ )), /* @__PURE__ */ React38.createElement(
2152
2338
  Popover4,
2153
2339
  {
2154
2340
  disablePortal: true,
@@ -2158,7 +2344,7 @@ var FontFamilyControl = createControl(({ fontFamilies, sectionWidth }) => {
2158
2344
  sx: { my: 1.5 },
2159
2345
  ...bindPopover4(popoverState)
2160
2346
  },
2161
- /* @__PURE__ */ React36.createElement(
2347
+ /* @__PURE__ */ React38.createElement(
2162
2348
  FontFamilySelector,
2163
2349
  {
2164
2350
  fontFamilies,
@@ -2172,13 +2358,13 @@ var FontFamilyControl = createControl(({ fontFamilies, sectionWidth }) => {
2172
2358
  });
2173
2359
 
2174
2360
  // src/controls/url-control.tsx
2175
- import * as React37 from "react";
2361
+ import * as React39 from "react";
2176
2362
  import { urlPropTypeUtil } from "@elementor/editor-props";
2177
2363
  import { TextField as TextField6 } from "@elementor/ui";
2178
2364
  var UrlControl = createControl(({ placeholder }) => {
2179
2365
  const { value, setValue, disabled } = useBoundProp(urlPropTypeUtil);
2180
2366
  const handleChange = (event) => setValue(event.target.value);
2181
- return /* @__PURE__ */ React37.createElement(ControlActions, null, /* @__PURE__ */ React37.createElement(
2367
+ return /* @__PURE__ */ React39.createElement(ControlActions, null, /* @__PURE__ */ React39.createElement(
2182
2368
  TextField6,
2183
2369
  {
2184
2370
  size: "tiny",
@@ -2192,31 +2378,32 @@ var UrlControl = createControl(({ placeholder }) => {
2192
2378
  });
2193
2379
 
2194
2380
  // src/controls/link-control.tsx
2195
- import * as React39 from "react";
2381
+ import * as React42 from "react";
2196
2382
  import { useMemo as useMemo3, useState as useState7 } from "react";
2197
2383
  import { getLinkInLinkRestriction, selectElement } from "@elementor/editor-elements";
2198
2384
  import {
2199
- booleanPropTypeUtil,
2385
+ booleanPropTypeUtil as booleanPropTypeUtil2,
2200
2386
  linkPropTypeUtil,
2201
2387
  numberPropTypeUtil as numberPropTypeUtil2,
2202
2388
  stringPropTypeUtil as stringPropTypeUtil6,
2203
2389
  urlPropTypeUtil as urlPropTypeUtil2
2204
2390
  } from "@elementor/editor-props";
2205
2391
  import { InfoTipCard } from "@elementor/editor-ui";
2392
+ import { isExperimentActive as isExperimentActive4 } from "@elementor/editor-v1-adapters";
2206
2393
  import { httpService as httpService2 } from "@elementor/http-client";
2207
2394
  import { AlertTriangleIcon, MinusIcon, PlusIcon as PlusIcon2 } from "@elementor/icons";
2208
2395
  import { useSessionStorage } from "@elementor/session";
2209
- import { Box as Box6, Collapse, Grid as Grid7, IconButton as IconButton3, Infotip, Stack as Stack10, Switch } from "@elementor/ui";
2396
+ import { Box as Box7, Collapse, Grid as Grid9, IconButton as IconButton3, Infotip, Stack as Stack10, Switch as Switch2 } from "@elementor/ui";
2210
2397
  import { debounce as debounce2 } from "@elementor/utils";
2211
- import { __ as __9 } from "@wordpress/i18n";
2398
+ import { __ as __11 } from "@wordpress/i18n";
2212
2399
 
2213
2400
  // src/components/autocomplete.tsx
2214
- import * as React38 from "react";
2401
+ import * as React40 from "react";
2215
2402
  import { forwardRef as forwardRef4 } from "react";
2216
2403
  import { XIcon as XIcon2 } from "@elementor/icons";
2217
2404
  import {
2218
2405
  Autocomplete as AutocompleteBase,
2219
- Box as Box5,
2406
+ Box as Box6,
2220
2407
  IconButton as IconButton2,
2221
2408
  InputAdornment as InputAdornment3,
2222
2409
  TextField as TextField7
@@ -2237,7 +2424,7 @@ var Autocomplete = forwardRef4((props, ref) => {
2237
2424
  const muiWarningPreventer = allowCustomValues || !!value?.toString()?.length;
2238
2425
  const isOptionEqualToValue = muiWarningPreventer ? void 0 : () => true;
2239
2426
  const isValueFromOptions = typeof value === "number" && !!findMatchingOption(options, value);
2240
- return /* @__PURE__ */ React38.createElement(
2427
+ return /* @__PURE__ */ React40.createElement(
2241
2428
  AutocompleteBase,
2242
2429
  {
2243
2430
  ...restProps,
@@ -2255,8 +2442,8 @@ var Autocomplete = forwardRef4((props, ref) => {
2255
2442
  groupBy: isCategorizedOptionPool(options) ? (optionId) => findMatchingOption(options, optionId)?.groupLabel || optionId : void 0,
2256
2443
  isOptionEqualToValue,
2257
2444
  filterOptions: () => optionKeys,
2258
- renderOption: (optionProps, optionId) => /* @__PURE__ */ React38.createElement(Box5, { component: "li", ...optionProps, key: optionProps.id }, findMatchingOption(options, optionId)?.label ?? optionId),
2259
- renderInput: (params) => /* @__PURE__ */ React38.createElement(
2445
+ renderOption: (optionProps, optionId) => /* @__PURE__ */ React40.createElement(Box6, { component: "li", ...optionProps, key: optionProps.id }, findMatchingOption(options, optionId)?.label ?? optionId),
2446
+ renderInput: (params) => /* @__PURE__ */ React40.createElement(
2260
2447
  TextInput,
2261
2448
  {
2262
2449
  params,
@@ -2279,7 +2466,7 @@ var TextInput = ({
2279
2466
  const onChange = (event) => {
2280
2467
  handleChange(event.target.value);
2281
2468
  };
2282
- return /* @__PURE__ */ React38.createElement(
2469
+ return /* @__PURE__ */ React40.createElement(
2283
2470
  TextField7,
2284
2471
  {
2285
2472
  ...params,
@@ -2292,7 +2479,7 @@ var TextInput = ({
2292
2479
  },
2293
2480
  InputProps: {
2294
2481
  ...params.InputProps,
2295
- endAdornment: /* @__PURE__ */ React38.createElement(ClearButton, { params, allowClear, handleChange })
2482
+ endAdornment: /* @__PURE__ */ React40.createElement(ClearButton, { params, allowClear, handleChange })
2296
2483
  }
2297
2484
  }
2298
2485
  );
@@ -2301,7 +2488,7 @@ var ClearButton = ({
2301
2488
  allowClear,
2302
2489
  handleChange,
2303
2490
  params
2304
- }) => /* @__PURE__ */ React38.createElement(InputAdornment3, { position: "end" }, allowClear && /* @__PURE__ */ React38.createElement(IconButton2, { size: params.size, onClick: () => handleChange(null), sx: { cursor: "pointer" } }, /* @__PURE__ */ React38.createElement(XIcon2, { fontSize: params.size })));
2491
+ }) => /* @__PURE__ */ React40.createElement(InputAdornment3, { position: "end" }, allowClear && /* @__PURE__ */ React40.createElement(IconButton2, { size: params.size, onClick: () => handleChange(null), sx: { cursor: "pointer" } }, /* @__PURE__ */ React40.createElement(XIcon2, { fontSize: params.size })));
2305
2492
  function findMatchingOption(options, optionId = null) {
2306
2493
  const formattedOption = (optionId || "").toString();
2307
2494
  return options.find(({ id }) => formattedOption === id.toString());
@@ -2322,10 +2509,33 @@ function _factoryFilter(newValue, options, minInputLength) {
2322
2509
  );
2323
2510
  }
2324
2511
 
2512
+ // src/controls/switch-control.tsx
2513
+ import * as React41 from "react";
2514
+ import { booleanPropTypeUtil } from "@elementor/editor-props";
2515
+ import { Switch } from "@elementor/ui";
2516
+ var SwitchControl = createControl(() => {
2517
+ const { value, setValue, disabled } = useBoundProp(booleanPropTypeUtil);
2518
+ const handleChange = (event) => {
2519
+ setValue(event.target.checked);
2520
+ };
2521
+ return /* @__PURE__ */ React41.createElement("div", { style: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React41.createElement(
2522
+ Switch,
2523
+ {
2524
+ checked: !!value,
2525
+ onChange: handleChange,
2526
+ size: "small",
2527
+ disabled,
2528
+ inputProps: {
2529
+ ...disabled ? { style: { opacity: 0 } } : {}
2530
+ }
2531
+ }
2532
+ ));
2533
+ });
2534
+
2325
2535
  // src/controls/link-control.tsx
2326
2536
  var SIZE4 = "tiny";
2327
2537
  var learnMoreButton = {
2328
- label: __9("Learn More", "elementor"),
2538
+ label: __11("Learn More", "elementor"),
2329
2539
  href: "https://go.elementor.com/element-link-inside-link-infotip"
2330
2540
  };
2331
2541
  var LinkControl = createControl((props) => {
@@ -2338,7 +2548,7 @@ var LinkControl = createControl((props) => {
2338
2548
  placeholder,
2339
2549
  minInputLength = 2,
2340
2550
  context: { elementId },
2341
- label = __9("Link", "elementor")
2551
+ label = __11("Link", "elementor")
2342
2552
  } = props || {};
2343
2553
  const [linkInLinkRestriction, setLinkInLinkRestriction] = useState7(getLinkInLinkRestriction(elementId));
2344
2554
  const [options, setOptions] = useState7(
@@ -2401,7 +2611,7 @@ var LinkControl = createControl((props) => {
2401
2611
  ),
2402
2612
  [endpoint]
2403
2613
  );
2404
- return /* @__PURE__ */ React39.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React39.createElement(Stack10, { gap: 1.5 }, /* @__PURE__ */ React39.createElement(
2614
+ return /* @__PURE__ */ React42.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React42.createElement(Stack10, { gap: 1.5 }, /* @__PURE__ */ React42.createElement(
2405
2615
  Stack10,
2406
2616
  {
2407
2617
  direction: "row",
@@ -2411,17 +2621,17 @@ var LinkControl = createControl((props) => {
2411
2621
  marginInlineEnd: -0.75
2412
2622
  }
2413
2623
  },
2414
- /* @__PURE__ */ React39.createElement(ControlFormLabel, null, label),
2415
- /* @__PURE__ */ React39.createElement(ConditionalInfoTip, { isVisible: !isActive, linkInLinkRestriction }, /* @__PURE__ */ React39.createElement(
2624
+ /* @__PURE__ */ React42.createElement(ControlFormLabel, null, label),
2625
+ /* @__PURE__ */ React42.createElement(ConditionalInfoTip, { isVisible: !isActive, linkInLinkRestriction }, /* @__PURE__ */ React42.createElement(
2416
2626
  ToggleIconControl,
2417
2627
  {
2418
2628
  disabled: shouldDisableAddingLink,
2419
2629
  active: isActive,
2420
2630
  onIconClick: onEnabledChange,
2421
- label: __9("Toggle link", "elementor")
2631
+ label: __11("Toggle link", "elementor")
2422
2632
  }
2423
2633
  ))
2424
- ), /* @__PURE__ */ React39.createElement(Collapse, { in: isActive, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React39.createElement(Stack10, { gap: 1.5 }, /* @__PURE__ */ React39.createElement(PropKeyProvider, { bind: "destination" }, /* @__PURE__ */ React39.createElement(ControlActions, null, /* @__PURE__ */ React39.createElement(
2634
+ ), /* @__PURE__ */ React42.createElement(Collapse, { in: isActive, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React42.createElement(Stack10, { gap: 1.5 }, /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "destination" }, /* @__PURE__ */ React42.createElement(ControlActions, null, /* @__PURE__ */ React42.createElement(
2425
2635
  Autocomplete,
2426
2636
  {
2427
2637
  options,
@@ -2432,22 +2642,31 @@ var LinkControl = createControl((props) => {
2432
2642
  onTextChange,
2433
2643
  minInputLength
2434
2644
  }
2435
- ))), /* @__PURE__ */ React39.createElement(PropKeyProvider, { bind: "isTargetBlank" }, /* @__PURE__ */ React39.createElement(SwitchControl, { disabled: propContext.disabled || !value }))))));
2645
+ ))), /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "isTargetBlank" }, /* @__PURE__ */ React42.createElement(Grid9, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React42.createElement(Grid9, { item: true }, /* @__PURE__ */ React42.createElement(ControlFormLabel, null, __11("Open in a new tab", "elementor"))), /* @__PURE__ */ React42.createElement(Grid9, { item: true, sx: { marginInlineEnd: -1 } }, /* @__PURE__ */ React42.createElement(SwitchControlComponent, { disabled: propContext.disabled || !value }))))))));
2436
2646
  });
2437
2647
  var ToggleIconControl = ({ disabled, active, onIconClick, label }) => {
2438
- return /* @__PURE__ */ React39.createElement(IconButton3, { size: SIZE4, onClick: onIconClick, "aria-label": label, disabled }, active ? /* @__PURE__ */ React39.createElement(MinusIcon, { fontSize: SIZE4 }) : /* @__PURE__ */ React39.createElement(PlusIcon2, { fontSize: SIZE4 }));
2648
+ return /* @__PURE__ */ React42.createElement(IconButton3, { size: SIZE4, onClick: onIconClick, "aria-label": label, disabled }, active ? /* @__PURE__ */ React42.createElement(MinusIcon, { fontSize: SIZE4 }) : /* @__PURE__ */ React42.createElement(PlusIcon2, { fontSize: SIZE4 }));
2439
2649
  };
2440
- var SwitchControl = ({ disabled }) => {
2441
- const { value = false, setValue } = useBoundProp(booleanPropTypeUtil);
2650
+ var SwitchControlComponent = ({ disabled }) => {
2651
+ const { value, setValue } = useBoundProp(booleanPropTypeUtil2);
2652
+ const isVersion331Active = isExperimentActive4("e_v_3_31");
2653
+ if (isVersion331Active) {
2654
+ return /* @__PURE__ */ React42.createElement(SwitchControl, null);
2655
+ }
2442
2656
  const onClick = () => {
2443
2657
  setValue(!value);
2444
2658
  };
2445
- const inputProps = disabled ? {
2446
- style: {
2447
- opacity: 0
2659
+ return /* @__PURE__ */ React42.createElement(
2660
+ Switch2,
2661
+ {
2662
+ checked: value ?? false,
2663
+ onClick,
2664
+ disabled,
2665
+ inputProps: {
2666
+ ...disabled ? { style: { opacity: 0 } } : {}
2667
+ }
2448
2668
  }
2449
- } : {};
2450
- return /* @__PURE__ */ React39.createElement(Grid7, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React39.createElement(Grid7, { item: true }, /* @__PURE__ */ React39.createElement(ControlFormLabel, null, __9("Open in a new tab", "elementor"))), /* @__PURE__ */ React39.createElement(Grid7, { item: true, sx: { marginInlineEnd: -1 } }, /* @__PURE__ */ React39.createElement(Switch, { checked: value, onClick, disabled, inputProps })));
2669
+ );
2451
2670
  };
2452
2671
  async function fetchOptions(ajaxUrl, params) {
2453
2672
  if (!params || !ajaxUrl) {
@@ -2484,38 +2703,38 @@ var ConditionalInfoTip = ({ linkInLinkRestriction, isVisible, children }) => {
2484
2703
  selectElement(elementId);
2485
2704
  }
2486
2705
  };
2487
- return shouldRestrict && isVisible ? /* @__PURE__ */ React39.createElement(
2706
+ return shouldRestrict && isVisible ? /* @__PURE__ */ React42.createElement(
2488
2707
  Infotip,
2489
2708
  {
2490
2709
  placement: "right",
2491
- content: /* @__PURE__ */ React39.createElement(
2710
+ content: /* @__PURE__ */ React42.createElement(
2492
2711
  InfoTipCard,
2493
2712
  {
2494
2713
  content: INFOTIP_CONTENT[reason],
2495
- svgIcon: /* @__PURE__ */ React39.createElement(AlertTriangleIcon, null),
2714
+ svgIcon: /* @__PURE__ */ React42.createElement(AlertTriangleIcon, null),
2496
2715
  learnMoreButton,
2497
2716
  ctaButton: {
2498
- label: __9("Take me there", "elementor"),
2717
+ label: __11("Take me there", "elementor"),
2499
2718
  onClick: handleTakeMeClick
2500
2719
  }
2501
2720
  }
2502
2721
  )
2503
2722
  },
2504
- /* @__PURE__ */ React39.createElement(Box6, null, children)
2505
- ) : /* @__PURE__ */ React39.createElement(React39.Fragment, null, children);
2723
+ /* @__PURE__ */ React42.createElement(Box7, null, children)
2724
+ ) : /* @__PURE__ */ React42.createElement(React42.Fragment, null, children);
2506
2725
  };
2507
2726
  var INFOTIP_CONTENT = {
2508
- descendant: /* @__PURE__ */ React39.createElement(React39.Fragment, null, __9("To add a link to this container,", "elementor"), /* @__PURE__ */ React39.createElement("br", null), __9("first remove the link from the elements inside of it.", "elementor")),
2509
- ancestor: /* @__PURE__ */ React39.createElement(React39.Fragment, null, __9("To add a link to this element,", "elementor"), /* @__PURE__ */ React39.createElement("br", null), __9("first remove the link from its parent container.", "elementor"))
2727
+ descendant: /* @__PURE__ */ React42.createElement(React42.Fragment, null, __11("To add a link to this container,", "elementor"), /* @__PURE__ */ React42.createElement("br", null), __11("first remove the link from the elements inside of it.", "elementor")),
2728
+ ancestor: /* @__PURE__ */ React42.createElement(React42.Fragment, null, __11("To add a link to this element,", "elementor"), /* @__PURE__ */ React42.createElement("br", null), __11("first remove the link from its parent container.", "elementor"))
2510
2729
  };
2511
2730
 
2512
2731
  // src/controls/gap-control.tsx
2513
- import * as React40 from "react";
2514
- import { useRef as useRef8 } from "react";
2732
+ import * as React43 from "react";
2733
+ import { useRef as useRef9 } from "react";
2515
2734
  import { layoutDirectionPropTypeUtil, sizePropTypeUtil as sizePropTypeUtil4 } from "@elementor/editor-props";
2516
2735
  import { DetachIcon as DetachIcon2, LinkIcon as LinkIcon2 } from "@elementor/icons";
2517
- import { Grid as Grid8, Stack as Stack11, ToggleButton as ToggleButton4, Tooltip as Tooltip5 } from "@elementor/ui";
2518
- import { __ as __10 } from "@wordpress/i18n";
2736
+ import { Grid as Grid10, Stack as Stack11, ToggleButton as ToggleButton4, Tooltip as Tooltip5 } from "@elementor/ui";
2737
+ import { __ as __12 } from "@wordpress/i18n";
2519
2738
  var GapControl = createControl(({ label }) => {
2520
2739
  const {
2521
2740
  value: directionValue,
@@ -2523,7 +2742,7 @@ var GapControl = createControl(({ label }) => {
2523
2742
  propType,
2524
2743
  disabled: directionDisabled
2525
2744
  } = useBoundProp(layoutDirectionPropTypeUtil);
2526
- const stackRef = useRef8(null);
2745
+ const stackRef = useRef9(null);
2527
2746
  const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(sizePropTypeUtil4);
2528
2747
  const isLinked = !directionValue && !sizeValue ? true : !!sizeValue;
2529
2748
  const onLinkToggle = () => {
@@ -2539,10 +2758,10 @@ var GapControl = createControl(({ label }) => {
2539
2758
  };
2540
2759
  const tooltipLabel = label.toLowerCase();
2541
2760
  const LinkedIcon = isLinked ? LinkIcon2 : DetachIcon2;
2542
- const linkedLabel = __10("Link %s", "elementor").replace("%s", tooltipLabel);
2543
- const unlinkedLabel = __10("Unlink %s", "elementor").replace("%s", tooltipLabel);
2761
+ const linkedLabel = __12("Link %s", "elementor").replace("%s", tooltipLabel);
2762
+ const unlinkedLabel = __12("Unlink %s", "elementor").replace("%s", tooltipLabel);
2544
2763
  const disabled = sizeDisabled || directionDisabled;
2545
- return /* @__PURE__ */ React40.createElement(PropProvider, { propType, value: directionValue, setValue: setDirectionValue }, /* @__PURE__ */ React40.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(ControlLabel, null, label), /* @__PURE__ */ React40.createElement(Tooltip5, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React40.createElement(
2764
+ return /* @__PURE__ */ React43.createElement(PropProvider, { propType, value: directionValue, setValue: setDirectionValue }, /* @__PURE__ */ React43.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React43.createElement(ControlLabel, null, label), /* @__PURE__ */ React43.createElement(Tooltip5, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React43.createElement(
2546
2765
  ToggleButton4,
2547
2766
  {
2548
2767
  "aria-label": isLinked ? unlinkedLabel : linkedLabel,
@@ -2553,8 +2772,8 @@ var GapControl = createControl(({ label }) => {
2553
2772
  onChange: onLinkToggle,
2554
2773
  disabled
2555
2774
  },
2556
- /* @__PURE__ */ React40.createElement(LinkedIcon, { fontSize: "tiny" })
2557
- ))), /* @__PURE__ */ React40.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap", ref: stackRef }, /* @__PURE__ */ React40.createElement(Grid8, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React40.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React40.createElement(ControlFormLabel, null, __10("Column", "elementor"))), /* @__PURE__ */ React40.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React40.createElement(Control4, { bind: "column", isLinked, anchorRef: stackRef }))), /* @__PURE__ */ React40.createElement(Grid8, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React40.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React40.createElement(ControlFormLabel, null, __10("Row", "elementor"))), /* @__PURE__ */ React40.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React40.createElement(Control4, { bind: "row", isLinked, anchorRef: stackRef })))));
2775
+ /* @__PURE__ */ React43.createElement(LinkedIcon, { fontSize: "tiny" })
2776
+ ))), /* @__PURE__ */ React43.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap", ref: stackRef }, /* @__PURE__ */ React43.createElement(Grid10, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React43.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(ControlFormLabel, null, __12("Column", "elementor"))), /* @__PURE__ */ React43.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(Control4, { bind: "column", isLinked, anchorRef: stackRef }))), /* @__PURE__ */ React43.createElement(Grid10, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React43.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(ControlFormLabel, null, __12("Row", "elementor"))), /* @__PURE__ */ React43.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(Control4, { bind: "row", isLinked, anchorRef: stackRef })))));
2558
2777
  });
2559
2778
  var Control4 = ({
2560
2779
  bind,
@@ -2562,21 +2781,21 @@ var Control4 = ({
2562
2781
  anchorRef
2563
2782
  }) => {
2564
2783
  if (isLinked) {
2565
- return /* @__PURE__ */ React40.createElement(SizeControl, { anchorRef });
2784
+ return /* @__PURE__ */ React43.createElement(SizeControl, { anchorRef });
2566
2785
  }
2567
- return /* @__PURE__ */ React40.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React40.createElement(SizeControl, { anchorRef }));
2786
+ return /* @__PURE__ */ React43.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React43.createElement(SizeControl, { anchorRef }));
2568
2787
  };
2569
2788
 
2570
2789
  // src/controls/aspect-ratio-control.tsx
2571
- import * as React41 from "react";
2790
+ import * as React44 from "react";
2572
2791
  import { useEffect as useEffect6, useState as useState8 } from "react";
2573
2792
  import { stringPropTypeUtil as stringPropTypeUtil7 } from "@elementor/editor-props";
2574
2793
  import { MenuListItem as MenuListItem4 } from "@elementor/editor-ui";
2575
2794
  import { ArrowsMoveHorizontalIcon, ArrowsMoveVerticalIcon } from "@elementor/icons";
2576
- import { Grid as Grid9, Select as Select3, Stack as Stack12, TextField as TextField8 } from "@elementor/ui";
2577
- import { __ as __11 } from "@wordpress/i18n";
2795
+ import { Grid as Grid11, Select as Select3, Stack as Stack12, TextField as TextField8 } from "@elementor/ui";
2796
+ import { __ as __13 } from "@wordpress/i18n";
2578
2797
  var RATIO_OPTIONS = [
2579
- { label: __11("Auto", "elementor"), value: "auto" },
2798
+ { label: __13("Auto", "elementor"), value: "auto" },
2580
2799
  { label: "1/1", value: "1/1" },
2581
2800
  { label: "4/3", value: "4/3" },
2582
2801
  { label: "3/4", value: "3/4" },
@@ -2635,7 +2854,7 @@ var AspectRatioControl = createControl(({ label }) => {
2635
2854
  setAspectRatioValue(`${customWidth}/${newHeight}`);
2636
2855
  }
2637
2856
  };
2638
- return /* @__PURE__ */ React41.createElement(ControlActions, null, /* @__PURE__ */ React41.createElement(Stack12, { direction: "column", gap: 2 }, /* @__PURE__ */ React41.createElement(Grid9, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React41.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(ControlLabel, null, label)), /* @__PURE__ */ React41.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(
2857
+ return /* @__PURE__ */ React44.createElement(ControlActions, null, /* @__PURE__ */ React44.createElement(Stack12, { direction: "column", gap: 2 }, /* @__PURE__ */ React44.createElement(Grid11, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React44.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(ControlLabel, null, label)), /* @__PURE__ */ React44.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(
2639
2858
  Select3,
2640
2859
  {
2641
2860
  size: "tiny",
@@ -2646,10 +2865,10 @@ var AspectRatioControl = createControl(({ label }) => {
2646
2865
  onChange: handleSelectChange,
2647
2866
  fullWidth: true
2648
2867
  },
2649
- [...RATIO_OPTIONS, { label: __11("Custom", "elementor"), value: CUSTOM_RATIO }].map(
2650
- ({ label: optionLabel, ...props }) => /* @__PURE__ */ React41.createElement(MenuListItem4, { key: props.value, ...props, value: props.value ?? "" }, optionLabel)
2868
+ [...RATIO_OPTIONS, { label: __13("Custom", "elementor"), value: CUSTOM_RATIO }].map(
2869
+ ({ label: optionLabel, ...props }) => /* @__PURE__ */ React44.createElement(MenuListItem4, { key: props.value, ...props, value: props.value ?? "" }, optionLabel)
2651
2870
  )
2652
- ))), isCustom && /* @__PURE__ */ React41.createElement(Grid9, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React41.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(
2871
+ ))), isCustom && /* @__PURE__ */ React44.createElement(Grid11, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React44.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(
2653
2872
  TextField8,
2654
2873
  {
2655
2874
  size: "tiny",
@@ -2659,10 +2878,10 @@ var AspectRatioControl = createControl(({ label }) => {
2659
2878
  value: customWidth,
2660
2879
  onChange: handleCustomWidthChange,
2661
2880
  InputProps: {
2662
- startAdornment: /* @__PURE__ */ React41.createElement(ArrowsMoveHorizontalIcon, { fontSize: "tiny" })
2881
+ startAdornment: /* @__PURE__ */ React44.createElement(ArrowsMoveHorizontalIcon, { fontSize: "tiny" })
2663
2882
  }
2664
2883
  }
2665
- )), /* @__PURE__ */ React41.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(
2884
+ )), /* @__PURE__ */ React44.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(
2666
2885
  TextField8,
2667
2886
  {
2668
2887
  size: "tiny",
@@ -2672,23 +2891,23 @@ var AspectRatioControl = createControl(({ label }) => {
2672
2891
  value: customHeight,
2673
2892
  onChange: handleCustomHeightChange,
2674
2893
  InputProps: {
2675
- startAdornment: /* @__PURE__ */ React41.createElement(ArrowsMoveVerticalIcon, { fontSize: "tiny" })
2894
+ startAdornment: /* @__PURE__ */ React44.createElement(ArrowsMoveVerticalIcon, { fontSize: "tiny" })
2676
2895
  }
2677
2896
  }
2678
2897
  )))));
2679
2898
  });
2680
2899
 
2681
2900
  // src/controls/svg-media-control.tsx
2682
- import * as React43 from "react";
2901
+ import * as React46 from "react";
2683
2902
  import { useState as useState10 } from "react";
2684
2903
  import { imageSrcPropTypeUtil as imageSrcPropTypeUtil2 } from "@elementor/editor-props";
2685
2904
  import { UploadIcon as UploadIcon2 } from "@elementor/icons";
2686
2905
  import { Button as Button4, Card as Card2, CardMedia as CardMedia2, CardOverlay as CardOverlay2, CircularProgress as CircularProgress3, Stack as Stack13, styled as styled4 } from "@elementor/ui";
2687
2906
  import { useWpMediaAttachment as useWpMediaAttachment2, useWpMediaFrame as useWpMediaFrame2 } from "@elementor/wp-media";
2688
- import { __ as __13 } from "@wordpress/i18n";
2907
+ import { __ as __15 } from "@wordpress/i18n";
2689
2908
 
2690
2909
  // src/components/enable-unfiltered-modal.tsx
2691
- import * as React42 from "react";
2910
+ import * as React45 from "react";
2692
2911
  import { useState as useState9 } from "react";
2693
2912
  import { useCurrentUserCapabilities } from "@elementor/editor-current-user";
2694
2913
  import {
@@ -2702,19 +2921,19 @@ import {
2702
2921
  DialogTitle,
2703
2922
  Divider as Divider3
2704
2923
  } from "@elementor/ui";
2705
- import { __ as __12 } from "@wordpress/i18n";
2706
- var ADMIN_TITLE_TEXT = __12("Enable Unfiltered Uploads", "elementor");
2707
- var ADMIN_CONTENT_TEXT = __12(
2924
+ import { __ as __14 } from "@wordpress/i18n";
2925
+ var ADMIN_TITLE_TEXT = __14("Enable Unfiltered Uploads", "elementor");
2926
+ var ADMIN_CONTENT_TEXT = __14(
2708
2927
  "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.",
2709
2928
  "elementor"
2710
2929
  );
2711
- var NON_ADMIN_TITLE_TEXT = __12("Sorry, you can't upload that file yet", "elementor");
2712
- var NON_ADMIN_CONTENT_TEXT = __12(
2930
+ var NON_ADMIN_TITLE_TEXT = __14("Sorry, you can't upload that file yet", "elementor");
2931
+ var NON_ADMIN_CONTENT_TEXT = __14(
2713
2932
  "This is because this file type may pose a security risk. To upload them anyway, ask the site administrator to enable unfiltered file uploads.",
2714
2933
  "elementor"
2715
2934
  );
2716
- var ADMIN_FAILED_CONTENT_TEXT_PT1 = __12("Failed to enable unfiltered files upload.", "elementor");
2717
- var ADMIN_FAILED_CONTENT_TEXT_PT2 = __12(
2935
+ var ADMIN_FAILED_CONTENT_TEXT_PT1 = __14("Failed to enable unfiltered files upload.", "elementor");
2936
+ var ADMIN_FAILED_CONTENT_TEXT_PT2 = __14(
2718
2937
  "You can try again, if the problem persists, please contact support.",
2719
2938
  "elementor"
2720
2939
  );
@@ -2741,9 +2960,9 @@ var EnableUnfilteredModal = (props) => {
2741
2960
  }
2742
2961
  };
2743
2962
  const dialogProps = { ...props, isPending, handleEnable, isError, onClose };
2744
- return canManageOptions ? /* @__PURE__ */ React42.createElement(AdminDialog, { ...dialogProps }) : /* @__PURE__ */ React42.createElement(NonAdminDialog, { ...dialogProps });
2963
+ return canManageOptions ? /* @__PURE__ */ React45.createElement(AdminDialog, { ...dialogProps }) : /* @__PURE__ */ React45.createElement(NonAdminDialog, { ...dialogProps });
2745
2964
  };
2746
- var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @__PURE__ */ React42.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React42.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React42.createElement(DialogTitle, null, ADMIN_TITLE_TEXT)), /* @__PURE__ */ React42.createElement(Divider3, null), /* @__PURE__ */ React42.createElement(DialogContent, null, /* @__PURE__ */ React42.createElement(DialogContentText, null, isError ? /* @__PURE__ */ React42.createElement(React42.Fragment, null, ADMIN_FAILED_CONTENT_TEXT_PT1, " ", /* @__PURE__ */ React42.createElement("br", null), " ", ADMIN_FAILED_CONTENT_TEXT_PT2) : ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React42.createElement(DialogActions, null, /* @__PURE__ */ React42.createElement(Button3, { size: "medium", color: "secondary", onClick: () => onClose(false) }, __12("Cancel", "elementor")), /* @__PURE__ */ React42.createElement(
2965
+ var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @__PURE__ */ React45.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React45.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React45.createElement(DialogTitle, null, ADMIN_TITLE_TEXT)), /* @__PURE__ */ React45.createElement(Divider3, null), /* @__PURE__ */ React45.createElement(DialogContent, null, /* @__PURE__ */ React45.createElement(DialogContentText, null, isError ? /* @__PURE__ */ React45.createElement(React45.Fragment, null, ADMIN_FAILED_CONTENT_TEXT_PT1, " ", /* @__PURE__ */ React45.createElement("br", null), " ", ADMIN_FAILED_CONTENT_TEXT_PT2) : ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React45.createElement(DialogActions, null, /* @__PURE__ */ React45.createElement(Button3, { size: "medium", color: "secondary", onClick: () => onClose(false) }, __14("Cancel", "elementor")), /* @__PURE__ */ React45.createElement(
2747
2966
  Button3,
2748
2967
  {
2749
2968
  size: "medium",
@@ -2752,9 +2971,9 @@ var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @_
2752
2971
  color: "primary",
2753
2972
  disabled: isPending
2754
2973
  },
2755
- isPending ? /* @__PURE__ */ React42.createElement(CircularProgress2, { size: 24 }) : __12("Enable", "elementor")
2974
+ isPending ? /* @__PURE__ */ React45.createElement(CircularProgress2, { size: 24 }) : __14("Enable", "elementor")
2756
2975
  )));
2757
- var NonAdminDialog = ({ open, onClose }) => /* @__PURE__ */ React42.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React42.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React42.createElement(DialogTitle, null, NON_ADMIN_TITLE_TEXT)), /* @__PURE__ */ React42.createElement(Divider3, null), /* @__PURE__ */ React42.createElement(DialogContent, null, /* @__PURE__ */ React42.createElement(DialogContentText, null, NON_ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React42.createElement(DialogActions, null, /* @__PURE__ */ React42.createElement(Button3, { size: "medium", onClick: () => onClose(false), variant: "contained", color: "primary" }, __12("Got it", "elementor"))));
2976
+ var NonAdminDialog = ({ open, onClose }) => /* @__PURE__ */ React45.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React45.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React45.createElement(DialogTitle, null, NON_ADMIN_TITLE_TEXT)), /* @__PURE__ */ React45.createElement(Divider3, null), /* @__PURE__ */ React45.createElement(DialogContent, null, /* @__PURE__ */ React45.createElement(DialogContentText, null, NON_ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React45.createElement(DialogActions, null, /* @__PURE__ */ React45.createElement(Button3, { size: "medium", onClick: () => onClose(false), variant: "contained", color: "primary" }, __14("Got it", "elementor"))));
2758
2977
 
2759
2978
  // src/controls/svg-media-control.tsx
2760
2979
  var TILE_SIZE = 8;
@@ -2815,15 +3034,15 @@ var SvgMediaControl = createControl(() => {
2815
3034
  open(openOptions);
2816
3035
  }
2817
3036
  };
2818
- return /* @__PURE__ */ React43.createElement(Stack13, { gap: 1 }, /* @__PURE__ */ React43.createElement(EnableUnfilteredModal, { open: unfilteredModalOpenState, onClose: onCloseUnfilteredModal }), /* @__PURE__ */ React43.createElement(ControlActions, null, /* @__PURE__ */ React43.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React43.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React43.createElement(CircularProgress3, { role: "progressbar" }) : /* @__PURE__ */ React43.createElement(
3037
+ return /* @__PURE__ */ React46.createElement(Stack13, { gap: 1 }, /* @__PURE__ */ React46.createElement(EnableUnfilteredModal, { open: unfilteredModalOpenState, onClose: onCloseUnfilteredModal }), /* @__PURE__ */ React46.createElement(ControlActions, null, /* @__PURE__ */ React46.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React46.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React46.createElement(CircularProgress3, { role: "progressbar" }) : /* @__PURE__ */ React46.createElement(
2819
3038
  CardMedia2,
2820
3039
  {
2821
3040
  component: "img",
2822
3041
  image: src,
2823
- alt: __13("Preview SVG", "elementor"),
3042
+ alt: __15("Preview SVG", "elementor"),
2824
3043
  sx: { maxHeight: "140px", width: "50px" }
2825
3044
  }
2826
- )), /* @__PURE__ */ React43.createElement(
3045
+ )), /* @__PURE__ */ React46.createElement(
2827
3046
  CardOverlay2,
2828
3047
  {
2829
3048
  sx: {
@@ -2832,7 +3051,7 @@ var SvgMediaControl = createControl(() => {
2832
3051
  }
2833
3052
  }
2834
3053
  },
2835
- /* @__PURE__ */ React43.createElement(Stack13, { gap: 1 }, /* @__PURE__ */ React43.createElement(
3054
+ /* @__PURE__ */ React46.createElement(Stack13, { gap: 1 }, /* @__PURE__ */ React46.createElement(
2836
3055
  Button4,
2837
3056
  {
2838
3057
  size: "tiny",
@@ -2840,46 +3059,46 @@ var SvgMediaControl = createControl(() => {
2840
3059
  variant: "outlined",
2841
3060
  onClick: () => handleClick(MODE_BROWSE)
2842
3061
  },
2843
- __13("Select SVG", "elementor")
2844
- ), /* @__PURE__ */ React43.createElement(
3062
+ __15("Select SVG", "elementor")
3063
+ ), /* @__PURE__ */ React46.createElement(
2845
3064
  Button4,
2846
3065
  {
2847
3066
  size: "tiny",
2848
3067
  variant: "text",
2849
3068
  color: "inherit",
2850
- startIcon: /* @__PURE__ */ React43.createElement(UploadIcon2, null),
3069
+ startIcon: /* @__PURE__ */ React46.createElement(UploadIcon2, null),
2851
3070
  onClick: () => handleClick(MODE_UPLOAD)
2852
3071
  },
2853
- __13("Upload", "elementor")
3072
+ __15("Upload", "elementor")
2854
3073
  ))
2855
3074
  ))));
2856
3075
  });
2857
3076
 
2858
3077
  // src/controls/background-control/background-control.tsx
2859
- import * as React50 from "react";
3078
+ import * as React53 from "react";
2860
3079
  import { backgroundPropTypeUtil } from "@elementor/editor-props";
2861
- import { isExperimentActive as isExperimentActive4 } from "@elementor/editor-v1-adapters";
2862
- import { Grid as Grid15 } from "@elementor/ui";
2863
- import { __ as __19 } from "@wordpress/i18n";
3080
+ import { isExperimentActive as isExperimentActive5 } from "@elementor/editor-v1-adapters";
3081
+ import { Grid as Grid16 } from "@elementor/ui";
3082
+ import { __ as __21 } from "@wordpress/i18n";
2864
3083
 
2865
3084
  // src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx
2866
- import * as React49 from "react";
3085
+ import * as React52 from "react";
2867
3086
  import {
2868
3087
  backgroundColorOverlayPropTypeUtil as backgroundColorOverlayPropTypeUtil2,
2869
3088
  backgroundImageOverlayPropTypeUtil as backgroundImageOverlayPropTypeUtil2,
2870
3089
  backgroundOverlayPropTypeUtil,
2871
3090
  colorPropTypeUtil as colorPropTypeUtil3
2872
3091
  } from "@elementor/editor-props";
2873
- import { Box as Box7, CardMedia as CardMedia3, Grid as Grid14, styled as styled5, Tab, TabPanel, Tabs, UnstableColorIndicator as UnstableColorIndicator2 } from "@elementor/ui";
3092
+ import { Box as Box8, CardMedia as CardMedia3, styled as styled5, Tab, TabPanel, Tabs, UnstableColorIndicator as UnstableColorIndicator2 } from "@elementor/ui";
2874
3093
  import { useWpMediaAttachment as useWpMediaAttachment3 } from "@elementor/wp-media";
2875
- import { __ as __18 } from "@wordpress/i18n";
3094
+ import { __ as __20 } from "@wordpress/i18n";
2876
3095
 
2877
3096
  // src/env.ts
2878
3097
  import { parseEnv } from "@elementor/env";
2879
3098
  var { env } = parseEnv("@elementor/editor-controls");
2880
3099
 
2881
3100
  // src/controls/background-control/background-gradient-color-control.tsx
2882
- import * as React44 from "react";
3101
+ import * as React47 from "react";
2883
3102
  import {
2884
3103
  backgroundGradientOverlayPropTypeUtil,
2885
3104
  colorPropTypeUtil as colorPropTypeUtil2,
@@ -2926,7 +3145,7 @@ var BackgroundGradientColorControl = createControl(() => {
2926
3145
  positions: positions?.value.split(" ")
2927
3146
  };
2928
3147
  };
2929
- return /* @__PURE__ */ React44.createElement(ControlActions, null, /* @__PURE__ */ React44.createElement(
3148
+ return /* @__PURE__ */ React47.createElement(ControlActions, null, /* @__PURE__ */ React47.createElement(
2930
3149
  UnstableGradientBox,
2931
3150
  {
2932
3151
  sx: { width: "auto", padding: 1.5 },
@@ -2951,53 +3170,53 @@ var initialBackgroundGradientOverlay = backgroundGradientOverlayPropTypeUtil.cre
2951
3170
  });
2952
3171
 
2953
3172
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx
2954
- import * as React45 from "react";
3173
+ import * as React48 from "react";
2955
3174
  import { PinIcon, PinnedOffIcon } from "@elementor/icons";
2956
- import { Grid as Grid10 } from "@elementor/ui";
2957
- import { __ as __14 } from "@wordpress/i18n";
3175
+ import { Grid as Grid12 } from "@elementor/ui";
3176
+ import { __ as __16 } from "@wordpress/i18n";
2958
3177
  var attachmentControlOptions = [
2959
3178
  {
2960
3179
  value: "fixed",
2961
- label: __14("Fixed", "elementor"),
2962
- renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(PinIcon, { fontSize: size }),
3180
+ label: __16("Fixed", "elementor"),
3181
+ renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(PinIcon, { fontSize: size }),
2963
3182
  showTooltip: true
2964
3183
  },
2965
3184
  {
2966
3185
  value: "scroll",
2967
- label: __14("Scroll", "elementor"),
2968
- renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(PinnedOffIcon, { fontSize: size }),
3186
+ label: __16("Scroll", "elementor"),
3187
+ renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(PinnedOffIcon, { fontSize: size }),
2969
3188
  showTooltip: true
2970
3189
  }
2971
3190
  ];
2972
3191
  var BackgroundImageOverlayAttachment = () => {
2973
- return /* @__PURE__ */ React45.createElement(PopoverGridContainer, null, /* @__PURE__ */ React45.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(ControlFormLabel, null, __14("Attachment", "elementor"))), /* @__PURE__ */ React45.createElement(Grid10, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React45.createElement(ToggleControl, { options: attachmentControlOptions })));
3192
+ return /* @__PURE__ */ React48.createElement(PopoverGridContainer, null, /* @__PURE__ */ React48.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(ControlFormLabel, null, __16("Attachment", "elementor"))), /* @__PURE__ */ React48.createElement(Grid12, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React48.createElement(ToggleControl, { options: attachmentControlOptions })));
2974
3193
  };
2975
3194
 
2976
3195
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
2977
- import * as React46 from "react";
2978
- import { useRef as useRef9 } from "react";
3196
+ import * as React49 from "react";
3197
+ import { useRef as useRef10 } from "react";
2979
3198
  import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil9 } from "@elementor/editor-props";
2980
3199
  import { MenuListItem as MenuListItem5 } from "@elementor/editor-ui";
2981
3200
  import { LetterXIcon, LetterYIcon } from "@elementor/icons";
2982
- import { Grid as Grid11, Select as Select4 } from "@elementor/ui";
2983
- import { __ as __15 } from "@wordpress/i18n";
3201
+ import { Grid as Grid13, Select as Select4 } from "@elementor/ui";
3202
+ import { __ as __17 } from "@wordpress/i18n";
2984
3203
  var backgroundPositionOptions = [
2985
- { label: __15("Center center", "elementor"), value: "center center" },
2986
- { label: __15("Center left", "elementor"), value: "center left" },
2987
- { label: __15("Center right", "elementor"), value: "center right" },
2988
- { label: __15("Top center", "elementor"), value: "top center" },
2989
- { label: __15("Top left", "elementor"), value: "top left" },
2990
- { label: __15("Top right", "elementor"), value: "top right" },
2991
- { label: __15("Bottom center", "elementor"), value: "bottom center" },
2992
- { label: __15("Bottom left", "elementor"), value: "bottom left" },
2993
- { label: __15("Bottom right", "elementor"), value: "bottom right" },
2994
- { label: __15("Custom", "elementor"), value: "custom" }
3204
+ { label: __17("Center center", "elementor"), value: "center center" },
3205
+ { label: __17("Center left", "elementor"), value: "center left" },
3206
+ { label: __17("Center right", "elementor"), value: "center right" },
3207
+ { label: __17("Top center", "elementor"), value: "top center" },
3208
+ { label: __17("Top left", "elementor"), value: "top left" },
3209
+ { label: __17("Top right", "elementor"), value: "top right" },
3210
+ { label: __17("Bottom center", "elementor"), value: "bottom center" },
3211
+ { label: __17("Bottom left", "elementor"), value: "bottom left" },
3212
+ { label: __17("Bottom right", "elementor"), value: "bottom right" },
3213
+ { label: __17("Custom", "elementor"), value: "custom" }
2995
3214
  ];
2996
3215
  var BackgroundImageOverlayPosition = () => {
2997
3216
  const backgroundImageOffsetContext = useBoundProp(backgroundImagePositionOffsetPropTypeUtil);
2998
3217
  const stringPropContext = useBoundProp(stringPropTypeUtil9);
2999
3218
  const isCustom = !!backgroundImageOffsetContext.value;
3000
- const rowRef = useRef9(null);
3219
+ const rowRef = useRef10(null);
3001
3220
  const handlePositionChange = (event) => {
3002
3221
  const value = event.target.value || null;
3003
3222
  if (value === "custom") {
@@ -3006,7 +3225,7 @@ var BackgroundImageOverlayPosition = () => {
3006
3225
  stringPropContext.setValue(value);
3007
3226
  }
3008
3227
  };
3009
- return /* @__PURE__ */ React46.createElement(Grid11, { container: true, spacing: 1.5 }, /* @__PURE__ */ React46.createElement(Grid11, { item: true, xs: 12 }, /* @__PURE__ */ React46.createElement(PopoverGridContainer, null, /* @__PURE__ */ React46.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(ControlFormLabel, null, __15("Position", "elementor"))), /* @__PURE__ */ React46.createElement(Grid11, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React46.createElement(
3228
+ return /* @__PURE__ */ React49.createElement(Grid13, { container: true, spacing: 1.5 }, /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React49.createElement(PopoverGridContainer, null, /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(ControlFormLabel, null, __17("Position", "elementor"))), /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React49.createElement(
3010
3229
  Select4,
3011
3230
  {
3012
3231
  fullWidth: true,
@@ -3015,60 +3234,60 @@ var BackgroundImageOverlayPosition = () => {
3015
3234
  disabled: stringPropContext.disabled,
3016
3235
  value: (backgroundImageOffsetContext.value ? "custom" : stringPropContext.value) ?? ""
3017
3236
  },
3018
- backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React46.createElement(MenuListItem5, { key: value, value: value ?? "" }, label))
3019
- )))), isCustom ? /* @__PURE__ */ React46.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React46.createElement(Grid11, { item: true, xs: 12 }, /* @__PURE__ */ React46.createElement(Grid11, { container: true, spacing: 1.5, ref: rowRef }, /* @__PURE__ */ React46.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React46.createElement(
3237
+ backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React49.createElement(MenuListItem5, { key: value, value: value ?? "" }, label))
3238
+ )))), isCustom ? /* @__PURE__ */ React49.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React49.createElement(Grid13, { container: true, spacing: 1.5, ref: rowRef }, /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React49.createElement(
3020
3239
  SizeControl,
3021
3240
  {
3022
- startIcon: /* @__PURE__ */ React46.createElement(LetterXIcon, { fontSize: "tiny" }),
3241
+ startIcon: /* @__PURE__ */ React49.createElement(LetterXIcon, { fontSize: "tiny" }),
3023
3242
  anchorRef: rowRef
3024
3243
  }
3025
- ))), /* @__PURE__ */ React46.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React46.createElement(
3244
+ ))), /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React49.createElement(
3026
3245
  SizeControl,
3027
3246
  {
3028
- startIcon: /* @__PURE__ */ React46.createElement(LetterYIcon, { fontSize: "tiny" }),
3247
+ startIcon: /* @__PURE__ */ React49.createElement(LetterYIcon, { fontSize: "tiny" }),
3029
3248
  anchorRef: rowRef
3030
3249
  }
3031
3250
  )))))) : null);
3032
3251
  };
3033
3252
 
3034
3253
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx
3035
- import * as React47 from "react";
3254
+ import * as React50 from "react";
3036
3255
  import { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon as XIcon3 } from "@elementor/icons";
3037
- import { Grid as Grid12 } from "@elementor/ui";
3038
- import { __ as __16 } from "@wordpress/i18n";
3256
+ import { Grid as Grid14 } from "@elementor/ui";
3257
+ import { __ as __18 } from "@wordpress/i18n";
3039
3258
  var repeatControlOptions = [
3040
3259
  {
3041
3260
  value: "repeat",
3042
- label: __16("Repeat", "elementor"),
3043
- renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(GridDotsIcon, { fontSize: size }),
3261
+ label: __18("Repeat", "elementor"),
3262
+ renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(GridDotsIcon, { fontSize: size }),
3044
3263
  showTooltip: true
3045
3264
  },
3046
3265
  {
3047
3266
  value: "repeat-x",
3048
- label: __16("Repeat-x", "elementor"),
3049
- renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(DotsHorizontalIcon, { fontSize: size }),
3267
+ label: __18("Repeat-x", "elementor"),
3268
+ renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(DotsHorizontalIcon, { fontSize: size }),
3050
3269
  showTooltip: true
3051
3270
  },
3052
3271
  {
3053
3272
  value: "repeat-y",
3054
- label: __16("Repeat-y", "elementor"),
3055
- renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(DotsVerticalIcon, { fontSize: size }),
3273
+ label: __18("Repeat-y", "elementor"),
3274
+ renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(DotsVerticalIcon, { fontSize: size }),
3056
3275
  showTooltip: true
3057
3276
  },
3058
3277
  {
3059
3278
  value: "no-repeat",
3060
- label: __16("No-repeat", "elementor"),
3061
- renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(XIcon3, { fontSize: size }),
3279
+ label: __18("No-repeat", "elementor"),
3280
+ renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(XIcon3, { fontSize: size }),
3062
3281
  showTooltip: true
3063
3282
  }
3064
3283
  ];
3065
3284
  var BackgroundImageOverlayRepeat = () => {
3066
- return /* @__PURE__ */ React47.createElement(PopoverGridContainer, null, /* @__PURE__ */ React47.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ControlFormLabel, null, __16("Repeat", "elementor"))), /* @__PURE__ */ React47.createElement(Grid12, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React47.createElement(ToggleControl, { options: repeatControlOptions })));
3285
+ return /* @__PURE__ */ React50.createElement(PopoverGridContainer, null, /* @__PURE__ */ React50.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React50.createElement(ControlFormLabel, null, __18("Repeat", "elementor"))), /* @__PURE__ */ React50.createElement(Grid14, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React50.createElement(ToggleControl, { options: repeatControlOptions })));
3067
3286
  };
3068
3287
 
3069
3288
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
3070
- import * as React48 from "react";
3071
- import { useRef as useRef10 } from "react";
3289
+ import * as React51 from "react";
3290
+ import { useRef as useRef11 } from "react";
3072
3291
  import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil10 } from "@elementor/editor-props";
3073
3292
  import {
3074
3293
  ArrowBarBothIcon,
@@ -3078,31 +3297,31 @@ import {
3078
3297
  LetterAIcon,
3079
3298
  PencilIcon as PencilIcon2
3080
3299
  } from "@elementor/icons";
3081
- import { Grid as Grid13 } from "@elementor/ui";
3082
- import { __ as __17 } from "@wordpress/i18n";
3300
+ import { Grid as Grid15 } from "@elementor/ui";
3301
+ import { __ as __19 } from "@wordpress/i18n";
3083
3302
  var sizeControlOptions = [
3084
3303
  {
3085
3304
  value: "auto",
3086
- label: __17("Auto", "elementor"),
3087
- renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(LetterAIcon, { fontSize: size }),
3305
+ label: __19("Auto", "elementor"),
3306
+ renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(LetterAIcon, { fontSize: size }),
3088
3307
  showTooltip: true
3089
3308
  },
3090
3309
  {
3091
3310
  value: "cover",
3092
- label: __17("Cover", "elementor"),
3093
- renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(ArrowsMaximizeIcon, { fontSize: size }),
3311
+ label: __19("Cover", "elementor"),
3312
+ renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(ArrowsMaximizeIcon, { fontSize: size }),
3094
3313
  showTooltip: true
3095
3314
  },
3096
3315
  {
3097
3316
  value: "contain",
3098
- label: __17("Contain", "elementor"),
3099
- renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(ArrowBarBothIcon, { fontSize: size }),
3317
+ label: __19("Contain", "elementor"),
3318
+ renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(ArrowBarBothIcon, { fontSize: size }),
3100
3319
  showTooltip: true
3101
3320
  },
3102
3321
  {
3103
3322
  value: "custom",
3104
- label: __17("Custom", "elementor"),
3105
- renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(PencilIcon2, { fontSize: size }),
3323
+ label: __19("Custom", "elementor"),
3324
+ renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(PencilIcon2, { fontSize: size }),
3106
3325
  showTooltip: true
3107
3326
  }
3108
3327
  ];
@@ -3110,7 +3329,7 @@ var BackgroundImageOverlaySize = () => {
3110
3329
  const backgroundImageScaleContext = useBoundProp(backgroundImageSizeScalePropTypeUtil);
3111
3330
  const stringPropContext = useBoundProp(stringPropTypeUtil10);
3112
3331
  const isCustom = !!backgroundImageScaleContext.value;
3113
- const rowRef = useRef10(null);
3332
+ const rowRef = useRef11(null);
3114
3333
  const handleSizeChange = (size) => {
3115
3334
  if (size === "custom") {
3116
3335
  backgroundImageScaleContext.setValue({ width: null, height: null });
@@ -3118,7 +3337,7 @@ var BackgroundImageOverlaySize = () => {
3118
3337
  stringPropContext.setValue(size);
3119
3338
  }
3120
3339
  };
3121
- return /* @__PURE__ */ React48.createElement(Grid13, { container: true, spacing: 1.5 }, /* @__PURE__ */ React48.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React48.createElement(PopoverGridContainer, null, /* @__PURE__ */ React48.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(ControlFormLabel, null, __17("Size", "elementor"))), /* @__PURE__ */ React48.createElement(Grid13, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React48.createElement(
3340
+ return /* @__PURE__ */ React51.createElement(Grid15, { container: true, spacing: 1.5 }, /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 12 }, /* @__PURE__ */ React51.createElement(PopoverGridContainer, null, /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(ControlFormLabel, null, __19("Size", "elementor"))), /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React51.createElement(
3122
3341
  ControlToggleButtonGroup,
3123
3342
  {
3124
3343
  exclusive: true,
@@ -3127,17 +3346,17 @@ var BackgroundImageOverlaySize = () => {
3127
3346
  disabled: stringPropContext.disabled,
3128
3347
  value: backgroundImageScaleContext.value ? "custom" : stringPropContext.value
3129
3348
  }
3130
- )))), isCustom ? /* @__PURE__ */ React48.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React48.createElement(Grid13, { item: true, xs: 12, ref: rowRef }, /* @__PURE__ */ React48.createElement(PopoverGridContainer, null, /* @__PURE__ */ React48.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React48.createElement(
3349
+ )))), isCustom ? /* @__PURE__ */ React51.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 12, ref: rowRef }, /* @__PURE__ */ React51.createElement(PopoverGridContainer, null, /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React51.createElement(
3131
3350
  SizeControl,
3132
3351
  {
3133
- startIcon: /* @__PURE__ */ React48.createElement(ArrowsMoveHorizontalIcon2, { fontSize: "tiny" }),
3352
+ startIcon: /* @__PURE__ */ React51.createElement(ArrowsMoveHorizontalIcon2, { fontSize: "tiny" }),
3134
3353
  extendedOptions: ["auto"],
3135
3354
  anchorRef: rowRef
3136
3355
  }
3137
- ))), /* @__PURE__ */ React48.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React48.createElement(
3356
+ ))), /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React51.createElement(
3138
3357
  SizeControl,
3139
3358
  {
3140
- startIcon: /* @__PURE__ */ React48.createElement(ArrowsMoveVerticalIcon2, { fontSize: "tiny" }),
3359
+ startIcon: /* @__PURE__ */ React51.createElement(ArrowsMoveVerticalIcon2, { fontSize: "tiny" }),
3141
3360
  extendedOptions: ["auto"],
3142
3361
  anchorRef: rowRef
3143
3362
  }
@@ -3145,7 +3364,7 @@ var BackgroundImageOverlaySize = () => {
3145
3364
  };
3146
3365
 
3147
3366
  // src/controls/background-control/background-overlay/use-background-tabs-history.ts
3148
- import { useRef as useRef11 } from "react";
3367
+ import { useRef as useRef12 } from "react";
3149
3368
  import {
3150
3369
  backgroundColorOverlayPropTypeUtil,
3151
3370
  backgroundGradientOverlayPropTypeUtil as backgroundGradientOverlayPropTypeUtil2,
@@ -3170,7 +3389,7 @@ var useBackgroundTabsHistory = ({
3170
3389
  return "image";
3171
3390
  };
3172
3391
  const { getTabsProps, getTabProps, getTabPanelProps } = useTabs(getCurrentOverlayType());
3173
- const valuesHistory = useRef11({
3392
+ const valuesHistory = useRef12({
3174
3393
  image: initialBackgroundImageOverlay,
3175
3394
  color: initialBackgroundColorOverlay2,
3176
3395
  gradient: initialBackgroundGradientOverlay2
@@ -3238,21 +3457,21 @@ var getInitialBackgroundOverlay = () => ({
3238
3457
  }
3239
3458
  });
3240
3459
  var backgroundResolutionOptions = [
3241
- { label: __18("Thumbnail - 150 x 150", "elementor"), value: "thumbnail" },
3242
- { label: __18("Medium - 300 x 300", "elementor"), value: "medium" },
3243
- { label: __18("Large 1024 x 1024", "elementor"), value: "large" },
3244
- { label: __18("Full", "elementor"), value: "full" }
3460
+ { label: __20("Thumbnail - 150 x 150", "elementor"), value: "thumbnail" },
3461
+ { label: __20("Medium - 300 x 300", "elementor"), value: "medium" },
3462
+ { label: __20("Large 1024 x 1024", "elementor"), value: "large" },
3463
+ { label: __20("Full", "elementor"), value: "full" }
3245
3464
  ];
3246
3465
  var BackgroundOverlayRepeaterControl = createControl(() => {
3247
3466
  const { propType, value: overlayValues, setValue, disabled } = useBoundProp(backgroundOverlayPropTypeUtil);
3248
- return /* @__PURE__ */ React49.createElement(PropProvider, { propType, value: overlayValues, setValue, disabled }, /* @__PURE__ */ React49.createElement(
3467
+ return /* @__PURE__ */ React52.createElement(PropProvider, { propType, value: overlayValues, setValue, isDisabled: () => disabled }, /* @__PURE__ */ React52.createElement(
3249
3468
  Repeater,
3250
3469
  {
3251
3470
  openOnAdd: true,
3252
3471
  disabled,
3253
3472
  values: overlayValues ?? [],
3254
3473
  setValues: setValue,
3255
- label: __18("Overlay", "elementor"),
3474
+ label: __20("Overlay", "elementor"),
3256
3475
  itemSettings: {
3257
3476
  Icon: ItemIcon3,
3258
3477
  Label: ItemLabel3,
@@ -3263,7 +3482,7 @@ var BackgroundOverlayRepeaterControl = createControl(() => {
3263
3482
  ));
3264
3483
  });
3265
3484
  var ItemContent3 = ({ anchorEl = null, bind }) => {
3266
- return /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React49.createElement(Content3, { anchorEl }));
3485
+ return /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React52.createElement(Content3, { anchorEl }));
3267
3486
  };
3268
3487
  var Content3 = ({ anchorEl }) => {
3269
3488
  const { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory({
@@ -3271,27 +3490,27 @@ var Content3 = ({ anchorEl }) => {
3271
3490
  color: initialBackgroundColorOverlay.value,
3272
3491
  gradient: initialBackgroundGradientOverlay.value
3273
3492
  });
3274
- return /* @__PURE__ */ React49.createElement(Box7, { sx: { width: "100%" } }, /* @__PURE__ */ React49.createElement(Box7, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React49.createElement(
3493
+ return /* @__PURE__ */ React52.createElement(Box8, { sx: { width: "100%" } }, /* @__PURE__ */ React52.createElement(Box8, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React52.createElement(
3275
3494
  Tabs,
3276
3495
  {
3277
3496
  size: "small",
3278
3497
  variant: "fullWidth",
3279
3498
  ...getTabsProps(),
3280
- "aria-label": __18("Background Overlay", "elementor")
3499
+ "aria-label": __20("Background Overlay", "elementor")
3281
3500
  },
3282
- /* @__PURE__ */ React49.createElement(Tab, { label: __18("Image", "elementor"), ...getTabProps("image") }),
3283
- /* @__PURE__ */ React49.createElement(Tab, { label: __18("Gradient", "elementor"), ...getTabProps("gradient") }),
3284
- /* @__PURE__ */ React49.createElement(Tab, { label: __18("Color", "elementor"), ...getTabProps("color") })
3285
- )), /* @__PURE__ */ React49.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React49.createElement(PopoverContent, null, /* @__PURE__ */ React49.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React49.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("gradient") }, /* @__PURE__ */ React49.createElement(BackgroundGradientColorControl, null)), /* @__PURE__ */ React49.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("color") }, /* @__PURE__ */ React49.createElement(PopoverContent, null, /* @__PURE__ */ React49.createElement(ColorOverlayContent, { anchorEl }))));
3501
+ /* @__PURE__ */ React52.createElement(Tab, { label: __20("Image", "elementor"), ...getTabProps("image") }),
3502
+ /* @__PURE__ */ React52.createElement(Tab, { label: __20("Gradient", "elementor"), ...getTabProps("gradient") }),
3503
+ /* @__PURE__ */ React52.createElement(Tab, { label: __20("Color", "elementor"), ...getTabProps("color") })
3504
+ )), /* @__PURE__ */ React52.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React52.createElement(PopoverContent, null, /* @__PURE__ */ React52.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React52.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("gradient") }, /* @__PURE__ */ React52.createElement(BackgroundGradientColorControl, null)), /* @__PURE__ */ React52.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("color") }, /* @__PURE__ */ React52.createElement(PopoverContent, null, /* @__PURE__ */ React52.createElement(ColorOverlayContent, { anchorEl }))));
3286
3505
  };
3287
3506
  var ItemIcon3 = ({ value }) => {
3288
3507
  switch (value.$$type) {
3289
3508
  case "background-image-overlay":
3290
- return /* @__PURE__ */ React49.createElement(ItemIconImage, { value });
3509
+ return /* @__PURE__ */ React52.createElement(ItemIconImage, { value });
3291
3510
  case "background-color-overlay":
3292
- return /* @__PURE__ */ React49.createElement(ItemIconColor, { value });
3511
+ return /* @__PURE__ */ React52.createElement(ItemIconColor, { value });
3293
3512
  case "background-gradient-overlay":
3294
- return /* @__PURE__ */ React49.createElement(ItemIconGradient, { value });
3513
+ return /* @__PURE__ */ React52.createElement(ItemIconGradient, { value });
3295
3514
  default:
3296
3515
  return null;
3297
3516
  }
@@ -3304,11 +3523,11 @@ var extractColorFrom = (prop) => {
3304
3523
  };
3305
3524
  var ItemIconColor = ({ value: prop }) => {
3306
3525
  const color = extractColorFrom(prop);
3307
- return /* @__PURE__ */ React49.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: color });
3526
+ return /* @__PURE__ */ React52.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: color });
3308
3527
  };
3309
3528
  var ItemIconImage = ({ value }) => {
3310
3529
  const { imageUrl } = useImage(value);
3311
- return /* @__PURE__ */ React49.createElement(
3530
+ return /* @__PURE__ */ React52.createElement(
3312
3531
  CardMedia3,
3313
3532
  {
3314
3533
  image: imageUrl,
@@ -3323,41 +3542,41 @@ var ItemIconImage = ({ value }) => {
3323
3542
  };
3324
3543
  var ItemIconGradient = ({ value }) => {
3325
3544
  const gradient = getGradientValue(value);
3326
- return /* @__PURE__ */ React49.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: gradient });
3545
+ return /* @__PURE__ */ React52.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: gradient });
3327
3546
  };
3328
3547
  var ItemLabel3 = ({ value }) => {
3329
3548
  switch (value.$$type) {
3330
3549
  case "background-image-overlay":
3331
- return /* @__PURE__ */ React49.createElement(ItemLabelImage, { value });
3550
+ return /* @__PURE__ */ React52.createElement(ItemLabelImage, { value });
3332
3551
  case "background-color-overlay":
3333
- return /* @__PURE__ */ React49.createElement(ItemLabelColor, { value });
3552
+ return /* @__PURE__ */ React52.createElement(ItemLabelColor, { value });
3334
3553
  case "background-gradient-overlay":
3335
- return /* @__PURE__ */ React49.createElement(ItemLabelGradient, { value });
3554
+ return /* @__PURE__ */ React52.createElement(ItemLabelGradient, { value });
3336
3555
  default:
3337
3556
  return null;
3338
3557
  }
3339
3558
  };
3340
3559
  var ItemLabelColor = ({ value: prop }) => {
3341
3560
  const color = extractColorFrom(prop);
3342
- return /* @__PURE__ */ React49.createElement("span", null, color);
3561
+ return /* @__PURE__ */ React52.createElement("span", null, color);
3343
3562
  };
3344
3563
  var ItemLabelImage = ({ value }) => {
3345
3564
  const { imageTitle } = useImage(value);
3346
- return /* @__PURE__ */ React49.createElement("span", null, imageTitle);
3565
+ return /* @__PURE__ */ React52.createElement("span", null, imageTitle);
3347
3566
  };
3348
3567
  var ItemLabelGradient = ({ value }) => {
3349
3568
  if (value.value.type.value === "linear") {
3350
- return /* @__PURE__ */ React49.createElement("span", null, __18("Linear Gradient", "elementor"));
3569
+ return /* @__PURE__ */ React52.createElement("span", null, __20("Linear Gradient", "elementor"));
3351
3570
  }
3352
- return /* @__PURE__ */ React49.createElement("span", null, __18("Radial Gradient", "elementor"));
3571
+ return /* @__PURE__ */ React52.createElement("span", null, __20("Radial Gradient", "elementor"));
3353
3572
  };
3354
3573
  var ColorOverlayContent = ({ anchorEl }) => {
3355
3574
  const propContext = useBoundProp(backgroundColorOverlayPropTypeUtil2);
3356
- return /* @__PURE__ */ React49.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React49.createElement(ColorControl, { anchorEl })));
3575
+ return /* @__PURE__ */ React52.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React52.createElement(ColorControl, { anchorEl })));
3357
3576
  };
3358
3577
  var ImageOverlayContent = () => {
3359
3578
  const propContext = useBoundProp(backgroundImageOverlayPropTypeUtil2);
3360
- return /* @__PURE__ */ React49.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React49.createElement(Grid14, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React49.createElement(Grid14, { item: true, xs: 12 }, /* @__PURE__ */ React49.createElement(Grid14, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React49.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(ControlFormLabel, null, __18("Resolution", "elementor"))), /* @__PURE__ */ React49.createElement(Grid14, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React49.createElement(ImageControl, { sizes: backgroundResolutionOptions })))))), /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React49.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React49.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React49.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React49.createElement(BackgroundImageOverlayAttachment, null)));
3579
+ return /* @__PURE__ */ React52.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React52.createElement(ImageControl, { sizes: backgroundResolutionOptions })), /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React52.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React52.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React52.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React52.createElement(BackgroundImageOverlayAttachment, null)));
3361
3580
  };
3362
3581
  var StyledUnstableColorIndicator = styled5(UnstableColorIndicator2)(({ theme }) => ({
3363
3582
  borderRadius: `${theme.shape.borderRadius / 2}px`
@@ -3395,28 +3614,16 @@ var getGradientValue = (value) => {
3395
3614
  // src/controls/background-control/background-control.tsx
3396
3615
  var BackgroundControl = createControl(() => {
3397
3616
  const propContext = useBoundProp(backgroundPropTypeUtil);
3398
- const isUsingNestedProps = isExperimentActive4("e_v_3_30");
3399
- const colorLabel = __19("Color", "elementor");
3400
- return /* @__PURE__ */ React50.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React50.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React50.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React50.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React50.createElement(Grid15, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React50.createElement(Grid15, { item: true, xs: 6 }, isUsingNestedProps ? /* @__PURE__ */ React50.createElement(ControlLabel, null, colorLabel) : /* @__PURE__ */ React50.createElement(ControlFormLabel, null, colorLabel)), /* @__PURE__ */ React50.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React50.createElement(ColorControl, null)))));
3401
- });
3402
-
3403
- // src/controls/switch-control.tsx
3404
- import * as React51 from "react";
3405
- import { booleanPropTypeUtil as booleanPropTypeUtil2 } from "@elementor/editor-props";
3406
- import { Switch as Switch2 } from "@elementor/ui";
3407
- var SwitchControl2 = createControl(() => {
3408
- const { value, setValue, disabled } = useBoundProp(booleanPropTypeUtil2);
3409
- const handleChange = (event) => {
3410
- setValue(event.target.checked);
3411
- };
3412
- return /* @__PURE__ */ React51.createElement("div", { style: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React51.createElement(Switch2, { checked: !!value, onChange: handleChange, size: "small", disabled }));
3617
+ const isUsingNestedProps = isExperimentActive5("e_v_3_30");
3618
+ const colorLabel = __21("Color", "elementor");
3619
+ return /* @__PURE__ */ React53.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React53.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React53.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React53.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React53.createElement(Grid16, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React53.createElement(Grid16, { item: true, xs: 6 }, isUsingNestedProps ? /* @__PURE__ */ React53.createElement(ControlLabel, null, colorLabel) : /* @__PURE__ */ React53.createElement(ControlFormLabel, null, colorLabel)), /* @__PURE__ */ React53.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React53.createElement(ColorControl, null)))));
3413
3620
  });
3414
3621
 
3415
3622
  // src/controls/repeatable-control.tsx
3416
- import * as React52 from "react";
3623
+ import * as React54 from "react";
3417
3624
  import { useMemo as useMemo4 } from "react";
3418
3625
  import { createArrayPropUtils } from "@elementor/editor-props";
3419
- import { Box as Box8 } from "@elementor/ui";
3626
+ import { Box as Box9 } from "@elementor/ui";
3420
3627
 
3421
3628
  // src/hooks/use-repeatable-control-context.ts
3422
3629
  import { createContext as createContext6, useContext as useContext6 } from "react";
@@ -3430,6 +3637,7 @@ var useRepeatableControlContext = () => {
3430
3637
  };
3431
3638
 
3432
3639
  // src/controls/repeatable-control.tsx
3640
+ var PLACEHOLDER_REGEX = /\$\{([^}]+)\}/g;
3433
3641
  var RepeatableControl = createControl(
3434
3642
  ({
3435
3643
  repeaterLabel,
@@ -3448,16 +3656,16 @@ var RepeatableControl = createControl(
3448
3656
  () => createArrayPropUtils(childPropTypeUtil.key, childPropTypeUtil.schema),
3449
3657
  [childPropTypeUtil.key, childPropTypeUtil.schema]
3450
3658
  );
3659
+ const contextValue = useMemo4(
3660
+ () => ({
3661
+ ...childControlConfig,
3662
+ placeholder: placeholder || "",
3663
+ patternLabel: patternLabel || ""
3664
+ }),
3665
+ [childControlConfig, placeholder, patternLabel]
3666
+ );
3451
3667
  const { propType, value, setValue } = useBoundProp(childArrayPropTypeUtil);
3452
- const ItemLabel4 = ({ value: itemValue }) => {
3453
- const pattern = patternLabel || "";
3454
- const finalLabel = interpolate(pattern, itemValue.value);
3455
- if (finalLabel) {
3456
- return /* @__PURE__ */ React52.createElement("span", null, finalLabel);
3457
- }
3458
- return /* @__PURE__ */ React52.createElement(Box8, { component: "span", color: "text.tertiary" }, placeholder);
3459
- };
3460
- return /* @__PURE__ */ React52.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React52.createElement(RepeatableControlContext.Provider, { value: childControlConfig }, /* @__PURE__ */ React52.createElement(
3668
+ return /* @__PURE__ */ React54.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React54.createElement(RepeatableControlContext.Provider, { value: contextValue }, /* @__PURE__ */ React54.createElement(
3461
3669
  Repeater,
3462
3670
  {
3463
3671
  openOnAdd: true,
@@ -3478,69 +3686,140 @@ var RepeatableControl = createControl(
3478
3686
  }
3479
3687
  );
3480
3688
  var ItemContent4 = ({ bind }) => {
3481
- return /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React52.createElement(Content4, null));
3689
+ return /* @__PURE__ */ React54.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React54.createElement(Content4, null));
3482
3690
  };
3483
- var ItemIcon4 = () => /* @__PURE__ */ React52.createElement(React52.Fragment, null);
3691
+ var ItemIcon4 = () => /* @__PURE__ */ React54.createElement(React54.Fragment, null);
3484
3692
  var Content4 = () => {
3485
3693
  const { component: ChildControl, props = {} } = useRepeatableControlContext();
3486
- return /* @__PURE__ */ React52.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React52.createElement(PopoverGridContainer, null, /* @__PURE__ */ React52.createElement(ChildControl, { ...props })));
3694
+ return /* @__PURE__ */ React54.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React54.createElement(PopoverGridContainer, null, /* @__PURE__ */ React54.createElement(ChildControl, { ...props })));
3487
3695
  };
3488
3696
  var interpolate = (template, data) => {
3489
- if (Object.values(data).some((value) => value.value === "" || value === "")) {
3490
- return null;
3697
+ if (!data) {
3698
+ return template;
3699
+ }
3700
+ return template.replace(PLACEHOLDER_REGEX, (_, path) => {
3701
+ const value = getNestedValue(data, path);
3702
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
3703
+ if (value.name) {
3704
+ return value.name;
3705
+ }
3706
+ return JSON.stringify(value);
3707
+ }
3708
+ if (Array.isArray(value)) {
3709
+ return value.join(", ");
3710
+ }
3711
+ return String(value ?? "");
3712
+ });
3713
+ };
3714
+ var getNestedValue = (obj, path) => {
3715
+ return path.split(".").reduce((current, key) => {
3716
+ if (current && typeof current === "object") {
3717
+ return current[key];
3718
+ }
3719
+ return {};
3720
+ }, obj);
3721
+ };
3722
+ var isEmptyValue = (val) => {
3723
+ if (typeof val === "string") {
3724
+ return val.trim() === "";
3725
+ }
3726
+ if (Number.isNaN(val)) {
3727
+ return true;
3491
3728
  }
3492
- return new Function(...Object.keys(data), `return \`${template}\`;`)(...Object.values(data));
3729
+ if (Array.isArray(val)) {
3730
+ return val.length === 0;
3731
+ }
3732
+ if (typeof val === "object" && val !== null) {
3733
+ return Object.keys(val).length === 0;
3734
+ }
3735
+ return false;
3736
+ };
3737
+ var shouldShowPlaceholder = (pattern, data) => {
3738
+ const propertyPaths = getAllProperties(pattern);
3739
+ const values = propertyPaths.map((path) => getNestedValue(data, path));
3740
+ if (values.length === 0) {
3741
+ return false;
3742
+ }
3743
+ if (values.some((value) => value === null || value === void 0)) {
3744
+ return true;
3745
+ }
3746
+ if (values.every(isEmptyValue)) {
3747
+ return true;
3748
+ }
3749
+ return false;
3750
+ };
3751
+ var ItemLabel4 = ({ value }) => {
3752
+ const { placeholder, patternLabel } = useRepeatableControlContext();
3753
+ const label = shouldShowPlaceholder(patternLabel, value) ? placeholder : interpolate(patternLabel, value);
3754
+ return /* @__PURE__ */ React54.createElement(Box9, { component: "span", color: "text.tertiary" }, label);
3755
+ };
3756
+ var getAllProperties = (pattern) => {
3757
+ const properties = pattern.match(PLACEHOLDER_REGEX)?.map((match) => match.slice(2, -1)) || [];
3758
+ return properties;
3493
3759
  };
3494
3760
 
3495
3761
  // src/controls/key-value-control.tsx
3496
- import * as React53 from "react";
3762
+ import * as React55 from "react";
3497
3763
  import { useMemo as useMemo5, useState as useState11 } from "react";
3498
- import { keyValuePropTypeUtil } from "@elementor/editor-props";
3499
- import { FormHelperText, FormLabel as FormLabel3, Grid as Grid16, TextField as TextField9 } from "@elementor/ui";
3500
- import { __ as __20 } from "@wordpress/i18n";
3764
+ import {
3765
+ isTransformable,
3766
+ keyValuePropTypeUtil,
3767
+ stringPropTypeUtil as stringPropTypeUtil11
3768
+ } from "@elementor/editor-props";
3769
+ import { FormHelperText, FormLabel as FormLabel3, Grid as Grid17 } from "@elementor/ui";
3770
+ import { __ as __22 } from "@wordpress/i18n";
3501
3771
  var KeyValueControl = createControl((props = {}) => {
3502
- const { value, setValue } = useBoundProp(keyValuePropTypeUtil);
3503
- const [keyError, setKeyError] = useState11(null);
3504
- const [valueError, setValueError] = useState11(null);
3772
+ const { value, setValue, ...propContext } = useBoundProp(keyValuePropTypeUtil);
3773
+ const [keyError, setKeyError] = useState11("");
3774
+ const [valueError, setValueError] = useState11("");
3505
3775
  const [sessionState, setSessionState] = useState11({
3506
3776
  key: value?.key?.value || "",
3507
3777
  value: value?.value?.value || ""
3508
3778
  });
3509
- const keyLabel = props.keyName || __20("Key", "elementor");
3510
- const valueLabel = props.valueName || __20("Value", "elementor");
3779
+ const keyLabel = props.keyName || __22("Key", "elementor");
3780
+ const valueLabel = props.valueName || __22("Value", "elementor");
3511
3781
  const [keyRegex, valueRegex, errMsg] = useMemo5(
3512
3782
  () => [
3513
3783
  props.regexKey ? new RegExp(props.regexKey) : void 0,
3514
3784
  props.regexValue ? new RegExp(props.regexValue) : void 0,
3515
- props.validationErrorMessage || __20("Invalid Format", "elementor")
3785
+ props.validationErrorMessage || __22("Invalid Format", "elementor")
3516
3786
  ],
3517
3787
  [props.regexKey, props.regexValue, props.validationErrorMessage]
3518
3788
  );
3519
3789
  const validate = (newValue, fieldType) => {
3520
3790
  if (fieldType === "key" && keyRegex) {
3521
3791
  const isValid = keyRegex.test(newValue);
3522
- setKeyError(isValid ? null : errMsg);
3792
+ setKeyError(isValid ? "" : errMsg);
3523
3793
  return isValid;
3524
3794
  } else if (fieldType === "value" && valueRegex) {
3525
3795
  const isValid = valueRegex.test(newValue);
3526
- setValueError(isValid ? null : errMsg);
3796
+ setValueError(isValid ? "" : errMsg);
3527
3797
  return isValid;
3528
3798
  }
3529
3799
  return true;
3530
3800
  };
3531
- const handleChange = (event, fieldType) => {
3532
- const newValue = event.target.value;
3801
+ const handleChange = (newValue, options, meta) => {
3802
+ const fieldType = meta?.bind;
3803
+ if (!fieldType) {
3804
+ return;
3805
+ }
3806
+ const newChangedValue = newValue[fieldType];
3807
+ if (isTransformable(newChangedValue) && newChangedValue.$$type === "dynamic") {
3808
+ setValue({
3809
+ ...value,
3810
+ [fieldType]: newChangedValue
3811
+ });
3812
+ return;
3813
+ }
3814
+ const extractedValue = stringPropTypeUtil11.extract(newChangedValue);
3533
3815
  setSessionState((prev) => ({
3534
3816
  ...prev,
3535
- [fieldType]: newValue
3817
+ [fieldType]: extractedValue
3536
3818
  }));
3537
- if (validate(newValue, fieldType)) {
3819
+ if (extractedValue && validate(extractedValue, fieldType)) {
3538
3820
  setValue({
3539
3821
  ...value,
3540
- [fieldType]: {
3541
- value: newValue,
3542
- $$type: "string"
3543
- }
3822
+ [fieldType]: newChangedValue
3544
3823
  });
3545
3824
  } else {
3546
3825
  setValue({
@@ -3552,62 +3831,46 @@ var KeyValueControl = createControl((props = {}) => {
3552
3831
  });
3553
3832
  }
3554
3833
  };
3555
- const isKeyInvalid = keyError !== null;
3556
- const isValueInvalid = valueError !== null;
3557
- return /* @__PURE__ */ React53.createElement(ControlActions, null, /* @__PURE__ */ React53.createElement(Grid16, { container: true, gap: 1.5 }, /* @__PURE__ */ React53.createElement(Grid16, { item: true, xs: 12 }, /* @__PURE__ */ React53.createElement(FormLabel3, { size: "tiny" }, keyLabel), /* @__PURE__ */ React53.createElement(
3558
- TextField9,
3834
+ return /* @__PURE__ */ React55.createElement(PropProvider, { ...propContext, value, setValue: handleChange }, /* @__PURE__ */ React55.createElement(Grid17, { container: true, gap: 1.5 }, /* @__PURE__ */ React55.createElement(Grid17, { item: true, xs: 12 }, /* @__PURE__ */ React55.createElement(FormLabel3, { size: "tiny" }, keyLabel), /* @__PURE__ */ React55.createElement(PropKeyProvider, { bind: "key" }, /* @__PURE__ */ React55.createElement(TextControl, { inputValue: sessionState.key, error: !!keyError, sx: { pt: 1 } })), !!keyError && /* @__PURE__ */ React55.createElement(FormHelperText, { error: true }, keyError)), /* @__PURE__ */ React55.createElement(Grid17, { item: true, xs: 12 }, /* @__PURE__ */ React55.createElement(FormLabel3, { size: "tiny" }, valueLabel), /* @__PURE__ */ React55.createElement(PropKeyProvider, { bind: "value" }, /* @__PURE__ */ React55.createElement(
3835
+ TextControl,
3559
3836
  {
3560
- autoFocus: true,
3561
- sx: { pt: 1 },
3562
- size: "tiny",
3563
- fullWidth: true,
3564
- value: sessionState.key,
3565
- onChange: (e) => handleChange(e, "key"),
3566
- error: isKeyInvalid
3837
+ inputValue: sessionState.value,
3838
+ error: !!valueError,
3839
+ inputDisabled: !!keyError,
3840
+ sx: { pt: 1 }
3567
3841
  }
3568
- ), isKeyInvalid && /* @__PURE__ */ React53.createElement(FormHelperText, { error: true }, keyError)), /* @__PURE__ */ React53.createElement(Grid16, { item: true, xs: 12 }, /* @__PURE__ */ React53.createElement(FormLabel3, { size: "tiny" }, valueLabel), /* @__PURE__ */ React53.createElement(
3569
- TextField9,
3570
- {
3571
- sx: { pt: 1 },
3572
- size: "tiny",
3573
- fullWidth: true,
3574
- value: sessionState.value,
3575
- onChange: (e) => handleChange(e, "value"),
3576
- disabled: isKeyInvalid,
3577
- error: isValueInvalid
3578
- }
3579
- ), isValueInvalid && /* @__PURE__ */ React53.createElement(FormHelperText, { error: true }, valueError))));
3842
+ )), !!valueError && /* @__PURE__ */ React55.createElement(FormHelperText, { error: true }, valueError))));
3580
3843
  });
3581
3844
 
3582
3845
  // src/controls/position-control.tsx
3583
- import * as React54 from "react";
3846
+ import * as React56 from "react";
3584
3847
  import { useMemo as useMemo6 } from "react";
3585
- import { positionPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil11 } from "@elementor/editor-props";
3848
+ import { positionPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil12 } from "@elementor/editor-props";
3586
3849
  import { MenuListItem as MenuListItem6 } from "@elementor/editor-ui";
3587
- import { isExperimentActive as isExperimentActive5 } from "@elementor/editor-v1-adapters";
3850
+ import { isExperimentActive as isExperimentActive6 } from "@elementor/editor-v1-adapters";
3588
3851
  import { LetterXIcon as LetterXIcon2, LetterYIcon as LetterYIcon2 } from "@elementor/icons";
3589
- import { Grid as Grid17, Select as Select5 } from "@elementor/ui";
3590
- import { __ as __21 } from "@wordpress/i18n";
3852
+ import { Grid as Grid18, Select as Select5 } from "@elementor/ui";
3853
+ import { __ as __23 } from "@wordpress/i18n";
3591
3854
  var positionOptions = [
3592
- { label: __21("Center center", "elementor"), value: "center center" },
3593
- { label: __21("Center left", "elementor"), value: "center left" },
3594
- { label: __21("Center right", "elementor"), value: "center right" },
3595
- { label: __21("Top center", "elementor"), value: "top center" },
3596
- { label: __21("Top left", "elementor"), value: "top left" },
3597
- { label: __21("Top right", "elementor"), value: "top right" },
3598
- { label: __21("Bottom center", "elementor"), value: "bottom center" },
3599
- { label: __21("Bottom left", "elementor"), value: "bottom left" },
3600
- { label: __21("Bottom right", "elementor"), value: "bottom right" }
3855
+ { label: __23("Center center", "elementor"), value: "center center" },
3856
+ { label: __23("Center left", "elementor"), value: "center left" },
3857
+ { label: __23("Center right", "elementor"), value: "center right" },
3858
+ { label: __23("Top center", "elementor"), value: "top center" },
3859
+ { label: __23("Top left", "elementor"), value: "top left" },
3860
+ { label: __23("Top right", "elementor"), value: "top right" },
3861
+ { label: __23("Bottom center", "elementor"), value: "bottom center" },
3862
+ { label: __23("Bottom left", "elementor"), value: "bottom left" },
3863
+ { label: __23("Bottom right", "elementor"), value: "bottom right" }
3601
3864
  ];
3602
3865
  var PositionControl = () => {
3603
3866
  const positionContext = useBoundProp(positionPropTypeUtil);
3604
- const stringPropContext = useBoundProp(stringPropTypeUtil11);
3605
- const isVersion331Active = isExperimentActive5("e_v_3_31");
3867
+ const stringPropContext = useBoundProp(stringPropTypeUtil12);
3868
+ const isVersion331Active = isExperimentActive6("e_v_3_31");
3606
3869
  const isCustom = !!positionContext.value && isVersion331Active;
3607
3870
  const availablePositionOptions = useMemo6(() => {
3608
3871
  const options = [...positionOptions];
3609
3872
  if (isVersion331Active) {
3610
- options.push({ label: __21("Custom", "elementor"), value: "custom" });
3873
+ options.push({ label: __23("Custom", "elementor"), value: "custom" });
3611
3874
  }
3612
3875
  return options;
3613
3876
  }, [isVersion331Active]);
@@ -3619,7 +3882,7 @@ var PositionControl = () => {
3619
3882
  stringPropContext.setValue(value);
3620
3883
  }
3621
3884
  };
3622
- return /* @__PURE__ */ React54.createElement(Grid17, { container: true, spacing: 1.5 }, /* @__PURE__ */ React54.createElement(Grid17, { item: true, xs: 12 }, /* @__PURE__ */ React54.createElement(Grid17, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React54.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(ControlFormLabel, null, __21("Object position", "elementor"))), /* @__PURE__ */ React54.createElement(Grid17, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React54.createElement(
3885
+ return /* @__PURE__ */ React56.createElement(Grid18, { container: true, spacing: 1.5 }, /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 12 }, /* @__PURE__ */ React56.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(ControlFormLabel, null, __23("Object position", "elementor"))), /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React56.createElement(
3623
3886
  Select5,
3624
3887
  {
3625
3888
  size: "tiny",
@@ -3628,9 +3891,133 @@ var PositionControl = () => {
3628
3891
  onChange: handlePositionChange,
3629
3892
  fullWidth: true
3630
3893
  },
3631
- availablePositionOptions.map(({ label, value }) => /* @__PURE__ */ React54.createElement(MenuListItem6, { key: value, value: value ?? "" }, label))
3632
- )))), isCustom && /* @__PURE__ */ React54.createElement(PropProvider, { ...positionContext }, /* @__PURE__ */ React54.createElement(Grid17, { item: true, xs: 12 }, /* @__PURE__ */ React54.createElement(Grid17, { container: true, spacing: 1.5 }, /* @__PURE__ */ React54.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React54.createElement(SizeControl, { startIcon: /* @__PURE__ */ React54.createElement(LetterXIcon2, { fontSize: "tiny" }) }))), /* @__PURE__ */ React54.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React54.createElement(SizeControl, { startIcon: /* @__PURE__ */ React54.createElement(LetterYIcon2, { fontSize: "tiny" }) })))))));
3894
+ availablePositionOptions.map(({ label, value }) => /* @__PURE__ */ React56.createElement(MenuListItem6, { key: value, value: value ?? "" }, label))
3895
+ )))), isCustom && /* @__PURE__ */ React56.createElement(PropProvider, { ...positionContext }, /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 12 }, /* @__PURE__ */ React56.createElement(Grid18, { container: true, spacing: 1.5 }, /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React56.createElement(SizeControl, { startIcon: /* @__PURE__ */ React56.createElement(LetterXIcon2, { fontSize: "tiny" }) }))), /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React56.createElement(SizeControl, { startIcon: /* @__PURE__ */ React56.createElement(LetterYIcon2, { fontSize: "tiny" }) })))))));
3633
3896
  };
3897
+
3898
+ // src/controls/transform-control/transform-repeater-control.tsx
3899
+ import * as React62 from "react";
3900
+ import { transformPropTypeUtil } from "@elementor/editor-props";
3901
+ import { __ as __27 } from "@wordpress/i18n";
3902
+
3903
+ // src/controls/transform-control/transform-content.tsx
3904
+ import * as React59 from "react";
3905
+ import { Box as Box10, Tab as Tab2, TabPanel as TabPanel2, Tabs as Tabs2, useTabs as useTabs2 } from "@elementor/ui";
3906
+ import { __ as __25 } from "@wordpress/i18n";
3907
+
3908
+ // src/controls/transform-control/functions/move.tsx
3909
+ import * as React58 from "react";
3910
+ import { useRef as useRef13 } from "react";
3911
+ import { moveTransformPropTypeUtil } from "@elementor/editor-props";
3912
+ import { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from "@elementor/icons";
3913
+ import { Grid as Grid20 } from "@elementor/ui";
3914
+ import { __ as __24 } from "@wordpress/i18n";
3915
+
3916
+ // src/controls/transform-control/functions/axis-row.tsx
3917
+ import * as React57 from "react";
3918
+ import { Grid as Grid19 } from "@elementor/ui";
3919
+ var AxisRow = ({ label, bindValue, startIcon, anchorRef }) => {
3920
+ return /* @__PURE__ */ React57.createElement(Grid19, { item: true, xs: 12 }, /* @__PURE__ */ React57.createElement(PopoverGridContainer, { ref: anchorRef }, /* @__PURE__ */ React57.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React57.createElement(ControlLabel, null, label)), /* @__PURE__ */ React57.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React57.createElement(PropKeyProvider, { bind: bindValue }, /* @__PURE__ */ React57.createElement(SizeControl, { anchorRef, startIcon })))));
3921
+ };
3922
+
3923
+ // src/controls/transform-control/functions/move.tsx
3924
+ var moveAxisControls = [
3925
+ {
3926
+ label: __24("Move X", "elementor"),
3927
+ bindValue: "x",
3928
+ startIcon: /* @__PURE__ */ React58.createElement(ArrowRightIcon, { fontSize: "tiny" })
3929
+ },
3930
+ {
3931
+ label: __24("Move Y", "elementor"),
3932
+ bindValue: "y",
3933
+ startIcon: /* @__PURE__ */ React58.createElement(ArrowDownSmallIcon, { fontSize: "tiny" })
3934
+ },
3935
+ {
3936
+ label: __24("Move Z", "elementor"),
3937
+ bindValue: "z",
3938
+ startIcon: /* @__PURE__ */ React58.createElement(ArrowDownLeftIcon, { fontSize: "tiny" })
3939
+ }
3940
+ ];
3941
+ var Move = () => {
3942
+ const context = useBoundProp(moveTransformPropTypeUtil);
3943
+ const rowRef = useRef13(null);
3944
+ return /* @__PURE__ */ React58.createElement(Grid20, { container: true, spacing: 1.5 }, /* @__PURE__ */ React58.createElement(PropProvider, { ...context }, /* @__PURE__ */ React58.createElement(PropKeyProvider, { bind: "transform-move" }, moveAxisControls.map((control) => /* @__PURE__ */ React58.createElement(AxisRow, { key: control.bindValue, ...control, anchorRef: rowRef })))));
3945
+ };
3946
+
3947
+ // src/controls/transform-control/transform-content.tsx
3948
+ var TransformContent = ({ bind }) => {
3949
+ const { getTabsProps, getTabProps, getTabPanelProps } = useTabs2("transform-move");
3950
+ return /* @__PURE__ */ React59.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React59.createElement(PopoverContent, null, /* @__PURE__ */ React59.createElement(Box10, { sx: { width: "100%" } }, /* @__PURE__ */ React59.createElement(Box10, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React59.createElement(
3951
+ Tabs2,
3952
+ {
3953
+ size: "small",
3954
+ variant: "fullWidth",
3955
+ ...getTabsProps(),
3956
+ "aria-label": __25("Transform", "elementor")
3957
+ },
3958
+ /* @__PURE__ */ React59.createElement(Tab2, { label: __25("Move", "elementor"), ...getTabProps("transform-move") })
3959
+ )), /* @__PURE__ */ React59.createElement(TabPanel2, { sx: { p: 1.5 }, ...getTabPanelProps("transform-move") }, /* @__PURE__ */ React59.createElement(Move, null)))));
3960
+ };
3961
+
3962
+ // src/controls/transform-control/transform-icon.tsx
3963
+ import * as React60 from "react";
3964
+ import { ArrowsMaximizeIcon as ArrowsMaximizeIcon2 } from "@elementor/icons";
3965
+ var TransformIcon = ({ value }) => {
3966
+ switch (value.$$type) {
3967
+ case "transform-move":
3968
+ return /* @__PURE__ */ React60.createElement(ArrowsMaximizeIcon2, { fontSize: "tiny" });
3969
+ default:
3970
+ return null;
3971
+ }
3972
+ };
3973
+
3974
+ // src/controls/transform-control/transform-label.tsx
3975
+ import * as React61 from "react";
3976
+ import { Box as Box11 } from "@elementor/ui";
3977
+ import { __ as __26 } from "@wordpress/i18n";
3978
+ var transformMoveValue = (value) => Object.values(value).map((axis) => `${axis?.value.size}${axis?.value.unit}`).join(", ");
3979
+ var TransformLabel = (props) => {
3980
+ const { $$type, value } = props.value;
3981
+ switch ($$type) {
3982
+ case "transform-move":
3983
+ return /* @__PURE__ */ React61.createElement(Label2, { label: __26("Move", "elementor"), value: transformMoveValue(value) });
3984
+ default:
3985
+ return "";
3986
+ }
3987
+ };
3988
+ var Label2 = ({ label, value }) => {
3989
+ return /* @__PURE__ */ React61.createElement(Box11, { component: "span" }, label, ": ", value);
3990
+ };
3991
+
3992
+ // src/controls/transform-control/transform-repeater-control.tsx
3993
+ var initialTransformValue = {
3994
+ $$type: "transform-move",
3995
+ value: {
3996
+ x: { $$type: "size", value: { size: 0, unit: "px" } },
3997
+ y: { $$type: "size", value: { size: 0, unit: "px" } },
3998
+ z: { $$type: "size", value: { size: 0, unit: "px" } }
3999
+ }
4000
+ };
4001
+ var TransformRepeaterControl = createControl(() => {
4002
+ const { propType, value: transformValues, setValue, disabled } = useBoundProp(transformPropTypeUtil);
4003
+ return /* @__PURE__ */ React62.createElement(PropProvider, { propType, value: transformValues, setValue }, /* @__PURE__ */ React62.createElement(
4004
+ Repeater,
4005
+ {
4006
+ openOnAdd: true,
4007
+ disabled,
4008
+ values: transformValues ?? [],
4009
+ setValues: setValue,
4010
+ label: __27("Transform", "elementor"),
4011
+ showDuplicate: false,
4012
+ itemSettings: {
4013
+ Icon: TransformIcon,
4014
+ Label: TransformLabel,
4015
+ Content: TransformContent,
4016
+ initialValues: initialTransformValue
4017
+ }
4018
+ }
4019
+ ));
4020
+ });
3634
4021
  export {
3635
4022
  AspectRatioControl,
3636
4023
  BackgroundControl,
@@ -3661,10 +4048,11 @@ export {
3661
4048
  SizeControl,
3662
4049
  StrokeControl,
3663
4050
  SvgMediaControl,
3664
- SwitchControl2 as SwitchControl,
4051
+ SwitchControl,
3665
4052
  TextAreaControl,
3666
4053
  TextControl,
3667
4054
  ToggleControl,
4055
+ TransformRepeaterControl,
3668
4056
  UrlControl,
3669
4057
  createControlReplacementsRegistry,
3670
4058
  injectIntoRepeaterItemIcon,