@elementor/editor-controls 4.1.0-manual → 4.2.0-839

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -351,7 +351,7 @@ var formatResponse = (response) => {
351
351
 
352
352
  // src/controls/image-media-control.tsx
353
353
  import * as React11 from "react";
354
- import { imageSrcPropTypeUtil } from "@elementor/editor-props";
354
+ import { imageSrcPropTypeUtil, stringPropTypeUtil, urlPropTypeUtil } from "@elementor/editor-props";
355
355
  import { UploadIcon } from "@elementor/icons";
356
356
  import { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack as Stack2 } from "@elementor/ui";
357
357
  import { useWpMediaAttachment, useWpMediaFrame } from "@elementor/wp-media";
@@ -392,10 +392,14 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
392
392
  const { data: attachment, isFetching } = useWpMediaAttachment(id?.value || null);
393
393
  const { data: placeholderAttachment } = useWpMediaAttachment(placeholder?.id?.value || null);
394
394
  const src = attachment?.url ?? url?.value ?? placeholderAttachment?.url ?? null;
395
+ const defaultUrl = imageSrcPropTypeUtil.extract(propType.default ?? null)?.url?.value;
396
+ const currentUrlForModal = url?.value && url.value !== defaultUrl ? url.value : void 0;
397
+ const currentAltForModal = value?.alt?.value;
395
398
  const { open } = useWpMediaFrame({
396
399
  mediaTypes,
397
400
  multiple: false,
398
401
  selected: id?.value || null,
402
+ allowUrlImport: true,
399
403
  onSelect: (selectedAttachment) => {
400
404
  setValue({
401
405
  id: {
@@ -404,6 +408,13 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
404
408
  },
405
409
  url: null
406
410
  });
411
+ },
412
+ onSelectUrl: (selectedUrl, alt) => {
413
+ setValue({
414
+ id: null,
415
+ url: urlPropTypeUtil.create(selectedUrl),
416
+ alt: alt ? stringPropTypeUtil.create(alt) : null
417
+ });
407
418
  }
408
419
  });
409
420
  return /* @__PURE__ */ React11.createElement(ControlActions, null, /* @__PURE__ */ React11.createElement(Card, { variant: "outlined" }, /* @__PURE__ */ React11.createElement(CardMedia, { image: src, sx: { height: propType.meta.isDynamic ? 134 : 150 } }, isFetching ? /* @__PURE__ */ React11.createElement(Stack2, { justifyContent: "center", alignItems: "center", width: "100%", height: "100%" }, /* @__PURE__ */ React11.createElement(CircularProgress, null)) : /* @__PURE__ */ React11.createElement(React11.Fragment, null)), /* @__PURE__ */ React11.createElement(CardOverlay, null, /* @__PURE__ */ React11.createElement(Stack2, { gap: 1 }, /* @__PURE__ */ React11.createElement(
@@ -425,12 +436,21 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
425
436
  onClick: () => open({ mode: "upload" })
426
437
  },
427
438
  __("Upload", "elementor")
439
+ ), /* @__PURE__ */ React11.createElement(
440
+ Button,
441
+ {
442
+ size: "tiny",
443
+ variant: "text",
444
+ color: "inherit",
445
+ onClick: () => open({ mode: "url", currentUrl: currentUrlForModal, currentAlt: currentAltForModal })
446
+ },
447
+ __("Insert from URL", "elementor")
428
448
  )))));
429
449
  });
430
450
 
431
451
  // src/controls/select-control.tsx
432
452
  import * as React12 from "react";
433
- import { stringPropTypeUtil } from "@elementor/editor-props";
453
+ import { stringPropTypeUtil as stringPropTypeUtil2 } from "@elementor/editor-props";
434
454
  import { MenuListItem } from "@elementor/editor-ui";
435
455
  import { Select, Typography } from "@elementor/ui";
