@elementor/editor-controls 4.3.0 → 4.3.2

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
@@ -3022,8 +3022,24 @@ var ToggleControl = createControl(
3022
3022
 
3023
3023
  // src/controls/number-control.tsx
3024
3024
  var React57 = __toESM(require("react"));
3025
+ var import_react30 = require("react");
3025
3026
  var import_editor_props19 = require("@elementor/editor-props");
3026
3027
  var import_ui42 = require("@elementor/ui");
3028
+
3029
+ // src/utils/number-value.ts
3030
+ var isEmptyDraft = (raw) => raw.trim() === "";
3031
+ var parseNumberDraft = (raw, shouldForceInt = false) => {
3032
+ const trimmed = raw.trim();
3033
+ if (trimmed === "") {
3034
+ return null;
3035
+ }
3036
+ const parsed = shouldForceInt ? parseInt(trimmed, 10) : Number(trimmed);
3037
+ return Number.isFinite(parsed) ? parsed : null;
3038
+ };
3039
+ var isInRange = (value, min, max) => value >= min && value <= max;
3040
+ var clamp = (value, min, max) => Math.min(Math.max(value, min), max);
3041
+
3042
+ // src/controls/number-control.tsx
3027
3043
  var isEmptyOrNaN = (value) => value === null || value === void 0 || value === "" || Number.isNaN(Number(value));
3028
3044
  var renderSuffix = (propType) => {
3029
3045
  if (propType.meta?.suffix) {
@@ -3034,31 +3050,63 @@ var renderSuffix = (propType) => {
3034
3050
  var NumberControl = createControl(
3035
3051
  ({
3036
3052
  placeholder: labelPlaceholder,
3037
- max = Number.MAX_SAFE_INTEGER,
3038
- min = -Number.MAX_SAFE_INTEGER,
3039
- step = 1,
3053
+ max: maxProp,
3054
+ min: minProp,
3055
+ step: stepProp,
3040
3056
  shouldForceInt = false,
3041
3057
  startIcon,
3042
3058
  disabled: inputDisabled
3043
3059
  }) => {
3060
+ const max = maxProp ?? Number.MAX_SAFE_INTEGER;
3061
+ const min = minProp ?? -Number.MAX_SAFE_INTEGER;
3062
+ const step = stepProp ?? 1;
3044
3063
  const { value, setValue, placeholder, disabled, restoreValue, propType } = useBoundProp(import_editor_props19.numberPropTypeUtil);
3045
- const handleChange = (event) => {
3046
- const {
3047
- value: eventValue,
3048
- validity: { valid: isInputValid }
3049
- } = event.target;
3050
- let updatedValue;
3051
- if (isEmptyOrNaN(eventValue)) {
3052
- updatedValue = null;
3053
- } else {
3054
- const formattedValue = shouldForceInt ? +parseInt(eventValue) : Number(eventValue);
3055
- updatedValue = Math.min(
3056
- Math.max(formattedValue, min ?? Number.MIN_SAFE_INTEGER),
3057
- max ?? Number.MAX_SAFE_INTEGER
3058
- );
3064
+ const [draft, setDraft] = (0, import_react30.useState)(null);
3065
+ const committedNullOnInputRef = (0, import_react30.useRef)(false);
3066
+ const handleInput = (event) => {
3067
+ const raw = event.target.value;
3068
+ setDraft(raw);
3069
+ if (isEmptyDraft(raw)) {
3070
+ if (!propType.settings.required) {
3071
+ setValue(null);
3072
+ committedNullOnInputRef.current = true;
3073
+ }
3074
+ return;
3075
+ }
3076
+ committedNullOnInputRef.current = false;
3077
+ const parsed = parseNumberDraft(raw, shouldForceInt);
3078
+ if (parsed === null) {
3079
+ return;
3080
+ }
3081
+ if (isInRange(parsed, min, max)) {
3082
+ setValue(parsed);
3059
3083
  }
3060
- setValue(updatedValue, void 0, { validation: () => isInputValid });
3061
3084
  };
3085
+ const handleBlur = () => {
3086
+ const raw = draft;
3087
+ const committedNullOnInput = committedNullOnInputRef.current;
3088
+ committedNullOnInputRef.current = false;
3089
+ setDraft(null);
3090
+ restoreValue();
3091
+ if (raw === null) {
3092
+ return;
3093
+ }
3094
+ if (isEmptyDraft(raw)) {
3095
+ if (!propType.settings.required && !committedNullOnInput) {
3096
+ setValue(null);
3097
+ }
3098
+ return;
3099
+ }
3100
+ const parsed = parseNumberDraft(raw, shouldForceInt);
3101
+ if (parsed === null) {
3102
+ return;
3103
+ }
3104
+ if (isInRange(parsed, min, max)) {
3105
+ return;
3106
+ }
3107
+ setValue(clamp(parsed, min, max));
3108
+ };
3109
+ const displayValue = draft ?? (isEmptyOrNaN(value) ? "" : String(value));
3062
3110
  return /* @__PURE__ */ React57.createElement(ControlActions, null, /* @__PURE__ */ React57.createElement(
3063
3111
  NumberInput,
3064
3112
  {
@@ -3066,11 +3114,11 @@ var NumberControl = createControl(
3066
3114
  type: "number",
3067
3115
  fullWidth: true,
3068
3116
  disabled: inputDisabled ?? disabled,
3069
- value: isEmptyOrNaN(value) ? "" : value,
3070
- onInput: handleChange,
3071
- onBlur: restoreValue,
3117
+ value: displayValue,
3118
+ onInput: handleInput,
3119
+ onBlur: handleBlur,
3072
3120
  placeholder: labelPlaceholder ?? (isEmptyOrNaN(placeholder) ? "" : String(placeholder)),
3073
- inputProps: { step, min },
3121
+ inputProps: { step, min, ...maxProp !== null && maxProp !== void 0 && { max } },
3074
3122
  InputProps: {
3075
3123
  startAdornment: startIcon ? /* @__PURE__ */ React57.createElement(import_ui42.InputAdornment, { position: "start", disabled: inputDisabled ?? disabled }, startIcon) : void 0,
3076
3124
  endAdornment: renderSuffix(propType)
@@ -3082,7 +3130,7 @@ var NumberControl = createControl(
3082
3130
 
3083
3131
  // src/controls/equal-unequal-sizes-control.tsx
3084
3132
  var React58 = __toESM(require("react"));
3085
- var import_react30 = require("react");
3133
+ var import_react31 = require("react");
3086
3134
  var import_ui43 = require("@elementor/ui");
3087
3135
  var import_i18n18 = require("@wordpress/i18n");
3088
3136
  function EqualUnequalSizesControl({
@@ -3092,9 +3140,9 @@ function EqualUnequalSizesControl({
3092
3140
  items: items2,
3093
3141
  multiSizePropTypeUtil
3094
3142
  }) {
3095
- const popupId = (0, import_react30.useId)();
3143
+ const popupId = (0, import_react31.useId)();
3096
3144
  const popupState = (0, import_ui43.usePopupState)({ variant: "popover", popupId });
3097
- const rowRefs = [(0, import_react30.useRef)(null), (0, import_react30.useRef)(null)];
3145
+ const rowRefs = [(0, import_react31.useRef)(null), (0, import_react31.useRef)(null)];
3098
3146
  const { propType: multiSizePropType, disabled: multiSizeDisabled } = useBoundProp(multiSizePropTypeUtil);
3099
3147
  const { value: masterValue, setValue: setMasterValue, placeholder: masterPlaceholder } = useBoundProp();
3100
3148
  const getMultiSizeValues = (sourceValue) => {
@@ -3189,7 +3237,7 @@ var MultiSizeValueControl = ({ item, rowRef }) => {
3189
3237
 
3190
3238
  // src/controls/linked-dimensions-control.tsx
3191
3239
  var React65 = __toESM(require("react"));
3192
- var import_react38 = require("react");
3240
+ var import_react39 = require("react");
3193
3241
  var import_editor_props22 = require("@elementor/editor-props");
3194
3242
  var import_editor_responsive4 = require("@elementor/editor-responsive");
3195
3243
  var import_icons12 = require("@elementor/icons");
@@ -3198,12 +3246,12 @@ var import_i18n20 = require("@wordpress/i18n");
3198
3246
 
3199
3247
  // src/controls/size-control/unstable-size-control.tsx
3200
3248
  var React64 = __toESM(require("react"));
3201
- var import_react37 = require("react");
3249
+ var import_react38 = require("react");
3202
3250
  var import_editor_props21 = require("@elementor/editor-props");
3203
3251
 
3204
3252
  // src/controls/size-control/size-component.tsx
3205
3253
  var React63 = __toESM(require("react"));
3206
- var import_react36 = require("react");
3254
+ var import_react37 = require("react");
3207
3255
  var import_editor_responsive3 = require("@elementor/editor-responsive");
3208
3256
  var import_ui47 = require("@elementor/ui");
3209
3257
 
@@ -3273,7 +3321,7 @@ var isNumericValue = (value) => {
3273
3321
  };
3274
3322
 
3275
3323
  // src/controls/size-control/hooks/use-size-value.ts
3276
- var import_react32 = require("react");
3324
+ var import_react33 = require("react");
3277
3325
 
3278
3326
  // src/controls/size-control/utils/resolve-size-value.ts
3279
3327
  var DEFAULT_SIZE2 = "";
@@ -3325,10 +3373,10 @@ var sanitizeSize = (size) => {
3325
3373
  };
3326
3374
 
3327
3375
  // src/controls/size-control/hooks/use-unit-sync.ts
3328
- var import_react31 = require("react");
3376
+ var import_react32 = require("react");
3329
3377
  var useUnitSync = ({ sizeValue, setUnit, persistWhen }) => {
3330
- const [state, setState] = (0, import_react31.useState)(sizeValue.unit);
3331
- (0, import_react31.useEffect)(() => {
3378
+ const [state, setState] = (0, import_react32.useState)(sizeValue.unit);
3379
+ (0, import_react32.useEffect)(() => {
3332
3380
  if (sizeValue.unit !== state) {
3333
3381
  setState(sizeValue.unit);
3334
3382
  }
@@ -3349,7 +3397,7 @@ var useSizeValue = ({
3349
3397
  units: units2,
3350
3398
  defaultUnit
3351
3399
  }) => {
3352
- const resolvedValue = (0, import_react32.useMemo)(
3400
+ const resolvedValue = (0, import_react33.useMemo)(
3353
3401
  () => resolveSizeValue(value, { units: units2, defaultUnit }),
3354
3402
  // eslint-disable-next-line react-hooks/exhaustive-deps
3355
3403
  [value?.size, value?.unit, defaultUnit]
@@ -3401,8 +3449,8 @@ var hasChanged = (next, current) => {
3401
3449
 
3402
3450
  // src/controls/size-control/ui/size-input.tsx
3403
3451
  var React59 = __toESM(require("react"));
3404
- var import_react33 = require("react");
3405
- var SizeInput2 = (0, import_react33.forwardRef)(
3452
+ var import_react34 = require("react");
3453
+ var SizeInput2 = (0, import_react34.forwardRef)(
3406
3454
  ({
3407
3455
  id,
3408
3456
  type,
@@ -3446,7 +3494,7 @@ var getCursorStyle = (readOnly) => ({
3446
3494
 
3447
3495
  // src/controls/size-control/ui/unit-selector.tsx
3448
3496
  var React60 = __toESM(require("react"));
3449
- var import_react34 = require("react");
3497
+ var import_react35 = require("react");
3450
3498
  var import_editor_ui5 = require("@elementor/editor-ui");
3451
3499
  var import_ui44 = require("@elementor/ui");
3452
3500
  var menuItemContentStyles = {
@@ -3465,7 +3513,7 @@ var UnitSelector = ({
3465
3513
  }) => {
3466
3514
  const popupState = (0, import_ui44.usePopupState)({
3467
3515
  variant: "popover",
3468
- popupId: (0, import_react34.useId)()
3516
+ popupId: (0, import_react35.useId)()
3469
3517
  });
3470
3518
  const handleMenuItemClick = (option) => {
3471
3519
  onSelect(option);
@@ -3590,15 +3638,15 @@ var shouldHighlightUnit = (value) => {
3590
3638
 
3591
3639
  // src/controls/size-control/ui/text-field-popover.tsx
3592
3640
  var React62 = __toESM(require("react"));
3593
- var import_react35 = require("react");
3641
+ var import_react36 = require("react");
3594
3642
  var import_editor_ui6 = require("@elementor/editor-ui");
3595
3643
  var import_icons11 = require("@elementor/icons");
3596
3644
  var import_ui46 = require("@elementor/ui");
3597
3645
  var import_i18n19 = require("@wordpress/i18n");
3598
3646
  var SIZE7 = "tiny";
3599
3647
  var TextFieldPopover2 = ({ popupState, anchorRef, value, onChange, onClose }) => {
3600
- const inputRef = (0, import_react35.useRef)(null);
3601
- (0, import_react35.useEffect)(() => {
3648
+ const inputRef = (0, import_react36.useRef)(null);
3649
+ (0, import_react36.useEffect)(() => {
3602
3650
  if (popupState.isOpen) {
3603
3651
  requestAnimationFrame(() => {
3604
3652
  if (inputRef.current) {
@@ -3665,7 +3713,7 @@ var SizeComponent = ({ anchorRef, SizeFieldWrapper = React63.Fragment, ...sizeFi
3665
3713
  const activeBreakpoint = (0, import_editor_responsive3.useActiveBreakpoint)();
3666
3714
  const isCustomUnit = sizeFieldProps?.value?.unit === EXTENDED_UNITS.custom;
3667
3715
  const hasCustomUnitOption = sizeFieldProps.units.includes(EXTENDED_UNITS.custom);
3668
- (0, import_react36.useEffect)(() => {
3716
+ (0, import_react37.useEffect)(() => {
3669
3717
  if (popupState && popupState.isOpen) {
3670
3718
  popupState.close();
3671
3719
  }
@@ -3797,7 +3845,7 @@ var UnstableSizeControl = createControl(
3797
3845
  placeholder: boundPropPlaceholder,
3798
3846
  restoreValue
3799
3847
  } = useBoundProp(import_editor_props21.sizePropTypeUtil);
3800
- const lastNonAutoValue = (0, import_react37.useRef)(null);
3848
+ const lastNonAutoValue = (0, import_react38.useRef)(null);
3801
3849
  const { sizeValue, placeholder } = resolveBoundPropValue(
3802
3850
  value ?? lastNonAutoValue.current,
3803
3851
  boundPropPlaceholder,
@@ -3854,7 +3902,7 @@ var isTransitioningFromExtendedUnit = (nextValue, previousValue) => {
3854
3902
 
3855
3903
  // src/controls/linked-dimensions-control.tsx
3856
3904
  var LinkedDimensionsControl = ({ label, isSiteRtl = false, min }) => {
3857
- const gridRowRefs = [(0, import_react38.useRef)(null), (0, import_react38.useRef)(null)];
3905
+ const gridRowRefs = [(0, import_react39.useRef)(null), (0, import_react39.useRef)(null)];
3858
3906
  const { disabled: sizeDisabled } = useBoundProp(import_editor_props22.sizePropTypeUtil);
3859
3907
  const {
3860
3908
  value: dimensionsValue,
@@ -3873,10 +3921,10 @@ var LinkedDimensionsControl = ({ label, isSiteRtl = false, min }) => {
3873
3921
  }
3874
3922
  return true;
3875
3923
  };
3876
- const [isLinked, setIsLinked] = (0, import_react38.useState)(() => inferIsLinked());
3924
+ const [isLinked, setIsLinked] = (0, import_react39.useState)(() => inferIsLinked());
3877
3925
  const activeBreakpoint = (0, import_editor_responsive4.useActiveBreakpoint)();
3878
3926
  const isCurrentlyDimensions = import_editor_props22.dimensionsPropTypeUtil.isValid(masterValue ?? masterPlaceholder);
3879
- (0, import_react38.useLayoutEffect)(() => {
3927
+ (0, import_react39.useLayoutEffect)(() => {
3880
3928
  setIsLinked(inferIsLinked);
3881
3929
  }, [activeBreakpoint, isCurrentlyDimensions]);
3882
3930
  const onLinkToggle = () => {
@@ -4047,7 +4095,7 @@ function getCssDimensionProps(label, isSiteRtl) {
4047
4095
 
4048
4096
  // src/controls/font-family-control/font-family-control.tsx
4049
4097
  var React67 = __toESM(require("react"));
4050
- var import_react40 = require("react");
4098
+ var import_react41 = require("react");
4051
4099
  var import_editor_props23 = require("@elementor/editor-props");
4052
4100
  var import_icons13 = require("@elementor/icons");
4053
4101
  var import_ui50 = require("@elementor/ui");
@@ -4055,7 +4103,7 @@ var import_i18n22 = require("@wordpress/i18n");
4055
4103
 
4056
4104
  // src/components/item-selector.tsx
4057
4105
  var React66 = __toESM(require("react"));
4058
- var import_react39 = require("react");
4106
+ var import_react40 = require("react");
4059
4107
  var import_editor_ui7 = require("@elementor/editor-ui");
4060
4108
  var import_ui49 = require("@elementor/ui");
4061
4109
  var import_utils3 = require("@elementor/utils");
@@ -4094,7 +4142,7 @@ var ItemSelector = ({
4094
4142
  footer,
4095
4143
  categoryItemContentTemplate
4096
4144
  }) => {
4097
- const [searchValue, setSearchValue] = (0, import_react39.useState)("");
4145
+ const [searchValue, setSearchValue] = (0, import_react40.useState)("");
4098
4146
  const filteredItemsList = useFilteredItemsList(itemsList, searchValue, disabledItems);
4099
4147
  const IconComponent = icon;
4100
4148
  const handleSearch = (value) => {
@@ -4192,7 +4240,7 @@ var ItemList = ({
4192
4240
  }
4193
4241
  });
4194
4242
  }, 100);
4195
- const memoizedItemStyle = (0, import_react39.useCallback)((item) => itemStyle(item), [itemStyle]);
4243
+ const memoizedItemStyle = (0, import_react40.useCallback)((item) => itemStyle(item), [itemStyle]);
4196
4244
  return /* @__PURE__ */ React66.createElement(
4197
4245
  import_editor_ui7.PopoverMenuList,
4198
4246
  {
@@ -4208,8 +4256,8 @@ var ItemList = ({
4208
4256
  );
4209
4257
  };
4210
4258
  var useDebounce = (fn, delay) => {
4211
- const [debouncedFn] = (0, import_react39.useState)(() => (0, import_utils3.debounce)(fn, delay));
4212
- (0, import_react39.useEffect)(() => () => debouncedFn.cancel(), [debouncedFn]);
4259
+ const [debouncedFn] = (0, import_react40.useState)(() => (0, import_utils3.debounce)(fn, delay));
4260
+ (0, import_react40.useEffect)(() => () => debouncedFn.cancel(), [debouncedFn]);
4213
4261
  return debouncedFn;
4214
4262
  };
4215
4263
 
@@ -4230,7 +4278,7 @@ var FontFamilyControl = createControl(
4230
4278
  } = useBoundProp(import_editor_props23.fontFamilyPropTypeUtil);
4231
4279
  const popoverState = (0, import_ui50.usePopupState)({ variant: "popover" });
4232
4280
  const isShowingPlaceholder = !fontFamily && placeholder;
4233
- const mapFontSubs = (0, import_react40.useMemo)(() => {
4281
+ const mapFontSubs = (0, import_react41.useMemo)(() => {
4234
4282
  return fontFamilies.map(({ label, fonts }) => ({
4235
4283
  label,
4236
4284
  items: fonts
@@ -4311,7 +4359,7 @@ var UrlControl = createControl(
4311
4359
 
4312
4360
  // src/controls/link-control.tsx
4313
4361
  var React73 = __toESM(require("react"));
4314
- var import_react43 = require("react");
4362
+ var import_react44 = require("react");
4315
4363
  var import_editor_elements2 = require("@elementor/editor-elements");
4316
4364
  var import_editor_props28 = require("@elementor/editor-props");
4317
4365
  var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
@@ -4405,10 +4453,10 @@ var import_i18n24 = require("@wordpress/i18n");
4405
4453
 
4406
4454
  // src/components/autocomplete.tsx
4407
4455
  var React70 = __toESM(require("react"));
4408
- var import_react41 = require("react");
4456
+ var import_react42 = require("react");
4409
4457
  var import_icons15 = require("@elementor/icons");
4410
4458
  var import_ui53 = require("@elementor/ui");
4411
- var Autocomplete2 = (0, import_react41.forwardRef)((props, ref) => {
4459
+ var Autocomplete2 = (0, import_react42.forwardRef)((props, ref) => {
4412
4460
  const {
4413
4461
  options,
4414
4462
  onOptionChange,
@@ -4529,7 +4577,7 @@ function factoryFilter(newValue, options, minInputLength) {
4529
4577
  }
4530
4578
 
4531
4579
  // src/hooks/use-query-autocomplete.ts
4532
- var import_react42 = require("react");
4580
+ var import_react43 = require("react");
4533
4581
  var import_editor_props25 = require("@elementor/editor-props");
4534
4582
  var import_http_client2 = require("@elementor/http-client");
4535
4583
  var import_utils4 = require("@elementor/utils");
@@ -4540,11 +4588,11 @@ function useQueryAutocomplete({
4540
4588
  initialQueryValue = null,
4541
4589
  excludeIds
4542
4590
  }) {
4543
- const excludeIdSet = (0, import_react42.useMemo)(() => new Set((excludeIds ?? []).map(String)), [excludeIds]);
4544
- const [options, setOptions] = (0, import_react42.useState)(
4591
+ const excludeIdSet = (0, import_react43.useMemo)(() => new Set((excludeIds ?? []).map(String)), [excludeIds]);
4592
+ const [options, setOptions] = (0, import_react43.useState)(
4545
4593
  generateFirstLoadedOption(initialQueryValue)
4546
4594
  );
4547
- const debounceFetch = (0, import_react42.useMemo)(
4595
+ const debounceFetch = (0, import_react43.useMemo)(
4548
4596
  () => (0, import_utils4.debounce)(
4549
4597
  (queryParams) => fetchOptions(url, queryParams).then((newOptions) => {
4550
4598
  setOptions(formatOptions(filterExcludedOptions(newOptions, excludeIdSet)));
@@ -4553,7 +4601,7 @@ function useQueryAutocomplete({
4553
4601
  ),
4554
4602
  [url, excludeIdSet]
4555
4603
  );
4556
- (0, import_react42.useEffect)(() => {
4604
+ (0, import_react43.useEffect)(() => {
4557
4605
  if (minInputLength === 0 && url) {
4558
4606
  fetchOptions(url, { ...params, term: "" }).then((newOptions) => {
4559
4607
  setOptions(formatOptions(filterExcludedOptions(newOptions, excludeIdSet)));
@@ -4699,7 +4747,7 @@ var LinkControl = createControl((props) => {
4699
4747
  const { value, path, setValue, ...propContext } = useBoundProp(import_editor_props28.linkPropTypeUtil);
4700
4748
  const linkPlaceholder = propContext.placeholder;
4701
4749
  const [linkSessionValue, setLinkSessionValue] = (0, import_session.useSessionStorage)(path.join("/"));
4702
- const [isActive, setIsActive] = (0, import_react43.useState)(!!value || !!linkPlaceholder);
4750
+ const [isActive, setIsActive] = (0, import_react44.useState)(!!value || !!linkPlaceholder);
4703
4751
  const {
4704
4752
  allowCustomValues = true,
4705
4753
  queryOptions,
@@ -4709,7 +4757,7 @@ var LinkControl = createControl((props) => {
4709
4757
  label = (0, import_i18n25.__)("Link", "elementor"),
4710
4758
  ariaLabel
4711
4759
  } = props || {};
4712
- const [linkInLinkRestriction, setLinkInLinkRestriction] = (0, import_react43.useState)(
4760
+ const [linkInLinkRestriction, setLinkInLinkRestriction] = (0, import_react44.useState)(
4713
4761
  (0, import_editor_elements2.getLinkInLinkRestriction)(elementId, value ?? linkPlaceholder)
4714
4762
  );
4715
4763
  const shouldDisableAddingLink = !isActive && linkInLinkRestriction.shouldRestrict;
@@ -4736,7 +4784,7 @@ var LinkControl = createControl((props) => {
4736
4784
  },
4737
4785
  [debouncedSyncLinkRestriction]
4738
4786
  );
4739
- (0, import_react43.useEffect)(() => {
4787
+ (0, import_react44.useEffect)(() => {
4740
4788
  debouncedSyncLinkRestriction();
4741
4789
  const handleInlineLinkChanged = () => {
4742
4790
  debouncedSyncLinkRestriction();
@@ -4915,7 +4963,7 @@ var HtmlTagControl = createControl((props) => {
4915
4963
 
4916
4964
  // src/controls/query-chips-control.tsx
4917
4965
  var React76 = __toESM(require("react"));
4918
- var import_react44 = require("react");
4966
+ var import_react45 = require("react");
4919
4967
  var import_editor_props30 = require("@elementor/editor-props");
4920
4968
  var import_ui59 = require("@elementor/ui");
4921
4969
  var import_i18n27 = require("@wordpress/i18n");
@@ -4924,8 +4972,8 @@ var SIZE9 = "tiny";
4924
4972
  var QueryChipsControl = createControl((props) => {
4925
4973
  const { queryOptions, placeholder, minInputLength = 2 } = props;
4926
4974
  const { value, setValue, disabled } = useBoundProp(queryArrayPropTypeUtil);
4927
- const selectedChips = (0, import_react44.useMemo)(() => extractChips(value), [value]);
4928
- const excludeIds = (0, import_react44.useMemo)(
4975
+ const selectedChips = (0, import_react45.useMemo)(() => extractChips(value), [value]);
4976
+ const excludeIds = (0, import_react45.useMemo)(
4929
4977
  () => selectedChips.map((chip) => Number(chip.id)).filter((id) => Number.isFinite(id)),
4930
4978
  [selectedChips]
4931
4979
  );
@@ -4985,7 +5033,7 @@ function extractChips(value) {
4985
5033
 
4986
5034
  // src/controls/query-filter-repeater-control.tsx
4987
5035
  var React77 = __toESM(require("react"));
4988
- var import_react45 = require("react");
5036
+ var import_react46 = require("react");
4989
5037
  var import_editor_elements4 = require("@elementor/editor-elements");
4990
5038
  var import_editor_props31 = require("@elementor/editor-props");
4991
5039
  var import_icons18 = require("@elementor/icons");
@@ -5000,16 +5048,16 @@ var QueryFilterRepeaterControl = createControl(
5000
5048
  }) => {
5001
5049
  const { propType, value, setValue } = useBoundProp(import_editor_props31.queryFilterArrayPropTypeUtil);
5002
5050
  const { settings } = (0, import_editor_elements4.useSelectedElementSettings)();
5003
- const visibleKeys = (0, import_react45.useMemo)(
5051
+ const visibleKeys = (0, import_react46.useMemo)(
5004
5052
  () => allowedKeys.filter((key) => isKeyVisible(keyConfig[key]?.visibleWhen, settings)),
5005
5053
  [allowedKeys, keyConfig, settings]
5006
5054
  );
5007
- const usedKeys = (0, import_react45.useMemo)(() => getUsedKeys(value ?? []), [value]);
5008
- const nextAvailableKey = (0, import_react45.useMemo)(
5055
+ const usedKeys = (0, import_react46.useMemo)(() => getUsedKeys(value ?? []), [value]);
5056
+ const nextAvailableKey = (0, import_react46.useMemo)(
5009
5057
  () => visibleKeys.find((key) => !usedKeys.has(key)) ?? null,
5010
5058
  [visibleKeys, usedKeys]
5011
5059
  );
5012
- const getKeySelectOptions = (0, import_react45.useMemo)(
5060
+ const getKeySelectOptions = (0, import_react46.useMemo)(
5013
5061
  () => (currentKey) => visibleKeys.map((itemKey) => ({
5014
5062
  value: itemKey,
5015
5063
  label: keyConfig[itemKey]?.label ?? itemKey,
@@ -5017,7 +5065,7 @@ var QueryFilterRepeaterControl = createControl(
5017
5065
  })),
5018
5066
  [visibleKeys, keyConfig, usedKeys]
5019
5067
  );
5020
- const initialFallback = (0, import_react45.useMemo)(() => createItemForKey(visibleKeys[0] ?? ""), [visibleKeys]);
5068
+ const initialFallback = (0, import_react46.useMemo)(() => createItemForKey(visibleKeys[0] ?? ""), [visibleKeys]);
5021
5069
  return /* @__PURE__ */ React77.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React77.createElement(ControlRepeater, { initial: initialFallback, propTypeUtil: import_editor_props31.queryFilterArrayPropTypeUtil }, /* @__PURE__ */ React77.createElement(RepeaterHeader, { label }, /* @__PURE__ */ React77.createElement(AddFilterItemAction, { nextAvailableKey, ariaLabel: label })), /* @__PURE__ */ React77.createElement(ItemsContainer, { isSortable: false }, /* @__PURE__ */ React77.createElement(
5022
5070
  Item,
5023
5071
  {
@@ -5081,7 +5129,7 @@ var ItemContent = ({
5081
5129
  chipsPlaceholder
5082
5130
  }) => {
5083
5131
  const propContext = useBoundProp(import_editor_props31.queryFilterPropTypeUtil);
5084
- const snapshotsByKeyRef = (0, import_react45.useRef)({});
5132
+ const snapshotsByKeyRef = (0, import_react46.useRef)({});
5085
5133
  const handleValueChange = (nextValue, options, meta) => {
5086
5134
  if (meta?.bind !== "key") {
5087
5135
  propContext.setValue(nextValue, options, meta);
@@ -5109,7 +5157,7 @@ var ItemContent = ({
5109
5157
  const currentKey = import_editor_props31.stringPropTypeUtil.extract(propContext.value?.key);
5110
5158
  const currentKeyConfig = currentKey ? keyConfig[currentKey] : void 0;
5111
5159
  const valueType = currentKeyConfig?.valueType ?? "chips";
5112
- const keySelectOptions = (0, import_react45.useMemo)(() => getKeySelectOptions(currentKey), [getKeySelectOptions, currentKey]);
5160
+ const keySelectOptions = (0, import_react46.useMemo)(() => getKeySelectOptions(currentKey), [getKeySelectOptions, currentKey]);
5113
5161
  return /* @__PURE__ */ React77.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React77.createElement(PropProvider, { ...propContext, setValue: handleValueChange }, /* @__PURE__ */ React77.createElement(PopoverGridContainer, { flexWrap: "wrap" }, /* @__PURE__ */ React77.createElement(import_ui60.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React77.createElement(ControlFormLabel, null, (0, import_i18n28.__)("Type", "elementor"))), /* @__PURE__ */ React77.createElement(import_ui60.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React77.createElement(PropKeyProvider, { bind: "key" }, /* @__PURE__ */ React77.createElement(SelectControl, { options: keySelectOptions })))), valueType === "taxonomies" && currentKeyConfig?.staticOptions && /* @__PURE__ */ React77.createElement(PopoverGridContainer, { flexWrap: "wrap" }, /* @__PURE__ */ React77.createElement(import_ui60.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React77.createElement(ControlFormLabel, null, currentKeyConfig.label)), /* @__PURE__ */ React77.createElement(import_ui60.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React77.createElement(PropKeyProvider, { bind: "taxonomies" }, /* @__PURE__ */ React77.createElement(ChipsControl, { options: currentKeyConfig.staticOptions })))), valueType !== "taxonomies" && currentKeyConfig?.queryEndpoint && /* @__PURE__ */ React77.createElement(PopoverGridContainer, { flexWrap: "wrap" }, /* @__PURE__ */ React77.createElement(import_ui60.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React77.createElement(ControlFormLabel, null, currentKeyConfig.label)), /* @__PURE__ */ React77.createElement(import_ui60.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React77.createElement(PropKeyProvider, { bind: "values" }, /* @__PURE__ */ React77.createElement(
5114
5162
  QueryChipsControl,
5115
5163
  {
@@ -5153,14 +5201,14 @@ function getUsedKeys(items2) {
5153
5201
 
5154
5202
  // src/controls/gap-control.tsx
5155
5203
  var React78 = __toESM(require("react"));
5156
- var import_react46 = require("react");
5204
+ var import_react47 = require("react");
5157
5205
  var import_editor_props32 = require("@elementor/editor-props");
5158
5206
  var import_editor_responsive5 = require("@elementor/editor-responsive");
5159
5207
  var import_icons19 = require("@elementor/icons");
5160
5208
  var import_ui61 = require("@elementor/ui");
5161
5209
  var import_i18n29 = require("@wordpress/i18n");
5162
5210
  var GapControl = ({ label }) => {
5163
- const stackRef = (0, import_react46.useRef)(null);
5211
+ const stackRef = (0, import_react47.useRef)(null);
5164
5212
  const { disabled: sizeDisabled } = useBoundProp(import_editor_props32.sizePropTypeUtil);
5165
5213
  const {
5166
5214
  value: directionValue,
@@ -5179,10 +5227,10 @@ var GapControl = ({ label }) => {
5179
5227
  }
5180
5228
  return true;
5181
5229
  };
5182
- const [isLinked, setIsLinked] = (0, import_react46.useState)(() => inferIsLinked());
5230
+ const [isLinked, setIsLinked] = (0, import_react47.useState)(() => inferIsLinked());
5183
5231
  const isCurrentlyDirection = import_editor_props32.layoutDirectionPropTypeUtil.isValid(masterValue ?? masterPlaceholder);
5184
5232
  const activeBreakpoint = (0, import_editor_responsive5.useActiveBreakpoint)();
5185
- (0, import_react46.useLayoutEffect)(() => {
5233
+ (0, import_react47.useLayoutEffect)(() => {
5186
5234
  setIsLinked(inferIsLinked());
5187
5235
  }, [activeBreakpoint, isCurrentlyDirection]);
5188
5236
  const onLinkToggle = () => {
@@ -5275,7 +5323,7 @@ var Control4 = ({
5275
5323
 
5276
5324
  // src/controls/aspect-ratio-control.tsx
5277
5325
  var React79 = __toESM(require("react"));
5278
- var import_react47 = require("react");
5326
+ var import_react48 = require("react");
5279
5327
  var import_editor_props33 = require("@elementor/editor-props");
5280
5328
  var import_editor_ui10 = require("@elementor/editor-ui");
5281
5329
  var import_icons20 = require("@elementor/icons");
@@ -5302,13 +5350,13 @@ var AspectRatioControl = createControl(({ label }) => {
5302
5350
  const aspectRatioValue = currentPropValue ?? externalPlaceholder;
5303
5351
  const isCustomSelected = aspectRatioValue && !RATIO_OPTIONS.some((option) => option.value === aspectRatioValue);
5304
5352
  const [initialWidth, initialHeight] = isCustomSelected ? aspectRatioValue.split("/") : ["", ""];
5305
- const [isCustom, setIsCustom] = (0, import_react47.useState)(isCustomSelected);
5306
- const [customWidth, setCustomWidth] = (0, import_react47.useState)(initialWidth);
5307
- const [customHeight, setCustomHeight] = (0, import_react47.useState)(initialHeight);
5308
- const [selectedValue, setSelectedValue] = (0, import_react47.useState)(
5353
+ const [isCustom, setIsCustom] = (0, import_react48.useState)(isCustomSelected);
5354
+ const [customWidth, setCustomWidth] = (0, import_react48.useState)(initialWidth);
5355
+ const [customHeight, setCustomHeight] = (0, import_react48.useState)(initialHeight);
5356
+ const [selectedValue, setSelectedValue] = (0, import_react48.useState)(
5309
5357
  isCustomSelected ? CUSTOM_RATIO : aspectRatioValue || ""
5310
5358
  );
5311
- (0, import_react47.useEffect)(() => {
5359
+ (0, import_react48.useEffect)(() => {
5312
5360
  const isCustomValue = aspectRatioValue && !RATIO_OPTIONS.some((option) => option.value === aspectRatioValue);
5313
5361
  if (isCustomValue) {
5314
5362
  const [width, height] = aspectRatioValue.split("/");
@@ -5395,7 +5443,7 @@ var AspectRatioControl = createControl(({ label }) => {
5395
5443
 
5396
5444
  // src/controls/svg-media-control.tsx
5397
5445
  var React88 = __toESM(require("react"));
5398
- var import_react53 = require("react");
5446
+ var import_react54 = require("react");
5399
5447
  var import_editor_current_user = require("@elementor/editor-current-user");
5400
5448
  var import_editor_props35 = require("@elementor/editor-props");
5401
5449
  var import_ui70 = require("@elementor/ui");
@@ -5404,7 +5452,7 @@ var import_i18n38 = require("@wordpress/i18n");
5404
5452
 
5405
5453
  // src/components/enable-unfiltered-modal.tsx
5406
5454
  var React80 = __toESM(require("react"));
5407
- var import_react48 = require("react");
5455
+ var import_react49 = require("react");
5408
5456
  var import_ui63 = require("@elementor/ui");
5409
5457
  var import_i18n31 = require("@wordpress/i18n");
5410
5458
  var ADMIN_TITLE_TEXT = (0, import_i18n31.__)("Enable Unfiltered Uploads", "elementor");
@@ -5420,7 +5468,7 @@ var ADMIN_FAILED_CONTENT_TEXT_PT2 = (0, import_i18n31.__)(
5420
5468
  var WAIT_FOR_CLOSE_TIMEOUT_MS = 300;
5421
5469
  var EnableUnfilteredModal = (props) => {
5422
5470
  const { mutateAsync, isPending } = useUpdateUnfilteredFilesUpload();
5423
- const [isError, setIsError] = (0, import_react48.useState)(false);
5471
+ const [isError, setIsError] = (0, import_react49.useState)(false);
5424
5472
  const onClose = (enabled) => {
5425
5473
  props.onClose(enabled);
5426
5474
  setTimeout(() => setIsError(false), WAIT_FOR_CLOSE_TIMEOUT_MS);
@@ -5469,7 +5517,7 @@ function measureIconLibraryAnchor(container, buttonGroup) {
5469
5517
 
5470
5518
  // src/controls/icon-library/icon-library-popover.tsx
5471
5519
  var React85 = __toESM(require("react"));
5472
- var import_react52 = require("react");
5520
+ var import_react53 = require("react");
5473
5521
  var import_editor_ui11 = require("@elementor/editor-ui");
5474
5522
  var import_icons23 = require("@elementor/icons");
5475
5523
  var import_session2 = require("@elementor/session");
@@ -5737,7 +5785,7 @@ var FontAwesomeGlyph = ({ icon, size, color, label }) => {
5737
5785
 
5738
5786
  // src/controls/icon-library/icon-library-filter.tsx
5739
5787
  var React82 = __toESM(require("react"));
5740
- var import_react49 = require("react");
5788
+ var import_react50 = require("react");
5741
5789
  var import_icons21 = require("@elementor/icons");
5742
5790
  var import_ui64 = require("@elementor/ui");
5743
5791
  var import_i18n32 = require("@wordpress/i18n");
@@ -5772,7 +5820,7 @@ var LIBRARY_FILTER_CONFIG = {
5772
5820
  }
5773
5821
  };
5774
5822
  var IconLibraryFilter = ({ value, onChange }) => {
5775
- const popupId = (0, import_react49.useId)();
5823
+ const popupId = (0, import_react50.useId)();
5776
5824
  const popupState = (0, import_ui64.usePopupState)({
5777
5825
  variant: "popover",
5778
5826
  popupId
@@ -5868,7 +5916,7 @@ var renderFilterMenuItemContent = (label, Icon, selected) => /* @__PURE__ */ Rea
5868
5916
 
5869
5917
  // src/controls/icon-library/icon-library-grid.tsx
5870
5918
  var React83 = __toESM(require("react"));
5871
- var import_react50 = require("react");
5919
+ var import_react51 = require("react");
5872
5920
  var import_ui65 = require("@elementor/ui");
5873
5921
  var import_react_virtual = require("@tanstack/react-virtual");
5874
5922
  var import_i18n33 = require("@wordpress/i18n");
@@ -5906,12 +5954,12 @@ var IconLibraryGrid = ({
5906
5954
  noResultsComponent
5907
5955
  }) => {
5908
5956
  const theme = (0, import_ui65.useTheme)();
5909
- const containerRef = (0, import_react50.useRef)(null);
5910
- const cellRefs = (0, import_react50.useRef)(/* @__PURE__ */ new Map());
5911
- const shouldRestoreFocusRef = (0, import_react50.useRef)(false);
5957
+ const containerRef = (0, import_react51.useRef)(null);
5958
+ const cellRefs = (0, import_react51.useRef)(/* @__PURE__ */ new Map());
5959
+ const shouldRestoreFocusRef = (0, import_react51.useRef)(false);
5912
5960
  const selectedIndex = items2.findIndex((item) => item.id === selectedValue);
5913
- const [focusedIndex, setFocusedIndex] = (0, import_react50.useState)(selectedIndex >= 0 ? selectedIndex : 0);
5914
- const [{ columnCount, cellSize }, setGridMetrics] = (0, import_react50.useState)(() => getGridMetrics(0, 0, 0));
5961
+ const [focusedIndex, setFocusedIndex] = (0, import_react51.useState)(selectedIndex >= 0 ? selectedIndex : 0);
5962
+ const [{ columnCount, cellSize }, setGridMetrics] = (0, import_react51.useState)(() => getGridMetrics(0, 0, 0));
5915
5963
  const rowCount = Math.ceil(items2.length / columnCount);
5916
5964
  const virtualizer = (0, import_react_virtual.useVirtualizer)({
5917
5965
  count: rowCount,
@@ -5921,7 +5969,7 @@ var IconLibraryGrid = ({
5921
5969
  });
5922
5970
  const focusedItem = items2[focusedIndex];
5923
5971
  const visibleRowIndexes = virtualizer.getVirtualIndexes().join(",");
5924
- (0, import_react50.useLayoutEffect)(() => {
5972
+ (0, import_react51.useLayoutEffect)(() => {
5925
5973
  setFocusedIndex((current) => {
5926
5974
  if (items2.length === 0) {
5927
5975
  return 0;
@@ -5935,7 +5983,7 @@ var IconLibraryGrid = ({
5935
5983
  virtualizer.scrollToIndex(Math.floor(selectedIndex / columnCount));
5936
5984
  }
5937
5985
  }, [columnCount, items2, selectedIndex, selectedValue]);
5938
- (0, import_react50.useLayoutEffect)(() => {
5986
+ (0, import_react51.useLayoutEffect)(() => {
5939
5987
  if (!shouldRestoreFocusRef.current || !focusedItem) {
5940
5988
  return;
5941
5989
  }
@@ -5946,7 +5994,7 @@ var IconLibraryGrid = ({
5946
5994
  cell.focus();
5947
5995
  shouldRestoreFocusRef.current = false;
5948
5996
  }, [focusedItem, visibleRowIndexes]);
5949
- (0, import_react50.useLayoutEffect)(() => {
5997
+ (0, import_react51.useLayoutEffect)(() => {
5950
5998
  const container = containerRef.current;
5951
5999
  if (!container) {
5952
6000
  return;
@@ -5963,7 +6011,7 @@ var IconLibraryGrid = ({
5963
6011
  resizeObserver.disconnect();
5964
6012
  };
5965
6013
  }, [theme, items2.length]);
5966
- (0, import_react50.useLayoutEffect)(() => {
6014
+ (0, import_react51.useLayoutEffect)(() => {
5967
6015
  virtualizer.measure();
5968
6016
  }, [cellSize, columnCount]);
5969
6017
  const isRtl = theme.direction === "rtl" || document.documentElement.dir === "rtl";
@@ -6160,13 +6208,13 @@ var IconLibraryGrid = ({
6160
6208
 
6161
6209
  // src/controls/icon-library/icon-library-view-toggle.tsx
6162
6210
  var React84 = __toESM(require("react"));
6163
- var import_react51 = require("react");
6211
+ var import_react52 = require("react");
6164
6212
  var import_icons22 = require("@elementor/icons");
6165
6213
  var import_ui66 = require("@elementor/ui");
6166
6214
  var import_i18n34 = require("@wordpress/i18n");
6167
6215
  var VIEW_MENU_WIDTH = 122;
6168
6216
  var IconLibraryViewToggle = ({ value, onChange }) => {
6169
- const popupId = (0, import_react51.useId)();
6217
+ const popupId = (0, import_react52.useId)();
6170
6218
  const popupState = (0, import_ui66.usePopupState)({
6171
6219
  variant: "popover",
6172
6220
  popupId
@@ -6277,18 +6325,18 @@ var IconLibraryPopover = ({
6277
6325
  handleChange: handleSearchChange,
6278
6326
  setImmediateValue: setSearchValue
6279
6327
  } = (0, import_utils6.useDebounceState)({ delay: ICON_LIBRARY_SEARCH_DEBOUNCE_DELAY });
6280
- const [activeLibraries, setActiveLibraries] = (0, import_react52.useState)([]);
6328
+ const [activeLibraries, setActiveLibraries] = (0, import_react53.useState)([]);
6281
6329
  const [storedView, setStoredView] = (0, import_session2.useSessionStorage)(
6282
6330
  ICON_LIBRARY_VIEW_STORAGE_KEY,
6283
6331
  ICON_LIBRARY_VIEW_STORAGE_PREFIX
6284
6332
  );
6285
6333
  const view = isIconLibraryView(storedView) ? storedView : DEFAULT_ICON_LIBRARY_VIEW;
6286
6334
  const { data: icons = [], isLoading } = useFontAwesome7Catalog(open);
6287
- const items2 = (0, import_react52.useMemo)(
6335
+ const items2 = (0, import_react53.useMemo)(
6288
6336
  () => createIconLibraryItems(icons, searchValue, activeLibraries),
6289
6337
  [activeLibraries, icons, searchValue]
6290
6338
  );
6291
- const selectedValue = (0, import_react52.useMemo)(
6339
+ const selectedValue = (0, import_react53.useMemo)(
6292
6340
  () => findFontAwesome7Icon(icons, selectedIconClass, selectedIconLibrary)?.id,
6293
6341
  [icons, selectedIconClass, selectedIconLibrary]
6294
6342
  );
@@ -6634,11 +6682,11 @@ var SvgMediaControl = createControl(({ showIconLibrary = false }) => {
6634
6682
  const { data: attachment, isFetching } = (0, import_wp_media2.useWpMediaAttachment)(id?.value || null);
6635
6683
  const src = attachment?.url ?? url?.value ?? null;
6636
6684
  const { data: allowSvgUpload } = useUnfilteredFilesUpload();
6637
- const [unfilteredModalOpenState, setUnfilteredModalOpenState] = (0, import_react53.useState)(false);
6685
+ const [unfilteredModalOpenState, setUnfilteredModalOpenState] = (0, import_react54.useState)(false);
6638
6686
  const iconLibraryPopoverState = (0, import_ui70.usePopupState)({ variant: "popover" });
6639
- const controlContainerRef = (0, import_react53.useRef)(null);
6640
- const buttonGroupRef = (0, import_react53.useRef)(null);
6641
- const [iconLibraryAnchor, setIconLibraryAnchor] = (0, import_react53.useState)(null);
6687
+ const controlContainerRef = (0, import_react54.useRef)(null);
6688
+ const buttonGroupRef = (0, import_react54.useRef)(null);
6689
+ const [iconLibraryAnchor, setIconLibraryAnchor] = (0, import_react54.useState)(null);
6642
6690
  const { isAdmin } = (0, import_editor_current_user.useCurrentUserCapabilities)();
6643
6691
  const selectedIconClass = showIconLibrary && typeof iconValue?.value?.value === "string" ? iconValue.value.value : null;
6644
6692
  const selectedIconLibrary = showIconLibrary && typeof iconValue?.library?.value === "string" ? iconValue.library.value : null;
@@ -6690,7 +6738,7 @@ var SvgMediaControl = createControl(({ showIconLibrary = false }) => {
6690
6738
  setIconLibraryAnchor(anchor);
6691
6739
  iconLibraryPopoverState.open(event);
6692
6740
  };
6693
- (0, import_react53.useEffect)(() => {
6741
+ (0, import_react54.useEffect)(() => {
6694
6742
  if (!iconLibraryPopoverState.isOpen) {
6695
6743
  return;
6696
6744
  }
@@ -6992,7 +7040,7 @@ var BackgroundImageOverlayAttachment = () => {
6992
7040
 
6993
7041
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
6994
7042
  var React92 = __toESM(require("react"));
6995
- var import_react54 = require("react");
7043
+ var import_react55 = require("react");
6996
7044
  var import_editor_props38 = require("@elementor/editor-props");
6997
7045
  var import_editor_ui12 = require("@elementor/editor-ui");
6998
7046
  var import_icons27 = require("@elementor/icons");
@@ -7014,7 +7062,7 @@ var BackgroundImageOverlayPosition = () => {
7014
7062
  const backgroundImageOffsetContext = useBoundProp(import_editor_props38.backgroundImagePositionOffsetPropTypeUtil);
7015
7063
  const stringPropContext = useBoundProp(import_editor_props38.stringPropTypeUtil);
7016
7064
  const isCustom = !!backgroundImageOffsetContext.value;
7017
- const rowRef = (0, import_react54.useRef)(null);
7065
+ const rowRef = (0, import_react55.useRef)(null);
7018
7066
  const handlePositionChange = (event) => {
7019
7067
  const value = event.target.value || null;
7020
7068
  if (value === "custom") {
@@ -7087,7 +7135,7 @@ var BackgroundImageOverlayRepeat = () => {
7087
7135
 
7088
7136
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
7089
7137
  var React94 = __toESM(require("react"));
7090
- var import_react55 = require("react");
7138
+ var import_react56 = require("react");
7091
7139
  var import_editor_props39 = require("@elementor/editor-props");
7092
7140
  var import_icons29 = require("@elementor/icons");
7093
7141
  var import_ui76 = require("@elementor/ui");
@@ -7122,7 +7170,7 @@ var BackgroundImageOverlaySize = () => {
7122
7170
  const backgroundImageScaleContext = useBoundProp(import_editor_props39.backgroundImageSizeScalePropTypeUtil);
7123
7171
  const stringPropContext = useBoundProp(import_editor_props39.stringPropTypeUtil);
7124
7172
  const isCustom = !!backgroundImageScaleContext.value;
7125
- const rowRef = (0, import_react55.useRef)(null);
7173
+ const rowRef = (0, import_react56.useRef)(null);
7126
7174
  const handleSizeChange = (size) => {
7127
7175
  if (size === "custom") {
7128
7176
  backgroundImageScaleContext.setValue({ width: null, height: null });
@@ -7157,7 +7205,7 @@ var BackgroundImageOverlaySize = () => {
7157
7205
  };
7158
7206
 
7159
7207
  // src/controls/background-control/background-overlay/use-background-tabs-history.ts
7160
- var import_react56 = require("react");
7208
+ var import_react57 = require("react");
7161
7209
  var import_editor_props40 = require("@elementor/editor-props");
7162
7210
  var import_ui77 = require("@elementor/ui");
7163
7211
  var useBackgroundTabsHistory = ({
@@ -7178,7 +7226,7 @@ var useBackgroundTabsHistory = ({
7178
7226
  return "image";
7179
7227
  };
7180
7228
  const { getTabsProps, getTabProps, getTabPanelProps } = (0, import_ui77.useTabs)(getCurrentOverlayType());
7181
- const valuesHistory = (0, import_react56.useRef)({
7229
+ const valuesHistory = (0, import_react57.useRef)({
7182
7230
  image: initialBackgroundImageOverlay,
7183
7231
  color: initialBackgroundColorOverlay2,
7184
7232
  gradient: initialBackgroundGradientOverlay2
@@ -7425,7 +7473,7 @@ var BackgroundClipField = () => {
7425
7473
 
7426
7474
  // src/controls/repeatable-control.tsx
7427
7475
  var React97 = __toESM(require("react"));
7428
- var import_react57 = require("react");
7476
+ var import_react58 = require("react");
7429
7477
  var import_editor_props43 = require("@elementor/editor-props");
7430
7478
  var import_ui80 = require("@elementor/ui");
7431
7479
  var PLACEHOLDER_REGEX = /\$\{([^}]+)\}/g;
@@ -7446,11 +7494,11 @@ var RepeatableControl = createControl(
7446
7494
  if (!childPropTypeUtil) {
7447
7495
  return null;
7448
7496
  }
7449
- const childArrayPropTypeUtil2 = (0, import_react57.useMemo)(
7497
+ const childArrayPropTypeUtil2 = (0, import_react58.useMemo)(
7450
7498
  () => (0, import_editor_props43.createArrayPropUtils)(childPropTypeUtil.key, childPropTypeUtil.schema, propKey),
7451
7499
  [childPropTypeUtil.key, childPropTypeUtil.schema, propKey]
7452
7500
  );
7453
- const contextValue = (0, import_react57.useMemo)(
7501
+ const contextValue = (0, import_react58.useMemo)(
7454
7502
  () => ({
7455
7503
  ...childControlConfig,
7456
7504
  placeholder: placeholder || "",
@@ -7582,7 +7630,7 @@ var getAllProperties = (pattern) => {
7582
7630
 
7583
7631
  // src/controls/key-value-control.tsx
7584
7632
  var React98 = __toESM(require("react"));
7585
- var import_react58 = require("react");
7633
+ var import_react59 = require("react");
7586
7634
  var import_editor_props44 = require("@elementor/editor-props");
7587
7635
  var import_ui81 = require("@elementor/ui");
7588
7636
  var import_i18n46 = require("@wordpress/i18n");
@@ -7609,9 +7657,9 @@ var getInitialFieldValue = (fieldValue) => {
7609
7657
  };
7610
7658
  var KeyValueControl = createControl((props = {}) => {
7611
7659
  const { value, setValue, ...propContext } = useBoundProp(import_editor_props44.keyValuePropTypeUtil);
7612
- const [keyError, setKeyError] = (0, import_react58.useState)("");
7613
- const [valueError, setValueError] = (0, import_react58.useState)("");
7614
- const [sessionState, setSessionState] = (0, import_react58.useState)({
7660
+ const [keyError, setKeyError] = (0, import_react59.useState)("");
7661
+ const [valueError, setValueError] = (0, import_react59.useState)("");
7662
+ const [sessionState, setSessionState] = (0, import_react59.useState)({
7615
7663
  key: getInitialFieldValue(value?.key),
7616
7664
  value: getInitialFieldValue(value?.value)
7617
7665
  });
@@ -7621,7 +7669,7 @@ var KeyValueControl = createControl((props = {}) => {
7621
7669
  keyHelper: void 0,
7622
7670
  valueHelper: void 0
7623
7671
  };
7624
- const [keyRegex, valueRegex, errMsg] = (0, import_react58.useMemo)(
7672
+ const [keyRegex, valueRegex, errMsg] = (0, import_react59.useMemo)(
7625
7673
  () => [
7626
7674
  props.regexKey ? new RegExp(props.regexKey) : void 0,
7627
7675
  props.regexValue ? new RegExp(props.regexValue) : void 0,
@@ -7753,7 +7801,7 @@ var PositionControl = () => {
7753
7801
 
7754
7802
  // src/controls/transform-control/transform-repeater-control.tsx
7755
7803
  var React112 = __toESM(require("react"));
7756
- var import_react66 = require("react");
7804
+ var import_react67 = require("react");
7757
7805
  var import_editor_props54 = require("@elementor/editor-props");
7758
7806
  var import_icons37 = require("@elementor/icons");
7759
7807
  var import_ui95 = require("@elementor/ui");
@@ -7812,7 +7860,7 @@ var import_i18n52 = require("@wordpress/i18n");
7812
7860
 
7813
7861
  // src/controls/transform-control/functions/move.tsx
7814
7862
  var React101 = __toESM(require("react"));
7815
- var import_react59 = require("react");
7863
+ var import_react60 = require("react");
7816
7864
  var import_editor_props47 = require("@elementor/editor-props");
7817
7865
  var import_icons31 = require("@elementor/icons");
7818
7866
  var import_ui84 = require("@elementor/ui");
@@ -7859,7 +7907,7 @@ var moveAxisControls = [
7859
7907
  ];
7860
7908
  var Move = () => {
7861
7909
  const context = useBoundProp(import_editor_props47.moveTransformPropTypeUtil);
7862
- const rowRefs = [(0, import_react59.useRef)(null), (0, import_react59.useRef)(null), (0, import_react59.useRef)(null)];
7910
+ const rowRefs = [(0, import_react60.useRef)(null), (0, import_react60.useRef)(null), (0, import_react60.useRef)(null)];
7863
7911
  return /* @__PURE__ */ React101.createElement(import_ui84.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React101.createElement(PropProvider, { ...context }, /* @__PURE__ */ React101.createElement(PropKeyProvider, { bind: TransformFunctionKeys.move }, moveAxisControls.map((control, index) => /* @__PURE__ */ React101.createElement(
7864
7912
  AxisRow,
7865
7913
  {
@@ -7874,7 +7922,7 @@ var Move = () => {
7874
7922
 
7875
7923
  // src/controls/transform-control/functions/rotate.tsx
7876
7924
  var React102 = __toESM(require("react"));
7877
- var import_react60 = require("react");
7925
+ var import_react61 = require("react");
7878
7926
  var import_editor_props48 = require("@elementor/editor-props");
7879
7927
  var import_icons32 = require("@elementor/icons");
7880
7928
  var import_ui85 = require("@elementor/ui");
@@ -7899,7 +7947,7 @@ var rotateAxisControls = [
7899
7947
  var rotateUnits = ["deg", "rad", "grad", "turn"];
7900
7948
  var Rotate = () => {
7901
7949
  const context = useBoundProp(import_editor_props48.rotateTransformPropTypeUtil);
7902
- const rowRefs = [(0, import_react60.useRef)(null), (0, import_react60.useRef)(null), (0, import_react60.useRef)(null)];
7950
+ const rowRefs = [(0, import_react61.useRef)(null), (0, import_react61.useRef)(null), (0, import_react61.useRef)(null)];
7903
7951
  return /* @__PURE__ */ React102.createElement(import_ui85.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React102.createElement(PropProvider, { ...context }, /* @__PURE__ */ React102.createElement(PropKeyProvider, { bind: TransformFunctionKeys.rotate }, rotateAxisControls.map((control, index) => /* @__PURE__ */ React102.createElement(
7904
7952
  AxisRow,
7905
7953
  {
@@ -7913,7 +7961,7 @@ var Rotate = () => {
7913
7961
 
7914
7962
  // src/controls/transform-control/functions/scale.tsx
7915
7963
  var React104 = __toESM(require("react"));
7916
- var import_react61 = require("react");
7964
+ var import_react62 = require("react");
7917
7965
  var import_editor_props49 = require("@elementor/editor-props");
7918
7966
  var import_icons33 = require("@elementor/icons");
7919
7967
  var import_ui87 = require("@elementor/ui");
@@ -7946,13 +7994,13 @@ var scaleAxisControls = [
7946
7994
  ];
7947
7995
  var Scale = () => {
7948
7996
  const context = useBoundProp(import_editor_props49.scaleTransformPropTypeUtil);
7949
- const rowRefs = [(0, import_react61.useRef)(null), (0, import_react61.useRef)(null), (0, import_react61.useRef)(null)];
7997
+ const rowRefs = [(0, import_react62.useRef)(null), (0, import_react62.useRef)(null), (0, import_react62.useRef)(null)];
7950
7998
  return /* @__PURE__ */ React104.createElement(import_ui87.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React104.createElement(PropProvider, { ...context }, /* @__PURE__ */ React104.createElement(PropKeyProvider, { bind: TransformFunctionKeys.scale }, scaleAxisControls.map((control, index) => /* @__PURE__ */ React104.createElement(ScaleAxisRow, { key: control.bind, ...control, anchorRef: rowRefs[index] })))));
7951
7999
  };
7952
8000
 
7953
8001
  // src/controls/transform-control/functions/skew.tsx
7954
8002
  var React105 = __toESM(require("react"));
7955
- var import_react62 = require("react");
8003
+ var import_react63 = require("react");
7956
8004
  var import_editor_props50 = require("@elementor/editor-props");
7957
8005
  var import_icons34 = require("@elementor/icons");
7958
8006
  var import_ui88 = require("@elementor/ui");
@@ -7972,7 +8020,7 @@ var skewAxisControls = [
7972
8020
  var skewUnits = ["deg", "rad", "grad", "turn"];
7973
8021
  var Skew = () => {
7974
8022
  const context = useBoundProp(import_editor_props50.skewTransformPropTypeUtil);
7975
- const rowRefs = [(0, import_react62.useRef)(null), (0, import_react62.useRef)(null), (0, import_react62.useRef)(null)];
8023
+ const rowRefs = [(0, import_react63.useRef)(null), (0, import_react63.useRef)(null), (0, import_react63.useRef)(null)];
7976
8024
  return /* @__PURE__ */ React105.createElement(import_ui88.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React105.createElement(PropProvider, { ...context }, /* @__PURE__ */ React105.createElement(PropKeyProvider, { bind: TransformFunctionKeys.skew }, skewAxisControls.map((control, index) => /* @__PURE__ */ React105.createElement(
7977
8025
  AxisRow,
7978
8026
  {
@@ -7985,7 +8033,7 @@ var Skew = () => {
7985
8033
  };
7986
8034
 
7987
8035
  // src/controls/transform-control/use-transform-tabs-history.tsx
7988
- var import_react63 = require("react");
8036
+ var import_react64 = require("react");
7989
8037
  var import_editor_props51 = require("@elementor/editor-props");
7990
8038
  var import_ui89 = require("@elementor/ui");
7991
8039
  var useTransformTabsHistory = ({
@@ -8012,7 +8060,7 @@ var useTransformTabsHistory = ({
8012
8060
  }
8013
8061
  };
8014
8062
  const { getTabsProps, getTabProps, getTabPanelProps } = (0, import_ui89.useTabs)(getCurrentTransformType());
8015
- const valuesHistory = (0, import_react63.useRef)({
8063
+ const valuesHistory = (0, import_react64.useRef)({
8016
8064
  move: initialMove,
8017
8065
  scale: initialScale,
8018
8066
  rotate: initialRotate,
@@ -8156,7 +8204,7 @@ var import_i18n56 = require("@wordpress/i18n");
8156
8204
 
8157
8205
  // src/controls/transform-control/transform-base-controls/children-perspective-control.tsx
8158
8206
  var React109 = __toESM(require("react"));
8159
- var import_react64 = require("react");
8207
+ var import_react65 = require("react");
8160
8208
  var import_editor_props52 = require("@elementor/editor-props");
8161
8209
  var import_ui92 = require("@elementor/ui");
8162
8210
  var import_i18n54 = require("@wordpress/i18n");
@@ -8188,13 +8236,13 @@ var PerspectiveOriginControlProvider = () => {
8188
8236
  return /* @__PURE__ */ React109.createElement(PropProvider, { ...context }, CHILDREN_PERSPECTIVE_FIELDS.map((control) => /* @__PURE__ */ React109.createElement(PropKeyProvider, { bind: control.bind, key: control.bind }, /* @__PURE__ */ React109.createElement(ControlFields, { control }))));
8189
8237
  };
8190
8238
  var ControlFields = ({ control }) => {
8191
- const rowRef = (0, import_react64.useRef)(null);
8239
+ const rowRef = (0, import_react65.useRef)(null);
8192
8240
  return /* @__PURE__ */ React109.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React109.createElement(import_ui92.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React109.createElement(ControlFormLabel, null, control.label)), /* @__PURE__ */ React109.createElement(import_ui92.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React109.createElement(SizeControl, { variant: "length", units: control.units, anchorRef: rowRef, disableCustom: true })));
8193
8241
  };
8194
8242
 
8195
8243
  // src/controls/transform-control/transform-base-controls/transform-origin-control.tsx
8196
8244
  var React110 = __toESM(require("react"));
8197
- var import_react65 = require("react");
8245
+ var import_react66 = require("react");
8198
8246
  var import_editor_props53 = require("@elementor/editor-props");
8199
8247
  var import_ui93 = require("@elementor/ui");
8200
8248
  var import_i18n55 = require("@wordpress/i18n");
@@ -8222,7 +8270,7 @@ var TransformOriginControl = () => {
8222
8270
  };
8223
8271
  var ControlFields2 = ({ control }) => {
8224
8272
  const context = useBoundProp(import_editor_props53.transformOriginPropTypeUtil);
8225
- const rowRef = (0, import_react65.useRef)(null);
8273
+ const rowRef = (0, import_react66.useRef)(null);
8226
8274
  return /* @__PURE__ */ React110.createElement(PropProvider, { ...context }, /* @__PURE__ */ React110.createElement(PropKeyProvider, { bind: control.bind }, /* @__PURE__ */ React110.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React110.createElement(import_ui93.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React110.createElement(ControlFormLabel, null, control.label)), /* @__PURE__ */ React110.createElement(import_ui93.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React110.createElement(SizeControl, { variant: "length", units: control.units, anchorRef: rowRef })))));
8227
8275
  };
8228
8276
 
@@ -8270,7 +8318,7 @@ var SIZE11 = "tiny";
8270
8318
  var TransformRepeaterControl = createControl(
8271
8319
  ({ showChildrenPerspective }) => {
8272
8320
  const context = useBoundProp(import_editor_props54.transformPropTypeUtil);
8273
- const headerRef = (0, import_react66.useRef)(null);
8321
+ const headerRef = (0, import_react67.useRef)(null);
8274
8322
  const popupState = (0, import_ui95.usePopupState)({ variant: "popover" });
8275
8323
  return /* @__PURE__ */ React112.createElement(PropProvider, { ...context }, /* @__PURE__ */ React112.createElement(
8276
8324
  TransformSettingsControl,
@@ -8350,7 +8398,7 @@ var TransformBasePopoverTrigger = ({
8350
8398
 
8351
8399
  // src/controls/transition-control/transition-repeater-control.tsx
8352
8400
  var React115 = __toESM(require("react"));
8353
- var import_react69 = require("react");
8401
+ var import_react70 = require("react");
8354
8402
  var import_editor_props57 = require("@elementor/editor-props");
8355
8403
  var import_icons39 = require("@elementor/icons");
8356
8404
  var import_ui98 = require("@elementor/ui");
@@ -8359,15 +8407,15 @@ var import_i18n60 = require("@wordpress/i18n");
8359
8407
 
8360
8408
  // src/controls/selection-size-control.tsx
8361
8409
  var React113 = __toESM(require("react"));
8362
- var import_react67 = require("react");
8410
+ var import_react68 = require("react");
8363
8411
  var import_editor_props55 = require("@elementor/editor-props");
8364
8412
  var import_ui96 = require("@elementor/ui");
8365
8413
  var SelectionSizeControl = createControl(
8366
8414
  ({ selectionLabel, sizeLabel, selectionConfig, sizeConfigMap }) => {
8367
8415
  const { value, setValue, propType } = useBoundProp(import_editor_props55.selectionSizePropTypeUtil);
8368
- const rowRef = (0, import_react67.useRef)(null);
8416
+ const rowRef = (0, import_react68.useRef)(null);
8369
8417
  const sizeFieldId = sizeLabel.replace(/\s+/g, "-").toLowerCase();
8370
- const currentSizeConfig = (0, import_react67.useMemo)(() => {
8418
+ const currentSizeConfig = (0, import_react68.useMemo)(() => {
8371
8419
  switch (value.selection.$$type) {
8372
8420
  case "key-value":
8373
8421
  return sizeConfigMap[value?.selection?.value.value.value || ""];
@@ -8580,7 +8628,7 @@ function subscribeToTransitionEvent() {
8580
8628
 
8581
8629
  // src/controls/transition-control/transition-selector.tsx
8582
8630
  var React114 = __toESM(require("react"));
8583
- var import_react68 = require("react");
8631
+ var import_react69 = require("react");
8584
8632
  var import_editor_props56 = require("@elementor/editor-props");
8585
8633
  var import_editor_ui15 = require("@elementor/editor-ui");
8586
8634
  var import_icons38 = require("@elementor/icons");
@@ -8666,9 +8714,9 @@ var TransitionSelector = ({
8666
8714
  const {
8667
8715
  key: { value: transitionLabel }
8668
8716
  } = value;
8669
- const defaultRef = (0, import_react68.useRef)(null);
8717
+ const defaultRef = (0, import_react69.useRef)(null);
8670
8718
  const popoverState = (0, import_ui97.usePopupState)({ variant: "popover" });
8671
- const disabledCategories = (0, import_react68.useMemo)(() => {
8719
+ const disabledCategories = (0, import_react69.useMemo)(() => {
8672
8720
  return new Set(
8673
8721
  transitionProperties.filter((cat) => cat.properties.some((prop) => prop.isDisabled)).map((cat) => cat.label)
8674
8722
  );
@@ -8894,14 +8942,14 @@ var TransitionRepeaterControl = createControl(
8894
8942
  currentStyleState
8895
8943
  }) => {
8896
8944
  const currentStyleIsNormal = currentStyleState === null;
8897
- const [recentlyUsedList, setRecentlyUsedList] = (0, import_react69.useState)([]);
8945
+ const [recentlyUsedList, setRecentlyUsedList] = (0, import_react70.useState)([]);
8898
8946
  const proInstalled = (0, import_utils8.hasProInstalled)();
8899
8947
  const { value, setValue } = useBoundProp(childArrayPropTypeUtil);
8900
- const { allDisabled: disabledItems, proDisabled: proDisabledItems } = (0, import_react69.useMemo)(
8948
+ const { allDisabled: disabledItems, proDisabled: proDisabledItems } = (0, import_react70.useMemo)(
8901
8949
  () => getDisabledItemLabels(value),
8902
8950
  [value]
8903
8951
  );
8904
- const allowedTransitionSet = (0, import_react69.useMemo)(() => {
8952
+ const allowedTransitionSet = (0, import_react70.useMemo)(() => {
8905
8953
  const set = /* @__PURE__ */ new Set();
8906
8954
  transitionProperties.forEach((category) => {
8907
8955
  category.properties.forEach((prop) => {
@@ -8912,7 +8960,7 @@ var TransitionRepeaterControl = createControl(
8912
8960
  });
8913
8961
  return set;
8914
8962
  }, [proInstalled]);
8915
- (0, import_react69.useEffect)(() => {
8963
+ (0, import_react70.useEffect)(() => {
8916
8964
  if (!value || value.length === 0) {
8917
8965
  return;
8918
8966
  }
@@ -8924,10 +8972,10 @@ var TransitionRepeaterControl = createControl(
8924
8972
  setValue(sanitized);
8925
8973
  }
8926
8974
  }, [allowedTransitionSet]);
8927
- (0, import_react69.useEffect)(() => {
8975
+ (0, import_react70.useEffect)(() => {
8928
8976
  recentlyUsedListGetter().then(setRecentlyUsedList);
8929
8977
  }, [recentlyUsedListGetter]);
8930
- const allPropertiesUsed = (0, import_react69.useMemo)(() => areAllPropertiesUsed(value), [value]);
8978
+ const allPropertiesUsed = (0, import_react70.useMemo)(() => areAllPropertiesUsed(value), [value]);
8931
8979
  const isAddItemDisabled = !currentStyleIsNormal || allPropertiesUsed;
8932
8980
  return /* @__PURE__ */ React115.createElement(
8933
8981
  RepeatableControl,
@@ -9210,13 +9258,13 @@ var BoundTimeStringControl = ({ bind, ariaLabel }) => {
9210
9258
 
9211
9259
  // src/controls/inline-editing-control.tsx
9212
9260
  var React124 = __toESM(require("react"));
9213
- var import_react75 = require("react");
9261
+ var import_react76 = require("react");
9214
9262
  var import_editor_props65 = require("@elementor/editor-props");
9215
9263
  var import_ui107 = require("@elementor/ui");
9216
9264
 
9217
9265
  // src/components/inline-editor.tsx
9218
9266
  var React121 = __toESM(require("react"));
9219
- var import_react70 = require("react");
9267
+ var import_react71 = require("react");
9220
9268
  var import_ui104 = require("@elementor/ui");
9221
9269
  var import_extension_bold = __toESM(require("@tiptap/extension-bold"));
9222
9270
  var import_extension_document = __toESM(require("@tiptap/extension-document"));
@@ -9230,7 +9278,7 @@ var import_extension_subscript = __toESM(require("@tiptap/extension-subscript"))
9230
9278
  var import_extension_superscript = __toESM(require("@tiptap/extension-superscript"));
9231
9279
  var import_extension_text = __toESM(require("@tiptap/extension-text"));
9232
9280
  var import_extension_underline = __toESM(require("@tiptap/extension-underline"));
9233
- var import_react71 = require("@tiptap/react");
9281
+ var import_react72 = require("@tiptap/react");
9234
9282
 
9235
9283
  // src/utils/inline-editing.ts
9236
9284
  var import_editor_props64 = require("@elementor/editor-props");
@@ -9279,8 +9327,8 @@ var InlineEditor = React121.forwardRef((props, ref) => {
9279
9327
  onSelectionEnd,
9280
9328
  mountElement = null
9281
9329
  } = props;
9282
- const containerRef = (0, import_react70.useRef)(null);
9283
- const onBlurRef = (0, import_react70.useRef)(onBlur);
9330
+ const containerRef = (0, import_react71.useRef)(null);
9331
+ const onBlurRef = (0, import_react71.useRef)(onBlur);
9284
9332
  onBlurRef.current = onBlur;
9285
9333
  const documentContentSettings = !!expectedTag ? "block+" : "inline*";
9286
9334
  const onUpdate = ({ editor: updatedEditor }) => {
@@ -9302,7 +9350,7 @@ var InlineEditor = React121.forwardRef((props, ref) => {
9302
9350
  ...HTMLAttributes,
9303
9351
  class: elementClasses
9304
9352
  });
9305
- const editor = (0, import_react71.useEditor)({
9353
+ const editor = (0, import_react72.useEditor)({
9306
9354
  ...mountElement ? { element: mountElement } : {},
9307
9355
  extensions: [
9308
9356
  import_extension_document.default.extend({
@@ -9375,11 +9423,11 @@ var InlineEditor = React121.forwardRef((props, ref) => {
9375
9423
  if (mountElement) {
9376
9424
  return null;
9377
9425
  }
9378
- return /* @__PURE__ */ React121.createElement(import_ui104.Box, { ref: containerRef, sx, className: wrapperClassName }, /* @__PURE__ */ React121.createElement(import_react71.EditorContent, { ref, editor }));
9426
+ return /* @__PURE__ */ React121.createElement(import_ui104.Box, { ref: containerRef, sx, className: wrapperClassName }, /* @__PURE__ */ React121.createElement(import_react72.EditorContent, { ref, editor }));
9379
9427
  });
9380
9428
  var useOnUpdate = (callback, dependencies) => {
9381
- const hasMounted = (0, import_react70.useRef)(false);
9382
- (0, import_react70.useEffect)(() => {
9429
+ const hasMounted = (0, import_react71.useRef)(false);
9430
+ (0, import_react71.useEffect)(() => {
9383
9431
  if (hasMounted.current) {
9384
9432
  callback();
9385
9433
  } else {
@@ -9390,16 +9438,16 @@ var useOnUpdate = (callback, dependencies) => {
9390
9438
 
9391
9439
  // src/components/inline-editor-toolbar.tsx
9392
9440
  var React123 = __toESM(require("react"));
9393
- var import_react73 = require("react");
9441
+ var import_react74 = require("react");
9394
9442
  var import_editor_elements7 = require("@elementor/editor-elements");
9395
9443
  var import_icons41 = require("@elementor/icons");
9396
9444
  var import_ui106 = require("@elementor/ui");
9397
- var import_react74 = require("@tiptap/react");
9445
+ var import_react75 = require("@tiptap/react");
9398
9446
  var import_i18n64 = require("@wordpress/i18n");
9399
9447
 
9400
9448
  // src/components/url-popover.tsx
9401
9449
  var React122 = __toESM(require("react"));
9402
- var import_react72 = require("react");
9450
+ var import_react73 = require("react");
9403
9451
  var import_icons40 = require("@elementor/icons");
9404
9452
  var import_ui105 = require("@elementor/ui");
9405
9453
  var import_i18n63 = require("@wordpress/i18n");
@@ -9412,8 +9460,8 @@ var UrlPopover = ({
9412
9460
  openInNewTab,
9413
9461
  onToggleNewTab
9414
9462
  }) => {
9415
- const inputRef = (0, import_react72.useRef)(null);
9416
- (0, import_react72.useEffect)(() => {
9463
+ const inputRef = (0, import_react73.useRef)(null);
9464
+ (0, import_react73.useEffect)(() => {
9417
9465
  if (popupState.isOpen) {
9418
9466
  requestAnimationFrame(() => inputRef.current?.focus());
9419
9467
  }
@@ -9468,16 +9516,16 @@ var InlineEditorToolbar = ({
9468
9516
  sx = {},
9469
9517
  inControlPanel = false
9470
9518
  }) => {
9471
- const [urlValue, setUrlValue] = (0, import_react73.useState)("");
9472
- const [openInNewTab, setOpenInNewTab] = (0, import_react73.useState)(false);
9473
- const toolbarRef = (0, import_react73.useRef)(null);
9519
+ const [urlValue, setUrlValue] = (0, import_react74.useState)("");
9520
+ const [openInNewTab, setOpenInNewTab] = (0, import_react74.useState)(false);
9521
+ const toolbarRef = (0, import_react74.useRef)(null);
9474
9522
  const linkPopupState = (0, import_ui106.usePopupState)({ variant: "popover" });
9475
9523
  const isElementClickable = elementId ? checkIfElementIsClickable(elementId) : false;
9476
- const editorState = (0, import_react74.useEditorState)({
9524
+ const editorState = (0, import_react75.useEditorState)({
9477
9525
  editor,
9478
9526
  selector: (ctx) => possibleFormats.filter((format) => ctx.editor.isActive(format))
9479
9527
  });
9480
- const formatButtonsList = (0, import_react73.useMemo)(() => {
9528
+ const formatButtonsList = (0, import_react74.useMemo)(() => {
9481
9529
  const buttons = Object.values(formatButtons);
9482
9530
  if (isElementClickable) {
9483
9531
  return buttons.filter((button) => button.action !== "link");
@@ -9514,7 +9562,7 @@ var InlineEditorToolbar = ({
9514
9562
  }
9515
9563
  linkPopupState.close();
9516
9564
  };
9517
- (0, import_react73.useEffect)(() => {
9565
+ (0, import_react74.useEffect)(() => {
9518
9566
  if (!inControlPanel) {
9519
9567
  editor?.commands?.focus();
9520
9568
  }
@@ -9695,8 +9743,8 @@ var InlineEditingControl = createControl(({ sx, attributes, props, context: { el
9695
9743
  const { setValue, placeholder, value } = useBoundProp(import_editor_props65.escapedHtmlPropTypeUtil);
9696
9744
  const { value: rawValue } = usePropKeyContext();
9697
9745
  const content = value ?? extractInlineHtmlContent(rawValue);
9698
- const [editor, setEditor] = (0, import_react75.useState)(null);
9699
- const handleChange = (0, import_react75.useCallback)(
9746
+ const [editor, setEditor] = (0, import_react76.useState)(null);
9747
+ const handleChange = (0, import_react76.useCallback)(
9700
9748
  (newValue) => {
9701
9749
  const html = newValue ?? "";
9702
9750
  setValue(html);
@@ -9878,7 +9926,7 @@ function useFormFieldSuggestions(options) {
9878
9926
 
9879
9927
  // src/controls/email-form-action-control/email-chips-field.tsx
9880
9928
  var React125 = __toESM(require("react"));
9881
- var import_react76 = require("react");
9929
+ var import_react77 = require("react");
9882
9930
  var import_editor_props67 = require("@elementor/editor-props");
9883
9931
  var import_ui108 = require("@elementor/ui");
9884
9932
 
@@ -9916,10 +9964,10 @@ function resolveMention(raw, suggestions) {
9916
9964
  }
9917
9965
  var EmailChipsControl = createControl(({ placeholder, suggestions = [] }) => {
9918
9966
  const { value, setValue, disabled } = useBoundProp(import_editor_props67.stringArrayPropTypeUtil);
9919
- const [inputValue, setInputValue] = (0, import_react76.useState)("");
9967
+ const [inputValue, setInputValue] = (0, import_react77.useState)("");
9920
9968
  const items2 = value || [];
9921
9969
  const selectedValues = items2.map((item) => import_editor_props67.stringPropTypeUtil.extract(item)).filter((val) => val !== null);
9922
- const suggestionOptions = (0, import_react76.useMemo)(
9970
+ const suggestionOptions = (0, import_react77.useMemo)(
9923
9971
  () => suggestions.map((suggestion) => `[${suggestion.value}]`),
9924
9972
  [suggestions]
9925
9973
  );
@@ -10099,7 +10147,7 @@ var AttachmentTypeControl = createControl(({ label, options }) => {
10099
10147
 
10100
10148
  // src/controls/notice-control.tsx
10101
10149
  var React130 = __toESM(require("react"));
10102
- var import_react77 = require("react");
10150
+ var import_react78 = require("react");
10103
10151
  var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
10104
10152
  var import_icons42 = require("@elementor/icons");
10105
10153
  var import_ui113 = require("@elementor/ui");
@@ -10117,7 +10165,7 @@ var markNoticeAsDismissedInSession = (dismissId) => {
10117
10165
  };
10118
10166
  var NoticeControl = createControl(
10119
10167
  ({ noticeType = "info", heading, content, dismissible, buttonText, buttonUrl }) => {
10120
- const [isDismissed, setIsDismissed] = (0, import_react77.useState)(false);
10168
+ const [isDismissed, setIsDismissed] = (0, import_react78.useState)(false);
10121
10169
  if (isDismissed || !content) {
10122
10170
  return null;
10123
10171
  }
@@ -10200,24 +10248,24 @@ var GridSpanControl = createControl(
10200
10248
 
10201
10249
  // src/components/promotions/display-conditions-control.tsx
10202
10250
  var React133 = __toESM(require("react"));
10203
- var import_react79 = require("react");
10251
+ var import_react80 = require("react");
10204
10252
  var import_icons43 = require("@elementor/icons");
10205
10253
  var import_ui116 = require("@elementor/ui");
10206
10254
  var import_i18n68 = require("@wordpress/i18n");
10207
10255
 
10208
10256
  // src/components/promotions/promotion-trigger.tsx
10209
10257
  var React132 = __toESM(require("react"));
10210
- var import_react78 = require("react");
10258
+ var import_react79 = require("react");
10211
10259
  var import_editor_ui19 = require("@elementor/editor-ui");
10212
10260
  var import_ui115 = require("@elementor/ui");
10213
10261
  function getV4Promotion(key) {
10214
10262
  return window.elementor?.config?.v4Promotions?.[key];
10215
10263
  }
10216
- var PromotionTrigger = (0, import_react78.forwardRef)(
10264
+ var PromotionTrigger = (0, import_react79.forwardRef)(
10217
10265
  ({ promotionKey, children, trackingData }, ref) => {
10218
- const [isOpen, setIsOpen] = (0, import_react78.useState)(false);
10266
+ const [isOpen, setIsOpen] = (0, import_react79.useState)(false);
10219
10267
  const promotion = getV4Promotion(promotionKey);
10220
- const toggle = (0, import_react78.useCallback)(() => {
10268
+ const toggle = (0, import_react79.useCallback)(() => {
10221
10269
  setIsOpen((prev) => {
10222
10270
  if (!prev) {
10223
10271
  trackViewPromotion(trackingData);
@@ -10225,7 +10273,7 @@ var PromotionTrigger = (0, import_react78.forwardRef)(
10225
10273
  return !prev;
10226
10274
  });
10227
10275
  }, [trackingData]);
10228
- (0, import_react78.useImperativeHandle)(ref, () => ({ toggle }), [toggle]);
10276
+ (0, import_react79.useImperativeHandle)(ref, () => ({ toggle }), [toggle]);
10229
10277
  return /* @__PURE__ */ React132.createElement(React132.Fragment, null, promotion && /* @__PURE__ */ React132.createElement(
10230
10278
  import_editor_ui19.PromotionInfotip,
10231
10279
  {
@@ -10259,7 +10307,7 @@ var PromotionTrigger = (0, import_react78.forwardRef)(
10259
10307
  var ARIA_LABEL = (0, import_i18n68.__)("Display Conditions", "elementor");
10260
10308
  var TRACKING_DATA = { target_name: "display_conditions", location_l2: "general" };
10261
10309
  var DisplayConditionsControl = createControl(() => {
10262
- const triggerRef = (0, import_react79.useRef)(null);
10310
+ const triggerRef = (0, import_react80.useRef)(null);
10263
10311
  return /* @__PURE__ */ React133.createElement(
10264
10312
  import_ui116.Stack,
10265
10313
  {
@@ -10291,14 +10339,14 @@ var DisplayConditionsControl = createControl(() => {
10291
10339
 
10292
10340
  // src/components/promotions/attributes-control.tsx
10293
10341
  var React134 = __toESM(require("react"));
10294
- var import_react80 = require("react");
10342
+ var import_react81 = require("react");
10295
10343
  var import_icons44 = require("@elementor/icons");
10296
10344
  var import_ui117 = require("@elementor/ui");
10297
10345
  var import_i18n69 = require("@wordpress/i18n");
10298
10346
  var ARIA_LABEL2 = (0, import_i18n69.__)("Attributes", "elementor");
10299
10347
  var TRACKING_DATA2 = { target_name: "attributes", location_l2: "general" };
10300
10348
  var AttributesControl = createControl(() => {
10301
- const triggerRef = (0, import_react80.useRef)(null);
10349
+ const triggerRef = (0, import_react81.useRef)(null);
10302
10350
  return /* @__PURE__ */ React134.createElement(
10303
10351
  import_ui117.Stack,
10304
10352
  {
@@ -10335,7 +10383,7 @@ var ClearIconButton = ({ tooltipText, onClick, disabled, size = "tiny" }) => /*
10335
10383
 
10336
10384
  // src/components/repeater/repeater.tsx
10337
10385
  var React136 = __toESM(require("react"));
10338
- var import_react81 = require("react");
10386
+ var import_react82 = require("react");
10339
10387
  var import_icons46 = require("@elementor/icons");
10340
10388
  var import_ui119 = require("@elementor/ui");
10341
10389
  var import_i18n70 = require("@wordpress/i18n");
@@ -10357,7 +10405,7 @@ var Repeater3 = ({
10357
10405
  isSortable = true,
10358
10406
  adornment = ControlAdornments
10359
10407
  }) => {
10360
- const [openItem, setOpenItem] = (0, import_react81.useState)(initialOpenItem);
10408
+ const [openItem, setOpenItem] = (0, import_react82.useState)(initialOpenItem);
10361
10409
  const uniqueKeys = items2.map(
10362
10410
  (item, index) => isSortable && "getId" in itemSettings ? itemSettings.getId({ item, index }) : String(index)
10363
10411
  );
@@ -10533,10 +10581,10 @@ var RepeaterItem = ({
10533
10581
  ), /* @__PURE__ */ React136.createElement(RepeaterPopover, { width: ref?.getBoundingClientRect().width, ...popoverProps, anchorEl: ref }, /* @__PURE__ */ React136.createElement(import_ui119.Box, null, children({ anchorEl: ref }))));
10534
10582
  };
10535
10583
  var usePopover = (openOnMount, onOpen, onPopoverClose) => {
10536
- const [ref, setRef] = (0, import_react81.useState)(null);
10584
+ const [ref, setRef] = (0, import_react82.useState)(null);
10537
10585
  const popoverState = (0, import_ui119.usePopupState)({ variant: "popover" });
10538
10586
  const popoverProps = (0, import_ui119.bindPopover)(popoverState);
10539
- (0, import_react81.useEffect)(() => {
10587
+ (0, import_react82.useEffect)(() => {
10540
10588
  if (openOnMount && ref) {
10541
10589
  popoverState.open(ref);
10542
10590
  onOpen?.();
@@ -10599,7 +10647,7 @@ var differsFromExternal = (newState, externalState) => {
10599
10647
 
10600
10648
  // src/components/size/unit-select.tsx
10601
10649
  var React137 = __toESM(require("react"));
10602
- var import_react82 = require("react");
10650
+ var import_react83 = require("react");
10603
10651
  var import_editor_ui20 = require("@elementor/editor-ui");
10604
10652
  var import_ui120 = require("@elementor/ui");
10605
10653
  var menuItemContentStyles2 = {
@@ -10610,7 +10658,7 @@ var menuItemContentStyles2 = {
10610
10658
  var UnitSelect = ({ value, showPrimaryColor, onClick, options }) => {
10611
10659
  const popupState = (0, import_ui120.usePopupState)({
10612
10660
  variant: "popover",
10613
- popupId: (0, import_react82.useId)()
10661
+ popupId: (0, import_react83.useId)()
10614
10662
  });
10615
10663
  const handleMenuItemClick = (index) => {
10616
10664
  onClick(options[index]);
@@ -10646,8 +10694,8 @@ var StyledButton3 = (0, import_ui120.styled)(import_ui120.Button, {
10646
10694
 
10647
10695
  // src/components/size/unstable-size-input.tsx
10648
10696
  var React138 = __toESM(require("react"));
10649
- var import_react83 = require("react");
10650
- var UnstableSizeInput = (0, import_react83.forwardRef)(
10697
+ var import_react84 = require("react");
10698
+ var UnstableSizeInput = (0, import_react84.forwardRef)(
10651
10699
  ({ type, value, onChange, onKeyDown, onKeyUp, InputProps, onBlur, focused, disabled }, ref) => {
10652
10700
  return /* @__PURE__ */ React138.createElement(
10653
10701
  NumberInput,
@@ -10715,7 +10763,7 @@ var hasValue = (value) => {
10715
10763
  };
10716
10764
 
10717
10765
  // src/hooks/use-font-families.ts
10718
- var import_react84 = require("react");
10766
+ var import_react85 = require("react");
10719
10767
  var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
10720
10768
  var getFontControlConfig = () => {
10721
10769
  const { controls } = (0, import_editor_v1_adapters4.getElementorConfig)();
@@ -10723,7 +10771,7 @@ var getFontControlConfig = () => {
10723
10771
  };
10724
10772
  var useFontFamilies = () => {
10725
10773
  const { groups, options } = getFontControlConfig();
10726
- return (0, import_react84.useMemo)(() => {
10774
+ return (0, import_react85.useMemo)(() => {
10727
10775
  if (!groups || !options) {
10728
10776
  return [];
10729
10777
  }