@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.d.mts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +318 -183
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +295 -161
- package/dist/index.mjs.map +1 -1
- package/package.json +16 -16
- package/src/controls/icon-library/font-awesome-7-catalog.ts +2 -0
- package/src/controls/icon-library/font-awesome-glyph.tsx +67 -1
- package/src/controls/icon-library/icon-library-grid.tsx +2 -1
- package/src/controls/icon-library/icon-library-popover.tsx +14 -5
- package/src/controls/icon-library/icon-library-providers.ts +48 -4
- package/src/controls/icon-library/merge-icons-by-id.ts +25 -0
- package/src/controls/notice-control.tsx +12 -5
- package/src/controls/svg-media-preview.tsx +32 -7
- package/src/index.ts +1 -0
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
|
-
|
|
696
|
-
|
|
697
|
-
markNoticeAsDismissedInSession(dismissible);
|
|
696
|
+
if (!dismissible) {
|
|
697
|
+
return;
|
|
698
698
|
}
|
|
699
|
+
setIsDismissed(true);
|
|
700
|
+
markNoticeAsDismissedInSession(dismissible);
|
|
699
701
|
};
|
|
700
|
-
return /* @__PURE__ */ React13.createElement(
|
|
701
|
-
import_ui6.
|
|
702
|
+
return /* @__PURE__ */ React13.createElement(
|
|
703
|
+
import_ui6.Alert,
|
|
702
704
|
{
|
|
703
|
-
variant: "
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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 = (
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
6392
|
-
const cellRefs = (0,
|
|
6393
|
-
const shouldRestoreFocusRef = (0,
|
|
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,
|
|
6396
|
-
const [{ columnCount, cellSize }, setGridMetrics] = (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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
6755
|
-
const triggerRef = (0,
|
|
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,
|
|
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
|
|
6904
|
-
|
|
6905
|
-
|
|
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
|
|
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(
|
|
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
|
|
7152
|
-
const
|
|
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,
|
|
7389
|
+
const [unfilteredModalOpenState, setUnfilteredModalOpenState] = (0, import_react59.useState)(false);
|
|
7256
7390
|
const iconLibraryPopoverState = (0, import_ui76.usePopupState)({ variant: "popover" });
|
|
7257
|
-
const controlContainerRef = (0,
|
|
7258
|
-
const buttonGroupRef = (0,
|
|
7259
|
-
const [iconLibraryAnchor, setIconLibraryAnchor] = (0,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
8215
|
-
const [valueError, setValueError] = (0,
|
|
8216
|
-
const [sessionState, setSessionState] = (0,
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
9104
|
+
const rowRef = (0, import_react73.useRef)(null);
|
|
8971
9105
|
const sizeFieldId = sizeLabel.replace(/\s+/g, "-").toLowerCase();
|
|
8972
|
-
const currentSizeConfig = (0,
|
|
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
|
|
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,
|
|
9365
|
+
const defaultRef = (0, import_react74.useRef)(null);
|
|
9232
9366
|
const popoverState = (0, import_ui103.usePopupState)({ variant: "popover" });
|
|
9233
|
-
const disabledCategories = (0,
|
|
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,
|
|
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,
|
|
9596
|
+
const { allDisabled: disabledItems, proDisabled: proDisabledItems } = (0, import_react75.useMemo)(
|
|
9463
9597
|
() => getDisabledItemLabels(value),
|
|
9464
9598
|
[value]
|
|
9465
9599
|
);
|
|
9466
|
-
const allowedTransitionSet = (0,
|
|
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,
|
|
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,
|
|
9623
|
+
(0, import_react75.useEffect)(() => {
|
|
9490
9624
|
recentlyUsedListGetter().then(setRecentlyUsedList);
|
|
9491
9625
|
}, [recentlyUsedListGetter]);
|
|
9492
|
-
const allPropertiesUsed = (0,
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
9845
|
-
const onBlurRef = (0,
|
|
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,
|
|
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(
|
|
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,
|
|
9944
|
-
(0,
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
9978
|
-
(0,
|
|
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,
|
|
10034
|
-
const [openInNewTab, setOpenInNewTab] = (0,
|
|
10035
|
-
const toolbarRef = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
10262
|
-
const handleChange = (0,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
10865
|
+
var PromotionTrigger = (0, import_react83.forwardRef)(
|
|
10732
10866
|
({ promotionKey, children, trackingData }, ref) => {
|
|
10733
|
-
const [isOpen, setIsOpen] = (0,
|
|
10867
|
+
const [isOpen, setIsOpen] = (0, import_react83.useState)(false);
|
|
10734
10868
|
const promotion = getV4Promotion(promotionKey);
|
|
10735
|
-
const toggle = (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
11165
|
-
var UnstableSizeInput = (0,
|
|
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
|
|
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,
|
|
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,
|