@elementor/editor-editing-panel 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/index.js +868 -444
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +851 -403
  5. package/dist/index.mjs.map +1 -1
  6. package/package.json +15 -14
  7. package/src/components/css-class-selector.tsx +131 -0
  8. package/src/components/multi-combobox/multi-combobox.tsx +34 -32
  9. package/src/components/multi-combobox/types.ts +2 -0
  10. package/src/components/multi-combobox/use-combobox-actions.ts +4 -4
  11. package/src/components/style-sections/border-section/border-radius-field.tsx +4 -4
  12. package/src/components/style-sections/border-section/border-width-field.tsx +4 -4
  13. package/src/components/style-sections/layout-section/align-items-field.tsx +72 -0
  14. package/src/components/style-sections/layout-section/align-self-child-field.tsx +72 -0
  15. package/src/components/style-sections/layout-section/flex-direction-field.tsx +64 -0
  16. package/src/components/style-sections/layout-section/flex-order-field.tsx +120 -0
  17. package/src/components/style-sections/layout-section/flex-size-field.tsx +164 -0
  18. package/src/components/style-sections/layout-section/justify-content-field.tsx +62 -62
  19. package/src/components/style-sections/layout-section/layout-section.tsx +27 -3
  20. package/src/components/style-sections/layout-section/utils/rotated-icon.tsx +52 -0
  21. package/src/components/style-sections/layout-section/wrap-field.tsx +52 -0
  22. package/src/components/style-sections/position-section/position-section.tsx +3 -3
  23. package/src/components/style-sections/typography-section/line-height-field.tsx +21 -0
  24. package/src/components/style-sections/typography-section/text-stroke-field.tsx +41 -6
  25. package/src/components/style-sections/typography-section/text-style-field.tsx +31 -8
  26. package/src/components/style-sections/typography-section/typography-section.tsx +3 -1
  27. package/src/components/style-tab.tsx +2 -2
  28. package/src/controls-registry/controls-registry.tsx +4 -0
  29. package/src/dynamics/components/dynamic-selection-control.tsx +8 -5
  30. package/src/dynamics/components/dynamic-selection.tsx +10 -8
  31. package/src/dynamics/dynamic-control.tsx +9 -11
  32. package/src/dynamics/utils.ts +20 -3
  33. package/src/components/css-class-selector-section.tsx +0 -76
  34. package/src/components/style-sections/layout-section/utils/rotate-flex-icon.ts +0 -12
package/dist/index.mjs CHANGED
@@ -19,12 +19,12 @@ import { __privateListenTo as listenTo, commandStartEvent } from "@elementor/edi
19
19
  import { __createPanel as createPanel } from "@elementor/editor-panels";
20
20
 
21
21
  // src/components/editing-panel.tsx
22
- import * as React51 from "react";
22
+ import * as React58 from "react";
23
23
  import { ControlActionsProvider, ControlReplacementProvider } from "@elementor/editor-controls";
24
24
  import { useSelectedElement } from "@elementor/editor-elements";
