@elementor/editor-controls 4.4.0-1144 → 4.4.0-1146

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.js CHANGED
@@ -117,6 +117,7 @@ __export(index_exports, {
117
117
  registerIconLibraryProvider: () => registerIconLibraryProvider,
118
118
  resetFontAwesome7IconsCache: () => resetFontAwesome7IconsCache,
119
119
  resolveFontAwesome7Icon: () => resolveFontAwesome7Icon,
120
+ resolveProviderIconPreviewSvg: () => resolveProviderIconPreviewSvg,
120
121
  resolveProviderIconSvg: () => resolveProviderIconSvg,
121
122
  trackUpgradePromotionClick: () => trackUpgradePromotionClick,
122
123
  trackViewPromotion: () => trackViewPromotion,
@@ -692,24 +693,37 @@ var NoticeControl = createControl(
692
693
  });
693
694
  };
694
695
  const handleActionClick = () => {
695
- setIsDismissed(true);
696
- if (dismissible) {
697
- markNoticeAsDismissedInSession(dismissible);
696
+ if (!dismissible) {
697
+ return;
698
698
  }
699
+ setIsDismissed(true);
700
+ markNoticeAsDismissedInSession(dismissible);
699
701
  };
700
- return /* @__PURE__ */ React13.createElement(import_ui6.Alert, { variant: "outlined", severity, icon, size: "small", onClose: handleDismiss }, heading && /* @__PURE__ */ React13.createElement(NoticeTitle, null, heading), /* @__PURE__ */ React13.createElement(import_ui6.Typography, { variant: "caption", color: "textSecondary", sx: { fontStyle: "italic" } }, content), buttonText && buttonUrl && /* @__PURE__ */ React13.createElement(
701
- import_ui6.AlertAction,
702
+ return /* @__PURE__ */ React13.createElement(
703
+ import_ui6.Alert,
702
704
  {
703
- variant: "contained",
704
- color: severity,
705
- target: "_blank",
706
- rel: "noopener noreferrer",
707
- href: buttonUrl,
708
- onClick: handleActionClick,
709
- sx: { mt: 2 }
705
+ variant: "outlined",
706
+ severity,
707
+ icon,
708
+ size: "small",
709
+ onClose: dismissible ? handleDismiss : void 0
710
710
  },
711
- buttonText
712
- ));
711
+ heading && /* @__PURE__ */ React13.createElement(NoticeTitle, null, heading),
712
+ /* @__PURE__ */ React13.createElement(import_ui6.Typography, { variant: "caption", color: "textSecondary", sx: { fontStyle: "italic" } }, content),
713
+ buttonText && buttonUrl && /* @__PURE__ */ React13.createElement(
714
+ import_ui6.AlertAction,
715
+ {
716
+ variant: "contained",
717
+ color: severity,
718
+ target: "_blank",
719
+ rel: "noopener noreferrer",
720
+ href: buttonUrl,
721
+ onClick: handleActionClick,
722
+ sx: { mt: 2 }
723
+ },
724
+ buttonText
725
+ )
726
+ );
713
727
  }
714
728
  );
715
729
 
