@elementor/editor-controls 0.32.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/index.d.mts +6 -2
  3. package/dist/index.d.ts +6 -2
  4. package/dist/index.js +154 -84
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +152 -82
  7. package/dist/index.mjs.map +1 -1
  8. package/package.json +3 -3
  9. package/src/bound-prop-context/prop-context.tsx +3 -0
  10. package/src/bound-prop-context/prop-key-context.tsx +1 -0
  11. package/src/bound-prop-context/use-bound-prop.ts +1 -0
  12. package/src/components/control-toggle-button-group.tsx +6 -2
  13. package/src/components/popover-content.tsx +4 -2
  14. package/src/components/repeater.tsx +19 -10
  15. package/src/components/text-field-inner-selection.tsx +6 -0
  16. package/src/control-actions/control-actions.tsx +10 -2
  17. package/src/controls/aspect-ratio-control.tsx +14 -6
  18. package/src/controls/background-control/background-control.tsx +16 -19
  19. package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +2 -1
  20. package/src/controls/box-shadow-repeater-control.tsx +2 -1
  21. package/src/controls/color-control.tsx +2 -1
  22. package/src/controls/equal-unequal-sizes-control.tsx +25 -14
  23. package/src/controls/font-family-control/font-family-control.tsx +2 -1
  24. package/src/controls/gap-control.tsx +4 -1
  25. package/src/controls/linked-dimensions-control.tsx +36 -10
  26. package/src/controls/number-control.tsx +2 -1
  27. package/src/controls/select-control.tsx +2 -1
  28. package/src/controls/size-control.tsx +35 -27
  29. package/src/controls/switch-control.tsx +2 -2
  30. package/src/controls/text-area-control.tsx +2 -1
  31. package/src/controls/text-control.tsx +2 -1
  32. package/src/controls/toggle-control.tsx +3 -1
  33. package/src/controls/url-control.tsx +2 -1