25
25
  import { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from "@elementor/editor-panels";
26
26
  import { ErrorBoundary } from "@elementor/ui";
27
- import { __ as __31 } from "@wordpress/i18n";
27
+ import { __ as __38 } from "@wordpress/i18n";
28
28
 
29
29
  // src/contexts/element-context.tsx
30
30
  import * as React from "react";
@@ -95,10 +95,10 @@ function EditorPanelErrorFallback() {
95
95
  }
96
96
 
97
97
  // src/components/editing-panel-tabs.tsx
98
- import * as React50 from "react";
99
- import { Fragment as Fragment5 } from "react";
100
- import { Divider as Divider7, Stack as Stack18, Tab, TabPanel, Tabs, useTabs } from "@elementor/ui";
101
- import { __ as __30 } from "@wordpress/i18n";
98
+ import * as React57 from "react";
99
+ import { Fragment as Fragment7 } from "react";
100
+ import { Divider as Divider8, Stack as Stack19, Tab, TabPanel, Tabs, useTabs } from "@elementor/ui";
101
+ import { __ as __37 } from "@wordpress/i18n";
102
102
 
103
103
  // src/components/settings-tab.tsx
104
104
  import * as React9 from "react";
@@ -111,17 +111,21 @@ import { createError } from "@elementor/utils";
111
111
  // src/controls-registry/controls-registry.tsx
112
112
  import {
113
113
  ImageControl,
114
+ LinkControl,
114
115
  SelectControl,
115
116
  SizeControl,
116
117
  TextAreaControl,
117
- TextControl
118
+ TextControl,
119
+ UrlControl
118
120
  } from "@elementor/editor-controls";
119
121
  var controlTypes = {
120
122
  image: { component: ImageControl, layout: "full" },
121
123
  text: { component: TextControl, layout: "two-columns" },
122
124
  textarea: { component: TextAreaControl, layout: "full" },
123
125
  size: { component: SizeControl, layout: "two-columns" },
124
- select: { component: SelectControl, layout: "two-columns" }
126
+ select: { component: SelectControl, layout: "two-columns" },
127
+ link: { component: LinkControl, layout: "full" },
128
+ url: { component: UrlControl, layout: "full" }
125
129
  };
126
130
  var getControlByType = (type) => controlTypes[type]?.component;
127
131
  var getLayoutByType = (type) => controlTypes[type].layout;
@@ -254,13 +258,13 @@ var Control2 = ({ control }) => {
254
258
  };
255
259
 
256
260
  // src/components/style-tab.tsx
257
- import * as React49 from "react";
258
- import { useState as useState4 } from "react";
261
+ import * as React56 from "react";
262
+ import { useState as useState5 } from "react";
259
263
  import { useElementSetting as useElementSetting3, useElementStyles as useElementStyles2 } from "@elementor/editor-elements";
260
264
  import { useActiveBreakpoint } from "@elementor/editor-responsive";
261
265
  import { generateId } from "@elementor/editor-styles";
262
- import { Divider as Divider6 } from "@elementor/ui";
263
- import { __ as __29 } from "@wordpress/i18n";
266
+ import { Divider as Divider7 } from "@elementor/ui";
267
+ import { __ as __36 } from "@wordpress/i18n";
264
268
 
265
269
  // src/contexts/classes-prop-context.tsx
266
270
  import * as React10 from "react";
@@ -292,9 +296,10 @@ function useStyle() {
292
296
  return context;
293
297
  }
294
298
 
295
- // src/components/css-class-selector-section.tsx
299
+ // src/components/css-class-selector.tsx
296
300
  import * as React13 from "react";
297
- import { useElementSetting as useElementSetting2, useElementStyles } from "@elementor/editor-elements";
301
+ import { updateSettings as updateSettings2, useElementSetting as useElementSetting2, useElementStyles } from "@elementor/editor-elements";
302
+ import { classesPropTypeUtil } from "@elementor/editor-props";
298
303
  import { Chip as Chip2, Stack as Stack3, Typography as Typography2 } from "@elementor/ui";
299
304
  import { __ } from "@wordpress/i18n";
300
305
 
@@ -310,9 +315,9 @@ import {
310
315
 
311
316
  // src/components/multi-combobox/use-combobox-actions.ts
312
317
  import { createFilterOptions } from "@elementor/ui";
313
- var useComboboxActions = (applied, actions, optionsLabel, onApply) => ({
318
+ var useComboboxActions = (applied, actions, optionsLabel, onSelect) => ({
314
319
  action: {
315
- is: (opt) => !!opt.action,
320
+ is: (opt) => typeof opt !== "string" && "action" in opt,
316
321
  getLabel: (option) => option.action.getLabel(option.label),
317
322
  groupBy: (option) => option.action.groupLabel,
318
323
  onChange: ({ action, label }) => action?.apply(label),
@@ -332,10 +337,10 @@ var useComboboxActions = (applied, actions, optionsLabel, onApply) => ({
332
337
  }
333
338
  },
334
339
  option: {
335
- is: (opt) => !("action" in opt),
340
+ is: (opt) => typeof opt !== "string" && !("action" in opt),
336
341
  getLabel: (option) => option.label,
337
342
  groupBy: () => optionsLabel ?? "",
338
- onChange: (optionValues) => onApply?.(optionValues),
343
+ onChange: (optionValues) => onSelect?.(optionValues),
339
344
  getFilteredOptions: (optionList, params) => {
340
345
  const appliedValues = applied.map((option) => option.value);
341
346
  const optionsWithoutApplied = optionList.filter((option) => !appliedValues.includes(option.value));
@@ -358,24 +363,19 @@ var createActionOption = (groupLabel, action, inputValue) => ({
358
363
  var MultiCombobox = ({
359
364
  actions = {},
360
365
  selected,
361
- options: options5,
366
+ options: options10,
362
367
  optionsLabel,
363
- onApply,
368
+ onSelect,
364
369
  onCreate,
365
370
  ...props
366
371
  }) => {
367
- const { action: actionProps, option: optionProps } = useComboboxActions(selected, actions, optionsLabel, onApply);
368
- const handleSelectOption = (values) => {
369
- const action = values.find((value) => actionProps.is(value));
370
- if (action) {
371
- return actionProps.onChange(action);
372
- }
373
- return optionProps.onChange(values);
374
- };
375
- const handleCreateOption = (values) => {
376
- const value = values.find((option) => typeof option === "string");
377
- onCreate?.(value);
378
- };
372
+ const { action: actionProps, option: optionProps } = useComboboxActions(
373
+ selected,
374
+ actions,
375
+ // TODO: make the group mechanism more generic, allow passing list of groups.
376
+ optionsLabel,
377
+ onSelect
378
+ );
379
379
  return /* @__PURE__ */ React12.createElement(
380
380
  Autocomplete,
381
381
  {
@@ -387,29 +387,36 @@ var MultiCombobox = ({
387
387
  disableClearable: true,
388
388
  handleHomeEndKeys: true,
389
389
  value: selected,
390
- options: options5,
390
+ options: options10,
391
391
  renderGroup,
392
392
  renderInput: (params) => /* @__PURE__ */ React12.createElement(TextField, { ...params }),
393
393
  getLimitTagsText: (more) => /* @__PURE__ */ React12.createElement(Chip, { size: "tiny", variant: "standard", label: `+${more}`, clickable: true }),
394
- onChange: (_, values, reason) => {
395
- if (reason === "selectOption") {
396
- return handleSelectOption(values);
397
- }
394
+ onChange: (_, selectedOrTypedValue, reason) => {
398
395
  if (reason === "createOption") {
399
- return handleCreateOption(values);
396
+ const typedValue = selectedOrTypedValue.find((option) => typeof option === "string");
397
+ return typedValue && onCreate?.(typedValue);
400
398
  }
401
- onApply?.(values);
399
+ const action = selectedOrTypedValue.find((value) => actionProps.is(value));
400
+ if (reason === "selectOption" && action) {
401
+ return actionProps.onChange(action);
402
+ }
403
+ const selectedValues = selectedOrTypedValue.filter((v) => typeof v !== "string");
404
+ const fixedValues = options10.filter((option) => option.fixed);
405
+ optionProps.onChange([.../* @__PURE__ */ new Set([...fixedValues, ...selectedValues])]);
402
406
  },
403
407
  getOptionLabel: (option) => {
404
408
  if (optionProps.is(option)) {
405
409
  return optionProps.getLabel(option);
406
410
  }
407
- return actionProps.getLabel(option) ?? "";
411
+ if (actionProps.is(option)) {
412
+ return actionProps.getLabel(option);
413
+ }
414
+ return "";
408
415
  },
409
416
  filterOptions: (optionList, params) => {
410
- const filteredoptions = optionProps.getFilteredOptions(optionList, params);
417
+ const filteredOptions = optionProps.getFilteredOptions(optionList, params);
411
418
  const actionOptions = actionProps.getFilteredActions(optionList, params);
412
- return [...actionOptions, ...filteredoptions];
419
+ return [...actionOptions, ...filteredOptions];
413
420
  },
414
421
  groupBy: (option) => (optionProps.is(option) ? optionProps.groupBy() : actionProps.groupBy(option)) ?? ""
415
422
  }
@@ -431,36 +438,40 @@ var GroupItems = styled3("ul")`
431
438
  padding: 0;
432
439
  `;
433
440
 
434
- // src/components/css-class-selector-section.tsx
441
+ // src/components/css-class-selector.tsx
435
442
  var ID = "elementor-css-class-selector";
436
443
  var TAGS_LIMIT = 8;
437
- function CssClassSelectorSection() {
438
- const options5 = useOptions();
444
+ function CssClassSelector() {
445
+ const options10 = useOptions();
439
446
  const { id: activeId, setId: setActiveId } = useStyle();
440
- const appliedIds = useAppliedClassesIds();
441
- const applied = options5.filter((option) => appliedIds.includes(option.value));
442
- const active = options5.find((option) => option.value === activeId) || null;
447
+ const [appliedIds] = useAppliedClassesIds();
448
+ const handleApply = useHandleApply();
449
+ const handleActivate = ({ value }) => setActiveId(value);
450
+ const active = options10.find((option) => option.value === activeId) || null;
451
+ const applied = appliedIds.map((id) => options10.find((option) => option.value === id)).filter((option) => !!option);
443
452
  return /* @__PURE__ */ React13.createElement(Stack3, { gap: 1, p: 2 }, /* @__PURE__ */ React13.createElement(Typography2, { component: "label", variant: "caption", htmlFor: ID }, __("CSS Classes", "elementor")), /* @__PURE__ */ React13.createElement(
444
453
  MultiCombobox,
445
454
  {
446
455
  id: ID,
447
456
  size: "tiny",
448
- options: options5,
457
+ options: options10,
449
458
  selected: applied,
459
+ onSelect: handleApply,
450
460
  limitTags: TAGS_LIMIT,
451
461
  optionsLabel: __("Global CSS Classes", "elementor"),
452
- renderTags: (tagValue, getTagProps) => tagValue.map((option, index) => {
462
+ renderTags: (values, getTagProps) => values.map((value, index) => {
453
463
  const chipProps = getTagProps({ index });
464
+ const isActive = value.value === active?.value;
454
465
  return /* @__PURE__ */ React13.createElement(
455
466
  Chip2,
456
467
  {
457
468
  ...chipProps,
458
469
  key: chipProps.key,
459
470
  size: "small",
460
- label: option.label,
461
- variant: option.value === active?.value ? "filled" : "standard",
462
- color: option.color ?? "default",
463
- onClick: () => setActiveId(option.value),
471
+ label: value.label,
472
+ variant: isActive ? "filled" : "standard",
473
+ color: isActive && value.color ? value.color : "default",
474
+ onClick: () => handleActivate(value),
464
475
  onDelete: null
465
476
  }
466
477
  );
@@ -468,20 +479,51 @@ function CssClassSelectorSection() {
468
479
  }
469
480
  ));
470
481
  }
471
- function useAppliedClassesIds() {
472
- const { element } = useElement();
473
- const currentClassesProp = useClassesProp();
474
- return useElementSetting2(element.id, currentClassesProp)?.value || [];
475
- }
476
482
  function useOptions() {
477
483
  const { element } = useElement();
478
484
  const styleDefs = useElementStyles(element.id);
479
485
  return Object.values(styleDefs).map((styleDef) => ({
480
486
  label: styleDef.label,
481
487
  value: styleDef.id,
488
+ fixed: true,
482
489
  color: "primary"
483
490
  }));
484
491
  }
492
+ function useAppliedClassesIds() {
493
+ const { element } = useElement();
494
+ const currentClassesProp = useClassesProp();
495
+ const value = useElementSetting2(element.id, currentClassesProp)?.value || [];
496
+ const setValue = (ids) => {
497
+ updateSettings2({
498
+ id: element.id,
499
+ props: {
500
+ [currentClassesProp]: classesPropTypeUtil.create(ids)
501
+ }
502
+ });
503
+ };
504
+ return [value, setValue];
505
+ }
506
+ function useHandleApply() {
507
+ const { id: activeId, setId: setActiveId } = useStyle();
508
+ const [appliedIds, setAppliedIds] = useAppliedClassesIds();
509
+ return (selectedOptions) => {
510
+ const selectedValues = selectedOptions.map(({ value }) => value);
511
+ const isSameClassesAlreadyApplied = selectedValues.length === appliedIds.length && selectedValues.every((value) => appliedIds.includes(value));
512
+ if (isSameClassesAlreadyApplied) {
513
+ return;
514
+ }
515
+ setAppliedIds(selectedValues);
516
+ const addedValue = selectedValues.find((id) => !appliedIds.includes(id));
517
+ if (addedValue) {
518
+ setActiveId(addedValue);
519
+ return;
520
+ }
521
+ const removedValue = appliedIds.find((id) => !selectedValues.includes(id));
522
+ if (removedValue && removedValue === activeId) {
523
+ setActiveId(selectedValues[0] ?? null);
524
+ }
525
+ };
526
+ }
485
527
 
486
528
  // src/components/style-sections/background-section/background-section.tsx
487
529
  import * as React16 from "react";
@@ -609,6 +651,7 @@ var BorderStyleField = () => {
609
651
  // src/components/style-sections/border-section/border-width-field.tsx
610
652
  import * as React20 from "react";
611
653
  import { EqualUnequalSizesControl } from "@elementor/editor-controls";
654
+ import { borderWidthPropTypeUtil } from "@elementor/editor-props";
612
655
  import { SideAllIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from "@elementor/icons";
613
656
  import { __ as __5 } from "@wordpress/i18n";
614
657
  var edges = [
@@ -637,10 +680,10 @@ var BorderWidthField = () => {
637
680
  return /* @__PURE__ */ React20.createElement(StylesField, { bind: "border-width" }, /* @__PURE__ */ React20.createElement(
638
681
  EqualUnequalSizesControl,
639
682
  {
683
+ items: edges,
640
684
  label: __5("Border Width", "elementor"),
641
685
  icon: /* @__PURE__ */ React20.createElement(SideAllIcon, { fontSize: "tiny" }),
642
- items: edges,
643
- multiSizeType: "border-width"
686
+ multiSizePropTypeUtil: borderWidthPropTypeUtil
644
687
  }
645
688
  ));
646
689
  };
@@ -685,6 +728,7 @@ var BorderField = () => {
685
728
  // src/components/style-sections/border-section/border-radius-field.tsx
686
729
  import * as React22 from "react";
687
730
  import { EqualUnequalSizesControl as EqualUnequalSizesControl2 } from "@elementor/editor-controls";
731
+ import { borderRadiusPropTypeUtil } from "@elementor/editor-props";
688
732
  import {
689
733
  BorderCornersIcon,
690
734
  RadiusBottomLeftIcon,
@@ -719,10 +763,10 @@ var BorderRadiusField = () => {
719
763
  return /* @__PURE__ */ React22.createElement(StylesField, { bind: "border-radius" }, /* @__PURE__ */ React22.createElement(
720
764
  EqualUnequalSizesControl2,
721
765
  {
766
+ items: corners,
722
767
  label: __7("Border Radius", "elementor"),
723
768
  icon: /* @__PURE__ */ React22.createElement(BorderCornersIcon, { fontSize: "tiny" }),
724
- items: corners,
725
- multiSizeType: "border-radius"
769
+ multiSizePropTypeUtil: borderRadiusPropTypeUtil
726
770
  }
727
771
  ));
728
772
  };
@@ -739,43 +783,22 @@ var EffectsSection = () => {
739
783
  };
740
784
 
741
785
  // src/components/style-sections/layout-section/layout-section.tsx
742
- import * as React27 from "react";
743
- import { Stack as Stack10 } from "@elementor/ui";
744
-
745
- // src/components/style-sections/layout-section/display-field.tsx
746
- import * as React25 from "react";
747
- import { ControlLabel as ControlLabel6, ToggleControl } from "@elementor/editor-controls";
748
- import { Stack as Stack8 } from "@elementor/ui";
749
- import { __ as __8 } from "@wordpress/i18n";
750
- var DisplayField = () => {
751
- const options5 = [
752
- {
753
- value: "block",
754
- renderContent: () => __8("Block", "elementor"),
755
- label: __8("Block", "elementor")
756
- },
757
- {
758
- value: "flex",
759
- renderContent: () => __8("Flex", "elementor"),
760
- label: __8("Flex", "elementor")
761
- }
762
- ];
763
- return /* @__PURE__ */ React25.createElement(StylesField, { bind: "display" }, /* @__PURE__ */ React25.createElement(Stack8, { gap: 1 }, /* @__PURE__ */ React25.createElement(ControlLabel6, null, __8("Display", "elementor")), /* @__PURE__ */ React25.createElement(ToggleControl, { options: options5, fullWidth: true })));
764
- };
786
+ import * as React34 from "react";
787
+ import { ControlLabel as ControlLabel14 } from "@elementor/editor-controls";
788
+ import { Divider as Divider3, Stack as Stack12 } from "@elementor/ui";
789
+ import { __ as __16 } from "@wordpress/i18n";
765
790
 
766
- // src/components/style-sections/layout-section/justify-content-field.tsx
791
+ // src/components/style-sections/layout-section/align-items-field.tsx
767
792
  import * as React26 from "react";
768
- import { ControlLabel as ControlLabel7, ToggleControl as ToggleControl2 } from "@elementor/editor-controls";
793
+ import { ControlLabel as ControlLabel6, ToggleControl } from "@elementor/editor-controls";
769
794
  import {
770
- JustifyBottomIcon,
771
- JustifyCenterIcon,
772
- JustifyDistributeVerticalIcon,
773
- JustifySpaceAroundVerticalIcon,
774
- JustifySpaceBetweenVerticalIcon,
775
- JustifyTopIcon
795
+ LayoutAlignCenterIcon as CenterIcon,
796
+ LayoutAlignLeftIcon,
797
+ LayoutAlignRightIcon,
798
+ LayoutDistributeVerticalIcon as JustifyIcon
776
799
  } from "@elementor/icons";
777
- import { Stack as Stack9 } from "@elementor/ui";
778
- import { __ as __9 } from "@wordpress/i18n";
800
+ import { DirectionProvider, Grid as Grid4, ThemeProvider, withDirection } from "@elementor/ui";
801
+ import { __ as __8 } from "@wordpress/i18n";
779
802
 
780
803
  // src/hooks/use-direction.ts
781
804
  import { useTheme } from "@elementor/ui";
@@ -785,84 +808,461 @@ function useDirection() {
785
808
  return { isSiteRtl, isUiRtl };
786
809
  }
787
810
 
788
- // src/components/style-sections/layout-section/utils/rotate-flex-icon.ts
789
- function rotateFlexIcon(direction = "row", initValue) {
790
- const rotationIndexMap = {
791
- row: 0,
792
- column: 1,
793
- "row-reverse": 2,
794
- "column-reverse": 3
795
- };
796
- const rotationIndex = initValue + (rotationIndexMap[direction || "row"] ?? 0);
797
- return `rotate(calc(90deg * ${rotationIndex}))`;
798
- }
799
-
800
- // src/components/style-sections/layout-section/justify-content-field.tsx
801
- var JustifyContentField = () => {
811
+ // src/components/style-sections/layout-section/utils/rotated-icon.tsx
812
+ import * as React25 from "react";
813
+ import { useRef as useRef2 } from "react";
814
+ import { useTheme as useTheme2 } from "@elementor/ui";
815
+ var CLOCKWISE_ANGLES = {
816
+ row: 0,
817
+ column: 90,
818
+ "row-reverse": 180,
819
+ "column-reverse": 270
820
+ };
821
+ var COUNTER_CLOCKWISE_ANGLES = {
822
+ row: 0,
823
+ column: -90,
824
+ "row-reverse": -180,
825
+ "column-reverse": -270
826
+ };
827
+ var RotatedIcon = ({ icon: Icon, size, isClockwise = true, offset = 0 }) => {
828
+ const rotate = useRef2(useGetTargetAngle(isClockwise, offset));
829
+ rotate.current = useGetTargetAngle(isClockwise, offset, rotate);
830
+ return /* @__PURE__ */ React25.createElement(Icon, { fontSize: size, sx: { transition: ".3s", rotate: `${rotate.current}deg` } });
831
+ };
832
+ var useGetTargetAngle = (isClockwise, offset, existingRef) => {
802
833
  const [direction] = useStylesField("flex-direction");
803
- const { isUiRtl, isSiteRtl } = useDirection(), sx = { transform: rotateFlexIcon(direction, -1) }, shouldReverseOrder = isSiteRtl !== isUiRtl;
804
- const StartIcon = isSiteRtl ? JustifyBottomIcon : JustifyTopIcon, EndIcon = isSiteRtl ? JustifyTopIcon : JustifyBottomIcon;
805
- const options5 = [
834
+ const isRtl = "rtl" === useTheme2().direction;
835
+ const rotationMultiplier = isRtl ? -1 : 1;
836
+ const angleMap = isClockwise ? CLOCKWISE_ANGLES : COUNTER_CLOCKWISE_ANGLES;
837
+ const currentAngle = existingRef ? existingRef.current * rotationMultiplier : angleMap[direction?.value || "row"] + offset;
838
+ const targetAngle = angleMap[direction?.value || "row"] + offset;
839
+ const diffToTargetAngle = (targetAngle - currentAngle + 360) % 360;
840
+ const formattedDiff = (diffToTargetAngle + 180) % 360 - 180;
841
+ return (currentAngle + formattedDiff) * rotationMultiplier;
842
+ };
843
+
844
+ // src/components/style-sections/layout-section/align-items-field.tsx
845
+ var StartIcon = withDirection(LayoutAlignLeftIcon);
846
+ var EndIcon = withDirection(LayoutAlignRightIcon);
847
+ var iconProps = {
848
+ isClockwise: false,
849
+ offset: 90
850
+ };
851
+ var options = [
852
+ {
853
+ value: "start",
854
+ label: __8("Start", "elementor"),
855
+ renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(RotatedIcon, { icon: StartIcon, size, ...iconProps }),
856
+ showTooltip: true
857
+ },
858
+ {
859
+ value: "center",
860
+ label: __8("Center", "elementor"),
861
+ renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(RotatedIcon, { icon: CenterIcon, size, ...iconProps }),
862
+ showTooltip: true
863
+ },
864
+ {
865
+ value: "end",
866
+ label: __8("End", "elementor"),
867
+ renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(RotatedIcon, { icon: EndIcon, size, ...iconProps }),
868
+ showTooltip: true
869
+ },
870
+ {
871
+ value: "stretch",
872
+ label: __8("Stretch", "elementor"),
873
+ renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(RotatedIcon, { icon: JustifyIcon, size, ...iconProps }),
874
+ showTooltip: true
875
+ }
876
+ ];
877
+ var AlignItemsField = () => {
878
+ const { isSiteRtl } = useDirection();
879
+ return /* @__PURE__ */ React26.createElement(DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React26.createElement(ThemeProvider, null, /* @__PURE__ */ React26.createElement(StylesField, { bind: "align-items" }, /* @__PURE__ */ React26.createElement(Grid4, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React26.createElement(ControlLabel6, null, __8("Align items", "elementor"))), /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React26.createElement(ToggleControl, { options }))))));
880
+ };
881
+
882
+ // src/components/style-sections/layout-section/align-self-child-field.tsx
883
+ import * as React27 from "react";
884
+ import { ControlLabel as ControlLabel7, ToggleControl as ToggleControl2 } from "@elementor/editor-controls";
885
+ import {
886
+ LayoutAlignCenterIcon as CenterIcon2,
887
+ LayoutAlignLeftIcon as LayoutAlignLeftIcon2,
888
+ LayoutAlignRightIcon as LayoutAlignRightIcon2,
889
+ LayoutDistributeVerticalIcon as JustifyIcon2
890
+ } from "@elementor/icons";
891
+ import { DirectionProvider as DirectionProvider2, Grid as Grid5, ThemeProvider as ThemeProvider2, withDirection as withDirection2 } from "@elementor/ui";
892
+ import { __ as __9 } from "@wordpress/i18n";
893
+ var StartIcon2 = withDirection2(LayoutAlignLeftIcon2);
894
+ var EndIcon2 = withDirection2(LayoutAlignRightIcon2);
895
+ var iconProps2 = {
896
+ isClockwise: false,
897
+ offset: 90
898
+ };
899
+ var options2 = [
900
+ {
901
+ value: "start",
902
+ label: __9("Start", "elementor"),
903
+ renderContent: ({ size }) => /* @__PURE__ */ React27.createElement(RotatedIcon, { icon: StartIcon2, size, ...iconProps2 }),
904
+ showTooltip: true
905
+ },
906
+ {
907
+ value: "center",
908
+ label: __9("Center", "elementor"),
909
+ renderContent: ({ size }) => /* @__PURE__ */ React27.createElement(RotatedIcon, { icon: CenterIcon2, size, ...iconProps2 }),
910
+ showTooltip: true
911
+ },
912
+ {
913
+ value: "end",
914
+ label: __9("End", "elementor"),
915
+ renderContent: ({ size }) => /* @__PURE__ */ React27.createElement(RotatedIcon, { icon: EndIcon2, size, ...iconProps2 }),
916
+ showTooltip: true
917
+ },
918
+ {
919
+ value: "stretch",
920
+ label: __9("Stretch", "elementor"),
921
+ renderContent: ({ size }) => /* @__PURE__ */ React27.createElement(RotatedIcon, { icon: JustifyIcon2, size, ...iconProps2 }),
922
+ showTooltip: true
923
+ }
924
+ ];
925
+ var AlignSelfChild = () => {
926
+ const { isSiteRtl } = useDirection();
927
+ return /* @__PURE__ */ React27.createElement(DirectionProvider2, { rtl: isSiteRtl }, /* @__PURE__ */ React27.createElement(ThemeProvider2, null, /* @__PURE__ */ React27.createElement(StylesField, { bind: "align-self" }, /* @__PURE__ */ React27.createElement(Grid5, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React27.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React27.createElement(ControlLabel7, null, __9("Align self", "elementor"))), /* @__PURE__ */ React27.createElement(Grid5, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React27.createElement(ToggleControl2, { options: options2 }))))));
928
+ };
929
+
930
+ // src/components/style-sections/layout-section/display-field.tsx
931
+ import * as React28 from "react";
932
+ import { ControlLabel as ControlLabel8, ToggleControl as ToggleControl3 } from "@elementor/editor-controls";
933
+ import { Stack as Stack8 } from "@elementor/ui";
934
+ import { __ as __10 } from "@wordpress/i18n";
935
+ var DisplayField = () => {
936
+ const options10 = [
806
937
  {
807
- value: "start",
808
- label: __9("Start", "elementor"),
809
- renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(StartIcon, { fontSize: size, sx }),
810
- showTooltip: true
938
+ value: "block",
939
+ renderContent: () => __10("Block", "elementor"),
940
+ label: __10("Block", "elementor")
811
941
  },
812
942
  {
813
- value: "center",
814
- label: __9("Center", "elementor"),
815
- renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(JustifyCenterIcon, { fontSize: size, sx }),
816
- showTooltip: true
943
+ value: "flex",
944
+ renderContent: () => __10("Flex", "elementor"),
945
+ label: __10("Flex", "elementor")
946
+ }
947
+ ];
948
+ return /* @__PURE__ */ React28.createElement(StylesField, { bind: "display" }, /* @__PURE__ */ React28.createElement(Stack8, { gap: 1 }, /* @__PURE__ */ React28.createElement(ControlLabel8, null, __10("Display", "elementor")), /* @__PURE__ */ React28.createElement(ToggleControl3, { options: options10, fullWidth: true })));
949
+ };
950
+
951
+ // src/components/style-sections/layout-section/flex-direction-field.tsx
952
+ import * as React29 from "react";
953
+ import { ControlLabel as ControlLabel9, ToggleControl as ToggleControl4 } from "@elementor/editor-controls";
954
+ import { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from "@elementor/icons";
955
+ import { DirectionProvider as DirectionProvider3, Grid as Grid6, ThemeProvider as ThemeProvider3, withDirection as withDirection3 } from "@elementor/ui";
956
+ import { __ as __11 } from "@wordpress/i18n";
957
+ var options3 = [
958
+ {
959
+ value: "row",
960
+ label: __11("Row", "elementor"),
961
+ renderContent: ({ size }) => {
962
+ const StartIcon4 = withDirection3(ArrowRightIcon);
963
+ return /* @__PURE__ */ React29.createElement(StartIcon4, { fontSize: size });
817
964
  },
818
- {
819
- value: "end",
820
- label: __9("End", "elementor"),
821
- renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(EndIcon, { fontSize: size, sx }),
822
- showTooltip: true
965
+ showTooltip: true
966
+ },
967
+ {
968
+ value: "column",
969
+ label: __11("Column", "elementor"),
970
+ renderContent: ({ size }) => /* @__PURE__ */ React29.createElement(ArrowDownSmallIcon, { fontSize: size }),
971
+ showTooltip: true
972
+ },
973
+ {
974
+ value: "row-reverse",
975
+ label: __11("Reversed row", "elementor"),
976
+ renderContent: ({ size }) => {
977
+ const EndIcon4 = withDirection3(ArrowLeftIcon);
978
+ return /* @__PURE__ */ React29.createElement(EndIcon4, { fontSize: size });
823
979
  },
980
+ showTooltip: true
981
+ },
982
+ {
983
+ value: "column-reverse",
984
+ label: __11("Reversed column", "elementor"),
985
+ renderContent: ({ size }) => /* @__PURE__ */ React29.createElement(ArrowUpSmallIcon, { fontSize: size }),
986
+ showTooltip: true
987
+ }
988
+ ];
989
+ var FlexDirectionField = () => {
990
+ const { isSiteRtl } = useDirection();
991
+ return /* @__PURE__ */ React29.createElement(DirectionProvider3, { rtl: isSiteRtl }, /* @__PURE__ */ React29.createElement(ThemeProvider3, null, /* @__PURE__ */ React29.createElement(StylesField, { bind: "flex-direction" }, /* @__PURE__ */ React29.createElement(Grid6, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React29.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React29.createElement(ControlLabel9, null, __11("Direction", "elementor"))), /* @__PURE__ */ React29.createElement(Grid6, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React29.createElement(ToggleControl4, { options: options3 }))))));
992
+ };
993
+
994
+ // src/components/style-sections/layout-section/flex-order-field.tsx
995
+ import * as React30 from "react";
996
+ import { useState as useState2 } from "react";
997
+ import {
998
+ ControlLabel as ControlLabel10,
999
+ ControlToggleButtonGroup,
1000
+ NumberControl
1001
+ } from "@elementor/editor-controls";
1002
+ import { ArrowDownSmallIcon as ArrowDownSmallIcon2, ArrowUpSmallIcon as ArrowUpSmallIcon2, PencilIcon } from "@elementor/icons";
1003
+ import { DirectionProvider as DirectionProvider4, Grid as Grid7, Stack as Stack9, ThemeProvider as ThemeProvider4 } from "@elementor/ui";
1004
+ import { __ as __12 } from "@wordpress/i18n";
1005
+ var FIRST_DEFAULT_VALUE = -99999;
1006
+ var LAST_DEFAULT_VALUE = 99999;
1007
+ var FIRST = "first";
1008
+ var LAST = "last";
1009
+ var CUSTOM = "custom";
1010
+ var orderValueMap = {
1011
+ [FIRST]: FIRST_DEFAULT_VALUE,
1012
+ [LAST]: LAST_DEFAULT_VALUE
1013
+ };
1014
+ var items = [
1015
+ {
1016
+ value: FIRST,
1017
+ label: __12("First", "elementor"),
1018
+ renderContent: ({ size }) => /* @__PURE__ */ React30.createElement(ArrowUpSmallIcon2, { fontSize: size }),
1019
+ showTooltip: true
1020
+ },
1021
+ {
1022
+ value: LAST,
1023
+ label: __12("Last", "elementor"),
1024
+ renderContent: ({ size }) => /* @__PURE__ */ React30.createElement(ArrowDownSmallIcon2, { fontSize: size }),
1025
+ showTooltip: true
1026
+ },
1027
+ {
1028
+ value: CUSTOM,
1029
+ label: __12("Custom", "elementor"),
1030
+ renderContent: ({ size }) => /* @__PURE__ */ React30.createElement(PencilIcon, { fontSize: size }),
1031
+ showTooltip: true
1032
+ }
1033
+ ];
1034
+ var FlexOrderField = () => {
1035
+ const { isSiteRtl } = useDirection(), [order, setOrder] = useStylesField("order");
1036
+ const [groupControlValue, setGroupControlValue] = useState2(getGroupControlValue(order?.value || null));
1037
+ const handleToggleButtonChange = (group) => {
1038
+ setGroupControlValue(group);
1039
+ if (!group || group === CUSTOM) {
1040
+ setOrder(null);
1041
+ return;
1042
+ }
1043
+ setOrder({ $$type: "number", value: orderValueMap[group] });
1044
+ };
1045
+ return /* @__PURE__ */ React30.createElement(DirectionProvider4, { rtl: isSiteRtl }, /* @__PURE__ */ React30.createElement(ThemeProvider4, null, /* @__PURE__ */ React30.createElement(Stack9, { gap: 2 }, /* @__PURE__ */ React30.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React30.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel10, null, __12("Order", "elementor"))), /* @__PURE__ */ React30.createElement(Grid7, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React30.createElement(
1046
+ ControlToggleButtonGroup,
824
1047
  {
825
- value: "space-between",
826
- label: __9("Space Between", "elementor"),
827
- renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(JustifySpaceBetweenVerticalIcon, { fontSize: size, sx }),
828
- showTooltip: true
829
- },
1048
+ items,
1049
+ value: groupControlValue,
1050
+ onChange: handleToggleButtonChange,
1051
+ exclusive: true
1052
+ }
1053
+ ))), CUSTOM === groupControlValue && /* @__PURE__ */ React30.createElement(StylesField, { bind: "order" }, /* @__PURE__ */ React30.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React30.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel10, null, __12("Custom order", "elementor"))), /* @__PURE__ */ React30.createElement(Grid7, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React30.createElement(
1054
+ NumberControl,
830
1055
  {
831
- value: "space-around",
832
- label: __9("Space Around", "elementor"),
833
- renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(JustifySpaceAroundVerticalIcon, { fontSize: size, sx }),
834
- showTooltip: true
835
- },
1056
+ min: FIRST_DEFAULT_VALUE + 1,
1057
+ max: LAST_DEFAULT_VALUE - 1,
1058
+ shouldForceInt: true
1059
+ }
1060
+ )))))));
1061
+ };
1062
+ var getGroupControlValue = (order) => {
1063
+ if (LAST_DEFAULT_VALUE === order) {
1064
+ return LAST;
1065
+ }
1066
+ if (FIRST_DEFAULT_VALUE === order) {
1067
+ return FIRST;
1068
+ }
1069
+ return 0 === order || order ? CUSTOM : null;
1070
+ };
1071
+
1072
+ // src/components/style-sections/layout-section/flex-size-field.tsx
1073
+ import * as React31 from "react";
1074
+ import {
1075
+ ControlLabel as ControlLabel11,
1076
+ ControlToggleButtonGroup as ControlToggleButtonGroup2,
1077
+ NumberControl as NumberControl2,
1078
+ SizeControl as SizeControl2
1079
+ } from "@elementor/editor-controls";
1080
+ import { ExpandIcon, PencilIcon as PencilIcon2, ShrinkIcon } from "@elementor/icons";
1081
+ import { DirectionProvider as DirectionProvider5, Grid as Grid8, Stack as Stack10, ThemeProvider as ThemeProvider5 } from "@elementor/ui";
1082
+ import { __ as __13 } from "@wordpress/i18n";
1083
+ var DEFAULT = 1;
1084
+ var items2 = [
1085
+ {
1086
+ value: "flex-grow",
1087
+ label: __13("Grow", "elementor"),
1088
+ renderContent: ({ size }) => /* @__PURE__ */ React31.createElement(ExpandIcon, { fontSize: size }),
1089
+ showTooltip: true
1090
+ },
1091
+ {
1092
+ value: "flex-shrink",
1093
+ label: __13("Shrink", "elementor"),
1094
+ renderContent: ({ size }) => /* @__PURE__ */ React31.createElement(ShrinkIcon, { fontSize: size }),
1095
+ showTooltip: true
1096
+ },
1097
+ {
1098
+ value: "custom",
1099
+ label: __13("Custom", "elementor"),
1100
+ renderContent: ({ size }) => /* @__PURE__ */ React31.createElement(PencilIcon2, { fontSize: size }),
1101
+ showTooltip: true
1102
+ }
1103
+ ];
1104
+ var FlexSizeField = () => {
1105
+ const { isSiteRtl } = useDirection(), [growField, setGrowField] = useStylesField("flex-grow"), [shrinkField, setShrinkField] = useStylesField("flex-shrink"), [basisField, setBasisField] = useStylesField("flex-basis");
1106
+ const grow = growField?.value || null, shrink = shrinkField?.value || null, basis = basisField?.value || null;
1107
+ const currentGroup = React31.useMemo(() => getActiveGroup({ grow, shrink, basis }), [grow, shrink, basis]), [activeGroup, setActiveGroup] = React31.useState(currentGroup);
1108
+ const onChangeGroup = (group = null) => {
1109
+ setActiveGroup(group);
1110
+ setBasisField(null);
1111
+ if (!group || group === "custom") {
1112
+ setGrowField(null);
1113
+ setShrinkField(null);
1114
+ return;
1115
+ }
1116
+ if (group === "flex-grow") {
1117
+ setGrowField({ $$type: "number", value: DEFAULT });
1118
+ setShrinkField(null);
1119
+ return;
1120
+ }
1121
+ setGrowField(null);
1122
+ setShrinkField({ $$type: "number", value: DEFAULT });
1123
+ };
1124
+ return /* @__PURE__ */ React31.createElement(DirectionProvider5, { rtl: isSiteRtl }, /* @__PURE__ */ React31.createElement(ThemeProvider5, null, /* @__PURE__ */ React31.createElement(Stack10, { gap: 2 }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(ControlLabel11, null, __13("Size", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React31.createElement(
1125
+ ControlToggleButtonGroup2,
836
1126
  {
837
- value: "space-evenly",
838
- label: __9("Space Evenly", "elementor"),
839
- renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(JustifyDistributeVerticalIcon, { fontSize: size, sx }),
840
- showTooltip: true
1127
+ value: activeGroup,
1128
+ onChange: onChangeGroup,
1129
+ items: items2,
1130
+ exclusive: true
841
1131
  }
842
- ];
843
- if (shouldReverseOrder) {
844
- options5.reverse();
1132
+ ))), "custom" === activeGroup && /* @__PURE__ */ React31.createElement(FlexCustomField, null))));
1133
+ };
1134
+ var FlexCustomField = () => /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(StylesField, { bind: "flex-grow" }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(ControlLabel11, null, __13("Grow", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React31.createElement(NumberControl2, { min: 0, shouldForceInt: true })))), /* @__PURE__ */ React31.createElement(StylesField, { bind: "flex-shrink" }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(ControlLabel11, null, __13("Shrink", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React31.createElement(NumberControl2, { min: 0, shouldForceInt: true })))), /* @__PURE__ */ React31.createElement(StylesField, { bind: "flex-basis" }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(ControlLabel11, null, __13("Basis", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React31.createElement(SizeControl2, null)))));
1135
+ var getActiveGroup = ({
1136
+ grow,
1137
+ shrink,
1138
+ basis
1139
+ }) => {
1140
+ if (null === grow && null === shrink && !basis) {
1141
+ return null;
1142
+ }
1143
+ if (shrink && grow || basis) {
1144
+ return "custom";
1145
+ }
1146
+ if (grow === DEFAULT) {
1147
+ return "flex-grow";
1148
+ }
1149
+ if (shrink === DEFAULT) {
1150
+ return "flex-shrink";
1151
+ }
1152
+ return "custom";
1153
+ };
1154
+
1155
+ // src/components/style-sections/layout-section/justify-content-field.tsx
1156
+ import * as React32 from "react";
1157
+ import { ControlLabel as ControlLabel12, ToggleControl as ToggleControl5 } from "@elementor/editor-controls";
1158
+ import {
1159
+ JustifyBottomIcon,
1160
+ JustifyCenterIcon as CenterIcon3,
1161
+ JustifyDistributeVerticalIcon as EvenlyIcon,
1162
+ JustifySpaceAroundVerticalIcon as AroundIcon,
1163
+ JustifySpaceBetweenVerticalIcon as BetweenIcon,
1164
+ JustifyTopIcon
1165
+ } from "@elementor/icons";
1166
+ import { DirectionProvider as DirectionProvider6, Stack as Stack11, ThemeProvider as ThemeProvider6, withDirection as withDirection4 } from "@elementor/ui";
1167
+ import { __ as __14 } from "@wordpress/i18n";
1168
+ var StartIcon3 = withDirection4(JustifyTopIcon);
1169
+ var EndIcon3 = withDirection4(JustifyBottomIcon);
1170
+ var iconProps3 = {
1171
+ isClockwise: true,
1172
+ offset: -90
1173
+ };
1174
+ var options4 = [
1175
+ {
1176
+ value: "start",
1177
+ label: __14("Start", "elementor"),
1178
+ renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: StartIcon3, size, ...iconProps3 }),
1179
+ showTooltip: true
1180
+ },
1181
+ {
1182
+ value: "center",
1183
+ label: __14("Center", "elementor"),
1184
+ renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: CenterIcon3, size, ...iconProps3 }),
1185
+ showTooltip: true
1186
+ },
1187
+ {
1188
+ value: "end",
1189
+ label: __14("End", "elementor"),
1190
+ renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: EndIcon3, size, ...iconProps3 }),
1191
+ showTooltip: true
1192
+ },
1193
+ {
1194
+ value: "space-between",
1195
+ label: __14("Space between", "elementor"),
1196
+ renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: BetweenIcon, size, ...iconProps3 }),
1197
+ showTooltip: true
1198
+ },
1199
+ {
1200
+ value: "space-around",
1201
+ label: __14("Space around", "elementor"),
1202
+ renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: AroundIcon, size, ...iconProps3 }),
1203
+ showTooltip: true
1204
+ },
1205
+ {
1206
+ value: "space-evenly",
1207
+ label: __14("Space evenly", "elementor"),
1208
+ renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: EvenlyIcon, size, ...iconProps3 }),
1209
+ showTooltip: true
1210
+ }
1211
+ ];
1212
+ var JustifyContentField = () => {
1213
+ const { isSiteRtl } = useDirection();
1214
+ return /* @__PURE__ */ React32.createElement(DirectionProvider6, { rtl: isSiteRtl }, /* @__PURE__ */ React32.createElement(ThemeProvider6, null, /* @__PURE__ */ React32.createElement(StylesField, { bind: "justify-content" }, /* @__PURE__ */ React32.createElement(Stack11, { gap: 1 }, /* @__PURE__ */ React32.createElement(ControlLabel12, null, __14("Justify content", "elementor")), /* @__PURE__ */ React32.createElement(ToggleControl5, { options: options4, fullWidth: true })))));
1215
+ };
1216
+
1217
+ // src/components/style-sections/layout-section/wrap-field.tsx
1218
+ import * as React33 from "react";
1219
+ import { ControlLabel as ControlLabel13, ToggleControl as ToggleControl6 } from "@elementor/editor-controls";
1220
+ import { ArrowBackIcon, ArrowForwardIcon, ArrowRightIcon as ArrowRightIcon2 } from "@elementor/icons";
1221
+ import { DirectionProvider as DirectionProvider7, Grid as Grid9, ThemeProvider as ThemeProvider7 } from "@elementor/ui";
1222
+ import { __ as __15 } from "@wordpress/i18n";
1223
+ var options5 = [
1224
+ {
1225
+ value: "nowrap",
1226
+ label: __15("No wrap", "elementor"),
1227
+ renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(ArrowRightIcon2, { fontSize: size }),
1228
+ showTooltip: true
1229
+ },
1230
+ {
1231
+ value: "wrap",
1232
+ label: __15("Wrap", "elementor"),
1233
+ renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(ArrowBackIcon, { fontSize: size }),
1234
+ showTooltip: true
1235
+ },
1236
+ {
1237
+ value: "wrap-reverse",
1238
+ label: __15("Reversed wrap", "elementor"),
1239
+ renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(ArrowForwardIcon, { fontSize: size }),
1240
+ showTooltip: true
845
1241
  }
846
- return /* @__PURE__ */ React26.createElement(StylesField, { bind: "justify-content" }, /* @__PURE__ */ React26.createElement(Stack9, { gap: 1 }, /* @__PURE__ */ React26.createElement(ControlLabel7, null, __9("Justify Content", "elementor")), /* @__PURE__ */ React26.createElement(ToggleControl2, { options: options5, fullWidth: true })));
1242
+ ];
1243
+ var WrapField = () => {
1244
+ const { isSiteRtl } = useDirection();
1245
+ return /* @__PURE__ */ React33.createElement(DirectionProvider7, { rtl: isSiteRtl }, /* @__PURE__ */ React33.createElement(ThemeProvider7, null, /* @__PURE__ */ React33.createElement(StylesField, { bind: "flex-wrap" }, /* @__PURE__ */ React33.createElement(Grid9, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React33.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(ControlLabel13, null, __15("Wrap", "elementor"))), /* @__PURE__ */ React33.createElement(Grid9, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React33.createElement(ToggleControl6, { options: options5 }))))));
847
1246
  };
848
1247
 
849
1248
  // src/components/style-sections/layout-section/layout-section.tsx
850
1249
  var LayoutSection = () => {
851
1250
  const [display] = useStylesField("display");
852
- return /* @__PURE__ */ React27.createElement(Stack10, { gap: 2 }, /* @__PURE__ */ React27.createElement(DisplayField, null), "flex" === display && /* @__PURE__ */ React27.createElement(JustifyContentField, null));
1251
+ return /* @__PURE__ */ React34.createElement(Stack12, { gap: 2 }, /* @__PURE__ */ React34.createElement(DisplayField, null), "flex" === display?.value && /* @__PURE__ */ React34.createElement(FlexFields, null));
853
1252
  };
1253
+ var FlexFields = () => /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(FlexDirectionField, null), /* @__PURE__ */ React34.createElement(JustifyContentField, null), /* @__PURE__ */ React34.createElement(AlignItemsField, null), /* @__PURE__ */ React34.createElement(Divider3, null), /* @__PURE__ */ React34.createElement(WrapField, null), /* @__PURE__ */ React34.createElement(Divider3, null), /* @__PURE__ */ React34.createElement(ControlLabel14, null, __16("Flex child", "elementor")), /* @__PURE__ */ React34.createElement(AlignSelfChild, null), /* @__PURE__ */ React34.createElement(FlexOrderField, null), /* @__PURE__ */ React34.createElement(FlexSizeField, null));
854
1254
 
855
1255
  // src/components/style-sections/position-section/position-section.tsx
856
- import * as React31 from "react";
1256
+ import * as React38 from "react";
857
1257
  import { useCallback as useCallback3 } from "react";
858
- import { Stack as Stack12 } from "@elementor/ui";
1258
+ import { Stack as Stack14 } from "@elementor/ui";
859
1259
 
860
1260
  // src/hooks/use-style-prop-history.ts
861
- import { useCallback as useCallback2, useMemo as useMemo2 } from "react";
1261
+ import { useCallback as useCallback2, useMemo as useMemo3 } from "react";
862
1262
  import { getElementStyles, getVariantByMeta, updateStyle as updateStyle2 } from "@elementor/editor-elements";
863
1263
 
864
1264
  // src/hooks/use-prop-value-history.ts
865
- import { useCallback, useMemo } from "react";
1265
+ import { useCallback, useMemo as useMemo2 } from "react";
866
1266
  import { getSessionStorageItem, setSessionStorageItem } from "@elementor/utils";
867
1267
  var PROPS_VALUES_HISTORY_PREFIX = "elementor/editor-editing-panel/prop-value-history";
868
1268
  var usePropValueHistory = () => {
@@ -896,7 +1296,7 @@ var usePropValueHistory = () => {
896
1296
  },
897
1297
  [getElementPropsHistory, elementKey]
898
1298
  );
899
- return useMemo(() => ({ getPropValue, setPropValue, removeProp }), [getPropValue, removeProp, setPropValue]);
1299
+ return useMemo2(() => ({ getPropValue, setPropValue, removeProp }), [getPropValue, removeProp, setPropValue]);
900
1300
  };
901
1301
 
902
1302
  // src/hooks/use-style-prop-history.ts
@@ -952,53 +1352,53 @@ var useStylePropsHistory = (props) => {
952
1352
  bind: "classes"
953
1353
  });
954
1354
  }, [element.id, meta, props, styleDefID]);
