@elementor/editor-controls 0.10.0 → 0.12.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 (32) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/index.d.mts +3 -25
  3. package/dist/index.d.ts +3 -25
  4. package/dist/index.js +427 -403
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +400 -369
  7. package/dist/index.mjs.map +1 -1
  8. package/package.json +2 -2
  9. package/src/components/autocomplete.tsx +181 -0
  10. package/src/components/popover-content.tsx +15 -0
  11. package/src/components/popover-grid-container.tsx +20 -0
  12. package/src/components/repeater.tsx +6 -4
  13. package/src/components/section-content.tsx +16 -0
  14. package/src/controls/background-control/background-control.tsx +4 -3
  15. package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx +4 -3
  16. package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx +15 -14
  17. package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx +3 -2
  18. package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx +5 -4
  19. package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +4 -3
  20. package/src/controls/box-shadow-repeater-control.tsx +12 -10
  21. package/src/controls/equal-unequal-sizes-control.tsx +9 -7
  22. package/src/controls/font-family-control.tsx +4 -2
  23. package/src/controls/gap-control.tsx +1 -1
  24. package/src/controls/image-control.tsx +2 -2
  25. package/src/controls/image-media-control.tsx +2 -2
  26. package/src/controls/link-control.tsx +65 -49
  27. package/src/controls/linked-dimensions-control.tsx +1 -1
  28. package/src/controls/select-control.tsx +8 -1
  29. package/src/controls/size-control.tsx +3 -1
  30. package/src/controls/stroke-control.tsx +6 -5
  31. package/src/index.ts +0 -1
  32. package/src/controls/autocomplete-control.tsx +0 -195
package/dist/index.mjs CHANGED
@@ -1,13 +1,8 @@
1
- // src/controls/autocomplete-control.tsx
2
- import * as React5 from "react";
3
- import { XIcon } from "@elementor/icons";
4
- import {
5
- Autocomplete,
6
- Box,
7
- IconButton,
8
- InputAdornment,
9
- TextField
10
- } from "@elementor/ui";
1
+ // src/controls/image-control.tsx
2
+ import * as React10 from "react";
3
+ import { imagePropTypeUtil } from "@elementor/editor-props";
4
+ import { Grid, Stack as Stack2 } from "@elementor/ui";
5
+ import { __ as __2 } from "@wordpress/i18n";
11
6
 
12
7
  // src/bound-prop-context/prop-context.tsx
13
8
  import * as React from "react";
@@ -158,12 +153,19 @@ var resolveUnionPropType = (propType, key) => {
158
153
  return resolvedPropType;
159
154
  };
160
155
 
156
+ // src/components/control-label.tsx
157
+ import * as React3 from "react";
158
+ import { Typography } from "@elementor/ui";
159
+ var ControlLabel = ({ children }) => {
160
+ return /* @__PURE__ */ React3.createElement(Typography, { component: "label", variant: "caption", color: "text.secondary" }, children);
161
+ };
162
+
161
163
  // src/create-control.tsx
162
- import * as React4 from "react";
164
+ import * as React5 from "react";
163
165
  import { ErrorBoundary } from "@elementor/ui";
164
166
 
165
167
  // src/create-control-replacement.tsx
166
- import * as React3 from "react";
168
+ import * as React4 from "react";
167
169
  import { createContext as createContext3, useContext as useContext3 } from "react";
168
170
  var ControlReplacementContext = createContext3(void 0);
169
171
  var ControlReplacementProvider = ({
@@ -171,7 +173,7 @@ var ControlReplacementProvider = ({
171
173
  condition,
172
174
  children
173
175
  }) => {
174
- return /* @__PURE__ */ React3.createElement(ControlReplacementContext.Provider, { value: { component, condition } }, children);
176
+ return /* @__PURE__ */ React4.createElement(ControlReplacementContext.Provider, { value: { component, condition } }, children);
175
177
  };
176
178
  var useControlReplacement = () => {
177
179
  const { value } = useBoundProp();
@@ -200,141 +202,14 @@ function createControl(Component, { supportsReplacements = true } = {}) {
200
202
  return (props) => {
201
203
  const ControlReplacement = useControlReplacement();
202
204
  if (ControlReplacement && supportsReplacements) {
203
- return /* @__PURE__ */ React4.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React4.createElement(ControlReplacement, { ...props }));
205
+ return /* @__PURE__ */ React5.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React5.createElement(ControlReplacement, { ...props }));
204
206
  }
205
- return /* @__PURE__ */ React4.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React4.createElement(Component, { ...props }));
207
+ return /* @__PURE__ */ React5.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React5.createElement(Component, { ...props }));
206
208
  };
207
209
  }
208
210
 
209
- // src/controls/autocomplete-control.tsx
210
- var AutocompleteControl = createControl(
211
- (props) => {
212
- const {
213
- options,
214
- optionRestrictedPropTypeUtil,
215
- onOptionChangeCallback,
216
- onTextChangeCallback,
217
- allowCustomValues = false,
218
- placeholder = "",
219
- minInputLength = 2,
220
- customValue
221
- } = props;
222
- const { value: selectableValue, setValue: setSelectableValue } = useBoundProp(optionRestrictedPropTypeUtil);
223
- const value = selectableValue || customValue || "";
224
- const optionKeys = _factoryFilter(selectableValue || customValue || null, options, minInputLength).map(
225
- ({ id }) => id
226
- );
227
- const allowClear = !!value;
228
- const muiWarningPreventer = allowCustomValues || !!value?.toString()?.length;
229
- const isOptionEqualToValue = () => {
230
- return muiWarningPreventer ? void 0 : () => true;
231
- };
232
- const hasSelectedValue = !!findMatchingOption(options, selectableValue?.toString());
233
- const onOptionChange = (newValue) => {
234
- setSelectableValue(newValue);
235
- onOptionChangeCallback?.(newValue);
236
- };
237
- const onTextChange = (newValue) => {
238
- onTextChangeCallback?.(newValue);
239
- };
240
- return /* @__PURE__ */ React5.createElement(
241
- Autocomplete,
242
- {
243
- forcePopupIcon: false,
244
- disableClearable: true,
245
- freeSolo: allowCustomValues,
246
- value: value?.toString() || "",
247
- size: "tiny",
248
- onChange: (_, newValue) => onOptionChange(Number(newValue)),
249
- readOnly: hasSelectedValue,
250
- options: optionKeys,
251
- getOptionKey: (optionId) => findMatchingOption(options, optionId)?.id || optionId,
252
- getOptionLabel: (optionId) => findMatchingOption(options, optionId)?.label || optionId.toString(),
253
- groupBy: isCategorizedOptionPool(options) ? (optionId) => findMatchingOption(options, optionId)?.groupLabel || optionId : void 0,
254
- isOptionEqualToValue: isOptionEqualToValue(),
255
- filterOptions: () => optionKeys,
256
- renderOption: (optionProps, optionId) => /* @__PURE__ */ React5.createElement(Box, { component: "li", ...optionProps, key: optionProps.id }, findMatchingOption(options, optionId)?.label ?? optionId),
257
- renderInput: (params) => /* @__PURE__ */ React5.createElement(
258
- TextInput,
259
- {
260
- params,
261
- handleChange: onTextChange,
262
- allowClear,
263
- placeholder,
264
- hasSelectedValue
265
- }
266
- )
267
- }
268
- );
269
- }
270
- );
271
- var TextInput = ({
272
- params,
273
- allowClear,
274
- placeholder,
275
- handleChange,
276
- hasSelectedValue
277
- }) => {
278
- const onChange = (event) => {
279
- handleChange(event.target.value);
280
- };
281
- return /* @__PURE__ */ React5.createElement(
282
- TextField,
283
- {
284
- ...params,
285
- placeholder,
286
- onChange,
287
- sx: {
288
- "& .MuiInputBase-input": {
289
- cursor: hasSelectedValue ? "default" : void 0
290
- }
291
- },
292
- InputProps: {
293
- ...params.InputProps,
294
- endAdornment: /* @__PURE__ */ React5.createElement(ClearButton, { params, allowClear, handleChange })
295
- }
296
- }
297
- );
298
- };
299
- var ClearButton = ({
300
- allowClear,
301
- handleChange,
302
- params
303
- }) => /* @__PURE__ */ React5.createElement(InputAdornment, { position: "end" }, allowClear && /* @__PURE__ */ React5.createElement(IconButton, { size: params.size, onClick: () => handleChange(null), sx: { cursor: "pointer" } }, /* @__PURE__ */ React5.createElement(XIcon, { fontSize: params.size })));
304
- function findMatchingOption(options, optionId = null) {
305
- return options.find(({ id }) => optionId?.toString() === id.toString());
306
- }
307
- function isCategorizedOptionPool(options) {
308
- return options.every((option) => "groupLabel" in option);
309
- }
310
- function _factoryFilter(newValue, options, minInputLength) {
311
- if (null === newValue) {
312
- return options;
313
- }
314
- const formattedValue = String(newValue || "")?.toLowerCase();
315
- if (formattedValue.length < minInputLength) {
316
- return new Array(0);
317
- }
318
- return options.filter(
319
- (option) => String(option.id).toLowerCase().includes(formattedValue) || option.label.toLowerCase().includes(formattedValue)
320
- );
321
- }
322
-
323
- // src/controls/image-control.tsx
324
- import * as React11 from "react";
325
- import { imagePropTypeUtil } from "@elementor/editor-props";
326
- import { Grid, Stack as Stack2 } from "@elementor/ui";
327
- import { __ as __2 } from "@wordpress/i18n";
328
-
329
- // src/components/control-label.tsx
330
- import * as React6 from "react";
331
- import { Typography } from "@elementor/ui";
332
- var ControlLabel = ({ children }) => {
333
- return /* @__PURE__ */ React6.createElement(Typography, { component: "label", variant: "caption", color: "text.secondary" }, children);
334
- };
335
-
336
211
  // src/controls/image-media-control.tsx
337
- import * as React9 from "react";
212
+ import * as React8 from "react";
338
213
  import { imageSrcPropTypeUtil } from "@elementor/editor-props";
339
214
  import { UploadIcon } from "@elementor/icons";
340
215
  import { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from "@elementor/ui";
@@ -342,14 +217,14 @@ import { useWpMediaAttachment, useWpMediaFrame } from "@elementor/wp-media";
342
217
  import { __ } from "@wordpress/i18n";
343
218
 
344
219
  // src/control-actions/control-actions.tsx
345
- import * as React8 from "react";
220
+ import * as React7 from "react";
346
221
  import { styled, UnstableFloatingActionBar } from "@elementor/ui";
347
222
 
348
223
  // src/control-actions/control-actions-context.tsx
349
- import * as React7 from "react";
224
+ import * as React6 from "react";
350
225
  import { createContext as createContext4, useContext as useContext4 } from "react";
351
226
  var Context = createContext4(null);
352
- var ControlActionsProvider = ({ children, items }) => /* @__PURE__ */ React7.createElement(Context.Provider, { value: { items } }, children);
227
+ var ControlActionsProvider = ({ children, items }) => /* @__PURE__ */ React6.createElement(Context.Provider, { value: { items } }, children);
353
228
  var useControlActions = () => {
354
229
  const context = useContext4(Context);
355
230
  if (!context) {
@@ -371,8 +246,8 @@ function ControlActions({ children }) {
371
246
  if (items.length === 0) {
372
247
  return children;
373
248
  }
374
- const menuItems = items.map(({ MenuItem: MenuItem5, id }) => /* @__PURE__ */ React8.createElement(MenuItem5, { key: id }));
375
- return /* @__PURE__ */ React8.createElement(FloatingBarContainer, null, /* @__PURE__ */ React8.createElement(UnstableFloatingActionBar, { actions: menuItems }, children));
249
+ const menuItems = items.map(({ MenuItem: MenuItem5, id }) => /* @__PURE__ */ React7.createElement(MenuItem5, { key: id }));
250
+ return /* @__PURE__ */ React7.createElement(FloatingBarContainer, null, /* @__PURE__ */ React7.createElement(UnstableFloatingActionBar, { actions: menuItems }, children));
376
251
  }
377
252
 
378
253
  // src/controls/image-media-control.tsx
@@ -396,7 +271,7 @@ var ImageMediaControl = createControl((props) => {
396
271
  });
397
272
  }
398
273
  });