@@ -5737,7 +5751,7 @@ var AspectRatioControl = createControl(({ label }) => {
5737
5751
 
5738
5752
  // src/controls/svg-media-control.tsx
5739
5753
  var React93 = __toESM(require("react"));
5740
- var import_react57 = require("react");
5754
+ var import_react59 = require("react");
5741
5755
  var import_editor_current_user = require("@elementor/editor-current-user");
5742
5756
  var import_editor_props35 = require("@elementor/editor-props");
5743
5757
  var import_ui76 = require("@elementor/ui");
@@ -5811,7 +5825,7 @@ function measureIconLibraryAnchor(container, buttonGroup) {
5811
5825
 
5812
5826
  // src/controls/icon-library/icon-library-popover.tsx
5813
5827
  var React90 = __toESM(require("react"));
5814
- var import_react56 = require("react");
5828
+ var import_react57 = require("react");
5815
5829
  var import_editor_ui12 = require("@elementor/editor-ui");
5816
5830
  var import_icons26 = require("@elementor/icons");
5817
5831
  var import_session2 = require("@elementor/session");
@@ -6066,8 +6080,74 @@ function toCatalogIcon(icon, library) {
6066
6080
 
6067
6081
  // src/controls/icon-library/font-awesome-glyph.tsx
6068
6082
  var React84 = __toESM(require("react"));
6083
+ var import_react53 = require("react");
6069
6084
  var import_ui67 = require("@elementor/ui");
6070
6085
 
6086
+ // src/controls/icon-library/icon-library-providers.ts
6087
+ var import_react52 = require("react");
6088
+ var import_query2 = require("@elementor/query");
6089
+ var PROVIDER_ICON_SVG_QUERY_KEY = "icon-library-provider-svg";
6090
+ var providers = /* @__PURE__ */ new Map();
6091
+ function registerIconLibraryProvider(provider) {
6092
+ providers.set(provider.id, provider);
6093
+ }
6094
+ function unregisterIconLibraryProvider(id) {
6095
+ providers.delete(id);
6096
+ }
6097
+ function useIconLibraryProviderIcons(enabled) {
6098
+ const [snapshot] = (0, import_react52.useState)(() => [...providers.values()]);
6099
+ const states = snapshot.map((provider) => provider.useIcons(enabled));
6100
+ const data = useStableConcat(states.map((state) => state.data));
6101
+ return {
6102
+ data,
6103
+ isLoading: states.some((state) => state.isLoading)
6104
+ };
6105
+ }
6106
+ function resolveProviderIconSvg(library, iconValue, signal) {
6107
+ return resolveFromProviders((provider) => provider.resolveSvg, library, iconValue, signal);
6108
+ }
6109
+ function resolveProviderIconPreviewSvg(library, iconValue, signal) {
6110
+ return resolveFromProviders(
6111
+ (provider) => provider.resolvePreviewSvg ?? provider.resolveSvg,
6112
+ library,
6113
+ iconValue,
6114
+ signal
6115
+ );
6116
+ }
6117
+ async function resolveFromProviders(pickResolver, library, iconValue, signal) {
6118
+ for (const provider of providers.values()) {
6119
+ try {
6120
+ const markup = await pickResolver(provider)?.(library, iconValue, signal);
6121
+ if (markup) {
6122
+ return markup;
6123
+ }
6124
+ } catch (error) {
6125
+ if (signal?.aborted) {
6126
+ throw error;
6127
+ }
6128
+ }
6129
+ }
6130
+ return null;
6131
+ }
6132
+ function useStableConcat(lists) {
6133
+ const previous = (0, import_react52.useRef)(null);
6134
+ if (!previous.current || !areSameLists(previous.current.lists, lists)) {
6135
+ previous.current = { lists, merged: lists.flatMap((list) => list ?? []) };
6136
+ }
6137
+ return previous.current.merged;
6138
+ }
6139
+ function areSameLists(a, b) {
6140
+ return a.length === b.length && a.every((item, index) => item === b[index]);
6141
+ }
6142
+ function useProviderIconSvg(library, iconValue, enabled) {
6143
+ return (0, import_query2.useQuery)({
6144
+ queryKey: [PROVIDER_ICON_SVG_QUERY_KEY, library, iconValue],
6145
+ queryFn: ({ signal }) => resolveProviderIconSvg(library, iconValue, signal),
6146
+ enabled: enabled && Boolean(library && iconValue),
6147
+ staleTime: Infinity
6148
+ });
6149
+ }
6150
+
6071
6151
  // src/controls/icon-library/sanitize-icon-svg-markup.ts
6072
6152
  var ALLOWED_SVG_TAGS = /* @__PURE__ */ new Set(["svg", "g", "path", "title", "desc"]);
6073
6153
  var ALLOWED_SVG_ATTRS = /* @__PURE__ */ new Set([
@@ -6114,7 +6194,56 @@ function pruneNode(node) {
6114
6194
  }
6115
6195
 
6116
6196
  // src/controls/icon-library/font-awesome-glyph.tsx
6117
- var FontAwesomeGlyph = ({ icon, size, color, label }) => {
6197
+ var FontAwesomeGlyph = (props) => {
6198
+ const { icon } = props;
6199
+ if (icon.lazySvg && !icon.svgMarkup) {
6200
+ return /* @__PURE__ */ React84.createElement(LazyProviderGlyph, { ...props });
6201
+ }
6202
+ return /* @__PURE__ */ React84.createElement(ResolvedGlyph, { ...props });
6203
+ };
6204
+ var LazyProviderGlyph = (props) => {
6205
+ const { icon, size } = props;
6206
+ const [resolved, setResolved] = (0, import_react53.useState)(null);
6207
+ const [isVisible, setIsVisible] = (0, import_react53.useState)(typeof IntersectionObserver === "undefined");
6208
+ const placeholderRef = (0, import_react53.useRef)(null);
6209
+ const svgMarkup = resolved?.id === icon.id ? resolved.markup : null;
6210
+ (0, import_react53.useEffect)(() => {
6211
+ const element = placeholderRef.current;
6212
+ if (isVisible || !element) {
6213
+ return;
6214
+ }
6215
+ const observer = new IntersectionObserver((entries) => {
6216
+ if (entries.some((entry) => entry.isIntersecting)) {
6217
+ setIsVisible(true);
6218
+ observer.disconnect();
6219
+ }
6220
+ });
6221
+ observer.observe(element);
6222
+ return () => observer.disconnect();
6223
+ }, [isVisible]);
6224
+ (0, import_react53.useEffect)(() => {
6225
+ if (!isVisible) {
6226
+ return;
6227
+ }
6228
+ const controller = new AbortController();
6229
+ resolveProviderIconPreviewSvg(icon.library, icon.value, controller.signal).then((markup) => !controller.signal.aborted && setResolved({ id: icon.id, markup })).catch(() => {
6230
+ });
6231
+ return () => controller.abort();
6232
+ }, [isVisible, icon.id, icon.library, icon.value]);
6233
+ if (!svgMarkup) {
6234
+ return /* @__PURE__ */ React84.createElement(
6235
+ import_ui67.Box,
6236
+ {
6237
+ component: "span",
6238
+ ref: placeholderRef,
6239
+ "aria-hidden": "true",
6240
+ sx: { display: "inline-block", width: size, height: size }
6241
+ }
6242
+ );
6243
+ }
6244
+ return /* @__PURE__ */ React84.createElement(ResolvedGlyph, { ...props, icon: { ...icon, svgMarkup } });
6245
+ };
6246
+ var ResolvedGlyph = ({ icon, size, color, label }) => {
6118
6247
  const svgMarkup = sanitizeIconSvgMarkup(icon.svgMarkup);
6119
6248
  if (svgMarkup) {
6120
6249
  return /* @__PURE__ */ React84.createElement(
@@ -6175,7 +6304,7 @@ var FontAwesomeGlyph = ({ icon, size, color, label }) => {
6175
6304
 
6176
6305
  // src/controls/icon-library/icon-library-filter.tsx
6177
6306
  var React85 = __toESM(require("react"));
6178
- var import_react52 = require("react");
6307
+ var import_react54 = require("react");
6179
6308
  var import_icons23 = require("@elementor/icons");
6180
6309
  var import_ui68 = require("@elementor/ui");
6181
6310
  var import_i18n34 = require("@wordpress/i18n");
@@ -6204,7 +6333,7 @@ var DEFAULT_FILTER = [
6204
6333
  { type: FILTER_TYPE_ITEM, value: "fa-brands", label: "Font Awesome - Brands", icon: "rosette" }
6205
6334
  ];
6206
6335
  var IconLibraryFilter = ({ value, onChange }) => {
6207
- const popupId = (0, import_react52.useId)();
6336
+ const popupId = (0, import_react54.useId)();
6208
6337
  const popupState = (0, import_ui68.usePopupState)({
6209
6338
  variant: "popover",
6210
6339
  popupId
@@ -6349,7 +6478,7 @@ function parseFilterEntry(value) {
6349
6478
 
6350
6479
  // src/controls/icon-library/icon-library-grid.tsx
6351
6480
  var React86 = __toESM(require("react"));
6352
- var import_react53 = require("react");
6481
+ var import_react55 = require("react");
6353
6482
  var import_ui69 = require("@elementor/ui");
6354
6483
  var import_react_virtual = require("@tanstack/react-virtual");
6355
6484
  var import_i18n35 = require("@wordpress/i18n");
@@ -6388,12 +6517,12 @@ var IconLibraryGrid = ({
6388
6517
  noResultsComponent
6389
6518
  }) => {
6390
6519
  const theme = (0, import_ui69.useTheme)();
6391
- const containerRef = (0, import_react53.useRef)(null);
6392
- const cellRefs = (0, import_react53.useRef)(/* @__PURE__ */ new Map());
6393
- const shouldRestoreFocusRef = (0, import_react53.useRef)(false);
6520
+ const containerRef = (0, import_react55.useRef)(null);
6521
+ const cellRefs = (0, import_react55.useRef)(/* @__PURE__ */ new Map());
6522
+ const shouldRestoreFocusRef = (0, import_react55.useRef)(false);
6394
6523
  const selectedIndex = items2.findIndex((item) => item.id === selectedValue);
6395
- const [focusedIndex, setFocusedIndex] = (0, import_react53.useState)(selectedIndex >= 0 ? selectedIndex : 0);
6396
- const [{ columnCount, cellSize }, setGridMetrics] = (0, import_react53.useState)(() => getGridMetrics(0, 0, 0));
6524
+ const [focusedIndex, setFocusedIndex] = (0, import_react55.useState)(selectedIndex >= 0 ? selectedIndex : 0);
6525
+ const [{ columnCount, cellSize }, setGridMetrics] = (0, import_react55.useState)(() => getGridMetrics(0, 0, 0));
6397
6526
  const rowCount = Math.ceil(items2.length / columnCount);
6398
6527
  const cellGap = Number.parseFloat(theme.spacing(GRID_CELL_GAP));
6399
6528
  const verticalPadding = Number.parseFloat(theme.spacing(GRID_VERTICAL_PADDING));
@@ -6408,7 +6537,7 @@ var IconLibraryGrid = ({
6408
6537
  });
6409
6538
  const focusedItem = items2[focusedIndex];
6410
6539
  const visibleRowIndexes = virtualizer.getVirtualIndexes().join(",");
6411
- (0, import_react53.useLayoutEffect)(() => {
6540
+ (0, import_react55.useLayoutEffect)(() => {
6412
6541
  setFocusedIndex((current) => {
6413
6542
  if (items2.length === 0) {
6414
6543
  return 0;
@@ -6423,7 +6552,7 @@ var IconLibraryGrid = ({
6423
6552
  virtualizer.scrollToIndex(Math.floor(selectedIndex / columnCount), { align: "center" });
6424
6553
  }
6425
6554
  }, [cellSize, columnCount, items2, selectedIndex, selectedValue]);
6426
- (0, import_react53.useLayoutEffect)(() => {
6555
+ (0, import_react55.useLayoutEffect)(() => {
6427
6556
  if (!shouldRestoreFocusRef.current || !focusedItem) {
6428
6557
  return;
6429
6558
  }
@@ -6434,7 +6563,7 @@ var IconLibraryGrid = ({
6434
6563
  cell.focus();
6435
6564
  shouldRestoreFocusRef.current = false;
6436
6565
  }, [focusedItem, visibleRowIndexes]);
6437
- (0, import_react53.useLayoutEffect)(() => {
6566
+ (0, import_react55.useLayoutEffect)(() => {
6438
6567
  const container = containerRef.current;
6439
6568
  if (!container) {
6440
6569
  return;
@@ -6450,7 +6579,7 @@ var IconLibraryGrid = ({
6450
6579
  resizeObserver.disconnect();
6451
6580
  };
6452
6581
  }, [theme, cellGap, items2.length]);
6453
- (0, import_react53.useLayoutEffect)(() => {
6582
+ (0, import_react55.useLayoutEffect)(() => {
6454
6583
  virtualizer.measure();
6455
6584
  }, [cellSize, columnCount]);
6456
6585
  const isRtl = theme.direction === "rtl" || document.documentElement.dir === "rtl";
@@ -6630,7 +6759,7 @@ var IconLibraryGrid = ({
6630
6759
  /* @__PURE__ */ React86.createElement(
6631
6760
  FontAwesomeGlyph,
6632
6761
  {
6633
- icon: item,
6762
+ icon: { ...item, value: item.iconValue ?? item.value },
6634
6763
  size: ICON_GLYPH_SIZE,
6635
6764
  color: "currentColor"
6636
6765
  }
@@ -6645,52 +6774,9 @@ var IconLibraryGrid = ({
6645
6774
  );
6646
6775
  };
6647
6776
 
6648
- // src/controls/icon-library/icon-library-providers.ts
6649
- var import_react54 = require("react");
6650
- var import_query2 = require("@elementor/query");
6651
- var PROVIDER_ICON_SVG_QUERY_KEY = "icon-library-provider-svg";
6652
- var providers = /* @__PURE__ */ new Map();
6653
- function registerIconLibraryProvider(provider) {
6654
- providers.set(provider.id, provider);
6655
- }
6656
- function unregisterIconLibraryProvider(id) {
6657
- providers.delete(id);
6658
- }
6659
- function useIconLibraryProviderIcons(enabled) {
6660
- const [snapshot] = (0, import_react54.useState)(() => [...providers.values()]);
6661
- const states = snapshot.map((provider) => provider.useIcons(enabled));
6662
- return {
6663
- data: states.flatMap((state) => state.data ?? []),
6664
- isLoading: states.some((state) => state.isLoading)
6665
- };
6666
- }
6667
- async function resolveProviderIconSvg(library, iconValue, signal) {
6668
- for (const provider of providers.values()) {
6669
- try {
6670
- const markup = await provider.resolveSvg?.(library, iconValue, signal);
6671
- if (markup) {
6672
- return markup;
6673
- }
6674
- } catch (error) {
6675
- if (signal?.aborted) {
6676
- throw error;
6677
- }
6678
- }
6679
- }
6680
- return null;
6681
- }
6682
- function useProviderIconSvg(library, iconValue, enabled) {
6683
- return (0, import_query2.useQuery)({
6684
- queryKey: [PROVIDER_ICON_SVG_QUERY_KEY, library, iconValue],
6685
- queryFn: ({ signal }) => resolveProviderIconSvg(library, iconValue, signal),
6686
- enabled: enabled && Boolean(library && iconValue),
6687
- staleTime: Infinity
6688
- });
6689
- }
6690
-
6691
6777
  // src/controls/icon-library/icon-library-upload-action.tsx
6692
6778
  var React87 = __toESM(require("react"));
6693
- var import_react55 = require("react");
6779
+ var import_react56 = require("react");
6694
6780
  var import_editor_ui11 = require("@elementor/editor-ui");
6695
6781
  var import_icons24 = require("@elementor/icons");
6696
6782
  var import_locations3 = require("@elementor/locations");
@@ -6739,7 +6825,7 @@ var trackUpgradePromotionClick = (data) => {
6739
6825
  var ICON_LIBRARY_UPLOAD_UPGRADE_URL = "https://go.elementor.com/go-pro-svg-library-upload-upgrade/";
6740
6826
  var TRACKING_DATA = { target_name: "icon_library_upload", location_l2: "general" };
6741
6827
  var { Slot: IconLibraryUploadActionSlot, inject: injectIntoIconLibraryUploadAction } = (0, import_locations3.createReplaceableLocation)();
6742
- var IconLibraryUploadButton = (0, import_react55.forwardRef)(
6828
+ var IconLibraryUploadButton = (0, import_react56.forwardRef)(
6743
6829
  (props, ref) => {
6744
6830
  const label = (0, import_i18n36.__)("Upload library", "elementor");
6745
6831
  return /* @__PURE__ */ React87.createElement(import_ui70.Tooltip, { title: label, placement: "top" }, /* @__PURE__ */ React87.createElement(import_ui70.IconButton, { ref, size: "tiny", "aria-label": label, ...props }, /* @__PURE__ */ React87.createElement(import_icons24.UploadIcon, { fontSize: "tiny" })));
@@ -6751,8 +6837,8 @@ var IconLibraryUploadPromotion = ({
6751
6837
  title = (0, import_i18n36.__)("Upload custom icons", "elementor"),
6752
6838
  content = (0, import_i18n36.__)("Add your own icon font library to use across your site.", "elementor")
6753
6839
  }) => {
6754
- const [isOpen, setIsOpen] = (0, import_react55.useState)(false);
6755
- const triggerRef = (0, import_react55.useRef)(null);
6840
+ const [isOpen, setIsOpen] = (0, import_react56.useState)(false);
6841
+ const triggerRef = (0, import_react56.useRef)(null);
6756
6842
  const canSeePromotions = !!window.elementor?.config?.v4Promotions;
6757
6843
  const close = () => {
6758
6844
  setIsOpen(false);
@@ -6836,6 +6922,21 @@ var IconLibraryViewToggle = ({ value, onChange }) => {
6836
6922
  );
6837
6923
  };
6838
6924
 
6925
+ // src/controls/icon-library/merge-icons-by-id.ts
6926
+ var getNames = (icon) => [icon.name, ...icon.aliases ?? []].filter(Boolean);
6927
+ function mergeIconsById(primary, secondary) {
6928
+ const ids = new Set(primary.map((icon) => icon.id));
6929
+ const names = new Set(
6930
+ primary.flatMap((icon) => getNames(icon).map((name) => `${icon.library}:${name}`))
6931
+ );
6932
+ return [
6933
+ ...primary,
6934
+ ...secondary.filter(
6935
+ (icon) => !ids.has(icon.id) && !getNames(icon).some((name) => names.has(`${icon.library}:${name}`))
6936
+ )
6937
+ ];
6938
+ }
6939
+
6839
6940
  // src/controls/icon-library/svg-element-icon.tsx
6840
6941
  var React89 = __toESM(require("react"));
6841
6942
  var import_ui72 = require("@elementor/ui");
@@ -6892,7 +6993,7 @@ var IconLibraryPopover = ({
6892
6993
  handleChange: handleSearchChange,
6893
6994
  setImmediateValue: setSearchValue
6894
6995
  } = (0, import_utils6.useDebounceState)({ delay: ICON_LIBRARY_SEARCH_DEBOUNCE_DELAY });
6895
- const [activeLibraries, setActiveLibraries] = (0, import_react56.useState)([]);
6996
+ const [activeLibraries, setActiveLibraries] = (0, import_react57.useState)([]);
6896
6997
  const [storedView, setStoredView] = (0, import_session2.useSessionStorage)(
6897
6998
  ICON_LIBRARY_VIEW_STORAGE_KEY,
6898
6999
  ICON_LIBRARY_VIEW_STORAGE_PREFIX
@@ -6900,13 +7001,16 @@ var IconLibraryPopover = ({
6900
7001
  const view = isIconLibraryView(storedView) ? storedView : DEFAULT_ICON_LIBRARY_VIEW;
6901
7002
  const { data: fontAwesomeIcons = [], isLoading: isFontAwesomeLoading } = useFontAwesome7Catalog(open);
6902
7003
  const { data: providerIcons = [], isLoading: isProviderLoading } = useIconLibraryProviderIcons(open);
6903
- const isLoading = isFontAwesomeLoading || isProviderLoading;
6904
- const icons = (0, import_react56.useMemo)(() => [...fontAwesomeIcons, ...providerIcons], [providerIcons, fontAwesomeIcons]);
6905
- const items2 = (0, import_react56.useMemo)(
7004
+ const icons = (0, import_react57.useMemo)(
7005
+ () => mergeIconsById(fontAwesomeIcons, providerIcons),
7006
+ [providerIcons, fontAwesomeIcons]
7007
+ );
7008
+ const items2 = (0, import_react57.useMemo)(
6906
7009
  () => createIconLibraryItems(icons, searchValue, activeLibraries),
6907
7010
  [activeLibraries, icons, searchValue]
6908
7011
  );
6909
- const selectedValue = (0, import_react56.useMemo)(
7012
+ const isLoading = isFontAwesomeLoading || isProviderLoading && items2.length === 0;
7013
+ const selectedValue = (0, import_react57.useMemo)(
6910
7014
  () => findFontAwesome7Icon(icons, selectedIconClass, selectedIconLibrary)?.id,
6911
7015
  [icons, selectedIconClass, selectedIconLibrary]
6912
7016
  );
@@ -7027,7 +7131,7 @@ var IconLibraryContent = ({
7027
7131
  }
7028
7132
  );
7029
7133
  };
7030
- var IconLibraryLoadingState = () => /* @__PURE__ */ React90.createElement(import_ui73.Stack, { alignItems: "center", justifyContent: "center", height: "100%" }, /* @__PURE__ */ React90.createElement(import_ui73.CircularProgress, { role: "progressbar", size: 24 }));
7134
+ var IconLibraryLoadingState = () => /* @__PURE__ */ React90.createElement(import_ui73.Stack, { alignItems: "center", justifyContent: "center", height: "100%" }, /* @__PURE__ */ React90.createElement(import_ui73.CircularProgress, { role: "progressbar", size: 24, "aria-label": (0, import_i18n38.__)("Loading icons", "elementor") }));
7031
7135
  var IconLibraryEmptyState = ({
7032
7136
  searchValue,
7033
7137
  isCatalogAvailable,
@@ -7056,7 +7160,14 @@ var IconLibraryRow = (item) => {
7056
7160
  flexShrink: 0
7057
7161
  }
7058
7162
  },
7059
- /* @__PURE__ */ React90.createElement(FontAwesomeGlyph, { icon, size: ICON_GLYPH_SIZE2, color: "currentColor" })
7163
+ /* @__PURE__ */ React90.createElement(
7164
+ FontAwesomeGlyph,
7165
+ {
7166
+ icon: { ...icon, value: icon.iconValue },
7167
+ size: ICON_GLYPH_SIZE2,
7168
+ color: "currentColor"
7169
+ }
7170
+ )
7060
7171
  ), /* @__PURE__ */ React90.createElement(import_ui73.Typography, { variant: "caption", color: "text.primary", noWrap: true }, icon.label));
7061
7172
  };
7062
7173
  var CatalogUnavailable = () => /* @__PURE__ */ React90.createElement(import_ui73.Stack, { alignItems: "center", justifyContent: "center", height: "100%", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React90.createElement(SvgElementIcon, { fontSize: "large" }), /* @__PURE__ */ React90.createElement(import_ui73.Typography, { align: "center", variant: "subtitle2", color: "text.secondary" }, (0, import_i18n38.__)("Icons couldn't be loaded.", "elementor")));
@@ -7064,7 +7175,8 @@ var NoResults = ({ searchValue, onClear }) => /* @__PURE__ */ React90.createElem
7064
7175
  var createIconLibraryItems = (icons, searchValue, libraries) => filterFontAwesome7Icons(icons, searchValue, libraries).map((icon) => ({
7065
7176
  ...icon,
7066
7177
  type: "item",
7067
- value: icon.id
7178
+ value: icon.id,
7179
+ iconValue: icon.value
7068
7180
  }));
7069
7181
 
7070
7182
  // src/controls/open-icon-library.ts
@@ -7141,6 +7253,7 @@ var UploadControl = ({ isAdmin, onUpload }) => {
7141
7253
 
7142
7254
  // src/controls/svg-media-preview.tsx
7143
7255
  var React92 = __toESM(require("react"));
7256
+ var import_react58 = require("react");
7144
7257
  var import_ui75 = require("@elementor/ui");
7145
7258
  var import_i18n40 = require("@wordpress/i18n");
7146
7259
  var ICON_PREVIEW_SIZE = 50;
@@ -7148,21 +7261,30 @@ var ICON_PREVIEW_COLOR = "#000000";
7148
7261
  var SvgMediaPreview = ({ isFetching, src, iconClassName, iconLibrary }) => {
7149
7262
  const shouldLoadIconCatalog = Boolean(iconClassName && iconLibrary);
7150
7263
  const { data: fontAwesomeIcons = [], isLoading: isFontAwesomeLoading } = useFontAwesome7Catalog(shouldLoadIconCatalog);
7151
- const { data: providerIcons = [], isLoading: isProviderLoading } = useIconLibraryProviderIcons(shouldLoadIconCatalog);
7152
- const icons = [...fontAwesomeIcons, ...providerIcons];
7264
+ const isFontAwesomeLibrary = Boolean(iconLibrary?.startsWith("fa-"));
7265
+ const { data: providerIcons = [], isLoading: isProviderLoading } = useIconLibraryProviderIcons(
7266
+ shouldLoadIconCatalog && !isFontAwesomeLibrary
7267
+ );
7268
+ const icons = (0, import_react58.useMemo)(
7269
+ () => mergeIconsById(fontAwesomeIcons, providerIcons),
7270
+ [fontAwesomeIcons, providerIcons]
7271
+ );
7153
7272
  const selectedIcon = findFontAwesome7Icon(icons, iconClassName, iconLibrary);
7154
- const isLoadingCatalog = shouldLoadIconCatalog && (isFontAwesomeLoading || isProviderLoading);
7273
+ const isLoadingCatalog = shouldLoadIconCatalog && (isFontAwesomeLoading || !isFontAwesomeLibrary && isProviderLoading);
7155
7274
  const { data: savedIconSvg, isLoading: isSavedIconLoading } = useProviderIconSvg(
7156
7275
  iconLibrary,
7157
7276
  iconClassName,
7158
- shouldLoadIconCatalog && !isLoadingCatalog && !selectedIcon
7277
+ shouldLoadIconCatalog && !isLoadingCatalog && !selectedIcon && !isFontAwesomeLibrary
7159
7278
  );
7160
7279
  if (isFetching || isLoadingCatalog || isSavedIconLoading) {
7161
- return /* @__PURE__ */ React92.createElement(import_ui75.CircularProgress, { role: "progressbar" });
7280
+ return /* @__PURE__ */ React92.createElement(import_ui75.CircularProgress, { role: "progressbar", "aria-label": (0, import_i18n40.__)("Loading icon", "elementor") });
7162
7281
  }
7163
7282
  if (selectedIcon) {
7164
7283
  return /* @__PURE__ */ React92.createElement(IconPreview, { icon: selectedIcon });
7165
7284
  }
7285
+ if (shouldLoadIconCatalog && iconClassName && iconLibrary && isFontAwesomeLibrary) {
7286
+ return /* @__PURE__ */ React92.createElement(IconPreview, { icon: createLazyIcon(iconLibrary, iconClassName) });
7287
+ }
7166
7288
  if (savedIconSvg) {
7167
7289
  return /* @__PURE__ */ React92.createElement(IconPreview, { icon: toSvgMarkupIcon(savedIconSvg, iconLibrary, iconClassName) });
7168
7290
  }
@@ -7171,6 +7293,18 @@ var SvgMediaPreview = ({ isFetching, src, iconClassName, iconLibrary }) => {
7171
7293
  }
7172
7294
  return /* @__PURE__ */ React92.createElement(SvgPreview, { src });
7173
7295
  };
7296
+ var createLazyIcon = (library, value) => ({
7297
+ id: `${library}:${value}`,
7298
+ name: value,
7299
+ label: value,
7300
+ library,
7301
+ value,
7302
+ aliases: [],
7303
+ width: ICON_PREVIEW_SIZE,
7304
+ height: ICON_PREVIEW_SIZE,
7305
+ paths: [],
7306
+ lazySvg: true
7307
+ });
7174
7308
  var toSvgMarkupIcon = (svgMarkup, library, value) => ({
7175
7309
  id: `${library}:${value}`,
7176
7310
  label: value ?? "",
@@ -7183,7 +7317,7 @@ var toSvgMarkupIcon = (svgMarkup, library, value) => ({
7183
7317
  paths: [],
7184
7318
  svgMarkup
7185
7319
  });
7186
- var IconPreview = ({ icon }) => /* @__PURE__ */ React92.createElement(import_ui75.Box, { sx: { color: ICON_PREVIEW_COLOR } }, /* @__PURE__ */ React92.createElement(
7320
+ var IconPreview = ({ icon }) => /* @__PURE__ */ React92.createElement(import_ui75.Box, { sx: { color: ICON_PREVIEW_COLOR, minWidth: ICON_PREVIEW_SIZE, minHeight: ICON_PREVIEW_SIZE } }, /* @__PURE__ */ React92.createElement(
7187
7321
  FontAwesomeGlyph,
7188
7322
  {
7189
7323
  icon,
@@ -7252,11 +7386,11 @@ var SvgMediaControl = createControl(({ showIconLibrary = false, label }) => {
7252
7386
  const { data: attachment, isFetching } = (0, import_wp_media2.useWpMediaAttachment)(previewSvgValue?.id?.value || null);
7253
7387
  const src = attachment?.url ?? previewSvgValue?.url?.value ?? null;
7254
7388
  const { data: allowSvgUpload } = useUnfilteredFilesUpload();
7255
- const [unfilteredModalOpenState, setUnfilteredModalOpenState] = (0, import_react57.useState)(false);
7389
+ const [unfilteredModalOpenState, setUnfilteredModalOpenState] = (0, import_react59.useState)(false);
7256
7390
  const iconLibraryPopoverState = (0, import_ui76.usePopupState)({ variant: "popover" });
7257
- const controlContainerRef = (0, import_react57.useRef)(null);
7258
- const buttonGroupRef = (0, import_react57.useRef)(null);
7259
- const [iconLibraryAnchor, setIconLibraryAnchor] = (0, import_react57.useState)(null);
7391
+ const controlContainerRef = (0, import_react59.useRef)(null);
7392
+ const buttonGroupRef = (0, import_react59.useRef)(null);
7393
+ const [iconLibraryAnchor, setIconLibraryAnchor] = (0, import_react59.useState)(null);
7260
7394
  const { isAdmin } = (0, import_editor_current_user.useCurrentUserCapabilities)();
7261
7395
  const selectedIconClass = showIconLibrary && typeof previewIconValue?.value?.value === "string" ? previewIconValue.value.value : null;
7262
7396
  const selectedIconLibrary = showIconLibrary && typeof previewIconValue?.library?.value === "string" ? previewIconValue.library.value : null;
@@ -7308,7 +7442,7 @@ var SvgMediaControl = createControl(({ showIconLibrary = false, label }) => {
7308
7442
  setIconLibraryAnchor(anchor);
7309
7443
  iconLibraryPopoverState.open(event);
7310
7444
  };
7311
- (0, import_react57.useEffect)(() => {
7445
+ (0, import_react59.useEffect)(() => {
7312
7446
  if (!iconLibraryPopoverState.isOpen) {
7313
7447
  return;
7314
7448
  }
@@ -7590,7 +7724,7 @@ var BackgroundImageOverlayAttachment = () => {
7590
7724
 
7591
7725
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
7592
7726
  var React97 = __toESM(require("react"));
7593
- var import_react58 = require("react");
7727
+ var import_react60 = require("react");
7594
7728
  var import_editor_props38 = require("@elementor/editor-props");
7595
7729
  var import_editor_ui14 = require("@elementor/editor-ui");
7596
7730
  var import_icons29 = require("@elementor/icons");
@@ -7612,7 +7746,7 @@ var BackgroundImageOverlayPosition = () => {
7612
7746
  const backgroundImageOffsetContext = useBoundProp(import_editor_props38.backgroundImagePositionOffsetPropTypeUtil);
7613
7747
  const stringPropContext = useBoundProp(import_editor_props38.stringPropTypeUtil);
7614
7748
  const isCustom = !!backgroundImageOffsetContext.value;
7615
- const rowRef = (0, import_react58.useRef)(null);
7749
+ const rowRef = (0, import_react60.useRef)(null);
7616
7750
  const handlePositionChange = (event) => {
7617
7751
  const value = event.target.value || null;
7618
7752
  if (value === "custom") {
@@ -7685,7 +7819,7 @@ var BackgroundImageOverlayRepeat = () => {
7685
7819
 
7686
7820
  // src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
7687
7821
  var React99 = __toESM(require("react"));
7688
- var import_react59 = require("react");
7822
+ var import_react61 = require("react");
7689
7823
  var import_editor_props39 = require("@elementor/editor-props");
7690
7824
  var import_icons31 = require("@elementor/icons");
7691
7825
  var import_ui82 = require("@elementor/ui");
@@ -7720,7 +7854,7 @@ var BackgroundImageOverlaySize = () => {
7720
7854
  const backgroundImageScaleContext = useBoundProp(import_editor_props39.backgroundImageSizeScalePropTypeUtil);
7721
7855
  const stringPropContext = useBoundProp(import_editor_props39.stringPropTypeUtil);
7722
7856
  const isCustom = !!backgroundImageScaleContext.value;
7723
- const rowRef = (0, import_react59.useRef)(null);
7857
+ const rowRef = (0, import_react61.useRef)(null);
7724
7858
  const handleSizeChange = (size) => {
7725
7859
  if (size === "custom") {
7726
7860
  backgroundImageScaleContext.setValue({ width: null, height: null });
@@ -7755,7 +7889,7 @@ var BackgroundImageOverlaySize = () => {
7755
7889
  };
7756
7890
 
7757
7891
  // src/controls/background-control/background-overlay/use-background-tabs-history.ts
7758
- var import_react60 = require("react");
7892
+ var import_react62 = require("react");
7759
7893
  var import_editor_props40 = require("@elementor/editor-props");
7760
7894
  var import_ui83 = require("@elementor/ui");
7761
7895
  var useBackgroundTabsHistory = ({
@@ -7776,7 +7910,7 @@ var useBackgroundTabsHistory = ({
7776
7910
  return "image";
7777
7911
  };
7778
7912
  const { getTabsProps, getTabProps, getTabPanelProps } = (0, import_ui83.useTabs)(getCurrentOverlayType());
7779
- const valuesHistory = (0, import_react60.useRef)({
7913
+ const valuesHistory = (0, import_react62.useRef)({
7780
7914
  image: initialBackgroundImageOverlay,
7781
7915
  color: initialBackgroundColorOverlay2,
7782
7916
  gradient: initialBackgroundGradientOverlay2
@@ -8027,7 +8161,7 @@ var BackgroundClipField = () => {
8027
8161
 
8028
8162
  // src/controls/repeatable-control.tsx
8029
8163
  var React102 = __toESM(require("react"));
8030
- var import_react61 = require("react");
8164
+ var import_react63 = require("react");
8031
8165
  var import_editor_props43 = require("@elementor/editor-props");
8032
8166
  var import_ui86 = require("@elementor/ui");
8033
8167
  var PLACEHOLDER_REGEX = /\$\{([^}]+)\}/g;
@@ -8048,11 +8182,11 @@ var RepeatableControl = createControl(
8048
8182
  if (!childPropTypeUtil) {
8049
8183
  return null;
8050
8184
  }
8051
- const childArrayPropTypeUtil2 = (0, import_react61.useMemo)(
8185
+ const childArrayPropTypeUtil2 = (0, import_react63.useMemo)(
8052
8186
  () => (0, import_editor_props43.createArrayPropUtils)(childPropTypeUtil.key, childPropTypeUtil.schema, propKey),
8053
8187
  [childPropTypeUtil.key, childPropTypeUtil.schema, propKey]
8054
8188
  );
8055
- const contextValue = (0, import_react61.useMemo)(
8189
+ const contextValue = (0, import_react63.useMemo)(
8056
8190
  () => ({
8057
8191
  ...childControlConfig,
8058
8192
  placeholder: placeholder || "",
@@ -8184,7 +8318,7 @@ var getAllProperties = (pattern) => {
8184
8318
 
8185
8319
  // src/controls/key-value-control.tsx
8186
8320
  var React103 = __toESM(require("react"));
8187
- var import_react62 = require("react");
8321
+ var import_react64 = require("react");
8188
8322
  var import_editor_props44 = require("@elementor/editor-props");
8189
8323
  var import_ui87 = require("@elementor/ui");
8190
8324
  var import_i18n49 = require("@wordpress/i18n");
@@ -8211,9 +8345,9 @@ var getInitialFieldValue = (fieldValue) => {
8211
8345
  };
8212
8346
  var KeyValueControl = createControl((props = {}) => {
8213
8347
  const { value, setValue, ...propContext } = useBoundProp(import_editor_props44.keyValuePropTypeUtil);
8214
- const [keyError, setKeyError] = (0, import_react62.useState)("");
8215
- const [valueError, setValueError] = (0, import_react62.useState)("");
8216
- const [sessionState, setSessionState] = (0, import_react62.useState)({
8348
+ const [keyError, setKeyError] = (0, import_react64.useState)("");
8349
+ const [valueError, setValueError] = (0, import_react64.useState)("");
8350
+ const [sessionState, setSessionState] = (0, import_react64.useState)({
8217
8351
  key: getInitialFieldValue(value?.key),
8218
8352
  value: getInitialFieldValue(value?.value)
8219
8353
  });
@@ -8223,7 +8357,7 @@ var KeyValueControl = createControl((props = {}) => {
8223
8357
  keyHelper: void 0,
8224
8358
  valueHelper: void 0
8225
8359
  };
8226
- const [keyRegex, valueRegex, errMsg] = (0, import_react62.useMemo)(
8360
+ const [keyRegex, valueRegex, errMsg] = (0, import_react64.useMemo)(
8227
8361
  () => [
8228
8362
  props.regexKey ? new RegExp(props.regexKey) : void 0,
8229
8363
  props.regexValue ? new RegExp(props.regexValue) : void 0,
@@ -8355,7 +8489,7 @@ var PositionControl = () => {
8355
8489
 
8356
8490
  // src/controls/transform-control/transform-repeater-control.tsx
8357
8491
  var React117 = __toESM(require("react"));
8358
- var import_react70 = require("react");
8492
+ var import_react72 = require("react");
8359
8493
  var import_editor_props54 = require("@elementor/editor-props");
8360
8494
  var import_icons39 = require("@elementor/icons");
8361
8495
  var import_ui101 = require("@elementor/ui");
@@ -8414,7 +8548,7 @@ var import_i18n55 = require("@wordpress/i18n");
8414
8548
 
8415
8549
  // src/controls/transform-control/functions/move.tsx
8416
8550
  var React106 = __toESM(require("react"));
8417
- var import_react63 = require("react");
8551
+ var import_react65 = require("react");
8418
8552
  var import_editor_props47 = require("@elementor/editor-props");
8419
8553
  var import_icons33 = require("@elementor/icons");
8420
8554
  var import_ui90 = require("@elementor/ui");
@@ -8461,7 +8595,7 @@ var moveAxisControls = [
8461
8595
  ];
8462
8596
  var Move = () => {
8463
8597
  const context = useBoundProp(import_editor_props47.moveTransformPropTypeUtil);
8464
- const rowRefs = [(0, import_react63.useRef)(null), (0, import_react63.useRef)(null), (0, import_react63.useRef)(null)];
8598
+ const rowRefs = [(0, import_react65.useRef)(null), (0, import_react65.useRef)(null), (0, import_react65.useRef)(null)];
8465
8599
  return /* @__PURE__ */ React106.createElement(import_ui90.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React106.createElement(PropProvider, { ...context }, /* @__PURE__ */ React106.createElement(PropKeyProvider, { bind: TransformFunctionKeys.move }, moveAxisControls.map((control, index) => /* @__PURE__ */ React106.createElement(
8466
8600
  AxisRow,
8467
8601
  {
@@ -8476,7 +8610,7 @@ var Move = () => {
8476
8610
 
8477
8611
  // src/controls/transform-control/functions/rotate.tsx
8478
8612
  var React107 = __toESM(require("react"));
8479
- var import_react64 = require("react");
8613
+ var import_react66 = require("react");
8480
8614
  var import_editor_props48 = require("@elementor/editor-props");
8481
8615
  var import_icons34 = require("@elementor/icons");
8482
8616
  var import_ui91 = require("@elementor/ui");
@@ -8501,7 +8635,7 @@ var rotateAxisControls = [
8501
8635
  var rotateUnits = ["deg", "rad", "grad", "turn"];
8502
8636
  var Rotate = () => {
8503
8637
  const context = useBoundProp(import_editor_props48.rotateTransformPropTypeUtil);
8504
- const rowRefs = [(0, import_react64.useRef)(null), (0, import_react64.useRef)(null), (0, import_react64.useRef)(null)];
8638
+ const rowRefs = [(0, import_react66.useRef)(null), (0, import_react66.useRef)(null), (0, import_react66.useRef)(null)];
8505
8639
  return /* @__PURE__ */ React107.createElement(import_ui91.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React107.createElement(PropProvider, { ...context }, /* @__PURE__ */ React107.createElement(PropKeyProvider, { bind: TransformFunctionKeys.rotate }, rotateAxisControls.map((control, index) => /* @__PURE__ */ React107.createElement(
8506
8640
  AxisRow,
8507
8641
  {
@@ -8515,7 +8649,7 @@ var Rotate = () => {
8515
8649
 
8516
8650
  // src/controls/transform-control/functions/scale.tsx
8517
8651
  var React109 = __toESM(require("react"));
8518
- var import_react65 = require("react");
8652
+ var import_react67 = require("react");
8519
8653
  var import_editor_props49 = require("@elementor/editor-props");
8520
8654
  var import_icons35 = require("@elementor/icons");
8521
8655
  var import_ui93 = require("@elementor/ui");
@@ -8548,13 +8682,13 @@ var scaleAxisControls = [
8548
8682
  ];
8549
8683
  var Scale = () => {
8550
8684
  const context = useBoundProp(import_editor_props49.scaleTransformPropTypeUtil);
8551
- const rowRefs = [(0, import_react65.useRef)(null), (0, import_react65.useRef)(null), (0, import_react65.useRef)(null)];
8685
+ const rowRefs = [(0, import_react67.useRef)(null), (0, import_react67.useRef)(null), (0, import_react67.useRef)(null)];
8552
8686
  return /* @__PURE__ */ React109.createElement(import_ui93.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React109.createElement(PropProvider, { ...context }, /* @__PURE__ */ React109.createElement(PropKeyProvider, { bind: TransformFunctionKeys.scale }, scaleAxisControls.map((control, index) => /* @__PURE__ */ React109.createElement(ScaleAxisRow, { key: control.bind, ...control, anchorRef: rowRefs[index] })))));
8553
8687
  };
8554
8688
 
8555
8689
  // src/controls/transform-control/functions/skew.tsx
8556
8690
  var React110 = __toESM(require("react"));
8557
- var import_react66 = require("react");
8691
+ var import_react68 = require("react");
8558
8692
  var import_editor_props50 = require("@elementor/editor-props");
8559
8693
  var import_icons36 = require("@elementor/icons");
8560
8694
  var import_ui94 = require("@elementor/ui");
@@ -8574,7 +8708,7 @@ var skewAxisControls = [
8574
8708
  var skewUnits = ["deg", "rad", "grad", "turn"];
8575
8709
  var Skew = () => {
8576
8710
  const context = useBoundProp(import_editor_props50.skewTransformPropTypeUtil);
8577
- const rowRefs = [(0, import_react66.useRef)(null), (0, import_react66.useRef)(null), (0, import_react66.useRef)(null)];
8711
+ const rowRefs = [(0, import_react68.useRef)(null), (0, import_react68.useRef)(null), (0, import_react68.useRef)(null)];
8578
8712
  return /* @__PURE__ */ React110.createElement(import_ui94.Grid, { container: true, spacing: 1.5 }, /* @__PURE__ */ React110.createElement(PropProvider, { ...context }, /* @__PURE__ */ React110.createElement(PropKeyProvider, { bind: TransformFunctionKeys.skew }, skewAxisControls.map((control, index) => /* @__PURE__ */ React110.createElement(
8579
8713
  AxisRow,
8580
8714
  {
@@ -8587,7 +8721,7 @@ var Skew = () => {
8587
8721
  };
8588
8722
 
8589
8723
  // src/controls/transform-control/use-transform-tabs-history.tsx
8590
- var import_react67 = require("react");
8724
+ var import_react69 = require("react");
8591
8725
  var import_editor_props51 = require("@elementor/editor-props");
8592
8726
  var import_ui95 = require("@elementor/ui");
8593
8727
  var useTransformTabsHistory = ({
@@ -8614,7 +8748,7 @@ var useTransformTabsHistory = ({
8614
8748
  }
8615
8749
  };
8616
8750
  const { getTabsProps, getTabProps, getTabPanelProps } = (0, import_ui95.useTabs)(getCurrentTransformType());
8617
- const valuesHistory = (0, import_react67.useRef)({
8751
+ const valuesHistory = (0, import_react69.useRef)({
8618
8752
  move: initialMove,
8619
8753
  scale: initialScale,
8620
8754
  rotate: initialRotate,
@@ -8758,7 +8892,7 @@ var import_i18n59 = require("@wordpress/i18n");
8758
8892
 
8759
8893
  // src/controls/transform-control/transform-base-controls/children-perspective-control.tsx
8760
8894
  var React114 = __toESM(require("react"));
8761
- var import_react68 = require("react");
8895
+ var import_react70 = require("react");
8762
8896
  var import_editor_props52 = require("@elementor/editor-props");
8763
8897
  var import_ui98 = require("@elementor/ui");
8764
8898
  var import_i18n57 = require("@wordpress/i18n");
@@ -8790,13 +8924,13 @@ var PerspectiveOriginControlProvider = () => {
8790
8924
  return /* @__PURE__ */ React114.createElement(PropProvider, { ...context }, CHILDREN_PERSPECTIVE_FIELDS.map((control) => /* @__PURE__ */ React114.createElement(PropKeyProvider, { bind: control.bind, key: control.bind }, /* @__PURE__ */ React114.createElement(ControlFields, { control }))));
8791
8925
  };
8792
8926
  var ControlFields = ({ control }) => {
8793
- const rowRef = (0, import_react68.useRef)(null);
8927
+ const rowRef = (0, import_react70.useRef)(null);
8794
8928
  return /* @__PURE__ */ React114.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React114.createElement(import_ui98.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React114.createElement(ControlFormLabel, null, control.label)), /* @__PURE__ */ React114.createElement(import_ui98.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React114.createElement(SizeControl, { variant: "length", units: control.units, anchorRef: rowRef, disableCustom: true })));
8795
8929
  };
8796
8930
 
8797
8931
  // src/controls/transform-control/transform-base-controls/transform-origin-control.tsx
8798
8932
  var React115 = __toESM(require("react"));
8799
- var import_react69 = require("react");
8933
+ var import_react71 = require("react");
8800
8934
  var import_editor_props53 = require("@elementor/editor-props");
8801
8935
  var import_ui99 = require("@elementor/ui");
8802
8936
  var import_i18n58 = require("@wordpress/i18n");
@@ -8824,7 +8958,7 @@ var TransformOriginControl = () => {
8824
8958
  };
8825
8959
  var ControlFields2 = ({ control }) => {
8826
8960
  const context = useBoundProp(import_editor_props53.transformOriginPropTypeUtil);
8827
- const rowRef = (0, import_react69.useRef)(null);
8961
+ const rowRef = (0, import_react71.useRef)(null);
8828
8962
  return /* @__PURE__ */ React115.createElement(PropProvider, { ...context }, /* @__PURE__ */ React115.createElement(PropKeyProvider, { bind: control.bind }, /* @__PURE__ */ React115.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React115.createElement(import_ui99.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React115.createElement(ControlFormLabel, null, control.label)), /* @__PURE__ */ React115.createElement(import_ui99.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React115.createElement(SizeControl, { variant: "length", units: control.units, anchorRef: rowRef })))));
8829
8963
  };
8830
8964
 
@@ -8872,7 +9006,7 @@ var SIZE11 = "tiny";
8872
9006
  var TransformRepeaterControl = createControl(
8873
9007
  ({ showChildrenPerspective }) => {
8874
9008
  const context = useBoundProp(import_editor_props54.transformPropTypeUtil);
8875
- const headerRef = (0, import_react70.useRef)(null);
9009
+ const headerRef = (0, import_react72.useRef)(null);
8876
9010
  const popupState = (0, import_ui101.usePopupState)({ variant: "popover" });
8877
9011
  return /* @__PURE__ */ React117.createElement(PropProvider, { ...context }, /* @__PURE__ */ React117.createElement(
8878
9012
  TransformSettingsControl,
@@ -8952,7 +9086,7 @@ var TransformBasePopoverTrigger = ({
8952
9086
 
8953
9087
  // src/controls/transition-control/transition-repeater-control.tsx
8954
9088
  var React120 = __toESM(require("react"));
8955
- var import_react73 = require("react");
9089
+ var import_react75 = require("react");
8956
9090
  var import_editor_props57 = require("@elementor/editor-props");
8957
9091
  var import_icons41 = require("@elementor/icons");
8958
9092
  var import_ui104 = require("@elementor/ui");
@@ -8961,15 +9095,15 @@ var import_i18n63 = require("@wordpress/i18n");
8961
9095
 
8962
9096
  // src/controls/selection-size-control.tsx
8963
9097
  var React118 = __toESM(require("react"));
8964
- var import_react71 = require("react");
9098
+ var import_react73 = require("react");
8965
9099
  var import_editor_props55 = require("@elementor/editor-props");
8966
9100
  var import_ui102 = require("@elementor/ui");
8967
9101
  var SelectionSizeControl = createControl(
8968
9102
  ({ selectionLabel, sizeLabel, selectionConfig, sizeConfigMap }) => {
8969
9103
  const { value, setValue, propType } = useBoundProp(import_editor_props55.selectionSizePropTypeUtil);
8970
- const rowRef = (0, import_react71.useRef)(null);
9104
+ const rowRef = (0, import_react73.useRef)(null);
8971
9105
  const sizeFieldId = sizeLabel.replace(/\s+/g, "-").toLowerCase();
8972
- const currentSizeConfig = (0, import_react71.useMemo)(() => {
9106
+ const currentSizeConfig = (0, import_react73.useMemo)(() => {
8973
9107
  switch (value.selection.$$type) {
8974
9108
  case "key-value":
8975
9109
  return sizeConfigMap[value?.selection?.value.value.value || ""];
@@ -9182,7 +9316,7 @@ function subscribeToTransitionEvent() {
9182
9316
 
9183
9317
  // src/controls/transition-control/transition-selector.tsx
9184
9318
  var React119 = __toESM(require("react"));
9185
- var import_react72 = require("react");
9319
+ var import_react74 = require("react");
9186
9320
  var import_editor_props56 = require("@elementor/editor-props");
9187
9321
  var import_editor_ui17 = require("@elementor/editor-ui");
9188
9322
  var import_icons40 = require("@elementor/icons");
@@ -9228,9 +9362,9 @@ var TransitionSelector = ({
9228
9362
  const {
9229
9363
  key: { value: transitionLabel }
9230
9364
  } = value;
9231
- const defaultRef = (0, import_react72.useRef)(null);
9365
+ const defaultRef = (0, import_react74.useRef)(null);
9232
9366
  const popoverState = (0, import_ui103.usePopupState)({ variant: "popover" });
9233
- const disabledCategories = (0, import_react72.useMemo)(() => {
9367
+ const disabledCategories = (0, import_react74.useMemo)(() => {
9234
9368
  return new Set(
9235
9369
  transitionProperties.filter((cat) => cat.properties.some((prop) => prop.isDisabled)).map((cat) => cat.label)
9236
9370
  );
@@ -9456,14 +9590,14 @@ var TransitionRepeaterControl = createControl(
9456
9590
  currentStyleState
9457
9591
  }) => {
9458
9592
  const currentStyleIsNormal = currentStyleState === null;
9459
- const [recentlyUsedList, setRecentlyUsedList] = (0, import_react73.useState)([]);
9593
+ const [recentlyUsedList, setRecentlyUsedList] = (0, import_react75.useState)([]);
9460
9594
  const proInstalled = (0, import_utils8.hasProInstalled)();
9461
9595
  const { value, setValue } = useBoundProp(childArrayPropTypeUtil);
9462
- const { allDisabled: disabledItems, proDisabled: proDisabledItems } = (0, import_react73.useMemo)(
9596
+ const { allDisabled: disabledItems, proDisabled: proDisabledItems } = (0, import_react75.useMemo)(
9463
9597
  () => getDisabledItemLabels(value),
9464
9598
  [value]
9465
9599
  );
9466
- const allowedTransitionSet = (0, import_react73.useMemo)(() => {
9600
+ const allowedTransitionSet = (0, import_react75.useMemo)(() => {
9467
9601
  const set = /* @__PURE__ */ new Set();
9468
9602
  transitionProperties.forEach((category) => {
9469
9603
  category.properties.forEach((prop) => {
@@ -9474,7 +9608,7 @@ var TransitionRepeaterControl = createControl(
9474
9608
  });
9475
9609
  return set;
9476
9610
  }, [proInstalled]);
9477
- (0, import_react73.useEffect)(() => {
9611
+ (0, import_react75.useEffect)(() => {
9478
9612
  if (!value || value.length === 0) {
9479
9613
  return;
9480
9614
  }
@@ -9486,10 +9620,10 @@ var TransitionRepeaterControl = createControl(
9486
9620
  setValue(sanitized);
9487
9621
  }
9488
9622
  }, [allowedTransitionSet]);
9489
- (0, import_react73.useEffect)(() => {
9623
+ (0, import_react75.useEffect)(() => {
9490
9624
  recentlyUsedListGetter().then(setRecentlyUsedList);
9491
9625
  }, [recentlyUsedListGetter]);
9492
- const allPropertiesUsed = (0, import_react73.useMemo)(() => areAllPropertiesUsed(value), [value]);
9626
+ const allPropertiesUsed = (0, import_react75.useMemo)(() => areAllPropertiesUsed(value), [value]);
9493
9627
  const isAddItemDisabled = !currentStyleIsNormal || allPropertiesUsed;
9494
9628
  return /* @__PURE__ */ React120.createElement(
9495
9629
  RepeatableControl,
@@ -9772,13 +9906,13 @@ var BoundTimeStringControl = ({ bind, ariaLabel }) => {
9772
9906
 
9773
9907
  // src/controls/inline-editing-control.tsx
9774
9908
  var React129 = __toESM(require("react"));
9775
- var import_react79 = require("react");
9909
+ var import_react81 = require("react");
9776
9910
  var import_editor_props65 = require("@elementor/editor-props");
9777
9911
  var import_ui113 = require("@elementor/ui");
9778
9912
 
9779
9913
  // src/components/inline-editor.tsx
9780
9914
  var React126 = __toESM(require("react"));
9781
- var import_react74 = require("react");
9915
+ var import_react76 = require("react");
9782
9916
  var import_ui110 = require("@elementor/ui");
9783
9917
  var import_extension_bold = __toESM(require("@tiptap/extension-bold"));
9784
9918
  var import_extension_document = __toESM(require("@tiptap/extension-document"));
@@ -9792,7 +9926,7 @@ var import_extension_subscript = __toESM(require("@tiptap/extension-subscript"))
9792
9926
  var import_extension_superscript = __toESM(require("@tiptap/extension-superscript"));
9793
9927
  var import_extension_text = __toESM(require("@tiptap/extension-text"));
9794
9928
  var import_extension_underline = __toESM(require("@tiptap/extension-underline"));
9795
- var import_react75 = require("@tiptap/react");
9929
+ var import_react77 = require("@tiptap/react");
9796
9930
 
9797
9931
  // src/utils/inline-editing.ts
9798
9932
  var import_editor_props64 = require("@elementor/editor-props");
@@ -9841,8 +9975,8 @@ var InlineEditor = React126.forwardRef((props, ref) => {
9841
9975
  onSelectionEnd,
9842
9976
  mountElement = null
9843
9977
  } = props;
9844
- const containerRef = (0, import_react74.useRef)(null);
9845
- const onBlurRef = (0, import_react74.useRef)(onBlur);
9978
+ const containerRef = (0, import_react76.useRef)(null);
9979
+ const onBlurRef = (0, import_react76.useRef)(onBlur);
9846
9980
  onBlurRef.current = onBlur;
9847
9981
  const documentContentSettings = !!expectedTag ? "block+" : "inline*";
9848
9982
  const onUpdate = ({ editor: updatedEditor }) => {
@@ -9864,7 +9998,7 @@ var InlineEditor = React126.forwardRef((props, ref) => {
9864
9998
  ...HTMLAttributes,
9865
9999
  class: elementClasses
9866
10000
  });
9867
- const editor = (0, import_react75.useEditor)({
10001
+ const editor = (0, import_react77.useEditor)({
9868
10002
  ...mountElement ? { element: mountElement } : {},
9869
10003
  extensions: [
9870
10004
  import_extension_document.default.extend({
@@ -9937,11 +10071,11 @@ var InlineEditor = React126.forwardRef((props, ref) => {
9937
10071
  if (mountElement) {
9938
10072
  return null;
9939
10073
  }
9940
- return /* @__PURE__ */ React126.createElement(import_ui110.Box, { ref: containerRef, sx, className: wrapperClassName }, /* @__PURE__ */ React126.createElement(import_react75.EditorContent, { ref, editor }));
10074
+ return /* @__PURE__ */ React126.createElement(import_ui110.Box, { ref: containerRef, sx, className: wrapperClassName }, /* @__PURE__ */ React126.createElement(import_react77.EditorContent, { ref, editor }));
9941
10075
  });
9942
10076
  var useOnUpdate = (callback, dependencies) => {
9943
- const hasMounted = (0, import_react74.useRef)(false);
9944
- (0, import_react74.useEffect)(() => {
10077
+ const hasMounted = (0, import_react76.useRef)(false);
10078
+ (0, import_react76.useEffect)(() => {
9945
10079
  if (hasMounted.current) {
9946
10080
  callback();
9947
10081
  } else {
@@ -9952,16 +10086,16 @@ var useOnUpdate = (callback, dependencies) => {
9952
10086
 
9953
10087
  // src/components/inline-editor-toolbar.tsx
9954
10088
  var React128 = __toESM(require("react"));
9955
- var import_react77 = require("react");
10089
+ var import_react79 = require("react");
9956
10090
  var import_editor_elements7 = require("@elementor/editor-elements");
9957
10091
  var import_icons43 = require("@elementor/icons");
9958
10092
  var import_ui112 = require("@elementor/ui");
9959
- var import_react78 = require("@tiptap/react");
10093
+ var import_react80 = require("@tiptap/react");
9960
10094
  var import_i18n67 = require("@wordpress/i18n");
9961
10095
 
9962
10096
  // src/components/url-popover.tsx
9963
10097
  var React127 = __toESM(require("react"));
9964
- var import_react76 = require("react");
10098
+ var import_react78 = require("react");
9965
10099
  var import_icons42 = require("@elementor/icons");
9966
10100
  var import_ui111 = require("@elementor/ui");
9967
10101
  var import_i18n66 = require("@wordpress/i18n");
@@ -9974,8 +10108,8 @@ var UrlPopover = ({
9974
10108
  openInNewTab,
9975
10109
  onToggleNewTab
9976
10110
  }) => {
9977
- const inputRef = (0, import_react76.useRef)(null);
9978
- (0, import_react76.useEffect)(() => {
10111
+ const inputRef = (0, import_react78.useRef)(null);
10112
+ (0, import_react78.useEffect)(() => {
9979
10113
  if (popupState.isOpen) {
9980
10114
  requestAnimationFrame(() => inputRef.current?.focus());
9981
10115
  }
@@ -10030,16 +10164,16 @@ var InlineEditorToolbar = ({
10030
10164
  sx = {},
10031
10165
  inControlPanel = false
10032
10166
  }) => {
10033
- const [urlValue, setUrlValue] = (0, import_react77.useState)("");
10034
- const [openInNewTab, setOpenInNewTab] = (0, import_react77.useState)(false);
10035
- const toolbarRef = (0, import_react77.useRef)(null);
10167
+ const [urlValue, setUrlValue] = (0, import_react79.useState)("");
10168
+ const [openInNewTab, setOpenInNewTab] = (0, import_react79.useState)(false);
10169
+ const toolbarRef = (0, import_react79.useRef)(null);
10036
10170
  const linkPopupState = (0, import_ui112.usePopupState)({ variant: "popover" });
10037
10171
  const isElementClickable = elementId ? checkIfElementIsClickable(elementId) : false;
10038
- const editorState = (0, import_react78.useEditorState)({
10172
+ const editorState = (0, import_react80.useEditorState)({
10039
10173
  editor,
10040
10174
  selector: (ctx) => possibleFormats.filter((format) => ctx.editor.isActive(format))
10041
10175
  });
10042
- const formatButtonsList = (0, import_react77.useMemo)(() => {
10176
+ const formatButtonsList = (0, import_react79.useMemo)(() => {
10043
10177
  const buttons = Object.values(formatButtons);
10044
10178
  if (isElementClickable) {
10045
10179
  return buttons.filter((button) => button.action !== "link");
@@ -10076,7 +10210,7 @@ var InlineEditorToolbar = ({
10076
10210
  }
10077
10211
  linkPopupState.close();
10078
10212
  };
10079
- (0, import_react77.useEffect)(() => {
10213
+ (0, import_react79.useEffect)(() => {
10080
10214
  if (!inControlPanel) {
10081
10215
  editor?.commands?.focus();
10082
10216
  }
@@ -10258,8 +10392,8 @@ var InlineEditingControl = createControl(
10258
10392
  const { setValue, placeholder, value } = useBoundProp(import_editor_props65.escapedHtmlPropTypeUtil);
10259
10393
  const { value: rawValue } = usePropKeyContext();
10260
10394
  const content = value ?? extractInlineHtmlContent(rawValue);
10261
- const [editor, setEditor] = (0, import_react79.useState)(null);
10262
- const handleChange = (0, import_react79.useCallback)(
10395
+ const [editor, setEditor] = (0, import_react81.useState)(null);
10396
+ const handleChange = (0, import_react81.useCallback)(
10263
10397
  (newValue) => {
10264
10398
  const html = newValue ?? "";
10265
10399
  setValue(html);
@@ -10446,7 +10580,7 @@ function useFormFieldSuggestions(options) {
10446
10580
 
10447
10581
  // src/controls/email-form-action-control/email-chips-field.tsx
10448
10582
  var React130 = __toESM(require("react"));
10449
- var import_react80 = require("react");
10583
+ var import_react82 = require("react");
10450
10584
  var import_editor_props67 = require("@elementor/editor-props");
10451
10585
  var import_ui114 = require("@elementor/ui");
10452
10586
 
@@ -10484,10 +10618,10 @@ function resolveMention(raw, suggestions) {
10484
10618
  }
10485
10619
  var EmailChipsControl = createControl(({ placeholder, suggestions = [] }) => {
10486
10620
  const { value, setValue, disabled } = useBoundProp(import_editor_props67.stringArrayPropTypeUtil);
10487
- const [inputValue, setInputValue] = (0, import_react80.useState)("");
10621
+ const [inputValue, setInputValue] = (0, import_react82.useState)("");
10488
10622
  const items2 = value || [];
10489
10623
  const selectedValues = items2.map((item) => import_editor_props67.stringPropTypeUtil.extract(item)).filter((val) => val !== null);
10490
- const suggestionOptions = (0, import_react80.useMemo)(
10624
+ const suggestionOptions = (0, import_react82.useMemo)(
10491
10625
  () => suggestions.map((suggestion) => `[${suggestion.value}]`),
10492
10626
  [suggestions]
10493
10627
  );
@@ -10715,24 +10849,24 @@ var GridSpanControl = createControl(
10715
10849
 
10716
10850
  // src/components/promotions/display-conditions-control.tsx
10717
10851
  var React137 = __toESM(require("react"));
10718
- var import_react82 = require("react");
10852
+ var import_react84 = require("react");
10719
10853
  var import_icons44 = require("@elementor/icons");
10720
10854
  var import_ui121 = require("@elementor/ui");
10721
10855
  var import_i18n71 = require("@wordpress/i18n");
10722
10856
 
10723
10857
  // src/components/promotions/promotion-trigger.tsx
10724
10858
  var React136 = __toESM(require("react"));
10725
- var import_react81 = require("react");
10859
+ var import_react83 = require("react");
10726
10860
  var import_editor_ui21 = require("@elementor/editor-ui");
10727
10861
  var import_ui120 = require("@elementor/ui");
10728
10862
  function getV4Promotion(key) {
10729
10863
  return window.elementor?.config?.v4Promotions?.[key];
10730
10864
  }
10731
- var PromotionTrigger = (0, import_react81.forwardRef)(
10865
+ var PromotionTrigger = (0, import_react83.forwardRef)(
10732
10866
  ({ promotionKey, children, trackingData }, ref) => {
10733
- const [isOpen, setIsOpen] = (0, import_react81.useState)(false);
10867
+ const [isOpen, setIsOpen] = (0, import_react83.useState)(false);
10734
10868
  const promotion = getV4Promotion(promotionKey);
10735
- const toggle = (0, import_react81.useCallback)(() => {
10869
+ const toggle = (0, import_react83.useCallback)(() => {
10736
10870
  setIsOpen((prev) => {
10737
10871
  if (!prev) {
10738
10872
  trackViewPromotion(trackingData);
@@ -10740,7 +10874,7 @@ var PromotionTrigger = (0, import_react81.forwardRef)(
10740
10874
  return !prev;
10741
10875
  });
10742
10876
  }, [trackingData]);
10743
- (0, import_react81.useImperativeHandle)(ref, () => ({ toggle }), [toggle]);
10877
+ (0, import_react83.useImperativeHandle)(ref, () => ({ toggle }), [toggle]);
10744
10878
  return /* @__PURE__ */ React136.createElement(React136.Fragment, null, promotion && /* @__PURE__ */ React136.createElement(
10745
10879
  import_editor_ui21.PromotionInfotip,
10746
10880
  {
@@ -10774,7 +10908,7 @@ var PromotionTrigger = (0, import_react81.forwardRef)(
10774
10908
  var ARIA_LABEL = (0, import_i18n71.__)("Display Conditions", "elementor");
10775
10909
  var TRACKING_DATA2 = { target_name: "display_conditions", location_l2: "general" };
10776
10910
  var DisplayConditionsControl = createControl(() => {
10777
- const triggerRef = (0, import_react82.useRef)(null);
10911
+ const triggerRef = (0, import_react84.useRef)(null);
10778
10912
  return /* @__PURE__ */ React137.createElement(
10779
10913
  import_ui121.Stack,
10780
10914
  {
@@ -10806,14 +10940,14 @@ var DisplayConditionsControl = createControl(() => {
10806
10940
 
10807
10941
  // src/components/promotions/attributes-control.tsx
10808
10942
  var React138 = __toESM(require("react"));
10809
- var import_react83 = require("react");
10943
+ var import_react85 = require("react");
10810
10944
  var import_icons45 = require("@elementor/icons");
10811
10945
  var import_ui122 = require("@elementor/ui");
10812
10946
  var import_i18n72 = require("@wordpress/i18n");
10813
10947
  var ARIA_LABEL2 = (0, import_i18n72.__)("Attributes", "elementor");
10814
10948
  var TRACKING_DATA3 = { target_name: "attributes", location_l2: "general" };
10815
10949
  var AttributesControl = createControl(() => {
10816
- const triggerRef = (0, import_react83.useRef)(null);
10950
+ const triggerRef = (0, import_react85.useRef)(null);
10817
10951
  return /* @__PURE__ */ React138.createElement(
10818
10952
  import_ui122.Stack,
10819
10953
  {
@@ -10850,7 +10984,7 @@ var ClearIconButton = ({ tooltipText, onClick, disabled, size = "tiny" }) => /*
10850
10984
 
10851
10985
  // src/components/repeater/repeater.tsx
10852
10986
  var React140 = __toESM(require("react"));
10853
- var import_react84 = require("react");
10987
+ var import_react86 = require("react");
10854
10988
  var import_icons47 = require("@elementor/icons");
10855
10989
  var import_ui124 = require("@elementor/ui");
10856
10990
  var import_i18n73 = require("@wordpress/i18n");
@@ -10872,7 +11006,7 @@ var Repeater3 = ({
10872
11006
  isSortable = true,
10873
11007
  adornment = ControlAdornments
10874
11008
  }) => {
10875
- const [openItem, setOpenItem] = (0, import_react84.useState)(initialOpenItem);
11009
+ const [openItem, setOpenItem] = (0, import_react86.useState)(initialOpenItem);
10876
11010
  const uniqueKeys = items2.map(
10877
11011
  (item, index) => isSortable && "getId" in itemSettings ? itemSettings.getId({ item, index }) : String(index)
10878
11012
  );
@@ -11048,10 +11182,10 @@ var RepeaterItem = ({
11048
11182
  ), /* @__PURE__ */ React140.createElement(RepeaterPopover, { width: ref?.getBoundingClientRect().width, ...popoverProps, anchorEl: ref }, /* @__PURE__ */ React140.createElement(import_ui124.Box, null, children({ anchorEl: ref }))));
11049
11183
  };
11050
11184
  var usePopover = (openOnMount, onOpen, onPopoverClose) => {
11051
- const [ref, setRef] = (0, import_react84.useState)(null);
11185
+ const [ref, setRef] = (0, import_react86.useState)(null);
11052
11186
  const popoverState = (0, import_ui124.usePopupState)({ variant: "popover" });
11053
11187
  const popoverProps = (0, import_ui124.bindPopover)(popoverState);
11054
- (0, import_react84.useEffect)(() => {
11188
+ (0, import_react86.useEffect)(() => {
11055
11189
  if (openOnMount && ref) {
11056
11190
  popoverState.open(ref);
11057
11191
  onOpen?.();
@@ -11114,7 +11248,7 @@ var differsFromExternal = (newState, externalState) => {
11114
11248
 
11115
11249
  // src/components/size/unit-select.tsx
11116
11250
  var React141 = __toESM(require("react"));
11117
- var import_react85 = require("react");
11251
+ var import_react87 = require("react");
11118
11252
  var import_editor_ui22 = require("@elementor/editor-ui");
11119
11253
  var import_ui125 = require("@elementor/ui");
11120
11254
  var menuItemContentStyles2 = {
@@ -11125,7 +11259,7 @@ var menuItemContentStyles2 = {
11125
11259
  var UnitSelect = ({ value, showPrimaryColor, onClick, options }) => {
11126
11260
  const popupState = (0, import_ui125.usePopupState)({
11127
11261
  variant: "popover",
11128
- popupId: (0, import_react85.useId)()
11262
+ popupId: (0, import_react87.useId)()
11129
11263
  });
11130
11264
  const handleMenuItemClick = (index) => {
11131
11265
  onClick(options[index]);
@@ -11161,8 +11295,8 @@ var StyledButton3 = (0, import_ui125.styled)(import_ui125.Button, {
11161
11295
 
11162
11296
  // src/components/size/unstable-size-input.tsx
11163
11297
  var React142 = __toESM(require("react"));
11164
- var import_react86 = require("react");
11165
- var UnstableSizeInput = (0, import_react86.forwardRef)(
11298
+ var import_react88 = require("react");
11299
+ var UnstableSizeInput = (0, import_react88.forwardRef)(
11166
11300
  ({ type, value, onChange, onKeyDown, onKeyUp, InputProps, onBlur, focused, disabled }, ref) => {
11167
11301
  return /* @__PURE__ */ React142.createElement(
11168
11302
  NumberInput,
@@ -11230,7 +11364,7 @@ var hasValue = (value) => {
11230
11364
  };
11231
11365
 
11232
11366
  // src/hooks/use-font-families.ts
11233
- var import_react87 = require("react");
11367
+ var import_react89 = require("react");
11234
11368
  var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
11235
11369
  var getFontControlConfig = () => {
11236
11370
  const { controls } = (0, import_editor_v1_adapters5.getElementorConfig)();
@@ -11238,7 +11372,7 @@ var getFontControlConfig = () => {
11238
11372
  };
11239
11373
  var useFontFamilies = () => {
11240
11374
  const { groups, options } = getFontControlConfig();
11241
- return (0, import_react87.useMemo)(() => {
11375
+ return (0, import_react89.useMemo)(() => {
11242
11376
  if (!groups || !options) {
11243
11377
  return [];
11244
11378
  }
@@ -11349,6 +11483,7 @@ var useFontFamilies = () => {
11349
11483
  registerIconLibraryProvider,
11350
11484
  resetFontAwesome7IconsCache,
11351
11485
  resolveFontAwesome7Icon,
11486
+ resolveProviderIconPreviewSvg,
11352
11487
  resolveProviderIconSvg,
11353
11488
  trackUpgradePromotionClick,
11354
11489
  trackViewPromotion,