955
- return useMemo2(
1355
+ return useMemo3(
956
1356
  () => ({ saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps }),
957
1357
  [saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps]
958
1358
  );
959
1359
  };
960
1360
 
961
1361
  // src/components/style-sections/position-section/dimensions-field.tsx
962
- import * as React28 from "react";
963
- import { ControlLabel as ControlLabel8, SizeControl as SizeControl2 } from "@elementor/editor-controls";
1362
+ import * as React35 from "react";
1363
+ import { ControlLabel as ControlLabel15, SizeControl as SizeControl3 } from "@elementor/editor-controls";
964
1364
  import { SideBottomIcon as SideBottomIcon2, SideLeftIcon as SideLeftIcon2, SideRightIcon as SideRightIcon2, SideTopIcon as SideTopIcon2 } from "@elementor/icons";
965
- import { Grid as Grid4, Stack as Stack11 } from "@elementor/ui";
966
- import { __ as __10 } from "@wordpress/i18n";
1365
+ import { Grid as Grid10, Stack as Stack13 } from "@elementor/ui";
1366
+ import { __ as __17 } from "@wordpress/i18n";
967
1367
  var sideIcons = {
968
- left: /* @__PURE__ */ React28.createElement(SideLeftIcon2, { fontSize: "tiny" }),
969
- right: /* @__PURE__ */ React28.createElement(SideRightIcon2, { fontSize: "tiny" }),
970
- top: /* @__PURE__ */ React28.createElement(SideTopIcon2, { fontSize: "tiny" }),
971
- bottom: /* @__PURE__ */ React28.createElement(SideBottomIcon2, { fontSize: "tiny" })
1368
+ left: /* @__PURE__ */ React35.createElement(SideLeftIcon2, { fontSize: "tiny" }),
1369
+ right: /* @__PURE__ */ React35.createElement(SideRightIcon2, { fontSize: "tiny" }),
1370
+ top: /* @__PURE__ */ React35.createElement(SideTopIcon2, { fontSize: "tiny" }),
1371
+ bottom: /* @__PURE__ */ React35.createElement(SideBottomIcon2, { fontSize: "tiny" })
972
1372
  };