399
- return /* @__PURE__ */ React9.createElement(ControlActions, null, /* @__PURE__ */ React9.createElement(Card, { variant: "outlined" }, /* @__PURE__ */ React9.createElement(CardMedia, { image: src, sx: { height: 150 } }, isFetching ? /* @__PURE__ */ React9.createElement(Stack, { justifyContent: "center", alignItems: "center", width: "100%", height: "100%" }, /* @__PURE__ */ React9.createElement(CircularProgress, null)) : /* @__PURE__ */ React9.createElement(React9.Fragment, null)), /* @__PURE__ */ React9.createElement(CardOverlay, null, /* @__PURE__ */ React9.createElement(Stack, { gap: 1 }, /* @__PURE__ */ React9.createElement(
274
+ return /* @__PURE__ */ React8.createElement(ControlActions, null, /* @__PURE__ */ React8.createElement(Card, { variant: "outlined" }, /* @__PURE__ */ React8.createElement(CardMedia, { image: src, sx: { height: 150 } }, isFetching ? /* @__PURE__ */ React8.createElement(Stack, { justifyContent: "center", alignItems: "center", width: "100%", height: "100%" }, /* @__PURE__ */ React8.createElement(CircularProgress, null)) : /* @__PURE__ */ React8.createElement(React8.Fragment, null)), /* @__PURE__ */ React8.createElement(CardOverlay, null, /* @__PURE__ */ React8.createElement(Stack, { gap: 1 }, /* @__PURE__ */ React8.createElement(
400
275
  Button,
401
276
  {
402
277
  size: "tiny",
@@ -404,22 +279,22 @@ var ImageMediaControl = createControl((props) => {
404
279
  variant: "outlined",
405
280
  onClick: () => open({ mode: "browse" })
406
281
  },
407
- __("Select Image", "elementor")
408
- ), /* @__PURE__ */ React9.createElement(
282
+ __("Select image", "elementor")
283
+ ), /* @__PURE__ */ React8.createElement(
409
284
  Button,
410
285
  {
411
286
  size: "tiny",
412
287
  variant: "text",
413
288
  color: "inherit",
414
- startIcon: /* @__PURE__ */ React9.createElement(UploadIcon, null),
289
+ startIcon: /* @__PURE__ */ React8.createElement(UploadIcon, null),
415
290
  onClick: () => open({ mode: "upload" })
416
291
  },
417
- __("Upload Image", "elementor")
292
+ __("Upload image", "elementor")
418
293
  )))));
419
294
  });
420
295
 
421
296
  // src/controls/select-control.tsx
422
- import * as React10 from "react";
297
+ import * as React9 from "react";
423
298
  import { stringPropTypeUtil } from "@elementor/editor-props";
424
299
  import { MenuItem, Select } from "@elementor/ui";
425
300
  var SelectControl = createControl(({ options, onChange }) => {
@@ -429,26 +304,37 @@ var SelectControl = createControl(({ options, onChange }) => {
429
304
  onChange?.(newValue, value);
430
305
  setValue(newValue);
431
306
  };
432
- return /* @__PURE__ */ React10.createElement(ControlActions, null, /* @__PURE__ */ React10.createElement(Select, { displayEmpty: true, size: "tiny", value: value ?? "", onChange: handleChange, fullWidth: true }, options.map(({ label, ...props }) => /* @__PURE__ */ React10.createElement(MenuItem, { key: props.value, ...props, value: props.value ?? "" }, label))));
307
+ return /* @__PURE__ */ React9.createElement(ControlActions, null, /* @__PURE__ */ React9.createElement(
308
+ Select,
309
+ {
310
+ sx: { overflow: "hidden" },
311
+ displayEmpty: true,
312
+ size: "tiny",
313
+ value: value ?? "",
314
+ onChange: handleChange,
315
+ fullWidth: true
316
+ },
317
+ options.map(({ label, ...props }) => /* @__PURE__ */ React9.createElement(MenuItem, { key: props.value, ...props, value: props.value ?? "" }, label))
318
+ ));
433
319
  });
434
320
 
435
321
  // src/controls/image-control.tsx
436
322
  var ImageControl = createControl(
437
323
  ({ sizes, resolutionLabel = __2("Image resolution", "elementor") }) => {
438
324
  const propContext = useBoundProp(imagePropTypeUtil);
439
- return /* @__PURE__ */ React11.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React11.createElement(Stack2, { gap: 1.5 }, /* @__PURE__ */ React11.createElement(PropKeyProvider, { bind: "src" }, /* @__PURE__ */ React11.createElement(ControlLabel, null, " ", __2("Choose image", "elementor"), " "), /* @__PURE__ */ React11.createElement(ImageMediaControl, null)), /* @__PURE__ */ React11.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React11.createElement(Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React11.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React11.createElement(ControlLabel, null, " ", resolutionLabel, " ")), /* @__PURE__ */ React11.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React11.createElement(SelectControl, { options: sizes }))))));
325
+ return /* @__PURE__ */ React10.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React10.createElement(Stack2, { gap: 1.5 }, /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "src" }, /* @__PURE__ */ React10.createElement(ControlLabel, null, " ", __2("Choose image", "elementor"), " "), /* @__PURE__ */ React10.createElement(ImageMediaControl, null)), /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React10.createElement(Grid, { container: true, gap: 1.5, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React10.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React10.createElement(ControlLabel, null, " ", resolutionLabel, " ")), /* @__PURE__ */ React10.createElement(Grid, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React10.createElement(SelectControl, { options: sizes }))))));
440
326
  }
441
327
  );
442
328
 
443
329
  // src/controls/text-control.tsx
444
- import * as React12 from "react";
330
+ import * as React11 from "react";
445
331
  import { stringPropTypeUtil as stringPropTypeUtil2 } from "@elementor/editor-props";