package/dist/index.js CHANGED
@@ -99,7 +99,8 @@ var PropProvider = ({
99
99
  value,
100
100
  setValue,
101
101
  propType,
102
- placeholder
102
+ placeholder,
103
+ disabled
103
104
  }) => {
104
105
  return /* @__PURE__ */ React.createElement(
105
106
  PropContext.Provider,
@@ -108,7 +109,8 @@ var PropProvider = ({
108
109
  value,
109
110
  propType,
110
111
  setValue,
111
- placeholder
112
+ placeholder,
113
+ disabled
112
114
  }
113
115
  },
114
116
  children
@@ -370,14 +372,19 @@ var FloatingBarContainer = (0, import_ui3.styled)("span")`
370
372
  .MuiFloatingActionBar-popper:has( .MuiFloatingActionBar-actions:empty ) {
371
373
  display: none;
372
374
  }
375
+
376
+ .MuiFloatingActionBar-popper {
377
+ z-index: 1000;
378
+ }
373
379
  `;
374
380
  function ControlActions({ children }) {
375
381
  const { items } = useControlActions();
376
- if (items.length === 0) {
382
+ const { disabled } = useBoundProp();
383
+ if (items.length === 0 || disabled) {
377
384
  return children;
378
385
  }
379
386
  const menuItems = items.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React7.createElement(MenuItem2, { key: id }));
380
- return /* @__PURE__ */ React7.createElement(FloatingBarContainer, null, /* @__PURE__ */ React7.createElement(import_ui3.UnstableFloatingActionBar, { actions: menuItems }, children));
387
+ return /* @__PURE__ */ React7.createElement(FloatingBarContainer, null, /* @__PURE__ */ React7.createElement(import_ui3.UnstableFloatingActionBar, { actions: menuItems, placement: "bottom-start" }, children));
381
388
  }
382
389
 
383
390
  // src/controls/image-media-control.tsx
@@ -428,7 +435,7 @@ var import_editor_props2 = require("@elementor/editor-props");
428
435
  var import_editor_ui = require("@elementor/editor-ui");
429
436
  var import_ui5 = require("@elementor/ui");
430
437
  var SelectControl = createControl(({ options, onChange }) => {
431
- const { value, setValue } = useBoundProp(import_editor_props2.stringPropTypeUtil);
438
+ const { value, setValue, disabled } = useBoundProp(import_editor_props2.stringPropTypeUtil);
432
439
  const handleChange = (event) => {
433
440
  const newValue = event.target.value || null;
434
441
  onChange?.(newValue, value);
@@ -442,6 +449,7 @@ var SelectControl = createControl(({ options, onChange }) => {
442
449
  size: "tiny",
443
450
  value: value ?? "",
444
451
  onChange: handleChange,
452
+ disabled,
445
453
  fullWidth: true
446
454
  },
447
455
  options.map(({ label, ...props }) => /* @__PURE__ */ React9.createElement(import_editor_ui.MenuListItem, { key: props.value, ...props, value: props.value ?? "" }, label))
@@ -463,13 +471,14 @@ var React11 = __toESM(require("react"));
463
471
  var import_editor_props4 = require("@elementor/editor-props");
464
472
  var import_ui7 = require("@elementor/ui");
465
473
  var TextControl = createControl(({ placeholder }) => {
466
- const { value, setValue } = useBoundProp(import_editor_props4.stringPropTypeUtil);
474
+ const { value, setValue, disabled } = useBoundProp(import_editor_props4.stringPropTypeUtil);
467
475
  const handleChange = (event) => setValue(event.target.value);
468
476
  return /* @__PURE__ */ React11.createElement(ControlActions, null, /* @__PURE__ */ React11.createElement(
469
477
  import_ui7.TextField,
470
478
  {
471
479
  size: "tiny",
472
480
  fullWidth: true,
481
+ disabled,
473
482
  value: value ?? "",
474
483
  onChange: handleChange,
475
484
  placeholder
@@ -482,7 +491,7 @@ var React12 = __toESM(require("react"));
482
491
  var import_editor_props5 = require("@elementor/editor-props");
483
492
  var import_ui8 = require("@elementor/ui");
484
493
  var TextAreaControl = createControl(({ placeholder }) => {
485
- const { value, setValue } = useBoundProp(import_editor_props5.stringPropTypeUtil);
494
+ const { value, setValue, disabled } = useBoundProp(import_editor_props5.stringPropTypeUtil);
486
495
  const handleChange = (event) => {
487
496
  setValue(event.target.value);
488
497
  };
@@ -493,6 +502,7 @@ var TextAreaControl = createControl(({ placeholder }) => {
493
502
  multiline: true,
494
503
  fullWidth: true,
495
504
  minRows: 5,
505
+ disabled,
496
506
  value: value ?? "",
497
507
  onChange: handleChange,
498
508
  placeholder
@@ -521,7 +531,8 @@ var TextFieldInnerSelection = (0, import_react6.forwardRef)(
521
531
  onKeyDown,
522
532
  onKeyUp,
523
533
  endAdornment,
524
- startAdornment
534
+ startAdornment,
535
+ disabled
525
536
  }, ref) => {
526
537
  return /* @__PURE__ */ React13.createElement(
527
538
  import_ui9.TextField,
@@ -531,6 +542,7 @@ var TextFieldInnerSelection = (0, import_react6.forwardRef)(
531
542
  fullWidth: true,
532
543
  type,
533
544
  value,
545
+ disabled,
534
546
  onChange,
535
547
  onKeyDown,
536
548
  onKeyUp,
@@ -547,7 +559,8 @@ var TextFieldInnerSelection = (0, import_react6.forwardRef)(
547
559
  var SelectionEndAdornment = ({
548
560
  options,
549
561
  onClick,
550
- value
562
+ value,
563
+ disabled
551
564
  }) => {
552
565
  const popupState = (0, import_ui9.usePopupState)({
553
566
  variant: "popover",
@@ -562,6 +575,7 @@ var SelectionEndAdornment = ({
562
575
  {
563
576
  size: "small",
564
577
  color: "secondary",
578
+ disabled,
565
579
  sx: { font: "inherit", minWidth: "initial", textTransform: "uppercase" },
566
580
  ...(0, import_ui9.bindTrigger)(popupState)
567
581
  },
@@ -608,7 +622,7 @@ var defaultUnit = "px";
608
622
  var defaultSize = NaN;
609
623
  var SizeControl = createControl(
610
624
  ({ units: units2 = defaultUnits, extendedValues = [], placeholder, startIcon }) => {
611
- const { value: sizeValue, setValue: setSizeValue, restoreValue } = useBoundProp(import_editor_props6.sizePropTypeUtil);
625
+ const { value: sizeValue, setValue: setSizeValue, restoreValue, disabled } = useBoundProp(import_editor_props6.sizePropTypeUtil);
612
626
  const [state, setState] = useSyncExternalState({
613
627
  external: sizeValue,
614
628
  setExternal: setSizeValue,
@@ -632,6 +646,7 @@ var SizeControl = createControl(
632
646
  return /* @__PURE__ */ React14.createElement(
633
647
  Input,
634
648
  {
649
+ disabled,
635
650
  size: state.size,
636
651
  unit: state.unit,
637
652
  placeholder,
@@ -675,7 +690,8 @@ var SizeInput = ({
675
690
  startIcon,
676
691
  onBlur,
677
692
  size,
678
- unit
693
+ unit,
694
+ disabled
679
695
  }) => {
680
696
  const unitInputBufferRef = (0, import_react8.useRef)("");
681
697
  const handleKeyUp = (event) => {
@@ -692,26 +708,25 @@ var SizeInput = ({
692
708
  handleUnitChange(matchedUnit);
693
709
  }
694
710
  };
695
- return /* @__PURE__ */ React14.createElement(ControlActions, null, /* @__PURE__ */ React14.createElement(
711
+ return /* @__PURE__ */ React14.createElement(ControlActions, null, /* @__PURE__ */ React14.createElement(import_ui10.Box, null, /* @__PURE__ */ React14.createElement(
696
712
  TextFieldInnerSelection,
697
713
  {
714
+ disabled,
698
715
  endAdornment: /* @__PURE__ */ React14.createElement(
699
716
  SelectionEndAdornment,
700
717
  {
718
+ disabled,
701
719
  options: units2,
702
720
  onClick: handleUnitChange,
703
721
  value: unit ?? defaultUnit
704
722
  }
705
723
  ),
706
724
  placeholder,
707
- startAdornment: startIcon ? /* @__PURE__ */ React14.createElement(import_ui10.InputAdornment, { position: "start" }, startIcon) : void 0,
725
+ startAdornment: startIcon ? /* @__PURE__ */ React14.createElement(import_ui10.InputAdornment, { position: "start", disabled }, startIcon) : void 0,
708
726
  type: "number",
709
727
  value: Number.isNaN(size) ? "" : size,
710
728
  onChange: handleSizeChange,
711
- onBlur: (event) => {
712
- unitInputBufferRef.current = "";
713
- onBlur?.(event);
714
- },
729
+ onBlur,
715
730
  onKeyDown: (event) => {
716
731
  if (RESTRICTED_INPUT_KEYS.includes(event.key)) {
717
732
  event.preventDefault();
@@ -719,7 +734,7 @@ var SizeInput = ({
719
734
  },
720
735
  onKeyUp: handleKeyUp
721
736
  }
722
- ));
737
+ )));
723
738
  };
724
739
 
725
740
  // src/controls/stroke-control.tsx
@@ -739,7 +754,7 @@ var import_editor_props7 = require("@elementor/editor-props");
739
754
  var import_ui12 = require("@elementor/ui");
740
755
  var ColorControl = createControl(
741
756
  ({ propTypeUtil = import_editor_props7.colorPropTypeUtil, anchorEl, slotProps = {}, ...props }) => {
742
- const { value, setValue } = useBoundProp(propTypeUtil);
757
+ const { value, setValue, disabled } = useBoundProp(propTypeUtil);
743
758
  const handleChange = (selectedColor) => {
744
759
  setValue(selectedColor || null);
745
760
  };
@@ -751,6 +766,7 @@ var ColorControl = createControl(
751
766
  value: value ?? "",
752
767
  onChange: handleChange,
753
768
  ...props,
769
+ disabled,
754
770
  slotProps: {
755
771
  ...slotProps,
756
772
  colorPicker: {
@@ -787,7 +803,7 @@ var import_i18n5 = require("@wordpress/i18n");
787
803
  // src/components/popover-content.tsx
788
804
  var React18 = __toESM(require("react"));
789
805
  var import_ui14 = require("@elementor/ui");
790
- var PopoverContent = ({ alignItems, gap = 1.5, p, children }) => /* @__PURE__ */ React18.createElement(import_ui14.Stack, { alignItems, gap, p }, children);
806
+ var PopoverContent = ({ alignItems, gap = 1.5, p, pt, pb, children }) => /* @__PURE__ */ React18.createElement(import_ui14.Stack, { alignItems, gap, p, pt, pb }, children);
791
807
 
792
808
  // src/components/popover-grid-container.tsx
793
809
  var React19 = __toESM(require("react"));
@@ -911,6 +927,7 @@ var EMPTY_OPEN_ITEM = -1;
911
927
  var Repeater = ({
912
928
  label,
913
929
  itemSettings,
930
+ disabled = false,
914
931
  openOnAdd = false,
915
932
  addToBottom = false,
916
933
  values: repeaterValues = [],
@@ -964,8 +981,8 @@ var Repeater = ({
964
981
  setItems(
965
982
  items.map((value, pos) => {
966
983
  if (pos === index) {
967
- const { disabled, ...rest } = value;
968
- return { ...rest, ...disabled ? {} : { disabled: true } };
984
+ const { disabled: propDisabled, ...rest } = value;
985
+ return { ...rest, ...propDisabled ? {} : { disabled: true } };
969
986
  }
970
987
  return value;
971
988
  })
@@ -980,6 +997,7 @@ var Repeater = ({
980
997
  });
981
998
  });
982
999
  };
1000
+ const ItemWrapper = disabled ? React23.Fragment : SortableItem;
983
1001
  return /* @__PURE__ */ React23.createElement(SectionContent, null, /* @__PURE__ */ React23.createElement(
984
1002
  import_ui17.Stack,
985
1003
  {
@@ -994,8 +1012,9 @@ var Repeater = ({
994
1012
  /* @__PURE__ */ React23.createElement(
995
1013
  import_ui17.IconButton,
996
1014
  {
997
- sx: { ml: "auto" },
998
1015
  size: SIZE,
1016
+ sx: { ml: "auto" },
1017
+ disabled,
999
1018
  onClick: addRepeaterItem,
1000
1019
  "aria-label": (0, import_i18n4.__)("Add item", "elementor")
1001
1020
  },
@@ -1006,10 +1025,11 @@ var Repeater = ({
1006
1025
  if (!value) {
1007
1026
  return null;
1008
1027
  }
1009
- return /* @__PURE__ */ React23.createElement(SortableItem, { id: key, key: `sortable-${key}` }, /* @__PURE__ */ React23.createElement(
1028
+ return /* @__PURE__ */ React23.createElement(ItemWrapper, { id: key, key: `sortable-${key}` }, /* @__PURE__ */ React23.createElement(
1010
1029
  RepeaterItem,
1011
1030
  {
1012
- disabled: value?.disabled,
1031
+ disabled,
1032
+ propDisabled: value?.disabled,
1013
1033
  label: /* @__PURE__ */ React23.createElement(RepeaterItemLabelSlot, { value }, /* @__PURE__ */ React23.createElement(itemSettings.Label, { value })),
1014
1034
  startIcon: /* @__PURE__ */ React23.createElement(RepeaterItemIconSlot, { value }, /* @__PURE__ */ React23.createElement(itemSettings.Icon, { value })),
1015
1035
  removeItem: () => removeRepeaterItem(index),
@@ -1024,23 +1044,25 @@ var Repeater = ({
1024
1044
  };
1025
1045
  var RepeaterItem = ({
1026
1046
  label,
1027
- disabled,
1047
+ propDisabled,
1028
1048
  startIcon,
1029
1049
  children,
1030
1050
  removeItem,
1031
1051
  duplicateItem,
1032
1052
  toggleDisableItem,
1033
1053
  openOnMount,
1034
- onOpen
1054
+ onOpen,
1055
+ disabled
1035
1056
  }) => {
1036
1057
  const [anchorEl, setAnchorEl] = (0, import_react10.useState)(null);
1037
1058
  const { popoverState, popoverProps, ref, setRef } = usePopover(openOnMount, onOpen);
1038
1059
  const duplicateLabel = (0, import_i18n4.__)("Duplicate", "elementor");
1039
- const toggleLabel = disabled ? (0, import_i18n4.__)("Show", "elementor") : (0, import_i18n4.__)("Hide", "elementor");
1060
+ const toggleLabel = propDisabled ? (0, import_i18n4.__)("Show", "elementor") : (0, import_i18n4.__)("Hide", "elementor");
1040
1061
  const removeLabel = (0, import_i18n4.__)("Remove", "elementor");
1041
1062
  return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(
1042
1063
  import_ui17.UnstableTag,
1043
1064
  {
1065
+ disabled,
1044
1066
  label,
1045
1067
  showActionsOnHover: true,
1046
1068
  fullWidth: true,
@@ -1049,7 +1071,7 @@ var RepeaterItem = ({
1049
1071
  "aria-label": (0, import_i18n4.__)("Open item", "elementor"),
1050
1072
  ...(0, import_ui17.bindTrigger)(popoverState),
1051
1073
  startIcon,
1052
- 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 }, disabled ? /* @__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 }))))
1074
+ actions: /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(import_ui17.Tooltip, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React23.createElement(import_ui17.IconButton, { size: SIZE, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React23.createElement(import_icons3.CopyIcon, { fontSize: SIZE }))), /* @__PURE__ */ React23.createElement(import_ui17.Tooltip, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React23.createElement(import_ui17.IconButton, { size: SIZE, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React23.createElement(import_icons3.EyeOffIcon, { fontSize: SIZE }) : /* @__PURE__ */ React23.createElement(import_icons3.EyeIcon, { fontSize: SIZE }))), /* @__PURE__ */ React23.createElement(import_ui17.Tooltip, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React23.createElement(import_ui17.IconButton, { size: SIZE, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React23.createElement(import_icons3.XIcon, { fontSize: SIZE }))))
1053
1075
  }
1054
1076
  ), /* @__PURE__ */ React23.createElement(
1055
1077
  import_ui17.Popover,
@@ -1088,11 +1110,12 @@ var usePopover = (openOnMount, onOpen) => {
1088
1110
 
1089
1111
  // src/controls/box-shadow-repeater-control.tsx
1090
1112
  var BoxShadowRepeaterControl = createControl(() => {
1091
- const { propType, value, setValue } = useBoundProp(import_editor_props9.boxShadowPropTypeUtil);
1113
+ const { propType, value, setValue, disabled } = useBoundProp(import_editor_props9.boxShadowPropTypeUtil);
1092
1114
  return /* @__PURE__ */ React24.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React24.createElement(
1093
1115
  Repeater,
1094
1116
  {
1095
1117
  openOnAdd: true,
1118
+ disabled,
1096
1119
  values: value ?? [],
1097
1120
  setValues: setValue,
1098
1121
  label: (0, import_i18n5.__)("Box shadow", "elementor"),
@@ -1214,7 +1237,8 @@ var ControlToggleButtonGroup = ({
1214
1237
  items,
1215
1238
  maxItems,
1216
1239
  exclusive = false,
1217
- fullWidth = false
1240
+ fullWidth = false,
1241
+ disabled
1218
1242
  }) => {
1219
1243
  const shouldSliceItems = exclusive && maxItems !== void 0 && items.length > maxItems;
1220
1244
  const menuItems = shouldSliceItems ? items.slice(maxItems - 1) : [];
@@ -1229,13 +1253,14 @@ var ControlToggleButtonGroup = ({
1229
1253
  const templateColumnsSuffix = isOffLimits ? "auto" : "";
1230
1254
  return `repeat(${itemsCount}, minmax(0, 25%)) ${templateColumnsSuffix}`;
1231
1255
  }, [menuItems?.length, fixedItems.length]);
1232
- return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement(
1256
+ return /* @__PURE__ */ React26.createElement(ControlActions, null, /* @__PURE__ */ React26.createElement(
1233
1257
  StyledToggleButtonGroup,
1234
1258
  {
1235
1259
  justify,
1236
1260
  value,
1237
1261
  onChange: handleChange,
1238
1262
  exclusive,
1263
+ disabled,
1239
1264
  sx: {
1240
1265
  direction: isRtl ? "rtl /* @noflip */" : "ltr /* @noflip */",
1241
1266
  display: "grid",
@@ -1363,7 +1388,7 @@ var ToggleControl = createControl(
1363
1388
  exclusive = true,
1364
1389
  maxItems
1365
1390
  }) => {
1366
- const { value, setValue, placeholder } = useBoundProp(import_editor_props10.stringPropTypeUtil);
1391
+ const { value, setValue, placeholder, disabled } = useBoundProp(import_editor_props10.stringPropTypeUtil);
1367
1392
  const exclusiveValues = options.filter((option) => option.exclusive).map((option) => option.value);
1368
1393
  const handleNonExclusiveToggle = (selectedValues) => {
1369
1394
  const newSelectedValue = selectedValues[selectedValues.length - 1];
@@ -1383,6 +1408,7 @@ var ToggleControl = createControl(
1383
1408
  ...toggleButtonGroupProps,
1384
1409
  value: value ?? placeholder ?? null,
1385
1410
  onChange: setValue,
1411
+ disabled,
1386
1412
  exclusive: true
1387
1413
  }
1388
1414
  ) : /* @__PURE__ */ React27.createElement(
@@ -1391,6 +1417,7 @@ var ToggleControl = createControl(
1391
1417
  ...toggleButtonGroupProps,
1392
1418
  value: (value ?? placeholder)?.split(" ") ?? [],
1393
1419
  onChange: handleNonExclusiveToggle,
1420
+ disabled,
1394
1421
  exclusive: false
1395
1422
  }
1396
1423
  );
@@ -1411,7 +1438,7 @@ var NumberControl = createControl(
1411
1438
  step = 1,
1412
1439
  shouldForceInt = false
1413
1440
  }) => {
1414
- const { value, setValue } = useBoundProp(import_editor_props11.numberPropTypeUtil);
1441
+ const { value, setValue, disabled } = useBoundProp(import_editor_props11.numberPropTypeUtil);
1415
1442
  const handleChange = (event) => {
1416
1443
  const eventValue = event.target.value;
1417
1444
  if (isEmptyOrNaN(eventValue)) {
@@ -1427,6 +1454,7 @@ var NumberControl = createControl(
1427
1454
  size: "tiny",
1428
1455
  type: "number",
1429
1456
  fullWidth: true,
1457
+ disabled,
1430
1458
  value: isEmptyOrNaN(value) ? "" : value,
1431
1459
  onChange: handleChange,
1432
1460
  placeholder,
@@ -1445,6 +1473,7 @@ var NumberControl = createControl(
1445
1473
  var React30 = __toESM(require("react"));
1446
1474
  var import_react12 = require("react");
1447
1475
  var import_editor_props12 = require("@elementor/editor-props");
1476
+ var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
1448
1477
  var import_ui23 = require("@elementor/ui");
1449
1478
  var import_i18n6 = require("@wordpress/i18n");
1450
1479
 
@@ -1479,9 +1508,10 @@ function EqualUnequalSizesControl({
1479
1508
  const {
1480
1509
  propType: multiSizePropType,
1481
1510
  value: multiSizeValue,
1482
- setValue: setMultiSizeValue
1511
+ setValue: setMultiSizeValue,
1512
+ disabled: multiSizeDisabled
1483
1513
  } = useBoundProp(multiSizePropTypeUtil);
1484
- const { value: sizeValue, setValue: setSizeValue } = useBoundProp(import_editor_props12.sizePropTypeUtil);
1514
+ const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(import_editor_props12.sizePropTypeUtil);
1485
1515
  const splitEqualValue = () => {
1486
1516
  if (!sizeValue) {
1487
1517
  return null;
@@ -1517,7 +1547,8 @@ function EqualUnequalSizesControl({
1517
1547
  sx: { marginLeft: "auto" },
1518
1548
  ...(0, import_ui23.bindToggle)(popupState),
1519
1549
  selected: popupState.isOpen,
1520
- "aria-label": tooltipLabel
1550
+ "aria-label": tooltipLabel,
1551
+ disabled: multiSizeDisabled || sizeDisabled
1521
1552
  },
1522
1553
  icon
1523
1554
  ))))), /* @__PURE__ */ React30.createElement(
@@ -1538,14 +1569,18 @@ function EqualUnequalSizesControl({
1538
1569
  paper: { sx: { mt: 0.5, width: controlRef.current?.getBoundingClientRect().width } }
1539
1570
  }
1540
1571
  },
1541
- /* @__PURE__ */ React30.createElement(PropProvider, { propType: multiSizePropType, value: getMultiSizeValues(), setValue: setNestedProp }, /* @__PURE__ */ React30.createElement(PopoverContent, { p: 1.5 }, /* @__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] }))))
1572
+ /* @__PURE__ */ React30.createElement(PropProvider, { propType: multiSizePropType, value: getMultiSizeValues(), setValue: setNestedProp }, /* @__PURE__ */ React30.createElement(PopoverContent, { p: 1.5, pt: 2.5, pb: 3 }, /* @__PURE__ */ React30.createElement(PopoverGridContainer, null, /* @__PURE__ */ React30.createElement(MultiSizeValueControl, { item: items[0] }), /* @__PURE__ */ React30.createElement(MultiSizeValueControl, { item: items[1] })), /* @__PURE__ */ React30.createElement(PopoverGridContainer, null, /* @__PURE__ */ React30.createElement(MultiSizeValueControl, { item: items[2] }), /* @__PURE__ */ React30.createElement(MultiSizeValueControl, { item: items[3] }))))
1542
1573
  ));
1543
1574
  }
1544
- var MultiSizeValueControl = ({ item }) => /* @__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 }, /* @__PURE__ */ React30.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React30.createElement(import_ui23.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React30.createElement(SizeControl, { startIcon: item.icon })))));
1575
+ var MultiSizeValueControl = ({ item }) => {
1576
+ const isUsingNestedProps = (0, import_editor_v1_adapters.isExperimentActive)("e_v_3_30");
1577
+ return /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React30.createElement(import_ui23.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(import_ui23.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React30.createElement(import_ui23.Grid, { item: true, xs: 12 }, isUsingNestedProps ? /* @__PURE__ */ React30.createElement(ControlLabel, null, item.label) : /* @__PURE__ */ React30.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React30.createElement(import_ui23.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React30.createElement(SizeControl, { startIcon: item.icon })))));
1578
+ };
1545
1579
 
1546
1580
  // src/controls/linked-dimensions-control.tsx
1547
1581
  var React31 = __toESM(require("react"));
1548
1582
  var import_editor_props13 = require("@elementor/editor-props");
1583
+ var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
1549
1584
  var import_icons5 = require("@elementor/icons");
1550
1585
  var import_ui24 = require("@elementor/ui");
1551
1586
  var import_i18n7 = require("@wordpress/i18n");
@@ -1555,13 +1590,15 @@ var LinkedDimensionsControl = createControl(
1555
1590
  isSiteRtl = false,
1556
1591
  extendedValues
1557
1592
  }) => {
1593
+ const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(import_editor_props13.sizePropTypeUtil);
1558
1594
  const {
1559
1595
  value: dimensionsValue,
1560
1596
  setValue: setDimensionsValue,
1561
- propType
1597
+ propType,
1598
+ disabled: dimensionsDisabled
1562
1599
  } = useBoundProp(import_editor_props13.dimensionsPropTypeUtil);
1563
- const { value: sizeValue, setValue: setSizeValue } = useBoundProp(import_editor_props13.sizePropTypeUtil);
1564
1600
  const isLinked = !dimensionsValue && !sizeValue ? true : !!sizeValue;
1601
+ const isUsingNestedProps = (0, import_editor_v1_adapters2.isExperimentActive)("e_v_3_30");
1565
1602
  const onLinkToggle = () => {
1566
1603
  if (!isLinked) {
1567
1604
  setSizeValue(dimensionsValue["block-start"]?.value ?? null);
@@ -1579,7 +1616,7 @@ var LinkedDimensionsControl = createControl(
1579
1616
  const LinkedIcon = isLinked ? import_icons5.LinkIcon : import_icons5.DetachIcon;
1580
1617
  const linkedLabel = (0, import_i18n7.__)("Link %s", "elementor").replace("%s", tooltipLabel);
1581
1618
  const unlinkedLabel = (0, import_i18n7.__)("Unlink %s", "elementor").replace("%s", tooltipLabel);
1582
- return /* @__PURE__ */ React31.createElement(PropProvider, { propType, value: dimensionsValue, setValue: setDimensionsValue }, /* @__PURE__ */ React31.createElement(import_ui24.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(ControlLabel, null, label), /* @__PURE__ */ React31.createElement(import_ui24.Tooltip, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React31.createElement(
1619
+ return /* @__PURE__ */ React31.createElement(PropProvider, { propType, value: dimensionsValue, setValue: setDimensionsValue }, /* @__PURE__ */ React31.createElement(import_ui24.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, isUsingNestedProps ? /* @__PURE__ */ React31.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React31.createElement(ControlLabel, null, label), /* @__PURE__ */ React31.createElement(import_ui24.Tooltip, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React31.createElement(
1583
1620
  import_ui24.ToggleButton,
1584
1621
  {
1585
1622
  "aria-label": isLinked ? unlinkedLabel : linkedLabel,
@@ -1587,10 +1624,11 @@ var LinkedDimensionsControl = createControl(
1587
1624
  value: "check",
1588
1625
  selected: isLinked,
1589
1626
  sx: { marginLeft: "auto" },
1590
- onChange: onLinkToggle
1627
+ onChange: onLinkToggle,
1628
+ disabled: sizeDisabled || dimensionsDisabled
1591
1629
  },
1592
1630
  /* @__PURE__ */ React31.createElement(LinkedIcon, { fontSize: "tiny" })
1593
- ))), /* @__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(ControlFormLabel, null, (0, import_i18n7.__)("Top", "elementor"))), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1631
+ ))), /* @__PURE__ */ React31.createElement(import_ui24.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Label, { bind: "block-start", label: (0, import_i18n7.__)("Top", "elementor") })), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1594
1632
  Control3,
1595
1633
  {
1596
1634
  bind: "block-start",
@@ -1598,7 +1636,13 @@ var LinkedDimensionsControl = createControl(
1598
1636
  isLinked,
1599
1637
  extendedValues
1600
1638
  }
1601
- ))), /* @__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(ControlFormLabel, null, isSiteRtl ? (0, import_i18n7.__)("Left", "elementor") : (0, import_i18n7.__)("Right", "elementor"))), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1639
+ ))), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1640
+ Label,
1641
+ {
1642
+ bind: "inline-end",
1643
+ label: isSiteRtl ? (0, import_i18n7.__)("Left", "elementor") : (0, import_i18n7.__)("Right", "elementor")
1644
+ }
1645
+ )), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1602
1646
  Control3,
1603
1647
  {
1604
1648
  bind: "inline-end",
@@ -1606,7 +1650,7 @@ var LinkedDimensionsControl = createControl(
1606
1650
  isLinked,
1607
1651
  extendedValues
1608
1652
  }
1609
- )))), /* @__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(ControlFormLabel, null, (0, import_i18n7.__)("Bottom", "elementor"))), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1653
+ )))), /* @__PURE__ */ React31.createElement(import_ui24.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Label, { bind: "block-end", label: (0, import_i18n7.__)("Bottom", "elementor") })), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1610
1654
  Control3,
1611
1655
  {
1612
1656
  bind: "block-end",
@@ -1614,7 +1658,13 @@ var LinkedDimensionsControl = createControl(
1614
1658
  isLinked,
1615
1659
  extendedValues
1616
1660
  }
1617
- ))), /* @__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(ControlFormLabel, null, isSiteRtl ? (0, import_i18n7.__)("Right", "elementor") : (0, import_i18n7.__)("Left", "elementor"))), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1661
+ ))), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1662
+ Label,
1663
+ {
1664
+ bind: "inline-start",
1665
+ label: isSiteRtl ? (0, import_i18n7.__)("Right", "elementor") : (0, import_i18n7.__)("Left", "elementor")
1666
+ }
1667
+ )), /* @__PURE__ */ React31.createElement(import_ui24.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(
1618
1668
  Control3,
1619
1669
  {
1620
1670
  bind: "inline-start",
@@ -1636,6 +1686,13 @@ var Control3 = ({
1636
1686
  }
1637
1687
  return /* @__PURE__ */ React31.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React31.createElement(SizeControl, { startIcon, extendedValues }));
1638
1688
  };
1689
+ var Label = ({ label, bind }) => {
1690
+ const isUsingNestedProps = (0, import_editor_v1_adapters2.isExperimentActive)("e_v_3_30");
1691
+ if (!isUsingNestedProps) {
1692
+ return /* @__PURE__ */ React31.createElement(ControlFormLabel, null, label);
1693
+ }
1694
+ return /* @__PURE__ */ React31.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React31.createElement(ControlLabel, null, label));
1695
+ };
1639
1696
 
1640
1697
  // src/controls/font-family-control/font-family-control.tsx
1641
1698
  var React32 = __toESM(require("react"));
@@ -1673,7 +1730,7 @@ var enqueueFont = (fontFamily, context = "editor") => {
1673
1730
  var SIZE2 = "tiny";
1674
1731
  var FontFamilyControl = createControl(({ fontFamilies }) => {
1675
1732
  const [searchValue, setSearchValue] = (0, import_react13.useState)("");
1676
- const { value: fontFamily, setValue: setFontFamily } = useBoundProp(import_editor_props14.stringPropTypeUtil);
1733
+ const { value: fontFamily, setValue: setFontFamily, disabled } = useBoundProp(import_editor_props14.stringPropTypeUtil);
1677
1734
  const popoverState = (0, import_ui25.usePopupState)({ variant: "popover" });
1678
1735
  const filteredFontFamilies = useFilteredFontFamilies(fontFamilies, searchValue);
1679
1736
  const handleSearch = (event) => {
@@ -1690,7 +1747,8 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
1690
1747
  label: fontFamily,
1691
1748
  endIcon: /* @__PURE__ */ React32.createElement(import_icons6.ChevronDownIcon, { fontSize: "tiny" }),
1692
1749
  ...(0, import_ui25.bindTrigger)(popoverState),
1693
- fullWidth: true
1750
+ fullWidth: true,
1751
+ disabled
1694
1752
  }
1695
1753
  )), /* @__PURE__ */ React32.createElement(
1696
1754
  import_ui25.Popover,
@@ -1892,7 +1950,7 @@ var React33 = __toESM(require("react"));
1892
1950
  var import_editor_props15 = require("@elementor/editor-props");
1893
1951
  var import_ui26 = require("@elementor/ui");
1894
1952
  var UrlControl = createControl(({ placeholder }) => {
1895
- const { value, setValue } = useBoundProp(import_editor_props15.urlPropTypeUtil);
1953
+ const { value, setValue, disabled } = useBoundProp(import_editor_props15.urlPropTypeUtil);
1896
1954
  const handleChange = (event) => setValue(event.target.value);
1897
1955
  return /* @__PURE__ */ React33.createElement(ControlActions, null, /* @__PURE__ */ React33.createElement(
1898
1956
  import_ui26.TextField,
@@ -1900,6 +1958,7 @@ var UrlControl = createControl(({ placeholder }) => {
1900
1958
  size: "tiny",
1901
1959
  fullWidth: true,
1902
1960
  value: value ?? "",
1961
+ disabled,
1903
1962
  onChange: handleChange,
1904
1963
  placeholder
1905
1964
  }
@@ -2221,9 +2280,10 @@ var GapControl = createControl(({ label }) => {
2221
2280
  const {
2222
2281
  value: directionValue,
2223
2282
  setValue: setDirectionValue,
2224
- propType
2283
+ propType,
2284
+ disabled: directionDisabled
2225
2285
  } = useBoundProp(import_editor_props17.layoutDirectionPropTypeUtil);
2226
- const { value: sizeValue, setValue: setSizeValue } = useBoundProp(import_editor_props17.sizePropTypeUtil);
2286
+ const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(import_editor_props17.sizePropTypeUtil);
2227
2287
  const isLinked = !directionValue && !sizeValue ? true : !!sizeValue;
2228
2288
  const onLinkToggle = () => {
2229
2289
  if (!isLinked) {
@@ -2248,7 +2308,8 @@ var GapControl = createControl(({ label }) => {
2248
2308
  value: "check",
2249
2309
  selected: isLinked,
2250
2310
  sx: { marginLeft: "auto" },
2251
- onChange: onLinkToggle
2311
+ onChange: onLinkToggle,
2312
+ disabled: sizeDisabled || directionDisabled
2252
2313
  },
2253
2314
  /* @__PURE__ */ React36.createElement(LinkedIcon, { fontSize: "tiny" })
2254
2315
  ))), /* @__PURE__ */ React36.createElement(import_ui29.Stack, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React36.createElement(import_ui29.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React36.createElement(import_ui29.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(ControlFormLabel, null, (0, import_i18n10.__)("Column", "elementor"))), /* @__PURE__ */ React36.createElement(import_ui29.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(Control4, { bind: "column", isLinked }))), /* @__PURE__ */ React36.createElement(import_ui29.Grid, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React36.createElement(import_ui29.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(ControlFormLabel, null, (0, import_i18n10.__)("Row", "elementor"))), /* @__PURE__ */ React36.createElement(import_ui29.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(Control4, { bind: "row", isLinked })))));
@@ -2265,6 +2326,7 @@ var React37 = __toESM(require("react"));
2265
2326
  var import_react16 = require("react");
2266
2327
  var import_editor_props18 = require("@elementor/editor-props");
2267
2328
  var import_editor_ui4 = require("@elementor/editor-ui");
2329
+ var import_icons10 = require("@elementor/icons");
2268
2330
  var import_ui30 = require("@elementor/ui");
2269
2331
  var import_i18n11 = require("@wordpress/i18n");
2270
2332
  var RATIO_OPTIONS = [
@@ -2279,7 +2341,7 @@ var RATIO_OPTIONS = [
2279
2341
  ];
2280
2342
  var CUSTOM_RATIO = "custom";
2281
2343
  var AspectRatioControl = createControl(({ label }) => {
2282
- const { value: aspectRatioValue, setValue: setAspectRatioValue } = useBoundProp(import_editor_props18.stringPropTypeUtil);
2344
+ const { value: aspectRatioValue, setValue: setAspectRatioValue, disabled } = useBoundProp(import_editor_props18.stringPropTypeUtil);
2283
2345
  const isCustomSelected = aspectRatioValue && !RATIO_OPTIONS.some((option) => option.value === aspectRatioValue);
2284
2346
  const [initialWidth, initialHeight] = isCustomSelected ? aspectRatioValue.split("/") : ["", ""];
2285
2347
  const [isCustom, setIsCustom] = (0, import_react16.useState)(isCustomSelected);
@@ -2312,12 +2374,13 @@ var AspectRatioControl = createControl(({ label }) => {
2312
2374
  setAspectRatioValue(`${customWidth}/${newHeight}`);
2313
2375
  }
2314
2376
  };
2315
- return /* @__PURE__ */ React37.createElement(import_ui30.Stack, { direction: "column", gap: 2 }, /* @__PURE__ */ React37.createElement(import_ui30.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(ControlLabel, null, label)), /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(
2377
+ return /* @__PURE__ */ React37.createElement(import_ui30.Stack, { direction: "column", pt: 2, gap: 2 }, /* @__PURE__ */ React37.createElement(import_ui30.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(ControlLabel, null, label)), /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(
2316
2378
  import_ui30.Select,
2317
2379
  {
2318
- sx: { overflow: "hidden" },
2319
- displayEmpty: true,
2320
2380
  size: "tiny",
2381
+ displayEmpty: true,
2382
+ sx: { overflow: "hidden" },
2383
+ disabled,
2321
2384
  value: selectedValue,
2322
2385
  onChange: handleSelectChange,
2323
2386
  fullWidth: true
@@ -2331,9 +2394,12 @@ var AspectRatioControl = createControl(({ label }) => {
2331
2394
  size: "tiny",
2332
2395
  type: "number",
2333
2396
  fullWidth: true,
2397
+ disabled,
2334
2398
  value: customWidth,
2335
2399
  onChange: handleCustomWidthChange,
2336
- placeholder: (0, import_i18n11.__)("Width", "elementor")
2400
+ InputProps: {
2401
+ startAdornment: /* @__PURE__ */ React37.createElement(import_icons10.ArrowsMoveHorizontalIcon, { fontSize: "tiny" })
2402
+ }
2337
2403
  }
2338
2404
  )), /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(
2339
2405
  import_ui30.TextField,
@@ -2341,9 +2407,12 @@ var AspectRatioControl = createControl(({ label }) => {
2341
2407
  size: "tiny",
2342
2408
  type: "number",
2343
2409
  fullWidth: true,
2410
+ disabled,
2344
2411
  value: customHeight,
2345
2412
  onChange: handleCustomHeightChange,
2346
- placeholder: (0, import_i18n11.__)("Height", "elementor")
2413
+ InputProps: {
2414
+ startAdornment: /* @__PURE__ */ React37.createElement(import_icons10.ArrowsMoveVerticalIcon, { fontSize: "tiny" })
2415
+ }
2347
2416
  }
2348
2417
  ))));
2349
2418
  });
@@ -2352,7 +2421,7 @@ var AspectRatioControl = createControl(({ label }) => {
2352
2421
  var React39 = __toESM(require("react"));
2353
2422
  var import_react18 = require("react");
2354
2423
  var import_editor_props19 = require("@elementor/editor-props");
2355
- var import_icons10 = require("@elementor/icons");
2424
+ var import_icons11 = require("@elementor/icons");
2356
2425
  var import_ui32 = require("@elementor/ui");
2357
2426
  var import_wp_media2 = require("@elementor/wp-media");
2358
2427
  var import_i18n13 = require("@wordpress/i18n");
@@ -2507,7 +2576,7 @@ var SvgMediaControl = createControl(() => {
2507
2576
  size: "tiny",
2508
2577
  variant: "text",
2509
2578
  color: "inherit",
2510
- startIcon: /* @__PURE__ */ React39.createElement(import_icons10.UploadIcon, null),
2579
+ startIcon: /* @__PURE__ */ React39.createElement(import_icons11.UploadIcon, null),
2511
2580
  onClick: () => handleClick(MODE_UPLOAD)
2512
2581
  },
2513
2582
  (0, import_i18n13.__)("Upload", "elementor")
@@ -2518,7 +2587,7 @@ var SvgMediaControl = createControl(() => {
2518
2587
  // src/controls/background-control/background-control.tsx
2519
2588
  var React46 = __toESM(require("react"));
2520
2589
  var import_editor_props25 = require("@elementor/editor-props");
2521
- var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
2590
+ var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
2522
2591
  var import_ui40 = require("@elementor/ui");
2523
2592
  var import_i18n19 = require("@wordpress/i18n");
2524
2593
 
@@ -2600,20 +2669,20 @@ var initialBackgroundGradientOverlay = import_editor_props20.backgroundGradientO
2600
2669
 
2601
2670
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx
2602
2671
  var React41 = __toESM(require("react"));
2603
- var import_icons11 = require("@elementor/icons");
2672
+ var import_icons12 = require("@elementor/icons");
2604
2673
  var import_ui34 = require("@elementor/ui");
2605
2674
  var import_i18n14 = require("@wordpress/i18n");
2606
2675
  var attachmentControlOptions = [
2607
2676
  {
2608
2677
  value: "fixed",
2609
2678
  label: (0, import_i18n14.__)("Fixed", "elementor"),
2610
- renderContent: ({ size }) => /* @__PURE__ */ React41.createElement(import_icons11.PinIcon, { fontSize: size }),
2679
+ renderContent: ({ size }) => /* @__PURE__ */ React41.createElement(import_icons12.PinIcon, { fontSize: size }),
2611
2680
  showTooltip: true
2612
2681
  },
2613
2682
  {
2614
2683
  value: "scroll",
2615
2684
  label: (0, import_i18n14.__)("Scroll", "elementor"),
2616
- renderContent: ({ size }) => /* @__PURE__ */ React41.createElement(import_icons11.PinnedOffIcon, { fontSize: size }),
2685
+ renderContent: ({ size }) => /* @__PURE__ */ React41.createElement(import_icons12.PinnedOffIcon, { fontSize: size }),
2617
2686
  showTooltip: true
2618
2687
  }
2619
2688
  ];
@@ -2625,7 +2694,7 @@ var BackgroundImageOverlayAttachment = () => {
2625
2694
  var React42 = __toESM(require("react"));
2626
2695
  var import_editor_props21 = require("@elementor/editor-props");
2627
2696
  var import_editor_ui5 = require("@elementor/editor-ui");
2628
- var import_icons12 = require("@elementor/icons");
2697
+ var import_icons13 = require("@elementor/icons");
2629
2698
  var import_ui35 = require("@elementor/ui");
2630
2699
  var import_i18n15 = require("@wordpress/i18n");
2631
2700
  var backgroundPositionOptions = [
@@ -2661,37 +2730,37 @@ var BackgroundImageOverlayPosition = () => {
2661
2730
  fullWidth: true
2662
2731
  },
2663
2732
  backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React42.createElement(import_editor_ui5.MenuListItem, { key: value, value: value ?? "" }, label))
2664
- )))), isCustom ? /* @__PURE__ */ React42.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React42.createElement(SizeControl, { startIcon: /* @__PURE__ */ React42.createElement(import_icons12.LetterXIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React42.createElement(SizeControl, { startIcon: /* @__PURE__ */ React42.createElement(import_icons12.LetterYIcon, { fontSize: "tiny" }) })))))) : null);
2733
+ )))), isCustom ? /* @__PURE__ */ React42.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React42.createElement(SizeControl, { startIcon: /* @__PURE__ */ React42.createElement(import_icons13.LetterXIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React42.createElement(SizeControl, { startIcon: /* @__PURE__ */ React42.createElement(import_icons13.LetterYIcon, { fontSize: "tiny" }) })))))) : null);
2665
2734
  };
2666
2735
 
2667
2736
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx
2668
2737
  var React43 = __toESM(require("react"));
2669
- var import_icons13 = require("@elementor/icons");
2738
+ var import_icons14 = require("@elementor/icons");
2670
2739
  var import_ui36 = require("@elementor/ui");
2671
2740
  var import_i18n16 = require("@wordpress/i18n");
2672
2741
  var repeatControlOptions = [
2673
2742
  {
2674
2743
  value: "repeat",
2675
2744
  label: (0, import_i18n16.__)("Repeat", "elementor"),
2676
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(import_icons13.GridDotsIcon, { fontSize: size }),
2745
+ renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(import_icons14.GridDotsIcon, { fontSize: size }),
2677
2746
  showTooltip: true
2678
2747
  },
2679
2748
  {
2680
2749
  value: "repeat-x",
2681
2750
  label: (0, import_i18n16.__)("Repeat-x", "elementor"),
2682
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(import_icons13.DotsHorizontalIcon, { fontSize: size }),
2751
+ renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(import_icons14.DotsHorizontalIcon, { fontSize: size }),
2683
2752
  showTooltip: true
2684
2753
  },
2685
2754
  {
2686
2755
  value: "repeat-y",
2687
2756
  label: (0, import_i18n16.__)("Repeat-y", "elementor"),
2688
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(import_icons13.DotsVerticalIcon, { fontSize: size }),
2757
+ renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(import_icons14.DotsVerticalIcon, { fontSize: size }),
2689
2758
  showTooltip: true
2690
2759
  },
2691
2760
  {
2692
2761
  value: "no-repeat",
2693
2762
  label: (0, import_i18n16.__)("No-repeat", "elementor"),
2694
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(import_icons13.XIcon, { fontSize: size }),
2763
+ renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(import_icons14.XIcon, { fontSize: size }),
2695
2764
  showTooltip: true
2696
2765
  }
2697
2766
  ];
@@ -2702,32 +2771,32 @@ var BackgroundImageOverlayRepeat = () => {
2702
2771
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
2703
2772
  var React44 = __toESM(require("react"));
2704
2773
  var import_editor_props22 = require("@elementor/editor-props");
2705
- var import_icons14 = require("@elementor/icons");
2774
+ var import_icons15 = require("@elementor/icons");
2706
2775
  var import_ui37 = require("@elementor/ui");
2707
2776
  var import_i18n17 = require("@wordpress/i18n");
2708
2777
  var sizeControlOptions = [
2709
2778
  {
2710
2779
  value: "auto",
2711
2780
  label: (0, import_i18n17.__)("Auto", "elementor"),
2712
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons14.LetterAIcon, { fontSize: size }),
2781
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons15.LetterAIcon, { fontSize: size }),
2713
2782
  showTooltip: true
2714
2783
  },
2715
2784
  {
2716
2785
  value: "cover",
2717
2786
  label: (0, import_i18n17.__)("Cover", "elementor"),
2718
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons14.ArrowsMaximizeIcon, { fontSize: size }),
2787
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons15.ArrowsMaximizeIcon, { fontSize: size }),
2719
2788
  showTooltip: true
2720
2789
  },
2721
2790
  {
2722
2791
  value: "contain",
2723
2792
  label: (0, import_i18n17.__)("Contain", "elementor"),
2724
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons14.ArrowBarBothIcon, { fontSize: size }),
2793
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons15.ArrowBarBothIcon, { fontSize: size }),
2725
2794
  showTooltip: true
2726
2795
  },
2727
2796
  {
2728
2797
  value: "custom",
2729
2798
  label: (0, import_i18n17.__)("Custom", "elementor"),
2730
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons14.PencilIcon, { fontSize: size }),
2799
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(import_icons15.PencilIcon, { fontSize: size }),
2731
2800
  showTooltip: true
2732
2801
  }
2733
2802
  ];
@@ -2753,13 +2822,13 @@ var BackgroundImageOverlaySize = () => {
2753
2822
  )))), isCustom ? /* @__PURE__ */ React44.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React44.createElement(import_ui37.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React44.createElement(PopoverGridContainer, null, /* @__PURE__ */ React44.createElement(import_ui37.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React44.createElement(
2754
2823
  SizeControl,
2755
2824
  {
2756
- startIcon: /* @__PURE__ */ React44.createElement(import_icons14.ArrowsMoveHorizontalIcon, { fontSize: "tiny" }),
2825
+ startIcon: /* @__PURE__ */ React44.createElement(import_icons15.ArrowsMoveHorizontalIcon, { fontSize: "tiny" }),
2757
2826
  extendedValues: ["auto"]
2758
2827
  }
2759
2828
  ))), /* @__PURE__ */ React44.createElement(import_ui37.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React44.createElement(
2760
2829
  SizeControl,
2761
2830
  {
2762
- startIcon: /* @__PURE__ */ React44.createElement(import_icons14.ArrowsMoveVerticalIcon, { fontSize: "tiny" }),
2831
+ startIcon: /* @__PURE__ */ React44.createElement(import_icons15.ArrowsMoveVerticalIcon, { fontSize: "tiny" }),
2763
2832
  extendedValues: ["auto"]
2764
2833
  }
2765
2834
  )))))) : null);
@@ -2861,11 +2930,12 @@ var backgroundResolutionOptions = [
2861
2930
  { label: (0, import_i18n18.__)("Full", "elementor"), value: "full" }
2862
2931
  ];
2863
2932
  var BackgroundOverlayRepeaterControl = createControl(() => {
2864
- const { propType, value: overlayValues, setValue } = useBoundProp(import_editor_props24.backgroundOverlayPropTypeUtil);
2933
+ const { propType, value: overlayValues, setValue, disabled } = useBoundProp(import_editor_props24.backgroundOverlayPropTypeUtil);
2865
2934
  return /* @__PURE__ */ React45.createElement(PropProvider, { propType, value: overlayValues, setValue }, /* @__PURE__ */ React45.createElement(
2866
2935
  Repeater,
2867
2936
  {
2868
2937
  openOnAdd: true,
2938
+ disabled,
2869
2939
  values: overlayValues ?? [],
2870
2940
  setValues: setValue,
2871
2941
  label: (0, import_i18n18.__)("Overlay", "elementor"),
@@ -3017,9 +3087,9 @@ var getGradientValue = (value) => {
3017
3087
  // src/controls/background-control/background-control.tsx
3018
3088
  var BackgroundControl = createControl(() => {
3019
3089
  const propContext = useBoundProp(import_editor_props25.backgroundPropTypeUtil);
3020
- const isUsingNestedProps = (0, import_editor_v1_adapters.isExperimentActive)("e_v_3_30");
3090
+ const isUsingNestedProps = (0, import_editor_v1_adapters3.isExperimentActive)("e_v_3_30");
3021
3091
  const colorLabel = (0, import_i18n19.__)("Color", "elementor");
3022
- return /* @__PURE__ */ React46.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React46.createElement(SectionContent, null, /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React46.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React46.createElement(import_ui40.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React46.createElement(import_ui40.Grid, { item: true, xs: 6 }, isUsingNestedProps ? /* @__PURE__ */ React46.createElement(ControlLabel, null, colorLabel) : /* @__PURE__ */ React46.createElement(ControlFormLabel, null, colorLabel)), /* @__PURE__ */ React46.createElement(import_ui40.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(ColorControl, null))))));
3092
+ return /* @__PURE__ */ React46.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React46.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React46.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React46.createElement(import_ui40.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React46.createElement(import_ui40.Grid, { item: true, xs: 6 }, isUsingNestedProps ? /* @__PURE__ */ React46.createElement(ControlLabel, null, colorLabel) : /* @__PURE__ */ React46.createElement(ControlFormLabel, null, colorLabel)), /* @__PURE__ */ React46.createElement(import_ui40.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(ColorControl, null)))));
3023
3093
  });
3024
3094
 
3025
3095
  // src/controls/switch-control.tsx
@@ -3027,11 +3097,11 @@ var React47 = __toESM(require("react"));
3027
3097
  var import_editor_props26 = require("@elementor/editor-props");
3028
3098
  var import_ui41 = require("@elementor/ui");
3029
3099
  var SwitchControl2 = createControl(() => {
3030
- const { value, setValue } = useBoundProp(import_editor_props26.booleanPropTypeUtil);
3100
+ const { value, setValue, disabled } = useBoundProp(import_editor_props26.booleanPropTypeUtil);
3031
3101
  const handleChange = (event) => {
3032
3102
  setValue(event.target.checked);
3033
3103
  };
3034
- return /* @__PURE__ */ React47.createElement("div", { style: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React47.createElement(import_ui41.Switch, { checked: !!value, onChange: handleChange, size: "small" }));
3104
+ return /* @__PURE__ */ React47.createElement("div", { style: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React47.createElement(import_ui41.Switch, { checked: !!value, onChange: handleChange, size: "small", disabled }));
3035
3105
  });
3036
3106
  // Annotate the CommonJS export names for ESM import in node:
3037
3107
  0 && (module.exports = {