@elementor/editor-editing-panel 1.35.0 → 1.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -7,6 +7,7 @@ var { registerControlReplacement, getControlReplacements } = createControlReplac
7
7
 
8
8
  // src/components/css-classes/css-class-selector.tsx
9
9
  import * as React7 from "react";
10
+ import { useRef, useState as useState4 } from "react";
10
11
  import { getElementSetting, updateElementSettings as updateElementSettings2, useElementSetting as useElementSetting2 } from "@elementor/editor-elements";
11
12
  import { classesPropTypeUtil } from "@elementor/editor-props";
12
13
  import {
@@ -16,6 +17,7 @@ import {
16
17
  useProviders,
17
18
  validateStyleLabel as validateStyleLabel2
18
19
  } from "@elementor/editor-styles-repository";
20
+ import { WarningInfotip } from "@elementor/editor-ui";
19
21
  import { MapPinIcon } from "@elementor/icons";
20
22
  import { createLocation } from "@elementor/locations";
21
23
  import { Chip as Chip3, FormLabel, Stack as Stack3 } from "@elementor/ui";
@@ -186,7 +188,20 @@ function useInputState(validate) {
186
188
  setError(errorMessage);
187
189
  }
188
190
  };
189
- return { inputValue, setInputValue, error, setError, handleInputChange };
191
+ const handleInputBlur = () => {
192
+ setInputValue("");
193
+ setError(null);
194
+ };
195
+ return {
196
+ inputValue,
197
+ setInputValue,
198
+ error,
199
+ setError,
200
+ inputHandlers: {
201
+ onChange: handleInputChange,
202
+ onBlur: handleInputBlur
203
+ }
204
+ };
190
205
  }
