@elementor/editor-controls 0.35.0 → 1.0.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 (33) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/index.d.mts +24 -13
  3. package/dist/index.d.ts +24 -13
  4. package/dist/index.js +809 -558
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +748 -491
  7. package/dist/index.mjs.map +1 -1
  8. package/package.json +5 -4
  9. package/src/bound-prop-context/use-bound-prop.ts +4 -1
  10. package/src/components/control-form-label.tsx +3 -3
  11. package/src/components/control-label.tsx +1 -1
  12. package/src/components/font-family-selector.tsx +8 -10
  13. package/src/components/popover-grid-container.tsx +7 -10
  14. package/src/components/repeater.tsx +2 -4
  15. package/src/components/size-control/size-input.tsx +125 -0
  16. package/src/components/{text-field-inner-selection.tsx → size-control/text-field-inner-selection.tsx} +33 -16
  17. package/src/components/sortable.tsx +4 -2
  18. package/src/components/text-field-popover.tsx +47 -0
  19. package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx +14 -5
  20. package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx +9 -4
  21. package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +1 -1
  22. package/src/controls/box-shadow-repeater-control.tsx +11 -9
  23. package/src/controls/equal-unequal-sizes-control.tsx +38 -18
  24. package/src/controls/font-family-control/font-family-control.tsx +3 -1
  25. package/src/controls/gap-control.tsx +20 -7
  26. package/src/controls/image-control.tsx +2 -2
  27. package/src/controls/link-control.tsx +1 -1
  28. package/src/controls/linked-dimensions-control.tsx +71 -83
  29. package/src/controls/size-control.tsx +179 -149
  30. package/src/controls/stroke-control.tsx +9 -6
  31. package/src/hooks/use-size-extended-options.ts +21 -0
  32. package/src/index.ts +2 -1
  33. package/src/utils/size-control.ts +10 -0
package/dist/index.js CHANGED
@@ -42,6 +42,7 @@ __export(index_exports, {
42
42
  ControlToggleButtonGroup: () => ControlToggleButtonGroup,
43
43
  EqualUnequalSizesControl: () => EqualUnequalSizesControl,
44
44
  FontFamilyControl: () => FontFamilyControl,
45
+ FontFamilySelector: () => FontFamilySelector,
45
46
  GapControl: () => GapControl,
46
47
  ImageControl: () => ImageControl,
47
48
  LinkControl: () => LinkControl,
@@ -256,8 +257,8 @@ var resolveUnionPropType = (propType, key) => {
256
257
  // src/components/control-form-label.tsx
257
258
  var React3 = __toESM(require("react"));
258
259
  var import_ui = require("@elementor/ui");
259
- var ControlFormLabel = ({ children }) => {
260
- return /* @__PURE__ */ React3.createElement(import_ui.FormLabel, { size: "tiny" }, children);
260
+ var ControlFormLabel = (props) => {
261
+ return /* @__PURE__ */ React3.createElement(import_ui.FormLabel, { size: "tiny", ...props });
261
262
  };
262
263
 
263
264
  // src/create-control.tsx
@@ -462,7 +463,7 @@ var ImageControl = createControl(
462
463
  const propContext = useBoundProp(import_editor_props3.imagePropTypeUtil);
463
464
  const { data: allowSvgUpload } = useUnfilteredFilesUpload();
464
465
  const mediaTypes = allowSvgUpload ? ["image", "svg"] : ["image"];
465
- return /* @__PURE__ */ React10.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React10.createElement(import_ui6.Stack, { gap: 1.5 }, ["all", "media"].includes(showMode) ? /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "src" }, /* @__PURE__ */ React10.createElement(ControlFormLabel, null, " ", (0, import_i18n2.__)("Image", "elementor"), " "), /* @__PURE__ */ React10.createElement(ImageMediaControl, { mediaTypes })) : null, ["all", "sizes"].includes(showMode) ? /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React10.createElement(import_ui6.Grid, { container: true, gap: 1.5, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React10.createElement(import_ui6.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React10.createElement(ControlFormLabel, null, " ", resolutionLabel, " ")), /* @__PURE__ */ React10.createElement(import_ui6.Grid, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React10.createElement(SelectControl, { options: sizes })))) : null));
466
+ return /* @__PURE__ */ React10.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React10.createElement(import_ui6.Stack, { gap: 1.5 }, ["all", "media"].includes(showMode) ? /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "src" }, /* @__PURE__ */ React10.createElement(ControlFormLabel, null, (0, import_i18n2.__)("Image", "elementor")), /* @__PURE__ */ React10.createElement(ImageMediaControl, { mediaTypes })) : null, ["all", "sizes"].includes(showMode) ? /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React10.createElement(import_ui6.Grid, { container: true, gap: 1.5, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React10.createElement(import_ui6.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React10.createElement(ControlFormLabel, null, resolutionLabel)), /* @__PURE__ */ React10.createElement(import_ui6.Grid, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React10.createElement(SelectControl, { options: sizes })))) : null));
466
467
  }
467
468
  );
468
469
 
@@ -511,12 +512,26 @@ var TextAreaControl = createControl(({ placeholder }) => {
511
512
  });
512
513
 
513
514
  // src/controls/size-control.tsx
514
- var React14 = __toESM(require("react"));
515
- var import_react8 = require("react");
515
+ var React16 = __toESM(require("react"));
516
+ var import_react10 = require("react");
516
517
  var import_editor_props6 = require("@elementor/editor-props");
518
+ var import_editor_responsive = require("@elementor/editor-responsive");
519
+ var import_ui12 = require("@elementor/ui");
520
+
521
+ // src/components/size-control/size-input.tsx
522
+ var React14 = __toESM(require("react"));
523
+ var import_react7 = require("react");
524
+ var import_icons2 = require("@elementor/icons");
517
525
  var import_ui10 = require("@elementor/ui");
518
526
 
519
- // src/components/text-field-inner-selection.tsx
527
+ // src/utils/size-control.ts
528
+ var defaultUnits = ["px", "%", "em", "rem", "vw", "vh"];
529
+ var defaultExtendedOptions = ["auto", "custom"];
530
+ function isUnitExtendedOption(unit) {
531
+ return defaultExtendedOptions.includes(unit);
532
+ }
533
+
534
+ // src/components/size-control/text-field-inner-selection.tsx
520
535
  var React13 = __toESM(require("react"));
521
536
  var import_react6 = require("react");
522
537
  var import_editor_ui2 = require("@elementor/editor-ui");
@@ -530,36 +545,36 @@ var TextFieldInnerSelection = (0, import_react6.forwardRef)(
530
545
  onBlur,
531
546
  onKeyDown,
532
547
  onKeyUp,
533
- endAdornment,
534
- startAdornment,
548
+ shouldBlockInput = false,
549
+ inputProps,
535
550
  disabled
536
551
  }, ref) => {
537
552
  return /* @__PURE__ */ React13.createElement(
538
553
  import_ui9.TextField,
539
554
  {
540
555
  ref,
556
+ sx: { input: { cursor: shouldBlockInput ? "default !important" : void 0 } },
541
557
  size: "tiny",
542
558
  fullWidth: true,
543
- type,
559
+ type: shouldBlockInput ? void 0 : type,
544
560
  value,
561
+ onChange: shouldBlockInput ? void 0 : onChange,
562
+ onKeyDown: shouldBlockInput ? void 0 : onKeyDown,
563
+ onKeyUp: shouldBlockInput ? void 0 : onKeyUp,
545
564
  disabled,
546
- onChange,
547
- onKeyDown,
548
- onKeyUp,
549
565
  onBlur,
550
566
  placeholder,
551
- InputProps: {
552
- endAdornment,
553
- startAdornment
554
- }
567
+ InputProps: inputProps
555
568
  }
556
569
  );
557
570
  }
558
571
  );
559
572
  var SelectionEndAdornment = ({
560
573
  options,
574
+ alternativeOptionLabels = {},
561
575
  onClick,
562
576
  value,
577
+ menuItemsAttributes = {},
563
578
  disabled
564
579
  }) => {
565
580
  const popupState = (0, import_ui9.usePopupState)({
@@ -579,12 +594,161 @@ var SelectionEndAdornment = ({
579
594
  sx: { font: "inherit", minWidth: "initial", textTransform: "uppercase" },
580
595
  ...(0, import_ui9.bindTrigger)(popupState)
581
596
  },
582
- value
583
- ), /* @__PURE__ */ React13.createElement(import_ui9.Menu, { MenuListProps: { dense: true }, ...(0, import_ui9.bindMenu)(popupState) }, options.map((option, index) => /* @__PURE__ */ React13.createElement(import_editor_ui2.MenuListItem, { key: option, onClick: () => handleMenuItemClick(index) }, option.toUpperCase()))));
597
+ alternativeOptionLabels[value] ?? value
598
+ ), /* @__PURE__ */ React13.createElement(import_ui9.Menu, { MenuListProps: { dense: true }, ...(0, import_ui9.bindMenu)(popupState) }, options.map((option, index) => /* @__PURE__ */ React13.createElement(
599
+ import_editor_ui2.MenuListItem,
600
+ {
601
+ key: option,
602
+ onClick: () => handleMenuItemClick(index),
603
+ ...menuItemsAttributes?.[option]
604
+ },
605
+ alternativeOptionLabels[option] ?? option.toUpperCase()
606
+ ))));
607
+ };
608
+
609
+ // src/components/size-control/size-input.tsx
610
+ var RESTRICTED_INPUT_KEYS = ["e", "E", "+", "-"];
611
+ var SizeInput = ({
612
+ units: units2,
613
+ handleUnitChange,
614
+ handleSizeChange,
615
+ placeholder,
616
+ startIcon,
617
+ onBlur,
618
+ onFocus,
619
+ onClick,
620
+ size,
621
+ unit,
622
+ popupState,
623
+ disabled
624
+ }) => {
625
+ const unitInputBufferRef = (0, import_react7.useRef)("");
626
+ const inputType = isUnitExtendedOption(unit) ? "text" : "number";
627
+ const inputValue = !isUnitExtendedOption(unit) && Number.isNaN(size) ? "" : size ?? "";
628
+ const handleKeyUp = (event) => {
629
+ const { key } = event;
630
+ if (!/^[a-zA-Z%]$/.test(key)) {
631
+ return;
632
+ }
633
+ event.preventDefault();
634
+ const newChar = key.toLowerCase();
635
+ const updatedBuffer = (unitInputBufferRef.current + newChar).slice(-3);
636
+ unitInputBufferRef.current = updatedBuffer;
637
+ const matchedUnit = units2.find((u) => u.includes(updatedBuffer)) || units2.find((u) => u.startsWith(newChar)) || units2.find((u) => u.includes(newChar));
638
+ if (matchedUnit) {
639
+ handleUnitChange(matchedUnit);
640
+ }
641
+ };
642
+ const popupAttributes = {
643
+ "aria-controls": popupState.isOpen ? popupState.popupId : void 0,
644
+ "aria-haspopup": true
645
+ };
646
+ const inputProps = {
647
+ ...popupAttributes,
648
+ autoComplete: "off",
649
+ onClick,
650
+ onFocus,
651
+ startAdornment: startIcon ? /* @__PURE__ */ React14.createElement(import_ui10.InputAdornment, { position: "start", disabled }, startIcon) : void 0,
652
+ endAdornment: /* @__PURE__ */ React14.createElement(
653
+ SelectionEndAdornment,
654
+ {
655
+ disabled,
656
+ options: units2,
657
+ onClick: handleUnitChange,
658
+ value: unit,
659
+ alternativeOptionLabels: {
660
+ custom: /* @__PURE__ */ React14.createElement(import_icons2.PencilIcon, { fontSize: "small" })
661
+ },
662
+ menuItemsAttributes: units2.includes("custom") ? {
663
+ custom: popupAttributes
664
+ } : void 0
665
+ }
666
+ )
667
+ };
668
+ return /* @__PURE__ */ React14.createElement(ControlActions, null, /* @__PURE__ */ React14.createElement(import_ui10.Box, null, /* @__PURE__ */ React14.createElement(
669
+ TextFieldInnerSelection,
670
+ {
671
+ disabled,
672
+ placeholder,
673
+ type: inputType,
674
+ value: inputValue,
675
+ onChange: handleSizeChange,
676
+ onKeyDown: (event) => {
677
+ if (RESTRICTED_INPUT_KEYS.includes(event.key)) {
678
+ event.preventDefault();
679
+ }
680
+ },
681
+ onKeyUp: handleKeyUp,
682
+ onBlur,
683
+ shouldBlockInput: isUnitExtendedOption(unit),
684
+ inputProps
685
+ }
686
+ )));
687
+ };
688
+
689
+ // src/components/text-field-popover.tsx
690
+ var React15 = __toESM(require("react"));
691
+ var import_ui11 = require("@elementor/ui");
692
+ var TextFieldPopover = (props) => {
693
+ const { popupState, restoreValue, anchorRef, value, onChange } = props;
694
+ return /* @__PURE__ */ React15.createElement(
695
+ import_ui11.Popover,
696
+ {
697
+ disablePortal: true,
698
+ ...(0, import_ui11.bindPopover)(popupState),
699
+ anchorOrigin: { vertical: "bottom", horizontal: "center" },
700
+ transformOrigin: { vertical: "top", horizontal: "center" },
701
+ onClose: () => {
702
+ restoreValue();
703
+ popupState.close();
704
+ }
705
+ },
706
+ /* @__PURE__ */ React15.createElement(
707
+ import_ui11.Paper,
708
+ {
709
+ sx: {
710
+ width: anchorRef.current.offsetWidth + "px",
711
+ borderRadius: 2,
712
+ p: 1.5
713
+ }
714
+ },
715
+ /* @__PURE__ */ React15.createElement(
716
+ import_ui11.TextField,
717
+ {
718
+ value,
719
+ onChange,
720
+ size: "tiny",
721
+ type: "text",
722
+ fullWidth: true,
723
+ inputProps: {
724
+ autoFocus: true
725
+ }
726
+ }
727
+ )
728
+ )
729
+ );
584
730
  };
585
731
 
732
+ // src/hooks/use-size-extended-options.ts
733
+ var import_react8 = require("react");
734
+ var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
735
+ var EXPERIMENT_ID = "e_v_3_30";
736
+ function useSizeExtendedOptions(options, disableCustom) {
737
+ return (0, import_react8.useMemo)(() => {
738
+ const isVersion330Active = (0, import_editor_v1_adapters.isExperimentActive)(EXPERIMENT_ID);
739
+ const shouldDisableCustom = !isVersion330Active || disableCustom;
740
+ const extendedOptions = [...options];
741
+ if (!shouldDisableCustom && !extendedOptions.includes("custom")) {
742
+ extendedOptions.push("custom");
743
+ } else if (options.includes("custom")) {
744
+ extendedOptions.splice(extendedOptions.indexOf("custom"), 1);
745
+ }
746
+ return extendedOptions;
747
+ }, [options, disableCustom]);
748
+ }
749
+
586
750
  // src/hooks/use-sync-external-state.tsx