973
1373
  var DimensionsField = () => {
974
- return /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React28.createElement(DimensionField, { side: "top", label: __10("Top", "elementor") }), /* @__PURE__ */ React28.createElement(DimensionField, { side: "right", label: __10("Right", "elementor") })), /* @__PURE__ */ React28.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React28.createElement(DimensionField, { side: "bottom", label: __10("Bottom", "elementor") }), /* @__PURE__ */ React28.createElement(DimensionField, { side: "left", label: __10("Left", "elementor") })));
1374
+ return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(Stack13, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React35.createElement(DimensionField, { side: "top", label: __17("Top", "elementor") }), /* @__PURE__ */ React35.createElement(DimensionField, { side: "right", label: __17("Right", "elementor") })), /* @__PURE__ */ React35.createElement(Stack13, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React35.createElement(DimensionField, { side: "bottom", label: __17("Bottom", "elementor") }), /* @__PURE__ */ React35.createElement(DimensionField, { side: "left", label: __17("Left", "elementor") })));
975
1375
  };
976
1376
  var DimensionField = ({ side, label }) => {
977
- return /* @__PURE__ */ React28.createElement(Grid4, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React28.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React28.createElement(ControlLabel8, null, label)), /* @__PURE__ */ React28.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React28.createElement(StylesField, { bind: side }, /* @__PURE__ */ React28.createElement(SizeControl2, { startIcon: sideIcons[side] }))));
1377
+ return /* @__PURE__ */ React35.createElement(Grid10, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React35.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React35.createElement(ControlLabel15, null, label)), /* @__PURE__ */ React35.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React35.createElement(StylesField, { bind: side }, /* @__PURE__ */ React35.createElement(SizeControl3, { startIcon: sideIcons[side] }))));
978
1378
  };
979
1379
 
980
1380
  // src/components/style-sections/position-section/position-field.tsx
981
- import * as React29 from "react";
982
- import { ControlLabel as ControlLabel9, SelectControl as SelectControl3 } from "@elementor/editor-controls";
983
- import { Grid as Grid5 } from "@elementor/ui";
984
- import { __ as __11 } from "@wordpress/i18n";
1381
+ import * as React36 from "react";
1382
+ import { ControlLabel as ControlLabel16, SelectControl as SelectControl3 } from "@elementor/editor-controls";
1383
+ import { Grid as Grid11 } from "@elementor/ui";
1384
+ import { __ as __18 } from "@wordpress/i18n";
985
1385
  var positionOptions = [
986
- { label: __11("Static", "elementor"), value: "static" },
987
- { label: __11("Relative", "elementor"), value: "relative" },
988
- { label: __11("Absolute", "elementor"), value: "absolute" },
989
- { label: __11("Fixed", "elementor"), value: "fixed" }
1386
+ { label: __18("Static", "elementor"), value: "static" },
1387
+ { label: __18("Relative", "elementor"), value: "relative" },
1388
+ { label: __18("Absolute", "elementor"), value: "absolute" },
1389
+ { label: __18("Fixed", "elementor"), value: "fixed" }
990
1390
  ];
991
1391
  var PositionField = () => {
992
- return /* @__PURE__ */ React29.createElement(StylesField, { bind: "position" }, /* @__PURE__ */ React29.createElement(Grid5, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React29.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React29.createElement(ControlLabel9, null, __11("Position", "elementor"))), /* @__PURE__ */ React29.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React29.createElement(SelectControl3, { options: positionOptions }))));
1392
+ return /* @__PURE__ */ React36.createElement(StylesField, { bind: "position" }, /* @__PURE__ */ React36.createElement(Grid11, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React36.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(ControlLabel16, null, __18("Position", "elementor"))), /* @__PURE__ */ React36.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(SelectControl3, { options: positionOptions }))));
993
1393
  };
994
1394
 
995
1395
  // src/components/style-sections/position-section/z-index-field.tsx
996
- import * as React30 from "react";
997
- import { ControlLabel as ControlLabel10, NumberControl } from "@elementor/editor-controls";
998
- import { Grid as Grid6 } from "@elementor/ui";
999
- import { __ as __12 } from "@wordpress/i18n";
1396
+ import * as React37 from "react";
1397
+ import { ControlLabel as ControlLabel17, NumberControl as NumberControl3 } from "@elementor/editor-controls";
1398
+ import { Grid as Grid12 } from "@elementor/ui";
1399
+ import { __ as __19 } from "@wordpress/i18n";
1000
1400
  var ZIndexField = () => {
1001
- return /* @__PURE__ */ React30.createElement(StylesField, { bind: "z-index" }, /* @__PURE__ */ React30.createElement(Grid6, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel10, null, __12("Z-Index", "elementor"))), /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(NumberControl, null))));
1401
+ return /* @__PURE__ */ React37.createElement(StylesField, { bind: "z-index" }, /* @__PURE__ */ React37.createElement(Grid12, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React37.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(ControlLabel17, null, __19("Z-Index", "elementor"))), /* @__PURE__ */ React37.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(NumberControl3, null))));
1002
1402
  };
1003
1403
 
1004
1404
  // src/components/style-sections/position-section/position-section.tsx
@@ -1006,8 +1406,8 @@ var dimensionsPropKeys = ["top", "bottom", "left", "right"];
1006
1406
  var PositionSection = () => {
1007
1407
  const [positionValue] = useStylesField("position");
1008
1408
  usePositionChangeHandler();
1009
- const isNotStatic = positionValue && positionValue !== "static";
1010
- return /* @__PURE__ */ React31.createElement(Stack12, { gap: 1.5 }, /* @__PURE__ */ React31.createElement(PositionField, null), isNotStatic ? /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(DimensionsField, null), /* @__PURE__ */ React31.createElement(ZIndexField, null)) : null);
1409
+ const isNotStatic = positionValue && positionValue?.value !== "static";
1410
+ return /* @__PURE__ */ React38.createElement(Stack14, { gap: 1.5 }, /* @__PURE__ */ React38.createElement(PositionField, null), isNotStatic ? /* @__PURE__ */ React38.createElement(React38.Fragment, null, /* @__PURE__ */ React38.createElement(DimensionsField, null), /* @__PURE__ */ React38.createElement(ZIndexField, null)) : null);
1011
1411
  };
1012
1412
  var usePositionChangeHandler = () => {
1013
1413
  const dimensionsHistory = useStylePropsHistory(dimensionsPropKeys);
@@ -1032,73 +1432,73 @@ var usePositionChangeHandler = () => {
1032
1432
  };
1033
1433
 
1034
1434
  // src/components/style-sections/size-section/size-section.tsx
1035
- import * as React33 from "react";
1036
- import { ControlLabel as ControlLabel12, SizeControl as SizeControl3 } from "@elementor/editor-controls";
1037
- import { Divider as Divider3, Grid as Grid8, Stack as Stack13 } from "@elementor/ui";
1038
- import { __ as __14 } from "@wordpress/i18n";
1435
+ import * as React40 from "react";
1436
+ import { ControlLabel as ControlLabel19, SizeControl as SizeControl4 } from "@elementor/editor-controls";
1437
+ import { Divider as Divider4, Grid as Grid14, Stack as Stack15 } from "@elementor/ui";
1438
+ import { __ as __21 } from "@wordpress/i18n";
1039
1439
 
1040
1440
  // src/components/style-sections/size-section/overflow-field.tsx
1041
- import * as React32 from "react";
1042
- import { ControlLabel as ControlLabel11, ToggleControl as ToggleControl3 } from "@elementor/editor-controls";
1441
+ import * as React39 from "react";
1442
+ import { ControlLabel as ControlLabel18, ToggleControl as ToggleControl7 } from "@elementor/editor-controls";
1043
1443
  import { ExpandBottomIcon, EyeIcon, EyeOffIcon } from "@elementor/icons";
1044
- import { Grid as Grid7 } from "@elementor/ui";
1045
- import { __ as __13 } from "@wordpress/i18n";
1046
- var options = [
1444
+ import { Grid as Grid13 } from "@elementor/ui";
1445
+ import { __ as __20 } from "@wordpress/i18n";
1446
+ var options6 = [
1047
1447
  {
1048
1448
  value: "visible",
1049
- label: __13("Visible", "elementor"),
1050
- renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(EyeIcon, { fontSize: size }),
1449
+ label: __20("Visible", "elementor"),
1450
+ renderContent: ({ size }) => /* @__PURE__ */ React39.createElement(EyeIcon, { fontSize: size }),
1051
1451
  showTooltip: true
1052
1452
  },
1053
1453
  {
1054
1454
  value: "hidden",
1055
- label: __13("Hidden", "elementor"),
1056
- renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(EyeOffIcon, { fontSize: size }),
1455
+ label: __20("Hidden", "elementor"),
1456
+ renderContent: ({ size }) => /* @__PURE__ */ React39.createElement(EyeOffIcon, { fontSize: size }),
1057
1457
  showTooltip: true
1058
1458
  },
1059
1459
  {
1060
1460
  value: "auto",
1061
- label: __13("Auto", "elementor"),
1062
- renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(ExpandBottomIcon, { fontSize: size }),
1461
+ label: __20("Auto", "elementor"),
1462
+ renderContent: ({ size }) => /* @__PURE__ */ React39.createElement(ExpandBottomIcon, { fontSize: size }),
1063
1463
  showTooltip: true
1064
1464
  }
1065
1465
  ];
1066
1466
  var OverflowField = () => {
1067
- return /* @__PURE__ */ React32.createElement(StylesField, { bind: "overflow" }, /* @__PURE__ */ React32.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React32.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React32.createElement(ControlLabel11, null, __13("Overflow", "elementor"))), /* @__PURE__ */ React32.createElement(Grid7, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React32.createElement(ToggleControl3, { options }))));
1467
+ return /* @__PURE__ */ React39.createElement(StylesField, { bind: "overflow" }, /* @__PURE__ */ React39.createElement(Grid13, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React39.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React39.createElement(ControlLabel18, null, __20("Overflow", "elementor"))), /* @__PURE__ */ React39.createElement(Grid13, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React39.createElement(ToggleControl7, { options: options6 }))));
1068
1468
  };
1069
1469
 
1070
1470
  // src/components/style-sections/size-section/size-section.tsx
1071
1471
  var SizeSection = () => {
1072
- return /* @__PURE__ */ React33.createElement(Stack13, { gap: 1.5 }, /* @__PURE__ */ React33.createElement(Grid8, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React33.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(SizeField, { bind: "width", label: __14("Width", "elementor") })), /* @__PURE__ */ React33.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(SizeField, { bind: "height", label: __14("Height", "elementor") }))), /* @__PURE__ */ React33.createElement(Grid8, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React33.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(SizeField, { bind: "min-width", label: __14("Min. Width", "elementor") })), /* @__PURE__ */ React33.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(SizeField, { bind: "min-height", label: __14("Min. Height", "elementor") }))), /* @__PURE__ */ React33.createElement(Grid8, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React33.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(SizeField, { bind: "max-width", label: __14("Max. Width", "elementor") })), /* @__PURE__ */ React33.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(SizeField, { bind: "max-height", label: __14("Max. Height", "elementor") }))), /* @__PURE__ */ React33.createElement(Divider3, null), /* @__PURE__ */ React33.createElement(Stack13, null, /* @__PURE__ */ React33.createElement(OverflowField, null)));
1472
+ return /* @__PURE__ */ React40.createElement(Stack15, { gap: 1.5 }, /* @__PURE__ */ React40.createElement(Grid14, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "width", label: __21("Width", "elementor") })), /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "height", label: __21("Height", "elementor") }))), /* @__PURE__ */ React40.createElement(Grid14, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "min-width", label: __21("Min. Width", "elementor") })), /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "min-height", label: __21("Min. Height", "elementor") }))), /* @__PURE__ */ React40.createElement(Grid14, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "max-width", label: __21("Max. Width", "elementor") })), /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "max-height", label: __21("Max. Height", "elementor") }))), /* @__PURE__ */ React40.createElement(Divider4, null), /* @__PURE__ */ React40.createElement(Stack15, null, /* @__PURE__ */ React40.createElement(OverflowField, null)));
1073
1473
  };
1074
1474
  var SizeField = ({ label, bind }) => {
1075
- return /* @__PURE__ */ React33.createElement(StylesField, { bind }, /* @__PURE__ */ React33.createElement(Grid8, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React33.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React33.createElement(ControlLabel12, null, label)), /* @__PURE__ */ React33.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React33.createElement(SizeControl3, null))));
1475
+ return /* @__PURE__ */ React40.createElement(StylesField, { bind }, /* @__PURE__ */ React40.createElement(Grid14, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 12 }, /* @__PURE__ */ React40.createElement(ControlLabel19, null, label)), /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 12 }, /* @__PURE__ */ React40.createElement(SizeControl4, null))));
1076
1476
  };
1077
1477
 
1078
1478
  // src/components/style-sections/spacing-section/spacing-section.tsx
1079
- import * as React34 from "react";
1479
+ import * as React41 from "react";
1080
1480
  import { LinkedDimensionsControl } from "@elementor/editor-controls";