191
206
  function useOpenState(initialOpen = false) {
192
207
  const [open, setOpen] = useState(initialOpen);
@@ -253,7 +268,8 @@ function useFilterOptions(parameters) {
253
268
  }
254
269
 
255
270
  // src/components/creatable-autocomplete/creatable-autocomplete.tsx
256
- function CreatableAutocomplete({
271
+ var CreatableAutocomplete = React4.forwardRef(CreatableAutocompleteInner);
272
+ function CreatableAutocompleteInner({
257
273
  selected,
258
274
  options: options12,
259
275
  entityName,
@@ -262,8 +278,8 @@ function CreatableAutocomplete({
262
278
  onCreate,
263
279
  validate,
264
280
  ...props
265
- }) {
266
- const { inputValue, setInputValue, error, setError, handleInputChange } = useInputState(validate);
281
+ }, ref) {
282
+ const { inputValue, setInputValue, error, setError, inputHandlers } = useInputState(validate);
267
283
  const { open, openDropdown, closeDropdown } = useOpenState(props.open);
268
284
  const { createOption, loading } = useCreateOption({ onCreate, validate, setInputValue, setError, closeDropdown });
269
285
  const [internalOptions, internalSelected] = useMemo(
@@ -293,6 +309,7 @@ function CreatableAutocomplete({
293
309
  ));
294
310
  },
295
311
  ...props,
312
+ ref,
296
313
  freeSolo: true,
297
314
  multiple: true,
298
315
  clearOnBlur: true,
@@ -306,7 +323,7 @@ function CreatableAutocomplete({
306
323
  disableCloseOnSelect: true,
307
324
  value: internalSelected,
308
325
  options: internalOptions,
309
- ListboxComponent: error ? React4.forwardRef((_, ref) => /* @__PURE__ */ React4.createElement(ErrorText, { ref, error })) : void 0,
326
+ ListboxComponent: error ? React4.forwardRef((_, errorTextRef) => /* @__PURE__ */ React4.createElement(ErrorText, { ref: errorTextRef, error })) : void 0,
310
327
  renderGroup: (params) => /* @__PURE__ */ React4.createElement(Group, { ...params }),
311
328
  inputValue,
312
329
  renderInput: (params) => {
@@ -316,7 +333,7 @@ function CreatableAutocomplete({
316
333
  ...params,
317
334
  placeholder,
318
335
  error: Boolean(error),
319
- onChange: handleInputChange,
336
+ ...inputHandlers,
320
337
  sx: (theme) => ({
321
338
  ".MuiAutocomplete-inputRoot.MuiInputBase-adornedStart": {
322
339
  paddingLeft: theme.spacing(0.25),
@@ -364,7 +381,7 @@ var ErrorText = React4.forwardRef(({ error = "error" }, ref) => {
364
381
  padding: theme.spacing(2)
365
382
  })
366
383
  },
367
- /* @__PURE__ */ React4.createElement(Typography, { variant: "caption", sx: { color: "error.main" } }, error)
384
+ /* @__PURE__ */ React4.createElement(Typography, { variant: "caption", sx: { color: "error.main", display: "inline-block" } }, error)
368
385
  );
369
386
  });
370
387
  var StyledGroup = styled("li")`
@@ -613,7 +630,8 @@ function CssClassItem({
613
630
  icon,
614
631
  chipProps,
615
632
  onClickActive,
616
- renameLabel
633
+ renameLabel,
634
+ setError
617
635
  }) {
618
636
  const { meta, setMetaState } = useStyle();
619
637
  const popupState = usePopupState({ variant: "popover" });
@@ -628,7 +646,8 @@ function CssClassItem({
628
646
  } = useEditable({
629
647
  value: label,
630
648
  onSubmit: renameLabel,
631
- validation: validateLabel
649
+ validation: validateLabel,
650
+ onError: setError
632
651
  });
633
652
  const color = error ? "error" : colorProp;
634
653
  const providerActions = provider ? stylesRepository3.getProviderByKey(provider)?.actions : null;
@@ -649,7 +668,7 @@ function CssClassItem({
649
668
  Chip2,
650
669
  {
651
670
  size: CHIP_SIZE,
652
- label: isEditing ? /* @__PURE__ */ React6.createElement(EditableField, { ref, error, ...getEditableProps() }) : /* @__PURE__ */ React6.createElement(EllipsisWithTooltip, { maxWidth: "10ch", title: label, as: "div" }),
671
+ label: isEditing ? /* @__PURE__ */ React6.createElement(EditableField, { ref, ...getEditableProps() }) : /* @__PURE__ */ React6.createElement(EllipsisWithTooltip, { maxWidth: "10ch", title: label, as: "div" }),
653
672
  variant: isActive && !meta.state && !isEditing ? "filled" : "standard",
654
673
  shape: "rounded",
655
674
  icon,
@@ -730,51 +749,65 @@ function CssClassSelector() {
730
749
  const options12 = useOptions();
731
750
  const { value: appliedIds, setValue: setAppliedIds, pushValue: pushAppliedId } = useAppliedClassesIds();
732
751
  const { id: activeId, setId: setActiveId } = useStyle();
752
+ const autocompleteRef = useRef(null);
753
+ const [renameError, setRenameError] = useState4(null);
733
754
  const handleApply = useHandleApply(appliedIds, setAppliedIds);
734
755
  const { create, validate, entityName } = useCreateAction({ pushAppliedId, setActiveId });
735
756
  const applied = useAppliedOptions(options12, appliedIds);
736
757
  const active = applied.find((option) => option.value === activeId) ?? EMPTY_OPTION;
737
758
  const showPlaceholder = applied.every(({ fixed }) => fixed);
738
759
  return /* @__PURE__ */ React7.createElement(Stack3, { p: 2 }, /* @__PURE__ */ React7.createElement(Stack3, { direction: "row", gap: 1, alignItems: "center", justifyContent: "space-between" }, /* @__PURE__ */ React7.createElement(FormLabel, { htmlFor: ID, size: "small" }, __3("Classes", "elementor")), /* @__PURE__ */ React7.createElement(Stack3, { direction: "row", gap: 1 }, /* @__PURE__ */ React7.createElement(ClassSelectorActionsSlot, null))), /* @__PURE__ */ React7.createElement(
739
- CreatableAutocomplete,
760
+ WarningInfotip,
740
761
  {
741
- id: ID,
742
- size: "tiny",
743
- placeholder: showPlaceholder ? __3("Type class name", "elementor") : void 0,
744
- options: options12,
745
- selected: applied,
746
- entityName,
747
- onSelect: handleApply,
748
- onCreate: create ?? void 0,
749
- validate: validate ?? void 0,
750
- limitTags: TAGS_LIMIT,
751
- getLimitTagsText: (more) => /* @__PURE__ */ React7.createElement(Chip3, { size: "tiny", variant: "standard", label: `+${more}`, clickable: true }),
752
- renderTags: (values, getTagProps) => values.map((value, index) => {
753
- const chipProps = getTagProps({ index });
754
- const isActive = value.value === active?.value;
755
- const renameLabel = (newLabel) => {
756
- if (!value.value) {
757
- throw new Error(`Cannot rename a class without style id`);
758
- }
759
- return updateClassByProvider(value.provider, { label: newLabel, id: value.value });
760
- };
761
- return /* @__PURE__ */ React7.createElement(
762
- CssClassItem,
763
- {
764
- key: chipProps.key,
765
- label: value.label,
766
- provider: value.provider,
767
- id: value.value,
768
- isActive,
769
- color: isActive && value.color ? value.color : "default",
770
- icon: value.icon,
771
- chipProps,
772
- onClickActive: () => setActiveId(value.value),
773
- renameLabel
774
- }
775
- );
776
- })
777
- }
762
+ open: Boolean(renameError),
763
+ text: renameError ?? "",
764
+ placement: "bottom",
765
+ width: autocompleteRef.current?.getBoundingClientRect().width,
766
+ offset: [0, -15]
767
+ },
768
+ /* @__PURE__ */ React7.createElement(
769
+ CreatableAutocomplete,
770
+ {
771
+ id: ID,
772
+ ref: autocompleteRef,
773
+ size: "tiny",
774
+ placeholder: showPlaceholder ? __3("Type class name", "elementor") : void 0,
775
+ options: options12,
776
+ selected: applied,
777
+ entityName,
778
+ onSelect: handleApply,
779
+ onCreate: create ?? void 0,
780
+ validate: validate ?? void 0,
781
+ limitTags: TAGS_LIMIT,
782
+ getLimitTagsText: (more) => /* @__PURE__ */ React7.createElement(Chip3, { size: "tiny", variant: "standard", label: `+${more}`, clickable: true }),
783
+ renderTags: (values, getTagProps) => values.map((value, index) => {
784
+ const chipProps = getTagProps({ index });
785
+ const isActive = value.value === active?.value;
786
+ const renameLabel = (newLabel) => {
787
+ if (!value.value) {
788
+ throw new Error(`Cannot rename a class without style id`);
789
+ }
790
+ return updateClassByProvider(value.provider, { label: newLabel, id: value.value });
791
+ };
792
+ return /* @__PURE__ */ React7.createElement(
793
+ CssClassItem,
794
+ {
795
+ key: chipProps.key,
796
+ label: value.label,
797
+ provider: value.provider,
798
+ id: value.value,
799
+ isActive,
800
+ color: isActive && value.color ? value.color : "default",
801
+ icon: value.icon,
802
+ chipProps,
803
+ onClickActive: () => setActiveId(value.value),
804
+ renameLabel,
805
+ setError: setRenameError
806
+ }
807
+ );
808
+ })
809
+ }
810
+ )
778
811
  ));
779
812
  }
780
813
  var updateClassByProvider = (provider, data) => {
@@ -896,7 +929,7 @@ function useHandleApply(appliedIds, setAppliedIds) {
896
929
  import { __createPanel as createPanel } from "@elementor/editor-panels";
897
930
 
898
931
  // src/components/editing-panel.tsx
899
- import * as React70 from "react";
932
+ import * as React72 from "react";
900
933
  import { ControlActionsProvider, ControlReplacementsProvider } from "@elementor/editor-controls";
901
934
  import { useSelectedElement } from "@elementor/editor-elements";
902
935
  import { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from "@elementor/editor-panels";
@@ -904,7 +937,7 @@ import { ThemeProvider as ThemeProvider9 } from "@elementor/editor-ui";
904
937
  import { AtomIcon } from "@elementor/icons";
905
938
  import { SessionStorageProvider as SessionStorageProvider3 } from "@elementor/session";
906
939
  import { ErrorBoundary } from "@elementor/ui";
907
- import { __ as __46 } from "@wordpress/i18n";
940
+ import { __ as __48 } from "@wordpress/i18n";
908
941
 
909
942
  // src/controls-actions.ts
910
943
  import { createMenu } from "@elementor/menus";
@@ -960,14 +993,14 @@ function EditorPanelErrorFallback() {
960
993
  }
961
994
 
962
995
  // src/components/editing-panel-tabs.tsx
963
- import * as React69 from "react";
996
+ import * as React71 from "react";
964
997
  import { Fragment as Fragment8 } from "react";
965
998
  import { Divider as Divider6, Stack as Stack17, Tab, TabPanel, Tabs, useTabs } from "@elementor/ui";
966
- import { __ as __45 } from "@wordpress/i18n";
999
+ import { __ as __47 } from "@wordpress/i18n";
967
1000
 
968
1001
  // src/contexts/scroll-context.tsx
969
1002
  import * as React10 from "react";
970
- import { createContext as createContext4, useContext as useContext4, useEffect, useRef, useState as useState4 } from "react";
1003
+ import { createContext as createContext4, useContext as useContext4, useEffect, useRef as useRef2, useState as useState5 } from "react";
971
1004
  import { styled as styled3 } from "@elementor/ui";
972
1005
  var ScrollContext = createContext4(void 0);
973
1006
  var ScrollPanel = styled3("div")`
@@ -976,9 +1009,9 @@ var ScrollPanel = styled3("div")`
976
1009
  `;
977
1010
  var DEFAULT_SCROLL_DIRECTION = "up";
978
1011
  function ScrollProvider({ children }) {
979
- const [direction, setDirection] = useState4(DEFAULT_SCROLL_DIRECTION);
980
- const ref = useRef(null);
981
- const scrollPos = useRef(0);
1012
+ const [direction, setDirection] = useState5(DEFAULT_SCROLL_DIRECTION);
1013
+ const ref = useRef2(null);
1014
+ const scrollPos = useRef2(0);
982
1015
  useEffect(() => {
983
1016
  const scrollElement = ref.current;
984
1017
  if (!scrollElement) {
@@ -1005,13 +1038,15 @@ function useScrollDirection() {
1005
1038
  }
1006
1039
 
1007
1040
  // src/hooks/use-state-by-element.ts
1008
- import { useState as useState5 } from "react";
1041
+ import { useState as useState6 } from "react";
1042
+ import { isExperimentActive } from "@elementor/editor-v1-adapters";
1009
1043
  import { getSessionStorageItem, setSessionStorageItem } from "@elementor/session";
1010
1044
  var useStateByElement = (key, initialValue) => {
1011
1045
  const { element } = useElement();
1046
+ const isFeatureActive = isExperimentActive("e_v_3_30");
1012
1047
  const lookup = `elementor/editor-state/${element.id}/${key}`;
1013
- const storedValue = getSessionStorageItem(lookup);
1014
- const [value, setValue] = useState5(storedValue ?? initialValue);
1048
+ const storedValue = isFeatureActive ? getSessionStorageItem(lookup) : initialValue;
1049
+ const [value, setValue] = useState6(storedValue ?? initialValue);
1015
1050
  const doUpdate = (newValue) => {
1016
1051
  setSessionStorageItem(lookup, newValue);
1017
1052
  setValue(newValue);
@@ -1194,13 +1229,13 @@ var Control2 = ({ control }) => {
1194
1229
  };
1195
1230
 
1196
1231
  // src/components/style-tab.tsx
1197
- import * as React68 from "react";
1198
- import { useState as useState12 } from "react";
1232
+ import * as React70 from "react";
1233
+ import { useState as useState13 } from "react";
1199
1234
  import { CLASSES_PROP_KEY } from "@elementor/editor-props";
1200
1235
  import { useActiveBreakpoint } from "@elementor/editor-responsive";
1201
1236
  import { SessionStorageProvider as SessionStorageProvider2 } from "@elementor/session";
1202
1237
  import { Divider as Divider5, Stack as Stack16 } from "@elementor/ui";
1203
- import { __ as __44 } from "@wordpress/i18n";
1238
+ import { __ as __46 } from "@wordpress/i18n";
1204
1239
 
1205
1240
  // src/contexts/styles-inheritance-context.tsx
1206
1241
  import * as React17 from "react";
@@ -1418,10 +1453,10 @@ var useBaseStyles = () => {
1418
1453
  };
1419
1454
 
1420
1455
  // src/hooks/use-active-style-def-id.ts
1421
- import { useState as useState6 } from "react";
1456
+ import { useState as useState7 } from "react";
1422
1457
  import { getElementStyles, useElementSetting as useElementSetting5 } from "@elementor/editor-elements";
1423
1458
  function useActiveStyleDefId(classProp) {
1424
- const [activeStyledDefId, setActiveStyledDefId] = useState6(null);
1459
+ const [activeStyledDefId, setActiveStyledDefId] = useState7(null);
1425
1460
  const appliedClassesIds = useAppliedClassesIds2(classProp)?.value || [];
1426
1461
  const fallback = useFirstAppliedClass(appliedClassesIds);
1427
1462
  const activeAndAppliedClassId = useActiveAndAppliedClassId(activeStyledDefId, appliedClassesIds);
@@ -1592,32 +1627,13 @@ function useStylesField(propName) {
1592
1627
 
1593
1628
  // src/styles-inheritance/styles-inheritance-indicator.tsx
1594
1629
  import * as React19 from "react";
1595
- import { useState as useState8 } from "react";
1630
+ import { useState as useState9 } from "react";
1596
1631
  import { useBoundProp } from "@elementor/editor-controls";
1597
1632
  import { ELEMENTS_BASE_STYLES_PROVIDER_KEY, isElementsStylesProvider as isElementsStylesProvider3 } from "@elementor/editor-styles-repository";
1633
+ import { isExperimentActive as isExperimentActive2 } from "@elementor/editor-v1-adapters";
1598
1634
  import { IconButton as IconButton2, Infotip } from "@elementor/ui";
1599
1635
  import { __ as __5 } from "@wordpress/i18n";
1600
1636
 
1601
- // src/sync/get-elementor-globals.ts
1602
- var getElementorConfig = () => {
1603
- const extendedWindow = window;
1604
- return extendedWindow.elementor?.config ?? {};
1605
- };
1606
- var getElementorFrontendConfig = () => {
1607
- const extendedWindow = window;
1608
- return extendedWindow.elementorFrontend?.config ?? {};
1609
- };
1610
- var getElementorCommonConfig = () => {
1611
- const extendedWindow = window;
1612
- return extendedWindow.elementorCommon?.config ?? {};
1613
- };
1614
-
1615
- // src/sync/is-experiment-active.ts
1616
- var isExperimentActive = (experiment) => {
1617
- const allFeatures = getElementorCommonConfig()?.experimentalFeatures ?? {};
1618
- return !!allFeatures?.[experiment];
1619
- };
1620
-
1621
1637
  // src/styles-inheritance/styles-inheritance-infotip.tsx
1622
1638
  import * as React18 from "react";
1623
1639
  import { useMemo as useMemo3 } from "react";
@@ -1626,10 +1642,10 @@ import { getStylesSchema } from "@elementor/editor-styles";
1626
1642
  import { Card, CardContent, List as List2, ListItem, ListItemText as ListItemText2 } from "@elementor/ui";
1627
1643
 
1628
1644
  // src/hooks/use-normalized-inheritance-chain-items.tsx
1629
- import { useEffect as useEffect3, useState as useState7 } from "react";
1645
+ import { useEffect as useEffect3, useState as useState8 } from "react";
1630
1646
  var MAXIMUM_ITEMS = 2;
1631
1647
  var useNormalizedInheritanceChainItems = (inheritanceChain, bind, resolve) => {
1632
- const [items3, setItems] = useState7([]);
1648
+ const [items3, setItems] = useState8([]);
1633
1649
  useEffect3(() => {
1634
1650
  (async () => {
1635
1651
  const normalizedItems = await Promise.all(
@@ -1685,7 +1701,7 @@ var StyleIndicatorInfotip = ({ inheritanceChain, bind }) => {
1685
1701
 
1686
1702
  // src/styles-inheritance/styles-inheritance-indicator.tsx
1687
1703
  var StylesInheritanceIndicator = () => {
1688
- const [open, setOpen] = useState8(false);
1704
+ const [open, setOpen] = useState9(false);
1689
1705
  const { value, path } = useBoundProp();
1690
1706
  const { id: currentStyleId, provider: currentStyleProvider, meta: currentStyleMeta } = useStyle();
1691
1707
  const [bind] = path;
@@ -1702,7 +1718,7 @@ var StylesInheritanceIndicator = () => {
1702
1718
  const hasValue = value !== null && value !== void 0;
1703
1719
  const label = getLabel({ isFinalValue, hasValue });
1704
1720
  const variantType = getVariant({ isFinalValue, hasValue, currentStyleProvider });
1705
- const eIndicationsPopover = isExperimentActive("e_indications_popover");
1721
+ const eIndicationsPopover = isExperimentActive2("e_indications_popover");
1706
1722
  if (!eIndicationsPopover) {
1707
1723
  return /* @__PURE__ */ React19.createElement(StyleIndicator, { variant: variantType, "aria-label": label });
1708
1724
  }
@@ -1867,6 +1883,18 @@ import { __ as __8 } from "@wordpress/i18n";
1867
1883
 
1868
1884
  // src/hooks/use-direction.ts
1869
1885
  import { useTheme } from "@elementor/ui";
1886
+
1887
+ // src/sync/get-elementor-globals.ts
1888
+ var getElementorConfig = () => {
1889
+ const extendedWindow = window;
1890
+ return extendedWindow.elementor?.config ?? {};
1891
+ };
1892
+ var getElementorFrontendConfig = () => {
1893
+ const extendedWindow = window;
1894
+ return extendedWindow.elementorFrontend?.config ?? {};
1895
+ };
1896
+
1897
+ // src/hooks/use-direction.ts
1870
1898
  function useDirection() {
1871
1899
  const theme = useTheme();
1872
1900
  const isUiRtl = "rtl" === theme.direction, isSiteRtl = !!getElementorFrontendConfig()?.is_rtl;
@@ -2059,7 +2087,7 @@ import { __ as __11 } from "@wordpress/i18n";
2059
2087
 
2060
2088
  // src/components/style-sections/layout-section/utils/rotated-icon.tsx
2061
2089
  import * as React33 from "react";
2062
- import { useRef as useRef2 } from "react";
2090
+ import { useRef as useRef3 } from "react";
2063
2091
  import { useTheme as useTheme2 } from "@elementor/ui";
2064
2092
  var CLOCKWISE_ANGLES = {
2065
2093
  row: 0,
@@ -2080,7 +2108,7 @@ var RotatedIcon = ({
2080
2108
  offset = 0,
2081
2109
  disableRotationForReversed = false
2082
2110
  }) => {
2083
- const rotate = useRef2(useGetTargetAngle(isClockwise, offset, disableRotationForReversed));
2111
+ const rotate = useRef3(useGetTargetAngle(isClockwise, offset, disableRotationForReversed));
2084
2112
  rotate.current = useGetTargetAngle(isClockwise, offset, disableRotationForReversed, rotate);
2085
2113
  return /* @__PURE__ */ React33.createElement(Icon, { fontSize: size, sx: { transition: ".3s", rotate: `${rotate.current}deg` } });
2086
2114
  };
@@ -2287,6 +2315,7 @@ var AlignSelfChild = ({ parentStyleDirection }) => {
2287
2315
  // src/components/style-sections/layout-section/display-field.tsx
2288
2316
  import * as React37 from "react";
2289
2317
  import { ToggleControl as ToggleControl4 } from "@elementor/editor-controls";
2318
+ import { isExperimentActive as isExperimentActive3 } from "@elementor/editor-v1-adapters";
2290
2319
  import { Stack as Stack10 } from "@elementor/ui";
2291
2320
  import { __ as __14 } from "@wordpress/i18n";
2292
2321
  var displayFieldItems = [
@@ -2310,7 +2339,7 @@ var displayFieldItems = [
2310
2339
  }
2311
2340
  ];
2312
2341
  var DisplayField = () => {
2313
- const isDisplayNoneFeatureActive = isExperimentActive("e_v_3_30");
2342
+ const isDisplayNoneFeatureActive = isExperimentActive3("e_v_3_30");
2314
2343
  const items3 = [...displayFieldItems];
2315
2344
  if (isDisplayNoneFeatureActive) {
2316
2345
  items3.push({
@@ -2376,7 +2405,7 @@ var FlexDirectionField = () => {
2376
2405
 
2377
2406
  // src/components/style-sections/layout-section/flex-order-field.tsx
2378
2407
  import * as React39 from "react";
2379
- import { useState as useState9 } from "react";
2408
+ import { useState as useState10 } from "react";
2380
2409
  import { ControlToggleButtonGroup, NumberControl } from "@elementor/editor-controls";
2381
2410
  import { ArrowDownSmallIcon as ArrowDownSmallIcon2, ArrowUpSmallIcon as ArrowUpSmallIcon2, PencilIcon } from "@elementor/icons";
2382
2411
  import { DirectionProvider as DirectionProvider5, Grid as Grid6, ThemeProvider as ThemeProvider5 } from "@elementor/ui";
@@ -2412,7 +2441,7 @@ var items = [
2412
2441
  ];
2413
2442
  var FlexOrderField = () => {
2414
2443
  const { isSiteRtl } = useDirection(), [order, setOrder] = useStylesField("order");
2415
- const [groupControlValue, setGroupControlValue] = useState9(getGroupControlValue(order?.value || null));
2444
+ const [groupControlValue, setGroupControlValue] = useState10(getGroupControlValue(order?.value || null));
2416
2445
  const handleToggleButtonChange = (group) => {
2417
2446
  setGroupControlValue(group);
2418
2447
  if (!group || group === CUSTOM) {
@@ -2450,7 +2479,7 @@ var getGroupControlValue = (order) => {
2450
2479
 
2451
2480
  // src/components/style-sections/layout-section/flex-size-field.tsx
2452
2481
  import * as React40 from "react";
2453
- import { useMemo as useMemo4, useState as useState10 } from "react";
2482
+ import { useMemo as useMemo4, useState as useState11 } from "react";
2454
2483
  import {
2455
2484
  ControlToggleButtonGroup as ControlToggleButtonGroup2,
2456
2485
  NumberControl as NumberControl2,
@@ -2487,7 +2516,7 @@ var FlexSizeField = () => {
2487
2516
  const grow = fields?.["flex-grow"]?.value || null;
2488
2517
  const shrink = fields?.["flex-shrink"]?.value || null;
2489
2518
  const basis = fields?.["flex-basis"]?.value || null;
2490
- const currentGroup = useMemo4(() => getActiveGroup({ grow, shrink, basis }), [grow, shrink, basis]), [activeGroup, setActiveGroup] = useState10(currentGroup);
2519
+ const currentGroup = useMemo4(() => getActiveGroup({ grow, shrink, basis }), [grow, shrink, basis]), [activeGroup, setActiveGroup] = useState11(currentGroup);
2491
2520
  const onChangeGroup = (group = null) => {
2492
2521
  setActiveGroup(group);
2493
2522
  if (!group || group === "custom") {
@@ -2671,6 +2700,7 @@ var shouldDisplayFlexFields = (display, local) => {
2671
2700
 
2672
2701
  // src/components/style-sections/position-section/position-section.tsx
2673
2702
  import * as React49 from "react";
2703
+ import { isExperimentActive as isExperimentActive4 } from "@elementor/editor-v1-adapters";
2674
2704
  import { useSessionStorage } from "@elementor/session";
2675
2705
 
2676
2706
  // src/components/style-sections/position-section/dimensions-field.tsx
@@ -2741,7 +2771,7 @@ var PositionSection = () => {
2741
2771
  "inset-inline-end"
2742
2772
  ]);
2743
2773
  const [dimensionsValuesFromHistory, updateDimensionsHistory, clearDimensionsHistory] = usePersistDimensions();
2744
- const isCssIdFeatureActive = isExperimentActive("e_v_3_30");
2774
+ const isCssIdFeatureActive = isExperimentActive4("e_v_3_30");
2745
2775
  const onPositionChange = (newPosition, previousPosition) => {
2746
2776
  if (newPosition === "static") {
2747
2777
  if (dimensionsValues) {
@@ -2771,120 +2801,168 @@ var usePersistDimensions = () => {
2771
2801
  };
2772
2802
 
2773
2803
  // src/components/style-sections/size-section/size-section.tsx
2774
- import * as React51 from "react";
2804
+ import * as React54 from "react";
2775
2805
  import { SizeControl as SizeControl5 } from "@elementor/editor-controls";
2776
- import { Grid as Grid14, Stack as Stack14 } from "@elementor/ui";
2806
+ import { isExperimentActive as isExperimentActive5 } from "@elementor/editor-v1-adapters";
2807
+ import { Grid as Grid16, Stack as Stack15 } from "@elementor/ui";
2808
+ import { __ as __30 } from "@wordpress/i18n";
2809
+
2810
+ // src/components/collapsible-content.tsx
2811
+ import * as React50 from "react";
2812
+ import { useState as useState12 } from "react";
2813
+ import { Button, Collapse as Collapse3, Stack as Stack14 } from "@elementor/ui";
2814
+ import { __ as __26 } from "@wordpress/i18n";
2815
+ var CollapsibleContent = ({ children, defaultOpen = false }) => {
2816
+ const [open, setOpen] = useState12(defaultOpen);
2817
+ const handleToggle = () => {
2818
+ setOpen((prevOpen) => !prevOpen);
2819
+ };
2820
+ return /* @__PURE__ */ React50.createElement(Stack14, null, /* @__PURE__ */ React50.createElement(
2821
+ Button,
2822
+ {
2823
+ fullWidth: true,
2824
+ size: "small",
2825
+ color: "secondary",
2826
+ variant: "outlined",
2827
+ onClick: handleToggle,
2828
+ endIcon: /* @__PURE__ */ React50.createElement(CollapseIcon, { open }),
2829
+ sx: { my: 0.5 }
2830
+ },
2831
+ open ? __26("Show less", "elementor") : __26("Show more", "elementor")
2832
+ ), /* @__PURE__ */ React50.createElement(Collapse3, { in: open, timeout: "auto", unmountOnExit: true }, children));
2833
+ };
2834
+
2835
+ // src/components/style-sections/size-section/object-fit-field.tsx
2836
+ import * as React51 from "react";
2837
+ import { SelectControl as SelectControl4 } from "@elementor/editor-controls";
2838
+ import { Grid as Grid13 } from "@elementor/ui";
2777
2839
  import { __ as __27 } from "@wordpress/i18n";
2840
+ var positionOptions2 = [
2841
+ { label: __27("Fill", "elementor"), value: "fill" },
2842
+ { label: __27("Cover", "elementor"), value: "cover" },
2843
+ { label: __27("Contain", "elementor"), value: "contain" },
2844
+ { label: __27("None", "elementor"), value: "none" },
2845
+ { label: __27("Scale down", "elementor"), value: "scale-down" }
2846
+ ];
2847
+ var ObjectFitField = ({ onChange }) => {
2848
+ return /* @__PURE__ */ React51.createElement(StylesField, { bind: "object-fit" }, /* @__PURE__ */ React51.createElement(Grid13, { container: true, pt: 2, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React51.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(ControlLabel, null, __27("Object fit", "elementor"))), /* @__PURE__ */ React51.createElement(Grid13, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React51.createElement(SelectControl4, { options: positionOptions2, onChange }))));
2849
+ };
2850
+
2851
+ // src/components/style-sections/size-section/object-position-field.tsx
2852
+ import * as React52 from "react";
2853
+ import { SelectControl as SelectControl5 } from "@elementor/editor-controls";
2854
+ import { Grid as Grid14 } from "@elementor/ui";
2855
+ import { __ as __28 } from "@wordpress/i18n";
2856
+ var positionOptions3 = [
2857
+ { label: __28("Center center", "elementor"), value: "center center" },
2858
+ { label: __28("Center left", "elementor"), value: "center left" },
2859
+ { label: __28("Center right", "elementor"), value: "center right" },
2860
+ { label: __28("Top center", "elementor"), value: "top center" },
2861
+ { label: __28("Top left", "elementor"), value: "top left" },
2862
+ { label: __28("Top right", "elementor"), value: "top right" },
2863
+ { label: __28("Bottom center", "elementor"), value: "bottom center" },
2864
+ { label: __28("Bottom left", "elementor"), value: "bottom left" },
2865
+ { label: __28("Bottom right", "elementor"), value: "bottom right" }
2866
+ ];
2867
+ var ObjectPositionField = ({ onChange }) => {
2868
+ return /* @__PURE__ */ React52.createElement(StylesField, { bind: "object-position" }, /* @__PURE__ */ React52.createElement(Grid14, { container: true, pt: 2, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React52.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React52.createElement(ControlLabel, null, __28("Object position", "elementor"))), /* @__PURE__ */ React52.createElement(Grid14, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React52.createElement(SelectControl5, { options: positionOptions3, onChange }))));
2869
+ };
2778
2870
 
2779
2871
  // src/components/style-sections/size-section/overflow-field.tsx
2780
- import * as React50 from "react";
2872
+ import * as React53 from "react";
2781
2873
  import { ToggleControl as ToggleControl8 } from "@elementor/editor-controls";
2782
2874
  import { EyeIcon, EyeOffIcon, LetterAIcon } from "@elementor/icons";
2783
- import { Grid as Grid13 } from "@elementor/ui";
2784
- import { __ as __26 } from "@wordpress/i18n";
2875
+ import { Grid as Grid15 } from "@elementor/ui";
2876
+ import { __ as __29 } from "@wordpress/i18n";
2785
2877
  var options6 = [
2786
2878
  {
2787
2879
  value: "visible",
2788
- label: __26("Visible", "elementor"),
2789
- renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(EyeIcon, { fontSize: size }),
2880
+ label: __29("Visible", "elementor"),
2881
+ renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(EyeIcon, { fontSize: size }),
2790
2882
  showTooltip: true
2791
2883
  },
2792
2884
  {
2793
2885
  value: "hidden",
2794
- label: __26("Hidden", "elementor"),
2795
- renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(EyeOffIcon, { fontSize: size }),
2886
+ label: __29("Hidden", "elementor"),
2887
+ renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(EyeOffIcon, { fontSize: size }),
2796
2888
  showTooltip: true
2797
2889
  },
2798
2890
  {
2799
2891
  value: "auto",
2800
- label: __26("Auto", "elementor"),
2801
- renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(LetterAIcon, { fontSize: size }),
2892
+ label: __29("Auto", "elementor"),
2893
+ renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(LetterAIcon, { fontSize: size }),
2802
2894
  showTooltip: true
2803
2895
  }
2804
2896
  ];
2805
2897
  var OverflowField = () => {
2806
- return /* @__PURE__ */ React50.createElement(StylesField, { bind: "overflow" }, /* @__PURE__ */ React50.createElement(Grid13, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React50.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React50.createElement(ControlLabel, null, __26("Overflow", "elementor"))), /* @__PURE__ */ React50.createElement(Grid13, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React50.createElement(ToggleControl8, { options: options6 }))));
2898
+ return /* @__PURE__ */ React53.createElement(StylesField, { bind: "overflow" }, /* @__PURE__ */ React53.createElement(Grid15, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React53.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React53.createElement(ControlLabel, null, __29("Overflow", "elementor"))), /* @__PURE__ */ React53.createElement(Grid15, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React53.createElement(ToggleControl8, { options: options6 }))));
2807
2899
  };
2808
2900
 
2809
2901
  // src/components/style-sections/size-section/size-section.tsx
2810
2902
  var SizeSection = () => {
2811
- return /* @__PURE__ */ React51.createElement(SectionContent, null, /* @__PURE__ */ React51.createElement(Grid14, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React51.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(SizeField, { bind: "width", label: __27("Width", "elementor"), extendedValues: ["auto"] })), /* @__PURE__ */ React51.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(SizeField, { bind: "height", label: __27("Height", "elementor"), extendedValues: ["auto"] }))), /* @__PURE__ */ React51.createElement(Grid14, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React51.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(
2903
+ const [fitValue, setFitValue] = useStylesField("object-fit");
2904
+ const isNotFill = fitValue && fitValue?.value !== "fill";
2905
+ const onFitChange = (newFit, previousValue) => {
2906
+ if (newFit && newFit !== previousValue) {
2907
+ setFitValue({
2908
+ value: newFit,
2909
+ $$type: "string"
2910
+ });
2911
+ }
2912
+ };
2913
+ const isVersion330Active = isExperimentActive5("e_v_3_30");
2914
+ return /* @__PURE__ */ React54.createElement(SectionContent, null, /* @__PURE__ */ React54.createElement(Grid16, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React54.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(SizeField, { bind: "width", label: __30("Width", "elementor"), extendedValues: ["auto"] })), /* @__PURE__ */ React54.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(SizeField, { bind: "height", label: __30("Height", "elementor"), extendedValues: ["auto"] }))), /* @__PURE__ */ React54.createElement(Grid16, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React54.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(
2812
2915
  SizeField,
2813
2916
  {
2814
2917
  bind: "min-width",
2815
- label: __27("Min width", "elementor"),
2918
+ label: __30("Min width", "elementor"),
2816
2919
  extendedValues: ["auto"]
2817
2920
  }
2818
- )), /* @__PURE__ */ React51.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(
2921
+ )), /* @__PURE__ */ React54.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(
2819
2922
  SizeField,
2820
2923
  {
2821
2924
  bind: "min-height",
2822
- label: __27("Min height", "elementor"),
2925
+ label: __30("Min height", "elementor"),
2823
2926
  extendedValues: ["auto"]
2824
2927
  }
2825
- ))), /* @__PURE__ */ React51.createElement(Grid14, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React51.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(SizeField, { bind: "max-width", label: __27("Max width", "elementor") })), /* @__PURE__ */ React51.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(SizeField, { bind: "max-height", label: __27("Max height", "elementor") }))), /* @__PURE__ */ React51.createElement(PanelDivider, null), /* @__PURE__ */ React51.createElement(Stack14, null, /* @__PURE__ */ React51.createElement(OverflowField, null)));
2928
+ ))), /* @__PURE__ */ React54.createElement(Grid16, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React54.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(SizeField, { bind: "max-width", label: __30("Max width", "elementor") })), /* @__PURE__ */ React54.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(SizeField, { bind: "max-height", label: __30("Max height", "elementor") }))), /* @__PURE__ */ React54.createElement(PanelDivider, null), /* @__PURE__ */ React54.createElement(Stack15, null, /* @__PURE__ */ React54.createElement(OverflowField, null)), isVersion330Active && /* @__PURE__ */ React54.createElement(CollapsibleContent, null, /* @__PURE__ */ React54.createElement(ObjectFitField, { onChange: onFitChange }), /* @__PURE__ */ React54.createElement(Grid16, { item: true, xs: 6 }, isNotFill && /* @__PURE__ */ React54.createElement(ObjectPositionField, null))));
2826
2929
  };
2827
2930
  var SizeField = ({ label, bind, extendedValues }) => {
2828
- return /* @__PURE__ */ React51.createElement(StylesField, { bind }, /* @__PURE__ */ React51.createElement(Grid14, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React51.createElement(Grid14, { item: true, xs: 12 }, /* @__PURE__ */ React51.createElement(ControlLabel, null, label)), /* @__PURE__ */ React51.createElement(Grid14, { item: true, xs: 12 }, /* @__PURE__ */ React51.createElement(SizeControl5, { extendedValues }))));
2931
+ return /* @__PURE__ */ React54.createElement(StylesField, { bind }, /* @__PURE__ */ React54.createElement(Grid16, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React54.createElement(Grid16, { item: true, xs: 12 }, /* @__PURE__ */ React54.createElement(ControlLabel, null, label)), /* @__PURE__ */ React54.createElement(Grid16, { item: true, xs: 12 }, /* @__PURE__ */ React54.createElement(SizeControl5, { extendedValues }))));
2829
2932
  };
2830
2933
 
2831
2934
  // src/components/style-sections/spacing-section/spacing-section.tsx
2832
- import * as React52 from "react";
2935
+ import * as React55 from "react";
2833
2936
  import { LinkedDimensionsControl } from "@elementor/editor-controls";
2834
- import { __ as __28 } from "@wordpress/i18n";
2937
+ import { __ as __31 } from "@wordpress/i18n";
2835
2938
  var SpacingSection = () => {
2836
2939
  const { isSiteRtl } = useDirection();
2837
- return /* @__PURE__ */ React52.createElement(SectionContent, null, /* @__PURE__ */ React52.createElement(StylesField, { bind: "margin" }, /* @__PURE__ */ React52.createElement(
2940
+ return /* @__PURE__ */ React55.createElement(SectionContent, null, /* @__PURE__ */ React55.createElement(StylesField, { bind: "margin" }, /* @__PURE__ */ React55.createElement(
2838
2941
  LinkedDimensionsControl,
2839
2942
  {
2840
- label: __28("Margin", "elementor"),
2943
+ label: __31("Margin", "elementor"),
2841
2944
  isSiteRtl,
2842
2945
  extendedValues: ["auto"]
2843
2946
  }
2844
- )), /* @__PURE__ */ React52.createElement(PanelDivider, null), /* @__PURE__ */ React52.createElement(StylesField, { bind: "padding" }, /* @__PURE__ */ React52.createElement(LinkedDimensionsControl, { label: __28("Padding", "elementor"), isSiteRtl })));
2947
+ )), /* @__PURE__ */ React55.createElement(PanelDivider, null), /* @__PURE__ */ React55.createElement(StylesField, { bind: "padding" }, /* @__PURE__ */ React55.createElement(LinkedDimensionsControl, { label: __31("Padding", "elementor"), isSiteRtl })));
2845
2948
  };
2846
2949
 
2847
2950
  // src/components/style-sections/typography-section/typography-section.tsx
2848
- import * as React67 from "react";
2849
-
2850
- // src/components/collapsible-content.tsx
2851
- import * as React53 from "react";
2852
- import { useState as useState11 } from "react";
2853
- import { Button, Collapse as Collapse3, Stack as Stack15 } from "@elementor/ui";
2854
- import { __ as __29 } from "@wordpress/i18n";
2855
- var CollapsibleContent = ({ children, defaultOpen = false }) => {
2856
- const [open, setOpen] = useState11(defaultOpen);
2857
- const handleToggle = () => {
2858
- setOpen((prevOpen) => !prevOpen);
2859
- };
2860
- return /* @__PURE__ */ React53.createElement(Stack15, null, /* @__PURE__ */ React53.createElement(
2861
- Button,
2862
- {
2863
- fullWidth: true,
2864
- size: "small",
2865
- color: "secondary",
2866
- variant: "outlined",
2867
- onClick: handleToggle,
2868
- endIcon: /* @__PURE__ */ React53.createElement(CollapseIcon, { open }),
2869
- sx: { my: 0.5 }
2870
- },
2871
- open ? __29("Show less", "elementor") : __29("Show more", "elementor")
2872
- ), /* @__PURE__ */ React53.createElement(Collapse3, { in: open, timeout: "auto", unmountOnExit: true }, children));
2873
- };
2951
+ import * as React69 from "react";
2874
2952
 
2875
2953
  // src/components/style-sections/typography-section/font-family-field.tsx
2876
- import * as React54 from "react";
2954
+ import * as React56 from "react";
2877
2955
  import { FontFamilyControl } from "@elementor/editor-controls";
2878
- import { Grid as Grid15 } from "@elementor/ui";
2879
- import { __ as __31 } from "@wordpress/i18n";
2956
+ import { Grid as Grid17 } from "@elementor/ui";
2957
+ import { __ as __33 } from "@wordpress/i18n";
2880
2958
 
2881
2959
  // src/components/style-sections/typography-section/hooks/use-font-families.ts
2882
2960
  import { useMemo as useMemo5 } from "react";
2883
- import { __ as __30 } from "@wordpress/i18n";
2961
+ import { __ as __32 } from "@wordpress/i18n";
2884
2962
  var supportedCategories = {
2885
- system: __30("System", "elementor"),
2886
- custom: __30("Custom Fonts", "elementor"),
2887
- googlefonts: __30("Google Fonts", "elementor")
2963
+ system: __32("System", "elementor"),
2964
+ custom: __32("Custom Fonts", "elementor"),
2965
+ googlefonts: __32("Google Fonts", "elementor")
2888
2966
  };
2889
2967
  var getFontFamilies = () => {
2890
2968
  const { controls } = getElementorConfig();
@@ -2921,188 +2999,188 @@ var FontFamilyField = () => {
2921
2999
  if (fontFamilies.length === 0) {
2922
3000
  return null;
2923
3001
  }
2924
- return /* @__PURE__ */ React54.createElement(StylesField, { bind: "font-family" }, /* @__PURE__ */ React54.createElement(Grid15, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React54.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(ControlLabel, null, __31("Font family", "elementor"))), /* @__PURE__ */ React54.createElement(Grid15, { item: true, xs: 6, sx: { minWidth: 0 } }, /* @__PURE__ */ React54.createElement(FontFamilyControl, { fontFamilies }))));
3002
+ return /* @__PURE__ */ React56.createElement(StylesField, { bind: "font-family" }, /* @__PURE__ */ React56.createElement(Grid17, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React56.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(ControlLabel, null, __33("Font family", "elementor"))), /* @__PURE__ */ React56.createElement(Grid17, { item: true, xs: 6, sx: { minWidth: 0 } }, /* @__PURE__ */ React56.createElement(FontFamilyControl, { fontFamilies }))));
2925
3003
  };
2926
3004
 
2927
3005
  // src/components/style-sections/typography-section/font-size-field.tsx
2928
- import * as React55 from "react";
3006
+ import * as React57 from "react";
2929
3007
  import { SizeControl as SizeControl6 } from "@elementor/editor-controls";
2930
- import { Grid as Grid16 } from "@elementor/ui";
2931
- import { __ as __32 } from "@wordpress/i18n";
3008
+ import { Grid as Grid18 } from "@elementor/ui";
3009
+ import { __ as __34 } from "@wordpress/i18n";
2932
3010
  var FontSizeField = () => {
2933
- return /* @__PURE__ */ React55.createElement(StylesField, { bind: "font-size" }, /* @__PURE__ */ React55.createElement(Grid16, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React55.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React55.createElement(ControlLabel, null, __32("Font size", "elementor"))), /* @__PURE__ */ React55.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React55.createElement(SizeControl6, null))));
3011
+ return /* @__PURE__ */ React57.createElement(StylesField, { bind: "font-size" }, /* @__PURE__ */ React57.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React57.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React57.createElement(ControlLabel, null, __34("Font size", "elementor"))), /* @__PURE__ */ React57.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React57.createElement(SizeControl6, null))));
2934
3012
  };
2935
3013
 
2936
3014
  // src/components/style-sections/typography-section/font-style-field.tsx
2937
- import * as React56 from "react";
3015
+ import * as React58 from "react";
2938
3016
  import { ControlFormLabel as ControlFormLabel4, ToggleControl as ToggleControl9 } from "@elementor/editor-controls";
2939
3017
  import { ItalicIcon, MinusIcon as MinusIcon2 } from "@elementor/icons";
2940
- import { Grid as Grid17 } from "@elementor/ui";
2941
- import { __ as __33 } from "@wordpress/i18n";
3018
+ import { Grid as Grid19 } from "@elementor/ui";
3019
+ import { __ as __35 } from "@wordpress/i18n";
2942
3020
  var options7 = [
2943
3021
  {
2944
3022
  value: "normal",
2945
- label: __33("Normal", "elementor"),
2946
- renderContent: ({ size }) => /* @__PURE__ */ React56.createElement(MinusIcon2, { fontSize: size }),
3023
+ label: __35("Normal", "elementor"),
3024
+ renderContent: ({ size }) => /* @__PURE__ */ React58.createElement(MinusIcon2, { fontSize: size }),
2947
3025
  showTooltip: true
2948
3026
  },
2949
3027
  {
2950
3028
  value: "italic",
2951
- label: __33("Italic", "elementor"),
2952
- renderContent: ({ size }) => /* @__PURE__ */ React56.createElement(ItalicIcon, { fontSize: size }),
3029
+ label: __35("Italic", "elementor"),
3030
+ renderContent: ({ size }) => /* @__PURE__ */ React58.createElement(ItalicIcon, { fontSize: size }),
2953
3031
  showTooltip: true
2954
3032
  }
2955
3033
  ];
2956
- var FontStyleField = () => /* @__PURE__ */ React56.createElement(StylesField, { bind: "font-style" }, /* @__PURE__ */ React56.createElement(Grid17, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React56.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(ControlFormLabel4, null, __33("Font style", "elementor"))), /* @__PURE__ */ React56.createElement(Grid17, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React56.createElement(ToggleControl9, { options: options7 }))));
3034
+ var FontStyleField = () => /* @__PURE__ */ React58.createElement(StylesField, { bind: "font-style" }, /* @__PURE__ */ React58.createElement(Grid19, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React58.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React58.createElement(ControlFormLabel4, null, __35("Font style", "elementor"))), /* @__PURE__ */ React58.createElement(Grid19, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React58.createElement(ToggleControl9, { options: options7 }))));
2957
3035
 
2958
3036
  // src/components/style-sections/typography-section/font-weight-field.tsx
2959
- import * as React57 from "react";
2960
- import { SelectControl as SelectControl4 } from "@elementor/editor-controls";
2961
- import { Grid as Grid18 } from "@elementor/ui";
2962
- import { __ as __34 } from "@wordpress/i18n";
3037
+ import * as React59 from "react";
3038
+ import { SelectControl as SelectControl6 } from "@elementor/editor-controls";
3039
+ import { Grid as Grid20 } from "@elementor/ui";
3040
+ import { __ as __36 } from "@wordpress/i18n";
2963
3041
  var fontWeightOptions = [
2964
- { value: "100", label: __34("100 - Thin", "elementor") },
2965
- { value: "200", label: __34("200 - Extra light", "elementor") },
2966
- { value: "300", label: __34("300 - Light", "elementor") },
2967
- { value: "400", label: __34("400 - Normal", "elementor") },
2968
- { value: "500", label: __34("500 - Medium", "elementor") },
2969
- { value: "600", label: __34("600 - Semi bold", "elementor") },
2970
- { value: "700", label: __34("700 - Bold", "elementor") },
2971
- { value: "800", label: __34("800 - Extra bold", "elementor") },
2972
- { value: "900", label: __34("900 - Black", "elementor") }
3042
+ { value: "100", label: __36("100 - Thin", "elementor") },
3043
+ { value: "200", label: __36("200 - Extra light", "elementor") },
3044
+ { value: "300", label: __36("300 - Light", "elementor") },
3045
+ { value: "400", label: __36("400 - Normal", "elementor") },
3046
+ { value: "500", label: __36("500 - Medium", "elementor") },
3047
+ { value: "600", label: __36("600 - Semi bold", "elementor") },
3048
+ { value: "700", label: __36("700 - Bold", "elementor") },
3049
+ { value: "800", label: __36("800 - Extra bold", "elementor") },
3050
+ { value: "900", label: __36("900 - Black", "elementor") }
2973
3051
  ];
2974
3052
  var FontWeightField = () => {
2975
- return /* @__PURE__ */ React57.createElement(StylesField, { bind: "font-weight" }, /* @__PURE__ */ React57.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React57.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React57.createElement(ControlLabel, null, __34("Font weight", "elementor"))), /* @__PURE__ */ React57.createElement(Grid18, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React57.createElement(SelectControl4, { options: fontWeightOptions }))));
3053
+ return /* @__PURE__ */ React59.createElement(StylesField, { bind: "font-weight" }, /* @__PURE__ */ React59.createElement(Grid20, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React59.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React59.createElement(ControlLabel, null, __36("Font weight", "elementor"))), /* @__PURE__ */ React59.createElement(Grid20, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React59.createElement(SelectControl6, { options: fontWeightOptions }))));
2976
3054
  };
2977
3055
 
2978
3056
  // src/components/style-sections/typography-section/letter-spacing-field.tsx
2979
- import * as React58 from "react";
3057
+ import * as React60 from "react";
2980
3058
  import { SizeControl as SizeControl7 } from "@elementor/editor-controls";
2981
- import { Grid as Grid19 } from "@elementor/ui";
2982
- import { __ as __35 } from "@wordpress/i18n";
3059
+ import { Grid as Grid21 } from "@elementor/ui";
3060
+ import { __ as __37 } from "@wordpress/i18n";
2983
3061
  var LetterSpacingField = () => {
2984
- return /* @__PURE__ */ React58.createElement(StylesField, { bind: "letter-spacing" }, /* @__PURE__ */ React58.createElement(Grid19, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React58.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React58.createElement(ControlLabel, null, __35("Letter spacing", "elementor"))), /* @__PURE__ */ React58.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React58.createElement(SizeControl7, null))));
3062
+ return /* @__PURE__ */ React60.createElement(StylesField, { bind: "letter-spacing" }, /* @__PURE__ */ React60.createElement(Grid21, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React60.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React60.createElement(ControlLabel, null, __37("Letter spacing", "elementor"))), /* @__PURE__ */ React60.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React60.createElement(SizeControl7, null))));
2985
3063
  };
2986
3064
 
2987
3065
  // src/components/style-sections/typography-section/line-height-field.tsx
2988
- import * as React59 from "react";
3066
+ import * as React61 from "react";
2989
3067
  import { SizeControl as SizeControl8 } from "@elementor/editor-controls";
2990
- import { Grid as Grid20 } from "@elementor/ui";
2991
- import { __ as __36 } from "@wordpress/i18n";
3068
+ import { Grid as Grid22 } from "@elementor/ui";
3069
+ import { __ as __38 } from "@wordpress/i18n";
2992
3070
  var LineHeightField = () => {
2993
- return /* @__PURE__ */ React59.createElement(StylesField, { bind: "line-height" }, /* @__PURE__ */ React59.createElement(Grid20, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React59.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React59.createElement(ControlLabel, null, __36("Line height", "elementor"))), /* @__PURE__ */ React59.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React59.createElement(SizeControl8, null))));
3071
+ return /* @__PURE__ */ React61.createElement(StylesField, { bind: "line-height" }, /* @__PURE__ */ React61.createElement(Grid22, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React61.createElement(Grid22, { item: true, xs: 6 }, /* @__PURE__ */ React61.createElement(ControlLabel, null, __38("Line height", "elementor"))), /* @__PURE__ */ React61.createElement(Grid22, { item: true, xs: 6 }, /* @__PURE__ */ React61.createElement(SizeControl8, null))));
2994
3072
  };
2995
3073
 
2996
3074
  // src/components/style-sections/typography-section/text-alignment-field.tsx
2997
- import * as React60 from "react";
3075
+ import * as React62 from "react";
2998
3076
  import { ToggleControl as ToggleControl10 } from "@elementor/editor-controls";
2999
3077
  import { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from "@elementor/icons";
3000
- import { Grid as Grid21, withDirection as withDirection9 } from "@elementor/ui";
3001
- import { __ as __37 } from "@wordpress/i18n";
3078
+ import { Grid as Grid23, withDirection as withDirection9 } from "@elementor/ui";
3079
+ import { __ as __39 } from "@wordpress/i18n";
3002
3080
  var AlignStartIcon = withDirection9(AlignLeftIcon);
3003
3081
  var AlignEndIcon = withDirection9(AlignRightIcon);
3004
3082
  var options8 = [
3005
3083
  {
3006
3084
  value: "start",
3007
- label: __37("Start", "elementor"),
3008
- renderContent: ({ size }) => /* @__PURE__ */ React60.createElement(AlignStartIcon, { fontSize: size }),
3085
+ label: __39("Start", "elementor"),
3086
+ renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(AlignStartIcon, { fontSize: size }),
3009
3087
  showTooltip: true
3010
3088
  },
3011
3089
  {
3012
3090
  value: "center",
3013
- label: __37("Center", "elementor"),
3014
- renderContent: ({ size }) => /* @__PURE__ */ React60.createElement(AlignCenterIcon, { fontSize: size }),
3091
+ label: __39("Center", "elementor"),
3092
+ renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(AlignCenterIcon, { fontSize: size }),
3015
3093
  showTooltip: true
3016
3094
  },
3017
3095
  {
3018
3096
  value: "end",
3019
- label: __37("End", "elementor"),
3020
- renderContent: ({ size }) => /* @__PURE__ */ React60.createElement(AlignEndIcon, { fontSize: size }),
3097
+ label: __39("End", "elementor"),
3098
+ renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(AlignEndIcon, { fontSize: size }),
3021
3099
  showTooltip: true
3022
3100
  },
3023
3101
  {
3024
3102
  value: "justify",
3025
- label: __37("Justify", "elementor"),
3026
- renderContent: ({ size }) => /* @__PURE__ */ React60.createElement(AlignJustifiedIcon, { fontSize: size }),
3103
+ label: __39("Justify", "elementor"),
3104
+ renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(AlignJustifiedIcon, { fontSize: size }),
3027
3105
  showTooltip: true
3028
3106
  }
3029
3107
  ];
3030
3108
  var TextAlignmentField = () => {
3031
- return /* @__PURE__ */ React60.createElement(StylesField, { bind: "text-align" }, /* @__PURE__ */ React60.createElement(Grid21, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React60.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React60.createElement(ControlLabel, null, __37("Text align", "elementor"))), /* @__PURE__ */ React60.createElement(Grid21, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React60.createElement(ToggleControl10, { options: options8 }))));
3109
+ return /* @__PURE__ */ React62.createElement(StylesField, { bind: "text-align" }, /* @__PURE__ */ React62.createElement(Grid23, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React62.createElement(Grid23, { item: true, xs: 6 }, /* @__PURE__ */ React62.createElement(ControlLabel, null, __39("Text align", "elementor"))), /* @__PURE__ */ React62.createElement(Grid23, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React62.createElement(ToggleControl10, { options: options8 }))));
3032
3110
  };
3033
3111
 
3034
3112
  // src/components/style-sections/typography-section/text-color-field.tsx
3035
- import * as React61 from "react";
3113
+ import * as React63 from "react";
3036
3114
  import { ColorControl as ColorControl2 } from "@elementor/editor-controls";
3037
- import { Grid as Grid22 } from "@elementor/ui";
3038
- import { __ as __38 } from "@wordpress/i18n";
3115
+ import { Grid as Grid24 } from "@elementor/ui";
3116
+ import { __ as __40 } from "@wordpress/i18n";
3039
3117
  var TextColorField = () => {
3040
- return /* @__PURE__ */ React61.createElement(StylesField, { bind: "color" }, /* @__PURE__ */ React61.createElement(Grid22, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React61.createElement(Grid22, { item: true, xs: 6 }, /* @__PURE__ */ React61.createElement(ControlLabel, null, __38("Text color", "elementor"))), /* @__PURE__ */ React61.createElement(Grid22, { item: true, xs: 6 }, /* @__PURE__ */ React61.createElement(ColorControl2, null))));
3118
+ return /* @__PURE__ */ React63.createElement(StylesField, { bind: "color" }, /* @__PURE__ */ React63.createElement(Grid24, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React63.createElement(Grid24, { item: true, xs: 6 }, /* @__PURE__ */ React63.createElement(ControlLabel, null, __40("Text color", "elementor"))), /* @__PURE__ */ React63.createElement(Grid24, { item: true, xs: 6 }, /* @__PURE__ */ React63.createElement(ColorControl2, null))));
3041
3119
  };
3042
3120
 
3043
3121
  // src/components/style-sections/typography-section/text-decoration-field.tsx
3044
- import * as React62 from "react";
3122
+ import * as React64 from "react";
3045
3123
  import { ToggleControl as ToggleControl11 } from "@elementor/editor-controls";
3046
3124
  import { MinusIcon as MinusIcon3, OverlineIcon, StrikethroughIcon, UnderlineIcon } from "@elementor/icons";
3047
- import { Grid as Grid23 } from "@elementor/ui";
3048
- import { __ as __39 } from "@wordpress/i18n";
3125
+ import { Grid as Grid25 } from "@elementor/ui";
3126
+ import { __ as __41 } from "@wordpress/i18n";
3049
3127
  var options9 = [
3050
3128
  {
3051
3129
  value: "none",
3052
- label: __39("None", "elementor"),
3053
- renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(MinusIcon3, { fontSize: size }),
3130
+ label: __41("None", "elementor"),
3131
+ renderContent: ({ size }) => /* @__PURE__ */ React64.createElement(MinusIcon3, { fontSize: size }),
3054
3132
  showTooltip: true,
3055
3133
  exclusive: true
3056
3134
  },
3057
3135
  {
3058
3136
  value: "underline",
3059
- label: __39("Underline", "elementor"),
3060
- renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(UnderlineIcon, { fontSize: size }),
3137
+ label: __41("Underline", "elementor"),
3138
+ renderContent: ({ size }) => /* @__PURE__ */ React64.createElement(UnderlineIcon, { fontSize: size }),
3061
3139
  showTooltip: true
3062
3140
  },
3063
3141
  {
3064
3142
  value: "line-through",
3065
- label: __39("Line-through", "elementor"),
3066
- renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(StrikethroughIcon, { fontSize: size }),
3143
+ label: __41("Line-through", "elementor"),
3144
+ renderContent: ({ size }) => /* @__PURE__ */ React64.createElement(StrikethroughIcon, { fontSize: size }),
3067
3145
  showTooltip: true
3068
3146
  },
3069
3147
  {
3070
3148
  value: "overline",
3071
- label: __39("Overline", "elementor"),
3072
- renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(OverlineIcon, { fontSize: size }),
3149
+ label: __41("Overline", "elementor"),
3150
+ renderContent: ({ size }) => /* @__PURE__ */ React64.createElement(OverlineIcon, { fontSize: size }),
3073
3151
  showTooltip: true
3074
3152
  }
3075
3153
  ];
3076
- var TextDecorationField = () => /* @__PURE__ */ React62.createElement(StylesField, { bind: "text-decoration" }, /* @__PURE__ */ React62.createElement(Grid23, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React62.createElement(Grid23, { item: true, xs: 6 }, /* @__PURE__ */ React62.createElement(ControlLabel, null, __39("Line decoration", "elementor"))), /* @__PURE__ */ React62.createElement(Grid23, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React62.createElement(ToggleControl11, { options: options9, exclusive: false }))));
3154
+ var TextDecorationField = () => /* @__PURE__ */ React64.createElement(StylesField, { bind: "text-decoration" }, /* @__PURE__ */ React64.createElement(Grid25, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React64.createElement(Grid25, { item: true, xs: 6 }, /* @__PURE__ */ React64.createElement(ControlLabel, null, __41("Line decoration", "elementor"))), /* @__PURE__ */ React64.createElement(Grid25, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React64.createElement(ToggleControl11, { options: options9, exclusive: false }))));
3077
3155
 
3078
3156
  // src/components/style-sections/typography-section/text-direction-field.tsx
3079
- import * as React63 from "react";
3157
+ import * as React65 from "react";
3080
3158
  import { ToggleControl as ToggleControl12 } from "@elementor/editor-controls";
3081
3159
  import { TextDirectionLtrIcon, TextDirectionRtlIcon } from "@elementor/icons";
3082
- import { Grid as Grid24 } from "@elementor/ui";
3083
- import { __ as __40 } from "@wordpress/i18n";
3160
+ import { Grid as Grid26 } from "@elementor/ui";
3161
+ import { __ as __42 } from "@wordpress/i18n";
3084
3162
  var options10 = [
3085
3163
  {
3086
3164
  value: "ltr",
3087
- label: __40("Left to right", "elementor"),
3088
- renderContent: ({ size }) => /* @__PURE__ */ React63.createElement(TextDirectionLtrIcon, { fontSize: size }),
3165
+ label: __42("Left to right", "elementor"),
3166
+ renderContent: ({ size }) => /* @__PURE__ */ React65.createElement(TextDirectionLtrIcon, { fontSize: size }),
3089
3167
  showTooltip: true
3090
3168
  },
3091
3169
  {
3092
3170
  value: "rtl",
3093
- label: __40("Right to left", "elementor"),
3094
- renderContent: ({ size }) => /* @__PURE__ */ React63.createElement(TextDirectionRtlIcon, { fontSize: size }),
3171
+ label: __42("Right to left", "elementor"),
3172
+ renderContent: ({ size }) => /* @__PURE__ */ React65.createElement(TextDirectionRtlIcon, { fontSize: size }),
3095
3173
  showTooltip: true
3096
3174
  }
3097
3175
  ];
3098
3176
  var TextDirectionField = () => {
3099
- return /* @__PURE__ */ React63.createElement(StylesField, { bind: "direction" }, /* @__PURE__ */ React63.createElement(Grid24, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React63.createElement(Grid24, { item: true, xs: 6 }, /* @__PURE__ */ React63.createElement(ControlLabel, null, __40("Direction", "elementor"))), /* @__PURE__ */ React63.createElement(Grid24, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React63.createElement(ToggleControl12, { options: options10 }))));
3177
+ return /* @__PURE__ */ React65.createElement(StylesField, { bind: "direction" }, /* @__PURE__ */ React65.createElement(Grid26, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React65.createElement(Grid26, { item: true, xs: 6 }, /* @__PURE__ */ React65.createElement(ControlLabel, null, __42("Direction", "elementor"))), /* @__PURE__ */ React65.createElement(Grid26, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React65.createElement(ToggleControl12, { options: options10 }))));
3100
3178
  };
3101
3179
 
3102
3180
  // src/components/style-sections/typography-section/text-stroke-field.tsx
3103
- import * as React64 from "react";
3181
+ import * as React66 from "react";
3104
3182
  import { StrokeControl } from "@elementor/editor-controls";
3105
- import { __ as __41 } from "@wordpress/i18n";
3183
+ import { __ as __43 } from "@wordpress/i18n";
3106
3184
  var initTextStroke = {
3107
3185
  $$type: "stroke",
3108
3186
  value: {
@@ -3128,64 +3206,64 @@ var TextStrokeField = () => {
3128
3206
  setTextStroke(null);
3129
3207
  };
3130
3208
  const hasTextStroke = Boolean(textStroke);
3131
- return /* @__PURE__ */ React64.createElement(StylesField, { bind: "stroke" }, /* @__PURE__ */ React64.createElement(
3209
+ return /* @__PURE__ */ React66.createElement(StylesField, { bind: "stroke" }, /* @__PURE__ */ React66.createElement(
3132
3210
  AddOrRemoveContent,
3133
3211
  {
3134
- label: __41("Text stroke", "elementor"),
3212
+ label: __43("Text stroke", "elementor"),
3135
3213
  isAdded: hasTextStroke,
3136
3214
  onAdd: addTextStroke,
3137
3215
  onRemove: removeTextStroke
3138
3216
  },
3139
- /* @__PURE__ */ React64.createElement(StrokeControl, null)
3217
+ /* @__PURE__ */ React66.createElement(StrokeControl, null)
3140
3218
  ));
3141
3219
  };
3142
3220
 
3143
3221
  // src/components/style-sections/typography-section/transform-field.tsx
3144
- import * as React65 from "react";
3222
+ import * as React67 from "react";
3145
3223
  import { ToggleControl as ToggleControl13 } from "@elementor/editor-controls";
3146
3224
  import { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon, MinusIcon as MinusIcon4 } from "@elementor/icons";
3147
- import { Grid as Grid25 } from "@elementor/ui";
3148
- import { __ as __42 } from "@wordpress/i18n";
3225
+ import { Grid as Grid27 } from "@elementor/ui";
3226
+ import { __ as __44 } from "@wordpress/i18n";
3149
3227
  var options11 = [
3150
3228
  {
3151
3229
  value: "none",
3152
- label: __42("None", "elementor"),
3153
- renderContent: ({ size }) => /* @__PURE__ */ React65.createElement(MinusIcon4, { fontSize: size }),
3230
+ label: __44("None", "elementor"),
3231
+ renderContent: ({ size }) => /* @__PURE__ */ React67.createElement(MinusIcon4, { fontSize: size }),
3154
3232
  showTooltip: true
3155
3233
  },
3156
3234
  {
3157
3235
  value: "capitalize",
3158
- label: __42("Capitalize", "elementor"),
3159
- renderContent: ({ size }) => /* @__PURE__ */ React65.createElement(LetterCaseIcon, { fontSize: size }),
3236
+ label: __44("Capitalize", "elementor"),
3237
+ renderContent: ({ size }) => /* @__PURE__ */ React67.createElement(LetterCaseIcon, { fontSize: size }),
3160
3238
  showTooltip: true
3161
3239
  },
3162
3240
  {
3163
3241
  value: "uppercase",
3164
- label: __42("Uppercase", "elementor"),
3165
- renderContent: ({ size }) => /* @__PURE__ */ React65.createElement(LetterCaseUpperIcon, { fontSize: size }),
3242
+ label: __44("Uppercase", "elementor"),
3243
+ renderContent: ({ size }) => /* @__PURE__ */ React67.createElement(LetterCaseUpperIcon, { fontSize: size }),
3166
3244
  showTooltip: true
3167
3245
  },
3168
3246
  {
3169
3247
  value: "lowercase",
3170
- label: __42("Lowercase", "elementor"),
3171
- renderContent: ({ size }) => /* @__PURE__ */ React65.createElement(LetterCaseLowerIcon, { fontSize: size }),
3248
+ label: __44("Lowercase", "elementor"),
3249
+ renderContent: ({ size }) => /* @__PURE__ */ React67.createElement(LetterCaseLowerIcon, { fontSize: size }),
3172
3250
  showTooltip: true
3173
3251
  }
3174
3252
  ];
3175
- var TransformField = () => /* @__PURE__ */ React65.createElement(StylesField, { bind: "text-transform" }, /* @__PURE__ */ React65.createElement(Grid25, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React65.createElement(Grid25, { item: true, xs: 6 }, /* @__PURE__ */ React65.createElement(ControlLabel, null, __42("Text transform", "elementor"))), /* @__PURE__ */ React65.createElement(Grid25, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React65.createElement(ToggleControl13, { options: options11 }))));
3253
+ var TransformField = () => /* @__PURE__ */ React67.createElement(StylesField, { bind: "text-transform" }, /* @__PURE__ */ React67.createElement(Grid27, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React67.createElement(Grid27, { item: true, xs: 6 }, /* @__PURE__ */ React67.createElement(ControlLabel, null, __44("Text transform", "elementor"))), /* @__PURE__ */ React67.createElement(Grid27, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React67.createElement(ToggleControl13, { options: options11 }))));
3176
3254
 
3177
3255
  // src/components/style-sections/typography-section/word-spacing-field.tsx
3178
- import * as React66 from "react";
3256
+ import * as React68 from "react";
3179
3257
  import { SizeControl as SizeControl9 } from "@elementor/editor-controls";
3180
- import { Grid as Grid26 } from "@elementor/ui";
3181
- import { __ as __43 } from "@wordpress/i18n";
3258
+ import { Grid as Grid28 } from "@elementor/ui";
3259
+ import { __ as __45 } from "@wordpress/i18n";
3182
3260
  var WordSpacingField = () => {
3183
- return /* @__PURE__ */ React66.createElement(StylesField, { bind: "word-spacing" }, /* @__PURE__ */ React66.createElement(Grid26, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React66.createElement(Grid26, { item: true, xs: 6 }, /* @__PURE__ */ React66.createElement(ControlLabel, null, __43("Word spacing", "elementor"))), /* @__PURE__ */ React66.createElement(Grid26, { item: true, xs: 6 }, /* @__PURE__ */ React66.createElement(SizeControl9, null))));
3261
+ return /* @__PURE__ */ React68.createElement(StylesField, { bind: "word-spacing" }, /* @__PURE__ */ React68.createElement(Grid28, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React68.createElement(Grid28, { item: true, xs: 6 }, /* @__PURE__ */ React68.createElement(ControlLabel, null, __45("Word spacing", "elementor"))), /* @__PURE__ */ React68.createElement(Grid28, { item: true, xs: 6 }, /* @__PURE__ */ React68.createElement(SizeControl9, null))));
3184
3262
  };
3185
3263
 
3186
3264
  // src/components/style-sections/typography-section/typography-section.tsx
3187
3265
  var TypographySection = () => {
3188
- return /* @__PURE__ */ React67.createElement(SectionContent, null, /* @__PURE__ */ React67.createElement(FontFamilyField, null), /* @__PURE__ */ React67.createElement(FontWeightField, null), /* @__PURE__ */ React67.createElement(FontSizeField, null), /* @__PURE__ */ React67.createElement(PanelDivider, null), /* @__PURE__ */ React67.createElement(TextAlignmentField, null), /* @__PURE__ */ React67.createElement(TextColorField, null), /* @__PURE__ */ React67.createElement(CollapsibleContent, null, /* @__PURE__ */ React67.createElement(SectionContent, { sx: { pt: 2 } }, /* @__PURE__ */ React67.createElement(LineHeightField, null), /* @__PURE__ */ React67.createElement(LetterSpacingField, null), /* @__PURE__ */ React67.createElement(WordSpacingField, null), /* @__PURE__ */ React67.createElement(PanelDivider, null), /* @__PURE__ */ React67.createElement(TextDecorationField, null), /* @__PURE__ */ React67.createElement(TransformField, null), /* @__PURE__ */ React67.createElement(TextDirectionField, null), /* @__PURE__ */ React67.createElement(FontStyleField, null), /* @__PURE__ */ React67.createElement(TextStrokeField, null))));
3266
+ return /* @__PURE__ */ React69.createElement(SectionContent, null, /* @__PURE__ */ React69.createElement(FontFamilyField, null), /* @__PURE__ */ React69.createElement(FontWeightField, null), /* @__PURE__ */ React69.createElement(FontSizeField, null), /* @__PURE__ */ React69.createElement(PanelDivider, null), /* @__PURE__ */ React69.createElement(TextAlignmentField, null), /* @__PURE__ */ React69.createElement(TextColorField, null), /* @__PURE__ */ React69.createElement(CollapsibleContent, null, /* @__PURE__ */ React69.createElement(SectionContent, { sx: { pt: 2 } }, /* @__PURE__ */ React69.createElement(LineHeightField, null), /* @__PURE__ */ React69.createElement(LetterSpacingField, null), /* @__PURE__ */ React69.createElement(WordSpacingField, null), /* @__PURE__ */ React69.createElement(PanelDivider, null), /* @__PURE__ */ React69.createElement(TextDecorationField, null), /* @__PURE__ */ React69.createElement(TransformField, null), /* @__PURE__ */ React69.createElement(TextDirectionField, null), /* @__PURE__ */ React69.createElement(FontStyleField, null), /* @__PURE__ */ React69.createElement(TextStrokeField, null))));
3189
3267
  };
3190
3268
 
3191
3269
  // src/components/style-tab.tsx
@@ -3200,9 +3278,9 @@ var stickyHeaderStyles = {
3200
3278
  var StyleTab = () => {
3201
3279
  const currentClassesProp = useCurrentClassesProp();
3202
3280
  const [activeStyleDefId, setActiveStyleDefId] = useActiveStyleDefId(currentClassesProp);
3203
- const [activeStyleState, setActiveStyleState] = useState12(null);
3281
+ const [activeStyleState, setActiveStyleState] = useState13(null);
3204
3282
  const breakpoint = useActiveBreakpoint();
3205
- return /* @__PURE__ */ React68.createElement(ClassesPropProvider, { prop: currentClassesProp }, /* @__PURE__ */ React68.createElement(
3283
+ return /* @__PURE__ */ React70.createElement(ClassesPropProvider, { prop: currentClassesProp }, /* @__PURE__ */ React70.createElement(
3206
3284
  StyleProvider,
3207
3285
  {
3208
3286
  meta: { breakpoint, state: activeStyleState },
@@ -3213,12 +3291,12 @@ var StyleTab = () => {
3213
3291
  },
3214
3292
  setMetaState: setActiveStyleState
3215
3293
  },
3216
- /* @__PURE__ */ React68.createElement(SessionStorageProvider2, { prefix: activeStyleDefId ?? "" }, /* @__PURE__ */ React68.createElement(StyleInheritanceProvider, null, /* @__PURE__ */ React68.createElement(ClassesHeader, null, /* @__PURE__ */ React68.createElement(CssClassSelector, null), /* @__PURE__ */ React68.createElement(Divider5, null)), /* @__PURE__ */ React68.createElement(SectionsList, null, /* @__PURE__ */ React68.createElement(Section, { title: __44("Layout", "elementor") }, /* @__PURE__ */ React68.createElement(LayoutSection, null)), /* @__PURE__ */ React68.createElement(Section, { title: __44("Spacing", "elementor") }, /* @__PURE__ */ React68.createElement(SpacingSection, null)), /* @__PURE__ */ React68.createElement(Section, { title: __44("Size", "elementor") }, /* @__PURE__ */ React68.createElement(SizeSection, null)), /* @__PURE__ */ React68.createElement(Section, { title: __44("Position", "elementor") }, /* @__PURE__ */ React68.createElement(PositionSection, null)), /* @__PURE__ */ React68.createElement(Section, { title: __44("Typography", "elementor") }, /* @__PURE__ */ React68.createElement(TypographySection, null)), /* @__PURE__ */ React68.createElement(Section, { title: __44("Background", "elementor") }, /* @__PURE__ */ React68.createElement(BackgroundSection, null)), /* @__PURE__ */ React68.createElement(Section, { title: __44("Border", "elementor") }, /* @__PURE__ */ React68.createElement(BorderSection, null)), /* @__PURE__ */ React68.createElement(Section, { title: __44("Effects", "elementor") }, /* @__PURE__ */ React68.createElement(EffectsSection, null)))))
3294
+ /* @__PURE__ */ React70.createElement(SessionStorageProvider2, { prefix: activeStyleDefId ?? "" }, /* @__PURE__ */ React70.createElement(StyleInheritanceProvider, null, /* @__PURE__ */ React70.createElement(ClassesHeader, null, /* @__PURE__ */ React70.createElement(CssClassSelector, null), /* @__PURE__ */ React70.createElement(Divider5, null)), /* @__PURE__ */ React70.createElement(SectionsList, null, /* @__PURE__ */ React70.createElement(Section, { title: __46("Layout", "elementor") }, /* @__PURE__ */ React70.createElement(LayoutSection, null)), /* @__PURE__ */ React70.createElement(Section, { title: __46("Spacing", "elementor") }, /* @__PURE__ */ React70.createElement(SpacingSection, null)), /* @__PURE__ */ React70.createElement(Section, { title: __46("Size", "elementor") }, /* @__PURE__ */ React70.createElement(SizeSection, null)), /* @__PURE__ */ React70.createElement(Section, { title: __46("Position", "elementor") }, /* @__PURE__ */ React70.createElement(PositionSection, null)), /* @__PURE__ */ React70.createElement(Section, { title: __46("Typography", "elementor") }, /* @__PURE__ */ React70.createElement(TypographySection, null)), /* @__PURE__ */ React70.createElement(Section, { title: __46("Background", "elementor") }, /* @__PURE__ */ React70.createElement(BackgroundSection, null)), /* @__PURE__ */ React70.createElement(Section, { title: __46("Border", "elementor") }, /* @__PURE__ */ React70.createElement(BorderSection, null)), /* @__PURE__ */ React70.createElement(Section, { title: __46("Effects", "elementor") }, /* @__PURE__ */ React70.createElement(EffectsSection, null)))))
3217
3295
  ));
3218
3296
  };
3219
3297
  function ClassesHeader({ children }) {
3220
3298
  const scrollDirection = useScrollDirection();
3221
- return /* @__PURE__ */ React68.createElement(Stack16, { sx: { ...stickyHeaderStyles, top: scrollDirection === "up" ? TABS_HEADER_HEIGHT : 0 } }, children);
3299
+ return /* @__PURE__ */ React70.createElement(Stack16, { sx: { ...stickyHeaderStyles, top: scrollDirection === "up" ? TABS_HEADER_HEIGHT : 0 } }, children);
3222
3300
  }
3223
3301
  function useCurrentClassesProp() {
3224
3302
  const { elementType } = useElement();
@@ -3237,14 +3315,14 @@ var EditingPanelTabs = () => {
3237
3315
  return (
3238
3316
  // When switching between elements, the local states should be reset. We are using key to rerender the tabs.
3239
3317
  // Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key
3240
- /* @__PURE__ */ React69.createElement(Fragment8, { key: element.id }, /* @__PURE__ */ React69.createElement(PanelTabContent, null))
3318
+ /* @__PURE__ */ React71.createElement(Fragment8, { key: element.id }, /* @__PURE__ */ React71.createElement(PanelTabContent, null))
3241
3319
  );
3242
3320
  };
3243
3321
  var PanelTabContent = () => {
3244
3322
  const defaultComponentTab = "settings";
3245
3323
  const [currentTab, setCurrentTab] = useStateByElement("tab", defaultComponentTab);
3246
3324
  const { getTabProps, getTabPanelProps, getTabsProps } = useTabs(currentTab);
3247
- return /* @__PURE__ */ React69.createElement(ScrollProvider, null, /* @__PURE__ */ React69.createElement(Stack17, { direction: "column", sx: { width: "100%" } }, /* @__PURE__ */ React69.createElement(Stack17, { sx: { ...stickyHeaderStyles, top: 0 } }, /* @__PURE__ */ React69.createElement(
3325
+ return /* @__PURE__ */ React71.createElement(ScrollProvider, null, /* @__PURE__ */ React71.createElement(Stack17, { direction: "column", sx: { width: "100%" } }, /* @__PURE__ */ React71.createElement(Stack17, { sx: { ...stickyHeaderStyles, top: 0 } }, /* @__PURE__ */ React71.createElement(
3248
3326
  Tabs,
3249
3327
  {
3250
3328
  variant: "fullWidth",
@@ -3256,9 +3334,9 @@ var PanelTabContent = () => {
3256
3334
  setCurrentTab(newValue);
3257
3335
  }
3258
3336
  },
3259
- /* @__PURE__ */ React69.createElement(Tab, { label: __45("General", "elementor"), ...getTabProps("settings") }),
3260
- /* @__PURE__ */ React69.createElement(Tab, { label: __45("Style", "elementor"), ...getTabProps("style") })
3261
- ), /* @__PURE__ */ React69.createElement(Divider6, null)), /* @__PURE__ */ React69.createElement(TabPanel, { ...getTabPanelProps("settings"), disablePadding: true }, /* @__PURE__ */ React69.createElement(SettingsTab, null)), /* @__PURE__ */ React69.createElement(TabPanel, { ...getTabPanelProps("style"), disablePadding: true }, /* @__PURE__ */ React69.createElement(StyleTab, null))));
3337
+ /* @__PURE__ */ React71.createElement(Tab, { label: __47("General", "elementor"), ...getTabProps("settings") }),
3338
+ /* @__PURE__ */ React71.createElement(Tab, { label: __47("Style", "elementor"), ...getTabProps("style") })
3339
+ ), /* @__PURE__ */ React71.createElement(Divider6, null)), /* @__PURE__ */ React71.createElement(TabPanel, { ...getTabPanelProps("settings"), disablePadding: true }, /* @__PURE__ */ React71.createElement(SettingsTab, null)), /* @__PURE__ */ React71.createElement(TabPanel, { ...getTabPanelProps("style"), disablePadding: true }, /* @__PURE__ */ React71.createElement(StyleTab, null))));
3262
3340
  };
3263
3341
 
3264
3342
  // src/components/editing-panel.tsx
@@ -3270,8 +3348,8 @@ var EditingPanel = () => {
3270
3348
  if (!element || !elementType) {
3271
3349
  return null;
3272
3350
  }
3273
- const panelTitle = __46("Edit %s", "elementor").replace("%s", elementType.title);
3274
- return /* @__PURE__ */ React70.createElement(ErrorBoundary, { fallback: /* @__PURE__ */ React70.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React70.createElement(SessionStorageProvider3, { prefix: "elementor" }, /* @__PURE__ */ React70.createElement(ThemeProvider9, null, /* @__PURE__ */ React70.createElement(Panel, null, /* @__PURE__ */ React70.createElement(PanelHeader, null, /* @__PURE__ */ React70.createElement(PanelHeaderTitle, null, panelTitle), /* @__PURE__ */ React70.createElement(AtomIcon, { fontSize: "small", sx: { color: "text.tertiary" } })), /* @__PURE__ */ React70.createElement(PanelBody, null, /* @__PURE__ */ React70.createElement(ControlActionsProvider, { items: menuItems }, /* @__PURE__ */ React70.createElement(ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React70.createElement(ElementProvider, { element, elementType }, /* @__PURE__ */ React70.createElement(EditingPanelTabs, null)))))))));
3351
+ const panelTitle = __48("Edit %s", "elementor").replace("%s", elementType.title);
3352
+ return /* @__PURE__ */ React72.createElement(ErrorBoundary, { fallback: /* @__PURE__ */ React72.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React72.createElement(SessionStorageProvider3, { prefix: "elementor" }, /* @__PURE__ */ React72.createElement(ThemeProvider9, null, /* @__PURE__ */ React72.createElement(Panel, null, /* @__PURE__ */ React72.createElement(PanelHeader, null, /* @__PURE__ */ React72.createElement(PanelHeaderTitle, null, panelTitle), /* @__PURE__ */ React72.createElement(AtomIcon, { fontSize: "small", sx: { color: "text.tertiary" } })), /* @__PURE__ */ React72.createElement(PanelBody, null, /* @__PURE__ */ React72.createElement(ControlActionsProvider, { items: menuItems }, /* @__PURE__ */ React72.createElement(ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React72.createElement(ElementProvider, { element, elementType }, /* @__PURE__ */ React72.createElement(EditingPanelTabs, null)))))))));
3275
3353
  };
3276
3354
 
3277
3355
  // src/panel.ts
@@ -3323,7 +3401,7 @@ var EditingPanelHooks = () => {
3323
3401
  import { settingsTransformersRegistry, styleTransformersRegistry as styleTransformersRegistry2 } from "@elementor/editor-canvas";
3324
3402
 
3325
3403
  // src/dynamics/components/dynamic-selection-control.tsx
3326
- import * as React74 from "react";
3404
+ import * as React76 from "react";
3327
3405
  import { ControlFormLabel as ControlFormLabel5, useBoundProp as useBoundProp5 } from "@elementor/editor-controls";
3328
3406
  import { DatabaseIcon as DatabaseIcon2, SettingsIcon, XIcon as XIcon2 } from "@elementor/icons";
3329
3407
  import {
@@ -3331,7 +3409,7 @@ import {
3331
3409
  bindTrigger as bindTrigger2,
3332
3410
  Box as Box5,
3333
3411
  Divider as Divider8,
3334
- Grid as Grid27,
3412
+ Grid as Grid29,
3335
3413
  IconButton as IconButton4,
3336
3414
  Paper,
3337
3415
  Popover as Popover2,
@@ -3344,12 +3422,12 @@ import {
3344
3422
  usePopupState as usePopupState3,
3345
3423
  useTabs as useTabs2
3346
3424
  } from "@elementor/ui";
3347
- import { __ as __48 } from "@wordpress/i18n";
3425
+ import { __ as __50 } from "@wordpress/i18n";
3348
3426
 
3349
3427
  // src/components/popover-content.tsx
3350
- import * as React71 from "react";
3428
+ import * as React73 from "react";
3351
3429
  import { Stack as Stack18 } from "@elementor/ui";
3352
- var PopoverContent = ({ alignItems, gap = 1.5, p, children }) => /* @__PURE__ */ React71.createElement(Stack18, { alignItems, gap, p }, children);
3430
+ var PopoverContent = ({ alignItems, gap = 1.5, p, children }) => /* @__PURE__ */ React73.createElement(Stack18, { alignItems, gap, p }, children);
3353
3431
 
3354
3432
  // src/hooks/use-persist-dynamic-value.ts
3355
3433
  import { useSessionStorage as useSessionStorage2 } from "@elementor/session";
@@ -3360,7 +3438,7 @@ var usePersistDynamicValue = (propKey) => {
3360
3438
  };
3361
3439
 
3362
3440
  // src/dynamics/dynamic-control.tsx
3363
- import * as React72 from "react";
3441
+ import * as React74 from "react";
3364
3442
  import { PropKeyProvider as PropKeyProvider3, PropProvider as PropProvider3, useBoundProp as useBoundProp3 } from "@elementor/editor-controls";
3365
3443
 
3366
3444
  // src/dynamics/hooks/use-dynamic-tag.ts
@@ -3462,12 +3540,12 @@ var DynamicControl = ({ bind, children }) => {
3462
3540
  });
3463
3541
  };
3464
3542
  const propType = createTopLevelOjectType({ schema: dynamicTag.props_schema });
3465
- return /* @__PURE__ */ React72.createElement(PropProvider3, { propType, setValue: setDynamicValue, value: { [bind]: dynamicValue } }, /* @__PURE__ */ React72.createElement(PropKeyProvider3, { bind }, children));
3543
+ return /* @__PURE__ */ React74.createElement(PropProvider3, { propType, setValue: setDynamicValue, value: { [bind]: dynamicValue } }, /* @__PURE__ */ React74.createElement(PropKeyProvider3, { bind }, children));
3466
3544
  };
3467
3545
 
3468
3546
  // src/dynamics/components/dynamic-selection.tsx
3469
- import * as React73 from "react";
3470
- import { Fragment as Fragment9, useState as useState13 } from "react";
3547
+ import * as React75 from "react";
3548
+ import { Fragment as Fragment9, useState as useState14 } from "react";
3471
3549
  import { useBoundProp as useBoundProp4 } from "@elementor/editor-controls";
3472
3550
  import { DatabaseIcon, SearchIcon } from "@elementor/icons";
3473
3551
  import {
@@ -3482,10 +3560,10 @@ import {
3482
3560
  TextField as TextField2,
3483
3561
  Typography as Typography4
3484
3562
  } from "@elementor/ui";
3485
- import { __ as __47 } from "@wordpress/i18n";
3563
+ import { __ as __49 } from "@wordpress/i18n";
3486
3564
  var SIZE3 = "tiny";
3487
3565
  var DynamicSelection = ({ onSelect }) => {
3488
- const [searchValue, setSearchValue] = useState13("");
3566
+ const [searchValue, setSearchValue] = useState14("");
3489
3567
  const { groups: dynamicGroups } = getAtomicDynamicTags() || {};
3490
3568
  const { value: anyValue } = useBoundProp4();
3491
3569
  const { bind, value: dynamicValue, setValue } = useBoundProp4(dynamicPropTypeUtil);
@@ -3503,19 +3581,19 @@ var DynamicSelection = ({ onSelect }) => {
3503
3581
  setValue({ name: value, settings: { label } });
3504
3582
  onSelect?.();
3505
3583
  };
3506
- return /* @__PURE__ */ React73.createElement(Stack19, null, hasNoDynamicTags ? /* @__PURE__ */ React73.createElement(NoDynamicTags, null) : /* @__PURE__ */ React73.createElement(Fragment9, null, /* @__PURE__ */ React73.createElement(Box4, { px: 1.5, pb: 1 }, /* @__PURE__ */ React73.createElement(
3584
+ return /* @__PURE__ */ React75.createElement(Stack19, null, hasNoDynamicTags ? /* @__PURE__ */ React75.createElement(NoDynamicTags, null) : /* @__PURE__ */ React75.createElement(Fragment9, null, /* @__PURE__ */ React75.createElement(Box4, { px: 1.5, pb: 1 }, /* @__PURE__ */ React75.createElement(
3507
3585
  TextField2,
3508
3586
  {
3509
3587
  fullWidth: true,
3510
3588
  size: SIZE3,
3511
3589
  value: searchValue,
3512
3590
  onChange: handleSearch,
3513
- placeholder: __47("Search dynamic tags\u2026", "elementor"),
3591
+ placeholder: __49("Search dynamic tags\u2026", "elementor"),
3514
3592
  InputProps: {
3515
- startAdornment: /* @__PURE__ */ React73.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React73.createElement(SearchIcon, { fontSize: SIZE3 }))
3593
+ startAdornment: /* @__PURE__ */ React75.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React75.createElement(SearchIcon, { fontSize: SIZE3 }))
3516
3594
  }
3517
3595
  }
3518
- )), /* @__PURE__ */ React73.createElement(Divider7, null), /* @__PURE__ */ React73.createElement(Box4, { sx: { overflowY: "auto", height: 260, width: 220 } }, options12.length > 0 ? /* @__PURE__ */ React73.createElement(MenuList, { role: "listbox", tabIndex: 0 }, options12.map(([category, items3], index) => /* @__PURE__ */ React73.createElement(Fragment9, { key: index }, /* @__PURE__ */ React73.createElement(
3596
+ )), /* @__PURE__ */ React75.createElement(Divider7, null), /* @__PURE__ */ React75.createElement(Box4, { sx: { overflowY: "auto", height: 260, width: 220 } }, options12.length > 0 ? /* @__PURE__ */ React75.createElement(MenuList, { role: "listbox", tabIndex: 0 }, options12.map(([category, items3], index) => /* @__PURE__ */ React75.createElement(Fragment9, { key: index }, /* @__PURE__ */ React75.createElement(
3519
3597
  MenuSubheader2,
3520
3598
  {
3521
3599
  sx: { px: 1.5, typography: "caption", color: "text.tertiary" }
@@ -3523,7 +3601,7 @@ var DynamicSelection = ({ onSelect }) => {
3523
3601
  dynamicGroups?.[category]?.title || category
3524
3602
  ), items3.map(({ value, label: tagLabel }) => {
3525
3603
  const isSelected = isCurrentValueDynamic && value === dynamicValue?.name;
3526
- return /* @__PURE__ */ React73.createElement(
3604
+ return /* @__PURE__ */ React75.createElement(
3527
3605
  MenuItem,
3528
3606
  {
3529
3607
  key: value,
@@ -3534,9 +3612,9 @@ var DynamicSelection = ({ onSelect }) => {
3534
3612
  },
3535
3613
  tagLabel
3536
3614
  );
3537
- })))) : /* @__PURE__ */ React73.createElement(NoResults, { searchValue, onClear: () => setSearchValue("") }))));
3615
+ })))) : /* @__PURE__ */ React75.createElement(NoResults, { searchValue, onClear: () => setSearchValue("") }))));
3538
3616
  };
3539
- var NoResults = ({ searchValue, onClear }) => /* @__PURE__ */ React73.createElement(
3617
+ var NoResults = ({ searchValue, onClear }) => /* @__PURE__ */ React75.createElement(
3540
3618
  Stack19,
3541
3619
  {
3542
3620
  gap: 1,
@@ -3547,11 +3625,11 @@ var NoResults = ({ searchValue, onClear }) => /* @__PURE__ */ React73.createElem
3547
3625
  color: "text.secondary",
3548
3626
  sx: { pb: 3.5 }
3549
3627
  },
3550
- /* @__PURE__ */ React73.createElement(DatabaseIcon, { fontSize: "large" }),
3551
- /* @__PURE__ */ React73.createElement(Typography4, { align: "center", variant: "subtitle2" }, __47("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React73.createElement("br", null), "\u201C", searchValue, "\u201D."),
3552
- /* @__PURE__ */ React73.createElement(Typography4, { align: "center", variant: "caption" }, __47("Try something else.", "elementor"), "\xA0", /* @__PURE__ */ React73.createElement(Link, { color: "text.secondary", variant: "caption", component: "button", onClick: onClear }, __47("Clear & try again", "elementor")))
3628
+ /* @__PURE__ */ React75.createElement(DatabaseIcon, { fontSize: "large" }),
3629
+ /* @__PURE__ */ React75.createElement(Typography4, { align: "center", variant: "subtitle2" }, __49("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React75.createElement("br", null), "\u201C", searchValue, "\u201D."),
3630
+ /* @__PURE__ */ React75.createElement(Typography4, { align: "center", variant: "caption" }, __49("Try something else.", "elementor"), "\xA0", /* @__PURE__ */ React75.createElement(Link, { color: "text.secondary", variant: "caption", component: "button", onClick: onClear }, __49("Clear & try again", "elementor")))
3553
3631
  );
3554
- var NoDynamicTags = () => /* @__PURE__ */ React73.createElement(Box4, { sx: { overflowY: "hidden", height: 297, width: 220 } }, /* @__PURE__ */ React73.createElement(Divider7, null), /* @__PURE__ */ React73.createElement(
3632
+ var NoDynamicTags = () => /* @__PURE__ */ React75.createElement(Box4, { sx: { overflowY: "hidden", height: 297, width: 220 } }, /* @__PURE__ */ React75.createElement(Divider7, null), /* @__PURE__ */ React75.createElement(
3555
3633
  Stack19,
3556
3634
  {
3557
3635
  gap: 1,
@@ -3562,9 +3640,9 @@ var NoDynamicTags = () => /* @__PURE__ */ React73.createElement(Box4, { sx: { ov
3562
3640
  color: "text.secondary",
3563
3641
  sx: { pb: 3.5 }
3564
3642
  },
3565
- /* @__PURE__ */ React73.createElement(DatabaseIcon, { fontSize: "large" }),
3566
- /* @__PURE__ */ React73.createElement(Typography4, { align: "center", variant: "subtitle2" }, __47("Streamline your workflow with dynamic tags", "elementor")),
3567
- /* @__PURE__ */ React73.createElement(Typography4, { align: "center", variant: "caption" }, __47("You\u2019ll need Elementor Pro to use this feature.", "elementor"))
3643
+ /* @__PURE__ */ React75.createElement(DatabaseIcon, { fontSize: "large" }),
3644
+ /* @__PURE__ */ React75.createElement(Typography4, { align: "center", variant: "subtitle2" }, __49("Streamline your workflow with dynamic tags", "elementor")),
3645
+ /* @__PURE__ */ React75.createElement(Typography4, { align: "center", variant: "caption" }, __49("You\u2019ll need Elementor Pro to use this feature.", "elementor"))
3568
3646
  ));
3569
3647
  var useFilteredOptions = (searchValue) => {
3570
3648
  const dynamicTags = usePropDynamicTags();
@@ -3597,25 +3675,25 @@ var DynamicSelectionControl = () => {
3597
3675
  if (!dynamicTag) {
3598
3676
  throw new Error(`Dynamic tag ${tagName} not found`);
3599
3677
  }
3600
- return /* @__PURE__ */ React74.createElement(Box5, null, /* @__PURE__ */ React74.createElement(
3678
+ return /* @__PURE__ */ React76.createElement(Box5, null, /* @__PURE__ */ React76.createElement(
3601
3679
  Tag,
3602
3680
  {
3603
3681
  fullWidth: true,
3604
3682
  showActionsOnHover: true,
3605
3683
  label: dynamicTag.label,
3606
- startIcon: /* @__PURE__ */ React74.createElement(DatabaseIcon2, { fontSize: SIZE4 }),
3684
+ startIcon: /* @__PURE__ */ React76.createElement(DatabaseIcon2, { fontSize: SIZE4 }),
3607
3685
  ...bindTrigger2(selectionPopoverState),
3608
- actions: /* @__PURE__ */ React74.createElement(React74.Fragment, null, /* @__PURE__ */ React74.createElement(DynamicSettingsPopover, { dynamicTag }), /* @__PURE__ */ React74.createElement(
3686
+ actions: /* @__PURE__ */ React76.createElement(React76.Fragment, null, /* @__PURE__ */ React76.createElement(DynamicSettingsPopover, { dynamicTag }), /* @__PURE__ */ React76.createElement(
3609
3687
  IconButton4,
3610
3688
  {
3611
3689
  size: SIZE4,
3612
3690
  onClick: removeDynamicTag,
3613
- "aria-label": __48("Remove dynamic value", "elementor")
3691
+ "aria-label": __50("Remove dynamic value", "elementor")
3614
3692
  },
3615
- /* @__PURE__ */ React74.createElement(XIcon2, { fontSize: SIZE4 })
3693
+ /* @__PURE__ */ React76.createElement(XIcon2, { fontSize: SIZE4 })
3616
3694
  ))
3617
3695
  }
3618
- ), /* @__PURE__ */ React74.createElement(
3696
+ ), /* @__PURE__ */ React76.createElement(
3619
3697
  Popover2,
3620
3698
  {
3621
3699
  disablePortal: true,
@@ -3623,7 +3701,7 @@ var DynamicSelectionControl = () => {
3623
3701
  anchorOrigin: { vertical: "bottom", horizontal: "left" },
3624
3702
  ...bindPopover2(selectionPopoverState)
3625
3703
  },
3626
- /* @__PURE__ */ React74.createElement(Stack20, null, /* @__PURE__ */ React74.createElement(Stack20, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React74.createElement(DatabaseIcon2, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React74.createElement(Typography5, { variant: "subtitle2" }, __48("Dynamic tags", "elementor")), /* @__PURE__ */ React74.createElement(IconButton4, { size: SIZE4, sx: { ml: "auto" }, onClick: selectionPopoverState.close }, /* @__PURE__ */ React74.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React74.createElement(DynamicSelection, { onSelect: selectionPopoverState.close }))
3704
+ /* @__PURE__ */ React76.createElement(Stack20, null, /* @__PURE__ */ React76.createElement(Stack20, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React76.createElement(DatabaseIcon2, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React76.createElement(Typography5, { variant: "subtitle2" }, __50("Dynamic tags", "elementor")), /* @__PURE__ */ React76.createElement(IconButton4, { size: SIZE4, sx: { ml: "auto" }, onClick: selectionPopoverState.close }, /* @__PURE__ */ React76.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React76.createElement(DynamicSelection, { onSelect: selectionPopoverState.close }))
3627
3705
  ));
3628
3706
  };
3629
3707
  var DynamicSettingsPopover = ({ dynamicTag }) => {
@@ -3632,7 +3710,7 @@ var DynamicSettingsPopover = ({ dynamicTag }) => {
3632
3710
  if (!hasDynamicSettings) {
3633
3711
  return null;
3634
3712
  }
3635
- return /* @__PURE__ */ React74.createElement(React74.Fragment, null, /* @__PURE__ */ React74.createElement(IconButton4, { size: SIZE4, ...bindTrigger2(popupState), "aria-label": __48("Settings", "elementor") }, /* @__PURE__ */ React74.createElement(SettingsIcon, { fontSize: SIZE4 })), /* @__PURE__ */ React74.createElement(
3713
+ return /* @__PURE__ */ React76.createElement(React76.Fragment, null, /* @__PURE__ */ React76.createElement(IconButton4, { size: SIZE4, ...bindTrigger2(popupState), "aria-label": __50("Settings", "elementor") }, /* @__PURE__ */ React76.createElement(SettingsIcon, { fontSize: SIZE4 })), /* @__PURE__ */ React76.createElement(
3636
3714
  Popover2,
3637
3715
  {
3638
3716
  disablePortal: true,
@@ -3640,7 +3718,7 @@ var DynamicSettingsPopover = ({ dynamicTag }) => {
3640
3718
  anchorOrigin: { vertical: "bottom", horizontal: "center" },
3641
3719
  ...bindPopover2(popupState)
3642
3720
  },
3643
- /* @__PURE__ */ React74.createElement(Paper, { component: Stack20, sx: { minHeight: "300px", width: "220px" } }, /* @__PURE__ */ React74.createElement(Stack20, { direction: "row", alignItems: "center", px: 1.5, pt: 2, pb: 1 }, /* @__PURE__ */ React74.createElement(DatabaseIcon2, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React74.createElement(Typography5, { variant: "subtitle2" }, dynamicTag.label), /* @__PURE__ */ React74.createElement(IconButton4, { sx: { ml: "auto" }, size: SIZE4, onClick: popupState.close }, /* @__PURE__ */ React74.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React74.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls }))
3721
+ /* @__PURE__ */ React76.createElement(Paper, { component: Stack20, sx: { minHeight: "300px", width: "220px" } }, /* @__PURE__ */ React76.createElement(Stack20, { direction: "row", alignItems: "center", px: 1.5, pt: 2, pb: 1 }, /* @__PURE__ */ React76.createElement(DatabaseIcon2, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React76.createElement(Typography5, { variant: "subtitle2" }, dynamicTag.label), /* @__PURE__ */ React76.createElement(IconButton4, { sx: { ml: "auto" }, size: SIZE4, onClick: popupState.close }, /* @__PURE__ */ React76.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React76.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls }))
3644
3722
  ));
3645
3723
  };
3646
3724
  var DynamicSettings = ({ controls }) => {
@@ -3649,10 +3727,10 @@ var DynamicSettings = ({ controls }) => {
3649
3727
  if (!tabs.length) {
3650
3728
  return null;
3651
3729
  }
3652
- return /* @__PURE__ */ React74.createElement(React74.Fragment, null, /* @__PURE__ */ React74.createElement(Tabs2, { size: "small", variant: "fullWidth", ...getTabsProps() }, tabs.map(({ value }, index) => /* @__PURE__ */ React74.createElement(Tab2, { key: index, label: value.label, sx: { px: 1, py: 0.5 }, ...getTabProps(index) }))), /* @__PURE__ */ React74.createElement(Divider8, null), tabs.map(({ value }, index) => {
3653
- return /* @__PURE__ */ React74.createElement(TabPanel2, { key: index, sx: { flexGrow: 1, py: 0 }, ...getTabPanelProps(index) }, /* @__PURE__ */ React74.createElement(PopoverContent, { p: 2, gap: 2 }, value.items.map((item) => {
3730
+ return /* @__PURE__ */ React76.createElement(React76.Fragment, null, /* @__PURE__ */ React76.createElement(Tabs2, { size: "small", variant: "fullWidth", ...getTabsProps() }, tabs.map(({ value }, index) => /* @__PURE__ */ React76.createElement(Tab2, { key: index, label: value.label, sx: { px: 1, py: 0.5 }, ...getTabProps(index) }))), /* @__PURE__ */ React76.createElement(Divider8, null), tabs.map(({ value }, index) => {
3731
+ return /* @__PURE__ */ React76.createElement(TabPanel2, { key: index, sx: { flexGrow: 1, py: 0 }, ...getTabPanelProps(index) }, /* @__PURE__ */ React76.createElement(PopoverContent, { p: 2, gap: 2 }, value.items.map((item) => {
3654
3732
  if (item.type === "control") {
3655
- return /* @__PURE__ */ React74.createElement(Control3, { key: item.value.bind, control: item.value });
3733
+ return /* @__PURE__ */ React76.createElement(Control3, { key: item.value.bind, control: item.value });
3656
3734
  }
3657
3735
  return null;
3658
3736
  })));
@@ -3662,7 +3740,7 @@ var Control3 = ({ control }) => {
3662
3740
  if (!getControl(control.type)) {
3663
3741
  return null;
3664
3742
  }
3665
- return /* @__PURE__ */ React74.createElement(DynamicControl, { bind: control.bind }, /* @__PURE__ */ React74.createElement(Grid27, { container: true, gap: 0.75 }, control.label ? /* @__PURE__ */ React74.createElement(Grid27, { item: true, xs: 12 }, /* @__PURE__ */ React74.createElement(ControlFormLabel5, null, control.label)) : null, /* @__PURE__ */ React74.createElement(Grid27, { item: true, xs: 12 }, /* @__PURE__ */ React74.createElement(Control, { type: control.type, props: control.props }))));
3743
+ return /* @__PURE__ */ React76.createElement(DynamicControl, { bind: control.bind }, /* @__PURE__ */ React76.createElement(Grid29, { container: true, gap: 0.75 }, control.label ? /* @__PURE__ */ React76.createElement(Grid29, { item: true, xs: 12 }, /* @__PURE__ */ React76.createElement(ControlFormLabel5, null, control.label)) : null, /* @__PURE__ */ React76.createElement(Grid29, { item: true, xs: 12 }, /* @__PURE__ */ React76.createElement(Control, { type: control.type, props: control.props }))));
3666
3744
  };
3667
3745
 
3668
3746
  // src/dynamics/dynamic-transformer.ts
@@ -3715,18 +3793,18 @@ function getDynamicValue(name, settings) {
3715
3793
  }
3716
3794
 
3717
3795
  // src/dynamics/hooks/use-prop-dynamic-action.tsx
3718
- import * as React75 from "react";
3796
+ import * as React77 from "react";
3719
3797
  import { useBoundProp as useBoundProp6 } from "@elementor/editor-controls";
3720
3798
  import { DatabaseIcon as DatabaseIcon3 } from "@elementor/icons";
3721
- import { __ as __49 } from "@wordpress/i18n";
3799
+ import { __ as __51 } from "@wordpress/i18n";
3722
3800
  var usePropDynamicAction = () => {
3723
3801
  const { propType } = useBoundProp6();
3724
3802
  const visible = !!propType && supportsDynamic(propType);
3725
3803
  return {
3726
3804
  visible,
3727
3805
  icon: DatabaseIcon3,
3728
- title: __49("Dynamic tags", "elementor"),
3729
- popoverContent: ({ closePopover }) => /* @__PURE__ */ React75.createElement(DynamicSelection, { onSelect: closePopover })
3806
+ title: __51("Dynamic tags", "elementor"),
3807
+ popoverContent: ({ closePopover }) => /* @__PURE__ */ React77.createElement(DynamicSelection, { onSelect: closePopover })
3730
3808
  };
3731
3809
  };
3732
3810