@elementor/editor-global-classes 3.33.0-116 → 3.33.0-118

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -7,18 +7,17 @@ import {
7
7
  } from "@elementor/editor-editing-panel";
8
8
  import { __registerPanel as registerPanel } from "@elementor/editor-panels";
9
9
  import { stylesRepository } from "@elementor/editor-styles-repository";
10
- import { __privateListenTo as listenTo, v1ReadyEvent } from "@elementor/editor-v1-adapters";
11
10
  import { __registerSlice as registerSlice } from "@elementor/store";
12
11
 
13
12
  // src/components/class-manager/class-manager-button.tsx
14
- import * as React18 from "react";
13
+ import * as React20 from "react";
15
14
  import {
16
15
  __useActiveDocument as useActiveDocument2,
17
16
  __useActiveDocumentActions as useActiveDocumentActions
18
17
  } from "@elementor/editor-documents";
19
18
  import { useUserStylesCapability } from "@elementor/editor-styles-repository";
20
19
  import { IconButton as IconButton5, Tooltip as Tooltip6 } from "@elementor/ui";
21
- import { __ as __14 } from "@wordpress/i18n";
20
+ import { __ as __15 } from "@wordpress/i18n";
22
21
 
23
22
  // src/global-classes-styles-provider.ts
24
23
  import { generateId } from "@elementor/editor-styles";
@@ -179,6 +178,13 @@ var slice = createSlice({
179
178
  state.data.items[payload.style.id] = mergedData;
180
179
  state.isDirty = true;
181
180
  },
181
+ updateMultiple(state, { payload }) {
182
+ localHistory.next(state.data);
183
+ Object.entries(payload).forEach(([id2, { modified }]) => {
184
+ state.data.items[id2].label = modified;
185
+ });
186
+ state.isDirty = false;
187
+ },
182
188
  updateProps(state, {
183
189
  payload
184
190
  }) {
@@ -361,6 +367,9 @@ var apiClient = {
361
367
  }
362
368
  })
363
369
  };
370
+ var API_ERROR_CODES = {
371
+ DUPLICATED_LABEL: "DUPLICATED_LABEL"
372
+ };
364
373
 
365
374
  // src/components/css-class-usage/utils.ts