1081
- import { Divider as Divider4, Stack as Stack14 } from "@elementor/ui";
1082
- import { __ as __15 } from "@wordpress/i18n";
1481
+ import { Divider as Divider5, Stack as Stack16 } from "@elementor/ui";
1482
+ import { __ as __22 } from "@wordpress/i18n";
1083
1483
  var SpacingSection = () => {
1084
- return /* @__PURE__ */ React34.createElement(Stack14, { gap: 1.5 }, /* @__PURE__ */ React34.createElement(StylesField, { bind: "padding" }, /* @__PURE__ */ React34.createElement(LinkedDimensionsControl, { label: __15("Padding", "elementor") })), /* @__PURE__ */ React34.createElement(Divider4, null), /* @__PURE__ */ React34.createElement(StylesField, { bind: "margin" }, /* @__PURE__ */ React34.createElement(LinkedDimensionsControl, { label: __15("Margin", "elementor") })));
1484
+ return /* @__PURE__ */ React41.createElement(Stack16, { gap: 1.5 }, /* @__PURE__ */ React41.createElement(StylesField, { bind: "padding" }, /* @__PURE__ */ React41.createElement(LinkedDimensionsControl, { label: __22("Padding", "elementor") })), /* @__PURE__ */ React41.createElement(Divider5, null), /* @__PURE__ */ React41.createElement(StylesField, { bind: "margin" }, /* @__PURE__ */ React41.createElement(LinkedDimensionsControl, { label: __22("Margin", "elementor") })));
1085
1485
  };
1086
1486
 
1087
1487
  // src/components/style-sections/typography-section/typography-section.tsx
1088
- import * as React48 from "react";
1089
- import { Divider as Divider5, Stack as Stack17 } from "@elementor/ui";
1488
+ import * as React55 from "react";
1489
+ import { Divider as Divider6, Stack as Stack18 } from "@elementor/ui";
1090
1490
 
1091
1491
  // src/components/collapsible-content.tsx
1092
- import * as React35 from "react";
1093
- import { useState as useState2 } from "react";
1094
- import { Button, Collapse as Collapse3, Stack as Stack15 } from "@elementor/ui";
1095
- import { __ as __16 } from "@wordpress/i18n";
1492
+ import * as React42 from "react";
1493
+ import { useState as useState4 } from "react";
1494
+ import { Button, Collapse as Collapse3, Stack as Stack17 } from "@elementor/ui";
1495
+ import { __ as __23 } from "@wordpress/i18n";
1096
1496
  var CollapsibleContent = ({ children, defaultOpen = false }) => {
1097
- const [open, setOpen] = useState2(defaultOpen);
1497
+ const [open, setOpen] = useState4(defaultOpen);
1098
1498
  const handleToggle = () => {
1099
1499
  setOpen((prevOpen) => !prevOpen);
1100
1500
  };
1101
- return /* @__PURE__ */ React35.createElement(Stack15, { sx: { py: 0.5 } }, /* @__PURE__ */ React35.createElement(
1501
+ return /* @__PURE__ */ React42.createElement(Stack17, { sx: { py: 0.5 } }, /* @__PURE__ */ React42.createElement(
1102
1502
  Button,
1103
1503
  {
1104
1504
  fullWidth: true,
@@ -1106,17 +1506,17 @@ var CollapsibleContent = ({ children, defaultOpen = false }) => {
1106
1506
  color: "secondary",
1107
1507
  variant: "outlined",
1108
1508
  onClick: handleToggle,
1109
- endIcon: /* @__PURE__ */ React35.createElement(CollapseIcon, { open })
1509
+ endIcon: /* @__PURE__ */ React42.createElement(CollapseIcon, { open })
1110
1510
  },
1111
- open ? __16("Show less", "elementor") : __16("Show more", "elementor")
1112
- ), /* @__PURE__ */ React35.createElement(Collapse3, { in: open, timeout: "auto", unmountOnExit: true }, children));
1511
+ open ? __23("Show less", "elementor") : __23("Show more", "elementor")
1512
+ ), /* @__PURE__ */ React42.createElement(Collapse3, { in: open, timeout: "auto", unmountOnExit: true }, children));
1113
1513
  };
1114
1514
 
1115
1515
  // src/components/style-sections/typography-section/font-family-field.tsx
1116
- import * as React36 from "react";
1117
- import { ControlLabel as ControlLabel13, FontFamilyControl } from "@elementor/editor-controls";
1118
- import { Grid as Grid9 } from "@elementor/ui";
1119
- import { __ as __17 } from "@wordpress/i18n";
1516
+ import * as React43 from "react";
1517
+ import { ControlLabel as ControlLabel20, FontFamilyControl } from "@elementor/editor-controls";
1518
+ import { Grid as Grid15 } from "@elementor/ui";
1519
+ import { __ as __24 } from "@wordpress/i18n";
1120
1520
 
1121
1521
  // src/sync/get-elementor-config.ts
1122
1522
  var getElementorConfig = () => {
@@ -1130,184 +1530,220 @@ var FontFamilyField = () => {
1130
1530
  if (!fontFamilies) {
1131
1531
  return null;
1132
1532
  }
1133
- return /* @__PURE__ */ React36.createElement(StylesField, { bind: "font-family" }, /* @__PURE__ */ React36.createElement(Grid9, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React36.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(ControlLabel13, null, __17("Font Family", "elementor"))), /* @__PURE__ */ React36.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(FontFamilyControl, { fontFamilies }))));
1533
+ return /* @__PURE__ */ React43.createElement(StylesField, { bind: "font-family" }, /* @__PURE__ */ React43.createElement(Grid15, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React43.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(ControlLabel20, null, __24("Font Family", "elementor"))), /* @__PURE__ */ React43.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(FontFamilyControl, { fontFamilies }))));
1134
1534
  };
1135
1535
  var getFontFamilies = () => {
1136
1536
  const { controls } = getElementorConfig();
1137
- const options5 = controls?.font?.options;
1138
- if (!options5) {
1537
+ const options10 = controls?.font?.options;
1538
+ if (!options10) {
1139
1539
  return null;
1140
1540
  }
1141
- return options5;
1541
+ return options10;
1142
1542
  };
1143
1543
 
1144
1544
  // src/components/style-sections/typography-section/font-size-field.tsx
1145
- import * as React37 from "react";
1146
- import { ControlLabel as ControlLabel14, SizeControl as SizeControl4 } from "@elementor/editor-controls";
1147
- import { Grid as Grid10 } from "@elementor/ui";
1148
- import { __ as __18 } from "@wordpress/i18n";
1545
+ import * as React44 from "react";
1546
+ import { ControlLabel as ControlLabel21, SizeControl as SizeControl5 } from "@elementor/editor-controls";
1547
+ import { Grid as Grid16 } from "@elementor/ui";
1548
+ import { __ as __25 } from "@wordpress/i18n";
1149
1549
  var FontSizeField = () => {
1150
- return /* @__PURE__ */ React37.createElement(StylesField, { bind: "font-size" }, /* @__PURE__ */ React37.createElement(Grid10, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React37.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(ControlLabel14, null, __18("Font Size", "elementor"))), /* @__PURE__ */ React37.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(SizeControl4, null))));
1550
+ return /* @__PURE__ */ React44.createElement(StylesField, { bind: "font-size" }, /* @__PURE__ */ React44.createElement(Grid16, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React44.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(ControlLabel21, null, __25("Font Size", "elementor"))), /* @__PURE__ */ React44.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(SizeControl5, null))));
1151
1551
  };
1152
1552
 
1153
1553
  // src/components/style-sections/typography-section/font-weight-field.tsx
1154
- import * as React38 from "react";
1155
- import { ControlLabel as ControlLabel15, SelectControl as SelectControl4 } from "@elementor/editor-controls";
1156
- import { Grid as Grid11 } from "@elementor/ui";
1157
- import { __ as __19 } from "@wordpress/i18n";
1554
+ import * as React45 from "react";
1555
+ import { ControlLabel as ControlLabel22, SelectControl as SelectControl4 } from "@elementor/editor-controls";
1556
+ import { Grid as Grid17 } from "@elementor/ui";
1557
+ import { __ as __26 } from "@wordpress/i18n";
1158
1558
  var fontWeightOptions = [
1159
- { label: __19("Light - 400", "elementor"), value: "400" },
1160
- { label: __19("Regular - 500", "elementor"), value: "500" },
1161
- { label: __19("Semi Bold - 600", "elementor"), value: "600" },
1162
- { label: __19("Bold - 700", "elementor"), value: "700" },
1163
- { label: __19("Black - 900", "elementor"), value: "900" }
1559
+ { label: __26("Light - 400", "elementor"), value: "400" },
1560
+ { label: __26("Regular - 500", "elementor"), value: "500" },
1561
+ { label: __26("Semi Bold - 600", "elementor"), value: "600" },
1562
+ { label: __26("Bold - 700", "elementor"), value: "700" },
1563
+ { label: __26("Black - 900", "elementor"), value: "900" }
1164
1564
  ];
1165
1565
  var FontWeightField = () => {
1166
- return /* @__PURE__ */ React38.createElement(StylesField, { bind: "font-weight" }, /* @__PURE__ */ React38.createElement(Grid11, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React38.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(ControlLabel15, null, __19("Font Weight", "elementor"))), /* @__PURE__ */ React38.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(SelectControl4, { options: fontWeightOptions }))));
1566
+ return /* @__PURE__ */ React45.createElement(StylesField, { bind: "font-weight" }, /* @__PURE__ */ React45.createElement(Grid17, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React45.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(ControlLabel22, null, __26("Font Weight", "elementor"))), /* @__PURE__ */ React45.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(SelectControl4, { options: fontWeightOptions }))));
1167
1567
  };
1168
1568
 
1169
1569
  // src/components/style-sections/typography-section/letter-spacing-field.tsx
1170
- import * as React39 from "react";
1171
- import { ControlLabel as ControlLabel16, SizeControl as SizeControl5 } from "@elementor/editor-controls";
1172
- import { Grid as Grid12 } from "@elementor/ui";
1173
- import { __ as __20 } from "@wordpress/i18n";
1570
+ import * as React46 from "react";
1571
+ import { ControlLabel as ControlLabel23, SizeControl as SizeControl6 } from "@elementor/editor-controls";
1572
+ import { Grid as Grid18 } from "@elementor/ui";
1573
+ import { __ as __27 } from "@wordpress/i18n";
1174
1574
  var LetterSpacingField = () => {
1175
- return /* @__PURE__ */ React39.createElement(StylesField, { bind: "letter-spacing" }, /* @__PURE__ */ React39.createElement(Grid12, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React39.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React39.createElement(ControlLabel16, null, __20("Letter Spacing", "elementor"))), /* @__PURE__ */ React39.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React39.createElement(SizeControl5, null))));
1575
+ return /* @__PURE__ */ React46.createElement(StylesField, { bind: "letter-spacing" }, /* @__PURE__ */ React46.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React46.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(ControlLabel23, null, __27("Letter Spacing", "elementor"))), /* @__PURE__ */ React46.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(SizeControl6, null))));
1576
+ };
1577
+
1578
+ // src/components/style-sections/typography-section/line-height-field.tsx
1579
+ import * as React47 from "react";
1580
+ import { ControlLabel as ControlLabel24, SizeControl as SizeControl7 } from "@elementor/editor-controls";
1581
+ import { Grid as Grid19 } from "@elementor/ui";
1582
+ import { __ as __28 } from "@wordpress/i18n";
1583
+ var LineHeightField = () => {
1584
+ return /* @__PURE__ */ React47.createElement(StylesField, { bind: "line-height" }, /* @__PURE__ */ React47.createElement(Grid19, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React47.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ControlLabel24, null, __28("Line Height", "elementor"))), /* @__PURE__ */ React47.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(SizeControl7, null))));
1176
1585
  };
1177
1586
 
1178
1587
  // src/components/style-sections/typography-section/text-alignment-field.tsx
1179
- import * as React40 from "react";
1180
- import { ControlLabel as ControlLabel17, ToggleControl as ToggleControl4 } from "@elementor/editor-controls";
1588
+ import * as React48 from "react";
1589
+ import { ControlLabel as ControlLabel25, ToggleControl as ToggleControl8 } from "@elementor/editor-controls";
1181
1590
  import { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from "@elementor/icons";
1182
- import { Grid as Grid13 } from "@elementor/ui";
1183
- import { __ as __21 } from "@wordpress/i18n";
1184
- var options2 = [
1591
+ import { Grid as Grid20 } from "@elementor/ui";
1592
+ import { __ as __29 } from "@wordpress/i18n";
1593
+ var options7 = [
1185
1594
  {
1186
1595
  value: "left",
1187
- label: __21("Left", "elementor"),
1188
- renderContent: ({ size }) => /* @__PURE__ */ React40.createElement(AlignLeftIcon, { fontSize: size })
1596
+ label: __29("Left", "elementor"),
1597
+ renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(AlignLeftIcon, { fontSize: size })
1189
1598
  },
1190
1599
  {
1191
1600
  value: "center",
1192
- label: __21("Center", "elementor"),
1193
- renderContent: ({ size }) => /* @__PURE__ */ React40.createElement(AlignCenterIcon, { fontSize: size })
1601
+ label: __29("Center", "elementor"),
1602
+ renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(AlignCenterIcon, { fontSize: size })
1194
1603
  },
1195
1604
  {
1196
1605
  value: "right",
1197
- label: __21("Right", "elementor"),
1198
- renderContent: ({ size }) => /* @__PURE__ */ React40.createElement(AlignRightIcon, { fontSize: size })
1606
+ label: __29("Right", "elementor"),
1607
+ renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(AlignRightIcon, { fontSize: size })
1199
1608
  },
1200
1609
  {
1201
1610
  value: "justify",
1202
- label: __21("Justify", "elementor"),
1203
- renderContent: ({ size }) => /* @__PURE__ */ React40.createElement(AlignJustifiedIcon, { fontSize: size })
1611
+ label: __29("Justify", "elementor"),
1612
+ renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(AlignJustifiedIcon, { fontSize: size })
1204
1613
  }
1205
1614
  ];
1206
1615
  var TextAlignmentField = () => {
1207
- return /* @__PURE__ */ React40.createElement(StylesField, { bind: "text-align" }, /* @__PURE__ */ React40.createElement(Grid13, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(ControlLabel17, null, __21("Alignment", "elementor"))), /* @__PURE__ */ React40.createElement(Grid13, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React40.createElement(ToggleControl4, { options: options2 }))));
1616
+ return /* @__PURE__ */ React48.createElement(StylesField, { bind: "text-align" }, /* @__PURE__ */ React48.createElement(Grid20, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React48.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(ControlLabel25, null, __29("Alignment", "elementor"))), /* @__PURE__ */ React48.createElement(Grid20, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React48.createElement(ToggleControl8, { options: options7 }))));
1208
1617
  };
1209
1618
 
1210
1619
  // src/components/style-sections/typography-section/text-color-field.tsx
1211
- import * as React41 from "react";
1212
- import { ColorControl as ColorControl3, ControlLabel as ControlLabel18 } from "@elementor/editor-controls";
1213
- import { Grid as Grid14 } from "@elementor/ui";
1214
- import { __ as __22 } from "@wordpress/i18n";
1620
+ import * as React49 from "react";
1621
+ import { ColorControl as ColorControl3, ControlLabel as ControlLabel26 } from "@elementor/editor-controls";
1622
+ import { Grid as Grid21 } from "@elementor/ui";
1623
+ import { __ as __30 } from "@wordpress/i18n";
1215
1624
  var TextColorField = () => {
1216
- return /* @__PURE__ */ React41.createElement(StylesField, { bind: "color" }, /* @__PURE__ */ React41.createElement(Grid14, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React41.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(ControlLabel18, null, __22("Text Color", "elementor"))), /* @__PURE__ */ React41.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React41.createElement(ColorControl3, null))));
1625
+ return /* @__PURE__ */ React49.createElement(StylesField, { bind: "color" }, /* @__PURE__ */ React49.createElement(Grid21, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React49.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(ControlLabel26, null, __30("Text Color", "elementor"))), /* @__PURE__ */ React49.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(ColorControl3, null))));
1217
1626
  };
1218
1627
 
1219
1628
  // src/components/style-sections/typography-section/text-direction-field.tsx
1220
- import * as React42 from "react";
1221
- import { ControlLabel as ControlLabel19, ToggleControl as ToggleControl5 } from "@elementor/editor-controls";
1629
+ import * as React50 from "react";
1630
+ import { ControlLabel as ControlLabel27, ToggleControl as ToggleControl9 } from "@elementor/editor-controls";
1222
1631
  import { TextDirectionLtrIcon, TextDirectionRtlIcon } from "@elementor/icons";
1223
- import { Grid as Grid15 } from "@elementor/ui";
1224
- import { __ as __23 } from "@wordpress/i18n";
1225
- var options3 = [
1632
+ import { Grid as Grid22 } from "@elementor/ui";
1633
+ import { __ as __31 } from "@wordpress/i18n";
1634
+ var options8 = [
1226
1635
  {
1227
1636
  value: "ltr",
1228
- label: __23("Left to Right", "elementor"),
1229
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(TextDirectionLtrIcon, { fontSize: size })
1637
+ label: __31("Left to Right", "elementor"),
1638
+ renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(TextDirectionLtrIcon, { fontSize: size })
1230
1639
  },
1231
1640
  {
1232
1641
  value: "rtl",
1233
- label: __23("Right to Left", "elementor"),
1234
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(TextDirectionRtlIcon, { fontSize: size })
1642
+ label: __31("Right to Left", "elementor"),
1643
+ renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(TextDirectionRtlIcon, { fontSize: size })
1235
1644
  }
1236
1645
  ];
1237
1646
  var TextDirectionField = () => {
1238
- return /* @__PURE__ */ React42.createElement(StylesField, { bind: "direction" }, /* @__PURE__ */ React42.createElement(Grid15, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React42.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(ControlLabel19, null, __23("Direction", "elementor"))), /* @__PURE__ */ React42.createElement(Grid15, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React42.createElement(ToggleControl5, { options: options3 }))));
1647
+ return /* @__PURE__ */ React50.createElement(StylesField, { bind: "direction" }, /* @__PURE__ */ React50.createElement(Grid22, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React50.createElement(Grid22, { item: true, xs: 6 }, /* @__PURE__ */ React50.createElement(ControlLabel27, null, __31("Direction", "elementor"))), /* @__PURE__ */ React50.createElement(Grid22, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React50.createElement(ToggleControl9, { options: options8 }))));
1239
1648
  };