446
- import { TextField as TextField2 } from "@elementor/ui";
332
+ import { TextField } from "@elementor/ui";
447
333
  var TextControl = createControl(({ placeholder }) => {
448
334
  const { value, setValue } = useBoundProp(stringPropTypeUtil2);
449
335
  const handleChange = (event) => setValue(event.target.value);
450
- return /* @__PURE__ */ React12.createElement(ControlActions, null, /* @__PURE__ */ React12.createElement(
451
- TextField2,
336
+ return /* @__PURE__ */ React11.createElement(ControlActions, null, /* @__PURE__ */ React11.createElement(
337
+ TextField,
452
338
  {
453
339
  size: "tiny",
454
340
  fullWidth: true,
@@ -460,16 +346,16 @@ var TextControl = createControl(({ placeholder }) => {
460
346
  });
461
347
 
462
348
  // src/controls/text-area-control.tsx
463
- import * as React13 from "react";
349
+ import * as React12 from "react";
464
350
  import { stringPropTypeUtil as stringPropTypeUtil3 } from "@elementor/editor-props";
465
- import { TextField as TextField3 } from "@elementor/ui";
351
+ import { TextField as TextField2 } from "@elementor/ui";
466
352
  var TextAreaControl = createControl(({ placeholder }) => {
467
353
  const { value, setValue } = useBoundProp(stringPropTypeUtil3);
468
354
  const handleChange = (event) => {
469
355
  setValue(event.target.value);
470
356
  };
471
- return /* @__PURE__ */ React13.createElement(ControlActions, null, /* @__PURE__ */ React13.createElement(
472
- TextField3,
357
+ return /* @__PURE__ */ React12.createElement(ControlActions, null, /* @__PURE__ */ React12.createElement(
358
+ TextField2,
473
359
  {
474
360
  size: "tiny",
475
361
  multiline: true,
@@ -483,18 +369,18 @@ var TextAreaControl = createControl(({ placeholder }) => {
483
369
  });
484
370
 
485
371
  // src/controls/size-control.tsx
486
- import * as React15 from "react";
372
+ import * as React14 from "react";
487
373
  import { sizePropTypeUtil } from "@elementor/editor-props";
488
- import { InputAdornment as InputAdornment3 } from "@elementor/ui";
374
+ import { InputAdornment as InputAdornment2 } from "@elementor/ui";
489
375
 
490
376
  // src/components/text-field-inner-selection.tsx
491
- import * as React14 from "react";
377
+ import * as React13 from "react";
492
378
  import { forwardRef, useId } from "react";
493
- import { bindMenu, bindTrigger, Button as Button2, InputAdornment as InputAdornment2, Menu, MenuItem as MenuItem2, TextField as TextField4, usePopupState } from "@elementor/ui";
379
+ import { bindMenu, bindTrigger, Button as Button2, InputAdornment, Menu, MenuItem as MenuItem2, TextField as TextField3, usePopupState } from "@elementor/ui";
494
380
  var TextFieldInnerSelection = forwardRef(
495
381
  ({ placeholder, type, value, onChange, endAdornment, startAdornment }, ref) => {
496
- return /* @__PURE__ */ React14.createElement(
497
- TextField4,
382
+ return /* @__PURE__ */ React13.createElement(
383
+ TextField3,
498
384
  {
499
385
  size: "tiny",
500
386
  fullWidth: true,
@@ -524,7 +410,7 @@ var SelectionEndAdornment = ({
524
410
  onClick(options[index]);
525
411
  popupState.close();
526
412
  };
527
- return /* @__PURE__ */ React14.createElement(InputAdornment2, { position: "end" }, /* @__PURE__ */ React14.createElement(
413
+ return /* @__PURE__ */ React13.createElement(InputAdornment, { position: "end" }, /* @__PURE__ */ React13.createElement(
528
414
  Button2,
529
415
  {
530
416
  size: "small",
@@ -533,7 +419,7 @@ var SelectionEndAdornment = ({
533
419
  ...bindTrigger(popupState)
534
420
  },
535
421
  value.toUpperCase()
536
- ), /* @__PURE__ */ React14.createElement(Menu, { MenuListProps: { dense: true }, ...bindMenu(popupState) }, options.map((option, index) => /* @__PURE__ */ React14.createElement(MenuItem2, { key: option, onClick: () => handleMenuItemClick(index) }, option.toUpperCase()))));
422
+ ), /* @__PURE__ */ React13.createElement(Menu, { MenuListProps: { dense: true }, ...bindMenu(popupState) }, options.map((option, index) => /* @__PURE__ */ React13.createElement(MenuItem2, { key: option, onClick: () => handleMenuItemClick(index) }, option.toUpperCase()))));
537
423
  };
538
424
 
539
425
  // src/hooks/use-sync-external-state.tsx
@@ -594,10 +480,10 @@ var SizeControl = createControl(({ units: units2 = defaultUnits, placeholder, st
594
480
  size: size || size === "0" ? parseFloat(size) : defaultSize
595
481
  }));
596
482
  };
597
- return /* @__PURE__ */ React15.createElement(ControlActions, null, /* @__PURE__ */ React15.createElement(
483
+ return /* @__PURE__ */ React14.createElement(ControlActions, null, /* @__PURE__ */ React14.createElement(
598
484
  TextFieldInnerSelection,
599
485
  {
600
- endAdornment: /* @__PURE__ */ React15.createElement(
486
+ endAdornment: /* @__PURE__ */ React14.createElement(
601
487
  SelectionEndAdornment,
602
488
  {
603
489
  options: units2,
@@ -606,7 +492,7 @@ var SizeControl = createControl(({ units: units2 = defaultUnits, placeholder, st
606
492
  }
607
493
  ),
608
494
  placeholder,
609
- startAdornment: startIcon ?? /* @__PURE__ */ React15.createElement(InputAdornment3, { position: "start" }, startIcon),
495
+ startAdornment: startIcon ? /* @__PURE__ */ React14.createElement(InputAdornment2, { position: "start" }, startIcon) : void 0,
610
496
  type: "number",
611
497
  value: Number.isNaN(state?.size) ? "" : state?.size,
612
498
  onChange: handleSizeChange
@@ -617,9 +503,14 @@ var SizeControl = createControl(({ units: units2 = defaultUnits, placeholder, st
617
503
  // src/controls/stroke-control.tsx
618
504
  import * as React17 from "react";
619
505
  import { strokePropTypeUtil } from "@elementor/editor-props";
620
- import { Grid as Grid2, Stack as Stack3 } from "@elementor/ui";
506
+ import { Grid as Grid2 } from "@elementor/ui";
621
507
  import { __ as __3 } from "@wordpress/i18n";
622
508
 
509
+ // src/components/section-content.tsx
510
+ import * as React15 from "react";
511
+ import { Stack as Stack3 } from "@elementor/ui";
512
+ var SectionContent = ({ gap = 2, sx, children }) => /* @__PURE__ */ React15.createElement(Stack3, { gap, sx: { ...sx } }, children);
513
+
623
514
  // src/controls/color-control.tsx
624
515
  import * as React16 from "react";
625
516
  import { colorPropTypeUtil } from "@elementor/editor-props";
@@ -636,27 +527,42 @@ var ColorControl = createControl(({ propTypeUtil = colorPropTypeUtil, ...props }
636
527
  var units = ["px", "em", "rem"];
637
528
  var StrokeControl = createControl(() => {
638
529
  const propContext = useBoundProp(strokePropTypeUtil);
639
- return /* @__PURE__ */ React17.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React17.createElement(Stack3, { gap: 1.5 }, /* @__PURE__ */ React17.createElement(Control, { bind: "width", label: __3("Stroke Width", "elementor") }, /* @__PURE__ */ React17.createElement(SizeControl, { units })), /* @__PURE__ */ React17.createElement(Control, { bind: "color", label: __3("Stroke Color", "elementor") }, /* @__PURE__ */ React17.createElement(ColorControl, null))));
530
+ return /* @__PURE__ */ React17.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React17.createElement(SectionContent, null, /* @__PURE__ */ React17.createElement(Control, { bind: "width", label: __3("Stroke width", "elementor") }, /* @__PURE__ */ React17.createElement(SizeControl, { units })), /* @__PURE__ */ React17.createElement(Control, { bind: "color", label: __3("Stroke color", "elementor") }, /* @__PURE__ */ React17.createElement(ColorControl, null))));
640
531
  });
641
532
  var Control = ({ bind, label, children }) => /* @__PURE__ */ React17.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React17.createElement(Grid2, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React17.createElement(Grid2, { item: true, xs: 6 }, /* @__PURE__ */ React17.createElement(ControlLabel, null, label)), /* @__PURE__ */ React17.createElement(Grid2, { item: true, xs: 6 }, children)));
642
533
 
643
534
  // src/controls/box-shadow-repeater-control.tsx
644
- import * as React19 from "react";
535
+ import * as React21 from "react";
645
536
  import { boxShadowPropTypeUtil, shadowPropTypeUtil } from "@elementor/editor-props";
646
- import { Grid as Grid3, Stack as Stack5, Typography as Typography3, UnstableColorIndicator } from "@elementor/ui";
537
+ import { Grid as Grid4, Typography as Typography3, UnstableColorIndicator } from "@elementor/ui";
647
538
  import { __ as __5 } from "@wordpress/i18n";
648
539
 
649
- // src/components/repeater.tsx
540
+ // src/components/popover-content.tsx
650
541
  import * as React18 from "react";
542
+ import { Stack as Stack4 } from "@elementor/ui";
543
+ var PopoverContent = ({ alignItems, gap = 1.5, p, children }) => /* @__PURE__ */ React18.createElement(Stack4, { alignItems, gap, p }, children);
544
+
545
+ // src/components/popover-grid-container.tsx
546
+ import * as React19 from "react";
547
+ import { Grid as Grid3 } from "@elementor/ui";
548
+ var PopoverGridContainer = ({
549
+ gap = 1.5,
550
+ alignItems = "center",
551
+ flexWrap = "nowrap",
552
+ children
553
+ }) => /* @__PURE__ */ React19.createElement(Grid3, { container: true, gap, alignItems, flexWrap }, children);
554
+
555
+ // src/components/repeater.tsx
556
+ import * as React20 from "react";
651
557
  import { useRef, useState as useState2 } from "react";
652
- import { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon as XIcon2 } from "@elementor/icons";
558
+ import { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from "@elementor/icons";
653
559
  import {
654
560
  bindPopover,
655
561
  bindTrigger as bindTrigger2,
656
- Box as Box2,
657
- IconButton as IconButton2,
562
+ Box,
563
+ IconButton,
658
564
  Popover,
659
- Stack as Stack4,
565
+ Stack as Stack5,
660
566
  Typography as Typography2,
661
567
  UnstableTag,
662
568
  usePopupState as usePopupState2
@@ -698,19 +604,19 @@ var Repeater = ({
698
604
  })
699
605
  );
700
606
  };
701
- return /* @__PURE__ */ React18.createElement(Stack4, null, /* @__PURE__ */ React18.createElement(Stack4, { direction: "row", justifyContent: "space-between", alignItems: "center", sx: { pb: 1 } }, /* @__PURE__ */ React18.createElement(Typography2, { component: "label", variant: "caption", color: "text.secondary" }, label), /* @__PURE__ */ React18.createElement(IconButton2, { size: SIZE, onClick: addRepeaterItem, "aria-label": __4("Add item", "elementor") }, /* @__PURE__ */ React18.createElement(PlusIcon, { fontSize: SIZE }))), /* @__PURE__ */ React18.createElement(Stack4, { gap: 1 }, repeaterValues.map((value, index) => /* @__PURE__ */ React18.createElement(
607
+ return /* @__PURE__ */ React20.createElement(SectionContent, null, /* @__PURE__ */ React20.createElement(Stack5, { direction: "row", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React20.createElement(Typography2, { component: "label", variant: "caption", color: "text.secondary" }, label), /* @__PURE__ */ React20.createElement(IconButton, { size: SIZE, onClick: addRepeaterItem, "aria-label": __4("Add item", "elementor") }, /* @__PURE__ */ React20.createElement(PlusIcon, { fontSize: SIZE }))), /* @__PURE__ */ React20.createElement(Stack5, { gap: 1, sx: { "&:empty": { display: "none" } } }, repeaterValues.map((value, index) => /* @__PURE__ */ React20.createElement(
702
608
  RepeaterItem,
703
609
  {
704
610
  key: index,
705
611
  bind: String(index),
706
612
  disabled: value.disabled,
707
- label: /* @__PURE__ */ React18.createElement(itemSettings.Label, { value }),
708
- startIcon: /* @__PURE__ */ React18.createElement(itemSettings.Icon, { value }),
613
+ label: /* @__PURE__ */ React20.createElement(itemSettings.Label, { value }),
614
+ startIcon: /* @__PURE__ */ React20.createElement(itemSettings.Icon, { value }),
709
615
  removeItem: () => removeRepeaterItem(index),
710
616
  duplicateItem: () => duplicateRepeaterItem(index),
711
617
  toggleDisableItem: () => toggleDisableRepeaterItem(index)
712
618
  },
713
- (props) => /* @__PURE__ */ React18.createElement(itemSettings.Content, { ...props, value, bind: String(index) })
619
+ (props) => /* @__PURE__ */ React20.createElement(itemSettings.Content, { ...props, value, bind: String(index) })
714
620
  ))));
715
621
  };
716
622
  var RepeaterItem = ({
@@ -728,7 +634,7 @@ var RepeaterItem = ({
728
634
  const [anchorEl, setAnchorEl] = useState2(null);
729
635
  const popoverState = usePopupState2({ popupId, variant: "popover" });
730
636
  const popoverProps = bindPopover(popoverState);
731
- return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
637
+ return /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(
732
638
  UnstableTag,
733
639
  {
734
640
  label,
@@ -738,33 +644,33 @@ var RepeaterItem = ({
738
644
  "aria-label": __4("Open item", "elementor"),
739
645
  ...bindTrigger2(popoverState),
740
646
  startIcon,
741
- actions: /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
742
- IconButton2,
647
+ actions: /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(
648
+ IconButton,
743
649
  {
744
650
  size: SIZE,
745
651
  onClick: duplicateItem,
746
652
  "aria-label": __4("Duplicate item", "elementor")
747
653
  },
748
- /* @__PURE__ */ React18.createElement(CopyIcon, { fontSize: SIZE })
749
- ), /* @__PURE__ */ React18.createElement(
750
- IconButton2,
654
+ /* @__PURE__ */ React20.createElement(CopyIcon, { fontSize: SIZE })
655
+ ), /* @__PURE__ */ React20.createElement(
656
+ IconButton,
751
657
  {
752
658
  size: SIZE,
753
659
  onClick: toggleDisableItem,
754
660
  "aria-label": disabled ? __4("Enable item", "elementor") : __4("Disable item", "elementor")
755
661
  },
756
- disabled ? /* @__PURE__ */ React18.createElement(EyeOffIcon, { fontSize: SIZE }) : /* @__PURE__ */ React18.createElement(EyeIcon, { fontSize: SIZE })
757
- ), /* @__PURE__ */ React18.createElement(
758
- IconButton2,
662
+ disabled ? /* @__PURE__ */ React20.createElement(EyeOffIcon, { fontSize: SIZE }) : /* @__PURE__ */ React20.createElement(EyeIcon, { fontSize: SIZE })
663
+ ), /* @__PURE__ */ React20.createElement(
664
+ IconButton,
759
665
  {
760
666
  size: SIZE,
761
667
  onClick: removeItem,
762
668
  "aria-label": __4("Remove item", "elementor")
763
669
  },
764
- /* @__PURE__ */ React18.createElement(XIcon2, { fontSize: SIZE })
670
+ /* @__PURE__ */ React20.createElement(XIcon, { fontSize: SIZE })
765
671
  ))
766
672
  }
767
- ), /* @__PURE__ */ React18.createElement(
673
+ ), /* @__PURE__ */ React20.createElement(
768
674
  Popover,
769
675
  {
770
676
  disablePortal: true,
@@ -777,14 +683,14 @@ var RepeaterItem = ({
777
683
  anchorOrigin: { vertical: "bottom", horizontal: "left" },
778
684
  ...popoverProps
779
685
  },
780
- /* @__PURE__ */ React18.createElement(Box2, null, children({ anchorEl }))
686
+ /* @__PURE__ */ React20.createElement(Box, null, children({ anchorEl }))
781
687
  ));
782
688
  };
783
689
 
784
690
  // src/controls/box-shadow-repeater-control.tsx
785
691
  var BoxShadowRepeaterControl = createControl(() => {
786
692
  const { propType, value, setValue } = useBoundProp(boxShadowPropTypeUtil);
787
- return /* @__PURE__ */ React19.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React19.createElement(
693
+ return /* @__PURE__ */ React21.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React21.createElement(
788
694
  Repeater,
789
695
  {
790
696
  values: value ?? [],
@@ -799,13 +705,13 @@ var BoxShadowRepeaterControl = createControl(() => {
799
705
  }
800
706
  ));
801
707
  });
802
- var ItemIcon = ({ value }) => /* @__PURE__ */ React19.createElement(UnstableColorIndicator, { size: "inherit", component: "span", value: value.value.color.value });
708
+ var ItemIcon = ({ value }) => /* @__PURE__ */ React21.createElement(UnstableColorIndicator, { size: "inherit", component: "span", value: value.value.color.value });
803
709
  var ItemContent = ({ anchorEl, bind }) => {
804
- return /* @__PURE__ */ React19.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React19.createElement(Content, { anchorEl }));
710
+ return /* @__PURE__ */ React21.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React21.createElement(Content, { anchorEl }));
805
711
  };
806
712
  var Content = ({ anchorEl }) => {
807
713
  const { propType, value, setValue } = useBoundProp(shadowPropTypeUtil);
808
- return /* @__PURE__ */ React19.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React19.createElement(Stack5, { gap: 1.5, sx: { p: 1.5 } }, /* @__PURE__ */ React19.createElement(Grid3, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React19.createElement(Control2, { bind: "color", label: __5("Color", "elementor") }, /* @__PURE__ */ React19.createElement(
714
+ return /* @__PURE__ */ React21.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React21.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React21.createElement(PopoverGridContainer, null, /* @__PURE__ */ React21.createElement(Control2, { bind: "color", label: __5("Color", "elementor") }, /* @__PURE__ */ React21.createElement(
809
715
  ColorControl,
810
716
  {
811
717
  slotProps: {
@@ -822,7 +728,7 @@ var Content = ({ anchorEl }) => {
822
728
  }
823
729
  }
824
730
  }
825
- )), /* @__PURE__ */ React19.createElement(Control2, { bind: "position", label: __5("Position", "elementor") }, /* @__PURE__ */ React19.createElement(
731
+ )), /* @__PURE__ */ React21.createElement(Control2, { bind: "position", label: __5("Position", "elementor") }, /* @__PURE__ */ React21.createElement(
826
732
  SelectControl,
827
733
  {
828
734
  options: [
@@ -830,9 +736,9 @@ var Content = ({ anchorEl }) => {
830
736
  { label: __5("Outset", "elementor"), value: null }
831
737
  ]
832
738
  }
833
- ))), /* @__PURE__ */ React19.createElement(Grid3, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React19.createElement(Control2, { bind: "hOffset", label: __5("Horizontal", "elementor") }, /* @__PURE__ */ React19.createElement(SizeControl, null)), /* @__PURE__ */ React19.createElement(Control2, { bind: "vOffset", label: __5("Vertical", "elementor") }, /* @__PURE__ */ React19.createElement(SizeControl, null))), /* @__PURE__ */ React19.createElement(Grid3, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React19.createElement(Control2, { bind: "blur", label: __5("Blur", "elementor") }, /* @__PURE__ */ React19.createElement(SizeControl, null)), /* @__PURE__ */ React19.createElement(Control2, { bind: "spread", label: __5("Spread", "elementor") }, /* @__PURE__ */ React19.createElement(SizeControl, null)))));
739
+ ))), /* @__PURE__ */ React21.createElement(PopoverGridContainer, null, /* @__PURE__ */ React21.createElement(Control2, { bind: "hOffset", label: __5("Horizontal", "elementor") }, /* @__PURE__ */ React21.createElement(SizeControl, null)), /* @__PURE__ */ React21.createElement(Control2, { bind: "vOffset", label: __5("Vertical", "elementor") }, /* @__PURE__ */ React21.createElement(SizeControl, null))), /* @__PURE__ */ React21.createElement(PopoverGridContainer, null, /* @__PURE__ */ React21.createElement(Control2, { bind: "blur", label: __5("Blur", "elementor") }, /* @__PURE__ */ React21.createElement(SizeControl, null)), /* @__PURE__ */ React21.createElement(Control2, { bind: "spread", label: __5("Spread", "elementor") }, /* @__PURE__ */ React21.createElement(SizeControl, null)))));
834
740
  };
835
- var Control2 = ({ label, bind, children }) => /* @__PURE__ */ React19.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React19.createElement(Grid3, { item: true, xs: 6 }, /* @__PURE__ */ React19.createElement(Grid3, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React19.createElement(Grid3, { item: true, xs: 12 }, /* @__PURE__ */ React19.createElement(Typography3, { component: "label", variant: "caption", color: "text.secondary" }, label)), /* @__PURE__ */ React19.createElement(Grid3, { item: true, xs: 12 }, children))));
741
+ var Control2 = ({ label, bind, children }) => /* @__PURE__ */ React21.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React21.createElement(Grid4, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React21.createElement(Grid4, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React21.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React21.createElement(Typography3, { component: "label", variant: "caption", color: "text.secondary" }, label)), /* @__PURE__ */ React21.createElement(Grid4, { item: true, xs: 12 }, children))));
836
742
  var ItemLabel = ({ value }) => {
837
743
  const { position, hOffset, vOffset, blur, spread } = value.value;
838
744
  const { size: blurSize = "", unit: blurUnit = "" } = blur?.value || {};
@@ -846,7 +752,7 @@ var ItemLabel = ({ value }) => {
846
752
  blurSize + blurUnit,
847
753
  spreadSize + spreadUnit
848
754
  ].join(" ");
849
- return /* @__PURE__ */ React19.createElement("span", { style: { textTransform: "capitalize" } }, positionLabel, ": ", sizes);
755
+ return /* @__PURE__ */ React21.createElement("span", { style: { textTransform: "capitalize" } }, positionLabel, ": ", sizes);
850
756
  };
851
757
  var initialShadow = {
852
758
  $$type: "shadow",
@@ -876,11 +782,11 @@ var initialShadow = {
876
782
  };
877
783
 
878
784
  // src/controls/toggle-control.tsx
879
- import * as React21 from "react";
785
+ import * as React23 from "react";
880
786
  import { stringPropTypeUtil as stringPropTypeUtil4 } from "@elementor/editor-props";
881
787
 
882
788
  // src/components/control-toggle-button-group.tsx
883
- import * as React20 from "react";
789
+ import * as React22 from "react";
884
790
  import {
885
791
  styled as styled2,
886
792
  ToggleButton,
@@ -904,7 +810,7 @@ var ControlToggleButtonGroup = ({
904
810
  const handleChange = (_, newValue) => {
905
811
  onChange(newValue);
906
812
  };
907
- return /* @__PURE__ */ React20.createElement(
813
+ return /* @__PURE__ */ React22.createElement(
908
814
  StyledToggleButtonGroup,
909
815
  {
910
816
  justify,
@@ -916,7 +822,7 @@ var ControlToggleButtonGroup = ({
916
822
  }
917
823
  },
918
824
  items.map(
919
- ({ label, value: buttonValue, renderContent: Content3, showTooltip }) => showTooltip ? /* @__PURE__ */ React20.createElement(Tooltip, { key: buttonValue, title: label, disableFocusListener: true, placement: "top" }, /* @__PURE__ */ React20.createElement(ToggleButton, { value: buttonValue, "aria-label": label, size, fullWidth }, /* @__PURE__ */ React20.createElement(Content3, { size }))) : /* @__PURE__ */ React20.createElement(
825
+ ({ label, value: buttonValue, renderContent: Content3, showTooltip }) => showTooltip ? /* @__PURE__ */ React22.createElement(Tooltip, { key: buttonValue, title: label, disableFocusListener: true, placement: "top" }, /* @__PURE__ */ React22.createElement(ToggleButton, { value: buttonValue, "aria-label": label, size, fullWidth }, /* @__PURE__ */ React22.createElement(Content3, { size }))) : /* @__PURE__ */ React22.createElement(
920
826
  ToggleButton,
921
827
  {
922
828
  key: buttonValue,
@@ -925,7 +831,7 @@ var ControlToggleButtonGroup = ({
925
831
  size,
926
832
  fullWidth
927
833
  },
928
- /* @__PURE__ */ React20.createElement(Content3, { size })
834
+ /* @__PURE__ */ React22.createElement(Content3, { size })
929
835
  )
930
836
  )
931
837
  );
@@ -938,7 +844,7 @@ var ToggleControl = createControl(
938
844
  const handleToggle = (option) => {
939
845
  setValue(option);
940
846
  };
941
- return /* @__PURE__ */ React21.createElement(
847
+ return /* @__PURE__ */ React23.createElement(
942
848
  ControlToggleButtonGroup,
943
849
  {
944
850
  items: options,
@@ -953,9 +859,9 @@ var ToggleControl = createControl(
953
859
  );
954
860
 
955
861
  // src/controls/number-control.tsx
956
- import * as React22 from "react";
862
+ import * as React24 from "react";
957
863
  import { numberPropTypeUtil } from "@elementor/editor-props";
958
- import { TextField as TextField5 } from "@elementor/ui";
864
+ import { TextField as TextField4 } from "@elementor/ui";
959
865
  var isEmptyOrNaN = (value) => value === null || value === void 0 || value === "" || Number.isNaN(Number(value));
960
866
  var NumberControl = createControl(
961
867
  ({
@@ -975,8 +881,8 @@ var NumberControl = createControl(
975
881
  const formattedValue = shouldForceInt ? +parseInt(eventValue) : Number(eventValue);
976
882
  setValue(Math.min(Math.max(formattedValue, min), max));
977
883
  };
978
- return /* @__PURE__ */ React22.createElement(ControlActions, null, /* @__PURE__ */ React22.createElement(
979
- TextField5,
884
+ return /* @__PURE__ */ React24.createElement(ControlActions, null, /* @__PURE__ */ React24.createElement(
885
+ TextField4,
980
886
  {
981
887
  size: "tiny",
982
888
  type: "number",
@@ -991,10 +897,10 @@ var NumberControl = createControl(
991
897
  );
992
898
 
993
899
  // src/controls/equal-unequal-sizes-control.tsx
994
- import * as React23 from "react";
900
+ import * as React25 from "react";
995
901
  import { useId as useId2, useRef as useRef2 } from "react";
996
902
  import { sizePropTypeUtil as sizePropTypeUtil2 } from "@elementor/editor-props";
997
- import { bindPopover as bindPopover2, bindToggle, Grid as Grid4, Popover as Popover2, Stack as Stack6, ToggleButton as ToggleButton2, usePopupState as usePopupState3 } from "@elementor/ui";
903
+ import { bindPopover as bindPopover2, bindToggle, Grid as Grid5, Popover as Popover2, Stack as Stack6, ToggleButton as ToggleButton2, usePopupState as usePopupState3 } from "@elementor/ui";
998
904
  import { __ as __6 } from "@wordpress/i18n";
999
905
  var isEqualSizes = (propValue, items) => {
1000
906
  const values = Object.values(propValue);
@@ -1048,7 +954,7 @@ function EqualUnequalSizesControl({
1048
954
  return splitEqualValue() ?? null;
1049
955
  };
1050
956
  const isMixed = !!multiSizeValue;
1051
- return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(Grid4, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: controlRef }, /* @__PURE__ */ React23.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React23.createElement(ControlLabel, null, label)), /* @__PURE__ */ React23.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React23.createElement(Stack6, { direction: "row", alignItems: "center", gap: 1 }, /* @__PURE__ */ React23.createElement(SizeControl, { placeholder: isMixed ? __6("Mixed", "elementor") : void 0 }), /* @__PURE__ */ React23.createElement(
957
+ return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(Grid5, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: controlRef }, /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React25.createElement(ControlLabel, null, label)), /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React25.createElement(Stack6, { direction: "row", alignItems: "center", gap: 1 }, /* @__PURE__ */ React25.createElement(SizeControl, { placeholder: isMixed ? __6("Mixed", "elementor") : void 0 }), /* @__PURE__ */ React25.createElement(
1052
958
  ToggleButton2,
1053
959
  {
1054
960
  size: "tiny",
@@ -1058,7 +964,7 @@ function EqualUnequalSizesControl({
1058
964
  selected: popupState.isOpen
1059
965
  },
1060
966
  icon
1061
- )))), /* @__PURE__ */ React23.createElement(
967
+ )))), /* @__PURE__ */ React25.createElement(
1062
968
  Popover2,
1063
969
  {
1064
970
  disablePortal: true,
@@ -1073,19 +979,19 @@ function EqualUnequalSizesControl({
1073
979
  },
1074
980
  ...bindPopover2(popupState),
1075
981
  slotProps: {
1076
- paper: { sx: { mt: 0.5, p: 2, pt: 1, width: controlRef.current?.getBoundingClientRect().width } }
982
+ paper: { sx: { mt: 0.5, width: controlRef.current?.getBoundingClientRect().width } }
1077
983
  }
1078
984
  },
1079
- /* @__PURE__ */ React23.createElement(PropProvider, { propType: multiSizePropType, value: getMultiSizeValues(), setValue: setNestedProp }, /* @__PURE__ */ React23.createElement(Stack6, { gap: 1.5 }, /* @__PURE__ */ React23.createElement(Grid4, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React23.createElement(MultiSizeValueControl, { item: items[0] }), /* @__PURE__ */ React23.createElement(MultiSizeValueControl, { item: items[1] })), /* @__PURE__ */ React23.createElement(Grid4, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React23.createElement(MultiSizeValueControl, { item: items[3] }), /* @__PURE__ */ React23.createElement(MultiSizeValueControl, { item: items[2] }))))
985
+ /* @__PURE__ */ React25.createElement(PropProvider, { propType: multiSizePropType, value: getMultiSizeValues(), setValue: setNestedProp }, /* @__PURE__ */ React25.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React25.createElement(PopoverGridContainer, null, /* @__PURE__ */ React25.createElement(MultiSizeValueControl, { item: items[0] }), /* @__PURE__ */ React25.createElement(MultiSizeValueControl, { item: items[1] })), /* @__PURE__ */ React25.createElement(PopoverGridContainer, null, /* @__PURE__ */ React25.createElement(MultiSizeValueControl, { item: items[3] }), /* @__PURE__ */ React25.createElement(MultiSizeValueControl, { item: items[2] }))))
1080
986
  ));
1081
987
  }
1082
- var MultiSizeValueControl = ({ item }) => /* @__PURE__ */ React23.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React23.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React23.createElement(Grid4, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React23.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React23.createElement(ControlLabel, null, item.label)), /* @__PURE__ */ React23.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React23.createElement(SizeControl, { startIcon: item.icon })))));
988
+ var MultiSizeValueControl = ({ item }) => /* @__PURE__ */ React25.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React25.createElement(Grid5, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React25.createElement(ControlLabel, null, item.label)), /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React25.createElement(SizeControl, { startIcon: item.icon })))));
1083
989
 
1084
990
  // src/controls/linked-dimensions-control.tsx
1085
- import * as React24 from "react";
991
+ import * as React26 from "react";
1086
992
  import { dimensionsPropTypeUtil, sizePropTypeUtil as sizePropTypeUtil3 } from "@elementor/editor-props";
1087
993
  import { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from "@elementor/icons";
1088
- import { Grid as Grid5, Stack as Stack7, ToggleButton as ToggleButton3 } from "@elementor/ui";
994
+ import { Grid as Grid6, Stack as Stack7, ToggleButton as ToggleButton3 } from "@elementor/ui";
1089
995
  import { __ as __7 } from "@wordpress/i18n";
1090
996
  var LinkedDimensionsControl = createControl(({ label }) => {
1091
997
  const { value: dimensionsValue, setValue: setDimensionsValue, propType } = useBoundProp(dimensionsPropTypeUtil);
@@ -1105,73 +1011,73 @@ var LinkedDimensionsControl = createControl(({ label }) => {
1105
1011
  });
1106
1012
  };
1107
1013
  const LinkedIcon = isLinked ? LinkIcon : DetachIcon;
1108
- return /* @__PURE__ */ React24.createElement(PropProvider, { propType, value: dimensionsValue, setValue: setDimensionsValue }, /* @__PURE__ */ React24.createElement(Stack7, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React24.createElement(ControlLabel, null, label), /* @__PURE__ */ React24.createElement(
1014
+ return /* @__PURE__ */ React26.createElement(PropProvider, { propType, value: dimensionsValue, setValue: setDimensionsValue }, /* @__PURE__ */ React26.createElement(Stack7, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React26.createElement(ControlLabel, null, label), /* @__PURE__ */ React26.createElement(
1109
1015
  ToggleButton3,
1110
1016
  {
1111
- "aria-label": __7("Link Inputs", "elementor"),
1017
+ "aria-label": __7("Link inputs", "elementor"),
1112
1018
  size: "tiny",
1113
1019
  value: "check",
1114
1020
  selected: isLinked,
1115
1021
  sx: { marginLeft: "auto" },
1116
1022
  onChange: onLinkToggle
1117
1023
  },
1118
- /* @__PURE__ */ React24.createElement(LinkedIcon, { fontSize: "tiny" })
1119
- )), /* @__PURE__ */ React24.createElement(Stack7, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React24.createElement(Grid5, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React24.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React24.createElement(ControlLabel, null, __7("Top", "elementor"))), /* @__PURE__ */ React24.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React24.createElement(
1024
+ /* @__PURE__ */ React26.createElement(LinkedIcon, { fontSize: "tiny" })
1025
+ )), /* @__PURE__ */ React26.createElement(Stack7, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React26.createElement(Grid6, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(ControlLabel, null, __7("Top", "elementor"))), /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(
1120
1026
  Control3,
1121
1027
  {
1122
1028
  bind: "top",
1123
- startIcon: /* @__PURE__ */ React24.createElement(SideTopIcon, { fontSize: "tiny" }),
1029
+ startIcon: /* @__PURE__ */ React26.createElement(SideTopIcon, { fontSize: "tiny" }),
1124
1030
  isLinked
1125
1031
  }
1126
- ))), /* @__PURE__ */ React24.createElement(Grid5, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React24.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React24.createElement(ControlLabel, null, __7("Right", "elementor"))), /* @__PURE__ */ React24.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React24.createElement(
1032
+ ))), /* @__PURE__ */ React26.createElement(Grid6, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(ControlLabel, null, __7("Right", "elementor"))), /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(
1127
1033
  Control3,
1128
1034
  {
1129
1035
  bind: "right",
1130
- startIcon: /* @__PURE__ */ React24.createElement(SideRightIcon, { fontSize: "tiny" }),
1036
+ startIcon: /* @__PURE__ */ React26.createElement(SideRightIcon, { fontSize: "tiny" }),
1131
1037
  isLinked
1132
1038
  }
1133
- )))), /* @__PURE__ */ React24.createElement(Stack7, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React24.createElement(Grid5, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React24.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React24.createElement(ControlLabel, null, __7("Bottom", "elementor"))), /* @__PURE__ */ React24.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React24.createElement(
1039
+ )))), /* @__PURE__ */ React26.createElement(Stack7, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React26.createElement(Grid6, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(ControlLabel, null, __7("Bottom", "elementor"))), /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(
1134
1040
  Control3,
1135
1041
  {
1136
1042
  bind: "bottom",
1137
- startIcon: /* @__PURE__ */ React24.createElement(SideBottomIcon, { fontSize: "tiny" }),
1043
+ startIcon: /* @__PURE__ */ React26.createElement(SideBottomIcon, { fontSize: "tiny" }),
1138
1044
  isLinked
1139
1045
  }
1140
- ))), /* @__PURE__ */ React24.createElement(Grid5, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React24.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React24.createElement(ControlLabel, null, __7("Left", "elementor"))), /* @__PURE__ */ React24.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React24.createElement(
1046
+ ))), /* @__PURE__ */ React26.createElement(Grid6, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(ControlLabel, null, __7("Left", "elementor"))), /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(
1141
1047
  Control3,
1142
1048
  {
1143
1049
  bind: "left",
1144
- startIcon: /* @__PURE__ */ React24.createElement(SideLeftIcon, { fontSize: "tiny" }),
1050
+ startIcon: /* @__PURE__ */ React26.createElement(SideLeftIcon, { fontSize: "tiny" }),
1145
1051
  isLinked
1146
1052
  }
1147
1053
  )))));
1148
1054
  });
1149
1055
  var Control3 = ({ bind, startIcon, isLinked }) => {
1150
1056
  if (isLinked) {
1151
- return /* @__PURE__ */ React24.createElement(SizeControl, { startIcon });
1057
+ return /* @__PURE__ */ React26.createElement(SizeControl, { startIcon });
1152
1058
  }
1153
- return /* @__PURE__ */ React24.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React24.createElement(SizeControl, { startIcon }));
1059
+ return /* @__PURE__ */ React26.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React26.createElement(SizeControl, { startIcon }));
1154
1060
  };
1155
1061
 
1156
1062
  // src/controls/font-family-control.tsx
1157
1063
  import { Fragment as Fragment4, useId as useId3, useState as useState3 } from "react";
1158
- import * as React25 from "react";
1064
+ import * as React27 from "react";
1159
1065
  import { stringPropTypeUtil as stringPropTypeUtil5 } from "@elementor/editor-props";
1160
- import { ChevronDownIcon, EditIcon, PhotoIcon, SearchIcon, XIcon as XIcon3 } from "@elementor/icons";
1066
+ import { ChevronDownIcon, EditIcon, PhotoIcon, SearchIcon, XIcon as XIcon2 } from "@elementor/icons";
1161
1067
  import {
1162
1068
  bindPopover as bindPopover3,
1163
1069
  bindTrigger as bindTrigger3,
1164
- Box as Box3,
1070
+ Box as Box2,
1165
1071
  Divider,
1166
- IconButton as IconButton3,
1167
- InputAdornment as InputAdornment4,
1072
+ IconButton as IconButton2,
1073
+ InputAdornment as InputAdornment3,
1168
1074
  Link,
1169
1075
  ListSubheader,
1170
1076
  MenuItem as MenuItem3,
1171
1077
  MenuList,
1172
1078
  Popover as Popover3,
1173
1079
  Stack as Stack8,
1174
- TextField as TextField6,
1080
+ TextField as TextField5,
1175
1081
  Typography as Typography4,
1176
1082
  UnstableTag as UnstableTag2,
1177
1083
  usePopupState as usePopupState4
@@ -1226,16 +1132,16 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
1226
1132
  setSearchValue("");
1227
1133
  popoverState.close();
1228
1134
  };
1229
- return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(
1135
+ return /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(
1230
1136
  UnstableTag2,
1231
1137
  {
1232
1138
  variant: "outlined",
1233
1139
  label: fontFamily,
1234
- endIcon: /* @__PURE__ */ React25.createElement(ChevronDownIcon, { fontSize: "tiny" }),
1140
+ endIcon: /* @__PURE__ */ React27.createElement(ChevronDownIcon, { fontSize: "tiny" }),
1235
1141
  ...bindTrigger3(popoverState),
1236
1142
  fullWidth: true
1237
1143
  }
1238
- ), /* @__PURE__ */ React25.createElement(
1144
+ ), /* @__PURE__ */ React27.createElement(
1239
1145
  Popover3,
1240
1146
  {
1241
1147
  disablePortal: true,
@@ -1244,8 +1150,8 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
1244
1150
  ...bindPopover3(popoverState),
1245
1151
  onClose: handleClose
1246
1152
  },
1247
- /* @__PURE__ */ React25.createElement(Stack8, null, /* @__PURE__ */ React25.createElement(Stack8, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React25.createElement(EditIcon, { fontSize: SIZE2, sx: { mr: 0.5 } }), /* @__PURE__ */ React25.createElement(Typography4, { variant: "subtitle2" }, __9("Font Family", "elementor")), /* @__PURE__ */ React25.createElement(IconButton3, { size: SIZE2, sx: { ml: "auto" }, onClick: handleClose }, /* @__PURE__ */ React25.createElement(XIcon3, { fontSize: SIZE2 }))), /* @__PURE__ */ React25.createElement(Box3, { px: 1.5, pb: 1 }, /* @__PURE__ */ React25.createElement(
1248
- TextField6,
1153
+ /* @__PURE__ */ React27.createElement(Stack8, null, /* @__PURE__ */ React27.createElement(Stack8, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React27.createElement(EditIcon, { fontSize: SIZE2, sx: { mr: 0.5 } }), /* @__PURE__ */ React27.createElement(Typography4, { variant: "subtitle2" }, __9("Font Family", "elementor")), /* @__PURE__ */ React27.createElement(IconButton2, { size: SIZE2, sx: { ml: "auto" }, onClick: handleClose }, /* @__PURE__ */ React27.createElement(XIcon2, { fontSize: SIZE2 }))), /* @__PURE__ */ React27.createElement(Box2, { px: 1.5, pb: 1 }, /* @__PURE__ */ React27.createElement(
1154
+ TextField5,
1249
1155
  {
1250
1156
  fullWidth: true,
1251
1157
  size: SIZE2,
@@ -1253,12 +1159,18 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
1253
1159
  placeholder: __9("Search", "elementor"),
1254
1160
  onChange: handleSearch,
1255
1161
  InputProps: {
1256
- startAdornment: /* @__PURE__ */ React25.createElement(InputAdornment4, { position: "start" }, /* @__PURE__ */ React25.createElement(SearchIcon, { fontSize: SIZE2 }))
1162
+ startAdornment: /* @__PURE__ */ React27.createElement(InputAdornment3, { position: "start" }, /* @__PURE__ */ React27.createElement(SearchIcon, { fontSize: SIZE2 }))
1257
1163
  }
1258
1164
  }
1259
- )), /* @__PURE__ */ React25.createElement(Divider, null), /* @__PURE__ */ React25.createElement(Box3, { sx: { overflowY: "auto", height: 260, width: 220 } }, filteredFontFamilies.length > 0 ? /* @__PURE__ */ React25.createElement(MenuList, { role: "listbox", tabIndex: 0 }, filteredFontFamilies.map(([category, items], index) => /* @__PURE__ */ React25.createElement(Fragment4, { key: index }, /* @__PURE__ */ React25.createElement(ListSubheader, { sx: { typography: "caption", color: "text.tertiary" } }, category), items.map((item) => {
1165
+ )), /* @__PURE__ */ React27.createElement(Divider, null), /* @__PURE__ */ React27.createElement(Box2, { sx: { overflowY: "auto", height: 260, width: 220 } }, filteredFontFamilies.length > 0 ? /* @__PURE__ */ React27.createElement(MenuList, { role: "listbox", tabIndex: 0 }, filteredFontFamilies.map(([category, items], index) => /* @__PURE__ */ React27.createElement(Fragment4, { key: index }, /* @__PURE__ */ React27.createElement(
1166
+ ListSubheader,
1167
+ {
1168
+ sx: { px: 1.5, typography: "caption", color: "text.tertiary" }
1169
+ },
1170
+ category
1171
+ ), items.map((item) => {
1260
1172
  const isSelected = item === fontFamily;
1261
- return /* @__PURE__ */ React25.createElement(
1173
+ return /* @__PURE__ */ React27.createElement(
1262
1174
  MenuItem3,
1263
1175
  {
1264
1176
  key: item,
@@ -1268,12 +1180,12 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
1268
1180
  setFontFamily(item);
1269
1181
  handleClose();
1270
1182
  },
1271
- sx: { typography: "caption" },
1183
+ sx: { px: 1.5, typography: "caption" },
1272
1184
  style: { fontFamily: item }
1273
1185
  },
1274
1186
  item
1275
1187
  );
1276
- })))) : /* @__PURE__ */ React25.createElement(Stack8, { alignItems: "center", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React25.createElement(PhotoIcon, { fontSize: "large" }), /* @__PURE__ */ React25.createElement(Typography4, { align: "center", variant: "caption", color: "text.secondary" }, __9("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React25.createElement("br", null), "\u201C", searchValue, "\u201D."), /* @__PURE__ */ React25.createElement(Typography4, { align: "center", variant: "caption", color: "text.secondary" }, /* @__PURE__ */ React25.createElement(
1188
+ })))) : /* @__PURE__ */ React27.createElement(Stack8, { alignItems: "center", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React27.createElement(PhotoIcon, { fontSize: "large" }), /* @__PURE__ */ React27.createElement(Typography4, { align: "center", variant: "caption", color: "text.secondary" }, __9("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React27.createElement("br", null), "\u201C", searchValue, "\u201D."), /* @__PURE__ */ React27.createElement(Typography4, { align: "center", variant: "caption", color: "text.secondary" }, /* @__PURE__ */ React27.createElement(
1277
1189
  Link,
1278
1190
  {
1279
1191
  color: "secondary",
@@ -1287,14 +1199,14 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
1287
1199
  });
1288
1200
 
1289
1201
  // src/controls/url-control.tsx
1290
- import * as React26 from "react";
1202
+ import * as React28 from "react";
1291
1203
  import { urlPropTypeUtil } from "@elementor/editor-props";
1292
- import { TextField as TextField7 } from "@elementor/ui";
1204
+ import { TextField as TextField6 } from "@elementor/ui";
1293
1205
  var UrlControl = createControl(({ placeholder }) => {
1294
1206
  const { value, setValue } = useBoundProp(urlPropTypeUtil);
1295
1207
  const handleChange = (event) => setValue(event.target.value);
1296
- return /* @__PURE__ */ React26.createElement(ControlActions, null, /* @__PURE__ */ React26.createElement(
1297
- TextField7,
1208
+ return /* @__PURE__ */ React28.createElement(ControlActions, null, /* @__PURE__ */ React28.createElement(
1209
+ TextField6,
1298
1210
  {
1299
1211
  size: "tiny",
1300
1212
  fullWidth: true,
@@ -1306,18 +1218,139 @@ var UrlControl = createControl(({ placeholder }) => {
1306
1218
  });
1307
1219
 
1308
1220
  // src/controls/link-control.tsx
1309
- import * as React27 from "react";
1310
- import { useState as useState4 } from "react";
1311
- import { booleanPropTypeUtil, linkPropTypeUtil, numberPropTypeUtil as numberPropTypeUtil2 } from "@elementor/editor-props";
1221
+ import * as React30 from "react";
1222
+ import { useMemo, useState as useState4 } from "react";
1223
+ import {
1224
+ booleanPropTypeUtil,
1225
+ linkPropTypeUtil,
1226
+ numberPropTypeUtil as numberPropTypeUtil2,
1227
+ stringPropTypeUtil as stringPropTypeUtil6,
1228
+ urlPropTypeUtil as urlPropTypeUtil2
1229
+ } from "@elementor/editor-props";
1312
1230
  import { httpService } from "@elementor/http";
1313
1231
  import { MinusIcon, PlusIcon as PlusIcon2 } from "@elementor/icons";
1314
1232
  import { useSessionStorage } from "@elementor/session";
1315
- import { Collapse, Divider as Divider2, Grid as Grid6, IconButton as IconButton4, Stack as Stack9, Switch } from "@elementor/ui";
1233
+ import { Collapse, Divider as Divider2, Grid as Grid7, IconButton as IconButton4, Stack as Stack9, Switch } from "@elementor/ui";
1316
1234
  import { __ as __10 } from "@wordpress/i18n";
1235
+
1236
+ // src/components/autocomplete.tsx
1237
+ import * as React29 from "react";
1238
+ import { forwardRef as forwardRef2 } from "react";
1239
+ import { XIcon as XIcon3 } from "@elementor/icons";
1240
+ import {
1241
+ Autocomplete as AutocompleteBase,
1242
+ Box as Box3,
1243
+ IconButton as IconButton3,
1244
+ InputAdornment as InputAdornment4,
1245
+ TextField as TextField7
1246
+ } from "@elementor/ui";
1247
+ var Autocomplete = forwardRef2((props, ref) => {
1248
+ const {
1249
+ options,
1250
+ onOptionChange,
1251
+ onTextChange,
1252
+ allowCustomValues = false,
1253
+ placeholder = "",
1254
+ minInputLength = 2,
1255
+ value = "",
1256
+ ...restProps
1257
+ } = props;
1258
+ const optionKeys = _factoryFilter(value, options, minInputLength).map(({ id }) => id);
1259
+ const allowClear = !!value;
1260
+ const muiWarningPreventer = allowCustomValues || !!value?.toString()?.length;
1261
+ const isOptionEqualToValue = muiWarningPreventer ? void 0 : () => true;
1262
+ const isValueFromOptions = typeof value === "number" && !!findMatchingOption(options, value);
1263
+ return /* @__PURE__ */ React29.createElement(
1264
+ AutocompleteBase,
1265
+ {
1266
+ ...restProps,
1267
+ ref,
1268
+ forcePopupIcon: false,
1269
+ disableClearable: true,
1270
+ freeSolo: allowCustomValues,
1271
+ value: value?.toString() || "",
1272
+ size: "tiny",
1273
+ onChange: (_, newValue) => onOptionChange(Number(newValue)),
1274
+ readOnly: isValueFromOptions,
1275
+ options: optionKeys,
1276
+ getOptionKey: (optionId) => findMatchingOption(options, optionId)?.id || optionId,
1277
+ getOptionLabel: (optionId) => findMatchingOption(options, optionId)?.label || optionId.toString(),
1278
+ groupBy: isCategorizedOptionPool(options) ? (optionId) => findMatchingOption(options, optionId)?.groupLabel || optionId : void 0,
1279
+ isOptionEqualToValue,
1280
+ filterOptions: () => optionKeys,
1281
+ renderOption: (optionProps, optionId) => /* @__PURE__ */ React29.createElement(Box3, { component: "li", ...optionProps, key: optionProps.id }, findMatchingOption(options, optionId)?.label ?? optionId),
1282
+ renderInput: (params) => /* @__PURE__ */ React29.createElement(
1283
+ TextInput,
1284
+ {
1285
+ params,
1286
+ handleChange: (newValue) => onTextChange?.(newValue),
1287
+ allowClear,
1288
+ placeholder,
1289
+ hasSelectedValue: isValueFromOptions
1290
+ }
1291
+ )
1292
+ }
1293
+ );
1294
+ });
1295
+ var TextInput = ({
1296
+ params,
1297
+ allowClear,
1298
+ placeholder,
1299
+ handleChange,
1300
+ hasSelectedValue
1301
+ }) => {
1302
+ const onChange = (event) => {
1303
+ handleChange(event.target.value);
1304
+ };
1305
+ return /* @__PURE__ */ React29.createElement(
1306
+ TextField7,
1307
+ {
1308
+ ...params,
1309
+ placeholder,
1310
+ onChange,
1311
+ sx: {
1312
+ "& .MuiInputBase-input": {
1313
+ cursor: hasSelectedValue ? "default" : void 0
1314
+ }
1315
+ },
1316
+ InputProps: {
1317
+ ...params.InputProps,
1318
+ endAdornment: /* @__PURE__ */ React29.createElement(ClearButton, { params, allowClear, handleChange })
1319
+ }
1320
+ }
1321
+ );
1322
+ };
1323
+ var ClearButton = ({
1324
+ allowClear,
1325
+ handleChange,
1326
+ params
1327
+ }) => /* @__PURE__ */ React29.createElement(InputAdornment4, { position: "end" }, allowClear && /* @__PURE__ */ React29.createElement(IconButton3, { size: params.size, onClick: () => handleChange(null), sx: { cursor: "pointer" } }, /* @__PURE__ */ React29.createElement(XIcon3, { fontSize: params.size })));
1328
+ function findMatchingOption(options, optionId = null) {
1329
+ const formattedOption = (optionId || "").toString();
1330
+ return options.find(({ id }) => formattedOption === id.toString());
1331
+ }
1332
+ function isCategorizedOptionPool(options) {
1333
+ return options.every((option) => "groupLabel" in option);
1334
+ }
1335
+ function _factoryFilter(newValue, options, minInputLength) {
1336
+ if (null === newValue) {
1337
+ return options;
1338
+ }
1339
+ const formattedValue = String(newValue || "")?.toLowerCase();
1340
+ if (formattedValue.length < minInputLength) {
1341
+ return new Array(0);
1342
+ }
1343
+ return options.filter(
1344
+ (option) => String(option.id).toLowerCase().includes(formattedValue) || option.label.toLowerCase().includes(formattedValue)
1345
+ );
1346
+ }
1347
+
1348
+ // src/controls/link-control.tsx
1317
1349
  var SIZE3 = "tiny";
1318
1350
  var LinkControl = createControl((props) => {
1319
1351
  const { value, path, setValue, ...propContext } = useBoundProp(linkPropTypeUtil);
1320
1352
  const [linkSessionValue, setLinkSessionValue] = useSessionStorage(path.join("/"));
1353
+ const [isEnabled, setIsEnabled] = useState4(!!value);
1321
1354
  const {
1322
1355
  allowCustomValues,
1323
1356
  queryOptions: { endpoint = "", requestParams = {} },
@@ -1328,28 +1361,25 @@ var LinkControl = createControl((props) => {
1328
1361
  generateFirstLoadedOption(value)
1329
1362
  );
1330
1363
  const onEnabledChange = () => {
1331
- const { meta } = linkSessionValue ?? {};
1332
- const { isEnabled } = meta ?? {};
1333
- setValue(isEnabled ? null : linkSessionValue?.value ?? { destination: null });
1364
+ setIsEnabled((prevState) => !prevState);
1365
+ setValue(isEnabled ? null : linkSessionValue?.value ?? null);
1334
1366
  setLinkSessionValue({ value, meta: { isEnabled: !isEnabled } });
1335
1367
  };
1336
1368
  const onOptionChange = (newValue) => {
1337
- const valueToSave = {
1369
+ const valueToSave = newValue ? {
1338
1370
  ...value,
1339
- destination: { $$type: "number", value: newValue },
1340
- label: {
1341
- $$type: "string",
1342
- value: findMatchingOption(options, newValue?.toString())?.label || ""
1343
- }
1344
- };
1371
+ destination: numberPropTypeUtil2.create(newValue),
1372
+ label: stringPropTypeUtil6.create(findMatchingOption(options, newValue)?.label || null)
1373
+ } : null;
1345
1374
  onSaveNewValue(valueToSave);
1346
1375
  };
1347
1376
  const onTextChange = (newValue) => {
1348
- const valueToSave = {
1377
+ newValue = newValue?.trim() || "";
1378
+ const valueToSave = newValue ? {
1349
1379
  ...value,
1350
- destination: { $$type: "url", value: newValue },
1380
+ destination: urlPropTypeUtil2.create(newValue),
1351
1381
  label: null
1352
- };
1382
+ } : null;
1353
1383
  onSaveNewValue(valueToSave);
1354
1384
  updateOptions(newValue);
1355
1385
  };
@@ -1362,15 +1392,18 @@ var LinkControl = createControl((props) => {
1362
1392
  if (!newValue || !endpoint || newValue.length < minInputLength) {
1363
1393
  return;
1364
1394
  }
1365
- debounceFetch(newValue)();
1395
+ debounceFetch({ ...requestParams, term: newValue });
1366
1396
  };
1367
- const debounceFetch = (newValue) => debounce(
1368
- () => fetchOptions(endpoint, { ...requestParams, term: newValue }).then((newOptions) => {
1369
- setOptions(formatOptions(newOptions));
1370
- }),
1371
- 400
1397
+ const debounceFetch = useMemo(
1398
+ () => debounce(
1399
+ (params) => fetchOptions(endpoint, params).then((newOptions) => {
1400
+ setOptions(formatOptions(newOptions));
1401
+ }),
1402
+ 400
1403
+ ),
1404
+ [endpoint]
1372
1405
  );
1373
- return /* @__PURE__ */ React27.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React27.createElement(Stack9, { gap: 1.5 }, /* @__PURE__ */ React27.createElement(Divider2, null), /* @__PURE__ */ React27.createElement(
1406
+ return /* @__PURE__ */ React30.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React30.createElement(Stack9, { gap: 1.5 }, /* @__PURE__ */ React30.createElement(Divider2, null), /* @__PURE__ */ React30.createElement(
1374
1407
  Stack9,
1375
1408
  {
1376
1409
  direction: "row",
@@ -1379,38 +1412,37 @@ var LinkControl = createControl((props) => {
1379
1412
  alignItems: "center"
1380
1413
  }
1381
1414
  },
1382
- /* @__PURE__ */ React27.createElement(ControlLabel, null, __10("Link", "elementor")),
1383
- /* @__PURE__ */ React27.createElement(
1415
+ /* @__PURE__ */ React30.createElement(ControlLabel, null, __10("Link", "elementor")),
1416
+ /* @__PURE__ */ React30.createElement(
1384
1417
  ToggleIconControl,
1385
1418
  {
1386
- enabled: linkSessionValue?.meta?.isEnabled ?? false,
1419
+ enabled: isEnabled,
1387
1420
  onIconClick: onEnabledChange,
1388
- label: __10("Toggle Link", "elementor")
1421
+ label: __10("Toggle link", "elementor")
1389
1422
  }
1390
1423
  )
1391
- ), /* @__PURE__ */ React27.createElement(Collapse, { in: linkSessionValue?.meta?.isEnabled, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React27.createElement(Stack9, { gap: 1.5 }, /* @__PURE__ */ React27.createElement(PropKeyProvider, { bind: "destination" }, /* @__PURE__ */ React27.createElement(
1392
- AutocompleteControl,
1424
+ ), /* @__PURE__ */ React30.createElement(Collapse, { in: isEnabled, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React30.createElement(Stack9, { gap: 1.5 }, /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind: "destination" }, /* @__PURE__ */ React30.createElement(ControlActions, null, /* @__PURE__ */ React30.createElement(
1425
+ Autocomplete,
1393
1426
  {
1394
1427
  options,
1395
1428
  allowCustomValues,
1396
1429
  placeholder,
1397
- optionRestrictedPropTypeUtil: numberPropTypeUtil2,
1398
- onOptionChangeCallback: onOptionChange,
1399
- onTextChangeCallback: onTextChange,
1400
- minInputLength,
1401
- customValue: value?.destination?.value?.toString()
1430
+ value: value?.destination?.value,
1431
+ onOptionChange,
1432
+ onTextChange,
1433
+ minInputLength
1402
1434
  }
1403
- )), /* @__PURE__ */ React27.createElement(PropKeyProvider, { bind: "isTargetBlank" }, /* @__PURE__ */ React27.createElement(SwitchControl, null))))));
1435
+ ))), /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind: "isTargetBlank" }, /* @__PURE__ */ React30.createElement(SwitchControl, null))))));
1404
1436
  });
1405
1437
  var ToggleIconControl = ({ enabled, onIconClick, label }) => {
1406
- return /* @__PURE__ */ React27.createElement(IconButton4, { size: SIZE3, onClick: onIconClick, "aria-label": label }, enabled ? /* @__PURE__ */ React27.createElement(MinusIcon, { fontSize: SIZE3 }) : /* @__PURE__ */ React27.createElement(PlusIcon2, { fontSize: SIZE3 }));
1438
+ return /* @__PURE__ */ React30.createElement(IconButton4, { size: SIZE3, onClick: onIconClick, "aria-label": label }, enabled ? /* @__PURE__ */ React30.createElement(MinusIcon, { fontSize: SIZE3 }) : /* @__PURE__ */ React30.createElement(PlusIcon2, { fontSize: SIZE3 }));
1407
1439
  };
1408
1440
  var SwitchControl = () => {
1409
1441
  const { value = false, setValue } = useBoundProp(booleanPropTypeUtil);
1410
1442
  const onClick = () => {
1411
1443
  setValue(!value);
1412
1444
  };
1413
- return /* @__PURE__ */ React27.createElement(Grid6, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React27.createElement(Grid6, { item: true }, /* @__PURE__ */ React27.createElement(ControlLabel, null, __10("Open in new tab", "elementor"))), /* @__PURE__ */ React27.createElement(Grid6, { item: true }, /* @__PURE__ */ React27.createElement(Switch, { checked: value, onClick })));
1445
+ return /* @__PURE__ */ React30.createElement(Grid7, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React30.createElement(Grid7, { item: true }, /* @__PURE__ */ React30.createElement(ControlLabel, null, __10("Open in new tab", "elementor"))), /* @__PURE__ */ React30.createElement(Grid7, { item: true }, /* @__PURE__ */ React30.createElement(Switch, { checked: value, onClick })));
1414
1446
  };
1415
1447
  async function fetchOptions(ajaxUrl, params) {
1416
1448
  if (!params || !ajaxUrl) {
@@ -1451,10 +1483,10 @@ function debounce(fn, timeout) {
1451
1483
  }
1452
1484
 
1453
1485
  // src/controls/gap-control.tsx
1454
- import * as React28 from "react";
1486
+ import * as React31 from "react";
1455
1487
  import { layoutDirectionPropTypeUtil, sizePropTypeUtil as sizePropTypeUtil4 } from "@elementor/editor-props";
1456
1488
  import { DetachIcon as DetachIcon2, LinkIcon as LinkIcon2 } from "@elementor/icons";
1457
- import { Grid as Grid7, Stack as Stack10, ToggleButton as ToggleButton4 } from "@elementor/ui";
1489
+ import { Grid as Grid8, Stack as Stack10, ToggleButton as ToggleButton4 } from "@elementor/ui";
1458
1490
  import { __ as __11 } from "@wordpress/i18n";
1459
1491
  var GapControl = createControl(({ label }) => {
1460
1492
  const {
@@ -1476,28 +1508,28 @@ var GapControl = createControl(({ label }) => {
1476
1508
  });
1477
1509
  };
1478
1510
  const LinkedIcon = isLinked ? LinkIcon2 : DetachIcon2;
1479
- return /* @__PURE__ */ React28.createElement(PropProvider, { propType, value: directionValue, setValue: setDirectionValue }, /* @__PURE__ */ React28.createElement(Stack10, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React28.createElement(ControlLabel, null, label), /* @__PURE__ */ React28.createElement(
1511
+ return /* @__PURE__ */ React31.createElement(PropProvider, { propType, value: directionValue, setValue: setDirectionValue }, /* @__PURE__ */ React31.createElement(Stack10, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(ControlLabel, null, label), /* @__PURE__ */ React31.createElement(
1480
1512
  ToggleButton4,
1481
1513
  {
1482
- "aria-label": __11("Link Inputs", "elementor"),
1514
+ "aria-label": __11("Link inputs", "elementor"),
1483
1515
  size: "tiny",
1484
1516
  value: "check",
1485
1517
  selected: isLinked,
1486
1518
  sx: { marginLeft: "auto" },
1487
1519
  onChange: onLinkToggle
1488
1520
  },
1489
- /* @__PURE__ */ React28.createElement(LinkedIcon, { fontSize: "tiny" })
1490
- )), /* @__PURE__ */ React28.createElement(Stack10, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React28.createElement(Grid7, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React28.createElement(Grid7, { item: true, xs: 12 }, /* @__PURE__ */ React28.createElement(ControlLabel, null, __11("Column", "elementor"))), /* @__PURE__ */ React28.createElement(Grid7, { item: true, xs: 12 }, /* @__PURE__ */ React28.createElement(Control4, { bind: "column", isLinked }))), /* @__PURE__ */ React28.createElement(Grid7, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React28.createElement(Grid7, { item: true, xs: 12 }, /* @__PURE__ */ React28.createElement(ControlLabel, null, __11("Row", "elementor"))), /* @__PURE__ */ React28.createElement(Grid7, { item: true, xs: 12 }, /* @__PURE__ */ React28.createElement(Control4, { bind: "row", isLinked })))));
1521
+ /* @__PURE__ */ React31.createElement(LinkedIcon, { fontSize: "tiny" })
1522
+ )), /* @__PURE__ */ React31.createElement(Stack10, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(ControlLabel, null, __11("Column", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Control4, { bind: "column", isLinked }))), /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(ControlLabel, null, __11("Row", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Control4, { bind: "row", isLinked })))));
1491
1523
  });
1492
1524
  var Control4 = ({ bind, isLinked }) => {
1493
1525
  if (isLinked) {
1494
- return /* @__PURE__ */ React28.createElement(SizeControl, null);
1526
+ return /* @__PURE__ */ React31.createElement(SizeControl, null);
1495
1527
  }
1496
- return /* @__PURE__ */ React28.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React28.createElement(SizeControl, null));
1528
+ return /* @__PURE__ */ React31.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React31.createElement(SizeControl, null));
1497
1529
  };
1498
1530
 
1499
1531
  // src/controls/svg-media-control.tsx
1500
- import * as React29 from "react";
1532
+ import * as React32 from "react";
1501
1533
  import { imageSrcPropTypeUtil as imageSrcPropTypeUtil2 } from "@elementor/editor-props";
1502
1534
  import { UploadIcon as UploadIcon2 } from "@elementor/icons";
1503
1535
  import { Button as Button3, Card as Card2, CardMedia as CardMedia2, CardOverlay as CardOverlay2, CircularProgress as CircularProgress2, Stack as Stack11, styled as styled3 } from "@elementor/ui";
@@ -1545,7 +1577,7 @@ var SvgMediaControl = createControl(() => {
1545
1577
  });
1546
1578
  }
1547
1579
  });
1548
- return /* @__PURE__ */ React29.createElement(Stack11, { gap: 1 }, /* @__PURE__ */ React29.createElement(ControlLabel, null, " ", __12("Choose SVG", "elementor"), " "), /* @__PURE__ */ React29.createElement(ControlActions, null, /* @__PURE__ */ React29.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React29.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React29.createElement(CircularProgress2, { role: "progressbar" }) : /* @__PURE__ */ React29.createElement(
1580
+ return /* @__PURE__ */ React32.createElement(Stack11, { gap: 1 }, /* @__PURE__ */ React32.createElement(ControlLabel, null, " ", __12("Choose SVG", "elementor"), " "), /* @__PURE__ */ React32.createElement(ControlActions, null, /* @__PURE__ */ React32.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React32.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React32.createElement(CircularProgress2, { role: "progressbar" }) : /* @__PURE__ */ React32.createElement(
1549
1581
  CardMedia2,
1550
1582
  {
1551
1583
  component: "img",
@@ -1553,7 +1585,7 @@ var SvgMediaControl = createControl(() => {
1553
1585
  alt: __12("Preview SVG", "elementor"),
1554
1586
  sx: { maxHeight: "140px", width: "50px" }
1555
1587
  }
1556
- )), /* @__PURE__ */ React29.createElement(
1588
+ )), /* @__PURE__ */ React32.createElement(
1557
1589
  CardOverlay2,
1558
1590
  {
1559
1591
  sx: {
@@ -1562,7 +1594,7 @@ var SvgMediaControl = createControl(() => {
1562
1594
  }
1563
1595
  }
1564
1596
  },
1565
- /* @__PURE__ */ React29.createElement(Stack11, { gap: 1 }, /* @__PURE__ */ React29.createElement(
1597
+ /* @__PURE__ */ React32.createElement(Stack11, { gap: 1 }, /* @__PURE__ */ React32.createElement(
1566
1598
  Button3,
1567
1599
  {
1568
1600
  size: "tiny",
@@ -1571,13 +1603,13 @@ var SvgMediaControl = createControl(() => {
1571
1603
  onClick: () => open({ mode: "browse" })
1572
1604
  },
1573
1605
  __12("Select SVG", "elementor")
1574
- ), /* @__PURE__ */ React29.createElement(
1606
+ ), /* @__PURE__ */ React32.createElement(
1575
1607
  Button3,
1576
1608
  {
1577
1609
  size: "tiny",
1578
1610
  variant: "text",
1579
1611
  color: "inherit",
1580
- startIcon: /* @__PURE__ */ React29.createElement(UploadIcon2, null),
1612
+ startIcon: /* @__PURE__ */ React32.createElement(UploadIcon2, null),
1581
1613
  onClick: () => open({ mode: "upload" })
1582
1614
  },
1583
1615
  __12("Upload SVG", "elementor")
@@ -1586,19 +1618,19 @@ var SvgMediaControl = createControl(() => {
1586
1618
  });
1587
1619
 
1588
1620
  // src/controls/background-control/background-control.tsx
1589
- import * as React35 from "react";
1621
+ import * as React38 from "react";
1590
1622
  import { backgroundPropTypeUtil } from "@elementor/editor-props";
1591
- import { Grid as Grid13, Stack as Stack13 } from "@elementor/ui";
1623
+ import { Grid as Grid14 } from "@elementor/ui";
1592
1624
  import { __ as __18 } from "@wordpress/i18n";
1593
1625
 
1594
1626
  // src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx
1595
- import * as React34 from "react";
1627
+ import * as React37 from "react";
1596
1628
  import {
1597
1629
  backgroundColorOverlayPropTypeUtil as backgroundColorOverlayPropTypeUtil2,
1598
1630
  backgroundImageOverlayPropTypeUtil as backgroundImageOverlayPropTypeUtil2,
1599
1631
  backgroundOverlayPropTypeUtil
1600
1632
  } from "@elementor/editor-props";
1601
- import { Box as Box4, CardMedia as CardMedia3, Grid as Grid12, Stack as Stack12, Tab, TabPanel, Tabs, UnstableColorIndicator as UnstableColorIndicator2 } from "@elementor/ui";
1633
+ import { Box as Box4, CardMedia as CardMedia3, Grid as Grid13, Tab, TabPanel, Tabs, UnstableColorIndicator as UnstableColorIndicator2 } from "@elementor/ui";
1602
1634
  import { useWpMediaAttachment as useWpMediaAttachment3 } from "@elementor/wp-media";
1603
1635
  import { __ as __17 } from "@wordpress/i18n";
1604
1636
 
@@ -1607,49 +1639,49 @@ import { parseEnv } from "@elementor/env";
1607
1639
  var { env } = parseEnv("@elementor/editor-controls");
1608
1640
 
1609
1641
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx
1610
- import * as React30 from "react";
1642
+ import * as React33 from "react";
1611
1643
  import { PinIcon, PinnedOffIcon } from "@elementor/icons";
1612
- import { Grid as Grid8 } from "@elementor/ui";
1644
+ import { Grid as Grid9 } from "@elementor/ui";
1613
1645
  import { __ as __13 } from "@wordpress/i18n";
1614
1646
  var attachmentControlOptions = [
1615
1647
  {
1616
1648
  value: "fixed",
1617
1649
  label: __13("Fixed", "elementor"),
1618
- renderContent: ({ size }) => /* @__PURE__ */ React30.createElement(PinIcon, { fontSize: size }),
1650
+ renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(PinIcon, { fontSize: size }),
1619
1651
  showTooltip: true
1620
1652
  },
1621
1653
  {
1622
1654
  value: "scroll",
1623
1655
  label: __13("Scroll", "elementor"),
1624
- renderContent: ({ size }) => /* @__PURE__ */ React30.createElement(PinnedOffIcon, { fontSize: size }),
1656
+ renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(PinnedOffIcon, { fontSize: size }),
1625
1657
  showTooltip: true
1626
1658
  }
1627
1659
  ];
1628
1660
  var BackgroundImageOverlayAttachment = () => {
1629
- return /* @__PURE__ */ React30.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React30.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel, null, __13("Attachment", "elementor"))), /* @__PURE__ */ React30.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React30.createElement(ToggleControl, { options: attachmentControlOptions })));
1661
+ return /* @__PURE__ */ React33.createElement(PopoverGridContainer, null, /* @__PURE__ */ React33.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(ControlLabel, null, __13("Attachment", "elementor"))), /* @__PURE__ */ React33.createElement(Grid9, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React33.createElement(ToggleControl, { options: attachmentControlOptions })));
1630
1662
  };
1631
1663
 
1632
1664
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
1633
- import * as React31 from "react";
1634
- import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil6 } from "@elementor/editor-props";
1665
+ import * as React34 from "react";
1666
+ import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil7 } from "@elementor/editor-props";
1635
1667
  import { LetterXIcon, LetterYIcon } from "@elementor/icons";
1636
- import { Grid as Grid9, MenuItem as MenuItem4, Select as Select2 } from "@elementor/ui";
1668
+ import { Grid as Grid10, MenuItem as MenuItem4, Select as Select2 } from "@elementor/ui";
1637
1669
  import { __ as __14 } from "@wordpress/i18n";
1638
1670
  var backgroundPositionOptions = [
1639
- { label: __14("Center Center", "elementor"), value: "center center" },
1640
- { label: __14("Center Left", "elementor"), value: "center left" },
1641
- { label: __14("Center Right", "elementor"), value: "center right" },
1642
- { label: __14("Top Center", "elementor"), value: "top center" },
1643
- { label: __14("Top Left", "elementor"), value: "top left" },
1644
- { label: __14("Top Right", "elementor"), value: "top right" },
1645
- { label: __14("Bottom Center", "elementor"), value: "bottom center" },
1646
- { label: __14("Bottom Left", "elementor"), value: "bottom left" },
1647
- { label: __14("Bottom Right", "elementor"), value: "bottom right" },
1671
+ { label: __14("Center center", "elementor"), value: "center center" },
1672
+ { label: __14("Center left", "elementor"), value: "center left" },
1673
+ { label: __14("Center right", "elementor"), value: "center right" },
1674
+ { label: __14("Top center", "elementor"), value: "top center" },
1675
+ { label: __14("Top left", "elementor"), value: "top left" },
1676
+ { label: __14("Top right", "elementor"), value: "top right" },
1677
+ { label: __14("Bottom center", "elementor"), value: "bottom center" },
1678
+ { label: __14("Bottom left", "elementor"), value: "bottom left" },
1679
+ { label: __14("Bottom right", "elementor"), value: "bottom right" },
1648
1680
  { label: __14("Custom", "elementor"), value: "custom" }
1649
1681
  ];
1650
1682
  var BackgroundImageOverlayPosition = () => {
1651
1683
  const backgroundImageOffsetContext = useBoundProp(backgroundImagePositionOffsetPropTypeUtil);
1652
- const stringPropContext = useBoundProp(stringPropTypeUtil6);
1684
+ const stringPropContext = useBoundProp(stringPropTypeUtil7);
1653
1685
  const isCustom = !!backgroundImageOffsetContext.value;
1654
1686
  const handlePositionChange = (event) => {
1655
1687
  const value = event.target.value || null;
@@ -1659,7 +1691,7 @@ var BackgroundImageOverlayPosition = () => {
1659
1691
  stringPropContext.setValue(value);
1660
1692
  }
1661
1693
  };
1662
- return /* @__PURE__ */ React31.createElement(Grid9, { container: true, spacing: 2 }, /* @__PURE__ */ React31.createElement(Grid9, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Grid9, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(ControlLabel, null, __14("Position", "elementor"))), /* @__PURE__ */ React31.createElement(Grid9, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React31.createElement(
1694
+ return /* @__PURE__ */ React34.createElement(Grid10, { container: true, spacing: 1.5 }, /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React34.createElement(PopoverGridContainer, null, /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(ControlLabel, null, __14("Position", "elementor"))), /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React34.createElement(
1663
1695
  Select2,
1664
1696
  {
1665
1697
  size: "tiny",
@@ -1667,48 +1699,48 @@ var BackgroundImageOverlayPosition = () => {
1667
1699
  onChange: handlePositionChange,
1668
1700
  fullWidth: true
1669
1701
  },
1670
- backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React31.createElement(MenuItem4, { key: value, value: value ?? "" }, label))
1671
- )))), isCustom ? /* @__PURE__ */ React31.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React31.createElement(Grid9, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Grid9, { container: true, spacing: 2 }, /* @__PURE__ */ React31.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React31.createElement(SizeControl, { startIcon: /* @__PURE__ */ React31.createElement(LetterXIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React31.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React31.createElement(SizeControl, { startIcon: /* @__PURE__ */ React31.createElement(LetterYIcon, { fontSize: "tiny" }) })))))) : null);
1702
+ backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React34.createElement(MenuItem4, { key: value, value: value ?? "" }, label))
1703
+ )))), isCustom ? /* @__PURE__ */ React34.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React34.createElement(Grid10, { container: true, spacing: 1.5 }, /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React34.createElement(SizeControl, { startIcon: /* @__PURE__ */ React34.createElement(LetterXIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React34.createElement(SizeControl, { startIcon: /* @__PURE__ */ React34.createElement(LetterYIcon, { fontSize: "tiny" }) })))))) : null);
1672
1704
  };
1673
1705
 
1674
1706
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx
1675
- import * as React32 from "react";
1707
+ import * as React35 from "react";
1676
1708
  import { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon as XIcon4 } from "@elementor/icons";
1677
- import { Grid as Grid10 } from "@elementor/ui";
1709
+ import { Grid as Grid11 } from "@elementor/ui";
1678
1710
  import { __ as __15 } from "@wordpress/i18n";
1679
1711
  var repeatControlOptions = [
1680
1712
  {
1681
1713
  value: "repeat",
1682
1714
  label: __15("Repeat", "elementor"),
1683
- renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(GridDotsIcon, { fontSize: size }),
1715
+ renderContent: ({ size }) => /* @__PURE__ */ React35.createElement(GridDotsIcon, { fontSize: size }),
1684
1716
  showTooltip: true
1685
1717
  },
1686
1718
  {
1687
1719
  value: "repeat-x",
1688
1720
  label: __15("Repeat-x", "elementor"),
1689
- renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(DotsHorizontalIcon, { fontSize: size }),
1721
+ renderContent: ({ size }) => /* @__PURE__ */ React35.createElement(DotsHorizontalIcon, { fontSize: size }),
1690
1722
  showTooltip: true
1691
1723
  },
1692
1724
  {
1693
1725
  value: "repeat-y",
1694
1726
  label: __15("Repeat-y", "elementor"),
1695
- renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(DotsVerticalIcon, { fontSize: size }),
1727
+ renderContent: ({ size }) => /* @__PURE__ */ React35.createElement(DotsVerticalIcon, { fontSize: size }),
1696
1728
  showTooltip: true
1697
1729
  },
1698
1730
  {
1699
1731
  value: "no-repeat",
1700
1732
  label: __15("No-Repeat", "elementor"),
1701
- renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(XIcon4, { fontSize: size }),
1733
+ renderContent: ({ size }) => /* @__PURE__ */ React35.createElement(XIcon4, { fontSize: size }),
1702
1734
  showTooltip: true
1703
1735
  }
1704
1736
  ];
1705
1737
  var BackgroundImageOverlayRepeat = () => {
1706
- return /* @__PURE__ */ React32.createElement(Grid10, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React32.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React32.createElement(ControlLabel, null, __15("Repeat", "elementor"))), /* @__PURE__ */ React32.createElement(Grid10, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React32.createElement(ToggleControl, { options: repeatControlOptions })));
1738
+ return /* @__PURE__ */ React35.createElement(PopoverGridContainer, null, /* @__PURE__ */ React35.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React35.createElement(ControlLabel, null, __15("Repeat", "elementor"))), /* @__PURE__ */ React35.createElement(Grid11, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React35.createElement(ToggleControl, { options: repeatControlOptions })));
1707
1739
  };
1708
1740
 
1709
1741
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
1710
- import * as React33 from "react";
1711
- import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil7 } from "@elementor/editor-props";
1742
+ import * as React36 from "react";
1743
+ import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil8 } from "@elementor/editor-props";
1712
1744
  import {
1713
1745
  ArrowBarBothIcon,
1714
1746
  ArrowsMaximizeIcon,
@@ -1717,37 +1749,37 @@ import {
1717
1749
  LetterAIcon,
1718
1750
  PencilIcon
1719
1751
  } from "@elementor/icons";
1720
- import { Grid as Grid11 } from "@elementor/ui";
1752
+ import { Grid as Grid12 } from "@elementor/ui";
1721
1753
  import { __ as __16 } from "@wordpress/i18n";
1722
1754
  var sizeControlOptions = [
1723
1755
  {
1724
1756
  value: "auto",
1725
1757
  label: __16("Auto", "elementor"),
1726
- renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(LetterAIcon, { fontSize: size }),
1758
+ renderContent: ({ size }) => /* @__PURE__ */ React36.createElement(LetterAIcon, { fontSize: size }),
1727
1759
  showTooltip: true
1728
1760
  },
1729
1761
  {
1730
1762
  value: "cover",
1731
1763
  label: __16("Cover", "elementor"),
1732
- renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(ArrowsMaximizeIcon, { fontSize: size }),
1764
+ renderContent: ({ size }) => /* @__PURE__ */ React36.createElement(ArrowsMaximizeIcon, { fontSize: size }),
1733
1765
  showTooltip: true
1734
1766
  },
1735
1767
  {
1736
1768
  value: "contain",
1737
1769
  label: __16("Contain", "elementor"),
1738
- renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(ArrowBarBothIcon, { fontSize: size }),
1770
+ renderContent: ({ size }) => /* @__PURE__ */ React36.createElement(ArrowBarBothIcon, { fontSize: size }),
1739
1771
  showTooltip: true
1740
1772
  },
1741
1773
  {
1742
1774
  value: "custom",
1743
1775
  label: __16("Custom", "elementor"),
1744
- renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(PencilIcon, { fontSize: size }),
1776
+ renderContent: ({ size }) => /* @__PURE__ */ React36.createElement(PencilIcon, { fontSize: size }),
1745
1777
  showTooltip: true
1746
1778
  }
1747
1779
  ];
1748
1780
  var BackgroundImageOverlaySize = () => {
1749
1781
  const backgroundImageScaleContext = useBoundProp(backgroundImageSizeScalePropTypeUtil);
1750
- const stringPropContext = useBoundProp(stringPropTypeUtil7);
1782
+ const stringPropContext = useBoundProp(stringPropTypeUtil8);
1751
1783
  const isCustom = !!backgroundImageScaleContext.value;
1752
1784
  const handleSizeChange = (size) => {
1753
1785
  if (size === "custom") {
@@ -1756,7 +1788,7 @@ var BackgroundImageOverlaySize = () => {
1756
1788
  stringPropContext.setValue(size);
1757
1789
  }
1758
1790
  };
1759
- return /* @__PURE__ */ React33.createElement(Grid11, { container: true, spacing: 1.5 }, /* @__PURE__ */ React33.createElement(Grid11, { item: true, xs: 12 }, /* @__PURE__ */ React33.createElement(Grid11, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React33.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(ControlLabel, null, __16("Size", "elementor"))), /* @__PURE__ */ React33.createElement(Grid11, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React33.createElement(
1791
+ return /* @__PURE__ */ React36.createElement(Grid12, { container: true, spacing: 1.5 }, /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(PopoverGridContainer, null, /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(ControlLabel, null, __16("Size", "elementor"))), /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React36.createElement(
1760
1792
  ControlToggleButtonGroup,
1761
1793
  {
1762
1794
  exclusive: true,
@@ -1764,7 +1796,7 @@ var BackgroundImageOverlaySize = () => {
1764
1796
  value: backgroundImageScaleContext.value ? "custom" : stringPropContext.value,
1765
1797
  onChange: handleSizeChange
1766
1798
  }
1767
- )))), isCustom ? /* @__PURE__ */ React33.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React33.createElement(Grid11, { item: true, xs: 12 }, /* @__PURE__ */ React33.createElement(Grid11, { container: true, spacing: 2 }, /* @__PURE__ */ React33.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React33.createElement(SizeControl, { startIcon: /* @__PURE__ */ React33.createElement(ArrowsMoveHorizontalIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React33.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React33.createElement(SizeControl, { startIcon: /* @__PURE__ */ React33.createElement(ArrowsMoveVerticalIcon, { fontSize: "tiny" }) })))))) : null);
1799
+ )))), isCustom ? /* @__PURE__ */ React36.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(PopoverGridContainer, null, /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React36.createElement(SizeControl, { startIcon: /* @__PURE__ */ React36.createElement(ArrowsMoveHorizontalIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React36.createElement(SizeControl, { startIcon: /* @__PURE__ */ React36.createElement(ArrowsMoveVerticalIcon, { fontSize: "tiny" }) })))))) : null);
1768
1800
  };
1769
1801
 
1770
1802
  // src/controls/background-control/background-overlay/use-background-tabs-history.ts
@@ -1846,7 +1878,7 @@ var backgroundResolutionOptions = [
1846
1878
  ];
1847
1879
  var BackgroundOverlayRepeaterControl = createControl(() => {
1848
1880
  const { propType, value: overlayValues, setValue } = useBoundProp(backgroundOverlayPropTypeUtil);
1849
- return /* @__PURE__ */ React34.createElement(PropProvider, { propType, value: overlayValues, setValue }, /* @__PURE__ */ React34.createElement(
1881
+ return /* @__PURE__ */ React37.createElement(PropProvider, { propType, value: overlayValues, setValue }, /* @__PURE__ */ React37.createElement(
1850
1882
  Repeater,
1851
1883
  {
1852
1884
  values: overlayValues ?? [],
@@ -1862,58 +1894,58 @@ var BackgroundOverlayRepeaterControl = createControl(() => {
1862
1894
  ));
1863
1895
  });
1864
1896
  var ItemContent2 = ({ bind }) => {
1865
- return /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React34.createElement(Content2, null));
1897
+ return /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React37.createElement(Content2, null));
1866
1898
  };
1867
1899
  var Content2 = () => {
1868
1900
  const { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory({
1869
1901
  image: getInitialBackgroundOverlay().value,
1870
1902
  color: initialBackgroundColorOverlay.value
1871
1903
  });
1872
- return /* @__PURE__ */ React34.createElement(Box4, { sx: { width: "100%" } }, /* @__PURE__ */ React34.createElement(Box4, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React34.createElement(Tabs, { ...getTabsProps(), "aria-label": __17("Background Overlay", "elementor") }, /* @__PURE__ */ React34.createElement(Tab, { label: __17("Image", "elementor"), ...getTabProps("image") }), /* @__PURE__ */ React34.createElement(Tab, { label: __17("Color", "elementor"), ...getTabProps("color") }))), /* @__PURE__ */ React34.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React34.createElement(Stack12, { gap: 1.5 }, /* @__PURE__ */ React34.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React34.createElement(TabPanel, { ...getTabPanelProps("color"), sx: { p: 1.5 } }, /* @__PURE__ */ React34.createElement(Grid12, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React34.createElement(Grid12, { item: true, xs: 12 }, /* @__PURE__ */ React34.createElement(ColorControl, { propTypeUtil: backgroundColorOverlayPropTypeUtil2 })))));
1904
+ return /* @__PURE__ */ React37.createElement(Box4, { sx: { width: "100%" } }, /* @__PURE__ */ React37.createElement(Box4, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React37.createElement(Tabs, { ...getTabsProps(), "aria-label": __17("Background Overlay", "elementor") }, /* @__PURE__ */ React37.createElement(Tab, { label: __17("Image", "elementor"), ...getTabProps("image") }), /* @__PURE__ */ React37.createElement(Tab, { label: __17("Color", "elementor"), ...getTabProps("color") }))), /* @__PURE__ */ React37.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React37.createElement(PopoverContent, null, /* @__PURE__ */ React37.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React37.createElement(TabPanel, { ...getTabPanelProps("color"), sx: { p: 1.5 } }, /* @__PURE__ */ React37.createElement(Grid13, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React37.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React37.createElement(ColorControl, { propTypeUtil: backgroundColorOverlayPropTypeUtil2 })))));
1873
1905
  };
1874
1906
  var ItemIcon2 = ({ value }) => {
1875
1907
  switch (value.$$type) {
1876
1908
  case "background-image-overlay":
1877
- return /* @__PURE__ */ React34.createElement(ItemIconImage, { value });
1909
+ return /* @__PURE__ */ React37.createElement(ItemIconImage, { value });
1878
1910
  case "background-color-overlay":
1879
- return /* @__PURE__ */ React34.createElement(ItemIconColor, { value });
1911
+ return /* @__PURE__ */ React37.createElement(ItemIconColor, { value });
1880
1912
  default:
1881
1913
  return null;
1882
1914
  }
1883
1915
  };
1884
1916
  var ItemIconColor = ({ value }) => {
1885
- return /* @__PURE__ */ React34.createElement(UnstableColorIndicator2, { size: "inherit", component: "span", value: value.value });
1917
+ return /* @__PURE__ */ React37.createElement(UnstableColorIndicator2, { size: "inherit", component: "span", value: value.value });
1886
1918
  };
1887
1919
  var ItemIconImage = ({ value }) => {
1888
1920
  const { imageUrl } = useImage(value);
1889
- return /* @__PURE__ */ React34.createElement(CardMedia3, { image: imageUrl, sx: { height: 13, width: 13, borderRadius: "4px" } });
1921
+ return /* @__PURE__ */ React37.createElement(CardMedia3, { image: imageUrl, sx: { height: 13, width: 13, borderRadius: "4px" } });
1890
1922
  };
1891
1923
  var ItemLabel2 = ({ value }) => {
1892
1924
  switch (value.$$type) {
1893
1925
  case "background-image-overlay":
1894
- return /* @__PURE__ */ React34.createElement(ItemLabelImage, { value });
1926
+ return /* @__PURE__ */ React37.createElement(ItemLabelImage, { value });
1895
1927
  case "background-color-overlay":
1896
- return /* @__PURE__ */ React34.createElement(ItemLabelColor, { value });
1928
+ return /* @__PURE__ */ React37.createElement(ItemLabelColor, { value });
1897
1929
  default:
1898
1930
  return null;
1899
1931
  }
1900
1932
  };
1901
1933
  var ItemLabelColor = ({ value }) => {
1902
- return /* @__PURE__ */ React34.createElement("span", null, value.value);
1934
+ return /* @__PURE__ */ React37.createElement("span", null, value.value);
1903
1935
  };
1904
1936
  var ItemLabelImage = ({ value }) => {
1905
1937
  const { imageTitle } = useImage(value);
1906
- return /* @__PURE__ */ React34.createElement("span", null, imageTitle);
1938
+ return /* @__PURE__ */ React37.createElement("span", null, imageTitle);
1907
1939
  };
1908
1940
  var ImageOverlayContent = () => {
1909
1941
  const propContext = useBoundProp(backgroundImageOverlayPropTypeUtil2);
1910
- return /* @__PURE__ */ React34.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React34.createElement(Grid12, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React34.createElement(Grid12, { item: true, xs: 12 }, /* @__PURE__ */ React34.createElement(
1942
+ return /* @__PURE__ */ React37.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React37.createElement(Grid13, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React37.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React37.createElement(
1911
1943
  ImageControl,
1912
1944
  {
1913
1945
  resolutionLabel: __17("Resolution", "elementor"),
1914
1946
  sizes: backgroundResolutionOptions
1915
1947
  }
1916
- )))), /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React34.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React34.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React34.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React34.createElement(BackgroundImageOverlayAttachment, null)));
1948
+ )))), /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React37.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React37.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React37.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React37.createElement(BackgroundImageOverlayAttachment, null)));
1917
1949
  };
1918
1950
  var useImage = (image) => {
1919
1951
  let imageTitle, imageUrl = null;
@@ -1933,10 +1965,9 @@ var useImage = (image) => {
1933
1965
  // src/controls/background-control/background-control.tsx
1934
1966
  var BackgroundControl = createControl(() => {
1935
1967
  const propContext = useBoundProp(backgroundPropTypeUtil);
1936
- return /* @__PURE__ */ React35.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React35.createElement(Stack13, { gap: 1.5 }, /* @__PURE__ */ React35.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React35.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React35.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React35.createElement(Grid13, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React35.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React35.createElement(ControlLabel, null, __18("Color", "elementor"))), /* @__PURE__ */ React35.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React35.createElement(ColorControl, null))))));
1968
+ return /* @__PURE__ */ React38.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React38.createElement(SectionContent, null, /* @__PURE__ */ React38.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React38.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React38.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React38.createElement(Grid14, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React38.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(ControlLabel, null, __18("Color", "elementor"))), /* @__PURE__ */ React38.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(ColorControl, null))))));
1937
1969
  });
1938
1970
  export {
1939
- AutocompleteControl,
1940
1971
  BackgroundControl,
1941
1972
  BoxShadowRepeaterControl,
1942
1973
  ColorControl,