@elementor/editor-editing-panel 1.29.2 → 1.30.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/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.30.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 10cbbe9: update `@elementor/ui` version
8
+ - 97e4d7d: create `editor-variables` package
9
+
10
+ ### Patch Changes
11
+
12
+ - 093b7ca: Add support for multiple control replacements
13
+ - 5f348b8: Allow self icons to be rotated by the ancestor value
14
+ - baa9d17: Show dynamic settings actions when popover is open
15
+ - Updated dependencies [093b7ca]
16
+ - Updated dependencies [10cbbe9]
17
+ - Updated dependencies [ce1852b]
18
+ - @elementor/editor-controls@0.27.0
19
+ - @elementor/editor-canvas@0.19.0
20
+ - @elementor/editor-panels@0.15.0
21
+ - @elementor/editor-ui@0.8.0
22
+ - @elementor/editor@0.19.0
23
+
3
24
  ## 1.29.2
4
25
 
5
26
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -3,6 +3,7 @@ import * as React from 'react';
3
3
  import { ElementType, ComponentType } from 'react';
4
4
  import * as _elementor_editor_props from '@elementor/editor-props';
5
5
  import * as _elementor_locations from '@elementor/locations';
6
+ import * as _elementor_menus from '@elementor/menus';
6
7
 
7
8
  type PopoverActionProps = {
8
9
  title: string;
@@ -12,8 +13,9 @@ type PopoverActionProps = {
12
13
  closePopover: () => void;
13
14
  }>;
14
15
  };
16
+ declare function PopoverAction({ title, visible, icon: Icon, popoverContent: PopoverContent, }: PopoverActionProps): React.JSX.Element | null;
15
17
 