366
375
  var transformData = (data) => Object.entries(data).reduce((acc, [key, value]) => {
@@ -391,7 +400,7 @@ function usePrefetchCssClassUsage() {
391
400
  }
392
401
 
393
402
  // src/components/class-manager/class-manager-panel.tsx
394
- import * as React17 from "react";
403
+ import * as React19 from "react";
395
404
  import { useEffect as useEffect2 } from "react";
396
405
  import { setDocumentModifiedStatus } from "@elementor/editor-documents";
397
406
  import {
@@ -408,17 +417,17 @@ import { XIcon } from "@elementor/icons";
408
417
  import { useMutation } from "@elementor/query";
409
418
  import { __dispatch as dispatch4 } from "@elementor/store";
410
419
  import {
411
- Alert,
412
- Box as Box9,
413
- Button as Button3,
420
+ Alert as Alert2,
421
+ Box as Box10,
422
+ Button as Button4,
414
423
  Chip as Chip4,
415
- DialogHeader,
416
- Divider as Divider3,
424
+ DialogHeader as DialogHeader2,
425
+ Divider as Divider4,
417
426
  ErrorBoundary,
418
427
  IconButton as IconButton4,
419
- Stack as Stack8
428
+ Stack as Stack9
420
429
  } from "@elementor/ui";
421
- import { __ as __13 } from "@wordpress/i18n";
430
+ import { __ as __14 } from "@wordpress/i18n";
422
431
 
423
432
  // src/hooks/use-classes-order.ts
424
433
  import { __useSelector as useSelector } from "@elementor/store";
@@ -447,9 +456,17 @@ var INIT_CHECKED_FILTERS = {
447
456
  };
448
457
  var SearchAndFilterProvider = ({ children }) => {
449
458
  const [filters, setFilters] = React.useState(INIT_CHECKED_FILTERS);
459
+ const getInitialSearchValue = () => {
460
+ const storedValue = localStorage.getItem("elementor-global-classes-search");
461
+ if (storedValue) {
462
+ localStorage.removeItem("elementor-global-classes-search");
463
+ return storedValue;
464
+ }
465
+ return "";
466
+ };
450
467
  const { debouncedValue, inputValue, handleChange } = useDebounceState({
451
468
  delay: 300,
452
- initialValue: ""
469
+ initialValue: getInitialSearchValue()
453
470
  });
454
471
  const onClearSearch = () => {
455
472
  handleChange("");
@@ -580,25 +597,146 @@ var useFilters = () => {
580
597
  }, [filters, allFilters]);
581
598
  };
582
599
 
583
- // src/save-global-classes.ts
600
+ // src/save-global-classes.tsx
601
+ import * as React3 from "react";
602
+ import { openDialog } from "@elementor/editor-ui";
584
603
  import { __dispatch as dispatch2, __getState as getState2 } from "@elementor/store";
585
604
  import { hash } from "@elementor/utils";
586
- async function saveGlobalClasses({ context: context2 }) {
605
+
606
+ // src/components/class-manager/duplicate-label-dialog.tsx
607
+ import * as React2 from "react";
608
+ import { closeDialog, EllipsisWithTooltip } from "@elementor/editor-ui";
609
+ import { InfoCircleFilledIcon } from "@elementor/icons";
610
+ import {
611
+ Alert,
612
+ Box,
613
+ Button,
614
+ DialogActions,
615
+ DialogContent,
616
+ DialogHeader,
617
+ Divider,
618
+ Icon,
619
+ Stack,
620
+ Typography
621
+ } from "@elementor/ui";
622
+ import { __ as __2 } from "@wordpress/i18n";
623
+ var DUP_PREFIX = "DUP_";
624
+ var DuplicateLabelDialog = ({
625
+ modifiedLabels,
626
+ onApprove
627
+ }) => {
628
+ const handleButtonClick = () => {
629
+ localStorage.setItem("elementor-global-classes-search", DUP_PREFIX);
630
+ onApprove?.();
631
+ closeDialog();
632
+ };
633
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React2.createElement(Box, { display: "flex", alignItems: "center", gap: 1 }, /* @__PURE__ */ React2.createElement(Icon, { color: "secondary" }, /* @__PURE__ */ React2.createElement(InfoCircleFilledIcon, { fontSize: "medium" })), /* @__PURE__ */ React2.createElement(Typography, { variant: "subtitle1" }, __2("We've published your page and updated class names.", "elementor")))), /* @__PURE__ */ React2.createElement(DialogContent, null, /* @__PURE__ */ React2.createElement(Stack, { spacing: 2, direction: "column" }, /* @__PURE__ */ React2.createElement(Typography, { variant: "body2" }, __2(
634
+ "Some new classes used the same names as existing ones. To prevent conflicts, we added the prefix",
635
+ "elementor"
636
+ ), /* @__PURE__ */ React2.createElement("strong", null, " ", DUP_PREFIX)), /* @__PURE__ */ React2.createElement(Box, null, /* @__PURE__ */ React2.createElement(
637
+ Box,
638
+ {
639
+ sx: {
640
+ width: "100%",
641
+ display: "flex",
642
+ gap: 2,
643
+ alignItems: "flex-start"
644
+ }
645
+ },
646
+ /* @__PURE__ */ React2.createElement(
647
+ Typography,
648
+ {
649
+ variant: "subtitle2",
650
+ sx: {
651
+ fontWeight: "bold",
652
+ flex: 1,
653
+ flexShrink: 1,
654
+ flexGrow: 1,
655
+ minWidth: 0
656
+ }
657
+ },
658
+ __2("Before", "elementor")
659
+ ),
660
+ /* @__PURE__ */ React2.createElement(
661
+ Typography,
662
+ {
663
+ variant: "subtitle2",
664
+ sx: {
665
+ minWidth: "200px",
666
+ fontWeight: "bold",
667
+ flexShrink: 0,
668
+ flexGrow: 0,
669
+ width: "200px",
670
+ maxWidth: "200px"
671
+ }
672
+ },
673
+ __2("After", "elementor")
674
+ )
675
+ ), /* @__PURE__ */ React2.createElement(Divider, { sx: { mt: 0.5, mb: 0.5 } }), /* @__PURE__ */ React2.createElement(Stack, { direction: "column", gap: 0.5, sx: { pb: 2 } }, Object.values(modifiedLabels).map(({ original, modified }, index) => /* @__PURE__ */ React2.createElement(
676
+ Box,
677
+ {
678
+ key: index,
679
+ sx: {
680
+ width: "100%",
681
+ display: "flex",
682
+ gap: 2,
683
+ alignItems: "flex-start"
684
+ }
685
+ },
686
+ /* @__PURE__ */ React2.createElement(
687
+ Box,
688
+ {
689
+ sx: {
690
+ flex: 1,
691
+ flexShrink: 1,
692
+ flexGrow: 1,
693
+ minWidth: 0
694
+ }
695
+ },
696
+ /* @__PURE__ */ React2.createElement(EllipsisWithTooltip, { title: original }, /* @__PURE__ */ React2.createElement(Typography, { variant: "body2", sx: { color: "text.secondary" } }, original))
697
+ ),
698
+ /* @__PURE__ */ React2.createElement(
699
+ Box,
700
+ {
701
+ sx: {
702
+ minWidth: "200px",
703
+ flexShrink: 0,
704
+ flexGrow: 0,
705
+ width: "200px",
706
+ maxWidth: "200px"
707
+ }
708
+ },
709
+ /* @__PURE__ */ React2.createElement(EllipsisWithTooltip, { title: modified }, /* @__PURE__ */ React2.createElement(Typography, { variant: "body2", sx: { color: "text.primary" } }, modified))
710
+ )
711
+ ))), /* @__PURE__ */ React2.createElement(Box, null, /* @__PURE__ */ React2.createElement(Alert, { severity: "info", size: "small", color: "secondary" }, /* @__PURE__ */ React2.createElement("strong", null, __2("Your designs and classes are safe.", "elementor")), __2(
712
+ "Only the prefixes were added.Find them in Class Manager by searching",
713
+ "elementor"
714
+ ), /* @__PURE__ */ React2.createElement("strong", null, DUP_PREFIX)))))), /* @__PURE__ */ React2.createElement(DialogActions, null, /* @__PURE__ */ React2.createElement(Button, { color: "secondary", variant: "text", onClick: handleButtonClick }, __2("Go to Class Manager", "elementor")), /* @__PURE__ */ React2.createElement(Button, { color: "secondary", variant: "contained", onClick: closeDialog }, __2("Done", "elementor"))));
715
+ };
716
+
717
+ // src/save-global-classes.tsx
718
+ async function saveGlobalClasses({ context: context2, onApprove }) {
587
719
  const state = selectData(getState2());
588
- if (context2 === "preview") {
589
- await apiClient.saveDraft({
590
- items: state.items,
591
- order: state.order,
592
- changes: calculateChanges(state, selectPreviewInitialData(getState2()))
593
- });
594
- } else {
595
- await apiClient.publish({
596
- items: state.items,
597
- order: state.order,
598
- changes: calculateChanges(state, selectFrontendInitialData(getState2()))
720
+ const apiAction = context2 === "preview" ? apiClient.saveDraft : apiClient.publish;
721
+ const currentContext = context2 === "preview" ? selectPreviewInitialData : selectFrontendInitialData;
722
+ const response = await apiAction({
723
+ items: state.items,
724
+ order: state.order,
725
+ changes: calculateChanges(state, currentContext(getState2()))
726
+ });
727
+ dispatch2(slice.actions.reset({ context: context2 }));
728
+ if (response?.data?.data?.code === API_ERROR_CODES.DUPLICATED_LABEL) {
729
+ dispatch2(slice.actions.updateMultiple(response.data.data.modifiedLabels));
730
+ openDialog({
731
+ component: /* @__PURE__ */ React3.createElement(
732
+ DuplicateLabelDialog,
733
+ {
734
+ modifiedLabels: response.data.data.modifiedLabels || [],
735
+ onApprove
736
+ }
737
+ )
599
738
  });
600
739
  }
601
- dispatch2(slice.actions.reset({ context: context2 }));
602
740
  }
603
741
  function calculateChanges(state, initialData) {
604
742
  const stateIds = Object.keys(state.items);
@@ -613,19 +751,19 @@ function calculateChanges(state, initialData) {
613
751
  }
614
752
 
615
753
  // src/components/search-and-filter/components/filter/active-filters.tsx
616
- import * as React4 from "react";
617
- import { Chip as Chip2, Stack as Stack2 } from "@elementor/ui";
618
- import { __ as __3 } from "@wordpress/i18n";
754
+ import * as React6 from "react";
755
+ import { Chip as Chip2, Stack as Stack3 } from "@elementor/ui";
756
+ import { __ as __4 } from "@wordpress/i18n";
619
757
 
620
758
  // src/components/search-and-filter/components/filter/clear-icon-button.tsx
621
- import * as React2 from "react";
759
+ import * as React4 from "react";
622
760
  import { BrushBigIcon } from "@elementor/icons";
623
- import { Box, IconButton, styled, Tooltip } from "@elementor/ui";
761
+ import { Box as Box2, IconButton, styled, Tooltip } from "@elementor/ui";
624
762
  var ClearIconButton = ({ tooltipText, sx }) => {
625
763
  const {
626
764
  filters: { onClearFilter }
627
765
  } = useSearchAndFilters();
628
- return /* @__PURE__ */ React2.createElement(Tooltip, { title: tooltipText, placement: "top", disableInteractive: true }, /* @__PURE__ */ React2.createElement(Box, null, /* @__PURE__ */ React2.createElement(CustomIconButton, { "aria-label": tooltipText, size: "tiny", onClick: onClearFilter, sx }, /* @__PURE__ */ React2.createElement(BrushBigIcon, { fontSize: "tiny" }))));
766
+ return /* @__PURE__ */ React4.createElement(Tooltip, { title: tooltipText, placement: "top", disableInteractive: true }, /* @__PURE__ */ React4.createElement(Box2, null, /* @__PURE__ */ React4.createElement(CustomIconButton, { "aria-label": tooltipText, size: "tiny", onClick: onClearFilter, sx }, /* @__PURE__ */ React4.createElement(BrushBigIcon, { fontSize: "tiny" }))));
629
767
  };
630
768
  var CustomIconButton = styled(IconButton)(({ theme }) => ({
631
769
  "&.Mui-disabled": {
@@ -637,13 +775,13 @@ var CustomIconButton = styled(IconButton)(({ theme }) => ({
637
775
  }));
638
776
 
639
777
  // src/components/search-and-filter/components/filter/filter-list.tsx
640
- import * as React3 from "react";
641
- import { Checkbox, Chip, MenuItem, MenuList, Stack, Typography } from "@elementor/ui";
642
- import { __ as __2 } from "@wordpress/i18n";
778
+ import * as React5 from "react";
779
+ import { Checkbox, Chip, MenuItem, MenuList, Stack as Stack2, Typography as Typography2 } from "@elementor/ui";
780
+ import { __ as __3 } from "@wordpress/i18n";
643
781
  var filterConfig = {
644
- unused: __2("Unused", "elementor"),
645
- empty: __2("Empty", "elementor"),
646
- onThisPage: __2("On this page", "elementor")
782
+ unused: __3("Unused", "elementor"),
783
+ empty: __3("Empty", "elementor"),
784
+ onThisPage: __3("On this page", "elementor")
647
785
  };
648
786
  var FilterList = () => {
649
787
  const {
@@ -653,30 +791,30 @@ var FilterList = () => {
653
791
  const handleOnClick = (value) => {
654
792
  setFilters((prev) => ({ ...prev, [value]: !prev[value] }));
655
793
  };
656
- return /* @__PURE__ */ React3.createElement(MenuList, null, /* @__PURE__ */ React3.createElement(MenuItem, { onClick: () => handleOnClick("unused") }, /* @__PURE__ */ React3.createElement(
794
+ return /* @__PURE__ */ React5.createElement(MenuList, null, /* @__PURE__ */ React5.createElement(MenuItem, { onClick: () => handleOnClick("unused") }, /* @__PURE__ */ React5.createElement(
657
795
  LabeledCheckbox,
658
796
  {
659
797
  label: filterConfig.unused,
660
798
  checked: filters.unused,
661
- suffix: /* @__PURE__ */ React3.createElement(Chip, { size: "tiny", sx: { ml: "auto" }, label: filteredCssClass.unused.length })
799
+ suffix: /* @__PURE__ */ React5.createElement(Chip, { size: "tiny", sx: { ml: "auto" }, label: filteredCssClass.unused.length })
662
800
  }
663
- )), /* @__PURE__ */ React3.createElement(MenuItem, { onClick: () => handleOnClick("empty") }, /* @__PURE__ */ React3.createElement(
801
+ )), /* @__PURE__ */ React5.createElement(MenuItem, { onClick: () => handleOnClick("empty") }, /* @__PURE__ */ React5.createElement(
664
802
  LabeledCheckbox,
665
803
  {
666
804
  label: filterConfig.empty,
667
805
  checked: filters.empty,
668
- suffix: /* @__PURE__ */ React3.createElement(Chip, { size: "tiny", sx: { ml: "auto" }, label: filteredCssClass.empty.length })
806
+ suffix: /* @__PURE__ */ React5.createElement(Chip, { size: "tiny", sx: { ml: "auto" }, label: filteredCssClass.empty.length })
669
807
  }
670
- )), /* @__PURE__ */ React3.createElement(MenuItem, { onClick: () => handleOnClick("onThisPage") }, /* @__PURE__ */ React3.createElement(
808
+ )), /* @__PURE__ */ React5.createElement(MenuItem, { onClick: () => handleOnClick("onThisPage") }, /* @__PURE__ */ React5.createElement(
671
809
  LabeledCheckbox,
672
810
  {
673
811
  label: filterConfig.onThisPage,
674
812
  checked: filters.onThisPage,
675
- suffix: /* @__PURE__ */ React3.createElement(Chip, { size: "tiny", sx: { ml: "auto" }, label: filteredCssClass.onThisPage.length })
813
+ suffix: /* @__PURE__ */ React5.createElement(Chip, { size: "tiny", sx: { ml: "auto" }, label: filteredCssClass.onThisPage.length })
676
814
  }
677
815
  )));
678
816
  };
679
- var LabeledCheckbox = ({ label, suffix, checked }) => /* @__PURE__ */ React3.createElement(Stack, { direction: "row", alignItems: "center", gap: 0.5, flex: 1 }, /* @__PURE__ */ React3.createElement(
817
+ var LabeledCheckbox = ({ label, suffix, checked }) => /* @__PURE__ */ React5.createElement(Stack2, { direction: "row", alignItems: "center", gap: 0.5, flex: 1 }, /* @__PURE__ */ React5.createElement(
680
818
  Checkbox,
681
819
  {
682
820
  size: "small",
@@ -689,7 +827,7 @@ var LabeledCheckbox = ({ label, suffix, checked }) => /* @__PURE__ */ React3.cre
689
827
  }
690
828
  }
691
829
  }
692
- ), /* @__PURE__ */ React3.createElement(Typography, { variant: "caption", sx: { color: "text.secondary" } }, label), suffix);
830
+ ), /* @__PURE__ */ React5.createElement(Typography2, { variant: "caption", sx: { color: "text.secondary" } }, label), suffix);
693
831
 
694
832
  // src/components/search-and-filter/components/filter/active-filters.tsx
695
833
  var ActiveFilters = () => {
@@ -701,7 +839,7 @@ var ActiveFilters = () => {
701
839
  };
702
840
  const activeKeys = Object.keys(filters).filter((key) => filters[key]);
703
841
  const showClearIcon = activeKeys.length > 0;
704
- return /* @__PURE__ */ React4.createElement(Stack2, { direction: "row", alignItems: "center", justifyContent: "space-between" }, /* @__PURE__ */ React4.createElement(Stack2, { direction: "row", gap: 0.5, alignItems: "center", flexWrap: "wrap" }, activeKeys.map((key) => /* @__PURE__ */ React4.createElement(
842
+ return /* @__PURE__ */ React6.createElement(Stack3, { direction: "row", alignItems: "center", justifyContent: "space-between" }, /* @__PURE__ */ React6.createElement(Stack3, { direction: "row", gap: 0.5, alignItems: "center", flexWrap: "wrap" }, activeKeys.map((key) => /* @__PURE__ */ React6.createElement(
705
843
  Chip2,
706
844
  {
707
845
  key,
@@ -710,10 +848,10 @@ var ActiveFilters = () => {
710
848
  sx: chipSx,
711
849
  size: "tiny"
712
850
  }
713
- ))), showClearIcon && /* @__PURE__ */ React4.createElement(
851
+ ))), showClearIcon && /* @__PURE__ */ React6.createElement(
714
852
  ClearIconButton,
715
853
  {
716
- tooltipText: __3("Clear Filters", "elementor"),
854
+ tooltipText: __4("Clear Filters", "elementor"),
717
855
  sx: { margin: "0 0 auto auto" }
718
856
  }
719
857
  ));
@@ -729,11 +867,11 @@ var chipSx = {
729
867
  };
730
868
 
731
869
  // src/components/search-and-filter/components/filter/css-class-filter.tsx
732
- import * as React5 from "react";
870
+ import * as React7 from "react";
733
871
  import { PopoverBody, PopoverHeader } from "@elementor/editor-ui";
734
872
  import { FilterIcon } from "@elementor/icons";
735
- import { bindPopover, bindToggle, Divider, Popover, ToggleButton, Tooltip as Tooltip2, usePopupState } from "@elementor/ui";
736
- import { __ as __4 } from "@wordpress/i18n";
873
+ import { bindPopover, bindToggle, Divider as Divider2, Popover, ToggleButton, Tooltip as Tooltip2, usePopupState } from "@elementor/ui";
874
+ import { __ as __5 } from "@wordpress/i18n";
737
875
  var CssClassFilter = () => {
738
876
  const {
739
877
  filters: { filters }
@@ -743,7 +881,7 @@ var CssClassFilter = () => {
743
881
  disableAutoFocus: true
744
882
  });
745
883
  const showCleanIcon = Object.values(filters).some((value) => value);
746
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(Tooltip2, { title: __4("Filters", "elementor"), placement: "top" }, /* @__PURE__ */ React5.createElement(
884
+ return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement(Tooltip2, { title: __5("Filters", "elementor"), placement: "top" }, /* @__PURE__ */ React7.createElement(
747
885
  ToggleButton,
748
886
  {
749
887
  value: "filter",
@@ -751,8 +889,8 @@ var CssClassFilter = () => {
751
889
  selected: popupState.isOpen,
752
890
  ...bindToggle(popupState)
753
891
  },
754
- /* @__PURE__ */ React5.createElement(FilterIcon, { fontSize: "tiny" })
755
- )), /* @__PURE__ */ React5.createElement(
892
+ /* @__PURE__ */ React7.createElement(FilterIcon, { fontSize: "tiny" })
893
+ )), /* @__PURE__ */ React7.createElement(
756
894
  Popover,
757
895
  {
758
896
  sx: {
@@ -768,76 +906,76 @@ var CssClassFilter = () => {
768
906
  },
769
907
  ...bindPopover(popupState)
770
908
  },
771
- /* @__PURE__ */ React5.createElement(
909
+ /* @__PURE__ */ React7.createElement(
772
910
  PopoverHeader,
773
911
  {
774
912
  actions: showCleanIcon ? [
775
- /* @__PURE__ */ React5.createElement(
913
+ /* @__PURE__ */ React7.createElement(
776
914
  ClearIconButton,
777
915
  {
778
916
  key: "clear-all-button",
779
- tooltipText: __4("Clear all", "elementor")
917
+ tooltipText: __5("Clear all", "elementor")
780
918
  }
781
919
  )
782
920
  ] : [],
783
921
  onClose: popupState.close,
784
- title: __4("Filters", "elementor"),
785
- icon: /* @__PURE__ */ React5.createElement(FilterIcon, { fontSize: "tiny" })
922
+ title: __5("Filters", "elementor"),
923
+ icon: /* @__PURE__ */ React7.createElement(FilterIcon, { fontSize: "tiny" })
786
924
  }
787
925
  ),
788
- /* @__PURE__ */ React5.createElement(
789
- Divider,
926
+ /* @__PURE__ */ React7.createElement(
927
+ Divider2,
790
928
  {
791
929
  sx: {
792
930
  borderWidth: "1px 0 0 0"
793
931
  }
794
932
  }
795
933
  ),
796
- /* @__PURE__ */ React5.createElement(PopoverBody, { width: 344, height: 125 }, /* @__PURE__ */ React5.createElement(FilterList, null))
934
+ /* @__PURE__ */ React7.createElement(PopoverBody, { width: 344, height: 125 }, /* @__PURE__ */ React7.createElement(FilterList, null))
797
935
  ));
798
936
  };
799
937
 
800
938
  // src/components/search-and-filter/components/search/class-manager-search.tsx
801
- import * as React6 from "react";
939
+ import * as React8 from "react";
802
940
  import { SearchIcon } from "@elementor/icons";
803
- import { Box as Box2, InputAdornment, Stack as Stack3, TextField } from "@elementor/ui";
804
- import { __ as __5 } from "@wordpress/i18n";
941
+ import { Box as Box3, InputAdornment, Stack as Stack4, TextField } from "@elementor/ui";
942
+ import { __ as __6 } from "@wordpress/i18n";
805
943
  var ClassManagerSearch = () => {
806
944
  const {
807
945
  search: { inputValue, handleChange }
808
946
  } = useSearchAndFilters();
809
- return /* @__PURE__ */ React6.createElement(Stack3, { direction: "row", gap: 0.5, sx: { width: "100%" } }, /* @__PURE__ */ React6.createElement(Box2, { sx: { flexGrow: 1 } }, /* @__PURE__ */ React6.createElement(
947
+ return /* @__PURE__ */ React8.createElement(Stack4, { direction: "row", gap: 0.5, sx: { width: "100%" } }, /* @__PURE__ */ React8.createElement(Box3, { sx: { flexGrow: 1 } }, /* @__PURE__ */ React8.createElement(
810
948
  TextField,
811
949
  {
812
950
  role: "search",
813
951
  fullWidth: true,
814
952
  size: "tiny",
815
953
  value: inputValue,
816
- placeholder: __5("Search", "elementor"),
954
+ placeholder: __6("Search", "elementor"),
817
955
  onChange: (e) => handleChange(e.target.value),
818
956
  InputProps: {
819
- startAdornment: /* @__PURE__ */ React6.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React6.createElement(SearchIcon, { fontSize: "tiny" }))
957
+ startAdornment: /* @__PURE__ */ React8.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React8.createElement(SearchIcon, { fontSize: "tiny" }))
820
958
  }
821
959
  }
822
960
  )));
823
961
  };
824
962
 
825
963
  // src/components/class-manager/class-manager-introduction.tsx
826
- import * as React7 from "react";
964
+ import * as React9 from "react";
827
965
  import { useState as useState2 } from "react";
828
966
  import { useSuppressedMessage } from "@elementor/editor-current-user";
829
967
  import { IntroductionModal } from "@elementor/editor-ui";
830
- import { Box as Box3, Image, Typography as Typography2 } from "@elementor/ui";
831
- import { __ as __6 } from "@wordpress/i18n";
968
+ import { Box as Box4, Image, Typography as Typography3 } from "@elementor/ui";
969
+ import { __ as __7 } from "@wordpress/i18n";
832
970
  var MESSAGE_KEY = "global-class-manager";
833
971
  var ClassManagerIntroduction = () => {
834
972
  const [isMessageSuppressed, suppressMessage] = useSuppressedMessage(MESSAGE_KEY);
835
973
  const [shouldShowIntroduction, setShouldShowIntroduction] = useState2(!isMessageSuppressed);
836
- return /* @__PURE__ */ React7.createElement(
974
+ return /* @__PURE__ */ React9.createElement(
837
975
  IntroductionModal,
838
976
  {
839
977
  open: shouldShowIntroduction,
840
- title: __6("Class Manager", "elementor"),
978
+ title: __7("Class Manager", "elementor"),
841
979
  handleClose: (shouldShowAgain) => {
842
980
  if (!shouldShowAgain) {
843
981
  suppressMessage();
@@ -845,7 +983,7 @@ var ClassManagerIntroduction = () => {
845
983
  setShouldShowIntroduction(false);
846
984
  }
847
985
  },
848
- /* @__PURE__ */ React7.createElement(
986
+ /* @__PURE__ */ React9.createElement(
849
987
  Image,
850
988
  {
851
989
  sx: { width: "100%", aspectRatio: "16 / 9" },
@@ -853,14 +991,14 @@ var ClassManagerIntroduction = () => {
853
991
  alt: ""
854
992
  }
855
993
  ),
856
- /* @__PURE__ */ React7.createElement(IntroductionContent, null)
994
+ /* @__PURE__ */ React9.createElement(IntroductionContent, null)
857
995
  );
858
996
  };
859
997
  var IntroductionContent = () => {
860
- return /* @__PURE__ */ React7.createElement(Box3, { p: 3 }, /* @__PURE__ */ React7.createElement(Typography2, { variant: "body2" }, __6(
998
+ return /* @__PURE__ */ React9.createElement(Box4, { p: 3 }, /* @__PURE__ */ React9.createElement(Typography3, { variant: "body2" }, __7(
861
999
  "The Class Manager lets you see all the classes you've created, plus adjust their priority, rename them, and delete unused classes to keep your CSS structured.",
862
1000
  "elementor"
863
- )), /* @__PURE__ */ React7.createElement("br", null), /* @__PURE__ */ React7.createElement(Typography2, { variant: "body2" }, __6(
1001
+ )), /* @__PURE__ */ React9.createElement("br", null), /* @__PURE__ */ React9.createElement(Typography3, { variant: "body2" }, __7(
864
1002
  "Remember, when editing an item within a specific class, any changes you make will apply across all elements in that class.",
865
1003
  "elementor"
866
1004
  )));
@@ -892,16 +1030,16 @@ var reloadDocument = () => {
892
1030
  };
893
1031
 
894
1032
  // src/components/class-manager/flipped-color-swatch-icon.tsx
895
- import * as React8 from "react";
1033
+ import * as React10 from "react";
896
1034
  import { ColorSwatchIcon } from "@elementor/icons";
897
- var FlippedColorSwatchIcon = ({ sx, ...props }) => /* @__PURE__ */ React8.createElement(ColorSwatchIcon, { sx: { transform: "rotate(90deg)", ...sx }, ...props });
1035
+ var FlippedColorSwatchIcon = ({ sx, ...props }) => /* @__PURE__ */ React10.createElement(ColorSwatchIcon, { sx: { transform: "rotate(90deg)", ...sx }, ...props });
898
1036
 
899
1037
  // src/components/class-manager/global-classes-list.tsx
900
- import * as React15 from "react";
1038
+ import * as React17 from "react";
901
1039
  import { useEffect, useMemo as useMemo3 } from "react";
902
1040
  import { __useDispatch as useDispatch } from "@elementor/store";
903
- import { List, Stack as Stack7, styled as styled6, Typography as Typography7 } from "@elementor/ui";
904
- import { __ as __12 } from "@wordpress/i18n";
1041
+ import { List, Stack as Stack8, styled as styled6, Typography as Typography8 } from "@elementor/ui";
1042
+ import { __ as __13 } from "@wordpress/i18n";
905
1043
 
906
1044
  // src/hooks/use-ordered-classes.ts
907
1045
  import { __useSelector as useSelector3 } from "@elementor/store";
@@ -910,31 +1048,31 @@ var useOrderedClasses = () => {
910
1048
  };
911
1049
 
912
1050
  // src/components/class-manager/class-item.tsx
913
- import * as React13 from "react";
1051
+ import * as React15 from "react";
914
1052
  import { useRef, useState as useState4 } from "react";
915
1053
  import { validateStyleLabel } from "@elementor/editor-styles-repository";
916
- import { EditableField, EllipsisWithTooltip as EllipsisWithTooltip2, MenuListItem, useEditable, WarningInfotip } from "@elementor/editor-ui";
1054
+ import { EditableField, EllipsisWithTooltip as EllipsisWithTooltip3, MenuListItem, useEditable, WarningInfotip } from "@elementor/editor-ui";
917
1055
  import { DotsVerticalIcon } from "@elementor/icons";
918
1056
  import {
919
1057
  bindMenu,
920
1058
  bindTrigger as bindTrigger2,
921
- Box as Box7,
1059
+ Box as Box8,
922
1060
  IconButton as IconButton3,
923
1061
  ListItemButton,
924
1062
  Menu,
925
- Stack as Stack5,
1063
+ Stack as Stack6,
926
1064
  styled as styled5,
927
1065
  Tooltip as Tooltip5,
928
- Typography as Typography5,
1066
+ Typography as Typography6,
929
1067
  usePopupState as usePopupState3
930
1068
  } from "@elementor/ui";
931
- import { __ as __10 } from "@wordpress/i18n";
1069
+ import { __ as __11 } from "@wordpress/i18n";
932
1070
 
933
1071
  // src/components/css-class-usage/components/css-class-usage-popover.tsx
934
- import * as React9 from "react";
1072
+ import * as React11 from "react";
935
1073
  import { __useOpenDocumentInNewTab as useOpenDocumentInNewTab } from "@elementor/editor-documents";
936
1074
  import {
937
- EllipsisWithTooltip,
1075
+ EllipsisWithTooltip as EllipsisWithTooltip2,
938
1076
  PopoverBody as PopoverBody2,
939
1077
  PopoverHeader as PopoverHeader2,
940
1078
  PopoverMenuList
@@ -948,8 +1086,8 @@ import {
948
1086
  PopupTemplateIcon,
949
1087
  PostTypeIcon
950
1088
  } from "@elementor/icons";
951
- import { Box as Box4, Chip as Chip3, Divider as Divider2, Icon, MenuList as MenuList2, Stack as Stack4, styled as styled2, Tooltip as Tooltip3, Typography as Typography3 } from "@elementor/ui";
952
- import { __ as __7 } from "@wordpress/i18n";
1089
+ import { Box as Box5, Chip as Chip3, Divider as Divider3, Icon as Icon2, MenuList as MenuList2, Stack as Stack5, styled as styled2, Tooltip as Tooltip3, Typography as Typography4 } from "@elementor/ui";
1090
+ import { __ as __8 } from "@wordpress/i18n";
953
1091
 
954
1092
  // src/hooks/use-css-class-usage-by-id.ts
955
1093
  var EMPTY_CLASS_USAGE = {
@@ -965,24 +1103,24 @@ var useCssClassUsageByID = (id2) => {
965
1103
  // src/components/css-class-usage/components/css-class-usage-popover.tsx
966
1104
  var iconMapper = {
967
1105
  "wp-post": {
968
- label: __7("Post", "elementor"),
969
- icon: /* @__PURE__ */ React9.createElement(PostTypeIcon, { fontSize: "inherit" })
1106
+ label: __8("Post", "elementor"),
1107
+ icon: /* @__PURE__ */ React11.createElement(PostTypeIcon, { fontSize: "inherit" })
970
1108
  },
971
1109
  "wp-page": {
972
- label: __7("Page", "elementor"),
973
- icon: /* @__PURE__ */ React9.createElement(PagesIcon, { fontSize: "inherit" })
1110
+ label: __8("Page", "elementor"),
1111
+ icon: /* @__PURE__ */ React11.createElement(PagesIcon, { fontSize: "inherit" })
974
1112
  },
975
1113
  popup: {
976
- label: __7("Popup", "elementor"),
977
- icon: /* @__PURE__ */ React9.createElement(PopupTemplateIcon, { fontSize: "inherit" })
1114
+ label: __8("Popup", "elementor"),
1115
+ icon: /* @__PURE__ */ React11.createElement(PopupTemplateIcon, { fontSize: "inherit" })
978
1116
  },
979
1117
  header: {
980
- label: __7("Header", "elementor"),
981
- icon: /* @__PURE__ */ React9.createElement(HeaderTemplateIcon, { fontSize: "inherit" })
1118
+ label: __8("Header", "elementor"),
1119
+ icon: /* @__PURE__ */ React11.createElement(HeaderTemplateIcon, { fontSize: "inherit" })
982
1120
  },
983
1121
  footer: {
984
- label: __7("Footer", "elementor"),
985
- icon: /* @__PURE__ */ React9.createElement(FooterTemplateIcon, { fontSize: "inherit" })
1122
+ label: __8("Footer", "elementor"),
1123
+ icon: /* @__PURE__ */ React11.createElement(FooterTemplateIcon, { fontSize: "inherit" })
986
1124
  }
987
1125
  };
988
1126
  var CssClassUsagePopover = ({
@@ -1000,14 +1138,14 @@ var CssClassUsagePopover = ({
1000
1138
  docType: type
1001
1139
  })
1002
1140
  ) ?? [];
1003
- return /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(
1141
+ return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(
1004
1142
  PopoverHeader2,
1005
1143
  {
1006
- icon: /* @__PURE__ */ React9.createElement(CurrentLocationIcon, { fontSize: "tiny" }),
1007
- title: /* @__PURE__ */ React9.createElement(Stack4, { flexDirection: "row", gap: 1, alignItems: "center" }, /* @__PURE__ */ React9.createElement(Box4, { "aria-label": "header-title" }, __7("Locator", "elementor")), /* @__PURE__ */ React9.createElement(Box4, null, /* @__PURE__ */ React9.createElement(Chip3, { sx: { lineHeight: 1 }, size: "tiny", label: classUsage.total }))),
1144
+ icon: /* @__PURE__ */ React11.createElement(CurrentLocationIcon, { fontSize: "tiny" }),
1145
+ title: /* @__PURE__ */ React11.createElement(Stack5, { flexDirection: "row", gap: 1, alignItems: "center" }, /* @__PURE__ */ React11.createElement(Box5, { "aria-label": "header-title" }, __8("Locator", "elementor")), /* @__PURE__ */ React11.createElement(Box5, null, /* @__PURE__ */ React11.createElement(Chip3, { sx: { lineHeight: 1 }, size: "tiny", label: classUsage.total }))),
1008
1146
  onClose
1009
1147
  }
1010
- ), /* @__PURE__ */ React9.createElement(Divider2, null), /* @__PURE__ */ React9.createElement(PopoverBody2, { width: 300 }, /* @__PURE__ */ React9.createElement(
1148
+ ), /* @__PURE__ */ React11.createElement(Divider3, null), /* @__PURE__ */ React11.createElement(PopoverBody2, { width: 300 }, /* @__PURE__ */ React11.createElement(
1011
1149
  PopoverMenuList,
1012
1150
  {
1013
1151
  onSelect: (value) => onNavigate(+value),
@@ -1015,26 +1153,26 @@ var CssClassUsagePopover = ({
1015
1153
  onClose: () => {
1016
1154
  },
1017
1155
  menuListTemplate: StyledCssClassUsageItem,
1018
- menuItemContentTemplate: (cssClassUsageRecord) => /* @__PURE__ */ React9.createElement(Stack4, { flexDirection: "row", flex: 1, alignItems: "center" }, /* @__PURE__ */ React9.createElement(Box4, { display: "flex", sx: { pr: 1 } }, /* @__PURE__ */ React9.createElement(
1156
+ menuItemContentTemplate: (cssClassUsageRecord) => /* @__PURE__ */ React11.createElement(Stack5, { flexDirection: "row", flex: 1, alignItems: "center" }, /* @__PURE__ */ React11.createElement(Box5, { display: "flex", sx: { pr: 1 } }, /* @__PURE__ */ React11.createElement(
1019
1157
  Tooltip3,
1020
1158
  {
1021
1159
  disableInteractive: true,
1022
1160
  title: iconMapper?.[cssClassUsageRecord.docType]?.label ?? cssClassUsageRecord.docType,
1023
1161
  placement: "top"
1024
1162
  },
1025
- /* @__PURE__ */ React9.createElement(Icon, { fontSize: "small" }, iconMapper?.[cssClassUsageRecord.docType]?.icon || /* @__PURE__ */ React9.createElement(PagesIcon, { fontSize: "inherit" }))
1026
- )), /* @__PURE__ */ React9.createElement(Box4, { sx: { pr: 0.5, maxWidth: "173px" }, display: "flex" }, /* @__PURE__ */ React9.createElement(
1027
- EllipsisWithTooltip,
1163
+ /* @__PURE__ */ React11.createElement(Icon2, { fontSize: "small" }, iconMapper?.[cssClassUsageRecord.docType]?.icon || /* @__PURE__ */ React11.createElement(PagesIcon, { fontSize: "inherit" }))
1164
+ )), /* @__PURE__ */ React11.createElement(Box5, { sx: { pr: 0.5, maxWidth: "173px" }, display: "flex" }, /* @__PURE__ */ React11.createElement(
1165
+ EllipsisWithTooltip2,
1028
1166
  {
1029
1167
  title: cssClassUsageRecord.label,
1030
- as: Typography3,
1168
+ as: Typography4,
1031
1169
  variant: "caption",
1032
1170
  maxWidth: "173px",
1033
1171
  sx: {
1034
1172
  lineHeight: 1
1035
1173
  }
1036
1174
  }
1037
- )), /* @__PURE__ */ React9.createElement(ExternalLinkIcon, { className: "hover-only-icon", fontSize: "tiny" }), /* @__PURE__ */ React9.createElement(
1175
+ )), /* @__PURE__ */ React11.createElement(ExternalLinkIcon, { className: "hover-only-icon", fontSize: "tiny" }), /* @__PURE__ */ React11.createElement(
1038
1176
  Chip3,
1039
1177
  {
1040
1178
  sx: {
@@ -1081,13 +1219,13 @@ var StyledCssClassUsageItem = styled2(MenuList2)(({ theme }) => ({
1081
1219
  }));
1082
1220
 
1083
1221
  // src/components/css-class-usage/components/css-class-usage-trigger.tsx
1084
- import * as React10 from "react";
1222
+ import * as React12 from "react";
1085
1223
  import { InfoAlert } from "@elementor/editor-ui";
1086
1224
  import { CurrentLocationIcon as CurrentLocationIcon2 } from "@elementor/icons";
1087
1225
  import {
1088
1226
  bindPopover as bindPopover2,
1089
1227
  bindTrigger,
1090
- Box as Box5,
1228
+ Box as Box6,
1091
1229
  IconButton as IconButton2,
1092
1230
  Infotip,
1093
1231
  Popover as Popover2,
@@ -1095,7 +1233,7 @@ import {
1095
1233
  Tooltip as Tooltip4,
1096
1234
  usePopupState as usePopupState2
1097
1235
  } from "@elementor/ui";
1098
- import { __ as __8 } from "@wordpress/i18n";
1236
+ import { __ as __9 } from "@wordpress/i18n";
1099
1237
  var CssClassUsageTrigger = ({ id: id2, onClick }) => {
1100
1238
  const {
1101
1239
  data: { total },
@@ -1106,7 +1244,7 @@ var CssClassUsageTrigger = ({ id: id2, onClick }) => {
1106
1244
  return null;
1107
1245
  }
1108
1246
  const WrapperComponent = total !== 0 ? TooltipWrapper : InfoAlertMessage;
1109
- return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(Box5, { position: "relative" }, /* @__PURE__ */ React10.createElement(WrapperComponent, { total }, /* @__PURE__ */ React10.createElement(
1247
+ return /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(Box6, { position: "relative" }, /* @__PURE__ */ React12.createElement(WrapperComponent, { total }, /* @__PURE__ */ React12.createElement(
1110
1248
  CustomIconButton2,
1111
1249
  {
1112
1250
  disabled: total === 0,
@@ -1119,8 +1257,8 @@ var CssClassUsageTrigger = ({ id: id2, onClick }) => {
1119
1257
  }
1120
1258
  }
1121
1259
  },
1122
- /* @__PURE__ */ React10.createElement(CurrentLocationIcon2, { fontSize: "tiny" })
1123
- ))), /* @__PURE__ */ React10.createElement(Box5, null, /* @__PURE__ */ React10.createElement(
1260
+ /* @__PURE__ */ React12.createElement(CurrentLocationIcon2, { fontSize: "tiny" })
1261
+ ))), /* @__PURE__ */ React12.createElement(Box6, null, /* @__PURE__ */ React12.createElement(
1124
1262
  Popover2,
1125
1263
  {
1126
1264
  anchorOrigin: {
@@ -1137,7 +1275,7 @@ var CssClassUsageTrigger = ({ id: id2, onClick }) => {
1137
1275
  onClick("");
1138
1276
  }
1139
1277
  },
1140
- /* @__PURE__ */ React10.createElement(
1278
+ /* @__PURE__ */ React12.createElement(
1141
1279
  CssClassUsagePopover,
1142
1280
  {
1143
1281
  onClose: cssClassUsagePopover.close,
@@ -1159,80 +1297,80 @@ var CustomIconButton2 = styled3(IconButton2)(({ theme }) => ({
1159
1297
  height: "22px",
1160
1298
  width: "22px"
1161
1299
  }));
1162
- var TooltipWrapper = ({ children, total }) => /* @__PURE__ */ React10.createElement(
1300
+ var TooltipWrapper = ({ children, total }) => /* @__PURE__ */ React12.createElement(
1163
1301
  Tooltip4,
1164
1302
  {
1165
1303
  disableInteractive: true,
1166
1304
  placement: "top",
1167
- title: `${__8("Show {{number}} {{locations}}", "elementor").replace("{{number}}", total.toString()).replace(
1305
+ title: `${__9("Show {{number}} {{locations}}", "elementor").replace("{{number}}", total.toString()).replace(
1168
1306
  "{{locations}}",
1169
- total === 1 ? __8("location", "elementor") : __8("locations", "elementor")
1307
+ total === 1 ? __9("location", "elementor") : __9("locations", "elementor")
1170
1308
  )}`
1171
1309
  },
1172
- /* @__PURE__ */ React10.createElement("span", null, children)
1310
+ /* @__PURE__ */ React12.createElement("span", null, children)
1173
1311
  );
1174
- var InfoAlertMessage = ({ children }) => /* @__PURE__ */ React10.createElement(
1312
+ var InfoAlertMessage = ({ children }) => /* @__PURE__ */ React12.createElement(
1175
1313
  Infotip,
1176
1314
  {
1177
1315
  disableInteractive: true,
1178
1316
  placement: "top",
1179
1317
  color: "secondary",
1180
- content: /* @__PURE__ */ React10.createElement(InfoAlert, { sx: { mt: 1 } }, __8("This class isn\u2019t being used yet.", "elementor"))
1318
+ content: /* @__PURE__ */ React12.createElement(InfoAlert, { sx: { mt: 1 } }, __9("This class isn\u2019t being used yet.", "elementor"))
1181
1319
  },
1182
- /* @__PURE__ */ React10.createElement("span", null, children)
1320
+ /* @__PURE__ */ React12.createElement("span", null, children)
1183
1321
  );
1184
1322
 
1185
1323
  // src/components/class-manager/delete-confirmation-dialog.tsx
1186
- import * as React11 from "react";
1324
+ import * as React13 from "react";
1187
1325
  import { createContext as createContext2, useContext as useContext2, useState as useState3 } from "react";
1188
1326
  import { AlertOctagonFilledIcon } from "@elementor/icons";
1189
1327
  import {
1190
- Button,
1328
+ Button as Button2,
1191
1329
  Dialog,
1192
- DialogActions,
1193
- DialogContent,
1330
+ DialogActions as DialogActions2,
1331
+ DialogContent as DialogContent2,
1194
1332
  DialogContentText,
1195
1333
  DialogTitle,
1196
- Typography as Typography4
1334
+ Typography as Typography5
1197
1335
  } from "@elementor/ui";
1198
- import { __ as __9 } from "@wordpress/i18n";
1336
+ import { __ as __10 } from "@wordpress/i18n";
1199
1337
  var context = createContext2(null);
1200
1338
  var DeleteConfirmationProvider = ({ children }) => {
1201
1339
  const [dialogProps, setDialogProps] = useState3(null);
1202
- const openDialog = (props) => {
1340
+ const openDialog2 = (props) => {
1203
1341
  setDialogProps(props);
1204
1342
  };
1205
- const closeDialog = () => {
1343
+ const closeDialog2 = () => {
1206
1344
  setDialogProps(null);
1207
1345
  };
1208
- return /* @__PURE__ */ React11.createElement(context.Provider, { value: { openDialog, closeDialog, dialogProps } }, children, !!dialogProps && /* @__PURE__ */ React11.createElement(DeleteConfirmationDialog, { ...dialogProps }));
1346
+ return /* @__PURE__ */ React13.createElement(context.Provider, { value: { openDialog: openDialog2, closeDialog: closeDialog2, dialogProps } }, children, !!dialogProps && /* @__PURE__ */ React13.createElement(DeleteConfirmationDialog, { ...dialogProps }));
1209
1347
  };
1210
1348
  var TITLE_ID = "delete-class-dialog";
1211
1349
  var DeleteConfirmationDialog = ({ label, id: id2 }) => {
1212
- const { closeDialog } = useDeleteConfirmation();
1350
+ const { closeDialog: closeDialog2 } = useDeleteConfirmation();
1213
1351
  const {
1214
1352
  data: { total, content }
1215
1353
  } = useCssClassUsageByID(id2);
1216
1354
  const onConfirm = () => {
1217
1355
  deleteClass(id2);
1218
- closeDialog();
1356
+ closeDialog2();
1219
1357
  };
1220
- const text = total && content.length ? __9(
1358
+ const text = total && content.length ? __10(
1221
1359
  "Will permanently remove it from your project and may affect the design across all elements using it. Used %1 times across %2 pages. This action cannot be undone.",
1222
1360
  "elementor"
1223
- ).replace("%1", total.toString()).replace("%2", content.length.toString()) : __9(
1361
+ ).replace("%1", total.toString()).replace("%2", content.length.toString()) : __10(
1224
1362
  "Will permanently remove it from your project and may affect the design across all elements using it. This action cannot be undone.",
1225
1363
  "elementor"
1226
1364
  );
1227
- return /* @__PURE__ */ React11.createElement(Dialog, { open: true, onClose: closeDialog, "aria-labelledby": TITLE_ID, maxWidth: "xs" }, /* @__PURE__ */ React11.createElement(DialogTitle, { id: TITLE_ID, display: "flex", alignItems: "center", gap: 1, sx: { lineHeight: 1 } }, /* @__PURE__ */ React11.createElement(AlertOctagonFilledIcon, { color: "error" }), __9("Delete this class?", "elementor")), /* @__PURE__ */ React11.createElement(DialogContent, null, /* @__PURE__ */ React11.createElement(DialogContentText, { variant: "body2", color: "textPrimary" }, __9("Deleting", "elementor"), /* @__PURE__ */ React11.createElement(Typography4, { variant: "subtitle2", component: "span" }, "\xA0", label, "\xA0"), text)), /* @__PURE__ */ React11.createElement(DialogActions, null, /* @__PURE__ */ React11.createElement(Button, { color: "secondary", onClick: closeDialog }, __9("Not now", "elementor")), /* @__PURE__ */ React11.createElement(
1228
- Button,
1365
+ return /* @__PURE__ */ React13.createElement(Dialog, { open: true, onClose: closeDialog2, "aria-labelledby": TITLE_ID, maxWidth: "xs" }, /* @__PURE__ */ React13.createElement(DialogTitle, { id: TITLE_ID, display: "flex", alignItems: "center", gap: 1, sx: { lineHeight: 1 } }, /* @__PURE__ */ React13.createElement(AlertOctagonFilledIcon, { color: "error" }), __10("Delete this class?", "elementor")), /* @__PURE__ */ React13.createElement(DialogContent2, null, /* @__PURE__ */ React13.createElement(DialogContentText, { variant: "body2", color: "textPrimary" }, __10("Deleting", "elementor"), /* @__PURE__ */ React13.createElement(Typography5, { variant: "subtitle2", component: "span" }, "\xA0", label, "\xA0"), text)), /* @__PURE__ */ React13.createElement(DialogActions2, null, /* @__PURE__ */ React13.createElement(Button2, { color: "secondary", onClick: closeDialog2 }, __10("Not now", "elementor")), /* @__PURE__ */ React13.createElement(
1366
+ Button2,
1229
1367
  {
1230
1368
  autoFocus: true,
1231
1369
  variant: "contained",
1232
1370
  color: "error",
1233
1371
  onClick: onConfirm
1234
1372
  },
1235
- __9("Delete", "elementor")
1373
+ __10("Delete", "elementor")
1236
1374
  )));
1237
1375
  };
1238
1376
  var useDeleteConfirmation = () => {
@@ -1244,18 +1382,18 @@ var useDeleteConfirmation = () => {
1244
1382
  };
1245
1383
 
1246
1384
  // src/components/class-manager/sortable.tsx
1247
- import * as React12 from "react";
1385
+ import * as React14 from "react";
1248
1386
  import { GripVerticalIcon } from "@elementor/icons";
1249
1387
  import {
1250
- Box as Box6,
1388
+ Box as Box7,
1251
1389
  styled as styled4,
1252
1390
  UnstableSortableItem,
1253
1391
  UnstableSortableProvider
1254
1392
  } from "@elementor/ui";
1255
- var SortableProvider = (props) => /* @__PURE__ */ React12.createElement(UnstableSortableProvider, { restrictAxis: true, variant: "static", dragPlaceholderStyle: { opacity: "1" }, ...props });
1256
- var SortableTrigger = (props) => /* @__PURE__ */ React12.createElement(StyledSortableTrigger, { ...props, role: "button", className: "class-item-sortable-trigger", "aria-label": "sort" }, /* @__PURE__ */ React12.createElement(GripVerticalIcon, { fontSize: "tiny" }));
1393
+ var SortableProvider = (props) => /* @__PURE__ */ React14.createElement(UnstableSortableProvider, { restrictAxis: true, variant: "static", dragPlaceholderStyle: { opacity: "1" }, ...props });
1394
+ var SortableTrigger = (props) => /* @__PURE__ */ React14.createElement(StyledSortableTrigger, { ...props, role: "button", className: "class-item-sortable-trigger", "aria-label": "sort" }, /* @__PURE__ */ React14.createElement(GripVerticalIcon, { fontSize: "tiny" }));
1257
1395
  var SortableItem = ({ children, id: id2, ...props }) => {
1258
- return /* @__PURE__ */ React12.createElement(
1396
+ return /* @__PURE__ */ React14.createElement(
1259
1397
  UnstableSortableItem,
1260
1398
  {
1261
1399
  ...props,
@@ -1271,8 +1409,8 @@ var SortableItem = ({ children, id: id2, ...props }) => {
1271
1409
  isDragOverlay,
1272
1410
  isDragPlaceholder
1273
1411
  }) => {
1274
- return /* @__PURE__ */ React12.createElement(
1275
- Box6,
1412
+ return /* @__PURE__ */ React14.createElement(
1413
+ Box7,
1276
1414
  {
1277
1415
  ...itemProps,
1278
1416
  style: itemStyle,
@@ -1290,7 +1428,7 @@ var SortableItem = ({ children, id: id2, ...props }) => {
1290
1428
  triggerStyle,
1291
1429
  isDragPlaceholder
1292
1430
  }),
1293
- showDropIndication && /* @__PURE__ */ React12.createElement(SortableItemIndicator, { style: dropIndicationStyle })
1431
+ showDropIndication && /* @__PURE__ */ React14.createElement(SortableItemIndicator, { style: dropIndicationStyle })
1294
1432
  );
1295
1433
  }
1296
1434
  }
@@ -1303,7 +1441,7 @@ var StyledSortableTrigger = styled4("div")(({ theme }) => ({
1303
1441
  transform: `translate( -${theme.spacing(1.5)}, -50% )`,
1304
1442
  color: theme.palette.action.active
1305
1443
  }));
1306
- var SortableItemIndicator = styled4(Box6)`
1444
+ var SortableItemIndicator = styled4(Box7)`
1307
1445
  width: 100%;
1308
1446
  height: 1px;
1309
1447
  background-color: ${({ theme }) => theme.palette.text.primary};
@@ -1332,13 +1470,13 @@ var ClassItem = ({
1332
1470
  validation: validateLabel
1333
1471
  });
1334
1472
  const [selectedCssUsage, setSelectedCssUsage] = useState4("");
1335
- const { openDialog } = useDeleteConfirmation();
1473
+ const { openDialog: openDialog2 } = useDeleteConfirmation();
1336
1474
  const popupState = usePopupState3({
1337
1475
  variant: "popover",
1338
1476
  disableAutoFocus: true
1339
1477
  });
1340
1478
  const isSelected = (selectedCssUsage === id2 || selected || popupState.isOpen) && !disabled;
1341
- return /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(Stack5, { p: 0 }, /* @__PURE__ */ React13.createElement(
1479
+ return /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(Stack6, { p: 0 }, /* @__PURE__ */ React15.createElement(
1342
1480
  WarningInfotip,
1343
1481
  {
1344
1482
  open: Boolean(error),
@@ -1347,7 +1485,7 @@ var ClassItem = ({
1347
1485
  width: itemRef.current?.getBoundingClientRect().width,
1348
1486
  offset: [0, -15]
1349
1487
  },
1350
- /* @__PURE__ */ React13.createElement(
1488
+ /* @__PURE__ */ React15.createElement(
1351
1489
  StyledListItemButton,
1352
1490
  {
1353
1491
  ref: itemRef,
@@ -1361,28 +1499,28 @@ var ClassItem = ({
1361
1499
  disabled,
1362
1500
  focusVisibleClassName: "visible-class-item"
1363
1501
  },
1364
- /* @__PURE__ */ React13.createElement(SortableTrigger, { ...sortableTriggerProps }),
1365
- /* @__PURE__ */ React13.createElement(Indicator, { isActive: isEditing, isError: !!error }, isEditing ? /* @__PURE__ */ React13.createElement(
1502
+ /* @__PURE__ */ React15.createElement(SortableTrigger, { ...sortableTriggerProps }),
1503
+ /* @__PURE__ */ React15.createElement(Indicator, { isActive: isEditing, isError: !!error }, isEditing ? /* @__PURE__ */ React15.createElement(
1366
1504
  EditableField,
1367
1505
  {
1368
1506
  ref: editableRef,
1369
- as: Typography5,
1507
+ as: Typography6,
1370
1508
  variant: "caption",
1371
1509
  ...getEditableProps()
1372
1510
  }
1373
- ) : /* @__PURE__ */ React13.createElement(EllipsisWithTooltip2, { title: label, as: Typography5, variant: "caption" })),
1374
- /* @__PURE__ */ React13.createElement(Box7, { className: "class-item-locator" }, /* @__PURE__ */ React13.createElement(CssClassUsageTrigger, { id: id2, onClick: setSelectedCssUsage })),
1375
- /* @__PURE__ */ React13.createElement(
1511
+ ) : /* @__PURE__ */ React15.createElement(EllipsisWithTooltip3, { title: label, as: Typography6, variant: "caption" })),
1512
+ /* @__PURE__ */ React15.createElement(Box8, { className: "class-item-locator" }, /* @__PURE__ */ React15.createElement(CssClassUsageTrigger, { id: id2, onClick: setSelectedCssUsage })),
1513
+ /* @__PURE__ */ React15.createElement(
1376
1514
  Tooltip5,
1377
1515
  {
1378
1516
  placement: "top",
1379
1517
  className: "class-item-more-actions",
1380
- title: __10("More actions", "elementor")
1518
+ title: __11("More actions", "elementor")
1381
1519
  },
1382
- /* @__PURE__ */ React13.createElement(IconButton3, { size: "tiny", ...bindTrigger2(popupState), "aria-label": "More actions" }, /* @__PURE__ */ React13.createElement(DotsVerticalIcon, { fontSize: "tiny" }))
1520
+ /* @__PURE__ */ React15.createElement(IconButton3, { size: "tiny", ...bindTrigger2(popupState), "aria-label": "More actions" }, /* @__PURE__ */ React15.createElement(DotsVerticalIcon, { fontSize: "tiny" }))
1383
1521
  )
1384
1522
  )
1385
- )), /* @__PURE__ */ React13.createElement(
1523
+ )), /* @__PURE__ */ React15.createElement(
1386
1524
  Menu,
1387
1525
  {
1388
1526
  ...bindMenu(popupState),
@@ -1395,7 +1533,7 @@ var ClassItem = ({
1395
1533
  horizontal: "right"
1396
1534
  }
1397
1535
  },
1398
- /* @__PURE__ */ React13.createElement(
1536
+ /* @__PURE__ */ React15.createElement(
1399
1537
  MenuListItem,
1400
1538
  {
1401
1539
  sx: { minWidth: "160px" },
@@ -1404,17 +1542,17 @@ var ClassItem = ({
1404
1542
  openEditMode();
1405
1543
  }
1406
1544
  },
1407
- /* @__PURE__ */ React13.createElement(Typography5, { variant: "caption", sx: { color: "text.primary" } }, __10("Rename", "elementor"))
1545
+ /* @__PURE__ */ React15.createElement(Typography6, { variant: "caption", sx: { color: "text.primary" } }, __11("Rename", "elementor"))
1408
1546
  ),
1409
- /* @__PURE__ */ React13.createElement(
1547
+ /* @__PURE__ */ React15.createElement(
1410
1548
  MenuListItem,
1411
1549
  {
1412
1550
  onClick: () => {
1413
1551
  popupState.close();
1414
- openDialog({ id: id2, label });
1552
+ openDialog2({ id: id2, label });
1415
1553
  }
1416
1554
  },
1417
- /* @__PURE__ */ React13.createElement(Typography5, { variant: "caption", sx: { color: "error.light" } }, __10("Delete", "elementor"))
1555
+ /* @__PURE__ */ React15.createElement(Typography6, { variant: "caption", sx: { color: "error.light" } }, __11("Delete", "elementor"))
1418
1556
  )
1419
1557
  ));
1420
1558
  };
@@ -1447,7 +1585,7 @@ var StyledListItemButton = styled5(ListItemButton, {
1447
1585
  }
1448
1586
  `
1449
1587
  );
1450
- var Indicator = styled5(Box7, {
1588
+ var Indicator = styled5(Box8, {
1451
1589
  shouldForwardProp: (prop) => !["isActive", "isError"].includes(prop)
1452
1590
  })(({ theme, isActive, isError }) => ({
1453
1591
  display: "flex",
@@ -1477,10 +1615,10 @@ var validateLabel = (newLabel) => {
1477
1615
  };
1478
1616
 
1479
1617
  // src/components/class-manager/not-found.tsx
1480
- import * as React14 from "react";
1618
+ import * as React16 from "react";
1481
1619
  import { ColorSwatchIcon as ColorSwatchIcon2, PhotoIcon } from "@elementor/icons";
1482
- import { Box as Box8, Link, Stack as Stack6, Typography as Typography6 } from "@elementor/ui";
1483
- import { __ as __11 } from "@wordpress/i18n";
1620
+ import { Box as Box9, Link, Stack as Stack7, Typography as Typography7 } from "@elementor/ui";
1621
+ import { __ as __12 } from "@wordpress/i18n";
1484
1622
  var getNotFoundType = (searchValue, filters, filteredClasses) => {
1485
1623
  const searchNotFound = filteredClasses.length <= 0 && searchValue.length > 1;
1486
1624
  const filterNotFound = filters && filters.length === 0;
@@ -1498,19 +1636,19 @@ var getNotFoundType = (searchValue, filters, filteredClasses) => {
1498
1636
  };
1499
1637
  var notFound = {
1500
1638
  filterAndSearch: {
1501
- mainText: __11("Sorry, nothing matched.", "elementor"),
1502
- sceneryText: __11("Try something else.", "elementor"),
1503
- icon: /* @__PURE__ */ React14.createElement(PhotoIcon, { color: "inherit", fontSize: "large" })
1639
+ mainText: __12("Sorry, nothing matched.", "elementor"),
1640
+ sceneryText: __12("Try something else.", "elementor"),
1641
+ icon: /* @__PURE__ */ React16.createElement(PhotoIcon, { color: "inherit", fontSize: "large" })
1504
1642
  },
1505
1643
  search: {
1506
- mainText: __11("Sorry, nothing matched", "elementor"),
1507
- sceneryText: __11("Clear your input and try something else.", "elementor"),
1508
- icon: /* @__PURE__ */ React14.createElement(PhotoIcon, { color: "inherit", fontSize: "large" })
1644
+ mainText: __12("Sorry, nothing matched", "elementor"),
1645
+ sceneryText: __12("Clear your input and try something else.", "elementor"),
1646
+ icon: /* @__PURE__ */ React16.createElement(PhotoIcon, { color: "inherit", fontSize: "large" })
1509
1647
  },
1510
1648
  filter: {
1511
- mainText: __11("Sorry, nothing matched that search.", "elementor"),
1512
- sceneryText: __11("Clear the filters and try something else.", "elementor"),
1513
- icon: /* @__PURE__ */ React14.createElement(ColorSwatchIcon2, { color: "inherit", fontSize: "large" })
1649
+ mainText: __12("Sorry, nothing matched that search.", "elementor"),
1650
+ sceneryText: __12("Clear the filters and try something else.", "elementor"),
1651
+ icon: /* @__PURE__ */ React16.createElement(ColorSwatchIcon2, { color: "inherit", fontSize: "large" })
1514
1652
  }
1515
1653
  };
1516
1654
  var NotFound = ({ notFoundType }) => {
@@ -1520,11 +1658,11 @@ var NotFound = ({ notFoundType }) => {
1520
1658
  } = useSearchAndFilters();
1521
1659
  switch (notFoundType) {
1522
1660
  case "filter":
1523
- return /* @__PURE__ */ React14.createElement(NotFoundLayout, { ...notFound.filter, onClear: onClearFilter });
1661
+ return /* @__PURE__ */ React16.createElement(NotFoundLayout, { ...notFound.filter, onClear: onClearFilter });
1524
1662
  case "search":
1525
- return /* @__PURE__ */ React14.createElement(NotFoundLayout, { ...notFound.search, searchValue: inputValue, onClear: onClearSearch });
1663
+ return /* @__PURE__ */ React16.createElement(NotFoundLayout, { ...notFound.search, searchValue: inputValue, onClear: onClearSearch });
1526
1664
  case "filterAndSearch":
1527
- return /* @__PURE__ */ React14.createElement(
1665
+ return /* @__PURE__ */ React16.createElement(
1528
1666
  NotFoundLayout,
1529
1667
  {
1530
1668
  ...notFound.filterAndSearch,
@@ -1536,8 +1674,8 @@ var NotFound = ({ notFoundType }) => {
1536
1674
  );
1537
1675
  }
1538
1676
  };
1539
- var NotFoundLayout = ({ onClear, searchValue, mainText, sceneryText, icon }) => /* @__PURE__ */ React14.createElement(
1540
- Stack6,
1677
+ var NotFoundLayout = ({ onClear, searchValue, mainText, sceneryText, icon }) => /* @__PURE__ */ React16.createElement(
1678
+ Stack7,
1541
1679
  {
1542
1680
  color: "text.secondary",
1543
1681
  pt: 5,
@@ -1547,16 +1685,16 @@ var NotFoundLayout = ({ onClear, searchValue, mainText, sceneryText, icon }) =>
1547
1685
  justifySelf: "center"
1548
1686
  },
1549
1687
  icon,
1550
- /* @__PURE__ */ React14.createElement(
1551
- Box8,
1688
+ /* @__PURE__ */ React16.createElement(
1689
+ Box9,
1552
1690
  {
1553
1691
  sx: {
1554
1692
  width: "100%"
1555
1693
  }
1556
1694
  },
1557
- /* @__PURE__ */ React14.createElement(Typography6, { align: "center", variant: "subtitle2", color: "inherit" }, mainText),
1558
- searchValue && /* @__PURE__ */ React14.createElement(
1559
- Typography6,
1695
+ /* @__PURE__ */ React16.createElement(Typography7, { align: "center", variant: "subtitle2", color: "inherit" }, mainText),
1696
+ searchValue && /* @__PURE__ */ React16.createElement(
1697
+ Typography7,
1560
1698
  {
1561
1699
  variant: "subtitle2",
1562
1700
  color: "inherit",
@@ -1566,8 +1704,8 @@ var NotFoundLayout = ({ onClear, searchValue, mainText, sceneryText, icon }) =>
1566
1704
  justifyContent: "center"
1567
1705
  }
1568
1706
  },
1569
- /* @__PURE__ */ React14.createElement("span", null, "\u201C"),
1570
- /* @__PURE__ */ React14.createElement(
1707
+ /* @__PURE__ */ React16.createElement("span", null, "\u201C"),
1708
+ /* @__PURE__ */ React16.createElement(
1571
1709
  "span",
1572
1710
  {
1573
1711
  style: {
@@ -1578,11 +1716,11 @@ var NotFoundLayout = ({ onClear, searchValue, mainText, sceneryText, icon }) =>
1578
1716
  },
1579
1717
  searchValue
1580
1718
  ),
1581
- /* @__PURE__ */ React14.createElement("span", null, "\u201D.")
1719
+ /* @__PURE__ */ React16.createElement("span", null, "\u201D.")
1582
1720
  )
1583
1721
  ),
1584
- /* @__PURE__ */ React14.createElement(Typography6, { align: "center", variant: "caption", color: "inherit" }, sceneryText),
1585
- /* @__PURE__ */ React14.createElement(Typography6, { align: "center", variant: "caption", color: "inherit" }, /* @__PURE__ */ React14.createElement(Link, { color: "secondary", variant: "caption", component: "button", onClick: onClear }, __11("Clear & try again", "elementor")))
1722
+ /* @__PURE__ */ React16.createElement(Typography7, { align: "center", variant: "caption", color: "inherit" }, sceneryText),
1723
+ /* @__PURE__ */ React16.createElement(Typography7, { align: "center", variant: "caption", color: "inherit" }, /* @__PURE__ */ React16.createElement(Link, { color: "secondary", variant: "caption", component: "button", onClick: onClear }, __12("Clear & try again", "elementor")))
1586
1724
  );
1587
1725
 
1588
1726
  // src/components/class-manager/global-classes-list.tsx
@@ -1613,22 +1751,22 @@ var GlobalClassesList = ({ disabled }) => {
1613
1751
  return () => window.removeEventListener("keydown", handler);
1614
1752
  }, [dispatch5]);
1615
1753
  if (!cssClasses?.length) {
1616
- return /* @__PURE__ */ React15.createElement(EmptyState, null);
1754
+ return /* @__PURE__ */ React17.createElement(EmptyState, null);
1617
1755
  }
1618
1756
  const notFoundType = getNotFoundType(searchValue, filters, filteredCssClasses);
1619
1757
  if (notFoundType) {
1620
- return /* @__PURE__ */ React15.createElement(NotFound, { notFoundType });
1758
+ return /* @__PURE__ */ React17.createElement(NotFound, { notFoundType });
1621
1759
  }
1622
1760
  const isFiltersApplied = filters?.length || searchValue;
1623
1761
  const allowSorting = filteredCssClasses.length > 1 && !isFiltersApplied;
1624
- return /* @__PURE__ */ React15.createElement(DeleteConfirmationProvider, null, /* @__PURE__ */ React15.createElement(List, { sx: { display: "flex", flexDirection: "column", gap: 0.5 } }, /* @__PURE__ */ React15.createElement(
1762
+ return /* @__PURE__ */ React17.createElement(DeleteConfirmationProvider, null, /* @__PURE__ */ React17.createElement(List, { sx: { display: "flex", flexDirection: "column", gap: 0.5 } }, /* @__PURE__ */ React17.createElement(
1625
1763
  SortableProvider,
1626
1764
  {
1627
1765
  value: classesOrder,
1628
1766
  onChange: reorderClasses,
1629
1767
  disableDragOverlay: !allowSorting
1630
1768
  },
1631
- filteredCssClasses?.map(({ id: id2, label }) => /* @__PURE__ */ React15.createElement(SortableItem, { key: id2, id: id2 }, ({ isDragged, isDragPlaceholder, triggerProps, triggerStyle }) => /* @__PURE__ */ React15.createElement(
1769
+ filteredCssClasses?.map(({ id: id2, label }) => /* @__PURE__ */ React17.createElement(SortableItem, { key: id2, id: id2 }, ({ isDragged, isDragPlaceholder, triggerProps, triggerStyle }) => /* @__PURE__ */ React17.createElement(
1632
1770
  ClassItem,
1633
1771
  {
1634
1772
  id: id2,
@@ -1651,11 +1789,11 @@ var GlobalClassesList = ({ disabled }) => {
1651
1789
  )))
1652
1790
  )));
1653
1791
  };
1654
- var EmptyState = () => /* @__PURE__ */ React15.createElement(Stack7, { alignItems: "center", gap: 1.5, pt: 10, px: 0.5, maxWidth: "260px", margin: "auto" }, /* @__PURE__ */ React15.createElement(FlippedColorSwatchIcon, { fontSize: "large" }), /* @__PURE__ */ React15.createElement(StyledHeader, { variant: "subtitle2", component: "h2", color: "text.secondary" }, __12("There are no global classes yet.", "elementor")), /* @__PURE__ */ React15.createElement(Typography7, { align: "center", variant: "caption", color: "text.secondary" }, __12(
1792
+ var EmptyState = () => /* @__PURE__ */ React17.createElement(Stack8, { alignItems: "center", gap: 1.5, pt: 10, px: 0.5, maxWidth: "260px", margin: "auto" }, /* @__PURE__ */ React17.createElement(FlippedColorSwatchIcon, { fontSize: "large" }), /* @__PURE__ */ React17.createElement(StyledHeader, { variant: "subtitle2", component: "h2", color: "text.secondary" }, __13("There are no global classes yet.", "elementor")), /* @__PURE__ */ React17.createElement(Typography8, { align: "center", variant: "caption", color: "text.secondary" }, __13(
1655
1793
  "CSS classes created in the editor panel will appear here. Once they are available, you can arrange their hierarchy, rename them, or delete them as needed.",
1656
1794
  "elementor"
1657
1795
  )));
1658
- var StyledHeader = styled6(Typography7)(({ theme, variant }) => ({
1796
+ var StyledHeader = styled6(Typography8)(({ theme, variant }) => ({
1659
1797
  "&.MuiTypography-root": {
1660
1798
  ...theme.typography[variant]
1661
1799
  }
@@ -1706,22 +1844,22 @@ function unblockPanelInteractions() {
1706
1844
  }
1707
1845
 
1708
1846
  // src/components/class-manager/save-changes-dialog.tsx
1709
- import * as React16 from "react";
1847
+ import * as React18 from "react";
1710
1848
  import { useState as useState5 } from "react";
1711
1849
  import { AlertTriangleFilledIcon } from "@elementor/icons";
1712
1850
  import {
1713
- Button as Button2,
1851
+ Button as Button3,
1714
1852
  Dialog as Dialog2,
1715
- DialogActions as DialogActions2,
1716
- DialogContent as DialogContent2,
1853
+ DialogActions as DialogActions3,
1854
+ DialogContent as DialogContent3,
1717
1855
  DialogContentText as DialogContentText2,
1718
1856
  DialogTitle as DialogTitle2
1719
1857
  } from "@elementor/ui";
1720
1858
  var TITLE_ID2 = "save-changes-dialog";
1721
- var SaveChangesDialog = ({ children, onClose }) => /* @__PURE__ */ React16.createElement(Dialog2, { open: true, onClose, "aria-labelledby": TITLE_ID2, maxWidth: "xs" }, children);
1722
- var SaveChangesDialogTitle = ({ children }) => /* @__PURE__ */ React16.createElement(DialogTitle2, { id: TITLE_ID2, display: "flex", alignItems: "center", gap: 1, sx: { lineHeight: 1 } }, /* @__PURE__ */ React16.createElement(AlertTriangleFilledIcon, { color: "secondary" }), children);
1723
- var SaveChangesDialogContent = ({ children }) => /* @__PURE__ */ React16.createElement(DialogContent2, null, children);
1724
- var SaveChangesDialogContentText = (props) => /* @__PURE__ */ React16.createElement(DialogContentText2, { variant: "body2", color: "textPrimary", display: "flex", flexDirection: "column", ...props });
1859
+ var SaveChangesDialog = ({ children, onClose }) => /* @__PURE__ */ React18.createElement(Dialog2, { open: true, onClose, "aria-labelledby": TITLE_ID2, maxWidth: "xs" }, children);
1860
+ var SaveChangesDialogTitle = ({ children }) => /* @__PURE__ */ React18.createElement(DialogTitle2, { id: TITLE_ID2, display: "flex", alignItems: "center", gap: 1, sx: { lineHeight: 1 } }, /* @__PURE__ */ React18.createElement(AlertTriangleFilledIcon, { color: "secondary" }), children);
1861
+ var SaveChangesDialogContent = ({ children }) => /* @__PURE__ */ React18.createElement(DialogContent3, null, children);
1862
+ var SaveChangesDialogContentText = (props) => /* @__PURE__ */ React18.createElement(DialogContentText2, { variant: "body2", color: "textPrimary", display: "flex", flexDirection: "column", ...props });
1725
1863
  var SaveChangesDialogActions = ({ actions }) => {
1726
1864
  const [isConfirming, setIsConfirming] = useState5(false);
1727
1865
  const { cancel, confirm, discard } = actions;
@@ -1730,7 +1868,7 @@ var SaveChangesDialogActions = ({ actions }) => {
1730
1868
  await confirm.action();
1731
1869
  setIsConfirming(false);
1732
1870
  };
1733
- return /* @__PURE__ */ React16.createElement(DialogActions2, null, cancel && /* @__PURE__ */ React16.createElement(Button2, { variant: "text", color: "secondary", onClick: cancel.action }, cancel.label), discard && /* @__PURE__ */ React16.createElement(Button2, { variant: "text", color: "secondary", onClick: discard.action }, discard.label), /* @__PURE__ */ React16.createElement(Button2, { variant: "contained", color: "secondary", onClick: onConfirm, loading: isConfirming }, confirm.label));
1871
+ return /* @__PURE__ */ React18.createElement(DialogActions3, null, cancel && /* @__PURE__ */ React18.createElement(Button3, { variant: "text", color: "secondary", onClick: cancel.action }, cancel.label), discard && /* @__PURE__ */ React18.createElement(Button3, { variant: "text", color: "secondary", onClick: discard.action }, discard.label), /* @__PURE__ */ React18.createElement(Button3, { variant: "contained", color: "secondary", onClick: onConfirm, loading: isConfirming }, confirm.label));
1734
1872
  };
1735
1873
  SaveChangesDialog.Title = SaveChangesDialogTitle;
1736
1874
  SaveChangesDialog.Content = SaveChangesDialogContent;
@@ -1768,7 +1906,7 @@ function ClassManagerPanel() {
1768
1906
  closeSaveChangesDialog();
1769
1907
  };
1770
1908
  usePreventUnload();
1771
- return /* @__PURE__ */ React17.createElement(ThemeProvider, null, /* @__PURE__ */ React17.createElement(ErrorBoundary, { fallback: /* @__PURE__ */ React17.createElement(ErrorBoundaryFallback, null) }, /* @__PURE__ */ React17.createElement(Panel, null, /* @__PURE__ */ React17.createElement(SearchAndFilterProvider, null, /* @__PURE__ */ React17.createElement(PanelHeader, null, /* @__PURE__ */ React17.createElement(Stack8, { p: 1, pl: 2, width: "100%", direction: "row", alignItems: "center" }, /* @__PURE__ */ React17.createElement(Stack8, { width: "100%", direction: "row", gap: 1 }, /* @__PURE__ */ React17.createElement(PanelHeaderTitle, { sx: { display: "flex", alignItems: "center", gap: 0.5 } }, /* @__PURE__ */ React17.createElement(FlippedColorSwatchIcon, { fontSize: "inherit" }), __13("Class Manager", "elementor")), /* @__PURE__ */ React17.createElement(TotalCssClassCounter, null)), /* @__PURE__ */ React17.createElement(
1909
+ return /* @__PURE__ */ React19.createElement(ThemeProvider, null, /* @__PURE__ */ React19.createElement(ErrorBoundary, { fallback: /* @__PURE__ */ React19.createElement(ErrorBoundaryFallback, null) }, /* @__PURE__ */ React19.createElement(Panel, null, /* @__PURE__ */ React19.createElement(SearchAndFilterProvider, null, /* @__PURE__ */ React19.createElement(PanelHeader, null, /* @__PURE__ */ React19.createElement(Stack9, { p: 1, pl: 2, width: "100%", direction: "row", alignItems: "center" }, /* @__PURE__ */ React19.createElement(Stack9, { width: "100%", direction: "row", gap: 1 }, /* @__PURE__ */ React19.createElement(PanelHeaderTitle, { sx: { display: "flex", alignItems: "center", gap: 0.5 } }, /* @__PURE__ */ React19.createElement(FlippedColorSwatchIcon, { fontSize: "inherit" }), __14("Class Manager", "elementor")), /* @__PURE__ */ React19.createElement(TotalCssClassCounter, null)), /* @__PURE__ */ React19.createElement(
1772
1910
  CloseButton,
1773
1911
  {
1774
1912
  sx: { marginLeft: "auto" },
@@ -1781,7 +1919,7 @@ function ClassManagerPanel() {
1781
1919
  closePanel();
1782
1920
  }
1783
1921
  }
1784
- ))), /* @__PURE__ */ React17.createElement(
1922
+ ))), /* @__PURE__ */ React19.createElement(
1785
1923
  PanelBody,
1786
1924
  {
1787
1925
  sx: {
@@ -1790,10 +1928,10 @@ function ClassManagerPanel() {
1790
1928
  height: "100%"
1791
1929
  }
1792
1930
  },
1793
- /* @__PURE__ */ React17.createElement(Box9, { px: 2, pb: 1 }, /* @__PURE__ */ React17.createElement(Stack8, { direction: "row", justifyContent: "spaceBetween", gap: 0.5, sx: { pb: 0.5 } }, /* @__PURE__ */ React17.createElement(Box9, { sx: { flexGrow: 1 } }, /* @__PURE__ */ React17.createElement(ClassManagerSearch, null)), /* @__PURE__ */ React17.createElement(CssClassFilter, null)), /* @__PURE__ */ React17.createElement(ActiveFilters, null)),
1794
- /* @__PURE__ */ React17.createElement(Divider3, null),
1795
- /* @__PURE__ */ React17.createElement(
1796
- Box9,
1931
+ /* @__PURE__ */ React19.createElement(Box10, { px: 2, pb: 1 }, /* @__PURE__ */ React19.createElement(Stack9, { direction: "row", justifyContent: "spaceBetween", gap: 0.5, sx: { pb: 0.5 } }, /* @__PURE__ */ React19.createElement(Box10, { sx: { flexGrow: 1 } }, /* @__PURE__ */ React19.createElement(ClassManagerSearch, null)), /* @__PURE__ */ React19.createElement(CssClassFilter, null)), /* @__PURE__ */ React19.createElement(ActiveFilters, null)),
1932
+ /* @__PURE__ */ React19.createElement(Divider4, null),
1933
+ /* @__PURE__ */ React19.createElement(
1934
+ Box10,
1797
1935
  {
1798
1936
  px: 2,
1799
1937
  sx: {
@@ -1801,10 +1939,10 @@ function ClassManagerPanel() {
1801
1939
  overflowY: "auto"
1802
1940
  }
1803
1941
  },
1804
- /* @__PURE__ */ React17.createElement(GlobalClassesList, { disabled: isPublishing })
1942
+ /* @__PURE__ */ React19.createElement(GlobalClassesList, { disabled: isPublishing })
1805
1943
  )
1806
- ), /* @__PURE__ */ React17.createElement(PanelFooter, null, /* @__PURE__ */ React17.createElement(
1807
- Button3,
1944
+ ), /* @__PURE__ */ React19.createElement(PanelFooter, null, /* @__PURE__ */ React19.createElement(
1945
+ Button4,
1808
1946
  {
1809
1947
  fullWidth: true,
1810
1948
  size: "small",
@@ -1814,19 +1952,19 @@ function ClassManagerPanel() {
1814
1952
  disabled: !isDirty2,
1815
1953
  loading: isPublishing
1816
1954
  },
1817
- __13("Save changes", "elementor")
1818
- ))))), /* @__PURE__ */ React17.createElement(ClassManagerIntroduction, null), isSaveChangesDialogOpen && /* @__PURE__ */ React17.createElement(SaveChangesDialog, null, /* @__PURE__ */ React17.createElement(DialogHeader, { onClose: closeSaveChangesDialog, logo: false }, /* @__PURE__ */ React17.createElement(SaveChangesDialog.Title, null, __13("You have unsaved changes", "elementor"))), /* @__PURE__ */ React17.createElement(SaveChangesDialog.Content, null, /* @__PURE__ */ React17.createElement(SaveChangesDialog.ContentText, null, __13("You have unsaved changes in the Class Manager.", "elementor")), /* @__PURE__ */ React17.createElement(SaveChangesDialog.ContentText, null, __13("To avoid losing your updates, save your changes before leaving.", "elementor"))), /* @__PURE__ */ React17.createElement(
1955
+ __14("Save changes", "elementor")
1956
+ ))))), /* @__PURE__ */ React19.createElement(ClassManagerIntroduction, null), isSaveChangesDialogOpen && /* @__PURE__ */ React19.createElement(SaveChangesDialog, null, /* @__PURE__ */ React19.createElement(DialogHeader2, { onClose: closeSaveChangesDialog, logo: false }, /* @__PURE__ */ React19.createElement(SaveChangesDialog.Title, null, __14("You have unsaved changes", "elementor"))), /* @__PURE__ */ React19.createElement(SaveChangesDialog.Content, null, /* @__PURE__ */ React19.createElement(SaveChangesDialog.ContentText, null, __14("You have unsaved changes in the Class Manager.", "elementor")), /* @__PURE__ */ React19.createElement(SaveChangesDialog.ContentText, null, __14("To avoid losing your updates, save your changes before leaving.", "elementor"))), /* @__PURE__ */ React19.createElement(
1819
1957
  SaveChangesDialog.Actions,
1820
1958
  {
1821
1959
  actions: {
1822
1960
  discard: {
1823
- label: __13("Discard", "elementor"),
1961
+ label: __14("Discard", "elementor"),
1824
1962
  action: () => {
1825
1963
  resetAndClosePanel();
1826
1964
  }
1827
1965
  },
1828
1966
  confirm: {
1829
- label: __13("Save & Continue", "elementor"),
1967
+ label: __14("Save & Continue", "elementor"),
1830
1968
  action: async () => {
1831
1969
  await publish();
1832
1970
  closeSaveChangesDialog();
@@ -1837,8 +1975,8 @@ function ClassManagerPanel() {
1837
1975
  }
1838
1976
  )));
1839
1977
  }
1840
- var CloseButton = ({ onClose, ...props }) => /* @__PURE__ */ React17.createElement(IconButton4, { size: "small", color: "secondary", onClick: onClose, "aria-label": "Close", ...props }, /* @__PURE__ */ React17.createElement(XIcon, { fontSize: "small" }));
1841
- var ErrorBoundaryFallback = () => /* @__PURE__ */ React17.createElement(Box9, { role: "alert", sx: { minHeight: "100%", p: 2 } }, /* @__PURE__ */ React17.createElement(Alert, { severity: "error", sx: { mb: 2, maxWidth: 400, textAlign: "center" } }, /* @__PURE__ */ React17.createElement("strong", null, __13("Something went wrong", "elementor"))));
1978
+ var CloseButton = ({ onClose, ...props }) => /* @__PURE__ */ React19.createElement(IconButton4, { size: "small", color: "secondary", onClick: onClose, "aria-label": "Close", ...props }, /* @__PURE__ */ React19.createElement(XIcon, { fontSize: "small" }));
1979
+ var ErrorBoundaryFallback = () => /* @__PURE__ */ React19.createElement(Box10, { role: "alert", sx: { minHeight: "100%", p: 2 } }, /* @__PURE__ */ React19.createElement(Alert2, { severity: "error", sx: { mb: 2, maxWidth: 400, textAlign: "center" } }, /* @__PURE__ */ React19.createElement("strong", null, __14("Something went wrong", "elementor"))));
1842
1980
  var usePreventUnload = () => {
1843
1981
  const isDirty2 = useDirtyState();
1844
1982
  useEffect2(() => {
@@ -1867,7 +2005,7 @@ var usePublish = () => {
1867
2005
  var TotalCssClassCounter = () => {
1868
2006
  const filters = useFilters();
1869
2007
  const cssClasses = useClassesOrder();
1870
- return /* @__PURE__ */ React17.createElement(
2008
+ return /* @__PURE__ */ React19.createElement(
1871
2009
  Chip4,
1872
2010
  {
1873
2011
  size: "small",
@@ -1896,19 +2034,19 @@ var ClassManagerButton = () => {
1896
2034
  openPanel();
1897
2035
  prefetchClassesUsage();
1898
2036
  };
1899
- return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(Tooltip6, { title: __14("Class Manager", "elementor"), placement: "top" }, /* @__PURE__ */ React18.createElement(IconButton5, { size: "tiny", onClick: handleOpenPanel, sx: { marginInlineEnd: -0.75 } }, /* @__PURE__ */ React18.createElement(FlippedColorSwatchIcon, { fontSize: "tiny" }))), isSaveChangesDialogOpen && /* @__PURE__ */ React18.createElement(SaveChangesDialog, null, /* @__PURE__ */ React18.createElement(SaveChangesDialog.Title, null, __14("You have unsaved changes", "elementor")), /* @__PURE__ */ React18.createElement(SaveChangesDialog.Content, null, /* @__PURE__ */ React18.createElement(SaveChangesDialog.ContentText, { sx: { mb: 2 } }, __14(
2037
+ return /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(Tooltip6, { title: __15("Class Manager", "elementor"), placement: "top" }, /* @__PURE__ */ React20.createElement(IconButton5, { size: "tiny", onClick: handleOpenPanel, sx: { marginInlineEnd: -0.75 } }, /* @__PURE__ */ React20.createElement(FlippedColorSwatchIcon, { fontSize: "tiny" }))), isSaveChangesDialogOpen && /* @__PURE__ */ React20.createElement(SaveChangesDialog, null, /* @__PURE__ */ React20.createElement(SaveChangesDialog.Title, null, __15("You have unsaved changes", "elementor")), /* @__PURE__ */ React20.createElement(SaveChangesDialog.Content, null, /* @__PURE__ */ React20.createElement(SaveChangesDialog.ContentText, { sx: { mb: 2 } }, __15(
1900
2038
  "To open the Class Manager, save your page first. You can't continue without saving.",
1901
2039
  "elementor"
1902
- ))), /* @__PURE__ */ React18.createElement(
2040
+ ))), /* @__PURE__ */ React20.createElement(
1903
2041
  SaveChangesDialog.Actions,
1904
2042
  {
1905
2043
  actions: {
1906
2044
  cancel: {
1907
- label: __14("Stay here", "elementor"),
2045
+ label: __15("Stay here", "elementor"),
1908
2046
  action: closeSaveChangesDialog
1909
2047
  },
1910
2048
  confirm: {
1911
- label: __14("Save & Continue", "elementor"),
2049
+ label: __15("Save & Continue", "elementor"),
1912
2050
  action: async () => {
1913
2051
  await saveDocument();
1914
2052
  closeSaveChangesDialog();
@@ -1922,11 +2060,11 @@ var ClassManagerButton = () => {
1922
2060
  };
1923
2061
 
1924
2062
  // src/components/convert-local-class-to-global-class.tsx
1925
- import * as React19 from "react";
2063
+ import * as React21 from "react";
1926
2064
  import { validateStyleLabel as validateStyleLabel2 } from "@elementor/editor-styles-repository";
1927
2065
  import { MenuListItem as MenuListItem2 } from "@elementor/editor-ui";
1928
- import { Divider as Divider4 } from "@elementor/ui";
1929
- import { __ as __15 } from "@wordpress/i18n";
2066
+ import { Divider as Divider5 } from "@elementor/ui";
2067
+ import { __ as __16 } from "@wordpress/i18n";
1930
2068
  var ConvertLocalClassToGlobalClass = (props) => {
1931
2069
  const localStyleData = props.styleDef;
1932
2070
  const handleConversion = () => {
@@ -1939,7 +2077,7 @@ var ConvertLocalClassToGlobalClass = (props) => {
1939
2077
  props.successCallback(newId);
1940
2078
  }
1941
2079
  };
1942
- return /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
2080
+ return /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement(
1943
2081
  MenuListItem2,
1944
2082
  {
1945
2083
  disabled: !props.canConvert,
@@ -1953,8 +2091,8 @@ var ConvertLocalClassToGlobalClass = (props) => {
1953
2091
  }
1954
2092
  }
1955
2093
  },
1956
- __15("Convert to global class", "elementor")
1957
- ), /* @__PURE__ */ React19.createElement(Divider4, null));
2094
+ __16("Convert to global class", "elementor")
2095
+ ), /* @__PURE__ */ React21.createElement(Divider5, null));
1958
2096
  };
1959
2097
  function createClassName(prefix) {
1960
2098
  let i = 1;
@@ -1993,14 +2131,18 @@ function PopulateStore() {
1993
2131
  return null;
1994
2132
  }
1995
2133
 
2134
+ // src/sync-with-document.tsx
2135
+ import { useEffect as useEffect4 } from "react";
2136
+ import { __privateListenTo as listenTo, v1ReadyEvent } from "@elementor/editor-v1-adapters";
2137
+
1996
2138
  // src/sync-with-document-save.ts
1997
2139
  import { getCurrentUser } from "@elementor/editor-current-user";
1998
2140
  import { setDocumentModifiedStatus as setDocumentModifiedStatus2 } from "@elementor/editor-documents";
1999
2141
  import { registerDataHook } from "@elementor/editor-v1-adapters";
2000
2142
  import { __getState as getState3, __subscribeWithSelector as subscribeWithSelector2 } from "@elementor/store";
2001
- function syncWithDocumentSave() {
2143
+ function syncWithDocumentSave(panelActions) {
2002
2144
  const unsubscribe = syncDirtyState();
2003
- bindSaveAction();
2145
+ bindSaveAction(panelActions);
2004
2146
  return unsubscribe;
2005
2147
  }
2006
2148
  function syncDirtyState() {
@@ -2011,15 +2153,16 @@ function syncDirtyState() {
2011
2153
  setDocumentModifiedStatus2(true);
2012
2154
  });
2013
2155
  }
2014
- function bindSaveAction() {
2156
+ function bindSaveAction(panelActions) {
2015
2157
  registerDataHook("after", "document/save/save", (args) => {
2016
2158
  const user = getCurrentUser();
2017
2159
  const canEdit = user?.capabilities.includes(UPDATE_CLASS_CAPABILITY_KEY);
2018
2160
  if (!canEdit) {
2019
2161
  return;
2020
2162
  }
2021
- return saveGlobalClasses({
2022
- context: args.status === "publish" ? "frontend" : "preview"
2163
+ saveGlobalClasses({
2164
+ context: args.status === "publish" ? "frontend" : "preview",
2165
+ onApprove: panelActions?.open
2023
2166
  });
2024
2167
  });
2025
2168
  }
@@ -2027,6 +2170,17 @@ function isDirty() {
2027
2170
  return selectIsDirty(getState3());
2028
2171
  }
2029
2172
 
2173
+ // src/sync-with-document.tsx
2174
+ function SyncWithDocumentSave() {
2175
+ const panelActions = usePanelActions();
2176
+ useEffect4(() => {
2177
+ listenTo(v1ReadyEvent(), () => {
2178
+ syncWithDocumentSave(panelActions);
2179
+ });
2180
+ }, []);
2181
+ return null;
2182
+ }
2183
+
2030
2184
  // src/init.ts
2031
2185
  function init() {
2032
2186
  registerSlice(slice);
@@ -2036,6 +2190,10 @@ function init() {
2036
2190
  id: "global-classes-populate-store",
2037
2191
  component: PopulateStore
2038
2192
  });
2193
+ injectIntoLogic({
2194
+ id: "global-classes-sync-with-document",
2195
+ component: SyncWithDocumentSave
2196
+ });
2039
2197
  injectIntoCssClassConvert({
2040
2198
  id: "global-classes-convert-from-local-class",
2041
2199
  component: ConvertLocalClassToGlobalClass
@@ -2048,12 +2206,8 @@ function init() {
2048
2206
  name: "global",
2049
2207
  getThemeColor: (theme) => theme.palette.global.dark
2050
2208
  });
2051
- listenTo(v1ReadyEvent(), () => {
2052
- syncWithDocumentSave();
2053
- });
2054
2209
  }
2055
2210
  export {
2056
- ClearIconButton,
2057
2211
  init
2058
2212
  };
2059
2213
  //# sourceMappingURL=index.mjs.map