436
456
  var DEFAULT_MENU_PROPS = {
@@ -442,7 +462,7 @@ var DEFAULT_MENU_PROPS = {
442
462
  };
443
463
  var SelectControl = createControl(
444
464
  ({ options, onChange, MenuProps = DEFAULT_MENU_PROPS, ariaLabel }) => {
445
- const { value, setValue, disabled, placeholder } = useBoundProp(stringPropTypeUtil);
465
+ const { value, setValue, disabled, placeholder } = useBoundProp(stringPropTypeUtil2);
446
466
  const handleChange = (event) => {
447
467
  const newValue = event.target.value || null;
448
468
  onChange?.(newValue, value);
@@ -498,7 +518,7 @@ var ImageSizeControl = ({ sizes }) => {
498
518
 
499
519
  // src/controls/text-control.tsx
500
520
  import * as React14 from "react";
501
- import { stringPropTypeUtil as stringPropTypeUtil2 } from "@elementor/editor-props";
521
+ import { stringPropTypeUtil as stringPropTypeUtil3 } from "@elementor/editor-props";
502
522
  import { TextField } from "@elementor/ui";
503
523
  var TextControl = createControl(
504
524
  ({
@@ -510,7 +530,7 @@ var TextControl = createControl(
510
530
  sx,
511
531
  ariaLabel
512
532
  }) => {
513
- const { value, setValue, disabled, placeholder: boundPlaceholder } = useBoundProp(stringPropTypeUtil2);
533
+ const { value, setValue, disabled, placeholder: boundPlaceholder } = useBoundProp(stringPropTypeUtil3);
514
534
  const handleChange = (event) => setValue(event.target.value);
515
535
  const placeholder = propPlaceholder ?? boundPlaceholder ?? void 0;
516
536
  return /* @__PURE__ */ React14.createElement(ControlActions, null, /* @__PURE__ */ React14.createElement(
@@ -535,10 +555,10 @@ var TextControl = createControl(
535
555
 
536
556
  // src/controls/text-area-control.tsx
537
557
  import * as React15 from "react";
538
- import { stringPropTypeUtil as stringPropTypeUtil3 } from "@elementor/editor-props";
558
+ import { stringPropTypeUtil as stringPropTypeUtil4 } from "@elementor/editor-props";
539
559
  import { TextField as TextField2 } from "@elementor/ui";
540
560
  var TextAreaControl = createControl(({ placeholder: propPlaceholder, ariaLabel }) => {
541
- const { value, setValue, disabled, placeholder: boundPlaceholder } = useBoundProp(stringPropTypeUtil3);
561
+ const { value, setValue, disabled, placeholder: boundPlaceholder } = useBoundProp(stringPropTypeUtil4);
542
562
  const handleChange = (event) => {
543
563
  setValue(event.target.value);
544
564
  };
@@ -565,7 +585,7 @@ var TextAreaControl = createControl(({ placeholder: propPlaceholder, ariaLabel }
565
585
  import * as React16 from "react";
566
586
  import { useCallback, useState as useState2 } from "react";
567
587
  import { Mention } from "primereact/mention";
568
- import { stringPropTypeUtil as stringPropTypeUtil4 } from "@elementor/editor-props";
588
+ import { stringPropTypeUtil as stringPropTypeUtil5 } from "@elementor/editor-props";
569
589
  import { styled } from "@elementor/ui";
570
590
  var MentionWrapper = styled("div")(({ theme }) => ({
571
591
  position: "relative",
@@ -633,25 +653,30 @@ var MentionWrapper = styled("div")(({ theme }) => ({
633
653
  "&.p-highlight": {
634
654
  backgroundColor: theme.palette.action.selected
635
655
  }
656
+ },
657
+ '&[data-single-line="true"] textarea': {
658
+ resize: "none"
636
659
  }
637
660
  }));
661
+ function createMentionPattern(value, triggerPosition) {
662
+ const escaped = value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
663
+ const prefix = "start" === triggerPosition ? "^" : "";
664
+ return new RegExp(`${prefix}@${escaped}(?=\\s|$|[^a-zA-Z0-9_-])`, "g");
665
+ }
638
666
  var MentionTextAreaControl = createControl(
639
- ({ placeholder, ariaLabel, suggestions: allSuggestions }) => {
640
- const { value, setValue, disabled } = useBoundProp(stringPropTypeUtil4);
667
+ ({ placeholder, ariaLabel, suggestions: allSuggestions, rows = 5, triggerPosition = "auto" }) => {
668
+ const { value, setValue, disabled } = useBoundProp(stringPropTypeUtil5);
641
669
  const [filteredSuggestions, setFilteredSuggestions] = useState2([]);
642
670
  const transformMentionsToShortcodes = useCallback(
643
671
  (text) => {
644
672
  let result = text;
645
673
  for (const suggestion of allSuggestions) {
646
- const mentionPattern = new RegExp(
647
- `@${suggestion.value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}(?=\\s|$|[^a-zA-Z0-9_-])`,
648
- "g"
649
- );
650
- result = result.replace(mentionPattern, `[${suggestion.value}]`);
674
+ const pattern = createMentionPattern(suggestion.value, triggerPosition);
675
+ result = result.replace(pattern, `[${suggestion.value}]`);
651
676
  }
652
677
  return result;
653
678
  },
654
- [allSuggestions]
679
+ [allSuggestions, triggerPosition]
655
680
  );
656
681
  const handleChange = useCallback(
657
682
  (e) => {
@@ -663,15 +688,23 @@ var MentionTextAreaControl = createControl(
663
688
  );
664
689
  const handleSearch = useCallback(
665
690
  (event) => {
691
+ if ("start" === triggerPosition) {
692
+ const target = event.originalEvent.target;
693
+ const triggerIndex = target.selectionStart - event.query.length - event.trigger.length;
694
+ if (triggerIndex !== 0) {
695
+ setFilteredSuggestions([]);
696
+ return;
697
+ }
698
+ }
666
699
  const query = event.query.toLowerCase();
667
700
  const filtered = allSuggestions.filter(
668
701
  (item) => item.label.toLowerCase().includes(query) || item.value.toLowerCase().includes(query)
669
702
  );
670
703
  setFilteredSuggestions(filtered);
671
704
  },
672
- [allSuggestions]
705
+ [allSuggestions, triggerPosition]
673
706
  );
674
- return /* @__PURE__ */ React16.createElement(ControlActions, null, /* @__PURE__ */ React16.createElement(MentionWrapper, null, /* @__PURE__ */ React16.createElement(
707
+ return /* @__PURE__ */ React16.createElement(ControlActions, null, /* @__PURE__ */ React16.createElement(MentionWrapper, { "data-single-line": rows === 1 ? "true" : void 0 }, /* @__PURE__ */ React16.createElement(
675
708
  Mention,
676
709
  {
677
710
  value: value ?? "",
@@ -680,7 +713,7 @@ var MentionTextAreaControl = createControl(
680
713
  onSearch: handleSearch,
681
714
  field: "value",
682
715
  trigger: "@",
683
- rows: 5,
716
+ rows,
684
717
  disabled,
685
718
  placeholder,
686
719
  itemTemplate: SuggestionItem,
@@ -1370,7 +1403,7 @@ var Control = forwardRef3(({ bind, label, children }, ref) => /* @__PURE__ */ Re
1370
1403
 
1371
1404
  // src/controls/box-shadow-repeater-control.tsx
1372
1405
  import * as React40 from "react";
1373
- import { useRef as useRef4 } from "react";
1406
+ import { useRef as useRef5 } from "react";
1374
1407
  import { boxShadowPropTypeUtil, shadowPropTypeUtil } from "@elementor/editor-props";
1375
1408
  import { FormLabel as FormLabel2, Grid as Grid4, styled as styled4, UnstableColorIndicator } from "@elementor/ui";
1376
1409
  import { __ as __11 } from "@wordpress/i18n";
@@ -1383,9 +1416,53 @@ import { __ as __5, sprintf } from "@wordpress/i18n";
1383
1416
 
1384
1417
  // src/components/control-repeater/context/repeater-context.tsx
1385
1418
  import * as React25 from "react";
1386
- import { createContext as createContext7, useContext as useContext6, useEffect as useEffect5, useMemo as useMemo3, useState as useState5 } from "react";
1419
+ import { createContext as createContext7, useContext as useContext6, useEffect as useEffect6, useMemo as useMemo4, useState as useState5 } from "react";
1387
1420
  import { usePopupState as usePopupState3 } from "@elementor/ui";
1388
1421
 
1422
+ // src/hooks/use-repeater-popover-dismiss.ts
1423
+ import { useEffect as useEffect5, useMemo as useMemo3, useRef as useRef4 } from "react";
1424
+ import { useActiveBreakpoint as useActiveBreakpoint2, useBreakpoints } from "@elementor/editor-responsive";
1425
+ var serializeBreakpoints = (breakpoints) => breakpoints.map((b) => [b.id, b.width ?? "", b.type ?? ""].join(":")).join("|");
1426
+ var usePopoverDismiss = ({ isOpen, onClose }) => {
1427
+ const onCloseRef = useRef4(onClose);
1428
+ onCloseRef.current = onClose;
1429
+ const activeBreakpoint = useActiveBreakpoint2();
1430
+ const breakpoints = useBreakpoints();
1431
+ const breakpointsSignature = useMemo3(() => serializeBreakpoints(breakpoints), [breakpoints]);
1432
+ const prevActiveBreakpointRef = useRef4(void 0);
1433
+ const prevBreakpointsSignatureRef = useRef4(null);
1434
+ useEffect5(() => {
1435
+ if (!isOpen) {
1436
+ prevActiveBreakpointRef.current = activeBreakpoint;
1437
+ prevBreakpointsSignatureRef.current = breakpointsSignature;
1438
+ return;
1439
+ }
1440
+ const previousBreakpoint = prevActiveBreakpointRef.current;
1441
+ const previousSignature = prevBreakpointsSignatureRef.current;
1442
+ const breakpointChanged = previousBreakpoint !== void 0 && previousBreakpoint !== activeBreakpoint;
1443
+ const breakpointsChanged = previousSignature !== null && previousSignature !== breakpointsSignature;
1444
+ if (breakpointChanged || breakpointsChanged) {
1445
+ onCloseRef.current();
1446
+ }
1447
+ prevActiveBreakpointRef.current = activeBreakpoint;
1448
+ prevBreakpointsSignatureRef.current = breakpointsSignature;
1449
+ }, [activeBreakpoint, breakpointsSignature, isOpen]);
1450
+ useEffect5(() => {
1451
+ if (!isOpen) {
1452
+ return;
1453
+ }
1454
+ const onKeyDown = (event) => {
1455
+ if (event.key === "Escape" && !event.defaultPrevented) {
1456
+ onCloseRef.current();
1457
+ }
1458
+ };
1459
+ document.addEventListener("keydown", onKeyDown);
1460
+ return () => {
1461
+ document.removeEventListener("keydown", onKeyDown);
1462
+ };
1463
+ }, [isOpen]);
1464
+ };
1465
+
1389
1466
  // src/services/event-bus.ts
1390
1467
  var EventBus = class {
1391
1468
  listeners = /* @__PURE__ */ new Map();
@@ -1454,7 +1531,7 @@ var RepeaterContextProvider = ({
1454
1531
  const [uniqueKeys, setUniqueKeys] = useState5(() => {
1455
1532
  return items2?.map(() => generateUniqueKey()) ?? [];
1456
1533
  });
1457
- useEffect5(() => {
1534
+ useEffect6(() => {
1458
1535
  const nextLength = items2?.length ?? 0;
1459
1536
  setUniqueKeys((prev) => {
1460
1537
  const prevLength = prev.length;
@@ -1467,7 +1544,7 @@ var RepeaterContextProvider = ({
1467
1544
  return [...prev, ...Array.from({ length: nextLength - prevLength }, generateUniqueKey)];
1468
1545
  });
1469
1546
  }, [items2?.length]);
1470
- const itemsWithKeys = useMemo3(
1547
+ const itemsWithKeys = useMemo4(
1471
1548
  () => uniqueKeys.map((key, index) => ({
1472
1549
  key,
1473
1550
  item: items2[index]
@@ -1507,6 +1584,15 @@ var RepeaterContextProvider = ({
1507
1584
  const newItems = [...items2.slice(0, index), updatedItem, ...items2.slice(index + 1)];
1508
1585
  setItems(newItems);
1509
1586
  };
1587
+ const closePopover = () => {
1588
+ if (!isOpen) {
1589
+ return;
1590
+ }
1591
+ setOpenItemIndex(EMPTY_OPEN_ITEM);
1592
+ setRowRef(null);
1593
+ popoverState.close();
1594
+ };
1595
+ usePopoverDismiss({ isOpen, onClose: closePopover });
1510
1596
  return /* @__PURE__ */ React25.createElement(
1511
1597
  RepeaterContext.Provider,
1512
1598
  {
@@ -1956,7 +2042,7 @@ var StyledUnstableColorIndicator = styled4(UnstableColorIndicator)(({ theme }) =
1956
2042
  var ItemIcon = ({ value }) => /* @__PURE__ */ React40.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: value.value.color?.value });
1957
2043
  var Content = () => {
1958
2044
  const context = useBoundProp(shadowPropTypeUtil);
1959
- const rowRef = [useRef4(null), useRef4(null)];
2045
+ const rowRef = [useRef5(null), useRef5(null)];
1960
2046
  const { rowRef: anchorEl } = useRepeaterContext();
1961
2047
  return /* @__PURE__ */ React40.createElement(PropProvider, { ...context }, /* @__PURE__ */ React40.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React40.createElement(PopoverGridContainer, null, /* @__PURE__ */ React40.createElement(Control2, { bind: "color", label: __11("Color", "elementor") }, /* @__PURE__ */ React40.createElement(ColorControl, { anchorEl })), /* @__PURE__ */ React40.createElement(Control2, { bind: "position", label: __11("Position", "elementor"), sx: { overflow: "hidden" } }, /* @__PURE__ */ React40.createElement(
1962
2048
  SelectControl,
@@ -2031,7 +2117,7 @@ import { __ as __17 } from "@wordpress/i18n";
2031
2117
 
2032
2118
  // src/controls/filter-control/context/filter-config-context.tsx
2033
2119
  import * as React41 from "react";
2034
- import { createContext as createContext9, useContext as useContext9, useMemo as useMemo4 } from "react";
2120
+ import { createContext as createContext9, useContext as useContext9, useMemo as useMemo5 } from "react";
2035
2121
  import { cssFilterFunctionPropUtil } from "@elementor/editor-props";
2036
2122
 
2037
2123
  // src/controls/filter-control/utils.ts
@@ -2133,7 +2219,7 @@ function extractPropType(propType, filterFunctionGroup) {
2133
2219
  var FilterConfigContext = createContext9(null);
2134
2220
  function FilterConfigProvider({ children }) {
2135
2221
  const propContext = useBoundProp(cssFilterFunctionPropUtil);
2136
- const contextValue = useMemo4(() => {
2222
+ const contextValue = useMemo5(() => {
2137
2223
  const config = buildFilterConfig(propContext.propType.item_prop_type);
2138
2224
  const filterOptions = Object.entries(config).map(([key, conf]) => ({
2139
2225
  value: key,
@@ -2166,7 +2252,7 @@ import { __ as __15 } from "@wordpress/i18n";
2166
2252
 
2167
2253
  // src/controls/filter-control/drop-shadow/drop-shadow-item-content.tsx
2168
2254
  import * as React42 from "react";
2169
- import { useRef as useRef5 } from "react";
2255
+ import { useRef as useRef6 } from "react";
2170
2256
  import { dropShadowFilterPropTypeUtil } from "@elementor/editor-props";
2171
2257
  import { Grid as Grid5 } from "@elementor/ui";
2172
2258
  import { __ as __14 } from "@wordpress/i18n";
@@ -2194,7 +2280,7 @@ var items = [
2194
2280
  ];
2195
2281
  var DropShadowItemContent = ({ anchorEl }) => {
2196
2282
  const context = useBoundProp(dropShadowFilterPropTypeUtil);
2197
- const rowRefs = [useRef5(null), useRef5(null)];
2283
+ const rowRefs = [useRef6(null), useRef6(null)];
2198
2284
  return /* @__PURE__ */ React42.createElement(PropProvider, { ...context }, items.map((item) => /* @__PURE__ */ React42.createElement(PopoverGridContainer, { key: item.bind, ref: rowRefs[item.rowIndex] ?? null }, /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React42.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React42.createElement(Grid5, { item: true, xs: 6 }, item.bind === "color" ? /* @__PURE__ */ React42.createElement(ColorControl, { anchorEl }) : /* @__PURE__ */ React42.createElement(
2199
2285
  SizeControl,
2200
2286
  {
@@ -2207,7 +2293,7 @@ var DropShadowItemContent = ({ anchorEl }) => {
2207
2293
  };
2208
2294
 
2209
2295
  // src/controls/filter-control/single-size/single-size-item-content.tsx
2210
- import { useRef as useRef6 } from "react";
2296
+ import { useRef as useRef7 } from "react";
2211
2297
  import * as React43 from "react";
2212
2298
  import {
2213
2299
  blurFilterPropTypeUtil,
@@ -2223,7 +2309,7 @@ var propTypeMap = {
2223
2309
  "color-tone": colorToneFilterPropTypeUtil
2224
2310
  };
2225
2311
  var SingleSizeItemContent = ({ filterFunc }) => {
2226
- const rowRef = useRef6(null);
2312
+ const rowRef = useRef7(null);
2227
2313
  const { getFilterFunctionConfig } = useFilterConfig();
2228
2314
  const { valueName, filterFunctionGroup } = getFilterFunctionConfig(filterFunc);
2229
2315
  const context = useBoundProp(propTypeMap[filterFunctionGroup]);
@@ -2364,7 +2450,7 @@ function ensureFilterConfig(name) {
2364
2450
 
2365
2451
  // src/controls/select-control-wrapper.tsx
2366
2452
  import * as React50 from "react";
2367
- import { useEffect as useEffect6, useState as useState6 } from "react";
2453
+ import { useEffect as useEffect7, useState as useState6 } from "react";
2368
2454
  var getOffCanvasElements = () => {
2369
2455
  const extendedWindow = window;
2370
2456
  const documentId = extendedWindow.elementor.config.document.id;
@@ -2401,7 +2487,7 @@ var collectionMethods = {
2401
2487
  };
2402
2488
  var useDynamicOptions = (collectionId, initialOptions) => {
2403
2489
  const [options, setOptions] = useState6(initialOptions ?? []);
2404
- useEffect6(() => {
2490
+ useEffect7(() => {
2405
2491
  if (!collectionId || !collectionMethods[collectionId]) {
2406
2492
  setOptions(initialOptions ?? []);
2407
2493
  return;
@@ -2419,15 +2505,15 @@ var SelectControlWrapper = createControl(
2419
2505
 
2420
2506
  // src/controls/chips-control.tsx
2421
2507
  import * as React51 from "react";
2422
- import { stringArrayPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil5 } from "@elementor/editor-props";
2508
+ import { stringArrayPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil6 } from "@elementor/editor-props";
2423
2509
  import { Autocomplete, Chip, TextField as TextField5 } from "@elementor/ui";
2424
2510
  var SIZE6 = "tiny";
2425
2511
  var ChipsControl = createControl(({ options }) => {
2426
2512
  const { value, setValue, disabled } = useBoundProp(stringArrayPropTypeUtil);
2427
- const selectedValues = (value || []).map((item) => stringPropTypeUtil5.extract(item)).filter((val) => val !== null);
2513
+ const selectedValues = (value || []).map((item) => stringPropTypeUtil6.extract(item)).filter((val) => val !== null);
2428
2514
  const selectedOptions = selectedValues.map((val) => options.find((opt) => opt.value === val)).filter((opt) => opt !== void 0);
2429
2515
  const handleChange = (_, newValue) => {
2430
- const values = newValue.map((option) => stringPropTypeUtil5.create(option.value));
2516
+ const values = newValue.map((option) => stringPropTypeUtil6.create(option.value));
2431
2517
  setValue(values);
2432
2518
  };
2433
2519
  return /* @__PURE__ */ React51.createElement(ControlActions, null, /* @__PURE__ */ React51.createElement(
@@ -2453,11 +2539,11 @@ var ChipsControl = createControl(({ options }) => {
2453
2539
 
2454
2540
  // src/controls/toggle-control.tsx
2455
2541
  import * as React55 from "react";
2456
- import { stringPropTypeUtil as stringPropTypeUtil6 } from "@elementor/editor-props";
2542
+ import { stringPropTypeUtil as stringPropTypeUtil7 } from "@elementor/editor-props";
2457
2543
 
2458
2544
  // src/components/control-toggle-button-group.tsx
2459
2545
  import * as React53 from "react";
2460
- import { useEffect as useEffect7, useMemo as useMemo5, useRef as useRef7, useState as useState7 } from "react";
2546
+ import { useEffect as useEffect8, useMemo as useMemo6, useRef as useRef8, useState as useState7 } from "react";
2461
2547
  import { ChevronDownIcon } from "@elementor/icons";
2462
2548
  import {
2463
2549
  ListItemText,
@@ -2530,7 +2616,7 @@ var ToggleButtonGroupUi = React53.forwardRef(
2530
2616
  const handleChange = (_, newValue) => {
2531
2617
  onChange(newValue);
2532
2618
  };
2533
- const getGridTemplateColumns = useMemo5(() => {
2619
+ const getGridTemplateColumns = useMemo6(() => {
2534
2620
  const isOffLimits = menuItems?.length;
2535
2621
  const itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;
2536
2622
  const templateColumnsSuffix = isOffLimits ? "auto" : "";
@@ -2629,7 +2715,7 @@ var SplitButtonGroup = ({
2629
2715
  }) => {
2630
2716
  const previewButton = usePreviewButton(items2, value);
2631
2717
  const [isMenuOpen, setIsMenuOpen] = useState7(false);
2632
- const menuButtonRef = useRef7(null);
2718
+ const menuButtonRef = useRef8(null);
2633
2719
  const onMenuToggle = (ev) => {
2634
2720
  setIsMenuOpen((prev) => !prev);
2635
2721
  ev.preventDefault();
@@ -2700,7 +2786,7 @@ var usePreviewButton = (items2, value) => {
2700
2786
  const [previewButton, setPreviewButton] = useState7(
2701
2787
  items2.find((item) => item.value === value) ?? items2[0]
2702
2788
  );
2703
- useEffect7(() => {
2789
+ useEffect8(() => {
2704
2790
  const selectedButton = items2.find((item) => item.value === value);
2705
2791
  if (selectedButton) {
2706
2792
  setPreviewButton(selectedButton);
@@ -2741,7 +2827,7 @@ var ToggleControl = createControl(
2741
2827
  maxItems,
2742
2828
  convertOptions = false
2743
2829
  }) => {
2744
- const { value, setValue, placeholder, disabled } = useBoundProp(stringPropTypeUtil6);
2830
+ const { value, setValue, placeholder, disabled } = useBoundProp(stringPropTypeUtil7);
2745
2831
  const processedOptions = convertOptions ? convertToggleOptionsToAtomic(options) : options;
2746
2832
  const exclusiveValues = processedOptions.filter((option) => option.exclusive).map((option) => option.value);
2747
2833
  const handleNonExclusiveToggle = (selectedValues) => {
@@ -2797,7 +2883,8 @@ var NumberControl = createControl(
2797
2883
  min = -Number.MAX_SAFE_INTEGER,
2798
2884
  step = 1,
2799
2885
  shouldForceInt = false,
2800
- startIcon
2886
+ startIcon,
2887
+ disabled: inputDisabled
2801
2888
  }) => {
2802
2889
  const { value, setValue, placeholder, disabled, restoreValue, propType } = useBoundProp(numberPropTypeUtil);
2803
2890
  const handleChange = (event) => {
@@ -2823,14 +2910,14 @@ var NumberControl = createControl(
2823
2910
  size: "tiny",
2824
2911
  type: "number",
2825
2912
  fullWidth: true,
2826
- disabled,
2913
+ disabled: inputDisabled ?? disabled,
2827
2914
  value: isEmptyOrNaN(value) ? "" : value,
2828
2915
  onInput: handleChange,
2829
2916
  onBlur: restoreValue,
2830
2917
  placeholder: labelPlaceholder ?? (isEmptyOrNaN(placeholder) ? "" : String(placeholder)),
2831
2918
  inputProps: { step, min },
2832
2919
  InputProps: {
2833
- startAdornment: startIcon ? /* @__PURE__ */ React56.createElement(InputAdornment3, { position: "start", disabled }, startIcon) : void 0,
2920
+ startAdornment: startIcon ? /* @__PURE__ */ React56.createElement(InputAdornment3, { position: "start", disabled: inputDisabled ?? disabled }, startIcon) : void 0,
2834
2921
  endAdornment: renderSuffix(propType)
2835
2922
  }
2836
2923
  }
@@ -2840,7 +2927,7 @@ var NumberControl = createControl(
2840
2927
 
2841
2928
  // src/controls/equal-unequal-sizes-control.tsx
2842
2929
  import * as React57 from "react";
2843
- import { useId as useId2, useRef as useRef8 } from "react";
2930
+ import { useId as useId2, useRef as useRef9 } from "react";
2844
2931
  import { bindPopover as bindPopover3, bindToggle, Box as Box7, Grid as Grid8, Popover as Popover3, Stack as Stack7, Tooltip as Tooltip5, usePopupState as usePopupState4 } from "@elementor/ui";
2845
2932
  import { __ as __18 } from "@wordpress/i18n";
2846
2933
  function EqualUnequalSizesControl({
@@ -2852,7 +2939,7 @@ function EqualUnequalSizesControl({
2852
2939
  }) {
2853
2940
  const popupId = useId2();
2854
2941
  const popupState = usePopupState4({ variant: "popover", popupId });
2855
- const rowRefs = [useRef8(null), useRef8(null)];
2942
+ const rowRefs = [useRef9(null), useRef9(null)];
2856
2943
  const { propType: multiSizePropType, disabled: multiSizeDisabled } = useBoundProp(multiSizePropTypeUtil);
2857
2944
  const { value: masterValue, setValue: setMasterValue, placeholder: masterPlaceholder } = useBoundProp();
2858
2945
  const getMultiSizeValues = (sourceValue) => {
@@ -2947,25 +3034,25 @@ var MultiSizeValueControl = ({ item, rowRef }) => {
2947
3034
 
2948
3035
  // src/controls/linked-dimensions-control.tsx
2949
3036
  import * as React64 from "react";
2950
- import { useLayoutEffect, useRef as useRef11, useState as useState9 } from "react";
3037
+ import { useLayoutEffect, useRef as useRef12, useState as useState9 } from "react";
2951
3038
  import {
2952
3039
  dimensionsPropTypeUtil,
2953
3040
  sizePropTypeUtil as sizePropTypeUtil5
2954
3041
  } from "@elementor/editor-props";
2955
- import { useActiveBreakpoint as useActiveBreakpoint3 } from "@elementor/editor-responsive";
3042
+ import { useActiveBreakpoint as useActiveBreakpoint4 } from "@elementor/editor-responsive";
2956
3043
  import { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from "@elementor/icons";
2957
3044
  import { Grid as Grid9, Stack as Stack8, Tooltip as Tooltip6 } from "@elementor/ui";
2958
3045
  import { __ as __20, sprintf as sprintf2 } from "@wordpress/i18n";
2959
3046
 
2960
3047
  // src/controls/size-control/unstable-size-control.tsx
2961
3048
  import * as React63 from "react";
2962
- import { useRef as useRef10 } from "react";
3049
+ import { useRef as useRef11 } from "react";
2963
3050
  import { sizePropTypeUtil as sizePropTypeUtil4 } from "@elementor/editor-props";
2964
3051
 
2965
3052
  // src/controls/size-control/size-component.tsx
2966
3053
  import * as React62 from "react";
2967
- import { useEffect as useEffect10 } from "react";
2968
- import { useActiveBreakpoint as useActiveBreakpoint2 } from "@elementor/editor-responsive";
3054
+ import { useEffect as useEffect11 } from "react";
3055
+ import { useActiveBreakpoint as useActiveBreakpoint3 } from "@elementor/editor-responsive";
2969
3056
  import { Box as Box8, usePopupState as usePopupState6 } from "@elementor/ui";
2970
3057
 
2971
3058
  // src/controls/size-control/size-field.tsx
@@ -3034,7 +3121,7 @@ var isNumericValue = (value) => {
3034
3121
  };
3035
3122
 
3036
3123
  // src/controls/size-control/hooks/use-size-value.ts
3037
- import { useMemo as useMemo6 } from "react";
3124
+ import { useMemo as useMemo7 } from "react";
3038
3125
 
3039
3126
  // src/controls/size-control/utils/resolve-size-value.ts
3040
3127
  var DEFAULT_SIZE2 = "";
@@ -3086,10 +3173,10 @@ var sanitizeSize = (size) => {
3086
3173
  };
3087
3174
 
3088
3175
  // src/controls/size-control/hooks/use-unit-sync.ts
3089
- import { useEffect as useEffect8, useState as useState8 } from "react";
3176
+ import { useEffect as useEffect9, useState as useState8 } from "react";
3090
3177
  var useUnitSync = ({ sizeValue, setUnit, persistWhen }) => {
3091
3178
  const [state, setState] = useState8(sizeValue.unit);
3092
- useEffect8(() => {
3179
+ useEffect9(() => {
3093
3180
  if (sizeValue.unit !== state) {
3094
3181
  setState(sizeValue.unit);
3095
3182
  }
@@ -3110,7 +3197,7 @@ var useSizeValue = ({
3110
3197
  units: units2,
3111
3198
  defaultUnit
3112
3199
  }) => {
3113
- const resolvedValue = useMemo6(
3200
+ const resolvedValue = useMemo7(
3114
3201
  () => resolveSizeValue(value, { units: units2, defaultUnit }),
3115
3202
  // eslint-disable-next-line react-hooks/exhaustive-deps
3116
3203
  [value?.size, value?.unit, defaultUnit]
@@ -3335,7 +3422,7 @@ var SizeField = ({
3335
3422
  }
3336
3423
  ))
3337
3424
  },
3338
- inputProps: { min, step: "any", "arial-label": ariaLabel }
3425
+ inputProps: { min, step: "any", "aria-label": ariaLabel }
3339
3426
  }
3340
3427
  );
3341
3428
  };
@@ -3351,15 +3438,15 @@ var shouldHighlightUnit = (value) => {
3351
3438
 
3352
3439
  // src/controls/size-control/ui/text-field-popover.tsx
3353
3440
  import * as React61 from "react";
3354
- import { useEffect as useEffect9, useRef as useRef9 } from "react";
3441
+ import { useEffect as useEffect10, useRef as useRef10 } from "react";
3355
3442
  import { PopoverHeader as PopoverHeader2 } from "@elementor/editor-ui";
3356
3443
  import { MathFunctionIcon as MathFunctionIcon4 } from "@elementor/icons";
3357
3444
  import { bindPopover as bindPopover4, Popover as Popover4, TextField as TextField6 } from "@elementor/ui";
3358
3445
  import { __ as __19 } from "@wordpress/i18n";
3359
3446
  var SIZE7 = "tiny";
3360
3447
  var TextFieldPopover2 = ({ popupState, anchorRef, value, onChange, onClose }) => {
3361
- const inputRef = useRef9(null);
3362
- useEffect9(() => {
3448
+ const inputRef = useRef10(null);
3449
+ useEffect10(() => {
3363
3450
  if (popupState.isOpen) {
3364
3451
  requestAnimationFrame(() => {
3365
3452
  if (inputRef.current) {
@@ -3423,10 +3510,10 @@ var TextFieldPopover2 = ({ popupState, anchorRef, value, onChange, onClose }) =>
3423
3510
  // src/controls/size-control/size-component.tsx
3424
3511
  var SizeComponent = ({ anchorRef, SizeFieldWrapper = React62.Fragment, ...sizeFieldProps }) => {
3425
3512
  const popupState = usePopupState6({ variant: "popover" });
3426
- const activeBreakpoint = useActiveBreakpoint2();
3513
+ const activeBreakpoint = useActiveBreakpoint3();
3427
3514
  const isCustomUnit = sizeFieldProps?.value?.unit === EXTENDED_UNITS.custom;
3428
3515
  const hasCustomUnitOption = sizeFieldProps.units.includes(EXTENDED_UNITS.custom);
3429
- useEffect10(() => {
3516
+ useEffect11(() => {
3430
3517
  if (popupState && popupState.isOpen) {
3431
3518
  popupState.close();
3432
3519
  }
@@ -3563,7 +3650,7 @@ var UnstableSizeControl = createControl(
3563
3650
  placeholder: boundPropPlaceholder,
3564
3651
  restoreValue
3565
3652
  } = useBoundProp(sizePropTypeUtil4);
3566
- const lastNonAutoValue = useRef10(null);
3653
+ const lastNonAutoValue = useRef11(null);
3567
3654
  const { sizeValue, placeholder } = resolveBoundPropValue(
3568
3655
  value ?? lastNonAutoValue.current,
3569
3656
  boundPropPlaceholder,
@@ -3620,7 +3707,7 @@ var isTransitioningFromExtendedUnit = (nextValue, previousValue) => {
3620
3707
 
3621
3708
  // src/controls/linked-dimensions-control.tsx
3622
3709
  var LinkedDimensionsControl = ({ label, isSiteRtl = false, min }) => {
3623
- const gridRowRefs = [useRef11(null), useRef11(null)];
3710
+ const gridRowRefs = [useRef12(null), useRef12(null)];
3624
3711
  const { disabled: sizeDisabled } = useBoundProp(sizePropTypeUtil5);
3625
3712
  const {
3626
3713
  value: dimensionsValue,
@@ -3640,7 +3727,7 @@ var LinkedDimensionsControl = ({ label, isSiteRtl = false, min }) => {
3640
3727
  return true;
3641
3728
  };
3642
3729
  const [isLinked, setIsLinked] = useState9(() => inferIsLinked());
3643
- const activeBreakpoint = useActiveBreakpoint3();
3730
+ const activeBreakpoint = useActiveBreakpoint4();
3644
3731
  const isCurrentlyDimensions = dimensionsPropTypeUtil.isValid(masterValue ?? masterPlaceholder);
3645
3732
  useLayoutEffect(() => {
3646
3733
  setIsLinked(inferIsLinked);
@@ -3813,15 +3900,15 @@ function getCssDimensionProps(label, isSiteRtl) {
3813
3900
 
3814
3901
  // src/controls/font-family-control/font-family-control.tsx
3815
3902
  import * as React66 from "react";
3816
- import { useMemo as useMemo7 } from "react";
3817
- import { stringPropTypeUtil as stringPropTypeUtil7 } from "@elementor/editor-props";
3903
+ import { useMemo as useMemo8 } from "react";
3904
+ import { stringPropTypeUtil as stringPropTypeUtil8 } from "@elementor/editor-props";
3818
3905
  import { ChevronDownIcon as ChevronDownIcon2, TextIcon } from "@elementor/icons";
3819
3906
  import { bindPopover as bindPopover5, bindTrigger as bindTrigger4, Popover as Popover5, UnstableTag as UnstableTag2, usePopupState as usePopupState7 } from "@elementor/ui";
3820
3907
  import { __ as __22 } from "@wordpress/i18n";
3821
3908
 
3822
3909
  // src/components/item-selector.tsx
3823
3910
  import * as React65 from "react";
3824
- import { useCallback as useCallback3, useEffect as useEffect11, useState as useState10 } from "react";
3911
+ import { useCallback as useCallback3, useEffect as useEffect12, useState as useState10 } from "react";
3825
3912
  import { PopoverBody, PopoverHeader as PopoverHeader3, PopoverMenuList, SearchField } from "@elementor/editor-ui";
3826
3913
  import { Box as Box9, Divider as Divider2, Link, Stack as Stack9, Typography as Typography5 } from "@elementor/ui";
3827
3914
  import { debounce } from "@elementor/utils";
@@ -3975,7 +4062,7 @@ var ItemList = ({
3975
4062
  };
3976
4063
  var useDebounce = (fn, delay) => {
3977
4064
  const [debouncedFn] = useState10(() => debounce(fn, delay));
3978
- useEffect11(() => () => debouncedFn.cancel(), [debouncedFn]);
4065
+ useEffect12(() => () => debouncedFn.cancel(), [debouncedFn]);
3979
4066
  return debouncedFn;
3980
4067
  };
3981
4068
 
@@ -3993,10 +4080,10 @@ var FontFamilyControl = createControl(
3993
4080
  setValue: setFontFamily,
3994
4081
  disabled,
3995
4082
  placeholder
3996
- } = useBoundProp(stringPropTypeUtil7);
4083
+ } = useBoundProp(stringPropTypeUtil8);
3997
4084
  const popoverState = usePopupState7({ variant: "popover" });
3998
4085
  const isShowingPlaceholder = !fontFamily && placeholder;
3999
- const mapFontSubs = useMemo7(() => {
4086
+ const mapFontSubs = useMemo8(() => {
4000
4087
  return fontFamilies.map(({ label, fonts }) => ({
4001
4088
  label,
4002
4089
  items: fonts
@@ -4051,11 +4138,11 @@ var FontFamilyControl = createControl(
4051
4138
 
4052
4139
  // src/controls/url-control.tsx
4053
4140
  import * as React67 from "react";
4054
- import { urlPropTypeUtil } from "@elementor/editor-props";
4141
+ import { urlPropTypeUtil as urlPropTypeUtil2 } from "@elementor/editor-props";
4055
4142
  import { TextField as TextField7 } from "@elementor/ui";
4056
4143
  var UrlControl = createControl(
4057
4144
  ({ placeholder: propPlaceholder, ariaLabel }) => {
4058
- const { value, setValue, disabled, placeholder: boundPlaceholder } = useBoundProp(urlPropTypeUtil);
4145
+ const { value, setValue, disabled, placeholder: boundPlaceholder } = useBoundProp(urlPropTypeUtil2);
4059
4146
  const handleChange = (event) => setValue(event.target.value);
4060
4147
  const placeholder = propPlaceholder ?? boundPlaceholder ?? void 0;
4061
4148
  return /* @__PURE__ */ React67.createElement(ControlActions, null, /* @__PURE__ */ React67.createElement(
@@ -4077,7 +4164,7 @@ var UrlControl = createControl(
4077
4164
 
4078
4165
  // src/controls/link-control.tsx
4079
4166
  import * as React72 from "react";
4080
- import { useEffect as useEffect12, useMemo as useMemo9, useState as useState12 } from "react";
4167
+ import { useEffect as useEffect13, useMemo as useMemo10, useState as useState12 } from "react";
4081
4168
  import { getLinkInLinkRestriction } from "@elementor/editor-elements";
4082
4169
  import { linkPropTypeUtil } from "@elementor/editor-props";
4083
4170
  import { MinusIcon, PlusIcon as PlusIcon2 } from "@elementor/icons";
@@ -4151,12 +4238,12 @@ var RestrictedLinkInfotip = ({
4151
4238
 
4152
4239
  // src/controls/query-control.tsx
4153
4240
  import * as React70 from "react";
4154
- import { useMemo as useMemo8, useState as useState11 } from "react";
4241
+ import { useMemo as useMemo9, useState as useState11 } from "react";
4155
4242
  import {
4156
4243
  numberPropTypeUtil as numberPropTypeUtil2,
4157
4244
  queryPropTypeUtil,
4158
- stringPropTypeUtil as stringPropTypeUtil8,
4159
- urlPropTypeUtil as urlPropTypeUtil2
4245
+ stringPropTypeUtil as stringPropTypeUtil9,
4246
+ urlPropTypeUtil as urlPropTypeUtil3
4160
4247
  } from "@elementor/editor-props";
4161
4248
  import { httpService as httpService2 } from "@elementor/http-client";
4162
4249
  import { SearchIcon } from "@elementor/icons";
@@ -4297,7 +4384,7 @@ function factoryFilter(newValue, options, minInputLength) {
4297
4384
  // src/controls/query-control.tsx
4298
4385
  var QueryControl = createControl((props) => {
4299
4386
  const { value: queryValue, setValue: setQueryValue } = useBoundProp(queryPropTypeUtil);
4300
- const { value: urlValue, setValue: setUrlValue, placeholder: urlPlaceholder } = useBoundProp(urlPropTypeUtil2);
4387
+ const { value: urlValue, setValue: setUrlValue, placeholder: urlPlaceholder } = useBoundProp(urlPropTypeUtil3);
4301
4388
  const {
4302
4389
  allowCustomValues = true,
4303
4390
  queryOptions: { url, params = {} },
@@ -4317,7 +4404,7 @@ var QueryControl = createControl((props) => {
4317
4404
  }
4318
4405
  const newQueryValue = {
4319
4406
  id: numberPropTypeUtil2.create(newValue),
4320
- label: stringPropTypeUtil8.create(findMatchingOption(options, newValue)?.label || null)
4407
+ label: stringPropTypeUtil9.create(findMatchingOption(options, newValue)?.label || null)
4321
4408
  };
4322
4409
  setQueryValue(newQueryValue);
4323
4410
  onSetValue?.(queryPropTypeUtil.create(newQueryValue));
@@ -4330,7 +4417,7 @@ var QueryControl = createControl((props) => {
4330
4417
  return;
4331
4418
  }
4332
4419
  setUrlValue(trimmedValue);
4333
- onSetValue?.(urlPropTypeUtil2.create(trimmedValue));
4420
+ onSetValue?.(urlPropTypeUtil3.create(trimmedValue));
4334
4421
  updateOptions(newValue);
4335
4422
  };
4336
4423
  const updateOptions = (newValue) => {
@@ -4340,7 +4427,7 @@ var QueryControl = createControl((props) => {
4340
4427
  }
4341
4428
  debounceFetch({ ...params, term: newValue });
4342
4429
  };
4343
- const debounceFetch = useMemo8(
4430
+ const debounceFetch = useMemo9(
4344
4431
  () => debounce2(
4345
4432
  (queryParams) => fetchOptions(url, queryParams).then((newOptions) => {
4346
4433
  setOptions(formatOptions(newOptions));
@@ -4438,7 +4525,7 @@ var LinkControl = createControl((props) => {
4438
4525
  getLinkInLinkRestriction(elementId, value ?? linkPlaceholder)
4439
4526
  );
4440
4527
  const shouldDisableAddingLink = !isActive && linkInLinkRestriction.shouldRestrict;
4441
- const debouncedCheckRestriction = useMemo9(
4528
+ const debouncedCheckRestriction = useMemo10(
4442
4529
  () => debounce3(() => {
4443
4530
  const newRestriction = getLinkInLinkRestriction(elementId, value ?? linkPlaceholder);
4444
4531
  if (newRestriction.shouldRestrict && isActive && !linkPlaceholder) {
@@ -4448,7 +4535,7 @@ var LinkControl = createControl((props) => {
4448
4535
  }, 300),
4449
4536
  [elementId, isActive, value, linkPlaceholder]
4450
4537
  );
4451
- useEffect12(() => {
4538
+ useEffect13(() => {
4452
4539
  debouncedCheckRestriction();
4453
4540
  const handleInlineLinkChanged = (event) => {
4454
4541
  const customEvent = event;
@@ -4524,7 +4611,7 @@ var LinkControl = createControl((props) => {
4524
4611
  // src/controls/html-tag-control.tsx
4525
4612
  import * as React74 from "react";
4526
4613
  import { getElementLabel } from "@elementor/editor-elements";
4527
- import { stringPropTypeUtil as stringPropTypeUtil9 } from "@elementor/editor-props";
4614
+ import { stringPropTypeUtil as stringPropTypeUtil10 } from "@elementor/editor-props";
4528
4615
  import { MenuListItem as MenuListItem4 } from "@elementor/editor-ui";
4529
4616
  import { Select as Select2, styled as styled8, Typography as Typography6 } from "@elementor/ui";
4530
4617
  import { __ as __26 } from "@wordpress/i18n";
@@ -4582,7 +4669,7 @@ var HtmlTagControl = createControl((props) => {
4582
4669
  fallbackLabels = {},
4583
4670
  context: { elementId }
4584
4671
  } = props;
4585
- const { value, setValue, disabled, placeholder } = useBoundProp(stringPropTypeUtil9);
4672
+ const { value, setValue, disabled, placeholder } = useBoundProp(stringPropTypeUtil10);
4586
4673
  const handleChange = (event) => {
4587
4674
  const newValue = event.target.value || null;
4588
4675
  onChange?.(newValue, value);
@@ -4628,17 +4715,17 @@ var HtmlTagControl = createControl((props) => {
4628
4715
 
4629
4716
  // src/controls/gap-control.tsx
4630
4717
  import * as React75 from "react";
4631
- import { useLayoutEffect as useLayoutEffect2, useRef as useRef12, useState as useState13 } from "react";
4718
+ import { useLayoutEffect as useLayoutEffect2, useRef as useRef13, useState as useState13 } from "react";
4632
4719
  import {
4633
4720
  layoutDirectionPropTypeUtil,
4634
4721
  sizePropTypeUtil as sizePropTypeUtil6
4635
4722
  } from "@elementor/editor-props";
4636
- import { useActiveBreakpoint as useActiveBreakpoint4 } from "@elementor/editor-responsive";
4723
+ import { useActiveBreakpoint as useActiveBreakpoint5 } from "@elementor/editor-responsive";
4637
4724
  import { DetachIcon as DetachIcon2, LinkIcon as LinkIcon2 } from "@elementor/icons";
4638
4725
  import { Grid as Grid11, Stack as Stack11, Tooltip as Tooltip7 } from "@elementor/ui";
4639
4726
  import { __ as __27 } from "@wordpress/i18n";
4640
4727
  var GapControl = ({ label }) => {
4641
- const stackRef = useRef12(null);
4728
+ const stackRef = useRef13(null);
4642
4729
  const { disabled: sizeDisabled } = useBoundProp(sizePropTypeUtil6);
4643
4730
  const {
4644
4731
  value: directionValue,
@@ -4659,7 +4746,7 @@ var GapControl = ({ label }) => {
4659
4746
  };
4660
4747
  const [isLinked, setIsLinked] = useState13(() => inferIsLinked());
4661
4748
  const isCurrentlyDirection = layoutDirectionPropTypeUtil.isValid(masterValue ?? masterPlaceholder);
4662
- const activeBreakpoint = useActiveBreakpoint4();
4749
+ const activeBreakpoint = useActiveBreakpoint5();
4663
4750
  useLayoutEffect2(() => {
4664
4751
  setIsLinked(inferIsLinked());
4665
4752
  }, [activeBreakpoint, isCurrentlyDirection]);
@@ -4753,8 +4840,8 @@ var Control4 = ({
4753
4840
 
4754
4841
  // src/controls/aspect-ratio-control.tsx
4755
4842
  import * as React76 from "react";
4756
- import { useEffect as useEffect13, useState as useState14 } from "react";
4757
- import { stringPropTypeUtil as stringPropTypeUtil10 } from "@elementor/editor-props";
4843
+ import { useEffect as useEffect14, useState as useState14 } from "react";
4844
+ import { stringPropTypeUtil as stringPropTypeUtil11 } from "@elementor/editor-props";
4758
4845
  import { MenuListItem as MenuListItem5 } from "@elementor/editor-ui";
4759
4846
  import { ArrowsMoveHorizontalIcon, ArrowsMoveVerticalIcon } from "@elementor/icons";
4760
4847
  import { Grid as Grid12, Select as Select3, Stack as Stack12, TextField as TextField9 } from "@elementor/ui";
@@ -4776,7 +4863,7 @@ var AspectRatioControl = createControl(({ label }) => {
4776
4863
  setValue: setAspectRatioValue,
4777
4864
  disabled,
4778
4865
  placeholder: externalPlaceholder
4779
- } = useBoundProp(stringPropTypeUtil10);
4866
+ } = useBoundProp(stringPropTypeUtil11);
4780
4867
  const aspectRatioValue = currentPropValue ?? externalPlaceholder;
4781
4868
  const isCustomSelected = aspectRatioValue && !RATIO_OPTIONS.some((option) => option.value === aspectRatioValue);
4782
4869
  const [initialWidth, initialHeight] = isCustomSelected ? aspectRatioValue.split("/") : ["", ""];
@@ -4786,7 +4873,7 @@ var AspectRatioControl = createControl(({ label }) => {
4786
4873
  const [selectedValue, setSelectedValue] = useState14(
4787
4874
  isCustomSelected ? CUSTOM_RATIO : aspectRatioValue || ""
4788
4875
  );
4789
- useEffect13(() => {
4876
+ useEffect14(() => {
4790
4877
  const isCustomValue = aspectRatioValue && !RATIO_OPTIONS.some((option) => option.value === aspectRatioValue);
4791
4878
  if (isCustomValue) {
4792
4879
  const [width, height] = aspectRatioValue.split("/");
@@ -4875,7 +4962,7 @@ var AspectRatioControl = createControl(({ label }) => {
4875
4962
  import * as React78 from "react";
4876
4963
  import { useState as useState16 } from "react";
4877
4964
  import { useCurrentUserCapabilities } from "@elementor/editor-current-user";
4878
- import { svgSrcPropTypeUtil, urlPropTypeUtil as urlPropTypeUtil3 } from "@elementor/editor-props";
4965
+ import { svgSrcPropTypeUtil, urlPropTypeUtil as urlPropTypeUtil4 } from "@elementor/editor-props";
4879
4966
  import { UploadIcon as UploadIcon2 } from "@elementor/icons";
4880
4967
  import { Button as Button5, Card as Card2, CardMedia as CardMedia2, CardOverlay as CardOverlay2, CircularProgress as CircularProgress3, Stack as Stack13, styled as styled9, ThemeProvider } from "@elementor/ui";
4881
4968
  import { useWpMediaAttachment as useWpMediaAttachment2, useWpMediaFrame as useWpMediaFrame2 } from "@elementor/wp-media";
@@ -4985,7 +5072,7 @@ var SvgMediaControl = createControl(() => {
4985
5072
  $$type: "image-attachment-id",
4986
5073
  value: selectedAttachment.id
4987
5074
  },
4988
- url: urlPropTypeUtil3.create(selectedAttachment.url)
5075
+ url: urlPropTypeUtil4.create(selectedAttachment.url)
4989
5076
  });
4990
5077
  }
4991
5078
  });
@@ -5167,7 +5254,7 @@ import {
5167
5254
  colorStopPropTypeUtil,
5168
5255
  gradientColorStopPropTypeUtil,
5169
5256
  numberPropTypeUtil as numberPropTypeUtil3,
5170
- stringPropTypeUtil as stringPropTypeUtil11
5257
+ stringPropTypeUtil as stringPropTypeUtil12
5171
5258
  } from "@elementor/editor-props";
5172
5259
  import { UnstableGradientBox } from "@elementor/ui";
5173
5260
  var BackgroundGradientColorControl = createControl(() => {
@@ -5175,13 +5262,13 @@ var BackgroundGradientColorControl = createControl(() => {
5175
5262
  const handleChange = (newValue) => {
5176
5263
  const transformedValue = createTransformableValue(newValue);
5177
5264
  if (transformedValue.positions) {
5178
- transformedValue.positions = stringPropTypeUtil11.create(newValue.positions.join(" "));
5265
+ transformedValue.positions = stringPropTypeUtil12.create(newValue.positions.join(" "));
5179
5266
  }
5180
5267
  setValue(transformedValue);
5181
5268
  };
5182
5269
  const createTransformableValue = (newValue) => ({
5183
5270
  ...newValue,
5184
- type: stringPropTypeUtil11.create(newValue.type),
5271
+ type: stringPropTypeUtil12.create(newValue.type),
5185
5272
  angle: numberPropTypeUtil3.create(newValue.angle),
5186
5273
  stops: gradientColorStopPropTypeUtil.create(
5187
5274
  newValue.stops.map(
@@ -5217,7 +5304,7 @@ var BackgroundGradientColorControl = createControl(() => {
5217
5304
  );
5218
5305
  });
5219
5306
  var initialBackgroundGradientOverlay = backgroundGradientOverlayPropTypeUtil.create({
5220
- type: stringPropTypeUtil11.create("linear"),
5307
+ type: stringPropTypeUtil12.create("linear"),
5221
5308
  angle: numberPropTypeUtil3.create(180),
5222
5309
  stops: gradientColorStopPropTypeUtil.create([
5223
5310
  colorStopPropTypeUtil.create({
@@ -5256,8 +5343,8 @@ var BackgroundImageOverlayAttachment = () => {
5256
5343
 
5257
5344
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
5258
5345
  import * as React82 from "react";
5259
- import { useRef as useRef13 } from "react";
5260
- import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil12 } from "@elementor/editor-props";
5346
+ import { useRef as useRef14 } from "react";
5347
+ import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil13 } from "@elementor/editor-props";
5261
5348
  import { MenuListItem as MenuListItem6 } from "@elementor/editor-ui";
5262
5349
  import { LetterXIcon, LetterYIcon } from "@elementor/icons";
5263
5350
  import { Grid as Grid14, Select as Select4 } from "@elementor/ui";
@@ -5276,9 +5363,9 @@ var backgroundPositionOptions = [
5276
5363
  ];
5277
5364
  var BackgroundImageOverlayPosition = () => {
5278
5365
  const backgroundImageOffsetContext = useBoundProp(backgroundImagePositionOffsetPropTypeUtil);
5279
- const stringPropContext = useBoundProp(stringPropTypeUtil12);
5366
+ const stringPropContext = useBoundProp(stringPropTypeUtil13);
5280
5367
  const isCustom = !!backgroundImageOffsetContext.value;
5281
- const rowRef = useRef13(null);
5368
+ const rowRef = useRef14(null);
5282
5369
  const handlePositionChange = (event) => {
5283
5370
  const value = event.target.value || null;
5284
5371
  if (value === "custom") {
@@ -5351,8 +5438,8 @@ var BackgroundImageOverlayRepeat = () => {
5351
5438
 
5352
5439
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
5353
5440
  import * as React84 from "react";
5354
- import { useRef as useRef14 } from "react";
5355
- import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil13 } from "@elementor/editor-props";
5441
+ import { useRef as useRef15 } from "react";
5442
+ import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil14 } from "@elementor/editor-props";
5356
5443
  import {
5357
5444
  ArrowBarBothIcon,
5358
5445
  ArrowsMaximizeIcon,
@@ -5391,9 +5478,9 @@ var sizeControlOptions = [
5391
5478
  ];
5392
5479
  var BackgroundImageOverlaySize = () => {
5393
5480
  const backgroundImageScaleContext = useBoundProp(backgroundImageSizeScalePropTypeUtil);
5394
- const stringPropContext = useBoundProp(stringPropTypeUtil13);
5481
+ const stringPropContext = useBoundProp(stringPropTypeUtil14);
5395
5482
  const isCustom = !!backgroundImageScaleContext.value;
5396
- const rowRef = useRef14(null);
5483
+ const rowRef = useRef15(null);
5397
5484
  const handleSizeChange = (size) => {
5398
5485
  if (size === "custom") {
5399
5486
  backgroundImageScaleContext.setValue({ width: null, height: null });
@@ -5428,7 +5515,7 @@ var BackgroundImageOverlaySize = () => {
5428
5515
  };
5429
5516
 
5430
5517
  // src/controls/background-control/background-overlay/use-background-tabs-history.ts
5431
- import { useRef as useRef15 } from "react";
5518
+ import { useRef as useRef16 } from "react";
5432
5519
  import {
5433
5520
  backgroundColorOverlayPropTypeUtil,
5434
5521
  backgroundGradientOverlayPropTypeUtil as backgroundGradientOverlayPropTypeUtil2,
@@ -5453,7 +5540,7 @@ var useBackgroundTabsHistory = ({
5453
5540
  return "image";
5454
5541
  };
5455
5542
  const { getTabsProps, getTabProps, getTabPanelProps } = useTabs(getCurrentOverlayType());
5456
- const valuesHistory = useRef15({
5543
+ const valuesHistory = useRef16({
5457
5544
  image: initialBackgroundImageOverlay,
5458
5545
  color: initialBackgroundColorOverlay2,
5459
5546
  gradient: initialBackgroundGradientOverlay2
@@ -5698,7 +5785,7 @@ var BackgroundClipField = () => {
5698
5785
 
5699
5786
  // src/controls/repeatable-control.tsx
5700
5787
  import * as React87 from "react";
5701
- import { useMemo as useMemo10 } from "react";
5788
+ import { useMemo as useMemo11 } from "react";
5702
5789
  import { createArrayPropUtils } from "@elementor/editor-props";
5703
5790
  import { Box as Box15 } from "@elementor/ui";
5704
5791
  var PLACEHOLDER_REGEX = /\$\{([^}]+)\}/g;
@@ -5719,11 +5806,11 @@ var RepeatableControl = createControl(
5719
5806
  if (!childPropTypeUtil) {
5720
5807
  return null;
5721
5808
  }
5722
- const childArrayPropTypeUtil2 = useMemo10(
5809
+ const childArrayPropTypeUtil2 = useMemo11(
5723
5810
  () => createArrayPropUtils(childPropTypeUtil.key, childPropTypeUtil.schema, propKey),
5724
5811
  [childPropTypeUtil.key, childPropTypeUtil.schema, propKey]
5725
5812
  );
5726
- const contextValue = useMemo10(
5813
+ const contextValue = useMemo11(
5727
5814
  () => ({
5728
5815
  ...childControlConfig,
5729
5816
  placeholder: placeholder || "",
@@ -5855,11 +5942,11 @@ var getAllProperties = (pattern) => {
5855
5942
 
5856
5943
  // src/controls/key-value-control.tsx
5857
5944
  import * as React88 from "react";
5858
- import { useMemo as useMemo11, useState as useState17 } from "react";
5945
+ import { useMemo as useMemo12, useState as useState17 } from "react";
5859
5946
  import {
5860
5947
  isTransformable,
5861
5948
  keyValuePropTypeUtil,
5862
- stringPropTypeUtil as stringPropTypeUtil14
5949
+ stringPropTypeUtil as stringPropTypeUtil15
5863
5950
  } from "@elementor/editor-props";
5864
5951
  import { FormHelperText, FormLabel as FormLabel3, Grid as Grid18 } from "@elementor/ui";
5865
5952
  import { __ as __38 } from "@wordpress/i18n";
@@ -5898,7 +5985,7 @@ var KeyValueControl = createControl((props = {}) => {
5898
5985
  keyHelper: void 0,
5899
5986
  valueHelper: void 0
5900
5987
  };
5901
- const [keyRegex, valueRegex, errMsg] = useMemo11(
5988
+ const [keyRegex, valueRegex, errMsg] = useMemo12(
5902
5989
  () => [
5903
5990
  props.regexKey ? new RegExp(props.regexKey) : void 0,
5904
5991
  props.regexValue ? new RegExp(props.regexValue) : void 0,
@@ -5931,7 +6018,7 @@ var KeyValueControl = createControl((props = {}) => {
5931
6018
  });
5932
6019
  return;
5933
6020
  }
5934
- const extractedValue = stringPropTypeUtil14.extract(newChangedValue);
6021
+ const extractedValue = stringPropTypeUtil15.extract(newChangedValue);
5935
6022
  setSessionState((prev) => ({
5936
6023
  ...prev,
5937
6024
  [fieldType]: extractedValue
@@ -5971,7 +6058,7 @@ var KeyValueControl = createControl((props = {}) => {
5971
6058
 
5972
6059
  // src/controls/position-control.tsx
5973
6060
  import * as React89 from "react";
5974
- import { positionPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil15 } from "@elementor/editor-props";
6061
+ import { positionPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil16 } from "@elementor/editor-props";
5975
6062
  import { MenuListItem as MenuListItem7 } from "@elementor/editor-ui";
5976
6063
  import { LetterXIcon as LetterXIcon2, LetterYIcon as LetterYIcon2 } from "@elementor/icons";
5977
6064
  import { Grid as Grid19, Select as Select5 } from "@elementor/ui";
@@ -5990,8 +6077,9 @@ var positionOptions = [
5990
6077
  ];
5991
6078
  var PositionControl = () => {
5992
6079
  const positionContext = useBoundProp(positionPropTypeUtil);
5993
- const stringPropContext = useBoundProp(stringPropTypeUtil15);
6080
+ const stringPropContext = useBoundProp(stringPropTypeUtil16);
5994
6081
  const isCustom = !!positionContext.value;
6082
+ const placeholder = positionContext.placeholder ? "custom" : stringPropContext.placeholder ?? null;
5995
6083
  const handlePositionChange = (event) => {
5996
6084
  const value = event.target.value || null;
5997
6085
  if (value === "custom") {
@@ -6004,9 +6092,11 @@ var PositionControl = () => {
6004
6092
  Select5,
6005
6093
  {
6006
6094
  size: "tiny",
6095
+ displayEmpty: true,
6007
6096
  disabled: stringPropContext.disabled,
6008
6097
  value: (positionContext.value ? "custom" : stringPropContext.value) ?? "",
6009
6098
  onChange: handlePositionChange,
6099
+ renderValue: (selectedValue) => getSelectRenderValue(positionOptions, placeholder, selectedValue),
6010
6100
  fullWidth: true
6011
6101
  },
6012
6102
  positionOptions.map(({ label, value }) => /* @__PURE__ */ React89.createElement(MenuListItem7, { key: value, value: value ?? "" }, label))
@@ -6027,7 +6117,7 @@ var PositionControl = () => {
6027
6117
 
6028
6118
  // src/controls/transform-control/transform-repeater-control.tsx
6029
6119
  import * as React102 from "react";
6030
- import { useRef as useRef23 } from "react";
6120
+ import { useRef as useRef24 } from "react";
6031
6121
  import { transformFunctionsPropTypeUtil, transformPropTypeUtil } from "@elementor/editor-props";
6032
6122
  import { AdjustmentsIcon as AdjustmentsIcon2, InfoCircleFilledIcon as InfoCircleFilledIcon2 } from "@elementor/icons";
6033
6123
  import { bindTrigger as bindTrigger5, Box as Box19, IconButton as IconButton7, Tooltip as Tooltip8, Typography as Typography7, usePopupState as usePopupState8 } from "@elementor/ui";
@@ -6091,7 +6181,7 @@ import { __ as __44 } from "@wordpress/i18n";
6091
6181
 
6092
6182
  // src/controls/transform-control/functions/move.tsx
6093
6183
  import * as React91 from "react";
6094
- import { useRef as useRef16 } from "react";
6184
+ import { useRef as useRef17 } from "react";
6095
6185
  import { moveTransformPropTypeUtil } from "@elementor/editor-props";
6096
6186
  import { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from "@elementor/icons";
6097
6187
  import { Grid as Grid21 } from "@elementor/ui";
@@ -6138,7 +6228,7 @@ var moveAxisControls = [
6138
6228
  ];
6139
6229
  var Move = () => {
6140
6230
  const context = useBoundProp(moveTransformPropTypeUtil);
6141
- const rowRefs = [useRef16(null), useRef16(null), useRef16(null)];
6231
+ const rowRefs = [useRef17(null), useRef17(null), useRef17(null)];
6142
6232
  return /* @__PURE__ */ React91.createElement(Grid21, { container: true, spacing: 1.5 }, /* @__PURE__ */ React91.createElement(PropProvider, { ...context }, /* @__PURE__ */ React91.createElement(PropKeyProvider, { bind: TransformFunctionKeys.move }, moveAxisControls.map((control, index) => /* @__PURE__ */ React91.createElement(
6143
6233
  AxisRow,
6144
6234
  {
@@ -6153,7 +6243,7 @@ var Move = () => {
6153
6243
 
6154
6244
  // src/controls/transform-control/functions/rotate.tsx
6155
6245
  import * as React92 from "react";
6156
- import { useRef as useRef17 } from "react";
6246
+ import { useRef as useRef18 } from "react";
6157
6247
  import { rotateTransformPropTypeUtil as rotateTransformPropTypeUtil2 } from "@elementor/editor-props";
6158
6248
  import { Arrow360Icon, RotateClockwiseIcon } from "@elementor/icons";
6159
6249
  import { Grid as Grid22 } from "@elementor/ui";
@@ -6178,7 +6268,7 @@ var rotateAxisControls = [
6178
6268
  var rotateUnits = ["deg", "rad", "grad", "turn"];
6179
6269
  var Rotate = () => {
6180
6270
  const context = useBoundProp(rotateTransformPropTypeUtil2);
6181
- const rowRefs = [useRef17(null), useRef17(null), useRef17(null)];
6271
+ const rowRefs = [useRef18(null), useRef18(null), useRef18(null)];
6182
6272
  return /* @__PURE__ */ React92.createElement(Grid22, { container: true, spacing: 1.5 }, /* @__PURE__ */ React92.createElement(PropProvider, { ...context }, /* @__PURE__ */ React92.createElement(PropKeyProvider, { bind: TransformFunctionKeys.rotate }, rotateAxisControls.map((control, index) => /* @__PURE__ */ React92.createElement(
6183
6273
  AxisRow,
6184
6274
  {
@@ -6192,7 +6282,7 @@ var Rotate = () => {
6192
6282
 
6193
6283
  // src/controls/transform-control/functions/scale.tsx
6194
6284
  import * as React94 from "react";
6195
- import { useRef as useRef18 } from "react";
6285
+ import { useRef as useRef19 } from "react";
6196
6286
  import { scaleTransformPropTypeUtil as scaleTransformPropTypeUtil2 } from "@elementor/editor-props";
6197
6287
  import { ArrowDownLeftIcon as ArrowDownLeftIcon2, ArrowDownSmallIcon as ArrowDownSmallIcon2, ArrowRightIcon as ArrowRightIcon2 } from "@elementor/icons";
6198
6288
  import { Grid as Grid24 } from "@elementor/ui";
@@ -6225,13 +6315,13 @@ var scaleAxisControls = [
6225
6315
  ];
6226
6316
  var Scale = () => {
6227
6317
  const context = useBoundProp(scaleTransformPropTypeUtil2);
6228
- const rowRefs = [useRef18(null), useRef18(null), useRef18(null)];
6318
+ const rowRefs = [useRef19(null), useRef19(null), useRef19(null)];
6229
6319
  return /* @__PURE__ */ React94.createElement(Grid24, { container: true, spacing: 1.5 }, /* @__PURE__ */ React94.createElement(PropProvider, { ...context }, /* @__PURE__ */ React94.createElement(PropKeyProvider, { bind: TransformFunctionKeys.scale }, scaleAxisControls.map((control, index) => /* @__PURE__ */ React94.createElement(ScaleAxisRow, { key: control.bind, ...control, anchorRef: rowRefs[index] })))));
6230
6320
  };
6231
6321
 
6232
6322
  // src/controls/transform-control/functions/skew.tsx
6233
6323
  import * as React95 from "react";
6234
- import { useRef as useRef19 } from "react";
6324
+ import { useRef as useRef20 } from "react";
6235
6325
  import { skewTransformPropTypeUtil as skewTransformPropTypeUtil2 } from "@elementor/editor-props";
6236
6326
  import { ArrowLeftIcon, ArrowRightIcon as ArrowRightIcon3 } from "@elementor/icons";
6237
6327
  import { Grid as Grid25 } from "@elementor/ui";
@@ -6251,7 +6341,7 @@ var skewAxisControls = [
6251
6341
  var skewUnits = ["deg", "rad", "grad", "turn"];
6252
6342
  var Skew = () => {
6253
6343
  const context = useBoundProp(skewTransformPropTypeUtil2);
6254
- const rowRefs = [useRef19(null), useRef19(null), useRef19(null)];
6344
+ const rowRefs = [useRef20(null), useRef20(null), useRef20(null)];
6255
6345
  return /* @__PURE__ */ React95.createElement(Grid25, { container: true, spacing: 1.5 }, /* @__PURE__ */ React95.createElement(PropProvider, { ...context }, /* @__PURE__ */ React95.createElement(PropKeyProvider, { bind: TransformFunctionKeys.skew }, skewAxisControls.map((control, index) => /* @__PURE__ */ React95.createElement(
6256
6346
  AxisRow,
6257
6347
  {
@@ -6264,7 +6354,7 @@ var Skew = () => {
6264
6354
  };
6265
6355
 
6266
6356
  // src/controls/transform-control/use-transform-tabs-history.tsx
6267
- import { useRef as useRef20 } from "react";
6357
+ import { useRef as useRef21 } from "react";
6268
6358
  import {
6269
6359
  moveTransformPropTypeUtil as moveTransformPropTypeUtil2,
6270
6360
  rotateTransformPropTypeUtil as rotateTransformPropTypeUtil3,
@@ -6296,7 +6386,7 @@ var useTransformTabsHistory = ({
6296
6386
  }
6297
6387
  };
6298
6388
  const { getTabsProps, getTabProps, getTabPanelProps } = useTabs2(getCurrentTransformType());
6299
- const valuesHistory = useRef20({
6389
+ const valuesHistory = useRef21({
6300
6390
  move: initialMove,
6301
6391
  scale: initialScale,
6302
6392
  rotate: initialRotate,
@@ -6440,7 +6530,7 @@ import { __ as __48 } from "@wordpress/i18n";
6440
6530
 
6441
6531
  // src/controls/transform-control/transform-base-controls/children-perspective-control.tsx
6442
6532
  import * as React99 from "react";
6443
- import { useRef as useRef21 } from "react";
6533
+ import { useRef as useRef22 } from "react";
6444
6534
  import { perspectiveOriginPropTypeUtil } from "@elementor/editor-props";
6445
6535
  import { Grid as Grid26, Stack as Stack15 } from "@elementor/ui";
6446
6536
  import { __ as __46 } from "@wordpress/i18n";
@@ -6472,13 +6562,13 @@ var PerspectiveOriginControlProvider = () => {
6472
6562
  return /* @__PURE__ */ React99.createElement(PropProvider, { ...context }, CHILDREN_PERSPECTIVE_FIELDS.map((control) => /* @__PURE__ */ React99.createElement(PropKeyProvider, { bind: control.bind, key: control.bind }, /* @__PURE__ */ React99.createElement(ControlFields, { control }))));
6473
6563
  };
6474
6564
  var ControlFields = ({ control }) => {
6475
- const rowRef = useRef21(null);
6565
+ const rowRef = useRef22(null);
6476
6566
  return /* @__PURE__ */ React99.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React99.createElement(Grid26, { item: true, xs: 6 }, /* @__PURE__ */ React99.createElement(ControlFormLabel, null, control.label)), /* @__PURE__ */ React99.createElement(Grid26, { item: true, xs: 6 }, /* @__PURE__ */ React99.createElement(SizeControl, { variant: "length", units: control.units, anchorRef: rowRef, disableCustom: true })));
6477
6567
  };
6478
6568
 
6479
6569
  // src/controls/transform-control/transform-base-controls/transform-origin-control.tsx
6480
6570
  import * as React100 from "react";
6481
- import { useRef as useRef22 } from "react";
6571
+ import { useRef as useRef23 } from "react";
6482
6572
  import { transformOriginPropTypeUtil } from "@elementor/editor-props";
6483
6573
  import { Grid as Grid27, Stack as Stack16 } from "@elementor/ui";
6484
6574
  import { __ as __47 } from "@wordpress/i18n";
@@ -6506,8 +6596,8 @@ var TransformOriginControl = () => {
6506
6596
  };
6507
6597
  var ControlFields2 = ({ control }) => {
6508
6598
  const context = useBoundProp(transformOriginPropTypeUtil);
6509
- const rowRef = useRef22(null);
6510
- return /* @__PURE__ */ React100.createElement(PropProvider, { ...context }, /* @__PURE__ */ React100.createElement(PropKeyProvider, { bind: control.bind }, /* @__PURE__ */ React100.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React100.createElement(Grid27, { item: true, xs: 6 }, /* @__PURE__ */ React100.createElement(ControlFormLabel, null, control.label)), /* @__PURE__ */ React100.createElement(Grid27, { item: true, xs: 6 }, /* @__PURE__ */ React100.createElement(SizeControl, { variant: "length", units: control.units, anchorRef: rowRef, disableCustom: true })))));
6599
+ const rowRef = useRef23(null);
6600
+ return /* @__PURE__ */ React100.createElement(PropProvider, { ...context }, /* @__PURE__ */ React100.createElement(PropKeyProvider, { bind: control.bind }, /* @__PURE__ */ React100.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React100.createElement(Grid27, { item: true, xs: 6 }, /* @__PURE__ */ React100.createElement(ControlFormLabel, null, control.label)), /* @__PURE__ */ React100.createElement(Grid27, { item: true, xs: 6 }, /* @__PURE__ */ React100.createElement(SizeControl, { variant: "length", units: control.units, anchorRef: rowRef })))));
6511
6601
  };
6512
6602
 
6513
6603
  // src/controls/transform-control/transform-settings-control.tsx
@@ -6554,7 +6644,7 @@ var SIZE10 = "tiny";
6554
6644
  var TransformRepeaterControl = createControl(
6555
6645
  ({ showChildrenPerspective }) => {
6556
6646
  const context = useBoundProp(transformPropTypeUtil);
6557
- const headerRef = useRef23(null);
6647
+ const headerRef = useRef24(null);
6558
6648
  const popupState = usePopupState8({ variant: "popover" });
6559
6649
  return /* @__PURE__ */ React102.createElement(PropProvider, { ...context }, /* @__PURE__ */ React102.createElement(
6560
6650
  TransformSettingsControl,
@@ -6634,7 +6724,7 @@ var TransformBasePopoverTrigger = ({
6634
6724
 
6635
6725
  // src/controls/transition-control/transition-repeater-control.tsx
6636
6726
  import * as React105 from "react";
6637
- import { useEffect as useEffect14, useMemo as useMemo14, useState as useState18 } from "react";
6727
+ import { useEffect as useEffect15, useMemo as useMemo15, useState as useState18 } from "react";
6638
6728
  import {
6639
6729
  createArrayPropUtils as createArrayPropUtils2,
6640
6730
  selectionSizePropTypeUtil as selectionSizePropTypeUtil2
@@ -6646,15 +6736,15 @@ import { __ as __52 } from "@wordpress/i18n";
6646
6736
 
6647
6737
  // src/controls/selection-size-control.tsx
6648
6738
  import * as React103 from "react";
6649
- import { useMemo as useMemo12, useRef as useRef24 } from "react";
6739
+ import { useMemo as useMemo13, useRef as useRef25 } from "react";
6650
6740
  import { selectionSizePropTypeUtil } from "@elementor/editor-props";
6651
6741
  import { Grid as Grid28 } from "@elementor/ui";
6652
6742
  var SelectionSizeControl = createControl(
6653
6743
  ({ selectionLabel, sizeLabel, selectionConfig, sizeConfigMap }) => {
6654
6744
  const { value, setValue, propType } = useBoundProp(selectionSizePropTypeUtil);
6655
- const rowRef = useRef24(null);
6745
+ const rowRef = useRef25(null);
6656
6746
  const sizeFieldId = sizeLabel.replace(/\s+/g, "-").toLowerCase();
6657
- const currentSizeConfig = useMemo12(() => {
6747
+ const currentSizeConfig = useMemo13(() => {
6658
6748
  switch (value.selection.$$type) {
6659
6749
  case "key-value":
6660
6750
  return sizeConfigMap[value?.selection?.value.value.value || ""];
@@ -6867,7 +6957,7 @@ function subscribeToTransitionEvent() {
6867
6957
 
6868
6958
  // src/controls/transition-control/transition-selector.tsx
6869
6959
  import * as React104 from "react";
6870
- import { useMemo as useMemo13, useRef as useRef25 } from "react";
6960
+ import { useMemo as useMemo14, useRef as useRef26 } from "react";
6871
6961
  import { keyValuePropTypeUtil as keyValuePropTypeUtil2 } from "@elementor/editor-props";
6872
6962
  import { PromotionAlert, PromotionChip } from "@elementor/editor-ui";
6873
6963
  import { ChevronDownIcon as ChevronDownIcon3, VariationsIcon } from "@elementor/icons";
@@ -6954,9 +7044,9 @@ var TransitionSelector = ({
6954
7044
  const {
6955
7045
  key: { value: transitionLabel }
6956
7046
  } = value;
6957
- const defaultRef = useRef25(null);
7047
+ const defaultRef = useRef26(null);
6958
7048
  const popoverState = usePopupState9({ variant: "popover" });
6959
- const disabledCategories = useMemo13(() => {
7049
+ const disabledCategories = useMemo14(() => {
6960
7050
  return new Set(
6961
7051
  transitionProperties.filter((cat) => cat.properties.some((prop) => prop.isDisabled)).map((cat) => cat.label)
6962
7052
  );
@@ -7185,11 +7275,11 @@ var TransitionRepeaterControl = createControl(
7185
7275
  const [recentlyUsedList, setRecentlyUsedList] = useState18([]);
7186
7276
  const proInstalled = hasProInstalled2();
7187
7277
  const { value, setValue } = useBoundProp(childArrayPropTypeUtil);
7188
- const { allDisabled: disabledItems, proDisabled: proDisabledItems } = useMemo14(
7278
+ const { allDisabled: disabledItems, proDisabled: proDisabledItems } = useMemo15(
7189
7279
  () => getDisabledItemLabels(value),
7190
7280
  [value]
7191
7281
  );
7192
- const allowedTransitionSet = useMemo14(() => {
7282
+ const allowedTransitionSet = useMemo15(() => {
7193
7283
  const set = /* @__PURE__ */ new Set();
7194
7284
  transitionProperties.forEach((category) => {
7195
7285
  category.properties.forEach((prop) => {
@@ -7200,7 +7290,7 @@ var TransitionRepeaterControl = createControl(
7200
7290
  });
7201
7291
  return set;
7202
7292
  }, [proInstalled]);
7203
- useEffect14(() => {
7293
+ useEffect15(() => {
7204
7294
  if (!value || value.length === 0) {
7205
7295
  return;
7206
7296
  }
@@ -7212,10 +7302,10 @@ var TransitionRepeaterControl = createControl(
7212
7302
  setValue(sanitized);
7213
7303
  }
7214
7304
  }, [allowedTransitionSet]);
7215
- useEffect14(() => {
7305
+ useEffect15(() => {
7216
7306
  recentlyUsedListGetter().then(setRecentlyUsedList);
7217
7307
  }, [recentlyUsedListGetter]);
7218
- const allPropertiesUsed = useMemo14(() => areAllPropertiesUsed(value), [value]);
7308
+ const allPropertiesUsed = useMemo15(() => areAllPropertiesUsed(value), [value]);
7219
7309
  const isAddItemDisabled = !currentStyleIsNormal || allPropertiesUsed;
7220
7310
  return /* @__PURE__ */ React105.createElement(
7221
7311
  RepeatableControl,
@@ -7246,7 +7336,7 @@ var TransitionRepeaterControl = createControl(
7246
7336
  // src/controls/date-time-control.tsx
7247
7337
  import * as React106 from "react";
7248
7338
  import * as dayjs from "dayjs";
7249
- import { isTransformable as isTransformable2, stringPropTypeUtil as stringPropTypeUtil16 } from "@elementor/editor-props";
7339
+ import { isTransformable as isTransformable2, stringPropTypeUtil as stringPropTypeUtil17 } from "@elementor/editor-props";
7250
7340
  import { DateTimePropTypeUtil } from "@elementor/editor-props";
7251
7341
  import { Box as Box22, DatePicker, LocalizationProvider, TimePicker } from "@elementor/ui";
7252
7342
  var DATE_FORMAT = "YYYY-MM-DD";
@@ -7295,7 +7385,7 @@ var DateTimeControl = createControl(({ inputDisabled }) => {
7295
7385
  return /* @__PURE__ */ React106.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React106.createElement(ControlActions, null, /* @__PURE__ */ React106.createElement(LocalizationProvider, null, /* @__PURE__ */ React106.createElement(Box22, { display: "flex", gap: 1, alignItems: "center" }, /* @__PURE__ */ React106.createElement(PropKeyProvider, { bind: "date" }, /* @__PURE__ */ React106.createElement(
7296
7386
  DatePicker,
7297
7387
  {
7298
- value: parseDateValue(stringPropTypeUtil16.extract(value?.date)),
7388
+ value: parseDateValue(stringPropTypeUtil17.extract(value?.date)),
7299
7389
  onChange: (v) => handleChange({ date: v }, { bind: "date" }),
7300
7390
  disabled: inputDisabled,
7301
7391
  slotProps: {
@@ -7307,7 +7397,7 @@ var DateTimeControl = createControl(({ inputDisabled }) => {
7307
7397
  )), /* @__PURE__ */ React106.createElement(PropKeyProvider, { bind: "time" }, /* @__PURE__ */ React106.createElement(
7308
7398
  TimePicker,
7309
7399
  {
7310
- value: parseTimeValue(stringPropTypeUtil16.extract(value?.time)),
7400
+ value: parseTimeValue(stringPropTypeUtil17.extract(value?.time)),
7311
7401
  onChange: (v) => handleChange({ time: v }, { bind: "time" }),
7312
7402
  disabled: inputDisabled,
7313
7403
  slotProps: {
@@ -7319,16 +7409,193 @@ var DateTimeControl = createControl(({ inputDisabled }) => {
7319
7409
  ))))));
7320
7410
  });
7321
7411
 
7322
- // src/controls/inline-editing-control.tsx
7412
+ // src/controls/date-range-control.tsx
7323
7413
  import * as React108 from "react";
7324
- import { useCallback as useCallback4, useEffect as useEffect16, useMemo as useMemo15 } from "react";
7325
- import { htmlV3PropTypeUtil, parseHtmlChildren, stringPropTypeUtil as stringPropTypeUtil17 } from "@elementor/editor-props";
7414
+ import { dateRangePropTypeUtil, dateStringPropTypeUtil as dateStringPropTypeUtil2 } from "@elementor/editor-props";
7415
+ import { FormHelperText as FormHelperText2, Grid as Grid29, Stack as Stack17 } from "@elementor/ui";
7416
+ import { __ as __53 } from "@wordpress/i18n";
7417
+
7418
+ // src/controls/date-string-control.tsx
7419
+ import * as React107 from "react";
7420
+ import { dateStringPropTypeUtil } from "@elementor/editor-props";
7421
+ import { DatePicker as DatePicker2, LocalizationProvider as LocalizationProvider2 } from "@elementor/ui";
7422
+
7423
+ // src/utils/date-time.ts
7424
+ import * as dayjs2 from "dayjs";
7425
+ var DATE_FORMAT2 = "YYYY-MM-DD";
7426
+ var TIME_FORMAT2 = "HH:mm";
7427
+ function isValidDayjs(value) {
7428
+ return !!value && typeof value.isValid === "function" && value.isValid();
7429
+ }
7430
+ function parseDateString(raw) {
7431
+ if (!raw) {
7432
+ return null;
7433
+ }
7434
+ const parsed = dayjs2.default(raw);
7435
+ return isValidDayjs(parsed) ? parsed : null;
7436
+ }
7437
+ function parseTimeString(raw) {
7438
+ if (!raw) {
7439
+ return null;
7440
+ }
7441
+ const [hours, minutes, seconds] = raw.split(":");
7442
+ const h = Number.parseInt(hours ?? "", 10);
7443
+ const m = Number.parseInt(minutes ?? "", 10);
7444
+ const s = Number.parseInt(seconds ?? "0", 10);
7445
+ if (Number.isNaN(h) || Number.isNaN(m)) {
7446
+ return null;
7447
+ }
7448
+ const base = dayjs2.default();
7449
+ return base.hour(h).minute(m).second(Number.isNaN(s) ? 0 : s).millisecond(0);
7450
+ }
7451
+
7452
+ // src/controls/date-string-control.tsx
7453
+ var DateStringControl = createControl(
7454
+ ({ inputDisabled, ariaLabel, error, coerceInvalidToNull = false }) => {
7455
+ const { value, setValue, disabled } = useBoundProp(dateStringPropTypeUtil);
7456
+ const isDisabled = inputDisabled ?? disabled;
7457
+ const slotProps = {
7458
+ textField: {
7459
+ size: "tiny",
7460
+ fullWidth: true,
7461
+ error,
7462
+ inputProps: ariaLabel ? { "aria-label": ariaLabel } : void 0
7463
+ },
7464
+ openPickerButton: { size: "tiny" },
7465
+ openPickerIcon: { fontSize: "tiny" }
7466
+ };
7467
+ const handleChange = (newValue, format) => {
7468
+ if (!newValue) {
7469
+ setValue(null);
7470
+ return;
7471
+ }
7472
+ if (coerceInvalidToNull && !isValidDayjs(newValue)) {
7473
+ setValue(null);
7474
+ return;
7475
+ }
7476
+ setValue(newValue.format(format));
7477
+ };
7478
+ return /* @__PURE__ */ React107.createElement(LocalizationProvider2, null, /* @__PURE__ */ React107.createElement(ControlActions, null, /* @__PURE__ */ React107.createElement(
7479
+ DatePicker2,
7480
+ {
7481
+ value: parseDateString(value ?? ""),
7482
+ onChange: (newValue) => handleChange(newValue, DATE_FORMAT2),
7483
+ disabled: isDisabled,
7484
+ slotProps
7485
+ }
7486
+ )));
7487
+ }
7488
+ );
7489
+
7490
+ // src/controls/date-range-control.tsx
7491
+ var RANGE_LABELS = {
7492
+ min: __53("Min date", "elementor"),
7493
+ max: __53("Max date", "elementor")
7494
+ };
7495
+ var isMaxBeforeMin = (minIso, maxIso) => {
7496
+ if (!minIso || !maxIso) {
7497
+ return false;
7498
+ }
7499
+ return maxIso < minIso;
7500
+ };
7501
+ var RANGE_ERROR_MESSAGE = __53("Max date must be on or after Min date", "elementor");
7502
+ var DateRangeControl = createControl(() => {
7503
+ const { value, setValue, ...propContext } = useBoundProp(dateRangePropTypeUtil);
7504
+ const minString = dateStringPropTypeUtil2.extract(value?.min);
7505
+ const maxString = dateStringPropTypeUtil2.extract(value?.max);
7506
+ const hasInvalidRange = isMaxBeforeMin(minString, maxString);
7507
+ return /* @__PURE__ */ React108.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React108.createElement(Stack17, { gap: 0.75 }, /* @__PURE__ */ React108.createElement(Stack17, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React108.createElement(Grid29, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React108.createElement(Grid29, { item: true, xs: 12 }, /* @__PURE__ */ React108.createElement(ControlFormLabel, null, RANGE_LABELS.min)), /* @__PURE__ */ React108.createElement(Grid29, { item: true, xs: 12 }, /* @__PURE__ */ React108.createElement(
7508
+ BoundDateStringControl,
7509
+ {
7510
+ bind: "min",
7511
+ ariaLabel: RANGE_LABELS.min,
7512
+ error: hasInvalidRange
7513
+ }
7514
+ ))), /* @__PURE__ */ React108.createElement(Grid29, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React108.createElement(Grid29, { item: true, xs: 12 }, /* @__PURE__ */ React108.createElement(ControlFormLabel, null, RANGE_LABELS.max)), /* @__PURE__ */ React108.createElement(Grid29, { item: true, xs: 12 }, /* @__PURE__ */ React108.createElement(
7515
+ BoundDateStringControl,
7516
+ {
7517
+ bind: "max",
7518
+ ariaLabel: RANGE_LABELS.max,
7519
+ error: hasInvalidRange
7520
+ }
7521
+ )))), hasInvalidRange && /* @__PURE__ */ React108.createElement(FormHelperText2, { error: true }, RANGE_ERROR_MESSAGE)));
7522
+ });
7523
+ var BoundDateStringControl = ({
7524
+ bind,
7525
+ ariaLabel,
7526
+ error
7527
+ }) => {
7528
+ return /* @__PURE__ */ React108.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React108.createElement(DateStringControl, { ariaLabel, error, coerceInvalidToNull: true }));
7529
+ };
7530
+
7531
+ // src/controls/time-string-control.tsx
7532
+ import * as React109 from "react";
7533
+ import { timeStringPropTypeUtil } from "@elementor/editor-props";
7534
+ import { LocalizationProvider as LocalizationProvider3, TimePicker as TimePicker2 } from "@elementor/ui";
7535
+ var TimeStringControl = createControl(
7536
+ ({ inputDisabled, ariaLabel, error, coerceInvalidToNull = false }) => {
7537
+ const { value, setValue, disabled } = useBoundProp(timeStringPropTypeUtil);
7538
+ const isDisabled = inputDisabled ?? disabled;
7539
+ const slotProps = {
7540
+ textField: {
7541
+ size: "tiny",
7542
+ fullWidth: true,
7543
+ error,
7544
+ inputProps: ariaLabel ? { "aria-label": ariaLabel } : void 0
7545
+ },
7546
+ openPickerButton: { size: "tiny" },
7547
+ openPickerIcon: { fontSize: "tiny" }
7548
+ };
7549
+ const handleChange = (newValue, format) => {
7550
+ if (!newValue) {
7551
+ setValue(null);
7552
+ return;
7553
+ }
7554
+ if (coerceInvalidToNull && !isValidDayjs(newValue)) {
7555
+ setValue(null);
7556
+ return;
7557
+ }
7558
+ setValue(newValue.format(format));
7559
+ };
7560
+ return /* @__PURE__ */ React109.createElement(LocalizationProvider3, null, /* @__PURE__ */ React109.createElement(ControlActions, null, /* @__PURE__ */ React109.createElement(
7561
+ TimePicker2,
7562
+ {
7563
+ value: parseTimeString(value ?? ""),
7564
+ onChange: (newValue) => handleChange(newValue, TIME_FORMAT2),
7565
+ disabled: isDisabled,
7566
+ slotProps
7567
+ }
7568
+ )));
7569
+ }
7570
+ );
7571
+
7572
+ // src/controls/time-range-control.tsx
7573
+ import * as React110 from "react";
7574
+ import { timeRangePropTypeUtil } from "@elementor/editor-props";
7575
+ import { Grid as Grid30, Stack as Stack18 } from "@elementor/ui";
7576
+ import { __ as __54 } from "@wordpress/i18n";
7577
+ var RANGE_LABELS2 = {
7578
+ min: __54("Start time", "elementor"),
7579
+ max: __54("End time", "elementor")
7580
+ };
7581
+ var TimeRangeControl = createControl(() => {
7582
+ const { value, setValue, ...propContext } = useBoundProp(timeRangePropTypeUtil);
7583
+ return /* @__PURE__ */ React110.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React110.createElement(Stack18, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React110.createElement(Grid30, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React110.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React110.createElement(ControlFormLabel, null, RANGE_LABELS2.min)), /* @__PURE__ */ React110.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React110.createElement(BoundTimeStringControl, { bind: "min", ariaLabel: RANGE_LABELS2.min }))), /* @__PURE__ */ React110.createElement(Grid30, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React110.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React110.createElement(ControlFormLabel, null, RANGE_LABELS2.max)), /* @__PURE__ */ React110.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React110.createElement(BoundTimeStringControl, { bind: "max", ariaLabel: RANGE_LABELS2.max })))));
7584
+ });
7585
+ var BoundTimeStringControl = ({ bind, ariaLabel }) => {
7586
+ return /* @__PURE__ */ React110.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React110.createElement(TimeStringControl, { ariaLabel, coerceInvalidToNull: true }));
7587
+ };
7588
+
7589
+ // src/controls/inline-editing-control.tsx
7590
+ import * as React112 from "react";
7591
+ import { useCallback as useCallback4, useEffect as useEffect17, useMemo as useMemo16 } from "react";
7592
+ import { htmlV3PropTypeUtil, parseHtmlChildren, stringPropTypeUtil as stringPropTypeUtil18 } from "@elementor/editor-props";
7326
7593
  import { Box as Box24 } from "@elementor/ui";
7327
7594
  import { debounce as debounce4 } from "@elementor/utils";
7328
7595
 
7329
7596
  // src/components/inline-editor.tsx
7330
- import * as React107 from "react";
7331
- import { useEffect as useEffect15, useRef as useRef26 } from "react";
7597
+ import * as React111 from "react";
7598
+ import { useEffect as useEffect16, useRef as useRef27 } from "react";
7332
7599
  import { Box as Box23 } from "@elementor/ui";
7333
7600
  import Bold from "@tiptap/extension-bold";
7334
7601
  import Document from "@tiptap/extension-document";
@@ -7366,7 +7633,7 @@ function htmlToPlainText(html) {
7366
7633
  var ITALIC_KEYBOARD_SHORTCUT = "i";
7367
7634
  var BOLD_KEYBOARD_SHORTCUT = "b";
7368
7635
  var UNDERLINE_KEYBOARD_SHORTCUT = "u";
7369
- var InlineEditor = React107.forwardRef((props, ref) => {
7636
+ var InlineEditor = React111.forwardRef((props, ref) => {
7370
7637
  const {
7371
7638
  value,
7372
7639
  setValue,
@@ -7382,8 +7649,8 @@ var InlineEditor = React107.forwardRef((props, ref) => {
7382
7649
  onSelectionEnd,
7383
7650
  mountElement = null
7384
7651
  } = props;
7385
- const containerRef = useRef26(null);
7386
- const onBlurRef = useRef26(onBlur);
7652
+ const containerRef = useRef27(null);
7653
+ const onBlurRef = useRef27(onBlur);
7387
7654
  onBlurRef.current = onBlur;
7388
7655
  const documentContentSettings = !!expectedTag ? "block+" : "inline*";
7389
7656
  const onUpdate = ({ editor: updatedEditor }) => {
@@ -7477,11 +7744,11 @@ var InlineEditor = React107.forwardRef((props, ref) => {
7477
7744
  if (mountElement) {
7478
7745
  return null;
7479
7746
  }
7480
- return /* @__PURE__ */ React107.createElement(Box23, { ref: containerRef, sx, className: wrapperClassName }, /* @__PURE__ */ React107.createElement(EditorContent, { ref, editor }));
7747
+ return /* @__PURE__ */ React111.createElement(Box23, { ref: containerRef, sx, className: wrapperClassName }, /* @__PURE__ */ React111.createElement(EditorContent, { ref, editor }));
7481
7748
  });
7482
7749
  var useOnUpdate = (callback, dependencies) => {
7483
- const hasMounted = useRef26(false);
7484
- useEffect15(() => {
7750
+ const hasMounted = useRef27(false);
7751
+ useEffect16(() => {
7485
7752
  if (hasMounted.current) {
7486
7753
  callback();
7487
7754
  } else {
@@ -7499,12 +7766,12 @@ var InlineEditingControl = createControl(
7499
7766
  props
7500
7767
  }) => {
7501
7768
  const { value, setValue, placeholder } = useBoundProp(htmlV3PropTypeUtil);
7502
- const content = stringPropTypeUtil17.extract(value?.content ?? null) ?? "";
7503
- const debouncedParse = useMemo15(
7769
+ const content = stringPropTypeUtil18.extract(value?.content ?? null) ?? "";
7770
+ const debouncedParse = useMemo16(
7504
7771
  () => debounce4((html) => {
7505
7772
  const parsed = parseHtmlChildren(html);
7506
7773
  setValue({
7507
- content: parsed.content ? stringPropTypeUtil17.create(parsed.content) : null,
7774
+ content: parsed.content ? stringPropTypeUtil18.create(parsed.content) : null,
7508
7775
  children: parsed.children
7509
7776
  });
7510
7777
  }, CHILDREN_PARSE_DEBOUNCE_MS),
@@ -7514,15 +7781,15 @@ var InlineEditingControl = createControl(
7514
7781
  (newValue) => {
7515
7782
  const html = newValue ?? "";
7516
7783
  setValue({
7517
- content: html ? stringPropTypeUtil17.create(html) : null,
7784
+ content: html ? stringPropTypeUtil18.create(html) : null,
7518
7785
  children: value?.children ?? []
7519
7786
  });
7520
7787
  debouncedParse(html);
7521
7788
  },
7522
7789
  [setValue, value?.children, debouncedParse]
7523
7790
  );
7524
- useEffect16(() => () => debouncedParse.cancel(), [debouncedParse]);
7525
- return /* @__PURE__ */ React108.createElement(ControlActions, null, /* @__PURE__ */ React108.createElement(
7791
+ useEffect17(() => () => debouncedParse.cancel(), [debouncedParse]);
7792
+ return /* @__PURE__ */ React112.createElement(ControlActions, null, /* @__PURE__ */ React112.createElement(
7526
7793
  Box24,
7527
7794
  {
7528
7795
  sx: {
@@ -7567,7 +7834,7 @@ var InlineEditingControl = createControl(
7567
7834
  ...attributes,
7568
7835
  ...props
7569
7836
  },
7570
- /* @__PURE__ */ React108.createElement(
7837
+ /* @__PURE__ */ React112.createElement(
7571
7838
  InlineEditor,
7572
7839
  {
7573
7840
  value: content,
@@ -7580,19 +7847,27 @@ var InlineEditingControl = createControl(
7580
7847
  );
7581
7848
 
7582
7849
  // src/controls/email-form-action-control.tsx
7583
- import * as React109 from "react";
7850
+ import * as React113 from "react";
7584
7851
  import { emailPropTypeUtil } from "@elementor/editor-props";
7585
7852
  import { CollapsibleContent, InfoAlert as InfoAlert2 } from "@elementor/editor-ui";
7586
- import { Box as Box25, Divider as Divider5, Grid as Grid29, Stack as Stack17 } from "@elementor/ui";
7853
+ import { Box as Box25, Divider as Divider5, Grid as Grid31, Stack as Stack19 } from "@elementor/ui";
7587
7854
  import { hasProInstalled as hasProInstalled3, isVersionGreaterOrEqual as isVersionGreaterOrEqual2 } from "@elementor/utils";
7588
- import { __ as __53 } from "@wordpress/i18n";
7855
+ import { __ as __55 } from "@wordpress/i18n";
7589
7856
 
7590
7857
  // src/hooks/use-form-field-suggestions.ts
7591
7858
  import { getContainer, getSelectedElements as getSelectedElements3 } from "@elementor/editor-elements";
7592
7859
  import { isTransformable as isTransformable3 } from "@elementor/editor-props";
7593
7860
  import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from "@elementor/editor-v1-adapters";
7594
- var FORM_FIELD_WIDGET_TYPES = ["e-form-input", "e-form-textarea", "e-form-checkbox"];
7595
- function useFormFieldSuggestions() {
7861
+ var FORM_FIELD_WIDGET_TYPES = [
7862
+ "e-form-input",
7863
+ "e-form-textarea",
7864
+ "e-form-checkbox",
7865
+ "e-form-radio-button",
7866
+ "e-form-select",
7867
+ "e-form-date-picker",
7868
+ "e-form-time-picker"
7869
+ ];
7870
+ function useFormFieldSuggestions(options) {
7596
7871
  return useListenTo(
7597
7872
  [
7598
7873
  v1ReadyEvent(),
@@ -7616,6 +7891,13 @@ function useFormFieldSuggestions() {
7616
7891
  if (!widgetType || !FORM_FIELD_WIDGET_TYPES.includes(widgetType)) {
7617
7892
  return;
7618
7893
  }
7894
+ if (options?.inputType) {
7895
+ const typeProp = child.settings.get("type");
7896
+ const typeValue = isTransformable3(typeProp) ? typeProp.value : typeProp;
7897
+ if (typeValue !== options.inputType) {
7898
+ return;
7899
+ }
7900
+ }
7619
7901
  const cssIdProp = child.settings.get("_cssid");
7620
7902
  const fieldId = isTransformable3(cssIdProp) ? cssIdProp.value : cssIdProp;
7621
7903
  if (fieldId && typeof fieldId === "string") {
@@ -7629,14 +7911,14 @@ function useFormFieldSuggestions() {
7629
7911
  }
7630
7912
 
7631
7913
  // src/controls/email-form-action-control.tsx
7632
- var EmailField = ({ bind, label, placeholder }) => /* @__PURE__ */ React109.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React109.createElement(Grid29, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React109.createElement(Grid29, { item: true }, /* @__PURE__ */ React109.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React109.createElement(Grid29, { item: true }, /* @__PURE__ */ React109.createElement(TextControl, { placeholder }))));
7633
- var SendToField = ({ placeholder }) => /* @__PURE__ */ React109.createElement(EmailField, { bind: "to", label: __53("Send to", "elementor"), placeholder });
7634
- var SubjectField = () => /* @__PURE__ */ React109.createElement(
7914
+ var EmailField = ({ bind, label, placeholder }) => /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React113.createElement(Grid31, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(TextControl, { placeholder }))));
7915
+ var SendToField = ({ placeholder }) => /* @__PURE__ */ React113.createElement(EmailField, { bind: "to", label: __55("Send to", "elementor"), placeholder });
7916
+ var SubjectField = () => /* @__PURE__ */ React113.createElement(
7635
7917
  EmailField,
7636
7918
  {
7637
7919
  bind: "subject",
7638
- label: __53("Email subject", "elementor"),
7639
- placeholder: __53("New form submission", "elementor")
7920
+ label: __55("Email subject", "elementor"),
7921
+ placeholder: __55("New form submission", "elementor")
7640
7922
  }
7641
7923
  );
7642
7924
  var MIN_PRO_VERSION_FOR_MENTIONS = "4.1.0";
@@ -7652,66 +7934,89 @@ var shouldShowMentionsInfo = () => {
7652
7934
  };
7653
7935
  var MessageField = () => {
7654
7936
  const suggestions = useFormFieldSuggestions();
7655
- return /* @__PURE__ */ React109.createElement(PropKeyProvider, { bind: "message" }, /* @__PURE__ */ React109.createElement(Grid29, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React109.createElement(Grid29, { item: true }, /* @__PURE__ */ React109.createElement(ControlFormLabel, null, __53("Message", "elementor"))), /* @__PURE__ */ React109.createElement(Grid29, { item: true }, /* @__PURE__ */ React109.createElement(MentionTextAreaControl, { suggestions })), /* @__PURE__ */ React109.createElement(Grid29, { item: true }, /* @__PURE__ */ React109.createElement(InfoAlert2, null, shouldShowMentionsInfo() ? __53(
7937
+ return /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "message" }, /* @__PURE__ */ React113.createElement(Grid31, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, __55("Message", "elementor"))), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(MentionTextAreaControl, { suggestions })), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(InfoAlert2, null, shouldShowMentionsInfo() ? __55(
7656
7938
  "[all-fields] shortcode sends all fields. Type @ to insert specific fields and customize your message.",
7657
7939
  "elementor"
7658
- ) : __53("[all-fields] shortcode sends all fields.", "elementor")))));
7940
+ ) : __55("[all-fields] shortcode sends all fields.", "elementor")))));
7659
7941
  };
7660
- var FromEmailField = () => /* @__PURE__ */ React109.createElement(
7942
+ var FromEmailField = () => /* @__PURE__ */ React113.createElement(
7661
7943
  EmailField,
7662
7944
  {
7663
7945
  bind: "from",
7664
- label: __53("From email", "elementor"),
7665
- placeholder: __53("What email should appear as the sender?", "elementor")
7946
+ label: __55("From email", "elementor"),
7947
+ placeholder: __55("What email should appear as the sender?", "elementor")
7666
7948
  }
7667
7949
  );
7668
- var FromNameField = () => /* @__PURE__ */ React109.createElement(
7950
+ var FromNameField = () => /* @__PURE__ */ React113.createElement(
7669
7951
  EmailField,
7670
7952
  {
7671
7953
  bind: "from-name",
7672
- label: __53("From name", "elementor"),
7673
- placeholder: __53("What name should appear as the sender?", "elementor")
7954
+ label: __55("From name", "elementor"),
7955
+ placeholder: __55("What name should appear as the sender?", "elementor")
7674
7956
  }
7675
7957
  );
7676
- var ReplyToField = () => /* @__PURE__ */ React109.createElement(EmailField, { bind: "reply-to", label: __53("Reply-to", "elementor") });
7677
- var CcField = () => /* @__PURE__ */ React109.createElement(EmailField, { bind: "cc", label: __53("Cc", "elementor") });
7678
- var BccField = () => /* @__PURE__ */ React109.createElement(EmailField, { bind: "bcc", label: __53("Bcc", "elementor") });
7679
- var MetaDataField = () => /* @__PURE__ */ React109.createElement(PropKeyProvider, { bind: "meta-data" }, /* @__PURE__ */ React109.createElement(Stack17, { gap: 0.5 }, /* @__PURE__ */ React109.createElement(ControlFormLabel, null, __53("Metadata", "elementor")), /* @__PURE__ */ React109.createElement(
7958
+ var ReplyToField = () => {
7959
+ const emailSuggestions = useFormFieldSuggestions({ inputType: "email" });
7960
+ return /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "reply-to" }, /* @__PURE__ */ React113.createElement(Grid31, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, __55("Reply-to", "elementor"))), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(
7961
+ MentionTextAreaControl,
7962
+ {
7963
+ suggestions: emailSuggestions,
7964
+ rows: 1,
7965
+ triggerPosition: "start",
7966
+ placeholder: __55("You can type @ to insert an email field", "elementor")
7967
+ }
7968
+ ))));
7969
+ };
7970
+ var CcField = () => /* @__PURE__ */ React113.createElement(EmailField, { bind: "cc", label: __55("Cc", "elementor") });
7971
+ var BccField = () => /* @__PURE__ */ React113.createElement(EmailField, { bind: "bcc", label: __55("Bcc", "elementor") });
7972
+ var MetaDataField = () => /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "meta-data" }, /* @__PURE__ */ React113.createElement(Stack19, { gap: 0.5 }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, __55("Metadata", "elementor")), /* @__PURE__ */ React113.createElement(
7680
7973
  ChipsControl,
7681
7974
  {
7682
7975
  options: [
7683
- { label: __53("Date", "elementor"), value: "date" },
7684
- { label: __53("Time", "elementor"), value: "time" },
7685
- { label: __53("Page URL", "elementor"), value: "page-url" },
7686
- { label: __53("User agent", "elementor"), value: "user-agent" },
7687
- { label: __53("Credit", "elementor"), value: "credit" }
7976
+ { label: __55("Date", "elementor"), value: "date" },
7977
+ { label: __55("Time", "elementor"), value: "time" },
7978
+ { label: __55("Page URL", "elementor"), value: "page-url" },
7979
+ { label: __55("User agent", "elementor"), value: "user-agent" },
7980
+ { label: __55("Credit", "elementor"), value: "credit" }
7688
7981
  ]
7689
7982
  }
7690
7983
  )));
7691
- var SendAsField = () => /* @__PURE__ */ React109.createElement(PropKeyProvider, { bind: "send-as" }, /* @__PURE__ */ React109.createElement(Grid29, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React109.createElement(Grid29, { item: true }, /* @__PURE__ */ React109.createElement(ControlFormLabel, null, __53("Send as", "elementor"))), /* @__PURE__ */ React109.createElement(Grid29, { item: true }, /* @__PURE__ */ React109.createElement(
7984
+ var SendAsField = () => /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "send-as" }, /* @__PURE__ */ React113.createElement(Grid31, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, __55("Send as", "elementor"))), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(
7692
7985
  SelectControl,
7693
7986
  {
7694
7987
  options: [
7695
- { label: __53("HTML", "elementor"), value: "html" },
7696
- { label: __53("Plain Text", "elementor"), value: "plain" }
7988
+ { label: __55("HTML", "elementor"), value: "html" },
7989
+ { label: __55("Plain Text", "elementor"), value: "plain" }
7697
7990
  ]
7698
7991
  }
7699
7992
  ))));
7700
- var AdvancedSettings = () => /* @__PURE__ */ React109.createElement(CollapsibleContent, { defaultOpen: false }, /* @__PURE__ */ React109.createElement(Box25, { sx: { pt: 2 } }, /* @__PURE__ */ React109.createElement(Stack17, { gap: 2 }, /* @__PURE__ */ React109.createElement(FromNameField, null), /* @__PURE__ */ React109.createElement(ReplyToField, null), /* @__PURE__ */ React109.createElement(CcField, null), /* @__PURE__ */ React109.createElement(BccField, null), /* @__PURE__ */ React109.createElement(Divider5, null), /* @__PURE__ */ React109.createElement(MetaDataField, null), /* @__PURE__ */ React109.createElement(SendAsField, null))));
7993
+ var AdvancedSettings = () => /* @__PURE__ */ React113.createElement(CollapsibleContent, { defaultOpen: false }, /* @__PURE__ */ React113.createElement(Box25, { sx: { pt: 2 } }, /* @__PURE__ */ React113.createElement(Stack19, { gap: 2 }, /* @__PURE__ */ React113.createElement(FromNameField, null), /* @__PURE__ */ React113.createElement(ReplyToField, null), /* @__PURE__ */ React113.createElement(CcField, null), /* @__PURE__ */ React113.createElement(BccField, null), /* @__PURE__ */ React113.createElement(Divider5, null), /* @__PURE__ */ React113.createElement(MetaDataField, null), /* @__PURE__ */ React113.createElement(SendAsField, null))));
7701
7994
  var EmailFormActionControl = createControl(({ toPlaceholder }) => {
7702
7995
  const { value, setValue, ...propContext } = useBoundProp(emailPropTypeUtil);
7703
- return /* @__PURE__ */ React109.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React109.createElement(Stack17, { gap: 2 }, /* @__PURE__ */ React109.createElement(ControlLabel, null, __53("Email settings", "elementor")), /* @__PURE__ */ React109.createElement(SendToField, { placeholder: toPlaceholder }), /* @__PURE__ */ React109.createElement(SubjectField, null), /* @__PURE__ */ React109.createElement(MessageField, null), /* @__PURE__ */ React109.createElement(FromEmailField, null), /* @__PURE__ */ React109.createElement(AdvancedSettings, null)));
7996
+ return /* @__PURE__ */ React113.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React113.createElement(Stack19, { gap: 2 }, /* @__PURE__ */ React113.createElement(ControlLabel, null, __55("Email settings", "elementor")), /* @__PURE__ */ React113.createElement(SendToField, { placeholder: toPlaceholder }), /* @__PURE__ */ React113.createElement(SubjectField, null), /* @__PURE__ */ React113.createElement(MessageField, null), /* @__PURE__ */ React113.createElement(FromEmailField, null), /* @__PURE__ */ React113.createElement(AdvancedSettings, null)));
7997
+ });
7998
+
7999
+ // src/controls/attachment-type-control.tsx
8000
+ import * as React114 from "react";
8001
+ import { InfoAlert as InfoAlert3 } from "@elementor/editor-ui";
8002
+ import { Grid as Grid32 } from "@elementor/ui";
8003
+ import { __ as __56 } from "@wordpress/i18n";
8004
+ var AttachmentTypeControl = createControl(({ label, options }) => {
8005
+ return /* @__PURE__ */ React114.createElement(Grid32, { container: true, direction: "column", gap: 1 }, label && /* @__PURE__ */ React114.createElement(Grid32, { item: true }, /* @__PURE__ */ React114.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React114.createElement(Grid32, { item: true }, /* @__PURE__ */ React114.createElement(SelectControl, { options })), /* @__PURE__ */ React114.createElement(Grid32, { item: true }, /* @__PURE__ */ React114.createElement(InfoAlert3, null, __56(
8006
+ "Linked uploads are saved to the server. Direct attachments will not appear under Submissions.",
8007
+ "elementor"
8008
+ ))));
7704
8009
  });
7705
8010
 
7706
8011
  // src/components/promotions/display-conditions-control.tsx
7707
- import * as React111 from "react";
7708
- import { useRef as useRef27 } from "react";
8012
+ import * as React116 from "react";
8013
+ import { useRef as useRef28 } from "react";
7709
8014
  import { SitemapIcon } from "@elementor/icons";
7710
- import { IconButton as IconButton8, Stack as Stack18, Tooltip as Tooltip9 } from "@elementor/ui";
7711
- import { __ as __54 } from "@wordpress/i18n";
8015
+ import { IconButton as IconButton8, Stack as Stack20, Tooltip as Tooltip9 } from "@elementor/ui";
8016
+ import { __ as __57 } from "@wordpress/i18n";
7712
8017
 
7713
8018
  // src/components/promotions/promotion-trigger.tsx
7714
- import * as React110 from "react";
8019
+ import * as React115 from "react";
7715
8020
  import { forwardRef as forwardRef12, useCallback as useCallback5, useImperativeHandle, useState as useState19 } from "react";
7716
8021
  import { PromotionChip as PromotionChip2, PromotionInfotip } from "@elementor/editor-ui";
7717
8022
  import { Box as Box26 } from "@elementor/ui";
@@ -7731,7 +8036,7 @@ var PromotionTrigger = forwardRef12(
7731
8036
  });
7732
8037
  }, [trackingData]);
7733
8038
  useImperativeHandle(ref, () => ({ toggle }), [toggle]);
7734
- return /* @__PURE__ */ React110.createElement(React110.Fragment, null, promotion && /* @__PURE__ */ React110.createElement(
8039
+ return /* @__PURE__ */ React115.createElement(React115.Fragment, null, promotion && /* @__PURE__ */ React115.createElement(
7735
8040
  PromotionInfotip,
7736
8041
  {
7737
8042
  title: promotion.title,
@@ -7745,7 +8050,7 @@ var PromotionTrigger = forwardRef12(
7745
8050
  },
7746
8051
  onCtaClick: () => trackUpgradePromotionClick(trackingData)
7747
8052
  },
7748
- /* @__PURE__ */ React110.createElement(
8053
+ /* @__PURE__ */ React115.createElement(
7749
8054
  Box26,
7750
8055
  {
7751
8056
  onClick: (e) => {
@@ -7754,19 +8059,19 @@ var PromotionTrigger = forwardRef12(
7754
8059
  },
7755
8060
  sx: { cursor: "pointer", display: "inline-flex" }
7756
8061
  },
7757
- children ?? /* @__PURE__ */ React110.createElement(PromotionChip2, null)
8062
+ children ?? /* @__PURE__ */ React115.createElement(PromotionChip2, null)
7758
8063
  )
7759
8064
  ));
7760
8065
  }
7761
8066
  );
7762
8067
 
7763
8068
  // src/components/promotions/display-conditions-control.tsx
7764
- var ARIA_LABEL = __54("Display Conditions", "elementor");
8069
+ var ARIA_LABEL = __57("Display Conditions", "elementor");
7765
8070
  var TRACKING_DATA = { target_name: "display_conditions", location_l2: "general" };
7766
8071
  var DisplayConditionsControl = createControl(() => {
7767
- const triggerRef = useRef27(null);
7768
- return /* @__PURE__ */ React111.createElement(
7769
- Stack18,
8072
+ const triggerRef = useRef28(null);
8073
+ return /* @__PURE__ */ React116.createElement(
8074
+ Stack20,
7770
8075
  {
7771
8076
  direction: "row",
7772
8077
  spacing: 2,
@@ -7775,8 +8080,8 @@ var DisplayConditionsControl = createControl(() => {
7775
8080
  alignItems: "center"
7776
8081
  }
7777
8082
  },
7778
- /* @__PURE__ */ React111.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "displayConditions", trackingData: TRACKING_DATA }),
7779
- /* @__PURE__ */ React111.createElement(Tooltip9, { title: ARIA_LABEL, placement: "top" }, /* @__PURE__ */ React111.createElement(
8083
+ /* @__PURE__ */ React116.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "displayConditions", trackingData: TRACKING_DATA }),
8084
+ /* @__PURE__ */ React116.createElement(Tooltip9, { title: ARIA_LABEL, placement: "top" }, /* @__PURE__ */ React116.createElement(
7780
8085
  IconButton8,
7781
8086
  {
7782
8087
  size: "tiny",
@@ -7789,23 +8094,23 @@ var DisplayConditionsControl = createControl(() => {
7789
8094
  borderRadius: 1
7790
8095
  }
7791
8096
  },
7792
- /* @__PURE__ */ React111.createElement(SitemapIcon, { fontSize: "tiny", color: "disabled" })
8097
+ /* @__PURE__ */ React116.createElement(SitemapIcon, { fontSize: "tiny", color: "disabled" })
7793
8098
  ))
7794
8099
  );
7795
8100
  });
7796
8101
 
7797
8102
  // src/components/promotions/attributes-control.tsx
7798
- import * as React112 from "react";
7799
- import { useRef as useRef28 } from "react";
8103
+ import * as React117 from "react";
8104
+ import { useRef as useRef29 } from "react";
7800
8105
  import { PlusIcon as PlusIcon3 } from "@elementor/icons";
7801
- import { Stack as Stack19, Tooltip as Tooltip10 } from "@elementor/ui";
7802
- import { __ as __55 } from "@wordpress/i18n";
7803
- var ARIA_LABEL2 = __55("Attributes", "elementor");
8106
+ import { Stack as Stack21, Tooltip as Tooltip10 } from "@elementor/ui";
8107
+ import { __ as __58 } from "@wordpress/i18n";
8108
+ var ARIA_LABEL2 = __58("Attributes", "elementor");
7804
8109
  var TRACKING_DATA2 = { target_name: "attributes", location_l2: "general" };
7805
8110
  var AttributesControl = createControl(() => {
7806
- const triggerRef = useRef28(null);
7807
- return /* @__PURE__ */ React112.createElement(
7808
- Stack19,
8111
+ const triggerRef = useRef29(null);
8112
+ return /* @__PURE__ */ React117.createElement(
8113
+ Stack21,
7809
8114
  {
7810
8115
  direction: "row",
7811
8116
  spacing: 2,
@@ -7814,8 +8119,8 @@ var AttributesControl = createControl(() => {
7814
8119
  alignItems: "center"
7815
8120
  }
7816
8121
  },
7817
- /* @__PURE__ */ React112.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "attributes", trackingData: TRACKING_DATA2 }),
7818
- /* @__PURE__ */ React112.createElement(Tooltip10, { title: ARIA_LABEL2, placement: "top" }, /* @__PURE__ */ React112.createElement(
8122
+ /* @__PURE__ */ React117.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "attributes", trackingData: TRACKING_DATA2 }),
8123
+ /* @__PURE__ */ React117.createElement(Tooltip10, { title: ARIA_LABEL2, placement: "top" }, /* @__PURE__ */ React117.createElement(
7819
8124
  PlusIcon3,
7820
8125
  {
7821
8126
  "aria-label": ARIA_LABEL2,
@@ -7829,30 +8134,29 @@ var AttributesControl = createControl(() => {
7829
8134
  });
7830
8135
 
7831
8136
  // src/components/icon-buttons/clear-icon-button.tsx
7832
- import * as React113 from "react";
8137
+ import * as React118 from "react";
7833
8138
  import { BrushBigIcon } from "@elementor/icons";
7834
8139
  import { IconButton as IconButton9, styled as styled11, Tooltip as Tooltip11 } from "@elementor/ui";
7835
8140
  var CustomIconButton = styled11(IconButton9)(({ theme }) => ({
7836
8141
  width: theme.spacing(2.5),
7837
8142
  height: theme.spacing(2.5)
7838
8143
  }));
7839
- var ClearIconButton = ({ tooltipText, onClick, disabled, size = "tiny" }) => /* @__PURE__ */ React113.createElement(Tooltip11, { title: tooltipText, placement: "top", disableInteractive: true }, /* @__PURE__ */ React113.createElement(CustomIconButton, { "aria-label": tooltipText, size, onClick, disabled }, /* @__PURE__ */ React113.createElement(BrushBigIcon, { fontSize: size })));
8144
+ var ClearIconButton = ({ tooltipText, onClick, disabled, size = "tiny" }) => /* @__PURE__ */ React118.createElement(Tooltip11, { title: tooltipText, placement: "top", disableInteractive: true }, /* @__PURE__ */ React118.createElement(CustomIconButton, { "aria-label": tooltipText, size, onClick, disabled }, /* @__PURE__ */ React118.createElement(BrushBigIcon, { fontSize: size })));
7840
8145
 
7841
8146
  // src/components/repeater/repeater.tsx
7842
- import * as React114 from "react";
7843
- import { useEffect as useEffect17, useState as useState20 } from "react";
8147
+ import * as React119 from "react";
8148
+ import { useEffect as useEffect18, useState as useState20 } from "react";
7844
8149
  import { CopyIcon as CopyIcon2, EyeIcon as EyeIcon2, EyeOffIcon as EyeOffIcon2, PlusIcon as PlusIcon4, XIcon as XIcon4 } from "@elementor/icons";
7845
8150
  import {
7846
8151
  bindPopover as bindPopover8,
7847
8152
  bindTrigger as bindTrigger7,
7848
8153
  Box as Box27,
7849
- ClickAwayListener,
7850
8154
  IconButton as IconButton10,
7851
8155
  Infotip as Infotip4,
7852
8156
  Tooltip as Tooltip12,
7853
8157
  usePopupState as usePopupState10
7854
8158
  } from "@elementor/ui";
7855
- import { __ as __56 } from "@wordpress/i18n";
8159
+ import { __ as __59 } from "@wordpress/i18n";
7856
8160
  var SIZE11 = "tiny";
7857
8161
  var EMPTY_OPEN_ITEM2 = -1;
7858
8162
  var Repeater3 = ({
@@ -7933,7 +8237,7 @@ var Repeater3 = ({
7933
8237
  };
7934
8238
  const isButtonDisabled = disabled || disableAddItemButton;
7935
8239
  const shouldShowInfotip = isButtonDisabled && addButtonInfotipContent;
7936
- const addButton = /* @__PURE__ */ React114.createElement(
8240
+ const addButton = /* @__PURE__ */ React119.createElement(
7937
8241
  IconButton10,
7938
8242
  {
7939
8243
  size: SIZE11,
@@ -7942,11 +8246,11 @@ var Repeater3 = ({
7942
8246
  },
7943
8247
  disabled: isButtonDisabled,
7944
8248
  onClick: addRepeaterItem,
7945
- "aria-label": __56("Add item", "elementor")
8249
+ "aria-label": __59("Add item", "elementor")
7946
8250
  },
7947
- /* @__PURE__ */ React114.createElement(PlusIcon4, { fontSize: SIZE11 })
8251
+ /* @__PURE__ */ React119.createElement(PlusIcon4, { fontSize: SIZE11 })
7948
8252
  );
7949
- return /* @__PURE__ */ React114.createElement(SectionContent, { gap: 2 }, /* @__PURE__ */ React114.createElement(RepeaterHeader, { label, adornment: ControlAdornments }, shouldShowInfotip ? /* @__PURE__ */ React114.createElement(
8253
+ return /* @__PURE__ */ React119.createElement(SectionContent, { gap: 2 }, /* @__PURE__ */ React119.createElement(RepeaterHeader, { label, adornment: ControlAdornments }, shouldShowInfotip ? /* @__PURE__ */ React119.createElement(
7950
8254
  Infotip4,
7951
8255
  {
7952
8256
  placement: "right",
@@ -7954,20 +8258,20 @@ var Repeater3 = ({
7954
8258
  color: "secondary",
7955
8259
  slotProps: { popper: { sx: { width: 300 } } }
7956
8260
  },
7957
- /* @__PURE__ */ React114.createElement(Box27, { sx: { ...isButtonDisabled ? { cursor: "not-allowed" } : {} } }, addButton)
7958
- ) : addButton), 0 < uniqueKeys.length && /* @__PURE__ */ React114.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key) => {
8261
+ /* @__PURE__ */ React119.createElement(Box27, { sx: { ...isButtonDisabled ? { cursor: "not-allowed" } : {} } }, addButton)
8262
+ ) : addButton), 0 < uniqueKeys.length && /* @__PURE__ */ React119.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key) => {
7959
8263
  const index = uniqueKeys.indexOf(key);
7960
8264
  const value = items2[index];
7961
8265
  if (!value) {
7962
8266
  return null;
7963
8267
  }
7964
- return /* @__PURE__ */ React114.createElement(SortableItem, { id: key, key: `sortable-${key}`, disabled: !isSortable }, /* @__PURE__ */ React114.createElement(
8268
+ return /* @__PURE__ */ React119.createElement(SortableItem, { id: key, key: `sortable-${key}`, disabled: !isSortable }, /* @__PURE__ */ React119.createElement(
7965
8269
  RepeaterItem,
7966
8270
  {
7967
8271
  disabled,
7968
8272
  propDisabled: value?.disabled,
7969
- label: /* @__PURE__ */ React114.createElement(RepeaterItemLabelSlot, { value }, /* @__PURE__ */ React114.createElement(itemSettings.Label, { value, index })),
7970
- startIcon: /* @__PURE__ */ React114.createElement(RepeaterItemIconSlot, { value }, /* @__PURE__ */ React114.createElement(itemSettings.Icon, { value })),
8273
+ label: /* @__PURE__ */ React119.createElement(RepeaterItemLabelSlot, { value }, /* @__PURE__ */ React119.createElement(itemSettings.Label, { value, index })),
8274
+ startIcon: /* @__PURE__ */ React119.createElement(RepeaterItemIconSlot, { value }, /* @__PURE__ */ React119.createElement(itemSettings.Icon, { value })),
7971
8275
  removeItem: () => removeRepeaterItem(index),
7972
8276
  duplicateItem: () => duplicateRepeaterItem(index),
7973
8277
  toggleDisableItem: () => toggleDisableRepeaterItem(index),
@@ -7981,7 +8285,7 @@ var Repeater3 = ({
7981
8285
  actions: itemSettings.actions,
7982
8286
  value
7983
8287
  },
7984
- (props) => /* @__PURE__ */ React114.createElement(
8288
+ (props) => /* @__PURE__ */ React119.createElement(
7985
8289
  itemSettings.Content,
7986
8290
  {
7987
8291
  ...props,
@@ -8022,16 +8326,17 @@ var RepeaterItem = ({
8022
8326
  wrappedOnPopoverClose
8023
8327
  );
8024
8328
  const triggerProps = bindTrigger7(popoverState);
8025
- const duplicateLabel = __56("Duplicate", "elementor");
8026
- const toggleLabel = propDisabled ? __56("Show", "elementor") : __56("Hide", "elementor");
8027
- const removeLabel = __56("Remove", "elementor");
8028
- return /* @__PURE__ */ React114.createElement(React114.Fragment, null, /* @__PURE__ */ React114.createElement(
8329
+ usePopoverDismiss({ isOpen: popoverState.isOpen, onClose: popoverProps.onClose });
8330
+ const duplicateLabel = __59("Duplicate", "elementor");
8331
+ const toggleLabel = propDisabled ? __59("Show", "elementor") : __59("Hide", "elementor");
8332
+ const removeLabel = __59("Remove", "elementor");
8333
+ return /* @__PURE__ */ React119.createElement(Box27, { sx: { display: "contents" } }, /* @__PURE__ */ React119.createElement(
8029
8334
  RepeaterTag,
8030
8335
  {
8031
8336
  disabled,
8032
8337
  label,
8033
8338
  ref: setRef,
8034
- "aria-label": __56("Open item", "elementor"),
8339
+ "aria-label": __59("Open item", "elementor"),
8035
8340
  ...triggerProps,
8036
8341
  onClick: (e) => {
8037
8342
  triggerProps.onClick(e);
@@ -8040,23 +8345,15 @@ var RepeaterItem = ({
8040
8345
  }
8041
8346
  },
8042
8347
  startIcon,
8043
- actions: /* @__PURE__ */ React114.createElement(React114.Fragment, null, showDuplicate && /* @__PURE__ */ React114.createElement(Tooltip12, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React114.createElement(IconButton10, { size: SIZE11, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React114.createElement(CopyIcon2, { fontSize: SIZE11 }))), showToggle && /* @__PURE__ */ React114.createElement(Tooltip12, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React114.createElement(IconButton10, { size: SIZE11, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React114.createElement(EyeOffIcon2, { fontSize: SIZE11 }) : /* @__PURE__ */ React114.createElement(EyeIcon2, { fontSize: SIZE11 }))), actions?.(value), showRemove && /* @__PURE__ */ React114.createElement(Tooltip12, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React114.createElement(IconButton10, { size: SIZE11, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React114.createElement(XIcon4, { fontSize: SIZE11 }))))
8348
+ actions: /* @__PURE__ */ React119.createElement(React119.Fragment, null, showDuplicate && /* @__PURE__ */ React119.createElement(Tooltip12, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React119.createElement(IconButton10, { size: SIZE11, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React119.createElement(CopyIcon2, { fontSize: SIZE11 }))), showToggle && /* @__PURE__ */ React119.createElement(Tooltip12, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React119.createElement(IconButton10, { size: SIZE11, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React119.createElement(EyeOffIcon2, { fontSize: SIZE11 }) : /* @__PURE__ */ React119.createElement(EyeIcon2, { fontSize: SIZE11 }))), actions?.(value), showRemove && /* @__PURE__ */ React119.createElement(Tooltip12, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React119.createElement(IconButton10, { size: SIZE11, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React119.createElement(XIcon4, { fontSize: SIZE11 }))))
8044
8349
  }
8045
- ), /* @__PURE__ */ React114.createElement(RepeaterPopover, { width: ref?.getBoundingClientRect().width, ...popoverProps, anchorEl: ref }, /* @__PURE__ */ React114.createElement(
8046
- ClickAwayListener,
8047
- {
8048
- mouseEvent: "onMouseDown",
8049
- touchEvent: "onTouchStart",
8050
- onClickAway: popoverProps.onClose
8051
- },
8052
- /* @__PURE__ */ React114.createElement(Box27, null, children({ anchorEl: ref }))
8053
- )));
8350
+ ), /* @__PURE__ */ React119.createElement(RepeaterPopover, { width: ref?.getBoundingClientRect().width, ...popoverProps, anchorEl: ref }, /* @__PURE__ */ React119.createElement(Box27, null, children({ anchorEl: ref }))));
8054
8351
  };
8055
8352
  var usePopover = (openOnMount, onOpen, onPopoverClose) => {
8056
8353
  const [ref, setRef] = useState20(null);
8057
8354
  const popoverState = usePopupState10({ variant: "popover" });
8058
8355
  const popoverProps = bindPopover8(popoverState);
8059
- useEffect17(() => {
8356
+ useEffect18(() => {
8060
8357
  if (openOnMount && ref) {
8061
8358
  popoverState.open(ref);
8062
8359
  onOpen?.();
@@ -8075,8 +8372,8 @@ var usePopover = (openOnMount, onOpen, onPopoverClose) => {
8075
8372
  };
8076
8373
 
8077
8374
  // src/components/inline-editor-toolbar.tsx
8078
- import * as React116 from "react";
8079
- import { useEffect as useEffect19, useMemo as useMemo16, useRef as useRef30, useState as useState21 } from "react";
8375
+ import * as React121 from "react";
8376
+ import { useEffect as useEffect20, useMemo as useMemo17, useRef as useRef31, useState as useState21 } from "react";
8080
8377
  import { getContainer as getContainer2, getElementSetting } from "@elementor/editor-elements";
8081
8378
  import {
8082
8379
  BoldIcon,
@@ -8098,14 +8395,14 @@ import {
8098
8395
  usePopupState as usePopupState11
8099
8396
  } from "@elementor/ui";
8100
8397
  import { useEditorState } from "@tiptap/react";
8101
- import { __ as __58 } from "@wordpress/i18n";
8398
+ import { __ as __61 } from "@wordpress/i18n";
8102
8399
 
8103
8400
  // src/components/url-popover.tsx
8104
- import * as React115 from "react";
8105
- import { useEffect as useEffect18, useRef as useRef29 } from "react";
8401
+ import * as React120 from "react";
8402
+ import { useEffect as useEffect19, useRef as useRef30 } from "react";
8106
8403
  import { ExternalLinkIcon } from "@elementor/icons";
8107
- import { bindPopover as bindPopover9, Popover as Popover8, Stack as Stack20, TextField as TextField10, ToggleButton as ToggleButton2, Tooltip as Tooltip13 } from "@elementor/ui";
8108
- import { __ as __57 } from "@wordpress/i18n";
8404
+ import { bindPopover as bindPopover9, Popover as Popover8, Stack as Stack22, TextField as TextField10, ToggleButton as ToggleButton2, Tooltip as Tooltip13 } from "@elementor/ui";
8405
+ import { __ as __60 } from "@wordpress/i18n";
8109
8406
  var UrlPopover = ({
8110
8407
  popupState,
8111
8408
  restoreValue,
@@ -8115,8 +8412,8 @@ var UrlPopover = ({
8115
8412
  openInNewTab,
8116
8413
  onToggleNewTab
8117
8414
  }) => {
8118
- const inputRef = useRef29(null);
8119
- useEffect18(() => {
8415
+ const inputRef = useRef30(null);
8416
+ useEffect19(() => {
8120
8417
  if (popupState.isOpen) {
8121
8418
  requestAnimationFrame(() => inputRef.current?.focus());
8122
8419
  }
@@ -8125,7 +8422,7 @@ var UrlPopover = ({
8125
8422
  restoreValue();
8126
8423
  popupState.close();
8127
8424
  };
8128
- return /* @__PURE__ */ React115.createElement(
8425
+ return /* @__PURE__ */ React120.createElement(
8129
8426
  Popover8,
8130
8427
  {
8131
8428
  slotProps: {
@@ -8136,30 +8433,30 @@ var UrlPopover = ({
8136
8433
  transformOrigin: { vertical: "top", horizontal: "left" },
8137
8434
  onClose: handleClose
8138
8435
  },
8139
- /* @__PURE__ */ React115.createElement(Stack20, { direction: "row", alignItems: "center", gap: 1, sx: { p: 1.5 } }, /* @__PURE__ */ React115.createElement(
8436
+ /* @__PURE__ */ React120.createElement(Stack22, { direction: "row", alignItems: "center", gap: 1, sx: { p: 1.5 } }, /* @__PURE__ */ React120.createElement(
8140
8437
  TextField10,
8141
8438
  {
8142
8439
  value,
8143
8440
  onChange,
8144
8441
  size: "tiny",
8145
8442
  fullWidth: true,
8146
- placeholder: __57("Type a URL", "elementor"),
8443
+ placeholder: __60("Type a URL", "elementor"),
8147
8444
  inputProps: { ref: inputRef },
8148
8445
  color: "secondary",
8149
8446
  InputProps: { sx: { borderRadius: "8px" } },
8150
8447
  onKeyUp: (event) => event.key === "Enter" && handleClose()
8151
8448
  }
8152
- ), /* @__PURE__ */ React115.createElement(Tooltip13, { title: __57("Open in a new tab", "elementor") }, /* @__PURE__ */ React115.createElement(
8449
+ ), /* @__PURE__ */ React120.createElement(Tooltip13, { title: __60("Open in a new tab", "elementor") }, /* @__PURE__ */ React120.createElement(
8153
8450
  ToggleButton2,
8154
8451
  {
8155
8452
  size: "tiny",
8156
8453
  value: "newTab",
8157
8454
  selected: openInNewTab,
8158
8455
  onClick: onToggleNewTab,
8159
- "aria-label": __57("Open in a new tab", "elementor"),
8456
+ "aria-label": __60("Open in a new tab", "elementor"),
8160
8457
  sx: { borderRadius: "8px" }
8161
8458
  },
8162
- /* @__PURE__ */ React115.createElement(ExternalLinkIcon, { fontSize: "tiny" })
8459
+ /* @__PURE__ */ React120.createElement(ExternalLinkIcon, { fontSize: "tiny" })
8163
8460
  )))
8164
8461
  );
8165
8462
  };
@@ -8168,14 +8465,14 @@ var UrlPopover = ({
8168
8465
  var InlineEditorToolbar = ({ editor, elementId, sx = {} }) => {
8169
8466
  const [urlValue, setUrlValue] = useState21("");
8170
8467
  const [openInNewTab, setOpenInNewTab] = useState21(false);
8171
- const toolbarRef = useRef30(null);
8468
+ const toolbarRef = useRef31(null);
8172
8469
  const linkPopupState = usePopupState11({ variant: "popover" });
8173
8470
  const isElementClickable = elementId ? checkIfElementIsClickable(elementId) : false;
8174
8471
  const editorState = useEditorState({
8175
8472
  editor,
8176
8473
  selector: (ctx) => possibleFormats.filter((format) => ctx.editor.isActive(format))
8177
8474
  });
8178
- const formatButtonsList = useMemo16(() => {
8475
+ const formatButtonsList = useMemo17(() => {
8179
8476
  const buttons = Object.values(formatButtons);
8180
8477
  if (isElementClickable) {
8181
8478
  return buttons.filter((button) => button.action !== "link");
@@ -8212,10 +8509,10 @@ var InlineEditorToolbar = ({ editor, elementId, sx = {} }) => {
8212
8509
  }
8213
8510
  linkPopupState.close();
8214
8511
  };
8215
- useEffect19(() => {
8512
+ useEffect20(() => {
8216
8513
  editor?.commands?.focus();
8217
8514
  }, [editor]);
8218
- return /* @__PURE__ */ React116.createElement(
8515
+ return /* @__PURE__ */ React121.createElement(
8219
8516
  Box28,
8220
8517
  {
8221
8518
  ref: toolbarRef,
@@ -8232,8 +8529,8 @@ var InlineEditorToolbar = ({ editor, elementId, sx = {} }) => {
8232
8529
  ...sx
8233
8530
  }
8234
8531
  },
8235
- /* @__PURE__ */ React116.createElement(Tooltip14, { title: clearButton.label, placement: "top", sx: { borderRadius: "8px" } }, /* @__PURE__ */ React116.createElement(IconButton11, { "aria-label": clearButton.label, onClick: () => clearButton.method(editor), size: "tiny" }, clearButton.icon)),
8236
- /* @__PURE__ */ React116.createElement(
8532
+ /* @__PURE__ */ React121.createElement(Tooltip14, { title: clearButton.label, placement: "top", sx: { borderRadius: "8px" } }, /* @__PURE__ */ React121.createElement(IconButton11, { "aria-label": clearButton.label, onClick: () => clearButton.method(editor), size: "tiny" }, clearButton.icon)),
8533
+ /* @__PURE__ */ React121.createElement(
8237
8534
  ToggleButtonGroup2,
8238
8535
  {
8239
8536
  value: editorState,
@@ -8255,7 +8552,7 @@ var InlineEditorToolbar = ({ editor, elementId, sx = {} }) => {
8255
8552
  }
8256
8553
  }
8257
8554
  },
8258
- formatButtonsList.map((button) => /* @__PURE__ */ React116.createElement(Tooltip14, { title: button.label, key: button.action, placement: "top" }, /* @__PURE__ */ React116.createElement(
8555
+ formatButtonsList.map((button) => /* @__PURE__ */ React121.createElement(Tooltip14, { title: button.label, key: button.action, placement: "top" }, /* @__PURE__ */ React121.createElement(
8259
8556
  ToggleButton3,
8260
8557
  {
8261
8558
  value: button.action,
@@ -8273,7 +8570,7 @@ var InlineEditorToolbar = ({ editor, elementId, sx = {} }) => {
8273
8570
  button.icon
8274
8571
  )))
8275
8572
  ),
8276
- /* @__PURE__ */ React116.createElement(
8573
+ /* @__PURE__ */ React121.createElement(
8277
8574
  UrlPopover,
8278
8575
  {
8279
8576
  popupState: linkPopupState,
@@ -8296,64 +8593,64 @@ var checkIfElementIsClickable = (elementId) => {
8296
8593
  };
8297
8594
  var toolbarButtons = {
8298
8595
  clear: {
8299
- label: __58("Clear", "elementor"),
8300
- icon: /* @__PURE__ */ React116.createElement(MinusIcon2, { fontSize: "tiny" }),
8596
+ label: __61("Clear", "elementor"),
8597
+ icon: /* @__PURE__ */ React121.createElement(MinusIcon2, { fontSize: "tiny" }),
8301
8598
  action: "clear",
8302
8599
  method: (editor) => {
8303
8600
  editor.chain().focus().clearNodes().unsetAllMarks().run();
8304
8601
  }
8305
8602
  },
8306
8603
  bold: {
8307
- label: __58("Bold", "elementor"),
8308
- icon: /* @__PURE__ */ React116.createElement(BoldIcon, { fontSize: "tiny" }),
8604
+ label: __61("Bold", "elementor"),
8605
+ icon: /* @__PURE__ */ React121.createElement(BoldIcon, { fontSize: "tiny" }),
8309
8606
  action: "bold",
8310
8607
  method: (editor) => {
8311
8608
  editor.chain().focus().toggleBold().run();
8312
8609
  }
8313
8610
  },
8314
8611
  italic: {
8315
- label: __58("Italic", "elementor"),
8316
- icon: /* @__PURE__ */ React116.createElement(ItalicIcon, { fontSize: "tiny" }),
8612
+ label: __61("Italic", "elementor"),
8613
+ icon: /* @__PURE__ */ React121.createElement(ItalicIcon, { fontSize: "tiny" }),
8317
8614
  action: "italic",
8318
8615
  method: (editor) => {
8319
8616
  editor.chain().focus().toggleItalic().run();
8320
8617
  }
8321
8618
  },
8322
8619
  underline: {
8323
- label: __58("Underline", "elementor"),
8324
- icon: /* @__PURE__ */ React116.createElement(UnderlineIcon, { fontSize: "tiny" }),
8620
+ label: __61("Underline", "elementor"),
8621
+ icon: /* @__PURE__ */ React121.createElement(UnderlineIcon, { fontSize: "tiny" }),
8325
8622
  action: "underline",
8326
8623
  method: (editor) => {
8327
8624
  editor.chain().focus().toggleUnderline().run();
8328
8625
  }
8329
8626
  },
8330
8627
  strike: {
8331
- label: __58("Strikethrough", "elementor"),
8332
- icon: /* @__PURE__ */ React116.createElement(StrikethroughIcon, { fontSize: "tiny" }),
8628
+ label: __61("Strikethrough", "elementor"),
8629
+ icon: /* @__PURE__ */ React121.createElement(StrikethroughIcon, { fontSize: "tiny" }),
8333
8630
  action: "strike",
8334
8631
  method: (editor) => {
8335
8632
  editor.chain().focus().toggleStrike().run();
8336
8633
  }
8337
8634
  },
8338
8635
  superscript: {
8339
- label: __58("Superscript", "elementor"),
8340
- icon: /* @__PURE__ */ React116.createElement(SuperscriptIcon, { fontSize: "tiny" }),
8636
+ label: __61("Superscript", "elementor"),
8637
+ icon: /* @__PURE__ */ React121.createElement(SuperscriptIcon, { fontSize: "tiny" }),
8341
8638
  action: "superscript",
8342
8639
  method: (editor) => {
8343
8640
  editor.chain().focus().toggleSuperscript().run();
8344
8641
  }
8345
8642
  },
8346
8643
  subscript: {
8347
- label: __58("Subscript", "elementor"),
8348
- icon: /* @__PURE__ */ React116.createElement(SubscriptIcon, { fontSize: "tiny" }),
8644
+ label: __61("Subscript", "elementor"),
8645
+ icon: /* @__PURE__ */ React121.createElement(SubscriptIcon, { fontSize: "tiny" }),
8349
8646
  action: "subscript",
8350
8647
  method: (editor) => {
8351
8648
  editor.chain().focus().toggleSubscript().run();
8352
8649
  }
8353
8650
  },
8354
8651
  link: {
8355
- label: __58("Link", "elementor"),
8356
- icon: /* @__PURE__ */ React116.createElement(LinkIcon3, { fontSize: "tiny" }),
8652
+ label: __61("Link", "elementor"),
8653
+ icon: /* @__PURE__ */ React121.createElement(LinkIcon3, { fontSize: "tiny" }),
8357
8654
  action: "link",
8358
8655
  method: null
8359
8656
  }
@@ -8362,7 +8659,7 @@ var { clear: clearButton, ...formatButtons } = toolbarButtons;
8362
8659
  var possibleFormats = Object.keys(formatButtons);
8363
8660
 
8364
8661
  // src/components/size/unstable-size-field.tsx
8365
- import * as React119 from "react";
8662
+ import * as React124 from "react";
8366
8663
  import { InputAdornment as InputAdornment6 } from "@elementor/ui";
8367
8664
 
8368
8665
  // src/hooks/use-size-value.ts
@@ -8405,7 +8702,7 @@ var differsFromExternal = (newState, externalState) => {
8405
8702
  };
8406
8703
 
8407
8704
  // src/components/size/unit-select.tsx
8408
- import * as React117 from "react";
8705
+ import * as React122 from "react";
8409
8706
  import { useId as useId4 } from "react";
8410
8707
  import { MenuListItem as MenuListItem8 } from "@elementor/editor-ui";
8411
8708
  import { bindMenu as bindMenu3, bindTrigger as bindTrigger8, Button as Button7, Menu as Menu4, styled as styled12, usePopupState as usePopupState12 } from "@elementor/ui";
@@ -8423,7 +8720,7 @@ var UnitSelect = ({ value, showPrimaryColor, onClick, options }) => {
8423
8720
  onClick(options[index]);
8424
8721
  popupState.close();
8425
8722
  };
8426
- return /* @__PURE__ */ React117.createElement(React117.Fragment, null, /* @__PURE__ */ React117.createElement(StyledButton3, { isPrimaryColor: showPrimaryColor, size: "small", ...bindTrigger8(popupState) }, value), /* @__PURE__ */ React117.createElement(Menu4, { MenuListProps: { dense: true }, ...bindMenu3(popupState) }, options.map((option, index) => /* @__PURE__ */ React117.createElement(
8723
+ return /* @__PURE__ */ React122.createElement(React122.Fragment, null, /* @__PURE__ */ React122.createElement(StyledButton3, { isPrimaryColor: showPrimaryColor, size: "small", ...bindTrigger8(popupState) }, value), /* @__PURE__ */ React122.createElement(Menu4, { MenuListProps: { dense: true }, ...bindMenu3(popupState) }, options.map((option, index) => /* @__PURE__ */ React122.createElement(
8427
8724
  MenuListItem8,
8428
8725
  {
8429
8726
  key: option,
@@ -8452,11 +8749,11 @@ var StyledButton3 = styled12(Button7, {
8452
8749
  }));
8453
8750
 
8454
8751
  // src/components/size/unstable-size-input.tsx
8455
- import * as React118 from "react";
8752
+ import * as React123 from "react";
8456
8753
  import { forwardRef as forwardRef13 } from "react";
8457
8754
  var UnstableSizeInput = forwardRef13(
8458
8755
  ({ type, value, onChange, onKeyDown, onKeyUp, InputProps, onBlur, focused, disabled }, ref) => {
8459
- return /* @__PURE__ */ React118.createElement(
8756
+ return /* @__PURE__ */ React123.createElement(
8460
8757
  NumberInput,
8461
8758
  {
8462
8759
  ref,
@@ -8494,7 +8791,7 @@ var UnstableSizeField = ({
8494
8791
  const shouldHighlightUnit2 = () => {
8495
8792
  return hasValue(size);
8496
8793
  };
8497
- return /* @__PURE__ */ React119.createElement(
8794
+ return /* @__PURE__ */ React124.createElement(
8498
8795
  UnstableSizeInput,
8499
8796
  {
8500
8797
  type: "number",
@@ -8503,8 +8800,8 @@ var UnstableSizeField = ({
8503
8800
  onChange: (event) => setSize(event.target.value),
8504
8801
  InputProps: {
8505
8802
  ...InputProps,
8506
- startAdornment: startIcon && /* @__PURE__ */ React119.createElement(InputAdornment6, { position: "start" }, startIcon),
8507
- endAdornment: /* @__PURE__ */ React119.createElement(InputAdornment6, { position: "end" }, /* @__PURE__ */ React119.createElement(
8803
+ startAdornment: startIcon && /* @__PURE__ */ React124.createElement(InputAdornment6, { position: "start" }, startIcon),
8804
+ endAdornment: /* @__PURE__ */ React124.createElement(InputAdornment6, { position: "end" }, /* @__PURE__ */ React124.createElement(
8508
8805
  UnitSelect,
8509
8806
  {
8510
8807
  options: units2,
@@ -8522,7 +8819,7 @@ var hasValue = (value) => {
8522
8819
  };
8523
8820
 
8524
8821
  // src/hooks/use-font-families.ts
8525
- import { useMemo as useMemo17 } from "react";
8822
+ import { useMemo as useMemo18 } from "react";
8526
8823
  import { getElementorConfig } from "@elementor/editor-v1-adapters";
8527
8824
  var getFontControlConfig = () => {
8528
8825
  const { controls } = getElementorConfig();
@@ -8530,7 +8827,7 @@ var getFontControlConfig = () => {
8530
8827
  };
8531
8828
  var useFontFamilies = () => {
8532
8829
  const { groups, options } = getFontControlConfig();
8533
- return useMemo17(() => {
8830
+ return useMemo18(() => {
8534
8831
  if (!groups || !options) {
8535
8832
  return [];
8536
8833
  }
@@ -8554,6 +8851,7 @@ var useFontFamilies = () => {
8554
8851
  };
8555
8852
  export {
8556
8853
  AspectRatioControl,
8854
+ AttachmentTypeControl,
8557
8855
  AttributesControl,
8558
8856
  BackgroundControl,
8559
8857
  BoxShadowRepeaterControl,
@@ -8566,6 +8864,7 @@ export {
8566
8864
  ControlFormLabel,
8567
8865
  ControlReplacementsProvider,
8568
8866
  ControlToggleButtonGroup,
8867
+ DateRangeControl,
8569
8868
  DateTimeControl,
8570
8869
  DisplayConditionsControl,
8571
8870
  EmailFormActionControl,
@@ -8605,6 +8904,8 @@ export {
8605
8904
  SwitchControl,
8606
8905
  TextAreaControl,
8607
8906
  TextControl,
8907
+ TimeRangeControl,
8908
+ TimeStringControl,
8608
8909
  ToggleButtonGroupUi,
8609
8910
  ToggleControl,
8610
8911
  TransformRepeaterControl,