16
- declare const replaceControl: ({ component, condition }: {
18
+ declare const registerControlReplacement: (replacement: {
17
19
  component: React.ComponentType;
18
20
  condition: ({ value }: {
19
21
  value: _elementor_editor_props.PropValue;
@@ -31,6 +33,10 @@ declare const usePanelStatus: () => {
31
33
  isBlocked: boolean;
32
34
  };
33
35
 
36
+ declare const controlActionsMenu: _elementor_menus.Menu<{
37
+ PopoverAction: typeof PopoverAction;
38
+ }, "default">;
39
+
34
40
  declare function init(): void;
35
41
 
36
- export { type PopoverActionProps, init, injectIntoClassSelectorActions, replaceControl, usePanelActions, usePanelStatus };
42
+ export { type PopoverActionProps, controlActionsMenu, init, injectIntoClassSelectorActions, registerControlReplacement, usePanelActions, usePanelStatus };
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ import * as React from 'react';
3
3
  import { ElementType, ComponentType } from 'react';
4
4
  import * as _elementor_editor_props from '@elementor/editor-props';
5
5
  import * as _elementor_locations from '@elementor/locations';
6
+ import * as _elementor_menus from '@elementor/menus';
6
7
 
7
8
  type PopoverActionProps = {
8
9
  title: string;
@@ -12,8 +13,9 @@ type PopoverActionProps = {
12
13
  closePopover: () => void;
13
14
  }>;
14
15
  };
16
+ declare function PopoverAction({ title, visible, icon: Icon, popoverContent: PopoverContent, }: PopoverActionProps): React.JSX.Element | null;
15
17
 
16
- declare const replaceControl: ({ component, condition }: {
18
+ declare const registerControlReplacement: (replacement: {
17
19
  component: React.ComponentType;
18
20
  condition: ({ value }: {
19
21
  value: _elementor_editor_props.PropValue;
@@ -31,6 +33,10 @@ declare const usePanelStatus: () => {
31
33
  isBlocked: boolean;
32
34
  };
33
35
 
36
+ declare const controlActionsMenu: _elementor_menus.Menu<{
37
+ PopoverAction: typeof PopoverAction;
38
+ }, "default">;
39
+
34
40
  declare function init(): void;
35
41
 
36
- export { type PopoverActionProps, init, injectIntoClassSelectorActions, replaceControl, usePanelActions, usePanelStatus };
42
+ export { type PopoverActionProps, controlActionsMenu, init, injectIntoClassSelectorActions, registerControlReplacement, usePanelActions, usePanelStatus };
package/dist/index.js CHANGED
@@ -30,9 +30,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
+ controlActionsMenu: () => controlActionsMenu,
33
34
  init: () => init2,
34
35
  injectIntoClassSelectorActions: () => injectIntoClassSelectorActions,
35
- replaceControl: () => replaceControl,
36
+ registerControlReplacement: () => registerControlReplacement,
36
37
  useBoundProp: () => import_editor_controls50.useBoundProp,
37
38
  usePanelActions: () => usePanelActions,
38
39
  usePanelStatus: () => usePanelStatus
@@ -42,7 +43,7 @@ var import_editor_controls50 = require("@elementor/editor-controls");
42
43
 
43
44
  // src/control-replacement.tsx
44
45
  var import_editor_controls = require("@elementor/editor-controls");
45
- var { replaceControl, getControlReplacement } = (0, import_editor_controls.createControlReplacement)();
46
+ var { registerControlReplacement, getControlReplacements } = (0, import_editor_controls.createControlReplacementsRegistry)();
46
47
 
47
48
  // src/components/css-classes/css-class-selector.tsx
48
49
  var React7 = __toESM(require("react"));
@@ -138,7 +139,7 @@ var import_ui = require("@elementor/ui");
138
139
  function MultiCombobox({
139
140
  actions = [],
140
141
  selected,
141
- options: options13,
142
+ options: options12,
142
143
  onSelect,
143
144
  placeholder,
144
145
  ...props
@@ -157,7 +158,7 @@ function MultiCombobox({
157
158
  handleHomeEndKeys: true,
158
159
  disabled: loading,
159
160
  value: selected,
160
- options: options13,
161
+ options: options12,
161
162
  renderInput: (params) => /* @__PURE__ */ React4.createElement(
162
163
  import_ui.TextField,
163
164
  {
@@ -175,7 +176,7 @@ function MultiCombobox({
175
176
  const inputValue = selectedOrInputValue.find((option) => typeof option === "string");
176
177
  const optionsAndActions = selectedOrInputValue.filter((option) => typeof option !== "string");
177
178
  if (reason === "createOption") {
178
- const [firstAction] = filterActions(actions, { options: options13, inputValue: inputValue ?? "" });
179
+ const [firstAction] = filterActions(actions, { options: options12, inputValue: inputValue ?? "" });
179
180
  if (firstAction?.value) {
180
181
  return run(firstAction.apply, firstAction.value);
181
182
  }
@@ -184,7 +185,7 @@ function MultiCombobox({
184
185
  if (reason === "selectOption" && action?.value) {
185
186
  return run(action.apply, action.value);
186
187
  }
187
- const fixedValues = options13.filter((option) => !!option.fixed);
188
+ const fixedValues = options12.filter((option) => !!option.fixed);
188
189
  onSelect?.([.../* @__PURE__ */ new Set([...optionsAndActions, ...fixedValues])]);
189
190
  },
190
191
  getOptionLabel: (option) => typeof option === "string" ? option : option.label,
@@ -224,8 +225,8 @@ function useActionRunner() {
224
225
  };
225
226
  return { run, loading };
226
227
  }
227
- function filterActions(actions, { options: options13, inputValue }) {
228
- return actions.filter((action) => action.condition(options13, inputValue)).map((action, index) => ({
228
+ function filterActions(actions, { options: options12, inputValue }) {
229
+ return actions.filter((action) => action.condition(options12, inputValue)).map((action, index) => ({
229
230
  label: action.label(inputValue),
230
231
  value: inputValue,
231
232
  group: action.group,
@@ -575,12 +576,12 @@ var EMPTY_OPTION = {
575
576
  };
576
577
  var { Slot: ClassSelectorActionsSlot, inject: injectIntoClassSelectorActions } = (0, import_locations.createLocation)();
577
578
  function CssClassSelector() {
578
- const options13 = useOptions();
579
+ const options12 = useOptions();
579
580
  const { value: appliedIds, setValue: setAppliedIds, pushValue: pushAppliedId } = useAppliedClassesIds();
580
581
  const { id: activeId, setId: setActiveId } = useStyle();
581
582
  const actions = useCreateActions({ pushAppliedId, setActiveId });
582
583
  const handleApply = useHandleApply(appliedIds, setAppliedIds);
583
- const applied = useAppliedOptions(options13, appliedIds);
584
+ const applied = useAppliedOptions(options12, appliedIds);
584
585
  const active = applied.find((option) => option.value === activeId) ?? EMPTY_OPTION;
585
586
  const showPlaceholder = applied.every(({ fixed }) => fixed);
586
587
  return /* @__PURE__ */ React7.createElement(import_ui5.Stack, { p: 2 }, /* @__PURE__ */ React7.createElement(import_ui5.Stack, { direction: "row", gap: 1, alignItems: "center", justifyContent: "space-between" }, /* @__PURE__ */ React7.createElement(import_ui5.FormLabel, { htmlFor: ID, size: "small" }, (0, import_i18n3.__)("Classes", "elementor")), /* @__PURE__ */ React7.createElement(import_ui5.Stack, { direction: "row", gap: 1 }, /* @__PURE__ */ React7.createElement(ClassSelectorActionsSlot, null))), /* @__PURE__ */ React7.createElement(
@@ -589,7 +590,7 @@ function CssClassSelector() {
589
590
  id: ID,
590
591
  size: "tiny",
591
592
  placeholder: showPlaceholder ? (0, import_i18n3.__)("Type class name", "elementor") : void 0,
592
- options: options13,
593
+ options: options12,
593
594
  selected: applied,
594
595
  onSelect: handleApply,
595
596
  limitTags: TAGS_LIMIT,
@@ -681,8 +682,8 @@ function useCreateActions({
681
682
  function hasReachedLimit(provider) {
682
683
  return provider.actions.all().length >= provider.limit;
683
684
  }
684
- function useAppliedOptions(options13, appliedIds) {
685
- const applied = options13.filter((option) => option.value && appliedIds.includes(option.value));
685
+ function useAppliedOptions(options12, appliedIds) {
686
+ const applied = options12.filter((option) => option.value && appliedIds.includes(option.value));
686
687
  const hasElementsProviderStyleApplied = applied.some(
687
688
  (option) => option.provider && (0, import_editor_styles_repository4.isElementsStylesProvider)(option.provider)
688
689
  );
@@ -1851,41 +1852,78 @@ var import_editor_controls16 = require("@elementor/editor-controls");
1851
1852
  var import_icons10 = require("@elementor/icons");
1852
1853
  var import_ui24 = require("@elementor/ui");
1853
1854
  var import_i18n13 = require("@wordpress/i18n");
1855
+ var ALIGN_SELF_CHILD_OFFSET_MAP = {
1856
+ row: 90,
1857
+ "row-reverse": 90,
1858
+ column: 0,
1859
+ "column-reverse": 0
1860
+ };
1854
1861
  var StartIcon3 = (0, import_ui24.withDirection)(import_icons10.LayoutAlignLeftIcon);
1855
1862
  var EndIcon3 = (0, import_ui24.withDirection)(import_icons10.LayoutAlignRightIcon);
1856
1863
  var iconProps3 = {
1857
- isClockwise: false,
1858
- offset: 90
1864
+ isClockwise: false
1859
1865
  };
1860
- var options3 = [
1866
+ var getOptions = (parentStyleDirection) => [
1861
1867
  {
1862
1868
  value: "start",
1863
1869
  label: (0, import_i18n13.__)("Start", "elementor"),
1864
- renderContent: ({ size }) => /* @__PURE__ */ React34.createElement(RotatedIcon, { icon: StartIcon3, size, ...iconProps3 }),
1870
+ renderContent: ({ size }) => /* @__PURE__ */ React34.createElement(
1871
+ RotatedIcon,
1872
+ {
1873
+ icon: StartIcon3,
1874
+ size,
1875
+ offset: ALIGN_SELF_CHILD_OFFSET_MAP[parentStyleDirection],
1876
+ ...iconProps3
1877
+ }
1878
+ ),
1865
1879
  showTooltip: true
1866
1880
  },
1867
1881
  {
1868
1882
  value: "center",
1869
1883
  label: (0, import_i18n13.__)("Center", "elementor"),
1870
- renderContent: ({ size }) => /* @__PURE__ */ React34.createElement(RotatedIcon, { icon: import_icons10.LayoutAlignCenterIcon, size, ...iconProps3 }),
1884
+ renderContent: ({ size }) => /* @__PURE__ */ React34.createElement(
1885
+ RotatedIcon,
1886
+ {
1887
+ icon: import_icons10.LayoutAlignCenterIcon,
1888
+ size,
1889
+ offset: ALIGN_SELF_CHILD_OFFSET_MAP[parentStyleDirection],
1890
+ ...iconProps3
1891
+ }
1892
+ ),
1871
1893
  showTooltip: true
1872
1894
  },
1873
1895
  {
1874
1896
  value: "end",
1875
1897
  label: (0, import_i18n13.__)("End", "elementor"),
1876
- renderContent: ({ size }) => /* @__PURE__ */ React34.createElement(RotatedIcon, { icon: EndIcon3, size, ...iconProps3 }),
1898
+ renderContent: ({ size }) => /* @__PURE__ */ React34.createElement(
1899
+ RotatedIcon,
1900
+ {
1901
+ icon: EndIcon3,
1902
+ size,
1903
+ offset: ALIGN_SELF_CHILD_OFFSET_MAP[parentStyleDirection],
1904
+ ...iconProps3
1905
+ }
1906
+ ),
1877
1907
  showTooltip: true
1878
1908
  },
1879
1909
  {
1880
1910
  value: "stretch",
1881
1911
  label: (0, import_i18n13.__)("Stretch", "elementor"),
1882
- renderContent: ({ size }) => /* @__PURE__ */ React34.createElement(RotatedIcon, { icon: import_icons10.LayoutDistributeVerticalIcon, size, ...iconProps3 }),
1912
+ renderContent: ({ size }) => /* @__PURE__ */ React34.createElement(
1913
+ RotatedIcon,
1914
+ {
1915
+ icon: import_icons10.LayoutDistributeVerticalIcon,
1916
+ size,
1917
+ offset: ALIGN_SELF_CHILD_OFFSET_MAP[parentStyleDirection],
1918
+ ...iconProps3
1919
+ }
1920
+ ),
1883
1921
  showTooltip: true
1884
1922
  }
1885
1923
  ];
1886
- var AlignSelfChild = () => {
1924
+ var AlignSelfChild = ({ parentStyleDirection }) => {
1887
1925
  const { isSiteRtl } = useDirection();
1888
- return /* @__PURE__ */ React34.createElement(import_ui24.DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React34.createElement(import_ui24.ThemeProvider, null, /* @__PURE__ */ React34.createElement(StylesField, { bind: "align-self" }, /* @__PURE__ */ React34.createElement(import_ui24.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React34.createElement(import_ui24.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(ControlLabel, null, (0, import_i18n13.__)("Align self", "elementor"))), /* @__PURE__ */ React34.createElement(import_ui24.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React34.createElement(import_editor_controls16.ToggleControl, { options: options3 }))))));
1926
+ return /* @__PURE__ */ React34.createElement(import_ui24.DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React34.createElement(import_ui24.ThemeProvider, null, /* @__PURE__ */ React34.createElement(StylesField, { bind: "align-self" }, /* @__PURE__ */ React34.createElement(import_ui24.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React34.createElement(import_ui24.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(ControlLabel, null, (0, import_i18n13.__)("Align self", "elementor"))), /* @__PURE__ */ React34.createElement(import_ui24.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React34.createElement(import_editor_controls16.ToggleControl, { options: getOptions(parentStyleDirection) }))))));
1889
1927
  };
1890
1928
 
1891
1929
  // src/components/style-sections/layout-section/display-field.tsx
@@ -1931,7 +1969,7 @@ var import_editor_controls18 = require("@elementor/editor-controls");
1931
1969
  var import_icons11 = require("@elementor/icons");
1932
1970
  var import_ui26 = require("@elementor/ui");
1933
1971
  var import_i18n15 = require("@wordpress/i18n");
1934
- var options4 = [
1972
+ var options3 = [
1935
1973
  {
1936
1974
  value: "row",
1937
1975
  label: (0, import_i18n15.__)("Row", "elementor"),
@@ -1965,7 +2003,7 @@ var options4 = [
1965
2003
  ];
1966
2004
  var FlexDirectionField = () => {
1967
2005
  const { isSiteRtl } = useDirection();
1968
- return /* @__PURE__ */ React36.createElement(import_ui26.DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React36.createElement(import_ui26.ThemeProvider, null, /* @__PURE__ */ React36.createElement(StylesField, { bind: "flex-direction" }, /* @__PURE__ */ React36.createElement(import_ui26.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React36.createElement(import_ui26.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(ControlLabel, null, (0, import_i18n15.__)("Direction", "elementor"))), /* @__PURE__ */ React36.createElement(import_ui26.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React36.createElement(import_editor_controls18.ToggleControl, { options: options4 }))))));
2006
+ return /* @__PURE__ */ React36.createElement(import_ui26.DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React36.createElement(import_ui26.ThemeProvider, null, /* @__PURE__ */ React36.createElement(StylesField, { bind: "flex-direction" }, /* @__PURE__ */ React36.createElement(import_ui26.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React36.createElement(import_ui26.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(ControlLabel, null, (0, import_i18n15.__)("Direction", "elementor"))), /* @__PURE__ */ React36.createElement(import_ui26.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React36.createElement(import_editor_controls18.ToggleControl, { options: options3 }))))));
1969
2007
  };
1970
2008
 
1971
2009
  // src/components/style-sections/layout-section/flex-order-field.tsx
@@ -2154,7 +2192,7 @@ var iconProps4 = {
2154
2192
  isClockwise: true,
2155
2193
  offset: -90
2156
2194
  };
2157
- var options5 = [
2195
+ var options4 = [
2158
2196
  {
2159
2197
  value: "flex-start",
2160
2198
  label: (0, import_i18n19.__)("Start", "elementor"),
@@ -2194,7 +2232,7 @@ var options5 = [
2194
2232
  ];
2195
2233
  var JustifyContentField = () => {
2196
2234
  const { isSiteRtl } = useDirection();
2197
- return /* @__PURE__ */ React40.createElement(import_ui30.DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React40.createElement(import_ui30.ThemeProvider, null, /* @__PURE__ */ React40.createElement(StylesField, { bind: "justify-content" }, /* @__PURE__ */ React40.createElement(import_ui30.Stack, { gap: 0.75 }, /* @__PURE__ */ React40.createElement(ControlLabel, null, (0, import_i18n19.__)("Justify content", "elementor")), /* @__PURE__ */ React40.createElement(import_editor_controls22.ToggleControl, { options: options5, fullWidth: true })))));
2235
+ return /* @__PURE__ */ React40.createElement(import_ui30.DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React40.createElement(import_ui30.ThemeProvider, null, /* @__PURE__ */ React40.createElement(StylesField, { bind: "justify-content" }, /* @__PURE__ */ React40.createElement(import_ui30.Stack, { gap: 0.75 }, /* @__PURE__ */ React40.createElement(ControlLabel, null, (0, import_i18n19.__)("Justify content", "elementor")), /* @__PURE__ */ React40.createElement(import_editor_controls22.ToggleControl, { options: options4, fullWidth: true })))));
2198
2236
  };
2199
2237
 
2200
2238
  // src/components/style-sections/layout-section/wrap-field.tsx
@@ -2203,7 +2241,7 @@ var import_editor_controls23 = require("@elementor/editor-controls");
2203
2241
  var import_icons15 = require("@elementor/icons");
2204
2242
  var import_ui31 = require("@elementor/ui");
2205
2243
  var import_i18n20 = require("@wordpress/i18n");
2206
- var options6 = [
2244
+ var options5 = [
2207
2245
  {
2208
2246
  value: "nowrap",
2209
2247
  label: (0, import_i18n20.__)("No wrap", "elementor"),
@@ -2225,7 +2263,7 @@ var options6 = [
2225
2263
  ];
2226
2264
  var WrapField = () => {
2227
2265
  const { isSiteRtl } = useDirection();
2228
- return /* @__PURE__ */ React41.createElement(import_ui31.DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React41.createElement(import_ui31.ThemeProvider, null, /* @__PURE__ */ React41.createElement(StylesField, { bind: "flex-wrap" }, /* @__PURE__ */ React41.createElement(import_ui31.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React41.createElement(import_ui31.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(ControlLabel, null, (0, import_i18n20.__)("Wrap", "elementor"))), /* @__PURE__ */ React41.createElement(import_ui31.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React41.createElement(import_editor_controls23.ToggleControl, { options: options6 }))))));
2266
+ return /* @__PURE__ */ React41.createElement(import_ui31.DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React41.createElement(import_ui31.ThemeProvider, null, /* @__PURE__ */ React41.createElement(StylesField, { bind: "flex-wrap" }, /* @__PURE__ */ React41.createElement(import_ui31.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React41.createElement(import_ui31.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(ControlLabel, null, (0, import_i18n20.__)("Wrap", "elementor"))), /* @__PURE__ */ React41.createElement(import_ui31.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React41.createElement(import_editor_controls23.ToggleControl, { options: options5 }))))));
2229
2267
  };
2230
2268
 
2231
2269
  // src/components/style-sections/layout-section/layout-section.tsx
@@ -2236,13 +2274,14 @@ var LayoutSection = () => {
2236
2274
  const { element } = useElement();
2237
2275
  const parent = (0, import_editor_elements7.useParentElement)(element.id);
2238
2276
  const parentStyle = useComputedStyle(parent?.id || null);
2239
- return /* @__PURE__ */ React42.createElement(SectionContent, null, /* @__PURE__ */ React42.createElement(DisplayField, null), isDisplayFlex && /* @__PURE__ */ React42.createElement(FlexFields, null), "flex" === parentStyle?.display && /* @__PURE__ */ React42.createElement(FlexChildFields, null));
2277
+ const parentStyleDirection = parentStyle?.flexDirection ?? "row";
2278
+ return /* @__PURE__ */ React42.createElement(SectionContent, null, /* @__PURE__ */ React42.createElement(DisplayField, null), isDisplayFlex && /* @__PURE__ */ React42.createElement(FlexFields, null), "flex" === parentStyle?.display && /* @__PURE__ */ React42.createElement(FlexChildFields, { parentStyleDirection }));
2240
2279
  };
2241
2280
  var FlexFields = () => {
2242
2281
  const [flexWrap] = useStylesField("flex-wrap");
2243
2282
  return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(FlexDirectionField, null), /* @__PURE__ */ React42.createElement(JustifyContentField, null), /* @__PURE__ */ React42.createElement(AlignItemsField, null), /* @__PURE__ */ React42.createElement(PanelDivider, null), /* @__PURE__ */ React42.createElement(GapControlField, null), /* @__PURE__ */ React42.createElement(WrapField, null), ["wrap", "wrap-reverse"].includes(flexWrap?.value) && /* @__PURE__ */ React42.createElement(AlignContentField, null));
2244
2283
  };
2245
- var FlexChildFields = () => /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(PanelDivider, null), /* @__PURE__ */ React42.createElement(import_editor_controls24.ControlFormLabel, null, (0, import_i18n21.__)("Flex child", "elementor")), /* @__PURE__ */ React42.createElement(AlignSelfChild, null), /* @__PURE__ */ React42.createElement(FlexOrderField, null), /* @__PURE__ */ React42.createElement(FlexSizeField, null));
2284
+ var FlexChildFields = ({ parentStyleDirection }) => /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(PanelDivider, null), /* @__PURE__ */ React42.createElement(import_editor_controls24.ControlFormLabel, null, (0, import_i18n21.__)("Flex child", "elementor")), /* @__PURE__ */ React42.createElement(AlignSelfChild, { parentStyleDirection }), /* @__PURE__ */ React42.createElement(FlexOrderField, null), /* @__PURE__ */ React42.createElement(FlexSizeField, null));
2246
2285
  var shouldDisplayFlexFields = (display, local) => {
2247
2286
  const value = display?.value ?? local?.value;
2248
2287
  if (!value) {
@@ -2354,7 +2393,7 @@ var import_editor_controls28 = require("@elementor/editor-controls");
2354
2393
  var import_icons17 = require("@elementor/icons");
2355
2394
  var import_ui35 = require("@elementor/ui");
2356
2395
  var import_i18n25 = require("@wordpress/i18n");
2357
- var options7 = [
2396
+ var options6 = [
2358
2397
  {
2359
2398
  value: "visible",
2360
2399
  label: (0, import_i18n25.__)("Visible", "elementor"),
@@ -2375,7 +2414,7 @@ var options7 = [
2375
2414
  }
2376
2415
  ];
2377
2416
  var OverflowField = () => {
2378
- return /* @__PURE__ */ React47.createElement(StylesField, { bind: "overflow" }, /* @__PURE__ */ React47.createElement(import_ui35.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React47.createElement(import_ui35.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ControlLabel, null, (0, import_i18n25.__)("Overflow", "elementor"))), /* @__PURE__ */ React47.createElement(import_ui35.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React47.createElement(import_editor_controls28.ToggleControl, { options: options7 }))));
2417
+ return /* @__PURE__ */ React47.createElement(StylesField, { bind: "overflow" }, /* @__PURE__ */ React47.createElement(import_ui35.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React47.createElement(import_ui35.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ControlLabel, null, (0, import_i18n25.__)("Overflow", "elementor"))), /* @__PURE__ */ React47.createElement(import_ui35.Grid, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React47.createElement(import_editor_controls28.ToggleControl, { options: options6 }))));
2379
2418
  };
2380
2419
 
2381
2420
  // src/components/style-sections/size-section/size-section.tsx
@@ -2468,11 +2507,11 @@ var supportedCategories = {
2468
2507
  };
2469
2508
  var getFontFamilies = () => {
2470
2509
  const { controls } = getElementorConfig();
2471
- const options13 = controls?.font?.options;
2472
- if (!options13) {
2510
+ const options12 = controls?.font?.options;
2511
+ if (!options12) {
2473
2512
  return null;
2474
2513
  }
2475
- return options13;
2514
+ return options12;
2476
2515
  };
2477
2516
  var useFontFamilies = () => {
2478
2517
  const fontFamilies = getFontFamilies();
@@ -2519,7 +2558,7 @@ var import_editor_controls33 = require("@elementor/editor-controls");
2519
2558
  var import_icons18 = require("@elementor/icons");
2520
2559
  var import_ui40 = require("@elementor/ui");
2521
2560
  var import_i18n32 = require("@wordpress/i18n");
2522
- var options8 = [
2561
+ var options7 = [
2523
2562
  {
2524
2563
  value: "normal",
2525
2564
  label: (0, import_i18n32.__)("Normal", "elementor"),
@@ -2533,7 +2572,7 @@ var options8 = [
2533
2572
  showTooltip: true
2534
2573
  }
2535
2574
  ];
2536
- var FontStyleField = () => /* @__PURE__ */ React53.createElement(StylesField, { bind: "font-style" }, /* @__PURE__ */ React53.createElement(import_ui40.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React53.createElement(import_ui40.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React53.createElement(import_editor_controls33.ControlFormLabel, null, (0, import_i18n32.__)("Font style", "elementor"))), /* @__PURE__ */ React53.createElement(import_ui40.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React53.createElement(import_editor_controls33.ToggleControl, { options: options8 }))));
2575
+ var FontStyleField = () => /* @__PURE__ */ React53.createElement(StylesField, { bind: "font-style" }, /* @__PURE__ */ React53.createElement(import_ui40.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React53.createElement(import_ui40.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React53.createElement(import_editor_controls33.ControlFormLabel, null, (0, import_i18n32.__)("Font style", "elementor"))), /* @__PURE__ */ React53.createElement(import_ui40.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React53.createElement(import_editor_controls33.ToggleControl, { options: options7 }))));
2537
2576
 
2538
2577
  // src/components/style-sections/typography-section/font-weight-field.tsx
2539
2578
  var React54 = __toESM(require("react"));
@@ -2581,7 +2620,7 @@ var import_ui44 = require("@elementor/ui");
2581
2620
  var import_i18n36 = require("@wordpress/i18n");
2582
2621
  var AlignStartIcon = (0, import_ui44.withDirection)(import_icons19.AlignLeftIcon);
2583
2622
  var AlignEndIcon = (0, import_ui44.withDirection)(import_icons19.AlignRightIcon);
2584
- var options9 = [
2623
+ var options8 = [
2585
2624
  {
2586
2625
  value: "start",
2587
2626
  label: (0, import_i18n36.__)("Start", "elementor"),
@@ -2608,7 +2647,7 @@ var options9 = [
2608
2647
  }
2609
2648
  ];
2610
2649
  var TextAlignmentField = () => {
2611
- return /* @__PURE__ */ React57.createElement(StylesField, { bind: "text-align" }, /* @__PURE__ */ React57.createElement(import_ui44.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React57.createElement(import_ui44.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React57.createElement(ControlLabel, null, (0, import_i18n36.__)("Text align", "elementor"))), /* @__PURE__ */ React57.createElement(import_ui44.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React57.createElement(import_editor_controls37.ToggleControl, { options: options9 }))));
2650
+ return /* @__PURE__ */ React57.createElement(StylesField, { bind: "text-align" }, /* @__PURE__ */ React57.createElement(import_ui44.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React57.createElement(import_ui44.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React57.createElement(ControlLabel, null, (0, import_i18n36.__)("Text align", "elementor"))), /* @__PURE__ */ React57.createElement(import_ui44.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React57.createElement(import_editor_controls37.ToggleControl, { options: options8 }))));
2612
2651
  };
2613
2652
 
2614
2653
  // src/components/style-sections/typography-section/text-color-field.tsx
@@ -2626,7 +2665,7 @@ var import_editor_controls39 = require("@elementor/editor-controls");
2626
2665
  var import_icons20 = require("@elementor/icons");
2627
2666
  var import_ui46 = require("@elementor/ui");
2628
2667
  var import_i18n38 = require("@wordpress/i18n");
2629
- var options10 = [
2668
+ var options9 = [
2630
2669
  {
2631
2670
  value: "none",
2632
2671
  label: (0, import_i18n38.__)("None", "elementor"),
@@ -2653,7 +2692,7 @@ var options10 = [
2653
2692
  showTooltip: true
2654
2693
  }
2655
2694
  ];
2656
- var TextDecorationField = () => /* @__PURE__ */ React59.createElement(StylesField, { bind: "text-decoration" }, /* @__PURE__ */ React59.createElement(import_ui46.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React59.createElement(import_ui46.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React59.createElement(ControlLabel, null, (0, import_i18n38.__)("Line decoration", "elementor"))), /* @__PURE__ */ React59.createElement(import_ui46.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React59.createElement(import_editor_controls39.ToggleControl, { options: options10, exclusive: false }))));
2695
+ var TextDecorationField = () => /* @__PURE__ */ React59.createElement(StylesField, { bind: "text-decoration" }, /* @__PURE__ */ React59.createElement(import_ui46.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React59.createElement(import_ui46.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React59.createElement(ControlLabel, null, (0, import_i18n38.__)("Line decoration", "elementor"))), /* @__PURE__ */ React59.createElement(import_ui46.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React59.createElement(import_editor_controls39.ToggleControl, { options: options9, exclusive: false }))));
2657
2696
 
2658
2697
  // src/components/style-sections/typography-section/text-direction-field.tsx
2659
2698
  var React60 = __toESM(require("react"));
@@ -2661,7 +2700,7 @@ var import_editor_controls40 = require("@elementor/editor-controls");
2661
2700
  var import_icons21 = require("@elementor/icons");
2662
2701
  var import_ui47 = require("@elementor/ui");
2663
2702
  var import_i18n39 = require("@wordpress/i18n");
2664
- var options11 = [
2703
+ var options10 = [
2665
2704
  {
2666
2705
  value: "ltr",
2667
2706
  label: (0, import_i18n39.__)("Left to right", "elementor"),
@@ -2676,7 +2715,7 @@ var options11 = [
2676
2715
  }
2677
2716
  ];
2678
2717
  var TextDirectionField = () => {
2679
- return /* @__PURE__ */ React60.createElement(StylesField, { bind: "direction" }, /* @__PURE__ */ React60.createElement(import_ui47.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React60.createElement(import_ui47.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React60.createElement(ControlLabel, null, (0, import_i18n39.__)("Direction", "elementor"))), /* @__PURE__ */ React60.createElement(import_ui47.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React60.createElement(import_editor_controls40.ToggleControl, { options: options11 }))));
2718
+ return /* @__PURE__ */ React60.createElement(StylesField, { bind: "direction" }, /* @__PURE__ */ React60.createElement(import_ui47.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React60.createElement(import_ui47.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React60.createElement(ControlLabel, null, (0, import_i18n39.__)("Direction", "elementor"))), /* @__PURE__ */ React60.createElement(import_ui47.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React60.createElement(import_editor_controls40.ToggleControl, { options: options10 }))));
2680
2719
  };
2681
2720
 
2682
2721
  // src/components/style-sections/typography-section/text-stroke-field.tsx
@@ -2726,7 +2765,7 @@ var import_editor_controls42 = require("@elementor/editor-controls");
2726
2765
  var import_icons22 = require("@elementor/icons");
2727
2766
  var import_ui48 = require("@elementor/ui");
2728
2767
  var import_i18n41 = require("@wordpress/i18n");
2729
- var options12 = [
2768
+ var options11 = [
2730
2769
  {
2731
2770
  value: "none",
2732
2771
  label: (0, import_i18n41.__)("None", "elementor"),
@@ -2752,7 +2791,7 @@ var options12 = [
2752
2791
  showTooltip: true
2753
2792
  }
2754
2793
  ];
2755
- var TransformField = () => /* @__PURE__ */ React62.createElement(StylesField, { bind: "text-transform" }, /* @__PURE__ */ React62.createElement(import_ui48.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React62.createElement(import_ui48.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React62.createElement(ControlLabel, null, (0, import_i18n41.__)("Text transform", "elementor"))), /* @__PURE__ */ React62.createElement(import_ui48.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React62.createElement(import_editor_controls42.ToggleControl, { options: options12 }))));
2794
+ var TransformField = () => /* @__PURE__ */ React62.createElement(StylesField, { bind: "text-transform" }, /* @__PURE__ */ React62.createElement(import_ui48.Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React62.createElement(import_ui48.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React62.createElement(ControlLabel, null, (0, import_i18n41.__)("Text transform", "elementor"))), /* @__PURE__ */ React62.createElement(import_ui48.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React62.createElement(import_editor_controls42.ToggleControl, { options: options11 }))));
2756
2795
 
2757
2796
  // src/components/style-sections/typography-section/word-spacing-field.tsx
2758
2797
  var React63 = __toESM(require("react"));
@@ -2814,13 +2853,13 @@ var EditingPanelTabs = () => {
2814
2853
  var { useMenuItems } = controlActionsMenu;
2815
2854
  var EditingPanel = () => {
2816
2855
  const { element, elementType } = (0, import_editor_elements8.useSelectedElement)();
2817
- const controlReplacement = getControlReplacement();
2856
+ const controlReplacements = getControlReplacements();
2818
2857
  const menuItems = useMenuItems().default;
2819
2858
  if (!element || !elementType) {
2820
2859
  return null;
2821
2860
  }
2822
2861
  const panelTitle = (0, import_i18n45.__)("Edit %s", "elementor").replace("%s", elementType.title);
2823
- return /* @__PURE__ */ React67.createElement(import_ui52.ErrorBoundary, { fallback: /* @__PURE__ */ React67.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React67.createElement(import_session4.SessionStorageProvider, { prefix: "elementor" }, /* @__PURE__ */ React67.createElement(import_editor_ui3.ThemeProvider, null, /* @__PURE__ */ React67.createElement(import_editor_panels.Panel, null, /* @__PURE__ */ React67.createElement(import_editor_panels.PanelHeader, null, /* @__PURE__ */ React67.createElement(import_editor_panels.PanelHeaderTitle, null, panelTitle), /* @__PURE__ */ React67.createElement(import_icons23.AtomIcon, { fontSize: "small", sx: { color: "text.tertiary" } })), /* @__PURE__ */ React67.createElement(import_editor_panels.PanelBody, null, /* @__PURE__ */ React67.createElement(import_editor_controls44.ControlActionsProvider, { items: menuItems }, /* @__PURE__ */ React67.createElement(import_editor_controls44.ControlReplacementProvider, { ...controlReplacement }, /* @__PURE__ */ React67.createElement(ElementProvider, { element, elementType }, /* @__PURE__ */ React67.createElement(EditingPanelTabs, null)))))))));
2862
+ return /* @__PURE__ */ React67.createElement(import_ui52.ErrorBoundary, { fallback: /* @__PURE__ */ React67.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React67.createElement(import_session4.SessionStorageProvider, { prefix: "elementor" }, /* @__PURE__ */ React67.createElement(import_editor_ui3.ThemeProvider, null, /* @__PURE__ */ React67.createElement(import_editor_panels.Panel, null, /* @__PURE__ */ React67.createElement(import_editor_panels.PanelHeader, null, /* @__PURE__ */ React67.createElement(import_editor_panels.PanelHeaderTitle, null, panelTitle), /* @__PURE__ */ React67.createElement(import_icons23.AtomIcon, { fontSize: "small", sx: { color: "text.tertiary" } })), /* @__PURE__ */ React67.createElement(import_editor_panels.PanelBody, null, /* @__PURE__ */ React67.createElement(import_editor_controls44.ControlActionsProvider, { items: menuItems }, /* @__PURE__ */ React67.createElement(import_editor_controls44.ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React67.createElement(ElementProvider, { element, elementType }, /* @__PURE__ */ React67.createElement(EditingPanelTabs, null)))))))));
2824
2863
  };
2825
2864
 
2826
2865
  // src/panel.ts
@@ -2873,7 +2912,6 @@ var import_editor_canvas2 = require("@elementor/editor-canvas");
2873
2912
 
2874
2913
  // src/dynamics/components/dynamic-selection-control.tsx
2875
2914
  var React71 = __toESM(require("react"));
2876
- var import_react23 = require("react");
2877
2915
  var import_editor_controls48 = require("@elementor/editor-controls");
2878
2916
  var import_icons25 = require("@elementor/icons");
2879
2917
  var import_ui55 = require("@elementor/ui");
@@ -3010,8 +3048,8 @@ var DynamicSelection = ({ onSelect }) => {
3010
3048
  const { bind, value: dynamicValue, setValue } = (0, import_editor_controls47.useBoundProp)(dynamicPropTypeUtil);
3011
3049
  const [, updatePropValueHistory] = usePersistDynamicValue(bind);
3012
3050
  const isCurrentValueDynamic = !!dynamicValue;
3013
- const options13 = useFilteredOptions(searchValue);
3014
- const hasNoDynamicTags = !options13.length && !searchValue.trim();
3051
+ const options12 = useFilteredOptions(searchValue);
3052
+ const hasNoDynamicTags = !options12.length && !searchValue.trim();
3015
3053
  const handleSearch = (event) => {
3016
3054
  setSearchValue(event.target.value);
3017
3055
  };
@@ -3034,7 +3072,7 @@ var DynamicSelection = ({ onSelect }) => {
3034
3072
  startAdornment: /* @__PURE__ */ React70.createElement(import_ui54.InputAdornment, { position: "start" }, /* @__PURE__ */ React70.createElement(import_icons24.SearchIcon, { fontSize: SIZE3 }))
3035
3073
  }
3036
3074
  }
3037
- )), /* @__PURE__ */ React70.createElement(import_ui54.Divider, null), /* @__PURE__ */ React70.createElement(import_ui54.Box, { sx: { overflowY: "auto", height: 260, width: 220 } }, options13.length > 0 ? /* @__PURE__ */ React70.createElement(import_ui54.MenuList, { role: "listbox", tabIndex: 0 }, options13.map(([category, items3], index) => /* @__PURE__ */ React70.createElement(import_react22.Fragment, { key: index }, /* @__PURE__ */ React70.createElement(
3075
+ )), /* @__PURE__ */ React70.createElement(import_ui54.Divider, null), /* @__PURE__ */ React70.createElement(import_ui54.Box, { sx: { overflowY: "auto", height: 260, width: 220 } }, options12.length > 0 ? /* @__PURE__ */ React70.createElement(import_ui54.MenuList, { role: "listbox", tabIndex: 0 }, options12.map(([category, items3], index) => /* @__PURE__ */ React70.createElement(import_react22.Fragment, { key: index }, /* @__PURE__ */ React70.createElement(
3038
3076
  import_ui54.MenuSubheader,
3039
3077
  {
3040
3078
  sx: { px: 1.5, typography: "caption", color: "text.tertiary" }
@@ -3087,7 +3125,7 @@ var NoDynamicTags = () => /* @__PURE__ */ React70.createElement(import_ui54.Box,
3087
3125
  ));
3088
3126
  var useFilteredOptions = (searchValue) => {
3089
3127
  const dynamicTags = usePropDynamicTags();
3090
- const options13 = dynamicTags.reduce((categories, { name, label, group }) => {
3128
+ const options12 = dynamicTags.reduce((categories, { name, label, group }) => {
3091
3129
  const isVisible = label.toLowerCase().includes(searchValue.trim().toLowerCase());
3092
3130
  if (!isVisible) {
3093
3131
  return categories;
@@ -3098,7 +3136,7 @@ var useFilteredOptions = (searchValue) => {
3098
3136
  categories.get(group)?.push({ label, value: name });
3099
3137
  return categories;
3100
3138
  }, /* @__PURE__ */ new Map());
3101
- return [...options13];
3139
+ return [...options12];
3102
3140
  };
3103
3141
 
3104
3142
  // src/dynamics/components/dynamic-selection-control.tsx
@@ -3107,9 +3145,8 @@ var DynamicSelectionControl = () => {
3107
3145
  const { setValue: setAnyValue } = (0, import_editor_controls48.useBoundProp)();
3108
3146
  const { bind, value } = (0, import_editor_controls48.useBoundProp)(dynamicPropTypeUtil);
3109
3147
  const [propValueFromHistory] = usePersistDynamicValue(bind);
3148
+ const selectionPopoverState = (0, import_ui55.usePopupState)({ variant: "popover" });
3110
3149
  const { name: tagName = "" } = value;
3111
- const selectionPopoverId = (0, import_react23.useId)();
3112
- const selectionPopoverState = (0, import_ui55.usePopupState)({ variant: "popover", popupId: selectionPopoverId });
3113
3150
  const dynamicTag = useDynamicTag(tagName);
3114
3151
  const removeDynamicTag = () => {
3115
3152
  setAnyValue(propValueFromHistory ?? null);
@@ -3147,28 +3184,20 @@ var DynamicSelectionControl = () => {
3147
3184
  ));
3148
3185
  };
3149
3186
  var DynamicSettingsPopover = ({ dynamicTag }) => {
3150
- const popupId = (0, import_react23.useId)();
3151
- const settingsPopupState = (0, import_ui55.usePopupState)({ variant: "popover", popupId });
3187
+ const popupState = (0, import_ui55.usePopupState)({ variant: "popover" });
3152
3188
  const hasDynamicSettings = !!dynamicTag.atomic_controls.length;
3153
3189
  if (!hasDynamicSettings) {
3154
3190
  return null;
3155
3191
  }
3156
- return /* @__PURE__ */ React71.createElement(React71.Fragment, null, /* @__PURE__ */ React71.createElement(
3157
- import_ui55.IconButton,
3158
- {
3159
- size: SIZE4,
3160
- ...(0, import_ui55.bindTrigger)(settingsPopupState),
3161
- "aria-label": (0, import_i18n47.__)("Settings", "elementor")
3162
- },
3163
- /* @__PURE__ */ React71.createElement(import_icons25.SettingsIcon, { fontSize: SIZE4 })
3164
- ), /* @__PURE__ */ React71.createElement(
3192
+ return /* @__PURE__ */ React71.createElement(React71.Fragment, null, /* @__PURE__ */ React71.createElement(import_ui55.IconButton, { size: SIZE4, ...(0, import_ui55.bindTrigger)(popupState), "aria-label": (0, import_i18n47.__)("Settings", "elementor") }, /* @__PURE__ */ React71.createElement(import_icons25.SettingsIcon, { fontSize: SIZE4 })), /* @__PURE__ */ React71.createElement(
3165
3193
  import_ui55.Popover,
3166
3194
  {
3195
+ disablePortal: true,
3167
3196
  disableScrollLock: true,
3168
3197
  anchorOrigin: { vertical: "bottom", horizontal: "center" },
3169
- ...(0, import_ui55.bindPopover)(settingsPopupState)
3198
+ ...(0, import_ui55.bindPopover)(popupState)
3170
3199
  },
3171
- /* @__PURE__ */ React71.createElement(import_ui55.Paper, { component: import_ui55.Stack, sx: { minHeight: "300px", width: "220px" } }, /* @__PURE__ */ React71.createElement(import_ui55.Stack, { direction: "row", alignItems: "center", px: 1.5, pt: 2, pb: 1 }, /* @__PURE__ */ React71.createElement(import_icons25.DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React71.createElement(import_ui55.Typography, { variant: "subtitle2" }, dynamicTag.label), /* @__PURE__ */ React71.createElement(import_ui55.IconButton, { sx: { ml: "auto" }, size: SIZE4, onClick: settingsPopupState.close }, /* @__PURE__ */ React71.createElement(import_icons25.XIcon, { fontSize: SIZE4 }))), /* @__PURE__ */ React71.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls }))
3200
+ /* @__PURE__ */ React71.createElement(import_ui55.Paper, { component: import_ui55.Stack, sx: { minHeight: "300px", width: "220px" } }, /* @__PURE__ */ React71.createElement(import_ui55.Stack, { direction: "row", alignItems: "center", px: 1.5, pt: 2, pb: 1 }, /* @__PURE__ */ React71.createElement(import_icons25.DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React71.createElement(import_ui55.Typography, { variant: "subtitle2" }, dynamicTag.label), /* @__PURE__ */ React71.createElement(import_ui55.IconButton, { sx: { ml: "auto" }, size: SIZE4, onClick: popupState.close }, /* @__PURE__ */ React71.createElement(import_icons25.XIcon, { fontSize: SIZE4 }))), /* @__PURE__ */ React71.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls }))
3172
3201
  ));
3173
3202
  };
3174
3203
  var DynamicSettings = ({ controls }) => {
@@ -3261,7 +3290,7 @@ var usePropDynamicAction = () => {
3261
3290
  // src/dynamics/init.ts
3262
3291
  var { registerPopoverAction } = controlActionsMenu;
3263
3292
  var init = () => {
3264
- replaceControl({
3293
+ registerControlReplacement({
3265
3294
  component: DynamicSelectionControl,
3266
3295
  condition: ({ value }) => isDynamicPropValue(value)
3267
3296
  });
@@ -3295,9 +3324,10 @@ var blockV1Panel = () => {
3295
3324
  };
3296
3325
  // Annotate the CommonJS export names for ESM import in node:
3297
3326
  0 && (module.exports = {
3327
+ controlActionsMenu,
3298
3328
  init,
3299
3329
  injectIntoClassSelectorActions,
3300
- replaceControl,
3330
+ registerControlReplacement,
3301
3331
  useBoundProp,
3302
3332
  usePanelActions,
3303
3333
  usePanelStatus