1240
1649
 
1241
1650
  // src/components/style-sections/typography-section/text-stroke-field.tsx
1242
- import * as React44 from "react";
1243
- import { ControlLabel as ControlLabel20, StrokeControl } from "@elementor/editor-controls";
1244
- import { __ as __25 } from "@wordpress/i18n";
1245
-
1246
- // src/components/collapsible-field.tsx
1247
- import * as React43 from "react";
1248
- import { useState as useState3 } from "react";
1249
- import { MinusIcon as MinusIcon2, PlusIcon as PlusIcon2 } from "@elementor/icons";
1250
- import { Collapse as Collapse4, IconButton as IconButton3, Stack as Stack16 } from "@elementor/ui";
1251
- import { __ as __24 } from "@wordpress/i18n";
1252
- var CollapsibleField = ({ label, children, defaultOpen = false }) => {
1253
- const [open, setOpen] = useState3(defaultOpen);
1254
- const handleToggle = () => {
1255
- setOpen((prevOpen) => !prevOpen);
1256
- };
1257
- return /* @__PURE__ */ React43.createElement(Stack16, { gap: 1.5 }, /* @__PURE__ */ React43.createElement(Stack16, { direction: "row", justifyContent: "space-between", alignItems: "center", sx: { py: 0.5 } }, label, /* @__PURE__ */ React43.createElement(
1258
- IconButton3,
1259
- {
1260
- onClick: handleToggle,
1261
- size: "tiny",
1262
- "aria-label": open ? __24("Close", "elementor") : __24("Expand", "elementor")
1651
+ import * as React51 from "react";
1652
+ import { StrokeControl } from "@elementor/editor-controls";
1653
+ import { __ as __32 } from "@wordpress/i18n";
1654
+ var initTextStroke = {
1655
+ $$type: "stroke",
1656
+ value: {
1657
+ color: {
1658
+ $$type: "color",
1659
+ value: "#000000"
1263
1660
  },
1264
- open ? /* @__PURE__ */ React43.createElement(MinusIcon2, { fontSize: "tiny" }) : /* @__PURE__ */ React43.createElement(PlusIcon2, { fontSize: "tiny" })
1265
- )), /* @__PURE__ */ React43.createElement(Collapse4, { in: open, unmountOnExit: true }, children));
1661
+ width: {
1662
+ $$type: "size",
1663
+ value: {
1664
+ unit: "px",
1665
+ size: 1
1666
+ }
1667
+ }
1668
+ }
1266
1669
  };
1267
-
1268
- // src/components/style-sections/typography-section/text-stroke-field.tsx
1269
1670
  var TextStrokeField = () => {
1270
- return /* @__PURE__ */ React44.createElement(StylesField, { bind: "-webkit-text-stroke" }, /* @__PURE__ */ React44.createElement(CollapsibleField, { label: /* @__PURE__ */ React44.createElement(ControlLabel20, null, __25("Text Stroke", "elementor")) }, /* @__PURE__ */ React44.createElement(StrokeControl, null)));
1671
+ const [textStroke, setTextStroke] = useStylesField("-webkit-text-stroke");
1672
+ const addTextStroke = () => {
1673
+ setTextStroke(initTextStroke);
1674
+ };
1675
+ const removeTextStroke = () => {
1676
+ setTextStroke(null);
1677
+ };
1678
+ const hasTextStroke = Boolean(textStroke);
1679
+ return /* @__PURE__ */ React51.createElement(
1680
+ AddOrRemoveContent,
1681
+ {
1682
+ label: __32("Text Stroke", "elementor"),
1683
+ isAdded: hasTextStroke,
1684
+ onAdd: addTextStroke,
1685
+ onRemove: removeTextStroke
1686
+ },
1687
+ /* @__PURE__ */ React51.createElement(StylesField, { bind: "-webkit-text-stroke" }, /* @__PURE__ */ React51.createElement(StrokeControl, null))
1688
+ );
1271
1689
  };
1272
1690
 
1273
1691
  // src/components/style-sections/typography-section/text-style-field.tsx
1274
- import * as React45 from "react";
1275
- import { ControlLabel as ControlLabel21 } from "@elementor/editor-controls";
1692
+ import * as React52 from "react";
1693
+ import { ControlLabel as ControlLabel28 } from "@elementor/editor-controls";
1276
1694
  import { ItalicIcon, StrikethroughIcon, UnderlineIcon } from "@elementor/icons";
1277
- import { Grid as Grid16, ToggleButton as ToggleButtonBase, ToggleButtonGroup } from "@elementor/ui";
1278
- import { __ as __26 } from "@wordpress/i18n";
1695
+ import { Grid as Grid23, ToggleButton as ToggleButtonBase, ToggleButtonGroup } from "@elementor/ui";
1696
+ import { __ as __33 } from "@wordpress/i18n";
1279
1697
  var buttonSize = "tiny";
1280
1698
  var TextStyleField = () => {
1281
1699
  const [fontStyle, setFontStyle] = useStylesField("font-style");
1282
1700
  const [textDecoration, setTextDecoration] = useStylesField("text-decoration");
1283
- const formats = [fontStyle, ...(textDecoration || "").split(" ")];
1284
- return /* @__PURE__ */ React45.createElement(Grid16, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React45.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(ControlLabel21, null, __26("Style", "elementor"))), /* @__PURE__ */ React45.createElement(Grid16, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React45.createElement(ToggleButtonGroup, { value: formats }, /* @__PURE__ */ React45.createElement(
1701
+ const formats = [fontStyle?.value, ...(textDecoration?.value || "").split(" ")];
1702
+ const handleSetFontStyle = (newValue) => {
1703
+ if (newValue === null) {
1704
+ return setFontStyle(null);
1705
+ }
1706
+ setFontStyle({
1707
+ $$type: "string",
1708
+ value: newValue
1709
+ });
1710
+ };
1711
+ const handleSetTextDecoration = (newValue) => {
1712
+ if (newValue === null) {
1713
+ return setTextDecoration(null);
1714
+ }
1715
+ setTextDecoration({
1716
+ $$type: "string",
1717
+ value: newValue
1718
+ });
1719
+ };
1720
+ return /* @__PURE__ */ React52.createElement(Grid23, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React52.createElement(Grid23, { item: true, xs: 6 }, /* @__PURE__ */ React52.createElement(ControlLabel28, null, __33("Style", "elementor"))), /* @__PURE__ */ React52.createElement(Grid23, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React52.createElement(ToggleButtonGroup, { value: formats }, /* @__PURE__ */ React52.createElement(
1285
1721
  ToggleButton,
1286
1722
  {
1287
1723
  value: "italic",
1288
- onChange: (v) => setFontStyle(fontStyle === v ? null : v),
1724
+ onChange: (v) => handleSetFontStyle(fontStyle?.value === v ? null : v),
1289
1725
  "aria-label": "italic",
1290
1726
  sx: { marginLeft: "auto" }
1291
1727
  },
1292
- /* @__PURE__ */ React45.createElement(ItalicIcon, { fontSize: buttonSize })
1293
- ), /* @__PURE__ */ React45.createElement(
1728
+ /* @__PURE__ */ React52.createElement(ItalicIcon, { fontSize: buttonSize })
1729
+ ), /* @__PURE__ */ React52.createElement(
1294
1730
  ShorthandControl,
1295
1731
  {
1296
1732
  value: "line-through",
1297
- currentValues: textDecoration || "",
1298
- updateValues: setTextDecoration,
1733
+ currentValues: textDecoration?.value || "",
1734
+ updateValues: handleSetTextDecoration,
1299
1735
  "aria-label": "line-through"
1300
1736
  },
1301
- /* @__PURE__ */ React45.createElement(StrikethroughIcon, { fontSize: buttonSize })
1302
- ), /* @__PURE__ */ React45.createElement(
1737
+ /* @__PURE__ */ React52.createElement(StrikethroughIcon, { fontSize: buttonSize })
1738
+ ), /* @__PURE__ */ React52.createElement(
1303
1739
  ShorthandControl,
1304
1740
  {
1305
1741
  value: "underline",
1306
- currentValues: textDecoration || "",
1307
- updateValues: setTextDecoration,
1742
+ currentValues: textDecoration?.value || "",
1743
+ updateValues: handleSetTextDecoration,
1308
1744
  "aria-label": "underline"
1309
1745
  },
1310
- /* @__PURE__ */ React45.createElement(UnderlineIcon, { fontSize: buttonSize })
1746
+ /* @__PURE__ */ React52.createElement(UnderlineIcon, { fontSize: buttonSize })
1311
1747
  ))));
1312
1748
  };
1313
1749
  var ShorthandControl = ({
@@ -1326,52 +1762,52 @@ var ShorthandControl = ({
1326
1762
  updateValues([...valuesArr, newValue].join(" "));
1327
1763
  }
1328
1764
  };
1329
- return /* @__PURE__ */ React45.createElement(ToggleButton, { value, onChange: toggleValue, selected, "aria-label": ariaLabel }, children);
1765
+ return /* @__PURE__ */ React52.createElement(ToggleButton, { value, onChange: toggleValue, selected, "aria-label": ariaLabel }, children);
1330
1766
  };
1331
1767
  var ToggleButton = ({ onChange, ...props }) => {
1332
1768
  const handleChange = (_e, newValue) => {
1333
1769
  onChange(newValue);
1334
1770
  };
1335
- return /* @__PURE__ */ React45.createElement(ToggleButtonBase, { ...props, onChange: handleChange, size: buttonSize });
1771
+ return /* @__PURE__ */ React52.createElement(ToggleButtonBase, { ...props, onChange: handleChange, size: buttonSize });
1336
1772
  };
1337
1773
 
1338
1774
  // src/components/style-sections/typography-section/transform-field.tsx
1339
- import * as React46 from "react";
1340
- import { ControlLabel as ControlLabel22, ToggleControl as ToggleControl6 } from "@elementor/editor-controls";
1775
+ import * as React53 from "react";
1776
+ import { ControlLabel as ControlLabel29, ToggleControl as ToggleControl10 } from "@elementor/editor-controls";
1341
1777
  import { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon } from "@elementor/icons";
1342
- import { Grid as Grid17 } from "@elementor/ui";
1343
- import { __ as __27 } from "@wordpress/i18n";
1344
- var options4 = [
1778
+ import { Grid as Grid24 } from "@elementor/ui";
1779
+ import { __ as __34 } from "@wordpress/i18n";
1780
+ var options9 = [
1345
1781
  {
1346
1782
  value: "capitalize",
1347
- label: __27("Capitalize", "elementor"),
1348
- renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(LetterCaseIcon, { fontSize: size })
1783
+ label: __34("Capitalize", "elementor"),
1784
+ renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(LetterCaseIcon, { fontSize: size })
1349
1785
  },
1350
1786
  {
1351
1787
  value: "uppercase",
1352
- label: __27("Uppercase", "elementor"),
1353
- renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(LetterCaseUpperIcon, { fontSize: size })
1788
+ label: __34("Uppercase", "elementor"),
1789
+ renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(LetterCaseUpperIcon, { fontSize: size })
1354
1790
  },
1355
1791
  {
1356
1792
  value: "lowercase",
1357
- label: __27("Lowercase", "elementor"),
1358
- renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(LetterCaseLowerIcon, { fontSize: size })
1793
+ label: __34("Lowercase", "elementor"),
1794
+ renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(LetterCaseLowerIcon, { fontSize: size })
1359
1795
  }
1360
1796
  ];
1361
- var TransformField = () => /* @__PURE__ */ React46.createElement(StylesField, { bind: "text-transform" }, /* @__PURE__ */ React46.createElement(Grid17, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React46.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(ControlLabel22, null, __27("Transform", "elementor"))), /* @__PURE__ */ React46.createElement(Grid17, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React46.createElement(ToggleControl6, { options: options4 }))));
1797
+ var TransformField = () => /* @__PURE__ */ React53.createElement(StylesField, { bind: "text-transform" }, /* @__PURE__ */ React53.createElement(Grid24, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React53.createElement(Grid24, { item: true, xs: 6 }, /* @__PURE__ */ React53.createElement(ControlLabel29, null, __34("Transform", "elementor"))), /* @__PURE__ */ React53.createElement(Grid24, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React53.createElement(ToggleControl10, { options: options9 }))));
1362
1798
 
1363
1799
  // src/components/style-sections/typography-section/word-spacing-field.tsx
1364
- import * as React47 from "react";
1365
- import { ControlLabel as ControlLabel23, SizeControl as SizeControl6 } from "@elementor/editor-controls";
1366
- import { Grid as Grid18 } from "@elementor/ui";
1367
- import { __ as __28 } from "@wordpress/i18n";
1800
+ import * as React54 from "react";
1801
+ import { ControlLabel as ControlLabel30, SizeControl as SizeControl8 } from "@elementor/editor-controls";
1802
+ import { Grid as Grid25 } from "@elementor/ui";
1803
+ import { __ as __35 } from "@wordpress/i18n";
1368
1804
  var WordSpacingField = () => {
1369
- return /* @__PURE__ */ React47.createElement(StylesField, { bind: "word-spacing" }, /* @__PURE__ */ React47.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React47.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ControlLabel23, null, __28("Word Spacing", "elementor"))), /* @__PURE__ */ React47.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(SizeControl6, null))));
1805
+ return /* @__PURE__ */ React54.createElement(StylesField, { bind: "word-spacing" }, /* @__PURE__ */ React54.createElement(Grid25, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React54.createElement(Grid25, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(ControlLabel30, null, __35("Word Spacing", "elementor"))), /* @__PURE__ */ React54.createElement(Grid25, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(SizeControl8, null))));
1370
1806
  };
1371
1807
 
1372
1808
  // src/components/style-sections/typography-section/typography-section.tsx
1373
1809
  var TypographySection = () => {
1374
- return /* @__PURE__ */ React48.createElement(Stack17, { gap: 1.5 }, /* @__PURE__ */ React48.createElement(FontFamilyField, null), /* @__PURE__ */ React48.createElement(FontWeightField, null), /* @__PURE__ */ React48.createElement(FontSizeField, null), /* @__PURE__ */ React48.createElement(Divider5, null), /* @__PURE__ */ React48.createElement(TextColorField, null), /* @__PURE__ */ React48.createElement(CollapsibleContent, null, /* @__PURE__ */ React48.createElement(Stack17, { gap: 1.5, sx: { pt: 1.5 } }, /* @__PURE__ */ React48.createElement(LetterSpacingField, null), /* @__PURE__ */ React48.createElement(WordSpacingField, null), /* @__PURE__ */ React48.createElement(Divider5, null), /* @__PURE__ */ React48.createElement(TextAlignmentField, null), /* @__PURE__ */ React48.createElement(TextStyleField, null), /* @__PURE__ */ React48.createElement(TransformField, null), /* @__PURE__ */ React48.createElement(TextDirectionField, null), /* @__PURE__ */ React48.createElement(TextStrokeField, null))));
1810
+ return /* @__PURE__ */ React55.createElement(Stack18, { gap: 1.5 }, /* @__PURE__ */ React55.createElement(FontFamilyField, null), /* @__PURE__ */ React55.createElement(FontWeightField, null), /* @__PURE__ */ React55.createElement(FontSizeField, null), /* @__PURE__ */ React55.createElement(Divider6, null), /* @__PURE__ */ React55.createElement(TextAlignmentField, null), /* @__PURE__ */ React55.createElement(TextColorField, null), /* @__PURE__ */ React55.createElement(CollapsibleContent, null, /* @__PURE__ */ React55.createElement(Stack18, { gap: 1.5, sx: { pt: 1.5 } }, /* @__PURE__ */ React55.createElement(LineHeightField, null), /* @__PURE__ */ React55.createElement(LetterSpacingField, null), /* @__PURE__ */ React55.createElement(WordSpacingField, null), /* @__PURE__ */ React55.createElement(Divider6, null), /* @__PURE__ */ React55.createElement(TextStyleField, null), /* @__PURE__ */ React55.createElement(TransformField, null), /* @__PURE__ */ React55.createElement(TextDirectionField, null), /* @__PURE__ */ React55.createElement(TextStrokeField, null))));
1375
1811
  };
1376
1812
 
1377
1813
  // src/components/style-tab.tsx
@@ -1380,10 +1816,10 @@ var StyleTab = () => {
1380
1816
  const currentClassesProp = useCurrentClassesProp();
1381
1817
  const [activeStyleDefId, setActiveStyleDefId] = useActiveStyleDefId(currentClassesProp);
1382
1818
  const breakpoint = useActiveBreakpoint();
1383
- return /* @__PURE__ */ React49.createElement(ClassesPropProvider, { prop: currentClassesProp }, /* @__PURE__ */ React49.createElement(StyleProvider, { meta: { breakpoint, state: null }, id: activeStyleDefId, setId: setActiveStyleDefId }, /* @__PURE__ */ React49.createElement(CssClassSelectorSection, null), /* @__PURE__ */ React49.createElement(Divider6, null), /* @__PURE__ */ React49.createElement(SectionsList, null, /* @__PURE__ */ React49.createElement(Section, { title: __29("Layout", "elementor") }, /* @__PURE__ */ React49.createElement(LayoutSection, null)), /* @__PURE__ */ React49.createElement(Section, { title: __29("Spacing", "elementor") }, /* @__PURE__ */ React49.createElement(SpacingSection, null)), /* @__PURE__ */ React49.createElement(Section, { title: __29("Size", "elementor") }, /* @__PURE__ */ React49.createElement(SizeSection, null)), /* @__PURE__ */ React49.createElement(Section, { title: __29("Position", "elementor") }, /* @__PURE__ */ React49.createElement(PositionSection, null)), /* @__PURE__ */ React49.createElement(Section, { title: __29("Typography", "elementor") }, /* @__PURE__ */ React49.createElement(TypographySection, null)), /* @__PURE__ */ React49.createElement(Section, { title: __29("Background", "elementor") }, /* @__PURE__ */ React49.createElement(BackgroundSection, null)), /* @__PURE__ */ React49.createElement(Section, { title: __29("Border", "elementor") }, /* @__PURE__ */ React49.createElement(BorderSection, null)), /* @__PURE__ */ React49.createElement(Section, { title: __29("Effects", "elementor") }, /* @__PURE__ */ React49.createElement(EffectsSection, null)))));
1819
+ return /* @__PURE__ */ React56.createElement(ClassesPropProvider, { prop: currentClassesProp }, /* @__PURE__ */ React56.createElement(StyleProvider, { meta: { breakpoint, state: null }, id: activeStyleDefId, setId: setActiveStyleDefId }, /* @__PURE__ */ React56.createElement(CssClassSelector, null), /* @__PURE__ */ React56.createElement(Divider7, null), /* @__PURE__ */ React56.createElement(SectionsList, null, /* @__PURE__ */ React56.createElement(Section, { title: __36("Layout", "elementor") }, /* @__PURE__ */ React56.createElement(LayoutSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Spacing", "elementor") }, /* @__PURE__ */ React56.createElement(SpacingSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Size", "elementor") }, /* @__PURE__ */ React56.createElement(SizeSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Position", "elementor") }, /* @__PURE__ */ React56.createElement(PositionSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Typography", "elementor") }, /* @__PURE__ */ React56.createElement(TypographySection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Background", "elementor") }, /* @__PURE__ */ React56.createElement(BackgroundSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Border", "elementor") }, /* @__PURE__ */ React56.createElement(BorderSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Effects", "elementor") }, /* @__PURE__ */ React56.createElement(EffectsSection, null)))));
1384
1820
  };
1385
1821
  function useActiveStyleDefId(currentClassesProp) {
1386
- const [activeStyledDefId, setActiveStyledDefId] = useState4(null);
1822
+ const [activeStyledDefId, setActiveStyledDefId] = useState5(null);
1387
1823
  const fallback = useFirstElementStyleDef(currentClassesProp);
1388
1824
  const newId = useGeneratedId();
1389
1825
  return [activeStyledDefId || fallback?.id || newId, setActiveStyledDefId];
@@ -1417,7 +1853,7 @@ var EditingPanelTabs = () => {
1417
1853
  return (
1418
1854
  // When switching between elements, the local states should be reset. We are using key to rerender the tabs.
1419
1855
  // Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key
1420
- /* @__PURE__ */ React50.createElement(Fragment5, { key: element.id }, /* @__PURE__ */ React50.createElement(Stack18, { direction: "column", sx: { width: "100%" } }, /* @__PURE__ */ React50.createElement(Tabs, { variant: "fullWidth", indicatorColor: "secondary", textColor: "inherit", ...getTabsProps() }, /* @__PURE__ */ React50.createElement(Tab, { label: __30("General", "elementor"), ...getTabProps("settings") }), /* @__PURE__ */ React50.createElement(Tab, { label: __30("Style", "elementor"), ...getTabProps("style") })), /* @__PURE__ */ React50.createElement(Divider7, null), /* @__PURE__ */ React50.createElement(TabPanel, { ...getTabPanelProps("settings"), disablePadding: true }, /* @__PURE__ */ React50.createElement(SettingsTab, null)), /* @__PURE__ */ React50.createElement(TabPanel, { ...getTabPanelProps("style"), disablePadding: true }, /* @__PURE__ */ React50.createElement(StyleTab, null))))
1856
+ /* @__PURE__ */ React57.createElement(Fragment7, { key: element.id }, /* @__PURE__ */ React57.createElement(Stack19, { direction: "column", sx: { width: "100%" } }, /* @__PURE__ */ React57.createElement(Tabs, { variant: "fullWidth", indicatorColor: "secondary", textColor: "inherit", ...getTabsProps() }, /* @__PURE__ */ React57.createElement(Tab, { label: __37("General", "elementor"), ...getTabProps("settings") }), /* @__PURE__ */ React57.createElement(Tab, { label: __37("Style", "elementor"), ...getTabProps("style") })), /* @__PURE__ */ React57.createElement(Divider8, null), /* @__PURE__ */ React57.createElement(TabPanel, { ...getTabPanelProps("settings"), disablePadding: true }, /* @__PURE__ */ React57.createElement(SettingsTab, null)), /* @__PURE__ */ React57.createElement(TabPanel, { ...getTabPanelProps("style"), disablePadding: true }, /* @__PURE__ */ React57.createElement(StyleTab, null))))
1421
1857
  );
1422
1858
  };
1423
1859
 
@@ -1430,8 +1866,8 @@ var EditingPanel = () => {
1430
1866
  if (!element || !elementType) {
1431
1867
  return null;
1432
1868
  }
1433
- const panelTitle = __31("Edit %s", "elementor").replace("%s", elementType.title);
1434
- return /* @__PURE__ */ React51.createElement(ErrorBoundary, { fallback: /* @__PURE__ */ React51.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React51.createElement(Panel, null, /* @__PURE__ */ React51.createElement(PanelHeader, null, /* @__PURE__ */ React51.createElement(PanelHeaderTitle, null, panelTitle)), /* @__PURE__ */ React51.createElement(PanelBody, null, /* @__PURE__ */ React51.createElement(ControlActionsProvider, { items: menuItems }, /* @__PURE__ */ React51.createElement(ControlReplacementProvider, { ...controlReplacement }, /* @__PURE__ */ React51.createElement(ElementProvider, { element, elementType }, /* @__PURE__ */ React51.createElement(EditingPanelTabs, null)))))));
1869
+ const panelTitle = __38("Edit %s", "elementor").replace("%s", elementType.title);
1870
+ return /* @__PURE__ */ React58.createElement(ErrorBoundary, { fallback: /* @__PURE__ */ React58.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React58.createElement(Panel, null, /* @__PURE__ */ React58.createElement(PanelHeader, null, /* @__PURE__ */ React58.createElement(PanelHeaderTitle, null, panelTitle)), /* @__PURE__ */ React58.createElement(PanelBody, null, /* @__PURE__ */ React58.createElement(ControlActionsProvider, { items: menuItems }, /* @__PURE__ */ React58.createElement(ControlReplacementProvider, { ...controlReplacement }, /* @__PURE__ */ React58.createElement(ElementProvider, { element, elementType }, /* @__PURE__ */ React58.createElement(EditingPanelTabs, null)))))));
1435
1871
  };
1436
1872
 
1437
1873
  // src/panel.ts
@@ -1488,19 +1924,19 @@ var EditingPanelHooks = () => {
1488
1924
  };
1489
1925
 
1490
1926
  // src/dynamics/components/dynamic-selection-control.tsx
1491
- import * as React54 from "react";
1927
+ import * as React61 from "react";
1492
1928
  import { useId as useId3 } from "react";
1493
- import { ControlLabel as ControlLabel24, useBoundProp as useBoundProp3 } from "@elementor/editor-controls";
1929
+ import { ControlLabel as ControlLabel31, useBoundProp as useBoundProp3 } from "@elementor/editor-controls";
1494
1930
  import { DatabaseIcon, SettingsIcon, XIcon as XIcon2 } from "@elementor/icons";
1495
1931
  import {
1496
1932
  bindPopover as bindPopover2,
1497
1933
  bindTrigger,
1498
1934
  Box as Box5,
1499
- Divider as Divider9,
1500
- IconButton as IconButton4,
1935
+ Divider as Divider10,
1936
+ IconButton as IconButton3,
1501
1937
  Paper,
1502
1938
  Popover as Popover2,
1503
- Stack as Stack20,
1939
+ Stack as Stack21,
1504
1940
  Tab as Tab2,
1505
1941
  TabPanel as TabPanel2,
1506
1942
  Tabs as Tabs2,
@@ -1509,17 +1945,18 @@ import {
1509
1945
  usePopupState as usePopupState2,
1510
1946
  useTabs as useTabs2
1511
1947
  } from "@elementor/ui";
1512
- import { __ as __33 } from "@wordpress/i18n";
1948
+ import { __ as __40 } from "@wordpress/i18n";
1513
1949
 
1514
1950
  // src/dynamics/dynamic-control.tsx
1515
- import * as React52 from "react";
1951
+ import * as React59 from "react";
1516
1952
  import { BoundPropProvider as BoundPropProvider3, useBoundProp } from "@elementor/editor-controls";
1953
+ import { isTransformable as isTransformable2 } from "@elementor/editor-props";
1517
1954
 
1518
1955
  // src/dynamics/hooks/use-dynamic-tag.ts
1519
- import { useMemo as useMemo4 } from "react";
1956
+ import { useMemo as useMemo5 } from "react";
1520
1957
 
1521
1958
  // src/dynamics/hooks/use-prop-dynamic-tags.ts
1522
- import { useMemo as useMemo3 } from "react";
1959
+ import { useMemo as useMemo4 } from "react";
1523
1960
 
1524
1961
  // src/dynamics/sync/get-elementor-config.ts
1525
1962
  var getElementorConfig2 = () => {
@@ -1540,7 +1977,11 @@ var getAtomicDynamicTags = () => {
1540
1977
  };
1541
1978
 
1542
1979
  // src/dynamics/utils.ts
1543
- import { isTransformable } from "@elementor/editor-props";
1980
+ import {
1981
+ createPropUtils,
1982
+ isTransformable
1983
+ } from "@elementor/editor-props";
1984
+ import { z } from "@elementor/schema";
1544
1985
  var DYNAMIC_PROP_TYPE_KEY = "dynamic";
1545
1986
  var isDynamicPropType = (prop) => prop.key === DYNAMIC_PROP_TYPE_KEY;
1546
1987
  var getDynamicPropType = (propType) => {
@@ -1553,6 +1994,13 @@ var isDynamicPropValue = (prop) => {
1553
1994
  var supportsDynamic = (propType) => {
1554
1995
  return !!getDynamicPropType(propType);
1555
1996
  };
1997
+ var dynamicPropTypeUtil = createPropUtils(
1998
+ DYNAMIC_PROP_TYPE_KEY,
1999
+ z.strictObject({
2000
+ name: z.string(),
2001
+ settings: z.record(z.any()).optional()
2002
+ })
2003
+ );
1556
2004
 
1557
2005
  // src/dynamics/hooks/use-prop-dynamic-tags.ts
1558
2006
  var usePropDynamicTags = (propName) => {
@@ -1563,7 +2011,7 @@ var usePropDynamicTags = (propName) => {
1563
2011
  const propDynamicType = getDynamicPropType(propType);
1564
2012
  categories = propDynamicType?.settings.categories || [];
1565
2013
  }
1566
- return useMemo3(() => getDynamicTagsByCategories(categories), [categories.join()]);
2014
+ return useMemo4(() => getDynamicTagsByCategories(categories), [categories.join()]);
1567
2015
  };
1568
2016
  var getDynamicTagsByCategories = (categories) => {
1569
2017
  const dynamicTags = getAtomicDynamicTags();
@@ -1579,13 +2027,13 @@ var getDynamicTagsByCategories = (categories) => {
1579
2027
  // src/dynamics/hooks/use-dynamic-tag.ts
1580
2028
  var useDynamicTag = (propName, tagName) => {
1581
2029
  const dynamicTags = usePropDynamicTags(propName);
1582
- return useMemo4(() => dynamicTags.find((tag) => tag.name === tagName) ?? null, [dynamicTags, tagName]);
2030
+ return useMemo5(() => dynamicTags.find((tag) => tag.name === tagName) ?? null, [dynamicTags, tagName]);
1583
2031
  };
1584
2032
 
1585
2033
  // src/dynamics/dynamic-control.tsx
1586
2034
  var DynamicControl = ({ bind, children }) => {
1587
- const { value, setValue, bind: propName } = useBoundProp();
1588
- const { name = "", settings } = value?.value ?? {};
2035
+ const { value, setValue, bind: propName } = useBoundProp(dynamicPropTypeUtil);
2036
+ const { name = "", settings } = value ?? {};
1589
2037
  const dynamicTag = useDynamicTag(propName, name);
1590
2038
  if (!dynamicTag) {
1591
2039
  throw new Error(`Dynamic tag ${name} not found`);
@@ -1594,70 +2042,69 @@ var DynamicControl = ({ bind, children }) => {
1594
2042
  const dynamicValue = settings?.[bind] ?? defaultValue;
1595
2043
  const setDynamicValue = (newValue) => {
1596
2044
  setValue({
1597
- $$type: "dynamic",
1598
- value: {
1599
- name,
1600
- settings: {
1601
- ...settings,
1602
- [bind]: newValue
1603
- }
2045
+ name,
2046
+ settings: {
2047
+ ...settings,
2048
+ // The value inside the dynamic is not a transformable value, so we need to store the whole object.
2049
+ [bind]: isTransformable2(newValue) ? newValue.value : newValue
1604
2050
  }
1605
2051
  });
1606
2052
  };
1607
- return /* @__PURE__ */ React52.createElement(BoundPropProvider3, { setValue: setDynamicValue, value: dynamicValue, bind }, children);
2053
+ return /* @__PURE__ */ React59.createElement(BoundPropProvider3, { setValue: setDynamicValue, value: dynamicValue, bind }, children);
1608
2054
  };
1609
2055
 
1610
2056
  // src/dynamics/components/dynamic-selection.tsx
1611
- import * as React53 from "react";
1612
- import { Fragment as Fragment6, useState as useState5 } from "react";
2057
+ import * as React60 from "react";
2058
+ import { Fragment as Fragment8, useState as useState6 } from "react";
1613
2059
  import { useBoundProp as useBoundProp2 } from "@elementor/editor-controls";
1614
2060
  import { PhotoIcon, SearchIcon } from "@elementor/icons";
1615
2061
  import {
1616
2062
  Box as Box4,
1617
- Divider as Divider8,
2063
+ Divider as Divider9,
1618
2064
  InputAdornment,
1619
2065
  Link,
1620
2066
  ListSubheader,
1621
2067
  MenuItem,
1622
2068
  MenuList,
1623
- Stack as Stack19,
2069
+ Stack as Stack20,
1624
2070
  TextField as TextField2,
1625
2071
  Typography as Typography3
1626
2072
  } from "@elementor/ui";
1627
- import { __ as __32 } from "@wordpress/i18n";
2073
+ import { __ as __39 } from "@wordpress/i18n";
1628
2074
  var SIZE3 = "tiny";
1629
2075
  var DynamicSelection = ({ onSelect }) => {
1630
- const [searchValue, setSearchValue] = useState5("");
2076
+ const [searchValue, setSearchValue] = useState6("");
1631
2077
  const { groups: dynamicGroups } = getAtomicDynamicTags() || {};
1632
- const { bind, value: currentValue, setValue } = useBoundProp2();
2078
+ const { value: anyValue } = useBoundProp2();
2079
+ const { bind, value: dynamicvalue, setValue } = useBoundProp2(dynamicPropTypeUtil);
1633
2080
  const { setPropValue: updatePropValueHistory } = usePropValueHistory();
1634
- const isCurrentValueDynamic = isDynamicPropValue(currentValue);
1635
- const options5 = useFilteredOptions(bind, searchValue);
2081
+ const isCurrentValueDynamic = !!dynamicvalue;
2082
+ const options10 = useFilteredOptions(bind, searchValue);
1636
2083
  const handleSearch = (event) => {
1637
2084
  setSearchValue(event.target.value);
1638
2085
  };
1639
2086
  const handleSetDynamicTag = (value) => {
1640
2087
  if (!isCurrentValueDynamic) {
1641
- updatePropValueHistory(bind, currentValue);
2088
+ updatePropValueHistory(bind, anyValue);
1642
2089
  }
1643
- setValue({ $$type: "dynamic", value: { name: value, settings: {} } });
2090
+ setValue({ name: value, settings: {} });
1644
2091
  onSelect?.();
1645
2092
  };
1646
- return /* @__PURE__ */ React53.createElement(Stack19, null, /* @__PURE__ */ React53.createElement(Box4, { px: 1.5, pb: 1 }, /* @__PURE__ */ React53.createElement(
2093
+ return /* @__PURE__ */ React60.createElement(Stack20, null, /* @__PURE__ */ React60.createElement(Box4, { px: 1.5, pb: 1 }, /* @__PURE__ */ React60.createElement(
1647
2094
  TextField2,
1648
2095
  {
1649
2096
  fullWidth: true,
1650
2097
  size: SIZE3,
1651
2098
  value: searchValue,
1652
2099
  onChange: handleSearch,
1653
- placeholder: __32("Search dynamic tag", "elementor"),
2100
+ placeholder: __39("Search dynamic tag", "elementor"),
1654
2101
  InputProps: {
1655
- startAdornment: /* @__PURE__ */ React53.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React53.createElement(SearchIcon, { fontSize: SIZE3 }))
2102
+ startAdornment: /* @__PURE__ */ React60.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React60.createElement(SearchIcon, { fontSize: SIZE3 }))
1656
2103
  }
1657
2104
  }
1658
- )), /* @__PURE__ */ React53.createElement(Divider8, null), /* @__PURE__ */ React53.createElement(Box4, { sx: { overflowY: "auto", height: 260, width: 220 } }, options5.length > 0 ? /* @__PURE__ */ React53.createElement(MenuList, { role: "listbox", tabIndex: 0 }, options5.map(([category, items], index) => /* @__PURE__ */ React53.createElement(Fragment6, { key: index }, /* @__PURE__ */ React53.createElement(ListSubheader, { sx: { typography: "caption", color: "text.tertiary" } }, dynamicGroups?.[category]?.title || category), items.map(({ value, label: tagLabel }) => {
1659
- const isSelected = isCurrentValueDynamic && value === currentValue?.value?.name;
1660
- return /* @__PURE__ */ React53.createElement(
2105
+ )), /* @__PURE__ */ React60.createElement(Divider9, null), /* @__PURE__ */ React60.createElement(Box4, { sx: { overflowY: "auto", height: 260, width: 220 } }, options10.length > 0 ? /* @__PURE__ */ React60.createElement(MenuList, { role: "listbox", tabIndex: 0 }, options10.map(([category, items3], index) => /* @__PURE__ */ React60.createElement(Fragment8, { key: index }, /* @__PURE__ */ React60.createElement(ListSubheader, { sx: { typography: "caption", color: "text.tertiary" } }, dynamicGroups?.[category]?.title || category), items3.map(({ value, label: tagLabel }) => {
2106
+ const isSelected = isCurrentValueDynamic && value === dynamicvalue?.name;
2107
+ return /* @__PURE__ */ React60.createElement(
1661
2108
  MenuItem,
1662
2109
  {
1663
2110
  key: value,
@@ -1668,7 +2115,7 @@ var DynamicSelection = ({ onSelect }) => {
1668
2115
  },
1669
2116
  tagLabel
1670
2117
  );
1671
- })))) : /* @__PURE__ */ React53.createElement(Stack19, { alignItems: "center", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React53.createElement(PhotoIcon, { fontSize: "large" }), /* @__PURE__ */ React53.createElement(Typography3, { align: "center", variant: "caption", color: "text.secondary" }, __32("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React53.createElement("br", null), "\u201C", searchValue, "\u201D."), /* @__PURE__ */ React53.createElement(Typography3, { align: "center", variant: "caption", color: "text.secondary" }, /* @__PURE__ */ React53.createElement(
2118
+ })))) : /* @__PURE__ */ React60.createElement(Stack20, { alignItems: "center", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React60.createElement(PhotoIcon, { fontSize: "large" }), /* @__PURE__ */ React60.createElement(Typography3, { align: "center", variant: "caption", color: "text.secondary" }, __39("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React60.createElement("br", null), "\u201C", searchValue, "\u201D."), /* @__PURE__ */ React60.createElement(Typography3, { align: "center", variant: "caption", color: "text.secondary" }, /* @__PURE__ */ React60.createElement(
1672
2119
  Link,
1673
2120
  {
1674
2121
  color: "secondary",
@@ -1676,12 +2123,12 @@ var DynamicSelection = ({ onSelect }) => {
1676
2123
  component: "button",
1677
2124
  onClick: () => setSearchValue("")
1678
2125
  },
1679
- __32("Clear the filters", "elementor")
1680
- ), "\xA0", __32("and try again.", "elementor")))));
2126
+ __39("Clear the filters", "elementor")
2127
+ ), "\xA0", __39("and try again.", "elementor")))));
1681
2128
  };
1682
2129
  var useFilteredOptions = (bind, searchValue) => {
1683
2130
  const dynamicTags = usePropDynamicTags(bind);
1684
- const options5 = dynamicTags.reduce((categories, { name, label, group }) => {
2131
+ const options10 = dynamicTags.reduce((categories, { name, label, group }) => {
1685
2132
  const isVisible = label.toLowerCase().includes(searchValue.trim().toLowerCase());
1686
2133
  if (!isVisible) {
1687
2134
  return categories;
@@ -1692,44 +2139,45 @@ var useFilteredOptions = (bind, searchValue) => {
1692
2139
  categories.get(group)?.push({ label, value: name });
1693
2140
  return categories;
1694
2141
  }, /* @__PURE__ */ new Map());
1695
- return [...options5];
2142
+ return [...options10];
1696
2143
  };
1697
2144
 
1698
2145
  // src/dynamics/components/dynamic-selection-control.tsx
1699
2146
  var SIZE4 = "tiny";
1700
2147
  var DynamicSelectionControl = () => {
1701
- const { bind, value, setValue } = useBoundProp3();
2148
+ const { setValue: setAnyValue } = useBoundProp3();
2149
+ const { bind, value } = useBoundProp3(dynamicPropTypeUtil);
1702
2150
  const { getPropValue: getPropValueFromHistory } = usePropValueHistory();
1703
- const { name: tagName = "" } = value?.value || {};
2151
+ const { name: tagName = "" } = value;
1704
2152
  const selectionPopoverId = useId3();
1705
2153
  const selectionPopoverState = usePopupState2({ variant: "popover", popupId: selectionPopoverId });
1706
2154
  const dynamicTag = useDynamicTag(bind, tagName);
1707
2155
  const removeDynamicTag = () => {
1708
2156
  const propValue = getPropValueFromHistory(bind);
1709
- setValue(propValue ?? null);
2157
+ setAnyValue(propValue ?? null);
1710
2158
  };
1711
2159
  if (!dynamicTag) {
1712
2160
  throw new Error(`Dynamic tag ${tagName} not found`);
1713
2161
  }
1714
- return /* @__PURE__ */ React54.createElement(Box5, null, /* @__PURE__ */ React54.createElement(
2162
+ return /* @__PURE__ */ React61.createElement(Box5, null, /* @__PURE__ */ React61.createElement(
1715
2163
  Tag,
1716
2164
  {
1717
2165
  fullWidth: true,
1718
2166
  showActionsOnHover: true,
1719
2167
  label: dynamicTag.label,
1720
- startIcon: /* @__PURE__ */ React54.createElement(DatabaseIcon, { fontSize: SIZE4 }),
2168
+ startIcon: /* @__PURE__ */ React61.createElement(DatabaseIcon, { fontSize: SIZE4 }),
1721
2169
  ...bindTrigger(selectionPopoverState),
1722
- actions: /* @__PURE__ */ React54.createElement(React54.Fragment, null, /* @__PURE__ */ React54.createElement(DynamicSettingsPopover, { dynamicTag }), /* @__PURE__ */ React54.createElement(
1723
- IconButton4,
2170
+ actions: /* @__PURE__ */ React61.createElement(React61.Fragment, null, /* @__PURE__ */ React61.createElement(DynamicSettingsPopover, { dynamicTag }), /* @__PURE__ */ React61.createElement(
2171
+ IconButton3,
1724
2172
  {
1725
2173
  size: SIZE4,
1726
2174
  onClick: removeDynamicTag,
1727
- "aria-label": __33("Remove dynamic value", "elementor")
2175
+ "aria-label": __40("Remove dynamic value", "elementor")
1728
2176
  },
1729
- /* @__PURE__ */ React54.createElement(XIcon2, { fontSize: SIZE4 })
2177
+ /* @__PURE__ */ React61.createElement(XIcon2, { fontSize: SIZE4 })
1730
2178
  ))
1731
2179
  }
1732
- ), /* @__PURE__ */ React54.createElement(
2180
+ ), /* @__PURE__ */ React61.createElement(
1733
2181
  Popover2,
1734
2182
  {
1735
2183
  disablePortal: true,
@@ -1737,7 +2185,7 @@ var DynamicSelectionControl = () => {
1737
2185
  anchorOrigin: { vertical: "bottom", horizontal: "left" },
1738
2186
  ...bindPopover2(selectionPopoverState)
1739
2187
  },
1740
- /* @__PURE__ */ React54.createElement(Stack20, null, /* @__PURE__ */ React54.createElement(Stack20, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React54.createElement(DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React54.createElement(Typography4, { variant: "subtitle2" }, __33("Dynamic Tags", "elementor")), /* @__PURE__ */ React54.createElement(IconButton4, { size: SIZE4, sx: { ml: "auto" }, onClick: selectionPopoverState.close }, /* @__PURE__ */ React54.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React54.createElement(DynamicSelection, { onSelect: selectionPopoverState.close }))
2188
+ /* @__PURE__ */ React61.createElement(Stack21, null, /* @__PURE__ */ React61.createElement(Stack21, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React61.createElement(DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React61.createElement(Typography4, { variant: "subtitle2" }, __40("Dynamic Tags", "elementor")), /* @__PURE__ */ React61.createElement(IconButton3, { size: SIZE4, sx: { ml: "auto" }, onClick: selectionPopoverState.close }, /* @__PURE__ */ React61.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React61.createElement(DynamicSelection, { onSelect: selectionPopoverState.close }))
1741
2189
  ));
1742
2190
  };
1743
2191
  var DynamicSettingsPopover = ({ dynamicTag }) => {
@@ -1747,22 +2195,22 @@ var DynamicSettingsPopover = ({ dynamicTag }) => {
1747
2195
  if (!hasDynamicSettings) {
1748
2196
  return null;
1749
2197
  }
1750
- return /* @__PURE__ */ React54.createElement(React54.Fragment, null, /* @__PURE__ */ React54.createElement(
1751
- IconButton4,
2198
+ return /* @__PURE__ */ React61.createElement(React61.Fragment, null, /* @__PURE__ */ React61.createElement(
2199
+ IconButton3,
1752
2200
  {
1753
2201
  size: SIZE4,
1754
2202
  ...bindTrigger(settingsPopupState),
1755
- "aria-label": __33("Settings", "elementor")
2203
+ "aria-label": __40("Settings", "elementor")
1756
2204
  },
1757
- /* @__PURE__ */ React54.createElement(SettingsIcon, { fontSize: SIZE4 })
1758
- ), /* @__PURE__ */ React54.createElement(
2205
+ /* @__PURE__ */ React61.createElement(SettingsIcon, { fontSize: SIZE4 })
2206
+ ), /* @__PURE__ */ React61.createElement(
1759
2207
  Popover2,
1760
2208
  {
1761
2209
  disableScrollLock: true,
1762
2210
  anchorOrigin: { vertical: "bottom", horizontal: "center" },
1763
2211
  ...bindPopover2(settingsPopupState)
1764
2212
  },
1765
- /* @__PURE__ */ React54.createElement(Paper, { component: Stack20, sx: { minHeight: "300px", width: "220px" } }, /* @__PURE__ */ React54.createElement(Stack20, { direction: "row", alignItems: "center", px: 1.5, pt: 2, pb: 1 }, /* @__PURE__ */ React54.createElement(DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React54.createElement(Typography4, { variant: "subtitle2" }, dynamicTag.label), /* @__PURE__ */ React54.createElement(IconButton4, { sx: { ml: "auto" }, size: SIZE4, onClick: settingsPopupState.close }, /* @__PURE__ */ React54.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React54.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls }))
2213
+ /* @__PURE__ */ React61.createElement(Paper, { component: Stack21, sx: { minHeight: "300px", width: "220px" } }, /* @__PURE__ */ React61.createElement(Stack21, { direction: "row", alignItems: "center", px: 1.5, pt: 2, pb: 1 }, /* @__PURE__ */ React61.createElement(DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React61.createElement(Typography4, { variant: "subtitle2" }, dynamicTag.label), /* @__PURE__ */ React61.createElement(IconButton3, { sx: { ml: "auto" }, size: SIZE4, onClick: settingsPopupState.close }, /* @__PURE__ */ React61.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React61.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls }))
1766
2214
  ));
1767
2215
  };
1768
2216
  var DynamicSettings = ({ controls }) => {
@@ -1771,10 +2219,10 @@ var DynamicSettings = ({ controls }) => {
1771
2219
  if (!tabs.length) {
1772
2220
  return null;
1773
2221
  }
1774
- return /* @__PURE__ */ React54.createElement(React54.Fragment, null, /* @__PURE__ */ React54.createElement(Tabs2, { indicatorColor: "secondary", textColor: "secondary", ...getTabsProps() }, tabs.map(({ value }, index) => /* @__PURE__ */ React54.createElement(Tab2, { key: index, label: value.label, sx: { px: 1, py: 0.5 }, ...getTabProps(index) }))), /* @__PURE__ */ React54.createElement(Divider9, null), tabs.map(({ value }, index) => {
1775
- return /* @__PURE__ */ React54.createElement(TabPanel2, { key: index, sx: { flexGrow: 1 }, ...getTabPanelProps(index) }, /* @__PURE__ */ React54.createElement(Stack20, { gap: 1, px: 2 }, value.items.map((item) => {
2222
+ return /* @__PURE__ */ React61.createElement(React61.Fragment, null, /* @__PURE__ */ React61.createElement(Tabs2, { indicatorColor: "secondary", textColor: "secondary", ...getTabsProps() }, tabs.map(({ value }, index) => /* @__PURE__ */ React61.createElement(Tab2, { key: index, label: value.label, sx: { px: 1, py: 0.5 }, ...getTabProps(index) }))), /* @__PURE__ */ React61.createElement(Divider10, null), tabs.map(({ value }, index) => {
2223
+ return /* @__PURE__ */ React61.createElement(TabPanel2, { key: index, sx: { flexGrow: 1 }, ...getTabPanelProps(index) }, /* @__PURE__ */ React61.createElement(Stack21, { gap: 1, px: 2 }, value.items.map((item) => {
1776
2224
  if (item.type === "control") {
1777
- return /* @__PURE__ */ React54.createElement(Control3, { key: item.value.bind, control: item.value });
2225
+ return /* @__PURE__ */ React61.createElement(Control3, { key: item.value.bind, control: item.value });
1778
2226
  }
1779
2227
  return null;
1780
2228
  })));
@@ -1784,14 +2232,14 @@ var Control3 = ({ control }) => {
1784
2232
  if (!getControlByType(control.type)) {
1785
2233
  return null;
1786
2234
  }
1787
- return /* @__PURE__ */ React54.createElement(DynamicControl, { bind: control.bind }, control.label ? /* @__PURE__ */ React54.createElement(ControlLabel24, null, control.label) : null, /* @__PURE__ */ React54.createElement(Control, { type: control.type, props: control.props }));
2235
+ return /* @__PURE__ */ React61.createElement(DynamicControl, { bind: control.bind }, control.label ? /* @__PURE__ */ React61.createElement(ControlLabel31, null, control.label) : null, /* @__PURE__ */ React61.createElement(Control, { type: control.type, props: control.props }));
1788
2236
  };
1789
2237
 
1790
2238
  // src/dynamics/hooks/use-prop-dynamic-action.tsx
1791
- import * as React55 from "react";
2239
+ import * as React62 from "react";
1792
2240
  import { useBoundProp as useBoundProp4 } from "@elementor/editor-controls";
1793
2241
  import { DatabaseIcon as DatabaseIcon2 } from "@elementor/icons";
1794
- import { __ as __34 } from "@wordpress/i18n";
2242
+ import { __ as __41 } from "@wordpress/i18n";
1795
2243
  var usePropDynamicAction = () => {
1796
2244
  const { bind } = useBoundProp4();
1797
2245
  const { elementType } = useElement();
@@ -1800,8 +2248,8 @@ var usePropDynamicAction = () => {
1800
2248
  return {
1801
2249
  visible,
1802
2250
  icon: DatabaseIcon2,
1803
- title: __34("Dynamic Tags", "elementor"),
1804
- popoverContent: ({ closePopover }) => /* @__PURE__ */ React55.createElement(DynamicSelection, { onSelect: closePopover })
2251
+ title: __41("Dynamic Tags", "elementor"),
2252
+ popoverContent: ({ closePopover }) => /* @__PURE__ */ React62.createElement(DynamicSelection, { onSelect: closePopover })
1805
2253
  };
1806
2254
  };
1807
2255