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