587
- var import_react7 = require("react");
751
+ var import_react9 = require("react");
588
752
  var useSyncExternalState = ({
589
753
  external,
590
754
  setExternal,
@@ -603,8 +767,8 @@ var useSyncExternalState = ({
603
767
  }
604
768
  return externalValue;
605
769
  }
606
- const [internal, setInternal] = (0, import_react7.useState)(toInternal(external, null));
607
- (0, import_react7.useEffect)(() => {
770
+ const [internal, setInternal] = (0, import_react9.useState)(toInternal(external, null));
771
+ (0, import_react9.useEffect)(() => {
608
772
  setInternal((prevInternal) => toInternal(external, prevInternal));
609
773
  }, [external]);
610
774
  const setInternalValue = (setter) => {
@@ -617,149 +781,173 @@ var useSyncExternalState = ({
617
781
  };
618
782
 
619
783
  // src/controls/size-control.tsx
620
- var defaultUnits = ["px", "%", "em", "rem", "vw", "vh"];
621
- var defaultUnit = "px";
622
- var defaultSize = NaN;
623
- var SizeControl = createControl(
624
- ({ units: units2 = defaultUnits, extendedValues = [], placeholder, startIcon }) => {
625
- const { value: sizeValue, setValue: setSizeValue, restoreValue, disabled } = useBoundProp(import_editor_props6.sizePropTypeUtil);
626
- const [state, setState] = useSyncExternalState({
627
- external: sizeValue,
628
- setExternal: setSizeValue,
629
- persistWhen: (controlValue) => !!controlValue?.size || controlValue?.size === 0,
630
- fallback: (controlValue) => ({ unit: controlValue?.unit || defaultUnit, size: defaultSize })
631
- });
632
- const handleUnitChange = (unit) => {
633
- setState((prev) => ({
634
- size: prev?.size ?? defaultSize,
635
- unit
636
- }));
637
- };
638
- const handleSizeChange = (event) => {
639
- const { value: size } = event.target;
640
- setState((prev) => ({
641
- ...prev,
642
- size: size || size === "0" ? parseFloat(size) : defaultSize
643
- }));
644
- };
645
- const Input = extendedValues?.length ? ExtendedSizeInput : SizeInput;
646
- return /* @__PURE__ */ React14.createElement(
647
- Input,
648
- {
649
- disabled,
650
- size: state.size,
651
- unit: state.unit,
652
- placeholder,
653
- startIcon,
654
- units: units2,
655
- extendedValues,
656
- handleSizeChange,
657
- handleUnitChange,
658
- onBlur: restoreValue
784
+ var DEFAULT_UNIT = "px";
785
+ var DEFAULT_SIZE = NaN;
786
+ var SizeControl = createControl((props) => {
787
+ const { units: units2 = [...defaultUnits], placeholder, startIcon, anchorRef } = props;
788
+ const { value: sizeValue, setValue: setSizeValue, disabled, restoreValue } = useBoundProp(import_editor_props6.sizePropTypeUtil);
789
+ const [internalState, setInternalState] = (0, import_react10.useState)(createStateFromSizeProp(sizeValue));
790
+ const activeBreakpoint = (0, import_editor_responsive.useActiveBreakpoint)();
791
+ const extendedOptions = useSizeExtendedOptions(props.extendedOptions || [], props.disableCustom ?? false);
792
+ const popupState = (0, import_ui12.usePopupState)({ variant: "popover" });
793
+ const [state, setState] = useSyncExternalState({
794
+ external: internalState,
795
+ setExternal: (newState) => setSizeValue(extractValueFromState(newState)),
796
+ persistWhen: (newState) => {
797
+ if (!newState?.unit) {
798
+ return false;
659
799
  }
660
- );
661
- }
662
- );
663
- var ExtendedSizeInput = (props) => {
664
- const { value: stringValue, setValue: setStringValue } = useBoundProp(import_editor_props6.stringPropTypeUtil);
665
- const { extendedValues = [] } = props;
666
- const unit = stringValue ?? props.unit;
800
+ if (isUnitExtendedOption(newState.unit)) {
801
+ return newState.unit === "auto" ? true : !!newState.custom;
802
+ }
803
+ return !!newState?.numeric || newState?.numeric === 0;
804
+ },
805
+ fallback: (newState) => ({
806
+ unit: newState?.unit ?? DEFAULT_UNIT,
807
+ numeric: newState?.numeric ?? DEFAULT_SIZE,
808
+ custom: newState?.custom ?? ""
809
+ })
810
+ });
811
+ const { size: controlSize = DEFAULT_SIZE, unit: controlUnit = DEFAULT_UNIT } = extractValueFromState(state) || {};
667
812
  const handleUnitChange = (newUnit) => {
668
- if (extendedValues.includes(newUnit)) {
669
- setStringValue(newUnit);
670
- } else {
671
- props.handleUnitChange(newUnit);
813
+ if (newUnit === "custom") {
814
+ popupState.open(anchorRef?.current);
672
815
  }
816
+ setState((prev) => ({ ...prev, unit: newUnit }));
673
817
  };
674
- return /* @__PURE__ */ React14.createElement(
675
- SizeInput,
676
- {
677
- ...props,
678
- units: [...props.units, ...extendedValues],
679
- handleUnitChange,
680
- unit
681
- }
682
- );
683
- };
684
- var RESTRICTED_INPUT_KEYS = ["e", "E", "+", "-"];
685
- var SizeInput = ({
686
- units: units2,
687
- handleUnitChange,
688
- handleSizeChange,
689
- placeholder,
690
- startIcon,
691
- onBlur,
692
- size,
693
- unit,
694
- disabled
695
- }) => {
696
- const unitInputBufferRef = (0, import_react8.useRef)("");
697
- const handleKeyUp = (event) => {
698
- const { key } = event;
699
- if (!/^[a-zA-Z%]$/.test(key)) {
818
+ const handleSizeChange = (event) => {
819
+ const { value: size } = event.target;
820
+ if (controlUnit === "auto") {
821
+ setState((prev) => ({ ...prev, unit: controlUnit }));
700
822
  return;
701
823
  }
702
- event.preventDefault();
703
- const newChar = key.toLowerCase();
704
- const updatedBuffer = (unitInputBufferRef.current + newChar).slice(-3);
705
- unitInputBufferRef.current = updatedBuffer;
706
- const matchedUnit = units2.find((u) => u.includes(updatedBuffer)) || units2.find((u) => u.startsWith(newChar)) || units2.find((u) => u.includes(newChar));
707
- if (matchedUnit) {
708
- handleUnitChange(matchedUnit);
824
+ setState((prev) => ({
825
+ ...prev,
826
+ [controlUnit === "custom" ? "custom" : "numeric"]: formatSize(size, controlUnit),
827
+ unit: controlUnit
828
+ }));
829
+ };
830
+ const onInputFocus = (event) => {
831
+ if (isUnitExtendedOption(state.unit)) {
832
+ event.target?.blur();
709
833
  }
710
834
  };
711
- return /* @__PURE__ */ React14.createElement(ControlActions, null, /* @__PURE__ */ React14.createElement(import_ui10.Box, null, /* @__PURE__ */ React14.createElement(
712
- TextFieldInnerSelection,
835
+ const onInputClick = (event) => {
836
+ if (event.target.closest("input") && "custom" === state.unit) {
837
+ popupState.open(anchorRef?.current);
838
+ }
839
+ };
840
+ (0, import_react10.useEffect)(() => {
841
+ const newState = createStateFromSizeProp(sizeValue);
842
+ const currentUnit = isUnitExtendedOption(state.unit) ? "custom" : "numeric";
843
+ const mergedStates = { ...state, [currentUnit]: newState[currentUnit] };
844
+ if (mergedStates.unit !== "auto" && areStatesEqual(state, mergedStates)) {
845
+ return;
846
+ }
847
+ if (state.unit === newState.unit) {
848
+ setInternalState(mergedStates);
849
+ return;
850
+ }
851
+ setState(newState);
852
+ }, [sizeValue]);
853
+ (0, import_react10.useEffect)(() => {
854
+ const newState = createStateFromSizeProp(sizeValue);
855
+ if (activeBreakpoint && !areStatesEqual(newState, state)) {
856
+ setState(newState);
857
+ }
858
+ }, [activeBreakpoint]);
859
+ return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
860
+ SizeInput,
713
861
  {
714
862
  disabled,
715
- endAdornment: /* @__PURE__ */ React14.createElement(
716
- SelectionEndAdornment,
717
- {
718
- disabled,
719
- options: units2,
720
- onClick: handleUnitChange,
721
- value: unit ?? defaultUnit
722
- }
723
- ),
863
+ size: controlSize,
864
+ unit: controlUnit,
865
+ units: [...units2, ...extendedOptions || []],
724
866
  placeholder,
725
- startAdornment: startIcon ? /* @__PURE__ */ React14.createElement(import_ui10.InputAdornment, { position: "start", disabled }, startIcon) : void 0,
726
- type: "number",
727
- value: Number.isNaN(size) ? "" : size,
728
- onChange: handleSizeChange,
729
- onBlur,
730
- onKeyDown: (event) => {
731
- if (RESTRICTED_INPUT_KEYS.includes(event.key)) {
732
- event.preventDefault();
733
- }
734
- },
735
- onKeyUp: handleKeyUp
867
+ startIcon,
868
+ handleSizeChange,
869
+ handleUnitChange,
870
+ onBlur: restoreValue,
871
+ onFocus: onInputFocus,
872
+ onClick: onInputClick,
873
+ popupState
736
874
  }
737
- )));
738
- };
875
+ ), anchorRef?.current && /* @__PURE__ */ React16.createElement(
876
+ TextFieldPopover,
877
+ {
878
+ popupState,
879
+ anchorRef,
880
+ restoreValue,
881
+ value: controlSize,
882
+ onChange: handleSizeChange
883
+ }
884
+ ));
885
+ });
886
+ function formatSize(size, unit) {
887
+ if (isUnitExtendedOption(unit)) {
888
+ return unit === "auto" ? "" : String(size ?? "");
889
+ }
890
+ return size || size === 0 ? Number(size) : NaN;
891
+ }
892
+ function createStateFromSizeProp(sizeValue) {
893
+ const unit = sizeValue?.unit ?? DEFAULT_UNIT;
894
+ const size = sizeValue?.size ?? "";
895
+ return {
896
+ numeric: !isUnitExtendedOption(unit) && !isNaN(Number(size)) && (size || size === 0) ? Number(size) : DEFAULT_SIZE,
897
+ custom: unit === "custom" ? String(size) : "",
898
+ unit
899
+ };
900
+ }
901
+ function extractValueFromState(state) {
902
+ if (!state) {
903
+ return null;
904
+ }
905
+ if (!state?.unit) {
906
+ return { size: DEFAULT_SIZE, unit: DEFAULT_UNIT };
907
+ }
908
+ const { unit } = state;
909
+ if (unit === "auto") {
910
+ return { size: "", unit };
911
+ }
912
+ return {
913
+ size: state[unit === "custom" ? "custom" : "numeric"],
914
+ unit
915
+ };
916
+ }
917
+ function areStatesEqual(state1, state2) {
918
+ if (state1.unit !== state2.unit || state1.custom !== state2.custom) {
919
+ return false;
920
+ }
921
+ if (isUnitExtendedOption(state1.unit)) {
922
+ return state1.custom === state2.custom;
923
+ }
924
+ return state1.numeric === state2.numeric || isNaN(state1.numeric) && isNaN(state2.numeric);
925
+ }
739
926
 
740
927
  // src/controls/stroke-control.tsx
741
- var React17 = __toESM(require("react"));
928
+ var React19 = __toESM(require("react"));
929
+ var import_react11 = require("react");
742
930
  var import_editor_props8 = require("@elementor/editor-props");
743
- var import_ui13 = require("@elementor/ui");
931
+ var import_ui15 = require("@elementor/ui");
744
932
  var import_i18n3 = require("@wordpress/i18n");
745
933
 
746
934
  // src/components/section-content.tsx
747
- var React15 = __toESM(require("react"));
748
- var import_ui11 = require("@elementor/ui");
749
- var SectionContent = ({ gap = 2, sx, children }) => /* @__PURE__ */ React15.createElement(import_ui11.Stack, { gap, sx: { ...sx } }, children);
935
+ var React17 = __toESM(require("react"));
936
+ var import_ui13 = require("@elementor/ui");
937
+ var SectionContent = ({ gap = 2, sx, children }) => /* @__PURE__ */ React17.createElement(import_ui13.Stack, { gap, sx: { ...sx } }, children);
750
938
 
751
939
  // src/controls/color-control.tsx
752
- var React16 = __toESM(require("react"));
940
+ var React18 = __toESM(require("react"));
753
941
  var import_editor_props7 = require("@elementor/editor-props");
754
- var import_ui12 = require("@elementor/ui");
942
+ var import_ui14 = require("@elementor/ui");
755
943
  var ColorControl = createControl(
756
944
  ({ propTypeUtil = import_editor_props7.colorPropTypeUtil, anchorEl, slotProps = {}, ...props }) => {
757
945
  const { value, setValue, disabled } = useBoundProp(propTypeUtil);
758
946
  const handleChange = (selectedColor) => {
759
947
  setValue(selectedColor || null);
760
948
  };
761
- return /* @__PURE__ */ React16.createElement(ControlActions, null, /* @__PURE__ */ React16.createElement(
762
- import_ui12.UnstableColorField,
949
+ return /* @__PURE__ */ React18.createElement(ControlActions, null, /* @__PURE__ */ React18.createElement(
950
+ import_ui14.UnstableColorField,
763
951
  {
764
952
  size: "tiny",
765
953
  fullWidth: true,
@@ -790,48 +978,48 @@ var ColorControl = createControl(
790
978
  var units = ["px", "em", "rem"];
791
979
  var StrokeControl = createControl(() => {
792
980
  const propContext = useBoundProp(import_editor_props8.strokePropTypeUtil);
793
- return /* @__PURE__ */ React17.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React17.createElement(SectionContent, null, /* @__PURE__ */ React17.createElement(Control, { bind: "width", label: (0, import_i18n3.__)("Stroke width", "elementor") }, /* @__PURE__ */ React17.createElement(SizeControl, { units })), /* @__PURE__ */ React17.createElement(Control, { bind: "color", label: (0, import_i18n3.__)("Stroke color", "elementor") }, /* @__PURE__ */ React17.createElement(ColorControl, null))));
981
+ const rowRef = (0, import_react11.useRef)();
982
+ return /* @__PURE__ */ React19.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React19.createElement(SectionContent, null, /* @__PURE__ */ React19.createElement(Control, { bind: "width", label: (0, import_i18n3.__)("Stroke width", "elementor"), ref: rowRef }, /* @__PURE__ */ React19.createElement(SizeControl, { units, anchorRef: rowRef })), /* @__PURE__ */ React19.createElement(Control, { bind: "color", label: (0, import_i18n3.__)("Stroke color", "elementor") }, /* @__PURE__ */ React19.createElement(ColorControl, null))));
794
983
  });
795
- var Control = ({ bind, label, children }) => /* @__PURE__ */ React17.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React17.createElement(import_ui13.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React17.createElement(import_ui13.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React17.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React17.createElement(import_ui13.Grid, { item: true, xs: 6 }, children)));
984
+ var Control = (0, import_react11.forwardRef)(({ bind, label, children }, ref) => /* @__PURE__ */ React19.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React19.createElement(import_ui15.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref }, /* @__PURE__ */ React19.createElement(import_ui15.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React19.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React19.createElement(import_ui15.Grid, { item: true, xs: 6 }, children))));
796
985
 
797
986
  // src/controls/box-shadow-repeater-control.tsx
798
- var React24 = __toESM(require("react"));
987
+ var React26 = __toESM(require("react"));
988
+ var import_react15 = require("react");
799
989
  var import_editor_props9 = require("@elementor/editor-props");
800
- var import_ui18 = require("@elementor/ui");
990
+ var import_ui20 = require("@elementor/ui");
801
991
  var import_i18n5 = require("@wordpress/i18n");
802
992
 
803
993
  // src/components/popover-content.tsx
804
- var React18 = __toESM(require("react"));
805
- var import_ui14 = require("@elementor/ui");
806
- var PopoverContent = ({ alignItems, gap = 1.5, p, pt, pb, children }) => /* @__PURE__ */ React18.createElement(import_ui14.Stack, { alignItems, gap, p, pt, pb }, children);
994
+ var React20 = __toESM(require("react"));
995
+ var import_ui16 = require("@elementor/ui");
996
+ var PopoverContent = ({ alignItems, gap = 1.5, p, pt, pb, children }) => /* @__PURE__ */ React20.createElement(import_ui16.Stack, { alignItems, gap, p, pt, pb }, children);
807
997
 
808
998
  // src/components/popover-grid-container.tsx
809
- var React19 = __toESM(require("react"));
810
- var import_ui15 = require("@elementor/ui");
811
- var PopoverGridContainer = ({
812
- gap = 1.5,
813
- alignItems = "center",
814
- flexWrap = "nowrap",
815
- children
816
- }) => /* @__PURE__ */ React19.createElement(import_ui15.Grid, { container: true, gap, alignItems, flexWrap }, children);
999
+ var import_react12 = require("react");
1000
+ var React21 = __toESM(require("react"));
1001
+ var import_ui17 = require("@elementor/ui");
1002
+ var PopoverGridContainer = (0, import_react12.forwardRef)(
1003
+ ({ gap = 1.5, alignItems = "center", flexWrap = "nowrap", children }, ref) => /* @__PURE__ */ React21.createElement(import_ui17.Grid, { container: true, gap, alignItems, flexWrap, ref }, children)
1004
+ );
817
1005
 
818
1006
  // src/components/repeater.tsx
819
- var React23 = __toESM(require("react"));
820
- var import_react10 = require("react");
821
- var import_icons3 = require("@elementor/icons");
822
- var import_ui17 = require("@elementor/ui");
1007
+ var React25 = __toESM(require("react"));
1008
+ var import_react14 = require("react");
1009
+ var import_icons4 = require("@elementor/icons");
1010
+ var import_ui19 = require("@elementor/ui");
823
1011
  var import_i18n4 = require("@wordpress/i18n");
824
1012
 
825
1013
  // src/control-adornments/control-adornments.tsx
826
- var React21 = __toESM(require("react"));
1014
+ var React23 = __toESM(require("react"));
827
1015
 
828
1016
  // src/control-adornments/control-adornments-context.tsx
829
- var React20 = __toESM(require("react"));
830
- var import_react9 = require("react");
831
- var Context2 = (0, import_react9.createContext)(null);
832
- var ControlAdornmentsProvider = ({ children, items }) => /* @__PURE__ */ React20.createElement(Context2.Provider, { value: { items } }, children);
1017
+ var React22 = __toESM(require("react"));
1018
+ var import_react13 = require("react");
1019
+ var Context2 = (0, import_react13.createContext)(null);
1020
+ var ControlAdornmentsProvider = ({ children, items }) => /* @__PURE__ */ React22.createElement(Context2.Provider, { value: { items } }, children);
833
1021
  var useControlAdornments = () => {
834
- const context = (0, import_react9.useContext)(Context2);
1022
+ const context = (0, import_react13.useContext)(Context2);
835
1023
  return context?.items ?? [];
836
1024
  };
837
1025
 
@@ -841,7 +1029,7 @@ function ControlAdornments() {
841
1029
  if (items?.length === 0) {
842
1030
  return null;
843
1031
  }
844
- return /* @__PURE__ */ React21.createElement(React21.Fragment, null, items.map(({ Adornment, id }) => /* @__PURE__ */ React21.createElement(Adornment, { key: id })));
1032
+ return /* @__PURE__ */ React23.createElement(React23.Fragment, null, items.map(({ Adornment, id }) => /* @__PURE__ */ React23.createElement(Adornment, { key: id })));
845
1033
  }
846
1034
 
847
1035
  // src/locations.ts
@@ -850,17 +1038,18 @@ var { Slot: RepeaterItemIconSlot, inject: injectIntoRepeaterItemIcon } = (0, imp
850
1038
  var { Slot: RepeaterItemLabelSlot, inject: injectIntoRepeaterItemLabel } = (0, import_locations.createReplaceableLocation)();
851
1039
 
852
1040
  // src/components/sortable.tsx
853
- var React22 = __toESM(require("react"));
854
- var import_icons2 = require("@elementor/icons");
855
- var import_ui16 = require("@elementor/ui");
1041
+ var React24 = __toESM(require("react"));
1042
+ var import_icons3 = require("@elementor/icons");
1043
+ var import_ui18 = require("@elementor/ui");
856
1044
  var SortableProvider = (props) => {
857
- return /* @__PURE__ */ React22.createElement(import_ui16.List, { sx: { p: 0, my: -0.5, mx: 0 } }, /* @__PURE__ */ React22.createElement(import_ui16.UnstableSortableProvider, { restrictAxis: true, disableDragOverlay: false, variant: "static", ...props }));
1045
+ return /* @__PURE__ */ React24.createElement(import_ui18.List, { sx: { p: 0, my: -0.5, mx: 0 } }, /* @__PURE__ */ React24.createElement(import_ui18.UnstableSortableProvider, { restrictAxis: true, disableDragOverlay: false, variant: "static", ...props }));
858
1046
  };
859
- var SortableItem = ({ id, children }) => {
860
- return /* @__PURE__ */ React22.createElement(
861
- import_ui16.UnstableSortableItem,
1047
+ var SortableItem = ({ id, children, disabled }) => {
1048
+ return /* @__PURE__ */ React24.createElement(
1049
+ import_ui18.UnstableSortableItem,
862
1050
  {
863
1051
  id,
1052
+ disabled,
864
1053
  render: ({
865
1054
  itemProps,
866
1055
  triggerProps,
@@ -869,12 +1058,12 @@ var SortableItem = ({ id, children }) => {
869
1058
  showDropIndication,
870
1059
  dropIndicationStyle
871
1060
  }) => {
872
- return /* @__PURE__ */ React22.createElement(StyledListItem, { ...itemProps, style: itemStyle }, /* @__PURE__ */ React22.createElement(SortableTrigger, { ...triggerProps, style: triggerStyle }), children, showDropIndication && /* @__PURE__ */ React22.createElement(StyledDivider, { style: dropIndicationStyle }));
1061
+ return /* @__PURE__ */ React24.createElement(StyledListItem, { ...itemProps, style: itemStyle }, !disabled && /* @__PURE__ */ React24.createElement(SortableTrigger, { ...triggerProps, style: triggerStyle }), children, showDropIndication && /* @__PURE__ */ React24.createElement(StyledDivider, { style: dropIndicationStyle }));
873
1062
  }
874
1063
  }
875
1064
  );
876
1065
  };
877
- var StyledListItem = (0, import_ui16.styled)(import_ui16.ListItem)`
1066
+ var StyledListItem = (0, import_ui18.styled)(import_ui18.ListItem)`
878
1067
  position: relative;
879
1068
  margin-inline: 0px;
880
1069
  padding-inline: 0px;
@@ -903,8 +1092,8 @@ var StyledListItem = (0, import_ui16.styled)(import_ui16.ListItem)`
903
1092
  }
904
1093
  }
905
1094
  `;
906
- var SortableTrigger = (props) => /* @__PURE__ */ React22.createElement("div", { ...props, role: "button", className: "class-item-sortable-trigger" }, /* @__PURE__ */ React22.createElement(import_icons2.GripVerticalIcon, { fontSize: "tiny" }));
907
- var StyledDivider = (0, import_ui16.styled)(import_ui16.Divider)`
1095
+ var SortableTrigger = (props) => /* @__PURE__ */ React24.createElement("div", { ...props, role: "button", className: "class-item-sortable-trigger" }, /* @__PURE__ */ React24.createElement(import_icons3.GripVerticalIcon, { fontSize: "tiny" }));
1096
+ var StyledDivider = (0, import_ui18.styled)(import_ui18.Divider)`
908
1097
  height: 0px;
909
1098
  border: none;
910
1099
  overflow: visible;
@@ -933,14 +1122,14 @@ var Repeater = ({
933
1122
  values: repeaterValues = [],
934
1123
  setValues: setRepeaterValues
935
1124
  }) => {
936
- const [openItem, setOpenItem] = (0, import_react10.useState)(EMPTY_OPEN_ITEM);
1125
+ const [openItem, setOpenItem] = (0, import_react14.useState)(EMPTY_OPEN_ITEM);
937
1126
  const [items, setItems] = useSyncExternalState({
938
1127
  external: repeaterValues,
939
1128
  // @ts-expect-error - as long as persistWhen => true, value will never be null
940
1129
  setExternal: setRepeaterValues,
941
1130
  persistWhen: () => true
942
1131
  });
943
- const [uniqueKeys, setUniqueKeys] = (0, import_react10.useState)(items.map((_, index) => index));
1132
+ const [uniqueKeys, setUniqueKeys] = (0, import_react14.useState)(items.map((_, index) => index));
944
1133
  const generateNextKey = (source) => {
945
1134
  return 1 + Math.max(0, ...source);
946
1135
  };
@@ -997,9 +1186,8 @@ var Repeater = ({
997
1186
  });
998
1187
  });
999
1188
  };
1000
- const ItemWrapper = disabled ? React23.Fragment : SortableItem;
1001
- return /* @__PURE__ */ React23.createElement(SectionContent, null, /* @__PURE__ */ React23.createElement(
1002
- import_ui17.Stack,
1189
+ return /* @__PURE__ */ React25.createElement(SectionContent, null, /* @__PURE__ */ React25.createElement(
1190
+ import_ui19.Stack,
1003
1191
  {
1004
1192
  direction: "row",
1005
1193
  justifyContent: "start",
@@ -1007,10 +1195,10 @@ var Repeater = ({
1007
1195
  gap: 1,
1008
1196
  sx: { marginInlineEnd: -0.75 }
1009
1197
  },
1010
- /* @__PURE__ */ React23.createElement(import_ui17.Typography, { component: "label", variant: "caption", color: "text.secondary" }, label),
1011
- /* @__PURE__ */ React23.createElement(ControlAdornments, null),
1012
- /* @__PURE__ */ React23.createElement(
1013
- import_ui17.IconButton,
1198
+ /* @__PURE__ */ React25.createElement(import_ui19.Typography, { component: "label", variant: "caption", color: "text.secondary" }, label),
1199
+ /* @__PURE__ */ React25.createElement(ControlAdornments, null),
1200
+ /* @__PURE__ */ React25.createElement(
1201
+ import_ui19.IconButton,
1014
1202
  {
1015
1203
  size: SIZE,
1016
1204
  sx: { ml: "auto" },
@@ -1018,27 +1206,27 @@ var Repeater = ({
1018
1206
  onClick: addRepeaterItem,
1019
1207
  "aria-label": (0, import_i18n4.__)("Add item", "elementor")
1020
1208
  },
1021
- /* @__PURE__ */ React23.createElement(import_icons3.PlusIcon, { fontSize: SIZE })
1209
+ /* @__PURE__ */ React25.createElement(import_icons4.PlusIcon, { fontSize: SIZE })
1022
1210
  )
1023
- ), 0 < uniqueKeys.length && /* @__PURE__ */ React23.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key, index) => {
1211
+ ), 0 < uniqueKeys.length && /* @__PURE__ */ React25.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key, index) => {
1024
1212
  const value = items[index];
1025
1213
  if (!value) {
1026
1214
  return null;
1027
1215
  }
1028
- return /* @__PURE__ */ React23.createElement(ItemWrapper, { id: key, key: `sortable-${key}` }, /* @__PURE__ */ React23.createElement(
1216
+ return /* @__PURE__ */ React25.createElement(SortableItem, { id: key, key: `sortable-${key}`, disabled }, /* @__PURE__ */ React25.createElement(
1029
1217
  RepeaterItem,
1030
1218
  {
1031
1219
  disabled,
1032
1220
  propDisabled: value?.disabled,
1033
- label: /* @__PURE__ */ React23.createElement(RepeaterItemLabelSlot, { value }, /* @__PURE__ */ React23.createElement(itemSettings.Label, { value })),
1034
- startIcon: /* @__PURE__ */ React23.createElement(RepeaterItemIconSlot, { value }, /* @__PURE__ */ React23.createElement(itemSettings.Icon, { value })),
1221
+ label: /* @__PURE__ */ React25.createElement(RepeaterItemLabelSlot, { value }, /* @__PURE__ */ React25.createElement(itemSettings.Label, { value })),
1222
+ startIcon: /* @__PURE__ */ React25.createElement(RepeaterItemIconSlot, { value }, /* @__PURE__ */ React25.createElement(itemSettings.Icon, { value })),
1035
1223
  removeItem: () => removeRepeaterItem(index),
1036
1224
  duplicateItem: () => duplicateRepeaterItem(index),
1037
1225
  toggleDisableItem: () => toggleDisableRepeaterItem(index),
1038
1226
  openOnMount: openOnAdd && openItem === key,
1039
1227
  onOpen: () => setOpenItem(EMPTY_OPEN_ITEM)
1040
1228
  },
1041
- (props) => /* @__PURE__ */ React23.createElement(itemSettings.Content, { ...props, value, bind: String(index) })
1229
+ (props) => /* @__PURE__ */ React25.createElement(itemSettings.Content, { ...props, value, bind: String(index) })
1042
1230
  ));
1043
1231
  })));
1044
1232
  };
@@ -1054,13 +1242,13 @@ var RepeaterItem = ({
1054
1242
  onOpen,
1055
1243
  disabled
1056
1244
  }) => {
1057
- const [anchorEl, setAnchorEl] = (0, import_react10.useState)(null);
1245
+ const [anchorEl, setAnchorEl] = (0, import_react14.useState)(null);
1058
1246
  const { popoverState, popoverProps, ref, setRef } = usePopover(openOnMount, onOpen);
1059
1247
  const duplicateLabel = (0, import_i18n4.__)("Duplicate", "elementor");
1060
1248
  const toggleLabel = propDisabled ? (0, import_i18n4.__)("Show", "elementor") : (0, import_i18n4.__)("Hide", "elementor");
1061
1249
  const removeLabel = (0, import_i18n4.__)("Remove", "elementor");
1062
- return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(
1063
- import_ui17.UnstableTag,
1250
+ return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(
1251
+ import_ui19.UnstableTag,
1064
1252
  {
1065
1253
  disabled,
1066
1254
  label,
@@ -1069,12 +1257,12 @@ var RepeaterItem = ({
1069
1257
  ref: setRef,
1070
1258
  variant: "outlined",
1071
1259
  "aria-label": (0, import_i18n4.__)("Open item", "elementor"),
1072
- ...(0, import_ui17.bindTrigger)(popoverState),
1260
+ ...(0, import_ui19.bindTrigger)(popoverState),
1073
1261
  startIcon,
1074
- actions: /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(import_ui17.Tooltip, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React23.createElement(import_ui17.IconButton, { size: SIZE, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React23.createElement(import_icons3.CopyIcon, { fontSize: SIZE }))), /* @__PURE__ */ React23.createElement(import_ui17.Tooltip, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React23.createElement(import_ui17.IconButton, { size: SIZE, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React23.createElement(import_icons3.EyeOffIcon, { fontSize: SIZE }) : /* @__PURE__ */ React23.createElement(import_icons3.EyeIcon, { fontSize: SIZE }))), /* @__PURE__ */ React23.createElement(import_ui17.Tooltip, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React23.createElement(import_ui17.IconButton, { size: SIZE, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React23.createElement(import_icons3.XIcon, { fontSize: SIZE }))))
1262
+ actions: /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(import_ui19.Tooltip, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React25.createElement(import_ui19.IconButton, { size: SIZE, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React25.createElement(import_icons4.CopyIcon, { fontSize: SIZE }))), /* @__PURE__ */ React25.createElement(import_ui19.Tooltip, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React25.createElement(import_ui19.IconButton, { size: SIZE, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React25.createElement(import_icons4.EyeOffIcon, { fontSize: SIZE }) : /* @__PURE__ */ React25.createElement(import_icons4.EyeIcon, { fontSize: SIZE }))), /* @__PURE__ */ React25.createElement(import_ui19.Tooltip, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React25.createElement(import_ui19.IconButton, { size: SIZE, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React25.createElement(import_icons4.XIcon, { fontSize: SIZE }))))
1075
1263
  }
1076
- ), /* @__PURE__ */ React23.createElement(
1077
- import_ui17.Popover,
1264
+ ), /* @__PURE__ */ React25.createElement(
1265
+ import_ui19.Popover,
1078
1266
  {
1079
1267
  disablePortal: true,
1080
1268
  slotProps: {
@@ -1087,14 +1275,14 @@ var RepeaterItem = ({
1087
1275
  ...popoverProps,
1088
1276
  anchorEl: ref
1089
1277
  },
1090
- /* @__PURE__ */ React23.createElement(import_ui17.Box, null, children({ anchorEl }))
1278
+ /* @__PURE__ */ React25.createElement(import_ui19.Box, null, children({ anchorEl }))
1091
1279
  ));
1092
1280
  };
1093
1281
  var usePopover = (openOnMount, onOpen) => {
1094
- const [ref, setRef] = (0, import_react10.useState)(null);
1095
- const popoverState = (0, import_ui17.usePopupState)({ variant: "popover" });
1096
- const popoverProps = (0, import_ui17.bindPopover)(popoverState);
1097
- (0, import_react10.useEffect)(() => {
1282
+ const [ref, setRef] = (0, import_react14.useState)(null);
1283
+ const popoverState = (0, import_ui19.usePopupState)({ variant: "popover" });
1284
+ const popoverProps = (0, import_ui19.bindPopover)(popoverState);
1285
+ (0, import_react14.useEffect)(() => {
1098
1286
  if (openOnMount && ref) {
1099
1287
  popoverState.open(ref);
1100
1288
  onOpen?.();
@@ -1111,7 +1299,7 @@ var usePopover = (openOnMount, onOpen) => {
1111
1299
  // src/controls/box-shadow-repeater-control.tsx
1112
1300
  var BoxShadowRepeaterControl = createControl(() => {
1113
1301
  const { propType, value, setValue, disabled } = useBoundProp(import_editor_props9.boxShadowPropTypeUtil);
1114
- return /* @__PURE__ */ React24.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React24.createElement(
1302
+ return /* @__PURE__ */ React26.createElement(PropProvider, { propType, value, setValue, disabled }, /* @__PURE__ */ React26.createElement(
1115
1303
  Repeater,
1116
1304
  {
1117
1305
  openOnAdd: true,
@@ -1128,13 +1316,14 @@ var BoxShadowRepeaterControl = createControl(() => {
1128
1316
  }
1129
1317
  ));
1130
1318
  });
1131
- var ItemIcon = ({ value }) => /* @__PURE__ */ React24.createElement(import_ui18.UnstableColorIndicator, { size: "inherit", component: "span", value: value.value.color?.value });
1319
+ var ItemIcon = ({ value }) => /* @__PURE__ */ React26.createElement(import_ui20.UnstableColorIndicator, { size: "inherit", component: "span", value: value.value.color?.value });
1132
1320
  var ItemContent = ({ anchorEl, bind }) => {
1133
- return /* @__PURE__ */ React24.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React24.createElement(Content, { anchorEl }));
1321
+ return /* @__PURE__ */ React26.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React26.createElement(Content, { anchorEl }));
1134
1322
  };
1135
1323
  var Content = ({ anchorEl }) => {
1136
- const { propType, value, setValue } = useBoundProp(import_editor_props9.shadowPropTypeUtil);
1137
- return /* @__PURE__ */ React24.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React24.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React24.createElement(PopoverGridContainer, null, /* @__PURE__ */ React24.createElement(Control2, { bind: "color", label: (0, import_i18n5.__)("Color", "elementor") }, /* @__PURE__ */ React24.createElement(ColorControl, { anchorEl })), /* @__PURE__ */ React24.createElement(Control2, { bind: "position", label: (0, import_i18n5.__)("Position", "elementor"), sx: { overflow: "hidden" } }, /* @__PURE__ */ React24.createElement(
1324
+ const context = useBoundProp(import_editor_props9.shadowPropTypeUtil);
1325
+ const rowRef = [(0, import_react15.useRef)(), (0, import_react15.useRef)()];
1326
+ 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: (0, import_i18n5.__)("Color", "elementor") }, /* @__PURE__ */ React26.createElement(ColorControl, { anchorEl })), /* @__PURE__ */ React26.createElement(Control2, { bind: "position", label: (0, import_i18n5.__)("Position", "elementor"), sx: { overflow: "hidden" } }, /* @__PURE__ */ React26.createElement(
1138
1327
  SelectControl,
1139
1328
  {
1140
1329
  options: [
@@ -1142,14 +1331,14 @@ var Content = ({ anchorEl }) => {
1142
1331
  { label: (0, import_i18n5.__)("Outset", "elementor"), value: null }
1143
1332
  ]
1144
1333
  }
1145
- ))), /* @__PURE__ */ React24.createElement(PopoverGridContainer, null, /* @__PURE__ */ React24.createElement(Control2, { bind: "hOffset", label: (0, import_i18n5.__)("Horizontal", "elementor") }, /* @__PURE__ */ React24.createElement(SizeControl, null)), /* @__PURE__ */ React24.createElement(Control2, { bind: "vOffset", label: (0, import_i18n5.__)("Vertical", "elementor") }, /* @__PURE__ */ React24.createElement(SizeControl, null))), /* @__PURE__ */ React24.createElement(PopoverGridContainer, null, /* @__PURE__ */ React24.createElement(Control2, { bind: "blur", label: (0, import_i18n5.__)("Blur", "elementor") }, /* @__PURE__ */ React24.createElement(SizeControl, null)), /* @__PURE__ */ React24.createElement(Control2, { bind: "spread", label: (0, import_i18n5.__)("Spread", "elementor") }, /* @__PURE__ */ React24.createElement(SizeControl, null)))));
1334
+ ))), /* @__PURE__ */ React26.createElement(PopoverGridContainer, { ref: rowRef[0] }, /* @__PURE__ */ React26.createElement(Control2, { bind: "hOffset", label: (0, import_i18n5.__)("Horizontal", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[0] })), /* @__PURE__ */ React26.createElement(Control2, { bind: "vOffset", label: (0, import_i18n5.__)("Vertical", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[0] }))), /* @__PURE__ */ React26.createElement(PopoverGridContainer, { ref: rowRef[1] }, /* @__PURE__ */ React26.createElement(Control2, { bind: "blur", label: (0, import_i18n5.__)("Blur", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[1] })), /* @__PURE__ */ React26.createElement(Control2, { bind: "spread", label: (0, import_i18n5.__)("Spread", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[1] })))));
1146
1335
  };
1147
1336
  var Control2 = ({
1148
1337
  label,
1149
1338
  bind,
1150
1339
  children,
1151
1340
  sx
1152
- }) => /* @__PURE__ */ React24.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React24.createElement(import_ui18.Grid, { item: true, xs: 6, sx }, /* @__PURE__ */ React24.createElement(import_ui18.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React24.createElement(import_ui18.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React24.createElement(import_ui18.FormLabel, { size: "tiny" }, label)), /* @__PURE__ */ React24.createElement(import_ui18.Grid, { item: true, xs: 12 }, children))));
1341
+ }) => /* @__PURE__ */ React26.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React26.createElement(import_ui20.Grid, { item: true, xs: 6, sx }, /* @__PURE__ */ React26.createElement(import_ui20.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React26.createElement(import_ui20.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(import_ui20.FormLabel, { size: "tiny" }, label)), /* @__PURE__ */ React26.createElement(import_ui20.Grid, { item: true, xs: 12 }, children))));
1153
1342
  var ItemLabel = ({ value }) => {
1154
1343
  const { position, hOffset, vOffset, blur, spread } = value.value;
1155
1344
  const { size: blurSize = "", unit: blurUnit = "" } = blur?.value || {};
@@ -1163,7 +1352,7 @@ var ItemLabel = ({ value }) => {
1163
1352
  blurSize + blurUnit,
1164
1353
  spreadSize + spreadUnit
1165
1354
  ].join(" ");
1166
- return /* @__PURE__ */ React24.createElement("span", { style: { textTransform: "capitalize" } }, positionLabel, ": ", sizes);
1355
+ return /* @__PURE__ */ React26.createElement("span", { style: { textTransform: "capitalize" } }, positionLabel, ": ", sizes);
1167
1356
  };
1168
1357
  var initialShadow = {
1169
1358
  $$type: "shadow",
@@ -1193,28 +1382,28 @@ var initialShadow = {
1193
1382
  };
1194
1383
 
1195
1384
  // src/controls/toggle-control.tsx
1196
- var React27 = __toESM(require("react"));
1385
+ var React29 = __toESM(require("react"));
1197
1386
  var import_editor_props10 = require("@elementor/editor-props");
1198
1387
 
1199
1388
  // src/components/control-toggle-button-group.tsx
1200
- var React26 = __toESM(require("react"));
1201
- var import_react11 = require("react");
1202
- var import_icons4 = require("@elementor/icons");
1203
- var import_ui20 = require("@elementor/ui");
1389
+ var React28 = __toESM(require("react"));
1390
+ var import_react16 = require("react");
1391
+ var import_icons5 = require("@elementor/icons");
1392
+ var import_ui22 = require("@elementor/ui");
1204
1393
 
1205
1394
  // src/components/conditional-tooltip.tsx
1206
- var React25 = __toESM(require("react"));
1207
- var import_ui19 = require("@elementor/ui");
1395
+ var React27 = __toESM(require("react"));
1396
+ var import_ui21 = require("@elementor/ui");
1208
1397
  var ConditionalTooltip = ({
1209
1398
  showTooltip,
1210
1399
  children,
1211
1400
  label
1212
1401
  }) => {
1213
- return showTooltip && label ? /* @__PURE__ */ React25.createElement(import_ui19.Tooltip, { title: label, disableFocusListener: true, placement: "top" }, children) : children;
1402
+ return showTooltip && label ? /* @__PURE__ */ React27.createElement(import_ui21.Tooltip, { title: label, disableFocusListener: true, placement: "top" }, children) : children;
1214
1403
  };
1215
1404
 
1216
1405
  // src/components/control-toggle-button-group.tsx
1217
- var StyledToggleButtonGroup = (0, import_ui20.styled)(import_ui20.ToggleButtonGroup)`
1406
+ var StyledToggleButtonGroup = (0, import_ui22.styled)(import_ui22.ToggleButtonGroup)`
1218
1407
  ${({ justify }) => `justify-content: ${justify};`}
1219
1408
  button:not( :last-of-type ) {
1220
1409
  border-start-end-radius: 0;
@@ -1243,17 +1432,17 @@ var ControlToggleButtonGroup = ({
1243
1432
  const shouldSliceItems = exclusive && maxItems !== void 0 && items.length > maxItems;
1244
1433
  const menuItems = shouldSliceItems ? items.slice(maxItems - 1) : [];
1245
1434
  const fixedItems = shouldSliceItems ? items.slice(0, maxItems - 1) : items;
1246
- const isRtl = "rtl" === (0, import_ui20.useTheme)().direction;
1435
+ const isRtl = "rtl" === (0, import_ui22.useTheme)().direction;
1247
1436
  const handleChange = (_, newValue) => {
1248
1437
  onChange(newValue);
1249
1438
  };
1250
- const getGridTemplateColumns = (0, import_react11.useMemo)(() => {
1439
+ const getGridTemplateColumns = (0, import_react16.useMemo)(() => {
1251
1440
  const isOffLimits = menuItems?.length;
1252
1441
  const itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;
1253
1442
  const templateColumnsSuffix = isOffLimits ? "auto" : "";
1254
1443
  return `repeat(${itemsCount}, minmax(0, 25%)) ${templateColumnsSuffix}`;
1255
1444
  }, [menuItems?.length, fixedItems.length]);
1256
- return /* @__PURE__ */ React26.createElement(ControlActions, null, /* @__PURE__ */ React26.createElement(
1445
+ return /* @__PURE__ */ React28.createElement(ControlActions, null, /* @__PURE__ */ React28.createElement(
1257
1446
  StyledToggleButtonGroup,
1258
1447
  {
1259
1448
  justify,
@@ -1268,16 +1457,16 @@ var ControlToggleButtonGroup = ({
1268
1457
  width: `100%`
1269
1458
  }
1270
1459
  },
1271
- fixedItems.map(({ label, value: buttonValue, renderContent: Content3, showTooltip }) => /* @__PURE__ */ React26.createElement(
1460
+ fixedItems.map(({ label, value: buttonValue, renderContent: Content3, showTooltip }) => /* @__PURE__ */ React28.createElement(
1272
1461
  ConditionalTooltip,
1273
1462
  {
1274
1463
  key: buttonValue,
1275
1464
  label,
1276
1465
  showTooltip: showTooltip || false
1277
1466
  },
1278
- /* @__PURE__ */ React26.createElement(import_ui20.ToggleButton, { value: buttonValue, "aria-label": label, size, fullWidth }, /* @__PURE__ */ React26.createElement(Content3, { size }))
1467
+ /* @__PURE__ */ React28.createElement(import_ui22.ToggleButton, { value: buttonValue, "aria-label": label, size, fullWidth }, /* @__PURE__ */ React28.createElement(Content3, { size }))
1279
1468
  )),
1280
- menuItems.length && exclusive && /* @__PURE__ */ React26.createElement(
1469
+ menuItems.length && exclusive && /* @__PURE__ */ React28.createElement(
1281
1470
  SplitButtonGroup,
1282
1471
  {
1283
1472
  size,
@@ -1297,8 +1486,8 @@ var SplitButtonGroup = ({
1297
1486
  value
1298
1487
  }) => {
1299
1488
  const previewButton = usePreviewButton(items, value);
1300
- const [isMenuOpen, setIsMenuOpen] = (0, import_react11.useState)(false);
1301
- const menuButtonRef = (0, import_react11.useRef)(null);
1489
+ const [isMenuOpen, setIsMenuOpen] = (0, import_react16.useState)(false);
1490
+ const menuButtonRef = (0, import_react16.useRef)(null);
1302
1491
  const onMenuToggle = (ev) => {
1303
1492
  setIsMenuOpen((prev) => !prev);
1304
1493
  ev.preventDefault();
@@ -1311,8 +1500,8 @@ var SplitButtonGroup = ({
1311
1500
  const shouldRemove = newValue === value;
1312
1501
  onChange(shouldRemove ? null : newValue);
1313
1502
  };
1314
- return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement(
1315
- import_ui20.ToggleButton,
1503
+ return /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(
1504
+ import_ui22.ToggleButton,
1316
1505
  {
1317
1506
  value: previewButton.value,
1318
1507
  "aria-label": previewButton.label,
@@ -1325,8 +1514,8 @@ var SplitButtonGroup = ({
1325
1514
  ref: menuButtonRef
1326
1515
  },
1327
1516
  previewButton.renderContent({ size })
1328
- ), /* @__PURE__ */ React26.createElement(
1329
- import_ui20.ToggleButton,
1517
+ ), /* @__PURE__ */ React28.createElement(
1518
+ import_ui22.ToggleButton,
1330
1519
  {
1331
1520
  size,
1332
1521
  "aria-expanded": isMenuOpen ? "true" : void 0,
@@ -1336,9 +1525,9 @@ var SplitButtonGroup = ({
1336
1525
  ref: menuButtonRef,
1337
1526
  value: "__chevron-icon-button__"
1338
1527
  },
1339
- /* @__PURE__ */ React26.createElement(import_icons4.ChevronDownIcon, { fontSize: size })
1340
- ), /* @__PURE__ */ React26.createElement(
1341
- import_ui20.Menu,
1528
+ /* @__PURE__ */ React28.createElement(import_icons5.ChevronDownIcon, { fontSize: size })
1529
+ ), /* @__PURE__ */ React28.createElement(
1530
+ import_ui22.Menu,
1342
1531
  {
1343
1532
  open: isMenuOpen,
1344
1533
  onClose: () => setIsMenuOpen(false),
@@ -1355,22 +1544,22 @@ var SplitButtonGroup = ({
1355
1544
  mt: 0.5
1356
1545
  }
1357
1546
  },
1358
- items.map(({ label, value: buttonValue }) => /* @__PURE__ */ React26.createElement(
1359
- import_ui20.MenuItem,
1547
+ items.map(({ label, value: buttonValue }) => /* @__PURE__ */ React28.createElement(
1548
+ import_ui22.MenuItem,
1360
1549
  {
1361
1550
  key: buttonValue,
1362
1551
  selected: buttonValue === value,
1363
1552
  onClick: () => onMenuItemClick(buttonValue)
1364
1553
  },
1365
- /* @__PURE__ */ React26.createElement(import_ui20.ListItemText, null, /* @__PURE__ */ React26.createElement(import_ui20.Typography, { sx: { fontSize: "14px" } }, label))
1554
+ /* @__PURE__ */ React28.createElement(import_ui22.ListItemText, null, /* @__PURE__ */ React28.createElement(import_ui22.Typography, { sx: { fontSize: "14px" } }, label))
1366
1555
  ))
1367
1556
  ));
1368
1557
  };
1369
1558
  var usePreviewButton = (items, value) => {
1370
- const [previewButton, setPreviewButton] = (0, import_react11.useState)(
1559
+ const [previewButton, setPreviewButton] = (0, import_react16.useState)(
1371
1560
  items.find((item) => item.value === value) ?? items[0]
1372
1561
  );
1373
- (0, import_react11.useEffect)(() => {
1562
+ (0, import_react16.useEffect)(() => {
1374
1563
  const selectedButton = items.find((item) => item.value === value);
1375
1564
  if (selectedButton) {
1376
1565
  setPreviewButton(selectedButton);
@@ -1402,7 +1591,7 @@ var ToggleControl = createControl(
1402
1591
  fullWidth,
1403
1592
  size
1404
1593
  };
1405
- return exclusive ? /* @__PURE__ */ React27.createElement(
1594
+ return exclusive ? /* @__PURE__ */ React29.createElement(
1406
1595
  ControlToggleButtonGroup,
1407
1596
  {
1408
1597
  ...toggleButtonGroupProps,
@@ -1411,7 +1600,7 @@ var ToggleControl = createControl(
1411
1600
  disabled,
1412
1601
  exclusive: true
1413
1602
  }
1414
- ) : /* @__PURE__ */ React27.createElement(
1603
+ ) : /* @__PURE__ */ React29.createElement(
1415
1604
  ControlToggleButtonGroup,
1416
1605
  {
1417
1606
  ...toggleButtonGroupProps,
@@ -1425,9 +1614,9 @@ var ToggleControl = createControl(
1425
1614
  );
1426
1615
 
1427
1616
  // src/controls/number-control.tsx
1428
- var React28 = __toESM(require("react"));
1617
+ var React30 = __toESM(require("react"));
1429
1618
  var import_editor_props11 = require("@elementor/editor-props");
1430
- var import_ui21 = require("@elementor/ui");
1619
+ var import_ui23 = require("@elementor/ui");
1431
1620
  var isEmptyOrNaN = (value) => value === null || value === void 0 || value === "" || Number.isNaN(Number(value));
1432
1621
  var RESTRICTED_INPUT_KEYS2 = ["e", "E", "+", "-"];
1433
1622
  var NumberControl = createControl(
@@ -1448,8 +1637,8 @@ var NumberControl = createControl(
1448
1637
  const formattedValue = shouldForceInt ? +parseInt(eventValue) : Number(eventValue);
1449
1638
  setValue(Math.min(Math.max(formattedValue, min), max));
1450
1639
  };
1451
- return /* @__PURE__ */ React28.createElement(ControlActions, null, /* @__PURE__ */ React28.createElement(
1452
- import_ui21.TextField,
1640
+ return /* @__PURE__ */ React30.createElement(ControlActions, null, /* @__PURE__ */ React30.createElement(
1641
+ import_ui23.TextField,
1453
1642
  {
1454
1643
  size: "tiny",
1455
1644
  type: "number",
@@ -1470,18 +1659,18 @@ var NumberControl = createControl(
1470
1659
  );
1471
1660
 
1472
1661
  // src/controls/equal-unequal-sizes-control.tsx
1473
- var React30 = __toESM(require("react"));
1474
- var import_react12 = require("react");
1662
+ var React32 = __toESM(require("react"));
1663
+ var import_react17 = require("react");
1475
1664
  var import_editor_props12 = require("@elementor/editor-props");
1476
- var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
1477
- var import_ui23 = require("@elementor/ui");
1665
+ var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
1666
+ var import_ui25 = require("@elementor/ui");
1478
1667
  var import_i18n6 = require("@wordpress/i18n");
1479
1668
 
1480
1669
  // src/components/control-label.tsx
1481
- var React29 = __toESM(require("react"));
1482
- var import_ui22 = require("@elementor/ui");
1670
+ var React31 = __toESM(require("react"));
1671
+ var import_ui24 = require("@elementor/ui");
1483
1672
  var ControlLabel = ({ children }) => {
1484
- return /* @__PURE__ */ React29.createElement(import_ui22.Stack, { direction: "row", alignItems: "center", justifyItems: "start", gap: 1 }, /* @__PURE__ */ React29.createElement(ControlFormLabel, null, children), /* @__PURE__ */ React29.createElement(ControlAdornments, null));
1673
+ return /* @__PURE__ */ React31.createElement(import_ui24.Stack, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React31.createElement(ControlFormLabel, null, children), /* @__PURE__ */ React31.createElement(ControlAdornments, null));
1485
1674
  };
1486
1675
 
1487
1676
  // src/controls/equal-unequal-sizes-control.tsx
@@ -1502,16 +1691,16 @@ function EqualUnequalSizesControl({
1502
1691
  items,
1503
1692
  multiSizePropTypeUtil
1504
1693
  }) {
1505
- const popupId = (0, import_react12.useId)();
1506
- const controlRef = (0, import_react12.useRef)(null);
1507
- const popupState = (0, import_ui23.usePopupState)({ variant: "popover", popupId });
1694
+ const popupId = (0, import_react17.useId)();
1695
+ const popupState = (0, import_ui25.usePopupState)({ variant: "popover", popupId });
1508
1696
  const {
1509
1697
  propType: multiSizePropType,
1510
1698
  value: multiSizeValue,
1511
1699
  setValue: setMultiSizeValue,
1512
1700
  disabled: multiSizeDisabled
1513
1701
  } = useBoundProp(multiSizePropTypeUtil);
1514
- const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(import_editor_props12.sizePropTypeUtil);
1702
+ const { value: sizeValue, setValue: setSizeValue } = useBoundProp(import_editor_props12.sizePropTypeUtil);
1703
+ const rowRefs = [(0, import_react17.useRef)(), (0, import_react17.useRef)()];
1515
1704
  const splitEqualValue = () => {
1516
1705
  if (!sizeValue) {
1517
1706
  return null;
@@ -1538,21 +1727,27 @@ function EqualUnequalSizesControl({
1538
1727
  }
1539
1728
  return splitEqualValue() ?? null;
1540
1729
  };
1730
+ const isShowingGeneralIndicator = !(0, import_editor_v1_adapters2.isExperimentActive)("e_v_3_30") || !popupState.isOpen;
1541
1731
  const isMixed = !!multiSizeValue;
1542
- return /* @__PURE__ */ React30.createElement(React30.Fragment, null, /* @__PURE__ */ React30.createElement(import_ui23.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: controlRef }, /* @__PURE__ */ React30.createElement(import_ui23.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel, null, label)), /* @__PURE__ */ React30.createElement(import_ui23.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(import_ui23.Stack, { direction: "row", alignItems: "center", gap: 1 }, /* @__PURE__ */ React30.createElement(SizeControl, { placeholder: isMixed ? (0, import_i18n6.__)("Mixed", "elementor") : void 0 }), /* @__PURE__ */ React30.createElement(import_ui23.Tooltip, { title: tooltipLabel, placement: "top" }, /* @__PURE__ */ React30.createElement(
1543
- import_ui23.ToggleButton,
1732
+ return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(import_ui25.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRefs[0] }, /* @__PURE__ */ React32.createElement(import_ui25.Grid, { item: true, xs: 6 }, !isShowingGeneralIndicator ? /* @__PURE__ */ React32.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React32.createElement(ControlLabel, null, label)), /* @__PURE__ */ React32.createElement(import_ui25.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React32.createElement(import_ui25.Stack, { direction: "row", alignItems: "center", gap: 1 }, /* @__PURE__ */ React32.createElement(
1733
+ SizeControl,
1734
+ {
1735
+ placeholder: isMixed ? (0, import_i18n6.__)("Mixed", "elementor") : void 0,
1736
+ anchorRef: rowRefs[0]
1737
+ }
1738
+ ), /* @__PURE__ */ React32.createElement(import_ui25.Tooltip, { title: tooltipLabel, placement: "top" }, /* @__PURE__ */ React32.createElement(
1739
+ import_ui25.ToggleButton,
1544
1740
  {
1545
1741
  size: "tiny",
1546
1742
  value: "check",
1547
1743
  sx: { marginLeft: "auto" },
1548
- ...(0, import_ui23.bindToggle)(popupState),
1744
+ ...(0, import_ui25.bindToggle)(popupState),
1549
1745
  selected: popupState.isOpen,
1550
- "aria-label": tooltipLabel,
1551
- disabled: multiSizeDisabled || sizeDisabled
1746
+ "aria-label": tooltipLabel
1552
1747
  },
1553
1748
  icon
1554
- ))))), /* @__PURE__ */ React30.createElement(
1555
- import_ui23.Popover,
1749
+ ))))), /* @__PURE__ */ React32.createElement(
1750
+ import_ui25.Popover,
1556
1751
  {
1557
1752
  disablePortal: true,
1558
1753
  disableScrollLock: true,
@@ -1564,33 +1759,47 @@ function EqualUnequalSizesControl({
1564
1759
  vertical: "top",
1565
1760
  horizontal: "right"
1566
1761
  },
1567
- ...(0, import_ui23.bindPopover)(popupState),
1762
+ ...(0, import_ui25.bindPopover)(popupState),
1568
1763
  slotProps: {
1569
- paper: { sx: { mt: 0.5, width: controlRef.current?.getBoundingClientRect().width } }
1764
+ paper: { sx: { mt: 0.5, width: rowRefs[0].current?.getBoundingClientRect().width } }
1570
1765
  }
1571
1766
  },
1572
- /* @__PURE__ */ React30.createElement(PropProvider, { propType: multiSizePropType, value: getMultiSizeValues(), setValue: setNestedProp }, /* @__PURE__ */ React30.createElement(PopoverContent, { p: 1.5, pt: 2.5, pb: 3 }, /* @__PURE__ */ React30.createElement(PopoverGridContainer, null, /* @__PURE__ */ React30.createElement(MultiSizeValueControl, { item: items[0] }), /* @__PURE__ */ React30.createElement(MultiSizeValueControl, { item: items[1] })), /* @__PURE__ */ React30.createElement(PopoverGridContainer, null, /* @__PURE__ */ React30.createElement(MultiSizeValueControl, { item: items[2] }), /* @__PURE__ */ React30.createElement(MultiSizeValueControl, { item: items[3] }))))
1767
+ /* @__PURE__ */ React32.createElement(
1768
+ PropProvider,
1769
+ {
1770
+ propType: multiSizePropType,
1771
+ value: getMultiSizeValues(),
1772
+ setValue: setNestedProp,
1773
+ disabled: multiSizeDisabled
1774
+ },
1775
+ /* @__PURE__ */ React32.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React32.createElement(PopoverGridContainer, { ref: rowRefs[1] }, /* @__PURE__ */ React32.createElement(MultiSizeValueControl, { item: items[0], rowRef: rowRefs[1] }), /* @__PURE__ */ React32.createElement(MultiSizeValueControl, { item: items[1], rowRef: rowRefs[1] })), /* @__PURE__ */ React32.createElement(PopoverGridContainer, { ref: rowRefs[2] }, /* @__PURE__ */ React32.createElement(MultiSizeValueControl, { item: items[2], rowRef: rowRefs[2] }), /* @__PURE__ */ React32.createElement(MultiSizeValueControl, { item: items[3], rowRef: rowRefs[2] })))
1776
+ )
1573
1777
  ));
1574
1778
  }
1575
- var MultiSizeValueControl = ({ item }) => {
1576
- const isUsingNestedProps = (0, import_editor_v1_adapters.isExperimentActive)("e_v_3_30");
1577
- return /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React30.createElement(import_ui23.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(import_ui23.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React30.createElement(import_ui23.Grid, { item: true, xs: 12 }, isUsingNestedProps ? /* @__PURE__ */ React30.createElement(ControlLabel, null, item.label) : /* @__PURE__ */ React30.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React30.createElement(import_ui23.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React30.createElement(SizeControl, { startIcon: item.icon })))));
1779
+ var MultiSizeValueControl = ({
1780
+ item,
1781
+ rowRef
1782
+ }) => {
1783
+ const isUsingNestedProps = (0, import_editor_v1_adapters2.isExperimentActive)("e_v_3_30");
1784
+ return /* @__PURE__ */ React32.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React32.createElement(import_ui25.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React32.createElement(import_ui25.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React32.createElement(import_ui25.Grid, { item: true, xs: 12 }, isUsingNestedProps ? /* @__PURE__ */ React32.createElement(ControlLabel, null, item.label) : /* @__PURE__ */ React32.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React32.createElement(import_ui25.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React32.createElement(SizeControl, { startIcon: item.icon, anchorRef: rowRef })))));
1578
1785
  };
1579
1786
 
1580
1787
  // src/controls/linked-dimensions-control.tsx
1581
- var React31 = __toESM(require("react"));
1788
+ var React33 = __toESM(require("react"));
1789
+ var import_react18 = require("react");
1582
1790
  var import_editor_props13 = require("@elementor/editor-props");
1583
- var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
1584
- var import_icons5 = require("@elementor/icons");
1585
- var import_ui24 = require("@elementor/ui");
1791
+ var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
1792
+ var import_icons6 = require("@elementor/icons");
1793
+ var import_ui26 = require("@elementor/ui");
1586
1794
  var import_i18n7 = require("@wordpress/i18n");
1587
1795
  var LinkedDimensionsControl = createControl(
1588
1796
  ({
1589
1797
  label,
1590
1798
  isSiteRtl = false,
1591
- extendedValues
1799
+ extendedOptions
1592
1800
  }) => {
1593
1801
  const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(import_editor_props13.sizePropTypeUtil);
1802
+ const gridRowRefs = [(0, import_react18.useRef)(), (0, import_react18.useRef)()];
1594
1803
  const {
1595
1804
  value: dimensionsValue,
1596
1805
  setValue: setDimensionsValue,
@@ -1598,7 +1807,7 @@ var LinkedDimensionsControl = createControl(
1598
1807
  disabled: dimensionsDisabled
1599
1808
  } = useBoundProp(import_editor_props13.dimensionsPropTypeUtil);
1600
1809
  const isLinked = !dimensionsValue && !sizeValue ? true : !!sizeValue;
1601
- const isUsingNestedProps = (0, import_editor_v1_adapters2.isExperimentActive)("e_v_3_30");
1810
+ const isUsingNestedProps = (0, import_editor_v1_adapters3.isExperimentActive)("e_v_3_30");
1602
1811
  const onLinkToggle = () => {
1603
1812
  if (!isLinked) {
1604
1813
  setSizeValue(dimensionsValue["block-start"]?.value ?? null);
@@ -1613,98 +1822,104 @@ var LinkedDimensionsControl = createControl(
1613
1822
  });
1614
1823
  };
1615
1824
  const tooltipLabel = label.toLowerCase();
1616
- const LinkedIcon = isLinked ? import_icons5.LinkIcon : import_icons5.DetachIcon;
1825
+ const LinkedIcon = isLinked ? import_icons6.LinkIcon : import_icons6.DetachIcon;
1617
1826
  const linkedLabel = (0, import_i18n7.__)("Link %s", "elementor").replace("%s", tooltipLabel);
1618
1827
  const unlinkedLabel = (0, import_i18n7.__)("Unlink %s", "elementor").replace("%s", tooltipLabel);
1619
- return /* @__PURE__ */ React31.createElement(PropProvider, { propType, value: dimensionsValue, setValue: setDimensionsValue }, /* @__PURE__ */ React31.createElement(import_ui24.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, isUsingNestedProps ? /* @__PURE__ */ React31.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React31.createElement(ControlLabel, null, label), /* @__PURE__ */ React31.createElement(import_ui24.Tooltip, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React31.createElement(
1620
- import_ui24.ToggleButton,
1828
+ const disabled = sizeDisabled || dimensionsDisabled;
1829
+ return /* @__PURE__ */ React33.createElement(
1830
+ PropProvider,
1621
1831
  {
1622
- "aria-label": isLinked ? unlinkedLabel : linkedLabel,
1623
- size: "tiny",
1624
- value: "check",
1625
- selected: isLinked,
1626
- sx: { marginLeft: "auto" },
1627
- onChange: onLinkToggle,
1628
- disabled: sizeDisabled || dimensionsDisabled
1832
+ propType,
1833
+ value: dimensionsValue,
1834
+ setValue: setDimensionsValue,
1835
+ disabled
1629
1836
  },
1630
- /* @__PURE__ */ React31.createElement(LinkedIcon, { fontSize: "tiny" })
1631
- ))), /* @__PURE__ */ React31.createElement(import_ui24.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Label, { bind: "block-start", label: (0, import_i18n7.__)("Top", "elementor") })), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1632
- Control3,
1633
- {
1634
- bind: "block-start",
1635
- startIcon: /* @__PURE__ */ React31.createElement(import_icons5.SideTopIcon, { fontSize: "tiny" }),
1636
- isLinked,
1637
- extendedValues
1638
- }
1639
- ))), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1640
- Label,
1641
- {
1642
- bind: "inline-end",
1643
- label: isSiteRtl ? (0, import_i18n7.__)("Left", "elementor") : (0, import_i18n7.__)("Right", "elementor")
1644
- }
1645
- )), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1646
- Control3,
1647
- {
1648
- bind: "inline-end",
1649
- startIcon: isSiteRtl ? /* @__PURE__ */ React31.createElement(import_icons5.SideLeftIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React31.createElement(import_icons5.SideRightIcon, { fontSize: "tiny" }),
1650
- isLinked,
1651
- extendedValues
1652
- }
1653
- )))), /* @__PURE__ */ React31.createElement(import_ui24.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Label, { bind: "block-end", label: (0, import_i18n7.__)("Bottom", "elementor") })), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1654
- Control3,
1655
- {
1656
- bind: "block-end",
1657
- startIcon: /* @__PURE__ */ React31.createElement(import_icons5.SideBottomIcon, { fontSize: "tiny" }),
1658
- isLinked,
1659
- extendedValues
1660
- }
1661
- ))), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1662
- Label,
1663
- {
1664
- bind: "inline-start",
1665
- label: isSiteRtl ? (0, import_i18n7.__)("Right", "elementor") : (0, import_i18n7.__)("Left", "elementor")
1666
- }
1667
- )), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1668
- Control3,
1669
- {
1670
- bind: "inline-start",
1671
- startIcon: isSiteRtl ? /* @__PURE__ */ React31.createElement(import_icons5.SideRightIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React31.createElement(import_icons5.SideLeftIcon, { fontSize: "tiny" }),
1672
- isLinked,
1673
- extendedValues
1674
- }
1675
- )))));
1837
+ /* @__PURE__ */ React33.createElement(import_ui26.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, isUsingNestedProps ? /* @__PURE__ */ React33.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React33.createElement(ControlLabel, null, label), /* @__PURE__ */ React33.createElement(import_ui26.Tooltip, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React33.createElement(
1838
+ import_ui26.ToggleButton,
1839
+ {
1840
+ "aria-label": isLinked ? unlinkedLabel : linkedLabel,
1841
+ size: "tiny",
1842
+ value: "check",
1843
+ selected: isLinked,
1844
+ sx: { marginLeft: "auto" },
1845
+ onChange: onLinkToggle,
1846
+ disabled
1847
+ },
1848
+ /* @__PURE__ */ React33.createElement(LinkedIcon, { fontSize: "tiny" })
1849
+ ))),
1850
+ getCssMarginProps(isSiteRtl).map((row, index) => /* @__PURE__ */ React33.createElement(import_ui26.Stack, { direction: "row", gap: 2, flexWrap: "nowrap", key: index, ref: gridRowRefs[index] }, row.map(({ icon, ...props }) => /* @__PURE__ */ React33.createElement(import_ui26.Grid, { container: true, gap: 0.75, alignItems: "center", key: props.bind }, /* @__PURE__ */ React33.createElement(import_ui26.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React33.createElement(Label, { ...props })), /* @__PURE__ */ React33.createElement(import_ui26.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React33.createElement(
1851
+ Control3,
1852
+ {
1853
+ bind: props.bind,
1854
+ startIcon: icon,
1855
+ isLinked,
1856
+ extendedOptions,
1857
+ anchorRef: gridRowRefs[index]
1858
+ }
1859
+ ))))))
1860
+ );
1676
1861
  }
1677
1862
  );
1678
1863
  var Control3 = ({
1679
1864
  bind,
1680
1865
  startIcon,
1681
1866
  isLinked,
1682
- extendedValues
1867
+ extendedOptions,
1868
+ anchorRef
1683
1869
  }) => {
1684
1870
  if (isLinked) {
1685
- return /* @__PURE__ */ React31.createElement(SizeControl, { startIcon, extendedValues });
1871
+ return /* @__PURE__ */ React33.createElement(SizeControl, { startIcon, extendedOptions, anchorRef });
1686
1872
  }
1687
- return /* @__PURE__ */ React31.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React31.createElement(SizeControl, { startIcon, extendedValues }));
1873
+ return /* @__PURE__ */ React33.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React33.createElement(SizeControl, { startIcon, extendedOptions, anchorRef }));
1688
1874
  };
1689
1875
  var Label = ({ label, bind }) => {
1690
- const isUsingNestedProps = (0, import_editor_v1_adapters2.isExperimentActive)("e_v_3_30");
1876
+ const isUsingNestedProps = (0, import_editor_v1_adapters3.isExperimentActive)("e_v_3_30");
1691
1877
  if (!isUsingNestedProps) {
1692
- return /* @__PURE__ */ React31.createElement(ControlFormLabel, null, label);
1878
+ return /* @__PURE__ */ React33.createElement(ControlFormLabel, null, label);
1693
1879
  }
1694
- return /* @__PURE__ */ React31.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React31.createElement(ControlLabel, null, label));
1880
+ return /* @__PURE__ */ React33.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React33.createElement(ControlLabel, null, label));
1695
1881
  };
1882
+ function getCssMarginProps(isSiteRtl) {
1883
+ return [
1884
+ [
1885
+ {
1886
+ bind: "block-start",
1887
+ label: (0, import_i18n7.__)("Top", "elementor"),
1888
+ icon: /* @__PURE__ */ React33.createElement(import_icons6.SideTopIcon, { fontSize: "tiny" })
1889
+ },
1890
+ {
1891
+ bind: "inline-end",
1892
+ label: isSiteRtl ? (0, import_i18n7.__)("Left", "elementor") : (0, import_i18n7.__)("Right", "elementor"),
1893
+ icon: isSiteRtl ? /* @__PURE__ */ React33.createElement(import_icons6.SideLeftIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React33.createElement(import_icons6.SideRightIcon, { fontSize: "tiny" })
1894
+ }
1895
+ ],
1896
+ [
1897
+ {
1898
+ bind: "block-end",
1899
+ label: (0, import_i18n7.__)("Bottom", "elementor"),
1900
+ icon: /* @__PURE__ */ React33.createElement(import_icons6.SideBottomIcon, { fontSize: "tiny" })
1901
+ },
1902
+ {
1903
+ bind: "inline-start",
1904
+ label: isSiteRtl ? (0, import_i18n7.__)("Right", "elementor") : (0, import_i18n7.__)("Left", "elementor"),
1905
+ icon: isSiteRtl ? /* @__PURE__ */ React33.createElement(import_icons6.SideRightIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React33.createElement(import_icons6.SideLeftIcon, { fontSize: "tiny" })
1906
+ }
1907
+ ]
1908
+ ];
1909
+ }
1696
1910
 
1697
1911
  // src/controls/font-family-control/font-family-control.tsx
1698
- var React33 = __toESM(require("react"));
1912
+ var React35 = __toESM(require("react"));
1699
1913
  var import_editor_props14 = require("@elementor/editor-props");
1700
- var import_icons7 = require("@elementor/icons");
1701
- var import_ui26 = require("@elementor/ui");
1914
+ var import_icons8 = require("@elementor/icons");
1915
+ var import_ui28 = require("@elementor/ui");
1702
1916
 
1703
1917
  // src/components/font-family-selector.tsx
1704
- var import_react13 = require("react");
1705
- var React32 = __toESM(require("react"));
1706
- var import_icons6 = require("@elementor/icons");
1707
- var import_ui25 = require("@elementor/ui");
1918
+ var import_react19 = require("react");
1919
+ var React34 = __toESM(require("react"));
1920
+ var import_editor_ui3 = require("@elementor/editor-ui");
1921
+ var import_icons7 = require("@elementor/icons");
1922
+ var import_ui27 = require("@elementor/ui");
1708
1923
  var import_utils2 = require("@elementor/utils");
1709
1924
  var import_react_virtual = require("@tanstack/react-virtual");
1710
1925
  var import_i18n8 = require("@wordpress/i18n");
@@ -1739,7 +1954,7 @@ var FontFamilySelector = ({
1739
1954
  onFontFamilyChange,
1740
1955
  onClose
1741
1956
  }) => {
1742
- const [searchValue, setSearchValue] = (0, import_react13.useState)("");
1957
+ const [searchValue, setSearchValue] = (0, import_react19.useState)("");
1743
1958
  const filteredFontFamilies = useFilteredFontFamilies(fontFamilies, searchValue);
1744
1959
  const handleSearch = (event) => {
1745
1960
  setSearchValue(event.target.value);
@@ -1748,8 +1963,15 @@ var FontFamilySelector = ({
1748
1963
  setSearchValue("");
1749
1964
  onClose();
1750
1965
  };
1751
- return /* @__PURE__ */ React32.createElement(import_ui25.Stack, null, /* @__PURE__ */ React32.createElement(import_ui25.Stack, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React32.createElement(import_icons6.TextIcon, { fontSize: SIZE2, sx: { mr: 0.5 } }), /* @__PURE__ */ React32.createElement(import_ui25.Typography, { variant: "subtitle2" }, (0, import_i18n8.__)("Font Family", "elementor")), /* @__PURE__ */ React32.createElement(import_ui25.IconButton, { size: SIZE2, sx: { ml: "auto" }, onClick: handleClose }, /* @__PURE__ */ React32.createElement(import_icons6.XIcon, { fontSize: SIZE2 }))), /* @__PURE__ */ React32.createElement(import_ui25.Box, { px: 1.5, pb: 1 }, /* @__PURE__ */ React32.createElement(
1752
- import_ui25.TextField,
1966
+ return /* @__PURE__ */ React34.createElement(import_ui27.Stack, null, /* @__PURE__ */ React34.createElement(
1967
+ import_editor_ui3.PopoverHeader,
1968
+ {
1969
+ title: (0, import_i18n8.__)("Font Family", "elementor"),
1970
+ onClose: handleClose,
1971
+ icon: /* @__PURE__ */ React34.createElement(import_icons7.TextIcon, { fontSize: SIZE2 })
1972
+ }
1973
+ ), /* @__PURE__ */ React34.createElement(import_ui27.Box, { px: 1.5, pb: 1 }, /* @__PURE__ */ React34.createElement(
1974
+ import_ui27.TextField,
1753
1975
  {
1754
1976
  autoFocus: true,
1755
1977
  fullWidth: true,
@@ -1758,10 +1980,10 @@ var FontFamilySelector = ({
1758
1980
  placeholder: (0, import_i18n8.__)("Search", "elementor"),
1759
1981
  onChange: handleSearch,
1760
1982
  InputProps: {
1761
- startAdornment: /* @__PURE__ */ React32.createElement(import_ui25.InputAdornment, { position: "start" }, /* @__PURE__ */ React32.createElement(import_icons6.SearchIcon, { fontSize: SIZE2 }))
1983
+ startAdornment: /* @__PURE__ */ React34.createElement(import_ui27.InputAdornment, { position: "start" }, /* @__PURE__ */ React34.createElement(import_icons7.SearchIcon, { fontSize: SIZE2 }))
1762
1984
  }
1763
1985
  }
1764
- )), /* @__PURE__ */ React32.createElement(import_ui25.Divider, null), filteredFontFamilies.length > 0 ? /* @__PURE__ */ React32.createElement(
1986
+ )), /* @__PURE__ */ React34.createElement(import_ui27.Divider, null), filteredFontFamilies.length > 0 ? /* @__PURE__ */ React34.createElement(
1765
1987
  FontList,
1766
1988
  {
1767
1989
  fontListItems: filteredFontFamilies,
@@ -1769,8 +1991,8 @@ var FontFamilySelector = ({
1769
1991
  handleClose,
1770
1992
  fontFamily
1771
1993
  }
1772
- ) : /* @__PURE__ */ React32.createElement(import_ui25.Box, { sx: { overflowY: "auto", height: 260, width: 220 } }, /* @__PURE__ */ React32.createElement(import_ui25.Stack, { alignItems: "center", p: 2.5, gap: 1.5, overflow: "hidden" }, /* @__PURE__ */ React32.createElement(import_icons6.TextIcon, { fontSize: "large" }), /* @__PURE__ */ React32.createElement(import_ui25.Box, { sx: { maxWidth: 160, overflow: "hidden" } }, /* @__PURE__ */ React32.createElement(import_ui25.Typography, { align: "center", variant: "subtitle2", color: "text.secondary" }, (0, import_i18n8.__)("Sorry, nothing matched", "elementor")), /* @__PURE__ */ React32.createElement(
1773
- import_ui25.Typography,
1994
+ ) : /* @__PURE__ */ React34.createElement(import_ui27.Box, { sx: { overflowY: "auto", height: 260, width: 220 } }, /* @__PURE__ */ React34.createElement(import_ui27.Stack, { alignItems: "center", p: 2.5, gap: 1.5, overflow: "hidden" }, /* @__PURE__ */ React34.createElement(import_icons7.TextIcon, { fontSize: "large" }), /* @__PURE__ */ React34.createElement(import_ui27.Box, { sx: { maxWidth: 160, overflow: "hidden" } }, /* @__PURE__ */ React34.createElement(import_ui27.Typography, { align: "center", variant: "subtitle2", color: "text.secondary" }, (0, import_i18n8.__)("Sorry, nothing matched", "elementor")), /* @__PURE__ */ React34.createElement(
1995
+ import_ui27.Typography,
1774
1996
  {
1775
1997
  variant: "subtitle2",
1776
1998
  color: "text.secondary",
@@ -1780,11 +2002,11 @@ var FontFamilySelector = ({
1780
2002
  justifyContent: "center"
1781
2003
  }
1782
2004
  },
1783
- /* @__PURE__ */ React32.createElement("span", null, "\u201C"),
1784
- /* @__PURE__ */ React32.createElement("span", { style: { maxWidth: "80%", overflow: "hidden", textOverflow: "ellipsis" } }, searchValue),
1785
- /* @__PURE__ */ React32.createElement("span", null, "\u201D.")
1786
- )), /* @__PURE__ */ React32.createElement(import_ui25.Typography, { align: "center", variant: "caption", color: "text.secondary" }, (0, import_i18n8.__)("Try something else.", "elementor"), /* @__PURE__ */ React32.createElement(
1787
- import_ui25.Link,
2005
+ /* @__PURE__ */ React34.createElement("span", null, "\u201C"),
2006
+ /* @__PURE__ */ React34.createElement("span", { style: { maxWidth: "80%", overflow: "hidden", textOverflow: "ellipsis" } }, searchValue),
2007
+ /* @__PURE__ */ React34.createElement("span", null, "\u201D.")
2008
+ )), /* @__PURE__ */ React34.createElement(import_ui27.Typography, { align: "center", variant: "caption", color: "text.secondary" }, (0, import_i18n8.__)("Try something else.", "elementor"), /* @__PURE__ */ React34.createElement(
2009
+ import_ui27.Link,
1788
2010
  {
1789
2011
  color: "secondary",
1790
2012
  variant: "caption",
@@ -1797,7 +2019,7 @@ var FontFamilySelector = ({
1797
2019
  var LIST_ITEM_HEIGHT = 36;
1798
2020
  var LIST_ITEMS_BUFFER = 6;
1799
2021
  var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
1800
- const containerRef = (0, import_react13.useRef)(null);
2022
+ const containerRef = (0, import_react19.useRef)(null);
1801
2023
  const selectedItem = fontListItems.find((item) => item.value === fontFamily);
1802
2024
  const debouncedVirtualizeChange = useDebounce(({ getVirtualIndexes }) => {
1803
2025
  getVirtualIndexes().forEach((index) => {
@@ -1814,7 +2036,7 @@ var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
1814
2036
  overscan: LIST_ITEMS_BUFFER,
1815
2037
  onChange: debouncedVirtualizeChange
1816
2038
  });
1817
- (0, import_react13.useEffect)(
2039
+ (0, import_react19.useEffect)(
1818
2040
  () => {
1819
2041
  virtualizer.scrollToIndex(fontListItems.findIndex((item) => item.value === fontFamily));
1820
2042
  },
@@ -1822,8 +2044,8 @@ var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
1822
2044
  // eslint-disable-next-line react-hooks/exhaustive-deps
1823
2045
  [fontFamily]
1824
2046
  );
1825
- return /* @__PURE__ */ React32.createElement(
1826
- import_ui25.Box,
2047
+ return /* @__PURE__ */ React34.createElement(
2048
+ import_ui27.Box,
1827
2049
  {
1828
2050
  ref: containerRef,
1829
2051
  sx: {
@@ -1832,7 +2054,7 @@ var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
1832
2054
  width: 220
1833
2055
  }
1834
2056
  },
1835
- /* @__PURE__ */ React32.createElement(
2057
+ /* @__PURE__ */ React34.createElement(
1836
2058
  StyledMenuList,
1837
2059
  {
1838
2060
  role: "listbox",
@@ -1848,8 +2070,8 @@ var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
1848
2070
  const isSelected = selectedItem?.value === item.value;
1849
2071
  const tabIndexFallback = !selectedItem ? 0 : -1;
1850
2072
  if (item.type === "category") {
1851
- return /* @__PURE__ */ React32.createElement(
1852
- import_ui25.MenuSubheader,
2073
+ return /* @__PURE__ */ React34.createElement(
2074
+ import_ui27.MenuSubheader,
1853
2075
  {
1854
2076
  key: virtualRow.key,
1855
2077
  style: {
@@ -1859,7 +2081,7 @@ var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
1859
2081
  item.value
1860
2082
  );
1861
2083
  }
1862
- return /* @__PURE__ */ React32.createElement(
2084
+ return /* @__PURE__ */ React34.createElement(
1863
2085
  "li",
1864
2086
  {
1865
2087
  key: virtualRow.key,
@@ -1895,7 +2117,7 @@ var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
1895
2117
  )
1896
2118
  );
1897
2119
  };
1898
- var StyledMenuList = (0, import_ui25.styled)(import_ui25.MenuList)(({ theme }) => ({
2120
+ var StyledMenuList = (0, import_ui27.styled)(import_ui27.MenuList)(({ theme }) => ({
1899
2121
  "& > li": {
1900
2122
  height: LIST_ITEM_HEIGHT,
1901
2123
  position: "absolute",
@@ -1922,34 +2144,35 @@ var StyledMenuList = (0, import_ui25.styled)(import_ui25.MenuList)(({ theme }) =
1922
2144
  position: "relative"
1923
2145
  }));
1924
2146
  var useDebounce = (fn, delay) => {
1925
- const [debouncedFn] = (0, import_react13.useState)(() => (0, import_utils2.debounce)(fn, delay));
1926
- (0, import_react13.useEffect)(() => () => debouncedFn.cancel(), [debouncedFn]);
2147
+ const [debouncedFn] = (0, import_react19.useState)(() => (0, import_utils2.debounce)(fn, delay));
2148
+ (0, import_react19.useEffect)(() => () => debouncedFn.cancel(), [debouncedFn]);
1927
2149
  return debouncedFn;
1928
2150
  };
1929
2151
 
1930
2152
  // src/controls/font-family-control/font-family-control.tsx
2153
+ var SIZE3 = "tiny";
1931
2154
  var FontFamilyControl = createControl(({ fontFamilies }) => {
1932
2155
  const { value: fontFamily, setValue: setFontFamily, disabled } = useBoundProp(import_editor_props14.stringPropTypeUtil);
1933
- const popoverState = (0, import_ui26.usePopupState)({ variant: "popover" });
1934
- return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement(ControlActions, null, /* @__PURE__ */ React33.createElement(
1935
- import_ui26.UnstableTag,
2156
+ const popoverState = (0, import_ui28.usePopupState)({ variant: "popover" });
2157
+ return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(ControlActions, null, /* @__PURE__ */ React35.createElement(
2158
+ import_ui28.UnstableTag,
1936
2159
  {
1937
2160
  variant: "outlined",
1938
2161
  label: fontFamily,
1939
- endIcon: /* @__PURE__ */ React33.createElement(import_icons7.ChevronDownIcon, { fontSize: "tiny" }),
1940
- ...(0, import_ui26.bindTrigger)(popoverState),
2162
+ endIcon: /* @__PURE__ */ React35.createElement(import_icons8.ChevronDownIcon, { fontSize: SIZE3 }),
2163
+ ...(0, import_ui28.bindTrigger)(popoverState),
1941
2164
  fullWidth: true,
1942
2165
  disabled
1943
2166
  }
1944
- )), /* @__PURE__ */ React33.createElement(
1945
- import_ui26.Popover,
2167
+ )), /* @__PURE__ */ React35.createElement(
2168
+ import_ui28.Popover,
1946
2169
  {
1947
2170
  disablePortal: true,
1948
2171
  disableScrollLock: true,
1949
2172
  anchorOrigin: { vertical: "bottom", horizontal: "left" },
1950
- ...(0, import_ui26.bindPopover)(popoverState)
2173
+ ...(0, import_ui28.bindPopover)(popoverState)
1951
2174
  },
1952
- /* @__PURE__ */ React33.createElement(
2175
+ /* @__PURE__ */ React35.createElement(
1953
2176
  FontFamilySelector,
1954
2177
  {
1955
2178
  fontFamilies,
@@ -1962,14 +2185,14 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
1962
2185
  });
1963
2186
 
1964
2187
  // src/controls/url-control.tsx
1965
- var React34 = __toESM(require("react"));
2188
+ var React36 = __toESM(require("react"));
1966
2189
  var import_editor_props15 = require("@elementor/editor-props");
1967
- var import_ui27 = require("@elementor/ui");
2190
+ var import_ui29 = require("@elementor/ui");
1968
2191
  var UrlControl = createControl(({ placeholder }) => {
1969
2192
  const { value, setValue, disabled } = useBoundProp(import_editor_props15.urlPropTypeUtil);
1970
2193
  const handleChange = (event) => setValue(event.target.value);
1971
- return /* @__PURE__ */ React34.createElement(ControlActions, null, /* @__PURE__ */ React34.createElement(
1972
- import_ui27.TextField,
2194
+ return /* @__PURE__ */ React36.createElement(ControlActions, null, /* @__PURE__ */ React36.createElement(
2195
+ import_ui29.TextField,
1973
2196
  {
1974
2197
  size: "tiny",
1975
2198
  fullWidth: true,
@@ -1982,24 +2205,24 @@ var UrlControl = createControl(({ placeholder }) => {
1982
2205
  });
1983
2206
 
1984
2207
  // src/controls/link-control.tsx
1985
- var React36 = __toESM(require("react"));
1986
- var import_react15 = require("react");
2208
+ var React38 = __toESM(require("react"));
2209
+ var import_react21 = require("react");
1987
2210
  var import_editor_elements = require("@elementor/editor-elements");
1988
2211
  var import_editor_props16 = require("@elementor/editor-props");
1989
- var import_editor_ui3 = require("@elementor/editor-ui");
2212
+ var import_editor_ui4 = require("@elementor/editor-ui");
1990
2213
  var import_http_client2 = require("@elementor/http-client");
1991
- var import_icons9 = require("@elementor/icons");
2214
+ var import_icons10 = require("@elementor/icons");
1992
2215
  var import_session = require("@elementor/session");
1993
- var import_ui29 = require("@elementor/ui");
2216
+ var import_ui31 = require("@elementor/ui");
1994
2217
  var import_utils3 = require("@elementor/utils");
1995
2218
  var import_i18n9 = require("@wordpress/i18n");
1996
2219
 
1997
2220
  // src/components/autocomplete.tsx
1998
- var React35 = __toESM(require("react"));
1999
- var import_react14 = require("react");
2000
- var import_icons8 = require("@elementor/icons");
2001
- var import_ui28 = require("@elementor/ui");
2002
- var Autocomplete = (0, import_react14.forwardRef)((props, ref) => {
2221
+ var React37 = __toESM(require("react"));
2222
+ var import_react20 = require("react");
2223
+ var import_icons9 = require("@elementor/icons");
2224
+ var import_ui30 = require("@elementor/ui");
2225
+ var Autocomplete = (0, import_react20.forwardRef)((props, ref) => {
2003
2226
  const {
2004
2227
  options,
2005
2228
  onOptionChange,
@@ -2015,8 +2238,8 @@ var Autocomplete = (0, import_react14.forwardRef)((props, ref) => {
2015
2238
  const muiWarningPreventer = allowCustomValues || !!value?.toString()?.length;
2016
2239
  const isOptionEqualToValue = muiWarningPreventer ? void 0 : () => true;
2017
2240
  const isValueFromOptions = typeof value === "number" && !!findMatchingOption(options, value);
2018
- return /* @__PURE__ */ React35.createElement(
2019
- import_ui28.Autocomplete,
2241
+ return /* @__PURE__ */ React37.createElement(
2242
+ import_ui30.Autocomplete,
2020
2243
  {
2021
2244
  ...restProps,
2022
2245
  ref,
@@ -2033,8 +2256,8 @@ var Autocomplete = (0, import_react14.forwardRef)((props, ref) => {
2033
2256
  groupBy: isCategorizedOptionPool(options) ? (optionId) => findMatchingOption(options, optionId)?.groupLabel || optionId : void 0,
2034
2257
  isOptionEqualToValue,
2035
2258
  filterOptions: () => optionKeys,
2036
- renderOption: (optionProps, optionId) => /* @__PURE__ */ React35.createElement(import_ui28.Box, { component: "li", ...optionProps, key: optionProps.id }, findMatchingOption(options, optionId)?.label ?? optionId),
2037
- renderInput: (params) => /* @__PURE__ */ React35.createElement(
2259
+ renderOption: (optionProps, optionId) => /* @__PURE__ */ React37.createElement(import_ui30.Box, { component: "li", ...optionProps, key: optionProps.id }, findMatchingOption(options, optionId)?.label ?? optionId),
2260
+ renderInput: (params) => /* @__PURE__ */ React37.createElement(
2038
2261
  TextInput,
2039
2262
  {
2040
2263
  params,
@@ -2057,8 +2280,8 @@ var TextInput = ({
2057
2280
  const onChange = (event) => {
2058
2281
  handleChange(event.target.value);
2059
2282
  };
2060
- return /* @__PURE__ */ React35.createElement(
2061
- import_ui28.TextField,
2283
+ return /* @__PURE__ */ React37.createElement(
2284
+ import_ui30.TextField,
2062
2285
  {
2063
2286
  ...params,
2064
2287
  placeholder,
@@ -2070,7 +2293,7 @@ var TextInput = ({
2070
2293
  },
2071
2294
  InputProps: {
2072
2295
  ...params.InputProps,
2073
- endAdornment: /* @__PURE__ */ React35.createElement(ClearButton, { params, allowClear, handleChange })
2296
+ endAdornment: /* @__PURE__ */ React37.createElement(ClearButton, { params, allowClear, handleChange })
2074
2297
  }
2075
2298
  }
2076
2299
  );
@@ -2079,7 +2302,7 @@ var ClearButton = ({
2079
2302
  allowClear,
2080
2303
  handleChange,
2081
2304
  params
2082
- }) => /* @__PURE__ */ React35.createElement(import_ui28.InputAdornment, { position: "end" }, allowClear && /* @__PURE__ */ React35.createElement(import_ui28.IconButton, { size: params.size, onClick: () => handleChange(null), sx: { cursor: "pointer" } }, /* @__PURE__ */ React35.createElement(import_icons8.XIcon, { fontSize: params.size })));
2305
+ }) => /* @__PURE__ */ React37.createElement(import_ui30.InputAdornment, { position: "end" }, allowClear && /* @__PURE__ */ React37.createElement(import_ui30.IconButton, { size: params.size, onClick: () => handleChange(null), sx: { cursor: "pointer" } }, /* @__PURE__ */ React37.createElement(import_icons9.XIcon, { fontSize: params.size })));
2083
2306
  function findMatchingOption(options, optionId = null) {
2084
2307
  const formattedOption = (optionId || "").toString();
2085
2308
  return options.find(({ id }) => formattedOption === id.toString());
@@ -2101,7 +2324,7 @@ function _factoryFilter(newValue, options, minInputLength) {
2101
2324
  }
2102
2325
 
2103
2326
  // src/controls/link-control.tsx
2104
- var SIZE3 = "tiny";
2327
+ var SIZE4 = "tiny";
2105
2328
  var learnMoreButton = {
2106
2329
  label: (0, import_i18n9.__)("Learn More", "elementor"),
2107
2330
  href: "https://go.elementor.com/element-link-inside-link-infotip"
@@ -2109,7 +2332,7 @@ var learnMoreButton = {
2109
2332
  var LinkControl = createControl((props) => {
2110
2333
  const { value, path, setValue, ...propContext } = useBoundProp(import_editor_props16.linkPropTypeUtil);
2111
2334
  const [linkSessionValue, setLinkSessionValue] = (0, import_session.useSessionStorage)(path.join("/"));
2112
- const [isActive, setIsActive] = (0, import_react15.useState)(!!value);
2335
+ const [isActive, setIsActive] = (0, import_react21.useState)(!!value);
2113
2336
  const {
2114
2337
  allowCustomValues,
2115
2338
  queryOptions: { endpoint = "", requestParams = {} },
@@ -2117,8 +2340,8 @@ var LinkControl = createControl((props) => {
2117
2340
  minInputLength = 2,
2118
2341
  context: { elementId }
2119
2342
  } = props || {};
2120
- const [linkInLinkRestriction, setLinkInLinkRestriction] = (0, import_react15.useState)((0, import_editor_elements.getLinkInLinkRestriction)(elementId));
2121
- const [options, setOptions] = (0, import_react15.useState)(
2343
+ const [linkInLinkRestriction, setLinkInLinkRestriction] = (0, import_react21.useState)((0, import_editor_elements.getLinkInLinkRestriction)(elementId));
2344
+ const [options, setOptions] = (0, import_react21.useState)(
2122
2345
  generateFirstLoadedOption(value)
2123
2346
  );
2124
2347
  const shouldDisableAddingLink = !isActive && linkInLinkRestriction.shouldRestrict;
@@ -2169,7 +2392,7 @@ var LinkControl = createControl((props) => {
2169
2392
  }
2170
2393
  debounceFetch({ ...requestParams, term: newValue });
2171
2394
  };
2172
- const debounceFetch = (0, import_react15.useMemo)(
2395
+ const debounceFetch = (0, import_react21.useMemo)(
2173
2396
  () => (0, import_utils3.debounce)(
2174
2397
  (params) => fetchOptions(endpoint, params).then((newOptions) => {
2175
2398
  setOptions(formatOptions(newOptions));
@@ -2178,8 +2401,8 @@ var LinkControl = createControl((props) => {
2178
2401
  ),
2179
2402
  [endpoint]
2180
2403
  );
2181
- return /* @__PURE__ */ React36.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React36.createElement(import_ui29.Stack, { gap: 1.5 }, /* @__PURE__ */ React36.createElement(
2182
- import_ui29.Stack,
2404
+ return /* @__PURE__ */ React38.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React38.createElement(import_ui31.Stack, { gap: 1.5 }, /* @__PURE__ */ React38.createElement(
2405
+ import_ui31.Stack,
2183
2406
  {
2184
2407
  direction: "row",
2185
2408
  sx: {
@@ -2188,8 +2411,8 @@ var LinkControl = createControl((props) => {
2188
2411
  marginInlineEnd: -0.75
2189
2412
  }
2190
2413
  },
2191
- /* @__PURE__ */ React36.createElement(ControlFormLabel, null, (0, import_i18n9.__)("Link", "elementor")),
2192
- /* @__PURE__ */ React36.createElement(ConditionalInfoTip, { isVisible: !isActive, linkInLinkRestriction }, /* @__PURE__ */ React36.createElement(
2414
+ /* @__PURE__ */ React38.createElement(ControlFormLabel, null, (0, import_i18n9.__)("Link", "elementor")),
2415
+ /* @__PURE__ */ React38.createElement(ConditionalInfoTip, { isVisible: !isActive, linkInLinkRestriction }, /* @__PURE__ */ React38.createElement(
2193
2416
  ToggleIconControl,
2194
2417
  {
2195
2418
  disabled: shouldDisableAddingLink,
@@ -2198,7 +2421,7 @@ var LinkControl = createControl((props) => {
2198
2421
  label: (0, import_i18n9.__)("Toggle link", "elementor")
2199
2422
  }
2200
2423
  ))
2201
- ), /* @__PURE__ */ React36.createElement(import_ui29.Collapse, { in: isActive, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React36.createElement(import_ui29.Stack, { gap: 1.5 }, /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind: "destination" }, /* @__PURE__ */ React36.createElement(ControlActions, null, /* @__PURE__ */ React36.createElement(
2424
+ ), /* @__PURE__ */ React38.createElement(import_ui31.Collapse, { in: isActive, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React38.createElement(import_ui31.Stack, { gap: 1.5 }, /* @__PURE__ */ React38.createElement(PropKeyProvider, { bind: "destination" }, /* @__PURE__ */ React38.createElement(ControlActions, null, /* @__PURE__ */ React38.createElement(
2202
2425
  Autocomplete,
2203
2426
  {
2204
2427
  options,
@@ -2209,10 +2432,10 @@ var LinkControl = createControl((props) => {
2209
2432
  onTextChange,
2210
2433
  minInputLength
2211
2434
  }
2212
- ))), /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind: "isTargetBlank" }, /* @__PURE__ */ React36.createElement(SwitchControl, { disabled: !value }))))));
2435
+ ))), /* @__PURE__ */ React38.createElement(PropKeyProvider, { bind: "isTargetBlank" }, /* @__PURE__ */ React38.createElement(SwitchControl, { disabled: propContext.disabled || !value }))))));
2213
2436
  });
2214
2437
  var ToggleIconControl = ({ disabled, active, onIconClick, label }) => {
2215
- return /* @__PURE__ */ React36.createElement(import_ui29.IconButton, { size: SIZE3, onClick: onIconClick, "aria-label": label, disabled }, active ? /* @__PURE__ */ React36.createElement(import_icons9.MinusIcon, { fontSize: SIZE3 }) : /* @__PURE__ */ React36.createElement(import_icons9.PlusIcon, { fontSize: SIZE3 }));
2438
+ return /* @__PURE__ */ React38.createElement(import_ui31.IconButton, { size: SIZE4, onClick: onIconClick, "aria-label": label, disabled }, active ? /* @__PURE__ */ React38.createElement(import_icons10.MinusIcon, { fontSize: SIZE4 }) : /* @__PURE__ */ React38.createElement(import_icons10.PlusIcon, { fontSize: SIZE4 }));
2216
2439
  };
2217
2440
  var SwitchControl = ({ disabled }) => {
2218
2441
  const { value = false, setValue } = useBoundProp(import_editor_props16.booleanPropTypeUtil);
@@ -2224,7 +2447,7 @@ var SwitchControl = ({ disabled }) => {
2224
2447
  opacity: 0
2225
2448
  }
2226
2449
  } : {};
2227
- return /* @__PURE__ */ React36.createElement(import_ui29.Grid, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React36.createElement(import_ui29.Grid, { item: true }, /* @__PURE__ */ React36.createElement(ControlFormLabel, null, (0, import_i18n9.__)("Open in a new tab", "elementor"))), /* @__PURE__ */ React36.createElement(import_ui29.Grid, { item: true, sx: { marginInlineEnd: -1 } }, /* @__PURE__ */ React36.createElement(import_ui29.Switch, { checked: value, onClick, disabled, inputProps })));
2450
+ return /* @__PURE__ */ React38.createElement(import_ui31.Grid, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React38.createElement(import_ui31.Grid, { item: true }, /* @__PURE__ */ React38.createElement(ControlFormLabel, null, (0, import_i18n9.__)("Open in a new tab", "elementor"))), /* @__PURE__ */ React38.createElement(import_ui31.Grid, { item: true, sx: { marginInlineEnd: -1 } }, /* @__PURE__ */ React38.createElement(import_ui31.Switch, { checked: value, onClick, disabled, inputProps })));
2228
2451
  };
2229
2452
  async function fetchOptions(ajaxUrl, params) {
2230
2453
  if (!params || !ajaxUrl) {
@@ -2261,15 +2484,15 @@ var ConditionalInfoTip = ({ linkInLinkRestriction, isVisible, children }) => {
2261
2484
  (0, import_editor_elements.selectElement)(elementId);
2262
2485
  }
2263
2486
  };
2264
- return shouldRestrict && isVisible ? /* @__PURE__ */ React36.createElement(
2265
- import_ui29.Infotip,
2487
+ return shouldRestrict && isVisible ? /* @__PURE__ */ React38.createElement(
2488
+ import_ui31.Infotip,
2266
2489
  {
2267
2490
  placement: "right",
2268
- content: /* @__PURE__ */ React36.createElement(
2269
- import_editor_ui3.InfoTipCard,
2491
+ content: /* @__PURE__ */ React38.createElement(
2492
+ import_editor_ui4.InfoTipCard,
2270
2493
  {
2271
2494
  content: INFOTIP_CONTENT[reason],
2272
- svgIcon: /* @__PURE__ */ React36.createElement(import_icons9.AlertTriangleIcon, null),
2495
+ svgIcon: /* @__PURE__ */ React38.createElement(import_icons10.AlertTriangleIcon, null),
2273
2496
  learnMoreButton,
2274
2497
  ctaButton: {
2275
2498
  label: (0, import_i18n9.__)("Take me there", "elementor"),
@@ -2278,19 +2501,20 @@ var ConditionalInfoTip = ({ linkInLinkRestriction, isVisible, children }) => {
2278
2501
  }
2279
2502
  )
2280
2503
  },
2281
- /* @__PURE__ */ React36.createElement(import_ui29.Box, null, children)
2282
- ) : /* @__PURE__ */ React36.createElement(React36.Fragment, null, children);
2504
+ /* @__PURE__ */ React38.createElement(import_ui31.Box, null, children)
2505
+ ) : /* @__PURE__ */ React38.createElement(React38.Fragment, null, children);
2283
2506
  };
2284
2507
  var INFOTIP_CONTENT = {
2285
- descendant: /* @__PURE__ */ React36.createElement(React36.Fragment, null, (0, import_i18n9.__)("To add a link to this container,", "elementor"), /* @__PURE__ */ React36.createElement("br", null), (0, import_i18n9.__)("first remove the link from the elements inside of it.", "elementor")),
2286
- ancestor: /* @__PURE__ */ React36.createElement(React36.Fragment, null, (0, import_i18n9.__)("To add a link to this element,", "elementor"), /* @__PURE__ */ React36.createElement("br", null), (0, import_i18n9.__)("first remove the link from its parent container.", "elementor"))
2508
+ descendant: /* @__PURE__ */ React38.createElement(React38.Fragment, null, (0, import_i18n9.__)("To add a link to this container,", "elementor"), /* @__PURE__ */ React38.createElement("br", null), (0, import_i18n9.__)("first remove the link from the elements inside of it.", "elementor")),
2509
+ ancestor: /* @__PURE__ */ React38.createElement(React38.Fragment, null, (0, import_i18n9.__)("To add a link to this element,", "elementor"), /* @__PURE__ */ React38.createElement("br", null), (0, import_i18n9.__)("first remove the link from its parent container.", "elementor"))
2287
2510
  };
2288
2511
 
2289
2512
  // src/controls/gap-control.tsx
2290
- var React37 = __toESM(require("react"));
2513
+ var React39 = __toESM(require("react"));
2514
+ var import_react22 = require("react");
2291
2515
  var import_editor_props17 = require("@elementor/editor-props");
2292
- var import_icons10 = require("@elementor/icons");
2293
- var import_ui30 = require("@elementor/ui");
2516
+ var import_icons11 = require("@elementor/icons");
2517
+ var import_ui32 = require("@elementor/ui");
2294
2518
  var import_i18n10 = require("@wordpress/i18n");
2295
2519
  var GapControl = createControl(({ label }) => {
2296
2520
  const {
@@ -2299,6 +2523,7 @@ var GapControl = createControl(({ label }) => {
2299
2523
  propType,
2300
2524
  disabled: directionDisabled
2301
2525
  } = useBoundProp(import_editor_props17.layoutDirectionPropTypeUtil);
2526
+ const stackRef = (0, import_react22.useRef)();
2302
2527
  const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(import_editor_props17.sizePropTypeUtil);
2303
2528
  const isLinked = !directionValue && !sizeValue ? true : !!sizeValue;
2304
2529
  const onLinkToggle = () => {
@@ -2313,11 +2538,12 @@ var GapControl = createControl(({ label }) => {
2313
2538
  });
2314
2539
  };
2315
2540
  const tooltipLabel = label.toLowerCase();
2316
- const LinkedIcon = isLinked ? import_icons10.LinkIcon : import_icons10.DetachIcon;
2541
+ const LinkedIcon = isLinked ? import_icons11.LinkIcon : import_icons11.DetachIcon;
2317
2542
  const linkedLabel = (0, import_i18n10.__)("Link %s", "elementor").replace("%s", tooltipLabel);
2318
2543
  const unlinkedLabel = (0, import_i18n10.__)("Unlink %s", "elementor").replace("%s", tooltipLabel);
2319
- return /* @__PURE__ */ React37.createElement(PropProvider, { propType, value: directionValue, setValue: setDirectionValue }, /* @__PURE__ */ React37.createElement(import_ui30.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React37.createElement(ControlLabel, null, label), /* @__PURE__ */ React37.createElement(import_ui30.Tooltip, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React37.createElement(
2320
- import_ui30.ToggleButton,
2544
+ const disabled = sizeDisabled || directionDisabled;
2545
+ return /* @__PURE__ */ React39.createElement(PropProvider, { propType, value: directionValue, setValue: setDirectionValue }, /* @__PURE__ */ React39.createElement(import_ui32.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React39.createElement(ControlLabel, null, label), /* @__PURE__ */ React39.createElement(import_ui32.Tooltip, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React39.createElement(
2546
+ import_ui32.ToggleButton,
2321
2547
  {
2322
2548
  "aria-label": isLinked ? unlinkedLabel : linkedLabel,
2323
2549
  size: "tiny",
@@ -2325,25 +2551,29 @@ var GapControl = createControl(({ label }) => {
2325
2551
  selected: isLinked,
2326
2552
  sx: { marginLeft: "auto" },
2327
2553
  onChange: onLinkToggle,
2328
- disabled: sizeDisabled || directionDisabled
2554
+ disabled
2329
2555
  },
2330
- /* @__PURE__ */ React37.createElement(LinkedIcon, { fontSize: "tiny" })
2331
- ))), /* @__PURE__ */ React37.createElement(import_ui30.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React37.createElement(import_ui30.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React37.createElement(ControlFormLabel, null, (0, import_i18n10.__)("Column", "elementor"))), /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React37.createElement(Control4, { bind: "column", isLinked }))), /* @__PURE__ */ React37.createElement(import_ui30.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React37.createElement(ControlFormLabel, null, (0, import_i18n10.__)("Row", "elementor"))), /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React37.createElement(Control4, { bind: "row", isLinked })))));
2556
+ /* @__PURE__ */ React39.createElement(LinkedIcon, { fontSize: "tiny" })
2557
+ ))), /* @__PURE__ */ React39.createElement(import_ui32.Stack, { direction: "row", gap: 2, flexWrap: "nowrap", ref: stackRef }, /* @__PURE__ */ React39.createElement(import_ui32.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(ControlFormLabel, null, (0, import_i18n10.__)("Column", "elementor"))), /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(Control4, { bind: "column", isLinked, anchorRef: stackRef }))), /* @__PURE__ */ React39.createElement(import_ui32.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(ControlFormLabel, null, (0, import_i18n10.__)("Row", "elementor"))), /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(Control4, { bind: "row", isLinked, anchorRef: stackRef })))));
2332
2558
  });
2333
- var Control4 = ({ bind, isLinked }) => {
2559
+ var Control4 = ({
2560
+ bind,
2561
+ isLinked,
2562
+ anchorRef
2563
+ }) => {
2334
2564
  if (isLinked) {
2335
- return /* @__PURE__ */ React37.createElement(SizeControl, null);
2565
+ return /* @__PURE__ */ React39.createElement(SizeControl, { anchorRef });
2336
2566
  }
2337
- return /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React37.createElement(SizeControl, null));
2567
+ return /* @__PURE__ */ React39.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React39.createElement(SizeControl, { anchorRef }));
2338
2568
  };
2339
2569
 
2340
2570
  // src/controls/aspect-ratio-control.tsx
2341
- var React38 = __toESM(require("react"));
2342
- var import_react16 = require("react");
2571
+ var React40 = __toESM(require("react"));
2572
+ var import_react23 = require("react");
2343
2573
  var import_editor_props18 = require("@elementor/editor-props");
2344
- var import_editor_ui4 = require("@elementor/editor-ui");
2345
- var import_icons11 = require("@elementor/icons");
2346
- var import_ui31 = require("@elementor/ui");
2574
+ var import_editor_ui5 = require("@elementor/editor-ui");
2575
+ var import_icons12 = require("@elementor/icons");
2576
+ var import_ui33 = require("@elementor/ui");
2347
2577
  var import_i18n11 = require("@wordpress/i18n");
2348
2578
  var RATIO_OPTIONS = [
2349
2579
  { label: (0, import_i18n11.__)("Auto", "elementor"), value: "auto" },
@@ -2360,10 +2590,10 @@ var AspectRatioControl = createControl(({ label }) => {
2360
2590
  const { value: aspectRatioValue, setValue: setAspectRatioValue, disabled } = useBoundProp(import_editor_props18.stringPropTypeUtil);
2361
2591
  const isCustomSelected = aspectRatioValue && !RATIO_OPTIONS.some((option) => option.value === aspectRatioValue);
2362
2592
  const [initialWidth, initialHeight] = isCustomSelected ? aspectRatioValue.split("/") : ["", ""];
2363
- const [isCustom, setIsCustom] = (0, import_react16.useState)(isCustomSelected);
2364
- const [customWidth, setCustomWidth] = (0, import_react16.useState)(initialWidth);
2365
- const [customHeight, setCustomHeight] = (0, import_react16.useState)(initialHeight);
2366
- const [selectedValue, setSelectedValue] = (0, import_react16.useState)(
2593
+ const [isCustom, setIsCustom] = (0, import_react23.useState)(isCustomSelected);
2594
+ const [customWidth, setCustomWidth] = (0, import_react23.useState)(initialWidth);
2595
+ const [customHeight, setCustomHeight] = (0, import_react23.useState)(initialHeight);
2596
+ const [selectedValue, setSelectedValue] = (0, import_react23.useState)(
2367
2597
  isCustomSelected ? CUSTOM_RATIO : aspectRatioValue || ""
2368
2598
  );
2369
2599
  const handleSelectChange = (event) => {
@@ -2390,8 +2620,8 @@ var AspectRatioControl = createControl(({ label }) => {
2390
2620
  setAspectRatioValue(`${customWidth}/${newHeight}`);
2391
2621
  }
2392
2622
  };
2393
- return /* @__PURE__ */ React38.createElement(ControlActions, null, /* @__PURE__ */ React38.createElement(import_ui31.Stack, { direction: "column", pt: 2, gap: 2 }, /* @__PURE__ */ React38.createElement(import_ui31.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React38.createElement(import_ui31.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(ControlLabel, null, label)), /* @__PURE__ */ React38.createElement(import_ui31.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(
2394
- import_ui31.Select,
2623
+ return /* @__PURE__ */ React40.createElement(ControlActions, null, /* @__PURE__ */ React40.createElement(import_ui33.Stack, { direction: "column", pt: 2, gap: 2 }, /* @__PURE__ */ React40.createElement(import_ui33.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(import_ui33.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(ControlLabel, null, label)), /* @__PURE__ */ React40.createElement(import_ui33.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(
2624
+ import_ui33.Select,
2395
2625
  {
2396
2626
  size: "tiny",
2397
2627
  displayEmpty: true,
@@ -2402,10 +2632,10 @@ var AspectRatioControl = createControl(({ label }) => {
2402
2632
  fullWidth: true
2403
2633
  },
2404
2634
  [...RATIO_OPTIONS, { label: (0, import_i18n11.__)("Custom", "elementor"), value: CUSTOM_RATIO }].map(
2405
- ({ label: optionLabel, ...props }) => /* @__PURE__ */ React38.createElement(import_editor_ui4.MenuListItem, { key: props.value, ...props, value: props.value ?? "" }, optionLabel)
2635
+ ({ label: optionLabel, ...props }) => /* @__PURE__ */ React40.createElement(import_editor_ui5.MenuListItem, { key: props.value, ...props, value: props.value ?? "" }, optionLabel)
2406
2636
  )
2407
- ))), isCustom && /* @__PURE__ */ React38.createElement(import_ui31.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React38.createElement(import_ui31.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(
2408
- import_ui31.TextField,
2637
+ ))), isCustom && /* @__PURE__ */ React40.createElement(import_ui33.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(import_ui33.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(
2638
+ import_ui33.TextField,
2409
2639
  {
2410
2640
  size: "tiny",
2411
2641
  type: "number",
@@ -2414,11 +2644,11 @@ var AspectRatioControl = createControl(({ label }) => {
2414
2644
  value: customWidth,
2415
2645
  onChange: handleCustomWidthChange,
2416
2646
  InputProps: {
2417
- startAdornment: /* @__PURE__ */ React38.createElement(import_icons11.ArrowsMoveHorizontalIcon, { fontSize: "tiny" })
2647
+ startAdornment: /* @__PURE__ */ React40.createElement(import_icons12.ArrowsMoveHorizontalIcon, { fontSize: "tiny" })
2418
2648
  }
2419
2649
  }
2420
- )), /* @__PURE__ */ React38.createElement(import_ui31.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(
2421
- import_ui31.TextField,
2650
+ )), /* @__PURE__ */ React40.createElement(import_ui33.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(
2651
+ import_ui33.TextField,
2422
2652
  {
2423
2653
  size: "tiny",
2424
2654
  type: "number",
@@ -2427,26 +2657,26 @@ var AspectRatioControl = createControl(({ label }) => {
2427
2657
  value: customHeight,
2428
2658
  onChange: handleCustomHeightChange,
2429
2659
  InputProps: {
2430
- startAdornment: /* @__PURE__ */ React38.createElement(import_icons11.ArrowsMoveVerticalIcon, { fontSize: "tiny" })
2660
+ startAdornment: /* @__PURE__ */ React40.createElement(import_icons12.ArrowsMoveVerticalIcon, { fontSize: "tiny" })
2431
2661
  }
2432
2662
  }
2433
2663
  )))));
2434
2664
  });
2435
2665
 
2436
2666
  // src/controls/svg-media-control.tsx
2437
- var React40 = __toESM(require("react"));
2438
- var import_react18 = require("react");
2667
+ var React42 = __toESM(require("react"));
2668
+ var import_react25 = require("react");
2439
2669
  var import_editor_props19 = require("@elementor/editor-props");
2440
- var import_icons12 = require("@elementor/icons");
2441
- var import_ui33 = require("@elementor/ui");
2670
+ var import_icons13 = require("@elementor/icons");
2671
+ var import_ui35 = require("@elementor/ui");
2442
2672
  var import_wp_media2 = require("@elementor/wp-media");
2443
2673
  var import_i18n13 = require("@wordpress/i18n");
2444
2674
 
2445
2675
  // src/components/enable-unfiltered-modal.tsx
2446
- var React39 = __toESM(require("react"));
2447
- var import_react17 = require("react");
2676
+ var React41 = __toESM(require("react"));
2677
+ var import_react24 = require("react");
2448
2678
  var import_editor_current_user = require("@elementor/editor-current-user");
2449
- var import_ui32 = require("@elementor/ui");
2679
+ var import_ui34 = require("@elementor/ui");
2450
2680
  var import_i18n12 = require("@wordpress/i18n");
2451
2681
  var ADMIN_TITLE_TEXT = (0, import_i18n12.__)("Enable Unfiltered Uploads", "elementor");
2452
2682
  var ADMIN_CONTENT_TEXT = (0, import_i18n12.__)(
@@ -2467,7 +2697,7 @@ var WAIT_FOR_CLOSE_TIMEOUT_MS = 300;
2467
2697
  var EnableUnfilteredModal = (props) => {
2468
2698
  const { mutateAsync, isPending } = useUpdateUnfilteredFilesUpload();
2469
2699
  const { canUser } = (0, import_editor_current_user.useCurrentUserCapabilities)();
2470
- const [isError, setIsError] = (0, import_react17.useState)(false);
2700
+ const [isError, setIsError] = (0, import_react24.useState)(false);
2471
2701
  const canManageOptions = canUser("manage_options");
2472
2702
  const onClose = (enabled) => {
2473
2703
  props.onClose(enabled);
@@ -2486,10 +2716,10 @@ var EnableUnfilteredModal = (props) => {
2486
2716
  }
2487
2717
  };
2488
2718
  const dialogProps = { ...props, isPending, handleEnable, isError, onClose };
2489
- return canManageOptions ? /* @__PURE__ */ React39.createElement(AdminDialog, { ...dialogProps }) : /* @__PURE__ */ React39.createElement(NonAdminDialog, { ...dialogProps });
2719
+ return canManageOptions ? /* @__PURE__ */ React41.createElement(AdminDialog, { ...dialogProps }) : /* @__PURE__ */ React41.createElement(NonAdminDialog, { ...dialogProps });
2490
2720
  };
2491
- var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @__PURE__ */ React39.createElement(import_ui32.Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React39.createElement(import_ui32.DialogHeader, { logo: false }, /* @__PURE__ */ React39.createElement(import_ui32.DialogTitle, null, ADMIN_TITLE_TEXT)), /* @__PURE__ */ React39.createElement(import_ui32.Divider, null), /* @__PURE__ */ React39.createElement(import_ui32.DialogContent, null, /* @__PURE__ */ React39.createElement(import_ui32.DialogContentText, null, isError ? /* @__PURE__ */ React39.createElement(React39.Fragment, null, ADMIN_FAILED_CONTENT_TEXT_PT1, " ", /* @__PURE__ */ React39.createElement("br", null), " ", ADMIN_FAILED_CONTENT_TEXT_PT2) : ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React39.createElement(import_ui32.DialogActions, null, /* @__PURE__ */ React39.createElement(import_ui32.Button, { size: "medium", color: "secondary", onClick: () => onClose(false) }, (0, import_i18n12.__)("Cancel", "elementor")), /* @__PURE__ */ React39.createElement(
2492
- import_ui32.Button,
2721
+ var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @__PURE__ */ React41.createElement(import_ui34.Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React41.createElement(import_ui34.DialogHeader, { logo: false }, /* @__PURE__ */ React41.createElement(import_ui34.DialogTitle, null, ADMIN_TITLE_TEXT)), /* @__PURE__ */ React41.createElement(import_ui34.Divider, null), /* @__PURE__ */ React41.createElement(import_ui34.DialogContent, null, /* @__PURE__ */ React41.createElement(import_ui34.DialogContentText, null, isError ? /* @__PURE__ */ React41.createElement(React41.Fragment, null, ADMIN_FAILED_CONTENT_TEXT_PT1, " ", /* @__PURE__ */ React41.createElement("br", null), " ", ADMIN_FAILED_CONTENT_TEXT_PT2) : ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React41.createElement(import_ui34.DialogActions, null, /* @__PURE__ */ React41.createElement(import_ui34.Button, { size: "medium", color: "secondary", onClick: () => onClose(false) }, (0, import_i18n12.__)("Cancel", "elementor")), /* @__PURE__ */ React41.createElement(
2722
+ import_ui34.Button,
2493
2723
  {
2494
2724
  size: "medium",
2495
2725
  onClick: () => handleEnable(),
@@ -2497,16 +2727,16 @@ var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @_
2497
2727
  color: "primary",
2498
2728
  disabled: isPending
2499
2729
  },
2500
- isPending ? /* @__PURE__ */ React39.createElement(import_ui32.CircularProgress, { size: 24 }) : (0, import_i18n12.__)("Enable", "elementor")
2730
+ isPending ? /* @__PURE__ */ React41.createElement(import_ui34.CircularProgress, { size: 24 }) : (0, import_i18n12.__)("Enable", "elementor")
2501
2731
  )));
2502
- var NonAdminDialog = ({ open, onClose }) => /* @__PURE__ */ React39.createElement(import_ui32.Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React39.createElement(import_ui32.DialogHeader, { logo: false }, /* @__PURE__ */ React39.createElement(import_ui32.DialogTitle, null, NON_ADMIN_TITLE_TEXT)), /* @__PURE__ */ React39.createElement(import_ui32.Divider, null), /* @__PURE__ */ React39.createElement(import_ui32.DialogContent, null, /* @__PURE__ */ React39.createElement(import_ui32.DialogContentText, null, NON_ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React39.createElement(import_ui32.DialogActions, null, /* @__PURE__ */ React39.createElement(import_ui32.Button, { size: "medium", onClick: () => onClose(false), variant: "contained", color: "primary" }, (0, import_i18n12.__)("Got it", "elementor"))));
2732
+ var NonAdminDialog = ({ open, onClose }) => /* @__PURE__ */ React41.createElement(import_ui34.Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React41.createElement(import_ui34.DialogHeader, { logo: false }, /* @__PURE__ */ React41.createElement(import_ui34.DialogTitle, null, NON_ADMIN_TITLE_TEXT)), /* @__PURE__ */ React41.createElement(import_ui34.Divider, null), /* @__PURE__ */ React41.createElement(import_ui34.DialogContent, null, /* @__PURE__ */ React41.createElement(import_ui34.DialogContentText, null, NON_ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React41.createElement(import_ui34.DialogActions, null, /* @__PURE__ */ React41.createElement(import_ui34.Button, { size: "medium", onClick: () => onClose(false), variant: "contained", color: "primary" }, (0, import_i18n12.__)("Got it", "elementor"))));
2503
2733
 
2504
2734
  // src/controls/svg-media-control.tsx
2505
2735
  var TILE_SIZE = 8;
2506
2736
  var TILE_WHITE = "transparent";
2507
2737
  var TILE_BLACK = "#c1c1c1";
2508
2738
  var TILES_GRADIENT_FORMULA = `linear-gradient(45deg, ${TILE_BLACK} 25%, ${TILE_WHITE} 0, ${TILE_WHITE} 75%, ${TILE_BLACK} 0, ${TILE_BLACK})`;
2509
- var StyledCard = (0, import_ui33.styled)(import_ui33.Card)`
2739
+ var StyledCard = (0, import_ui35.styled)(import_ui35.Card)`
2510
2740
  background-color: white;
2511
2741
  background-image: ${TILES_GRADIENT_FORMULA}, ${TILES_GRADIENT_FORMULA};
2512
2742
  background-size: ${TILE_SIZE}px ${TILE_SIZE}px;
@@ -2515,7 +2745,7 @@ var StyledCard = (0, import_ui33.styled)(import_ui33.Card)`
2515
2745
  ${TILE_SIZE / 2}px ${TILE_SIZE / 2}px;
2516
2746
  border: none;
2517
2747
  `;
2518
- var StyledCardMediaContainer = (0, import_ui33.styled)(import_ui33.Stack)`
2748
+ var StyledCardMediaContainer = (0, import_ui35.styled)(import_ui35.Stack)`
2519
2749
  position: relative;
2520
2750
  height: 140px;
2521
2751
  object-fit: contain;
@@ -2532,7 +2762,7 @@ var SvgMediaControl = createControl(() => {
2532
2762
  const { data: attachment, isFetching } = (0, import_wp_media2.useWpMediaAttachment)(id?.value || null);
2533
2763
  const src = attachment?.url ?? url?.value ?? null;
2534
2764
  const { data: allowSvgUpload } = useUnfilteredFilesUpload();
2535
- const [unfilteredModalOpenState, setUnfilteredModalOpenState] = (0, import_react18.useState)(false);
2765
+ const [unfilteredModalOpenState, setUnfilteredModalOpenState] = (0, import_react25.useState)(false);
2536
2766
  const { open } = (0, import_wp_media2.useWpMediaFrame)({
2537
2767
  mediaTypes: ["svg"],
2538
2768
  multiple: false,
@@ -2560,16 +2790,16 @@ var SvgMediaControl = createControl(() => {
2560
2790
  open(openOptions);
2561
2791
  }
2562
2792
  };
2563
- return /* @__PURE__ */ React40.createElement(import_ui33.Stack, { gap: 1 }, /* @__PURE__ */ React40.createElement(EnableUnfilteredModal, { open: unfilteredModalOpenState, onClose: onCloseUnfilteredModal }), /* @__PURE__ */ React40.createElement(ControlFormLabel, null, " ", (0, import_i18n13.__)("SVG", "elementor"), " "), /* @__PURE__ */ React40.createElement(ControlActions, null, /* @__PURE__ */ React40.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React40.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React40.createElement(import_ui33.CircularProgress, { role: "progressbar" }) : /* @__PURE__ */ React40.createElement(
2564
- import_ui33.CardMedia,
2793
+ return /* @__PURE__ */ React42.createElement(import_ui35.Stack, { gap: 1 }, /* @__PURE__ */ React42.createElement(EnableUnfilteredModal, { open: unfilteredModalOpenState, onClose: onCloseUnfilteredModal }), /* @__PURE__ */ React42.createElement(ControlFormLabel, null, " ", (0, import_i18n13.__)("SVG", "elementor"), " "), /* @__PURE__ */ React42.createElement(ControlActions, null, /* @__PURE__ */ React42.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React42.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React42.createElement(import_ui35.CircularProgress, { role: "progressbar" }) : /* @__PURE__ */ React42.createElement(
2794
+ import_ui35.CardMedia,
2565
2795
  {
2566
2796
  component: "img",
2567
2797
  image: src,
2568
2798
  alt: (0, import_i18n13.__)("Preview SVG", "elementor"),
2569
2799
  sx: { maxHeight: "140px", width: "50px" }
2570
2800
  }
2571
- )), /* @__PURE__ */ React40.createElement(
2572
- import_ui33.CardOverlay,
2801
+ )), /* @__PURE__ */ React42.createElement(
2802
+ import_ui35.CardOverlay,
2573
2803
  {
2574
2804
  sx: {
2575
2805
  "&:hover": {
@@ -2577,8 +2807,8 @@ var SvgMediaControl = createControl(() => {
2577
2807
  }
2578
2808
  }
2579
2809
  },
2580
- /* @__PURE__ */ React40.createElement(import_ui33.Stack, { gap: 1 }, /* @__PURE__ */ React40.createElement(
2581
- import_ui33.Button,
2810
+ /* @__PURE__ */ React42.createElement(import_ui35.Stack, { gap: 1 }, /* @__PURE__ */ React42.createElement(
2811
+ import_ui35.Button,
2582
2812
  {
2583
2813
  size: "tiny",
2584
2814
  color: "inherit",
@@ -2586,13 +2816,13 @@ var SvgMediaControl = createControl(() => {
2586
2816
  onClick: () => handleClick(MODE_BROWSE)
2587
2817
  },
2588
2818
  (0, import_i18n13.__)("Select SVG", "elementor")
2589
- ), /* @__PURE__ */ React40.createElement(
2590
- import_ui33.Button,
2819
+ ), /* @__PURE__ */ React42.createElement(
2820
+ import_ui35.Button,
2591
2821
  {
2592
2822
  size: "tiny",
2593
2823
  variant: "text",
2594
2824
  color: "inherit",
2595
- startIcon: /* @__PURE__ */ React40.createElement(import_icons12.UploadIcon, null),
2825
+ startIcon: /* @__PURE__ */ React42.createElement(import_icons13.UploadIcon, null),
2596
2826
  onClick: () => handleClick(MODE_UPLOAD)
2597
2827
  },
2598
2828
  (0, import_i18n13.__)("Upload", "elementor")
@@ -2601,16 +2831,16 @@ var SvgMediaControl = createControl(() => {
2601
2831
  });
2602
2832
 
2603
2833
  // src/controls/background-control/background-control.tsx
2604
- var React47 = __toESM(require("react"));
2834
+ var React49 = __toESM(require("react"));
2605
2835
  var import_editor_props25 = require("@elementor/editor-props");
2606
- var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
2607
- var import_ui41 = require("@elementor/ui");
2836
+ var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
2837
+ var import_ui43 = require("@elementor/ui");
2608
2838
  var import_i18n19 = require("@wordpress/i18n");
2609
2839
 
2610
2840
  // src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx
2611
- var React46 = __toESM(require("react"));
2841
+ var React48 = __toESM(require("react"));
2612
2842
  var import_editor_props24 = require("@elementor/editor-props");
2613
- var import_ui40 = require("@elementor/ui");
2843
+ var import_ui42 = require("@elementor/ui");
2614
2844
  var import_wp_media3 = require("@elementor/wp-media");
2615
2845
  var import_i18n18 = require("@wordpress/i18n");
2616
2846
 
@@ -2619,9 +2849,9 @@ var import_env = require("@elementor/env");
2619
2849
  var { env } = (0, import_env.parseEnv)("@elementor/editor-controls");
2620
2850
 
2621
2851
  // src/controls/background-control/background-gradient-color-control.tsx
2622
- var React41 = __toESM(require("react"));
2852
+ var React43 = __toESM(require("react"));
2623
2853
  var import_editor_props20 = require("@elementor/editor-props");
2624
- var import_ui34 = require("@elementor/ui");
2854
+ var import_ui36 = require("@elementor/ui");
2625
2855
  var BackgroundGradientColorControl = createControl(() => {
2626
2856
  const { value, setValue } = useBoundProp(import_editor_props20.backgroundGradientOverlayPropTypeUtil);
2627
2857
  const handleChange = (newValue) => {
@@ -2659,8 +2889,8 @@ var BackgroundGradientColorControl = createControl(() => {
2659
2889
  positions: positions?.value.split(" ")
2660
2890
  };
2661
2891
  };
2662
- return /* @__PURE__ */ React41.createElement(ControlActions, null, /* @__PURE__ */ React41.createElement(
2663
- import_ui34.UnstableGradientBox,
2892
+ return /* @__PURE__ */ React43.createElement(ControlActions, null, /* @__PURE__ */ React43.createElement(
2893
+ import_ui36.UnstableGradientBox,
2664
2894
  {
2665
2895
  sx: { width: "auto", padding: 1.5 },
2666
2896
  value: normalizeValue(),
@@ -2684,34 +2914,35 @@ var initialBackgroundGradientOverlay = import_editor_props20.backgroundGradientO
2684
2914
  });
2685
2915
 
2686
2916
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx
2687
- var React42 = __toESM(require("react"));
2688
- var import_icons13 = require("@elementor/icons");
2689
- var import_ui35 = require("@elementor/ui");
2917
+ var React44 = __toESM(require("react"));
2918
+ var import_icons14 = require("@elementor/icons");
2919
+ var import_ui37 = require("@elementor/ui");
2690
2920
  var import_i18n14 = require("@wordpress/i18n");
2691
2921
  var attachmentControlOptions = [
2692
2922
  {
2693
2923
  value: "fixed",
2694
2924
  label: (0, import_i18n14.__)("Fixed", "elementor"),
2695
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(import_icons13.PinIcon, { fontSize: size }),
2925
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons14.PinIcon, { fontSize: size }),
2696
2926
  showTooltip: true
2697
2927
  },
2698
2928
  {
2699
2929
  value: "scroll",
2700
2930
  label: (0, import_i18n14.__)("Scroll", "elementor"),
2701
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(import_icons13.PinnedOffIcon, { fontSize: size }),
2931
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons14.PinnedOffIcon, { fontSize: size }),
2702
2932
  showTooltip: true
2703
2933
  }
2704
2934
  ];
2705
2935
  var BackgroundImageOverlayAttachment = () => {
2706
- return /* @__PURE__ */ React42.createElement(PopoverGridContainer, null, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(ControlFormLabel, null, (0, import_i18n14.__)("Attachment", "elementor"))), /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React42.createElement(ToggleControl, { options: attachmentControlOptions })));
2936
+ return /* @__PURE__ */ React44.createElement(PopoverGridContainer, null, /* @__PURE__ */ React44.createElement(import_ui37.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(ControlFormLabel, null, (0, import_i18n14.__)("Attachment", "elementor"))), /* @__PURE__ */ React44.createElement(import_ui37.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React44.createElement(ToggleControl, { options: attachmentControlOptions })));
2707
2937
  };
2708
2938
 
2709
2939
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
2710
- var React43 = __toESM(require("react"));
2940
+ var React45 = __toESM(require("react"));
2941
+ var import_react26 = require("react");
2711
2942
  var import_editor_props21 = require("@elementor/editor-props");
2712
- var import_editor_ui5 = require("@elementor/editor-ui");
2713
- var import_icons14 = require("@elementor/icons");
2714
- var import_ui36 = require("@elementor/ui");
2943
+ var import_editor_ui6 = require("@elementor/editor-ui");
2944
+ var import_icons15 = require("@elementor/icons");
2945
+ var import_ui38 = require("@elementor/ui");
2715
2946
  var import_i18n15 = require("@wordpress/i18n");
2716
2947
  var backgroundPositionOptions = [
2717
2948
  { label: (0, import_i18n15.__)("Center center", "elementor"), value: "center center" },
@@ -2729,6 +2960,7 @@ var BackgroundImageOverlayPosition = () => {
2729
2960
  const backgroundImageOffsetContext = useBoundProp(import_editor_props21.backgroundImagePositionOffsetPropTypeUtil);
2730
2961
  const stringPropContext = useBoundProp(import_editor_props21.stringPropTypeUtil);
2731
2962
  const isCustom = !!backgroundImageOffsetContext.value;
2963
+ const rowRef = (0, import_react26.useRef)();
2732
2964
  const handlePositionChange = (event) => {
2733
2965
  const value = event.target.value || null;
2734
2966
  if (value === "custom") {
@@ -2737,82 +2969,96 @@ var BackgroundImageOverlayPosition = () => {
2737
2969
  stringPropContext.setValue(value);
2738
2970
  }
2739
2971
  };
2740
- return /* @__PURE__ */ React43.createElement(import_ui36.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React43.createElement(import_ui36.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(PopoverGridContainer, null, /* @__PURE__ */ React43.createElement(import_ui36.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(ControlFormLabel, null, (0, import_i18n15.__)("Position", "elementor"))), /* @__PURE__ */ React43.createElement(import_ui36.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React43.createElement(
2741
- import_ui36.Select,
2972
+ return /* @__PURE__ */ React45.createElement(import_ui38.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React45.createElement(PopoverGridContainer, null, /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(ControlFormLabel, null, (0, import_i18n15.__)("Position", "elementor"))), /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React45.createElement(
2973
+ import_ui38.Select,
2742
2974
  {
2975
+ fullWidth: true,
2743
2976
  size: "tiny",
2744
- value: (backgroundImageOffsetContext.value ? "custom" : stringPropContext.value) ?? "",
2745
2977
  onChange: handlePositionChange,
2746
- fullWidth: true
2978
+ disabled: stringPropContext.disabled,
2979
+ value: (backgroundImageOffsetContext.value ? "custom" : stringPropContext.value) ?? ""
2747
2980
  },
2748
- backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React43.createElement(import_editor_ui5.MenuListItem, { key: value, value: value ?? "" }, label))
2749
- )))), isCustom ? /* @__PURE__ */ React43.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React43.createElement(import_ui36.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(import_ui36.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React43.createElement(import_ui36.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React43.createElement(SizeControl, { startIcon: /* @__PURE__ */ React43.createElement(import_icons14.LetterXIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React43.createElement(import_ui36.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React43.createElement(SizeControl, { startIcon: /* @__PURE__ */ React43.createElement(import_icons14.LetterYIcon, { fontSize: "tiny" }) })))))) : null);
2981
+ backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React45.createElement(import_editor_ui6.MenuListItem, { key: value, value: value ?? "" }, label))
2982
+ )))), isCustom ? /* @__PURE__ */ React45.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React45.createElement(import_ui38.Grid, { container: true, spacing: 1.5, ref: rowRef }, /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React45.createElement(
2983
+ SizeControl,
2984
+ {
2985
+ startIcon: /* @__PURE__ */ React45.createElement(import_icons15.LetterXIcon, { fontSize: "tiny" }),
2986
+ anchorRef: rowRef
2987
+ }
2988
+ ))), /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React45.createElement(
2989
+ SizeControl,
2990
+ {
2991
+ startIcon: /* @__PURE__ */ React45.createElement(import_icons15.LetterYIcon, { fontSize: "tiny" }),
2992
+ anchorRef: rowRef
2993
+ }
2994
+ )))))) : null);
2750
2995
  };
2751
2996
 
2752
2997
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx
2753
- var React44 = __toESM(require("react"));
2754
- var import_icons15 = require("@elementor/icons");
2755
- var import_ui37 = require("@elementor/ui");
2998
+ var React46 = __toESM(require("react"));
2999
+ var import_icons16 = require("@elementor/icons");
3000
+ var import_ui39 = require("@elementor/ui");
2756
3001
  var import_i18n16 = require("@wordpress/i18n");
2757
3002
  var repeatControlOptions = [
2758
3003
  {
2759
3004
  value: "repeat",
2760
3005
  label: (0, import_i18n16.__)("Repeat", "elementor"),
2761
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons15.GridDotsIcon, { fontSize: size }),
3006
+ renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(import_icons16.GridDotsIcon, { fontSize: size }),
2762
3007
  showTooltip: true
2763
3008
  },
2764
3009
  {
2765
3010
  value: "repeat-x",
2766
3011
  label: (0, import_i18n16.__)("Repeat-x", "elementor"),
2767
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons15.DotsHorizontalIcon, { fontSize: size }),
3012
+ renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(import_icons16.DotsHorizontalIcon, { fontSize: size }),
2768
3013
  showTooltip: true
2769
3014
  },
2770
3015
  {
2771
3016
  value: "repeat-y",
2772
3017
  label: (0, import_i18n16.__)("Repeat-y", "elementor"),
2773
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons15.DotsVerticalIcon, { fontSize: size }),
3018
+ renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(import_icons16.DotsVerticalIcon, { fontSize: size }),
2774
3019
  showTooltip: true
2775
3020
  },
2776
3021
  {
2777
3022
  value: "no-repeat",
2778
3023
  label: (0, import_i18n16.__)("No-repeat", "elementor"),
2779
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons15.XIcon, { fontSize: size }),
3024
+ renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(import_icons16.XIcon, { fontSize: size }),
2780
3025
  showTooltip: true
2781
3026
  }
2782
3027
  ];
2783
3028
  var BackgroundImageOverlayRepeat = () => {
2784
- return /* @__PURE__ */ React44.createElement(PopoverGridContainer, null, /* @__PURE__ */ React44.createElement(import_ui37.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(ControlFormLabel, null, (0, import_i18n16.__)("Repeat", "elementor"))), /* @__PURE__ */ React44.createElement(import_ui37.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React44.createElement(ToggleControl, { options: repeatControlOptions })));
3029
+ return /* @__PURE__ */ React46.createElement(PopoverGridContainer, null, /* @__PURE__ */ React46.createElement(import_ui39.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(ControlFormLabel, null, (0, import_i18n16.__)("Repeat", "elementor"))), /* @__PURE__ */ React46.createElement(import_ui39.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React46.createElement(ToggleControl, { options: repeatControlOptions })));
2785
3030
  };
2786
3031
 
2787
3032
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
2788
- var React45 = __toESM(require("react"));
3033
+ var React47 = __toESM(require("react"));
3034
+ var import_react27 = require("react");
2789
3035
  var import_editor_props22 = require("@elementor/editor-props");
2790
- var import_icons16 = require("@elementor/icons");
2791
- var import_ui38 = require("@elementor/ui");
3036
+ var import_icons17 = require("@elementor/icons");
3037
+ var import_ui40 = require("@elementor/ui");
2792
3038
  var import_i18n17 = require("@wordpress/i18n");
2793
3039
  var sizeControlOptions = [
2794
3040
  {
2795
3041
  value: "auto",
2796
3042
  label: (0, import_i18n17.__)("Auto", "elementor"),
2797
- renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(import_icons16.LetterAIcon, { fontSize: size }),
3043
+ renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(import_icons17.LetterAIcon, { fontSize: size }),
2798
3044
  showTooltip: true
2799
3045
  },
2800
3046
  {
2801
3047
  value: "cover",
2802
3048
  label: (0, import_i18n17.__)("Cover", "elementor"),
2803
- renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(import_icons16.ArrowsMaximizeIcon, { fontSize: size }),
3049
+ renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(import_icons17.ArrowsMaximizeIcon, { fontSize: size }),
2804
3050
  showTooltip: true
2805
3051
  },
2806
3052
  {
2807
3053
  value: "contain",
2808
3054
  label: (0, import_i18n17.__)("Contain", "elementor"),
2809
- renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(import_icons16.ArrowBarBothIcon, { fontSize: size }),
3055
+ renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(import_icons17.ArrowBarBothIcon, { fontSize: size }),
2810
3056
  showTooltip: true
2811
3057
  },
2812
3058
  {
2813
3059
  value: "custom",
2814
3060
  label: (0, import_i18n17.__)("Custom", "elementor"),
2815
- renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(import_icons16.PencilIcon, { fontSize: size }),
3061
+ renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(import_icons17.PencilIcon, { fontSize: size }),
2816
3062
  showTooltip: true
2817
3063
  }
2818
3064
  ];
@@ -2820,6 +3066,7 @@ var BackgroundImageOverlaySize = () => {
2820
3066
  const backgroundImageScaleContext = useBoundProp(import_editor_props22.backgroundImageSizeScalePropTypeUtil);
2821
3067
  const stringPropContext = useBoundProp(import_editor_props22.stringPropTypeUtil);
2822
3068
  const isCustom = !!backgroundImageScaleContext.value;
3069
+ const rowRef = (0, import_react27.useRef)();
2823
3070
  const handleSizeChange = (size) => {
2824
3071
  if (size === "custom") {
2825
3072
  backgroundImageScaleContext.setValue({ width: null, height: null });
@@ -2827,33 +3074,36 @@ var BackgroundImageOverlaySize = () => {
2827
3074
  stringPropContext.setValue(size);
2828
3075
  }
2829
3076
  };
2830
- return /* @__PURE__ */ React45.createElement(import_ui38.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React45.createElement(PopoverGridContainer, null, /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(ControlFormLabel, null, (0, import_i18n17.__)("Size", "elementor"))), /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React45.createElement(
3077
+ return /* @__PURE__ */ React47.createElement(import_ui40.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React47.createElement(import_ui40.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React47.createElement(PopoverGridContainer, null, /* @__PURE__ */ React47.createElement(import_ui40.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ControlFormLabel, null, (0, import_i18n17.__)("Size", "elementor"))), /* @__PURE__ */ React47.createElement(import_ui40.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React47.createElement(
2831
3078
  ControlToggleButtonGroup,
2832
3079
  {
2833
3080
  exclusive: true,
2834
3081
  items: sizeControlOptions,
2835
- value: backgroundImageScaleContext.value ? "custom" : stringPropContext.value,
2836
- onChange: handleSizeChange
3082
+ onChange: handleSizeChange,
3083
+ disabled: stringPropContext.disabled,
3084
+ value: backgroundImageScaleContext.value ? "custom" : stringPropContext.value
2837
3085
  }
2838
- )))), isCustom ? /* @__PURE__ */ React45.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React45.createElement(PopoverGridContainer, null, /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React45.createElement(
3086
+ )))), isCustom ? /* @__PURE__ */ React47.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React47.createElement(import_ui40.Grid, { item: true, xs: 12, ref: rowRef }, /* @__PURE__ */ React47.createElement(PopoverGridContainer, null, /* @__PURE__ */ React47.createElement(import_ui40.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React47.createElement(
2839
3087
  SizeControl,
2840
3088
  {
2841
- startIcon: /* @__PURE__ */ React45.createElement(import_icons16.ArrowsMoveHorizontalIcon, { fontSize: "tiny" }),
2842
- extendedValues: ["auto"]
3089
+ startIcon: /* @__PURE__ */ React47.createElement(import_icons17.ArrowsMoveHorizontalIcon, { fontSize: "tiny" }),
3090
+ extendedOptions: ["auto"],
3091
+ anchorRef: rowRef
2843
3092
  }
2844
- ))), /* @__PURE__ */ React45.createElement(import_ui38.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React45.createElement(
3093
+ ))), /* @__PURE__ */ React47.createElement(import_ui40.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React47.createElement(
2845
3094
  SizeControl,
2846
3095
  {
2847
- startIcon: /* @__PURE__ */ React45.createElement(import_icons16.ArrowsMoveVerticalIcon, { fontSize: "tiny" }),
2848
- extendedValues: ["auto"]
3096
+ startIcon: /* @__PURE__ */ React47.createElement(import_icons17.ArrowsMoveVerticalIcon, { fontSize: "tiny" }),
3097
+ extendedOptions: ["auto"],
3098
+ anchorRef: rowRef
2849
3099
  }
2850
3100
  )))))) : null);
2851
3101
  };
2852
3102
 
2853
3103
  // src/controls/background-control/background-overlay/use-background-tabs-history.ts
2854
- var import_react19 = require("react");
3104
+ var import_react28 = require("react");
2855
3105
  var import_editor_props23 = require("@elementor/editor-props");
2856
- var import_ui39 = require("@elementor/ui");
3106
+ var import_ui41 = require("@elementor/ui");
2857
3107
  var useBackgroundTabsHistory = ({
2858
3108
  color: initialBackgroundColorOverlay2,
2859
3109
  image: initialBackgroundImageOverlay,
@@ -2871,8 +3121,8 @@ var useBackgroundTabsHistory = ({
2871
3121
  }
2872
3122
  return "image";
2873
3123
  };
2874
- const { getTabsProps, getTabProps, getTabPanelProps } = (0, import_ui39.useTabs)(getCurrentOverlayType());
2875
- const valuesHistory = (0, import_react19.useRef)({
3124
+ const { getTabsProps, getTabProps, getTabPanelProps } = (0, import_ui41.useTabs)(getCurrentOverlayType());
3125
+ const valuesHistory = (0, import_react28.useRef)({
2876
3126
  image: initialBackgroundImageOverlay,
2877
3127
  color: initialBackgroundColorOverlay2,
2878
3128
  gradient: initialBackgroundGradientOverlay2
@@ -2947,7 +3197,7 @@ var backgroundResolutionOptions = [
2947
3197
  ];
2948
3198
  var BackgroundOverlayRepeaterControl = createControl(() => {
2949
3199
  const { propType, value: overlayValues, setValue, disabled } = useBoundProp(import_editor_props24.backgroundOverlayPropTypeUtil);
2950
- return /* @__PURE__ */ React46.createElement(PropProvider, { propType, value: overlayValues, setValue }, /* @__PURE__ */ React46.createElement(
3200
+ return /* @__PURE__ */ React48.createElement(PropProvider, { propType, value: overlayValues, setValue, disabled }, /* @__PURE__ */ React48.createElement(
2951
3201
  Repeater,
2952
3202
  {
2953
3203
  openOnAdd: true,
@@ -2965,7 +3215,7 @@ var BackgroundOverlayRepeaterControl = createControl(() => {
2965
3215
  ));
2966
3216
  });
2967
3217
  var ItemContent2 = ({ anchorEl = null, bind }) => {
2968
- return /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React46.createElement(Content2, { anchorEl }));
3218
+ return /* @__PURE__ */ React48.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React48.createElement(Content2, { anchorEl }));
2969
3219
  };
2970
3220
  var Content2 = ({ anchorEl }) => {
2971
3221
  const { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory({
@@ -2973,27 +3223,27 @@ var Content2 = ({ anchorEl }) => {
2973
3223
  color: initialBackgroundColorOverlay.value,
2974
3224
  gradient: initialBackgroundGradientOverlay.value
2975
3225
  });
2976
- return /* @__PURE__ */ React46.createElement(import_ui40.Box, { sx: { width: "100%" } }, /* @__PURE__ */ React46.createElement(import_ui40.Box, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React46.createElement(
2977
- import_ui40.Tabs,
3226
+ return /* @__PURE__ */ React48.createElement(import_ui42.Box, { sx: { width: "100%" } }, /* @__PURE__ */ React48.createElement(import_ui42.Box, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React48.createElement(
3227
+ import_ui42.Tabs,
2978
3228
  {
2979
3229
  size: "small",
2980
3230
  variant: "fullWidth",
2981
3231
  ...getTabsProps(),
2982
3232
  "aria-label": (0, import_i18n18.__)("Background Overlay", "elementor")
2983
3233
  },
2984
- /* @__PURE__ */ React46.createElement(import_ui40.Tab, { label: (0, import_i18n18.__)("Image", "elementor"), ...getTabProps("image") }),
2985
- /* @__PURE__ */ React46.createElement(import_ui40.Tab, { label: (0, import_i18n18.__)("Gradient", "elementor"), ...getTabProps("gradient") }),
2986
- /* @__PURE__ */ React46.createElement(import_ui40.Tab, { label: (0, import_i18n18.__)("Color", "elementor"), ...getTabProps("color") })
2987
- )), /* @__PURE__ */ React46.createElement(import_ui40.TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React46.createElement(PopoverContent, null, /* @__PURE__ */ React46.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React46.createElement(import_ui40.TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("gradient") }, /* @__PURE__ */ React46.createElement(BackgroundGradientColorControl, null)), /* @__PURE__ */ React46.createElement(import_ui40.TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("color") }, /* @__PURE__ */ React46.createElement(PopoverContent, null, /* @__PURE__ */ React46.createElement(ColorOverlayContent, { anchorEl }))));
3234
+ /* @__PURE__ */ React48.createElement(import_ui42.Tab, { label: (0, import_i18n18.__)("Image", "elementor"), ...getTabProps("image") }),
3235
+ /* @__PURE__ */ React48.createElement(import_ui42.Tab, { label: (0, import_i18n18.__)("Gradient", "elementor"), ...getTabProps("gradient") }),
3236
+ /* @__PURE__ */ React48.createElement(import_ui42.Tab, { label: (0, import_i18n18.__)("Color", "elementor"), ...getTabProps("color") })
3237
+ )), /* @__PURE__ */ React48.createElement(import_ui42.TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React48.createElement(PopoverContent, null, /* @__PURE__ */ React48.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React48.createElement(import_ui42.TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("gradient") }, /* @__PURE__ */ React48.createElement(BackgroundGradientColorControl, null)), /* @__PURE__ */ React48.createElement(import_ui42.TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("color") }, /* @__PURE__ */ React48.createElement(PopoverContent, null, /* @__PURE__ */ React48.createElement(ColorOverlayContent, { anchorEl }))));
2988
3238
  };
2989
3239
  var ItemIcon2 = ({ value }) => {
2990
3240
  switch (value.$$type) {
2991
3241
  case "background-image-overlay":
2992
- return /* @__PURE__ */ React46.createElement(ItemIconImage, { value });
3242
+ return /* @__PURE__ */ React48.createElement(ItemIconImage, { value });
2993
3243
  case "background-color-overlay":
2994
- return /* @__PURE__ */ React46.createElement(ItemIconColor, { value });
3244
+ return /* @__PURE__ */ React48.createElement(ItemIconColor, { value });
2995
3245
  case "background-gradient-overlay":
2996
- return /* @__PURE__ */ React46.createElement(ItemIconGradient, { value });
3246
+ return /* @__PURE__ */ React48.createElement(ItemIconGradient, { value });
2997
3247
  default:
2998
3248
  return null;
2999
3249
  }
@@ -3006,12 +3256,12 @@ var extractColorFrom = (prop) => {
3006
3256
  };
3007
3257
  var ItemIconColor = ({ value: prop }) => {
3008
3258
  const color = extractColorFrom(prop);
3009
- return /* @__PURE__ */ React46.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: color });
3259
+ return /* @__PURE__ */ React48.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: color });
3010
3260
  };
3011
3261
  var ItemIconImage = ({ value }) => {
3012
3262
  const { imageUrl } = useImage(value);
3013
- return /* @__PURE__ */ React46.createElement(
3014
- import_ui40.CardMedia,
3263
+ return /* @__PURE__ */ React48.createElement(
3264
+ import_ui42.CardMedia,
3015
3265
  {
3016
3266
  image: imageUrl,
3017
3267
  sx: (theme) => ({
@@ -3025,49 +3275,49 @@ var ItemIconImage = ({ value }) => {
3025
3275
  };
3026
3276
  var ItemIconGradient = ({ value }) => {
3027
3277
  const gradient = getGradientValue(value);
3028
- return /* @__PURE__ */ React46.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: gradient });
3278
+ return /* @__PURE__ */ React48.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: gradient });
3029
3279
  };
3030
3280
  var ItemLabel2 = ({ value }) => {
3031
3281
  switch (value.$$type) {
3032
3282
  case "background-image-overlay":
3033
- return /* @__PURE__ */ React46.createElement(ItemLabelImage, { value });
3283
+ return /* @__PURE__ */ React48.createElement(ItemLabelImage, { value });
3034
3284
  case "background-color-overlay":
3035
- return /* @__PURE__ */ React46.createElement(ItemLabelColor, { value });
3285
+ return /* @__PURE__ */ React48.createElement(ItemLabelColor, { value });
3036
3286
  case "background-gradient-overlay":
3037
- return /* @__PURE__ */ React46.createElement(ItemLabelGradient, { value });
3287
+ return /* @__PURE__ */ React48.createElement(ItemLabelGradient, { value });
3038
3288
  default:
3039
3289
  return null;
3040
3290
  }
3041
3291
  };
3042
3292
  var ItemLabelColor = ({ value: prop }) => {
3043
3293
  const color = extractColorFrom(prop);
3044
- return /* @__PURE__ */ React46.createElement("span", null, color);
3294
+ return /* @__PURE__ */ React48.createElement("span", null, color);
3045
3295
  };
3046
3296
  var ItemLabelImage = ({ value }) => {
3047
3297
  const { imageTitle } = useImage(value);
3048
- return /* @__PURE__ */ React46.createElement("span", null, imageTitle);
3298
+ return /* @__PURE__ */ React48.createElement("span", null, imageTitle);
3049
3299
  };
3050
3300
  var ItemLabelGradient = ({ value }) => {
3051
3301
  if (value.value.type.value === "linear") {
3052
- return /* @__PURE__ */ React46.createElement("span", null, (0, import_i18n18.__)("Linear Gradient", "elementor"));
3302
+ return /* @__PURE__ */ React48.createElement("span", null, (0, import_i18n18.__)("Linear Gradient", "elementor"));
3053
3303
  }
3054
- return /* @__PURE__ */ React46.createElement("span", null, (0, import_i18n18.__)("Radial Gradient", "elementor"));
3304
+ return /* @__PURE__ */ React48.createElement("span", null, (0, import_i18n18.__)("Radial Gradient", "elementor"));
3055
3305
  };
3056
3306
  var ColorOverlayContent = ({ anchorEl }) => {
3057
3307
  const propContext = useBoundProp(import_editor_props24.backgroundColorOverlayPropTypeUtil);
3058
- return /* @__PURE__ */ React46.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React46.createElement(ColorControl, { anchorEl })));
3308
+ return /* @__PURE__ */ React48.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React48.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React48.createElement(ColorControl, { anchorEl })));
3059
3309
  };
3060
3310
  var ImageOverlayContent = () => {
3061
3311
  const propContext = useBoundProp(import_editor_props24.backgroundImageOverlayPropTypeUtil);
3062
- return /* @__PURE__ */ React46.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React46.createElement(import_ui40.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React46.createElement(import_ui40.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React46.createElement(
3312
+ return /* @__PURE__ */ React48.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React48.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React48.createElement(import_ui42.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React48.createElement(import_ui42.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React48.createElement(
3063
3313
  ImageControl,
3064
3314
  {
3065
3315
  resolutionLabel: (0, import_i18n18.__)("Resolution", "elementor"),
3066
3316
  sizes: backgroundResolutionOptions
3067
3317
  }
3068
- )))), /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React46.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React46.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React46.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React46.createElement(BackgroundImageOverlayAttachment, null)));
3318
+ )))), /* @__PURE__ */ React48.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React48.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React48.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React48.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React48.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React48.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React48.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React48.createElement(BackgroundImageOverlayAttachment, null)));
3069
3319
  };
3070
- var StyledUnstableColorIndicator = (0, import_ui40.styled)(import_ui40.UnstableColorIndicator)(({ theme }) => ({
3320
+ var StyledUnstableColorIndicator = (0, import_ui42.styled)(import_ui42.UnstableColorIndicator)(({ theme }) => ({
3071
3321
  borderRadius: `${theme.shape.borderRadius / 2}px`
3072
3322
  }));
3073
3323
  var useImage = (image) => {
@@ -3103,21 +3353,21 @@ var getGradientValue = (value) => {
3103
3353
  // src/controls/background-control/background-control.tsx
3104
3354
  var BackgroundControl = createControl(() => {
3105
3355
  const propContext = useBoundProp(import_editor_props25.backgroundPropTypeUtil);
3106
- const isUsingNestedProps = (0, import_editor_v1_adapters3.isExperimentActive)("e_v_3_30");
3356
+ const isUsingNestedProps = (0, import_editor_v1_adapters4.isExperimentActive)("e_v_3_30");
3107
3357
  const colorLabel = (0, import_i18n19.__)("Color", "elementor");
3108
- return /* @__PURE__ */ React47.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React47.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React47.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React47.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React47.createElement(import_ui41.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React47.createElement(import_ui41.Grid, { item: true, xs: 6 }, isUsingNestedProps ? /* @__PURE__ */ React47.createElement(ControlLabel, null, colorLabel) : /* @__PURE__ */ React47.createElement(ControlFormLabel, null, colorLabel)), /* @__PURE__ */ React47.createElement(import_ui41.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ColorControl, null)))));
3358
+ return /* @__PURE__ */ React49.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React49.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React49.createElement(import_ui43.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React49.createElement(import_ui43.Grid, { item: true, xs: 6 }, isUsingNestedProps ? /* @__PURE__ */ React49.createElement(ControlLabel, null, colorLabel) : /* @__PURE__ */ React49.createElement(ControlFormLabel, null, colorLabel)), /* @__PURE__ */ React49.createElement(import_ui43.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(ColorControl, null)))));
3109
3359
  });
3110
3360
 
3111
3361
  // src/controls/switch-control.tsx
3112
- var React48 = __toESM(require("react"));
3362
+ var React50 = __toESM(require("react"));
3113
3363
  var import_editor_props26 = require("@elementor/editor-props");
3114
- var import_ui42 = require("@elementor/ui");
3364
+ var import_ui44 = require("@elementor/ui");
3115
3365
  var SwitchControl2 = createControl(() => {
3116
3366
  const { value, setValue, disabled } = useBoundProp(import_editor_props26.booleanPropTypeUtil);
3117
3367
  const handleChange = (event) => {
3118
3368
  setValue(event.target.checked);
3119
3369
  };
3120
- return /* @__PURE__ */ React48.createElement("div", { style: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React48.createElement(import_ui42.Switch, { checked: !!value, onChange: handleChange, size: "small", disabled }));
3370
+ return /* @__PURE__ */ React50.createElement("div", { style: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React50.createElement(import_ui44.Switch, { checked: !!value, onChange: handleChange, size: "small", disabled }));
3121
3371
  });
3122
3372
  // Annotate the CommonJS export names for ESM import in node:
3123
3373
  0 && (module.exports = {
@@ -3133,6 +3383,7 @@ var SwitchControl2 = createControl(() => {
3133
3383
  ControlToggleButtonGroup,
3134
3384
  EqualUnequalSizesControl,
3135
3385
  FontFamilyControl,
3386
+ FontFamilySelector,
3136
3387
  GapControl,
3137
3388
  ImageControl,
3138
3389
  LinkControl,