@elementor/editor-controls 4.3.0-beta1 → 4.3.0-beta3
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 +25 -2
- package/dist/index.d.ts +25 -2
- package/dist/index.js +2108 -922
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1950 -751
- package/dist/index.mjs.map +1 -1
- package/package.json +17 -16
- package/src/controls/icon-library/font-awesome-7-catalog.ts +113 -0
- package/src/controls/icon-library/font-awesome-7-data.ts +260 -0
- package/src/controls/icon-library/font-awesome-glyph.tsx +30 -0
- package/src/controls/icon-library/get-icon-library-anchor.ts +29 -0
- package/src/controls/icon-library/icon-library-filter.tsx +166 -0
- package/src/controls/icon-library/icon-library-grid.tsx +344 -0
- package/src/controls/icon-library/icon-library-popover.tsx +305 -0
- package/src/controls/icon-library/icon-library-tooltip.ts +1 -0
- package/src/controls/icon-library/icon-library-view-toggle.tsx +104 -0
- package/src/controls/icon-library/use-font-awesome-7-catalog.ts +14 -0
- package/src/controls/notice-control.tsx +105 -0
- package/src/controls/svg-media-control.tsx +132 -159
- package/src/controls/svg-media-overlay.tsx +137 -0
- package/src/controls/svg-media-preview.tsx +68 -0
- package/src/controls/toggle-control.tsx +13 -2
- package/src/index.ts +7 -0
package/dist/index.mjs
CHANGED
|
@@ -381,7 +381,7 @@ function ControlActions({ children }) {
|
|
|
381
381
|
if (items2.length === 0 || disabled) {
|
|
382
382
|
return children;
|
|
383
383
|
}
|
|
384
|
-
const menuItems = items2.map(({ MenuItem:
|
|
384
|
+
const menuItems = items2.map(({ MenuItem: MenuItem4, id }) => /* @__PURE__ */ React10.createElement(MenuItem4, { key: id }));
|
|
385
385
|
return /* @__PURE__ */ React10.createElement(FloatingActionsBar, { actions: menuItems }, children);
|
|
386
386
|
}
|
|
387
387
|
|
|
@@ -2879,7 +2879,8 @@ var ToggleControl = createControl(
|
|
|
2879
2879
|
size = "tiny",
|
|
2880
2880
|
exclusive = true,
|
|
2881
2881
|
maxItems,
|
|
2882
|
-
convertOptions = false
|
|
2882
|
+
convertOptions = false,
|
|
2883
|
+
allowEmpty = false
|
|
2883
2884
|
}) => {
|
|
2884
2885
|
const { value, setValue, placeholder, disabled } = useBoundProp(stringPropTypeUtil7);
|
|
2885
2886
|
const processedOptions = convertOptions ? convertToggleOptionsToAtomic(options) : options;
|
|
@@ -2897,12 +2898,19 @@ var ToggleControl = createControl(
|
|
|
2897
2898
|
size,
|
|
2898
2899
|
placeholder
|
|
2899
2900
|
};
|
|
2901
|
+
const handleExclusiveToggle = (selectedValue) => {
|
|
2902
|
+
if (allowEmpty && !selectedValue) {
|
|
2903
|
+
setValue("");
|
|
2904
|
+
return;
|
|
2905
|
+
}
|
|
2906
|
+
setValue(selectedValue);
|
|
2907
|
+
};
|
|
2900
2908
|
return exclusive ? /* @__PURE__ */ React56.createElement(
|
|
2901
2909
|
ControlToggleButtonGroup,
|
|
2902
2910
|
{
|
|
2903
2911
|
...toggleButtonGroupProps,
|
|
2904
|
-
value: value ?? null,
|
|
2905
|
-
onChange:
|
|
2912
|
+
value: allowEmpty ? value || null : value ?? null,
|
|
2913
|
+
onChange: handleExclusiveToggle,
|
|
2906
2914
|
disabled,
|
|
2907
2915
|
exclusive: true
|
|
2908
2916
|
}
|
|
@@ -5314,24 +5322,13 @@ var AspectRatioControl = createControl(({ label }) => {
|
|
|
5314
5322
|
});
|
|
5315
5323
|
|
|
5316
5324
|
// src/controls/svg-media-control.tsx
|
|
5317
|
-
import * as
|
|
5318
|
-
import { useEffect as useEffect16, useState as
|
|
5325
|
+
import * as React88 from "react";
|
|
5326
|
+
import { useEffect as useEffect16, useRef as useRef16, useState as useState18 } from "react";
|
|
5319
5327
|
import { useCurrentUserCapabilities } from "@elementor/editor-current-user";
|
|
5320
5328
|
import { iconPropTypeUtil, svgSrcPropTypeUtil, urlPropTypeUtil as urlPropTypeUtil4 } from "@elementor/editor-props";
|
|
5321
|
-
import {
|
|
5322
|
-
import {
|
|
5323
|
-
Box as Box15,
|
|
5324
|
-
Button as Button5,
|
|
5325
|
-
Card as Card2,
|
|
5326
|
-
CardMedia as CardMedia2,
|
|
5327
|
-
CardOverlay as CardOverlay2,
|
|
5328
|
-
CircularProgress as CircularProgress3,
|
|
5329
|
-
Stack as Stack13,
|
|
5330
|
-
styled as styled9,
|
|
5331
|
-
ThemeProvider
|
|
5332
|
-
} from "@elementor/ui";
|
|
5329
|
+
import { Box as Box20, Card as Card2, CardOverlay as CardOverlay2, Popover as Popover6, Stack as Stack17, styled as styled11, usePopupState as usePopupState10 } from "@elementor/ui";
|
|
5333
5330
|
import { useWpMediaAttachment as useWpMediaAttachment2, useWpMediaFrame as useWpMediaFrame2 } from "@elementor/wp-media";
|
|
5334
|
-
import { __ as
|
|
5331
|
+
import { __ as __38 } from "@wordpress/i18n";
|
|
5335
5332
|
|
|
5336
5333
|
// src/components/enable-unfiltered-modal.tsx
|
|
5337
5334
|
import * as React80 from "react";
|
|
@@ -5393,37 +5390,1015 @@ var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @_
|
|
|
5393
5390
|
isPending ? /* @__PURE__ */ React80.createElement(CircularProgress2, { size: 24 }) : __31("Enable", "elementor")
|
|
5394
5391
|
)));
|
|
5395
5392
|
|
|
5396
|
-
// src/controls/
|
|
5397
|
-
|
|
5398
|
-
|
|
5399
|
-
|
|
5400
|
-
|
|
5393
|
+
// src/controls/icon-library/get-icon-library-anchor.ts
|
|
5394
|
+
function getIconLibraryAnchor(containerRect, buttonGroupRect) {
|
|
5395
|
+
if (!containerRect || containerRect.width <= 0) {
|
|
5396
|
+
return null;
|
|
5397
|
+
}
|
|
5398
|
+
return {
|
|
5399
|
+
top: buttonGroupRect?.top ?? containerRect.top,
|
|
5400
|
+
left: containerRect.left,
|
|
5401
|
+
width: containerRect.width
|
|
5402
|
+
};
|
|
5401
5403
|
}
|
|
5402
|
-
function
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
|
|
5404
|
+
function measureIconLibraryAnchor(container, buttonGroup) {
|
|
5405
|
+
return getIconLibraryAnchor(container?.getBoundingClientRect(), buttonGroup?.getBoundingClientRect());
|
|
5406
|
+
}
|
|
5407
|
+
|
|
5408
|
+
// src/controls/icon-library/icon-library-popover.tsx
|
|
5409
|
+
import * as React85 from "react";
|
|
5410
|
+
import { useMemo as useMemo12, useState as useState17 } from "react";
|
|
5411
|
+
import {
|
|
5412
|
+
PopoverBody as PopoverBody2,
|
|
5413
|
+
PopoverHeader as PopoverHeader4,
|
|
5414
|
+
PopoverMenuList as PopoverMenuList2,
|
|
5415
|
+
SearchField as SearchField2,
|
|
5416
|
+
StyledMenuList
|
|
5417
|
+
} from "@elementor/editor-ui";
|
|
5418
|
+
import { ComponentsIcon } from "@elementor/icons";
|
|
5419
|
+
import { useSessionStorage as useSessionStorage2 } from "@elementor/session";
|
|
5420
|
+
import { Box as Box17, CircularProgress as CircularProgress3, Divider as Divider4, Link as Link3, Stack as Stack15, styled as styled9, Typography as Typography9 } from "@elementor/ui";
|
|
5421
|
+
import { useDebounceState } from "@elementor/utils";
|
|
5422
|
+
import { __ as __35 } from "@wordpress/i18n";
|
|
5423
|
+
|
|
5424
|
+
// src/controls/icon-library/font-awesome-7-data.ts
|
|
5425
|
+
var FONT_AWESOME_7_LIBRARIES = [
|
|
5426
|
+
{ file: "solid", library: "fa-solid" },
|
|
5427
|
+
{ file: "regular", library: "fa-regular" },
|
|
5428
|
+
{ file: "brands", library: "fa-brands" }
|
|
5429
|
+
];
|
|
5430
|
+
var FONT_AWESOME_JSON = {
|
|
5431
|
+
width: 0,
|
|
5432
|
+
height: 1,
|
|
5433
|
+
aliases: 2,
|
|
5434
|
+
unicode: 3,
|
|
5435
|
+
path: 4
|
|
5436
|
+
};
|
|
5437
|
+
var libraryCache = /* @__PURE__ */ new Map();
|
|
5438
|
+
function getFontAwesome7EditorConfig() {
|
|
5439
|
+
const config = window.elementorCommon?.config?.fontAwesome?.v7;
|
|
5440
|
+
if (!config || !Array.isArray(config.jsonFiles)) {
|
|
5441
|
+
return null;
|
|
5442
|
+
}
|
|
5443
|
+
const jsonBaseUrl = getAllowedJsonBaseUrl(config.jsonBaseUrl);
|
|
5444
|
+
if (!jsonBaseUrl) {
|
|
5445
|
+
return null;
|
|
5446
|
+
}
|
|
5447
|
+
return {
|
|
5448
|
+
jsonFiles: config.jsonFiles,
|
|
5449
|
+
jsonBaseUrl
|
|
5450
|
+
};
|
|
5451
|
+
}
|
|
5452
|
+
var FONT_AWESOME_ICON_NAME_PATTERN = /^fa\S*\s+fa-([^\s]+)/;
|
|
5453
|
+
function getFontAwesome7IconName(iconValue) {
|
|
5454
|
+
return iconValue.match(FONT_AWESOME_ICON_NAME_PATTERN)?.[1] ?? null;
|
|
5455
|
+
}
|
|
5456
|
+
function resetFontAwesome7IconsCache() {
|
|
5457
|
+
libraryCache.clear();
|
|
5458
|
+
}
|
|
5459
|
+
async function loadFontAwesome7Library(file, signal) {
|
|
5460
|
+
const cached = await getCachedLibrary(file, signal);
|
|
5461
|
+
return cached?.icons ?? [];
|
|
5462
|
+
}
|
|
5463
|
+
async function resolveFontAwesome7Icon(library, iconName, signal) {
|
|
5464
|
+
const file = getLibraryFileName(library);
|
|
5465
|
+
if (!file) {
|
|
5466
|
+
return null;
|
|
5467
|
+
}
|
|
5468
|
+
const cached = await getCachedLibrary(file, signal);
|
|
5469
|
+
return cached?.lookup[iconName] ?? null;
|
|
5470
|
+
}
|
|
5471
|
+
async function getCachedLibrary(file, signal) {
|
|
5472
|
+
const cached = libraryCache.get(file);
|
|
5473
|
+
if (cached) {
|
|
5474
|
+
return cached;
|
|
5475
|
+
}
|
|
5476
|
+
const loaded = await fetchLibrary(file, signal);
|
|
5477
|
+
if (loaded) {
|
|
5478
|
+
libraryCache.set(file, loaded);
|
|
5479
|
+
}
|
|
5480
|
+
return loaded;
|
|
5481
|
+
}
|
|
5482
|
+
function getLibraryFileName(library) {
|
|
5483
|
+
const config = getFontAwesome7EditorConfig();
|
|
5484
|
+
const match = FONT_AWESOME_7_LIBRARIES.find((item) => item.library === library);
|
|
5485
|
+
if (!config || !match || !config.jsonFiles.includes(match.file)) {
|
|
5486
|
+
return null;
|
|
5487
|
+
}
|
|
5488
|
+
return match.file;
|
|
5489
|
+
}
|
|
5490
|
+
async function fetchLibrary(file, signal) {
|
|
5491
|
+
const config = getFontAwesome7EditorConfig();
|
|
5492
|
+
if (!config?.jsonFiles.includes(file)) {
|
|
5493
|
+
return null;
|
|
5494
|
+
}
|
|
5495
|
+
const catalogUrl = getCatalogFileUrl(config.jsonBaseUrl, file);
|
|
5496
|
+
if (!catalogUrl) {
|
|
5497
|
+
return null;
|
|
5498
|
+
}
|
|
5499
|
+
try {
|
|
5500
|
+
const response = await fetch(catalogUrl, { signal });
|
|
5501
|
+
if (!response.ok) {
|
|
5502
|
+
return null;
|
|
5503
|
+
}
|
|
5504
|
+
const data = await response.json();
|
|
5505
|
+
const icons = data.icons;
|
|
5506
|
+
if (!icons || typeof icons !== "object") {
|
|
5507
|
+
return null;
|
|
5508
|
+
}
|
|
5509
|
+
return indexLibrary(icons);
|
|
5510
|
+
} catch {
|
|
5511
|
+
return null;
|
|
5512
|
+
}
|
|
5513
|
+
}
|
|
5514
|
+
function indexLibrary(icons) {
|
|
5515
|
+
const definitions = [];
|
|
5516
|
+
const lookup = /* @__PURE__ */ Object.create(null);
|
|
5517
|
+
for (const [name, iconData] of Object.entries(icons)) {
|
|
5518
|
+
const definition = toIconDefinition(name, iconData);
|
|
5519
|
+
if (!definition) {
|
|
5520
|
+
continue;
|
|
5521
|
+
}
|
|
5522
|
+
definitions.push(definition);
|
|
5523
|
+
lookup[name] = definition;
|
|
5524
|
+
for (const alias of definition.aliases) {
|
|
5525
|
+
if (!lookup[alias]) {
|
|
5526
|
+
lookup[alias] = definition;
|
|
5527
|
+
}
|
|
5528
|
+
}
|
|
5529
|
+
}
|
|
5530
|
+
return { icons: definitions, lookup };
|
|
5531
|
+
}
|
|
5532
|
+
function toIconDefinition(name, iconData) {
|
|
5533
|
+
if (!isValidIconTuple(iconData)) {
|
|
5534
|
+
return null;
|
|
5535
|
+
}
|
|
5536
|
+
const paths = normalizePaths(iconData[FONT_AWESOME_JSON.path]);
|
|
5537
|
+
if (paths.length === 0) {
|
|
5538
|
+
return null;
|
|
5539
|
+
}
|
|
5540
|
+
const aliases = iconData[FONT_AWESOME_JSON.aliases].filter(
|
|
5541
|
+
(alias) => typeof alias === "string" && alias !== ""
|
|
5542
|
+
);
|
|
5543
|
+
return {
|
|
5544
|
+
name,
|
|
5545
|
+
aliases,
|
|
5546
|
+
width: iconData[FONT_AWESOME_JSON.width],
|
|
5547
|
+
height: iconData[FONT_AWESOME_JSON.height],
|
|
5548
|
+
paths
|
|
5549
|
+
};
|
|
5550
|
+
}
|
|
5551
|
+
function isValidIconTuple(iconData) {
|
|
5552
|
+
return Array.isArray(iconData) && iconData.length > FONT_AWESOME_JSON.path && typeof iconData[FONT_AWESOME_JSON.width] === "number" && typeof iconData[FONT_AWESOME_JSON.height] === "number" && Array.isArray(iconData[FONT_AWESOME_JSON.aliases]);
|
|
5553
|
+
}
|
|
5554
|
+
function normalizePaths(pathData) {
|
|
5555
|
+
if (typeof pathData === "string" && isSafeSvgPath(pathData)) {
|
|
5556
|
+
return [pathData];
|
|
5557
|
+
}
|
|
5558
|
+
if (!Array.isArray(pathData)) {
|
|
5559
|
+
return [];
|
|
5560
|
+
}
|
|
5561
|
+
return pathData.filter((path) => typeof path === "string" && isSafeSvgPath(path));
|
|
5562
|
+
}
|
|
5563
|
+
function isSafeSvgPath(path) {
|
|
5564
|
+
return path !== "" && !/[<>"'`]/.test(path);
|
|
5565
|
+
}
|
|
5566
|
+
function getAllowedJsonBaseUrl(jsonBaseUrl) {
|
|
5567
|
+
if (typeof jsonBaseUrl !== "string" || jsonBaseUrl === "") {
|
|
5568
|
+
return null;
|
|
5569
|
+
}
|
|
5570
|
+
try {
|
|
5571
|
+
const url = new URL(jsonBaseUrl);
|
|
5572
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") {
|
|
5573
|
+
return null;
|
|
5574
|
+
}
|
|
5575
|
+
return url.href;
|
|
5576
|
+
} catch {
|
|
5577
|
+
return null;
|
|
5406
5578
|
}
|
|
5407
|
-
|
|
5408
|
-
|
|
5409
|
-
|
|
5579
|
+
}
|
|
5580
|
+
function getCatalogFileUrl(jsonBaseUrl, file) {
|
|
5581
|
+
try {
|
|
5582
|
+
const baseUrl = new URL(jsonBaseUrl);
|
|
5583
|
+
const fileUrl = new URL(`${file}.json`, jsonBaseUrl);
|
|
5584
|
+
if (fileUrl.origin !== baseUrl.origin || !fileUrl.pathname.startsWith(baseUrl.pathname)) {
|
|
5585
|
+
return null;
|
|
5586
|
+
}
|
|
5587
|
+
if (fileUrl.protocol !== "http:" && fileUrl.protocol !== "https:") {
|
|
5588
|
+
return null;
|
|
5589
|
+
}
|
|
5590
|
+
return fileUrl.href;
|
|
5591
|
+
} catch {
|
|
5592
|
+
return null;
|
|
5593
|
+
}
|
|
5594
|
+
}
|
|
5595
|
+
|
|
5596
|
+
// src/controls/icon-library/font-awesome-7-catalog.ts
|
|
5597
|
+
async function loadFontAwesome7Catalog(signal) {
|
|
5598
|
+
const config = getFontAwesome7EditorConfig();
|
|
5599
|
+
if (!config) {
|
|
5600
|
+
return [];
|
|
5601
|
+
}
|
|
5602
|
+
const catalogs = await Promise.all(
|
|
5603
|
+
FONT_AWESOME_7_LIBRARIES.map(async ({ file, library }) => {
|
|
5604
|
+
if (!config.jsonFiles.includes(file)) {
|
|
5605
|
+
return [];
|
|
5606
|
+
}
|
|
5607
|
+
const icons = await loadFontAwesome7Library(file, signal);
|
|
5608
|
+
return icons.map((icon) => toCatalogIcon(icon, library));
|
|
5609
|
+
})
|
|
5610
|
+
);
|
|
5611
|
+
return catalogs.flat();
|
|
5612
|
+
}
|
|
5613
|
+
function filterFontAwesome7Icons(icons, searchValue, libraries = []) {
|
|
5614
|
+
const query = searchValue?.trim().toLowerCase() ?? "";
|
|
5615
|
+
const libraryIcons = libraries.length === 0 ? icons : icons.filter((icon) => libraries.includes(icon.library));
|
|
5616
|
+
if (query === "") {
|
|
5617
|
+
return libraryIcons;
|
|
5618
|
+
}
|
|
5619
|
+
return libraryIcons.filter((icon) => {
|
|
5620
|
+
if (icon.name.includes(query) || icon.label.toLowerCase().includes(query)) {
|
|
5621
|
+
return true;
|
|
5622
|
+
}
|
|
5623
|
+
return icon.aliases.some((alias) => alias.toLowerCase().includes(query));
|
|
5410
5624
|
});
|
|
5411
5625
|
}
|
|
5412
|
-
function
|
|
5413
|
-
|
|
5626
|
+
function createIconSelectionValue(library, name) {
|
|
5627
|
+
return `${library} fa-${name}`;
|
|
5628
|
+
}
|
|
5629
|
+
function getSelectedIconId(iconClass, library) {
|
|
5630
|
+
if (!iconClass || !library) {
|
|
5631
|
+
return void 0;
|
|
5632
|
+
}
|
|
5633
|
+
const name = getFontAwesome7IconName(iconClass);
|
|
5634
|
+
if (!name) {
|
|
5635
|
+
return void 0;
|
|
5636
|
+
}
|
|
5637
|
+
return `${library}:${name}`;
|
|
5638
|
+
}
|
|
5639
|
+
function findFontAwesome7Icon(icons, iconClass, library) {
|
|
5640
|
+
const selectedId = getSelectedIconId(iconClass, library);
|
|
5641
|
+
if (!selectedId || !library) {
|
|
5642
|
+
return void 0;
|
|
5643
|
+
}
|
|
5644
|
+
const selectedName = selectedId.slice(`${library}:`.length);
|
|
5645
|
+
return icons.find((icon) => {
|
|
5646
|
+
if (icon.library !== library) {
|
|
5647
|
+
return false;
|
|
5648
|
+
}
|
|
5649
|
+
return icon.id === selectedId || icon.name === selectedName || icon.aliases.includes(selectedName);
|
|
5650
|
+
});
|
|
5414
5651
|
}
|
|
5415
|
-
function
|
|
5652
|
+
function toCatalogIcon(icon, library) {
|
|
5416
5653
|
return {
|
|
5417
|
-
|
|
5418
|
-
|
|
5654
|
+
...icon,
|
|
5655
|
+
id: `${library}:${icon.name}`,
|
|
5656
|
+
label: icon.name.replace(/-/g, " "),
|
|
5657
|
+
library,
|
|
5658
|
+
value: createIconSelectionValue(library, icon.name)
|
|
5659
|
+
};
|
|
5660
|
+
}
|
|
5661
|
+
|
|
5662
|
+
// src/controls/icon-library/font-awesome-glyph.tsx
|
|
5663
|
+
import * as React81 from "react";
|
|
5664
|
+
var FontAwesomeGlyph = ({ icon, size, color, label }) => {
|
|
5665
|
+
return /* @__PURE__ */ React81.createElement(
|
|
5666
|
+
"svg",
|
|
5667
|
+
{
|
|
5668
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
5669
|
+
viewBox: `0 0 ${icon.width} ${icon.height}`,
|
|
5670
|
+
width: size,
|
|
5671
|
+
height: size,
|
|
5672
|
+
fill: color,
|
|
5673
|
+
overflow: "visible",
|
|
5674
|
+
"aria-hidden": label ? void 0 : true,
|
|
5675
|
+
"aria-label": label,
|
|
5676
|
+
role: label ? "img" : void 0
|
|
5419
5677
|
},
|
|
5420
|
-
|
|
5421
|
-
|
|
5422
|
-
|
|
5678
|
+
icon.paths.map((path, index) => /* @__PURE__ */ React81.createElement("path", { key: `${index}-${path}`, d: path }))
|
|
5679
|
+
);
|
|
5680
|
+
};
|
|
5681
|
+
|
|
5682
|
+
// src/controls/icon-library/icon-library-filter.tsx
|
|
5683
|
+
import * as React82 from "react";
|
|
5684
|
+
import { useId as useId4 } from "react";
|
|
5685
|
+
import { CheckIcon, FilterIcon as FilterIcon2, LibraryIcon, ListIcon, StarFilledIcon, StarIcon } from "@elementor/icons";
|
|
5686
|
+
import {
|
|
5687
|
+
bindMenu as bindMenu3,
|
|
5688
|
+
bindToggle as bindToggle2,
|
|
5689
|
+
Box as Box15,
|
|
5690
|
+
Menu as Menu4,
|
|
5691
|
+
MenuItem as MenuItem2,
|
|
5692
|
+
Stack as Stack13,
|
|
5693
|
+
ToggleButton as ToggleButton2,
|
|
5694
|
+
Tooltip as Tooltip8,
|
|
5695
|
+
Typography as Typography7,
|
|
5696
|
+
usePopupState as usePopupState8
|
|
5697
|
+
} from "@elementor/ui";
|
|
5698
|
+
import { __ as __32 } from "@wordpress/i18n";
|
|
5699
|
+
|
|
5700
|
+
// src/controls/icon-library/icon-library-tooltip.ts
|
|
5701
|
+
var ICON_LIBRARY_ACTION_TOOLTIP_ENTER_DELAY = 0;
|
|
5702
|
+
|
|
5703
|
+
// src/controls/icon-library/icon-library-filter.tsx
|
|
5704
|
+
var FILTER_MENU_WIDTH = 280;
|
|
5705
|
+
var FILTER_INDICATOR_SIZE = 6;
|
|
5706
|
+
var FILTER_INDICATOR_OFFSET = 4;
|
|
5707
|
+
var LIBRARY_FILTER_ORDER = {
|
|
5708
|
+
regular: 0,
|
|
5709
|
+
solid: 1,
|
|
5710
|
+
brands: 2
|
|
5711
|
+
};
|
|
5712
|
+
var LIBRARY_FILTER_CONFIG = {
|
|
5713
|
+
"fa-regular": {
|
|
5714
|
+
getLabel: () => __32("Font Awesome - Regular", "elementor"),
|
|
5715
|
+
Icon: StarIcon,
|
|
5716
|
+
order: LIBRARY_FILTER_ORDER.regular
|
|
5717
|
+
},
|
|
5718
|
+
"fa-solid": {
|
|
5719
|
+
getLabel: () => __32("Font Awesome - Solid", "elementor"),
|
|
5720
|
+
Icon: StarFilledIcon,
|
|
5721
|
+
order: LIBRARY_FILTER_ORDER.solid
|
|
5722
|
+
},
|
|
5723
|
+
"fa-brands": {
|
|
5724
|
+
getLabel: () => __32("Font Awesome - Brands", "elementor"),
|
|
5725
|
+
Icon: LibraryIcon,
|
|
5726
|
+
order: LIBRARY_FILTER_ORDER.brands
|
|
5727
|
+
}
|
|
5728
|
+
};
|
|
5729
|
+
var IconLibraryFilter = ({ value, onChange }) => {
|
|
5730
|
+
const popupId = useId4();
|
|
5731
|
+
const popupState = usePopupState8({
|
|
5732
|
+
variant: "popover",
|
|
5733
|
+
popupId
|
|
5734
|
+
});
|
|
5735
|
+
const options = FONT_AWESOME_7_LIBRARIES.map(({ library }) => ({
|
|
5736
|
+
value: library,
|
|
5737
|
+
label: LIBRARY_FILTER_CONFIG[library].getLabel(),
|
|
5738
|
+
Icon: LIBRARY_FILTER_CONFIG[library].Icon,
|
|
5739
|
+
order: LIBRARY_FILTER_CONFIG[library].order
|
|
5740
|
+
})).sort((firstOption, secondOption) => firstOption.order - secondOption.order);
|
|
5741
|
+
const isFiltered = value.length > 0;
|
|
5742
|
+
const filterButtonLabel = isFiltered ? __32("Filter by library, active", "elementor") : __32("Filter by library", "elementor");
|
|
5743
|
+
const handleAllIconsClick = () => {
|
|
5744
|
+
onChange([]);
|
|
5745
|
+
};
|
|
5746
|
+
const handleLibraryClick = (library) => {
|
|
5747
|
+
const nextValue = value.includes(library) ? value.filter((selectedLibrary) => selectedLibrary !== library) : [...value, library];
|
|
5748
|
+
onChange(nextValue.length === FONT_AWESOME_7_LIBRARIES.length ? [] : nextValue);
|
|
5749
|
+
};
|
|
5750
|
+
return /* @__PURE__ */ React82.createElement(React82.Fragment, null, /* @__PURE__ */ React82.createElement(
|
|
5751
|
+
Tooltip8,
|
|
5752
|
+
{
|
|
5753
|
+
title: __32("Filter by library", "elementor"),
|
|
5754
|
+
placement: "top",
|
|
5755
|
+
enterDelay: ICON_LIBRARY_ACTION_TOOLTIP_ENTER_DELAY,
|
|
5756
|
+
enterNextDelay: ICON_LIBRARY_ACTION_TOOLTIP_ENTER_DELAY,
|
|
5757
|
+
disableInteractive: true
|
|
5423
5758
|
},
|
|
5424
|
-
|
|
5759
|
+
/* @__PURE__ */ React82.createElement(
|
|
5760
|
+
ToggleButton2,
|
|
5761
|
+
{
|
|
5762
|
+
"aria-label": filterButtonLabel,
|
|
5763
|
+
value: "filter",
|
|
5764
|
+
size: "tiny",
|
|
5765
|
+
selected: popupState.isOpen,
|
|
5766
|
+
sx: { position: "relative", flexShrink: 0 },
|
|
5767
|
+
...bindToggle2(popupState),
|
|
5768
|
+
"aria-expanded": popupState.isOpen
|
|
5769
|
+
},
|
|
5770
|
+
/* @__PURE__ */ React82.createElement(FilterIcon2, { fontSize: "tiny" }),
|
|
5771
|
+
isFiltered ? /* @__PURE__ */ React82.createElement(
|
|
5772
|
+
Box15,
|
|
5773
|
+
{
|
|
5774
|
+
component: "span",
|
|
5775
|
+
"aria-hidden": "true",
|
|
5776
|
+
sx: {
|
|
5777
|
+
position: "absolute",
|
|
5778
|
+
insetBlockStart: FILTER_INDICATOR_OFFSET,
|
|
5779
|
+
insetInlineEnd: FILTER_INDICATOR_OFFSET,
|
|
5780
|
+
width: FILTER_INDICATOR_SIZE,
|
|
5781
|
+
height: FILTER_INDICATOR_SIZE,
|
|
5782
|
+
borderRadius: "50%",
|
|
5783
|
+
bgcolor: "secondary.main"
|
|
5784
|
+
}
|
|
5785
|
+
}
|
|
5786
|
+
) : null
|
|
5787
|
+
)
|
|
5788
|
+
), /* @__PURE__ */ React82.createElement(
|
|
5789
|
+
Menu4,
|
|
5790
|
+
{
|
|
5791
|
+
...bindMenu3(popupState),
|
|
5792
|
+
MenuListProps: {
|
|
5793
|
+
dense: true,
|
|
5794
|
+
autoFocusItem: true,
|
|
5795
|
+
"aria-label": __32("Filter by library", "elementor")
|
|
5796
|
+
},
|
|
5797
|
+
sx: { "& .MuiPaper-root": { minWidth: FILTER_MENU_WIDTH } }
|
|
5798
|
+
},
|
|
5799
|
+
/* @__PURE__ */ React82.createElement(
|
|
5800
|
+
MenuItem2,
|
|
5801
|
+
{
|
|
5802
|
+
role: "menuitemcheckbox",
|
|
5803
|
+
"aria-checked": !isFiltered,
|
|
5804
|
+
selected: !isFiltered,
|
|
5805
|
+
onClick: handleAllIconsClick
|
|
5806
|
+
},
|
|
5807
|
+
renderFilterMenuItemContent(__32("All icons", "elementor"), ListIcon, !isFiltered)
|
|
5808
|
+
),
|
|
5809
|
+
options.map(({ value: library, label, Icon }) => /* @__PURE__ */ React82.createElement(
|
|
5810
|
+
MenuItem2,
|
|
5811
|
+
{
|
|
5812
|
+
key: library,
|
|
5813
|
+
role: "menuitemcheckbox",
|
|
5814
|
+
"aria-checked": value.includes(library),
|
|
5815
|
+
selected: value.includes(library),
|
|
5816
|
+
onClick: () => handleLibraryClick(library)
|
|
5817
|
+
},
|
|
5818
|
+
renderFilterMenuItemContent(label, Icon, value.includes(library))
|
|
5819
|
+
))
|
|
5820
|
+
));
|
|
5821
|
+
};
|
|
5822
|
+
var renderFilterMenuItemContent = (label, Icon, selected) => /* @__PURE__ */ React82.createElement(Stack13, { direction: "row", alignItems: "center", gap: 1, width: "100%" }, /* @__PURE__ */ React82.createElement(Icon, { fontSize: "tiny" }), /* @__PURE__ */ React82.createElement(Typography7, { variant: "caption", sx: { flex: 1 } }, label), selected ? /* @__PURE__ */ React82.createElement(CheckIcon, { fontSize: "tiny", "aria-hidden": "true" }) : null);
|
|
5823
|
+
|
|
5824
|
+
// src/controls/icon-library/icon-library-grid.tsx
|
|
5825
|
+
import * as React83 from "react";
|
|
5826
|
+
import { useLayoutEffect as useLayoutEffect3, useRef as useRef15, useState as useState16 } from "react";
|
|
5827
|
+
import { Box as Box16, Tooltip as Tooltip9, useTheme as useTheme3 } from "@elementor/ui";
|
|
5828
|
+
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
5829
|
+
import { __ as __33 } from "@wordpress/i18n";
|
|
5830
|
+
var ICON_LIBRARY_GRID_FALLBACK_COLUMN_COUNT = 4;
|
|
5831
|
+
var ICON_LIBRARY_GRID_MIN_CELL_SIZE = 52;
|
|
5832
|
+
var ICON_LIBRARY_GRID_TOOLTIP_ENTER_DELAY = 1e3;
|
|
5833
|
+
var ICON_GLYPH_SIZE = 20;
|
|
5834
|
+
var GRID_OVERSCAN = 6;
|
|
5835
|
+
var GRID_COLUMN_GAP = 1;
|
|
5836
|
+
var GRID_HORIZONTAL_PADDING = 1;
|
|
5837
|
+
var HOME_END_KEYS = /* @__PURE__ */ new Set(["Home", "End"]);
|
|
5838
|
+
var getGridMetrics = (containerWidth, columnGap, inlinePadding) => {
|
|
5839
|
+
const availableWidth = containerWidth - inlinePadding;
|
|
5840
|
+
if (availableWidth <= 0) {
|
|
5841
|
+
return {
|
|
5842
|
+
columnCount: ICON_LIBRARY_GRID_FALLBACK_COLUMN_COUNT,
|
|
5843
|
+
cellSize: ICON_LIBRARY_GRID_MIN_CELL_SIZE
|
|
5844
|
+
};
|
|
5845
|
+
}
|
|
5846
|
+
const columnCount = Math.max(
|
|
5847
|
+
1,
|
|
5848
|
+
Math.floor((availableWidth + columnGap) / (ICON_LIBRARY_GRID_MIN_CELL_SIZE + columnGap))
|
|
5849
|
+
);
|
|
5850
|
+
const cellSize = Math.floor((availableWidth - columnGap * (columnCount - 1)) / columnCount);
|
|
5851
|
+
return {
|
|
5852
|
+
columnCount,
|
|
5853
|
+
cellSize: Math.max(cellSize, 1)
|
|
5425
5854
|
};
|
|
5855
|
+
};
|
|
5856
|
+
var IconLibraryGrid = ({
|
|
5857
|
+
items: items2,
|
|
5858
|
+
selectedValue,
|
|
5859
|
+
onSelect,
|
|
5860
|
+
onClose,
|
|
5861
|
+
noResultsComponent
|
|
5862
|
+
}) => {
|
|
5863
|
+
const theme = useTheme3();
|
|
5864
|
+
const containerRef = useRef15(null);
|
|
5865
|
+
const cellRefs = useRef15(/* @__PURE__ */ new Map());
|
|
5866
|
+
const shouldRestoreFocusRef = useRef15(false);
|
|
5867
|
+
const selectedIndex = items2.findIndex((item) => item.id === selectedValue);
|
|
5868
|
+
const [focusedIndex, setFocusedIndex] = useState16(selectedIndex >= 0 ? selectedIndex : 0);
|
|
5869
|
+
const [{ columnCount, cellSize }, setGridMetrics] = useState16(() => getGridMetrics(0, 0, 0));
|
|
5870
|
+
const rowCount = Math.ceil(items2.length / columnCount);
|
|
5871
|
+
const virtualizer = useVirtualizer({
|
|
5872
|
+
count: rowCount,
|
|
5873
|
+
getScrollElement: () => containerRef.current,
|
|
5874
|
+
estimateSize: () => cellSize,
|
|
5875
|
+
overscan: GRID_OVERSCAN
|
|
5876
|
+
});
|
|
5877
|
+
const focusedItem = items2[focusedIndex];
|
|
5878
|
+
const visibleRowIndexes = virtualizer.getVirtualIndexes().join(",");
|
|
5879
|
+
useLayoutEffect3(() => {
|
|
5880
|
+
setFocusedIndex((current) => {
|
|
5881
|
+
if (items2.length === 0) {
|
|
5882
|
+
return 0;
|
|
5883
|
+
}
|
|
5884
|
+
if (selectedIndex >= 0) {
|
|
5885
|
+
return selectedIndex;
|
|
5886
|
+
}
|
|
5887
|
+
return Math.min(current, items2.length - 1);
|
|
5888
|
+
});
|
|
5889
|
+
if (selectedIndex >= 0) {
|
|
5890
|
+
virtualizer.scrollToIndex(Math.floor(selectedIndex / columnCount));
|
|
5891
|
+
}
|
|
5892
|
+
}, [columnCount, items2, selectedIndex, selectedValue]);
|
|
5893
|
+
useLayoutEffect3(() => {
|
|
5894
|
+
if (!shouldRestoreFocusRef.current || !focusedItem) {
|
|
5895
|
+
return;
|
|
5896
|
+
}
|
|
5897
|
+
const cell = cellRefs.current.get(focusedItem.id);
|
|
5898
|
+
if (!cell) {
|
|
5899
|
+
return;
|
|
5900
|
+
}
|
|
5901
|
+
cell.focus();
|
|
5902
|
+
shouldRestoreFocusRef.current = false;
|
|
5903
|
+
}, [focusedItem, visibleRowIndexes]);
|
|
5904
|
+
useLayoutEffect3(() => {
|
|
5905
|
+
const container = containerRef.current;
|
|
5906
|
+
if (!container) {
|
|
5907
|
+
return;
|
|
5908
|
+
}
|
|
5909
|
+
const measureGrid = () => {
|
|
5910
|
+
const columnGap = Number.parseFloat(theme.spacing(GRID_COLUMN_GAP));
|
|
5911
|
+
const inlinePadding = Number.parseFloat(theme.spacing(GRID_HORIZONTAL_PADDING)) * 2;
|
|
5912
|
+
setGridMetrics(getGridMetrics(container.clientWidth, columnGap, inlinePadding));
|
|
5913
|
+
};
|
|
5914
|
+
measureGrid();
|
|
5915
|
+
const resizeObserver = new ResizeObserver(measureGrid);
|
|
5916
|
+
resizeObserver.observe(container);
|
|
5917
|
+
return () => {
|
|
5918
|
+
resizeObserver.disconnect();
|
|
5919
|
+
};
|
|
5920
|
+
}, [theme, items2.length]);
|
|
5921
|
+
useLayoutEffect3(() => {
|
|
5922
|
+
virtualizer.measure();
|
|
5923
|
+
}, [cellSize, columnCount]);
|
|
5924
|
+
const isRtl = theme.direction === "rtl" || document.documentElement.dir === "rtl";
|
|
5925
|
+
const horizontalOffset = isRtl ? -1 : 1;
|
|
5926
|
+
const moveFocus = (nextIndex) => {
|
|
5927
|
+
if (nextIndex < 0 || nextIndex >= items2.length) {
|
|
5928
|
+
return;
|
|
5929
|
+
}
|
|
5930
|
+
shouldRestoreFocusRef.current = true;
|
|
5931
|
+
setFocusedIndex(nextIndex);
|
|
5932
|
+
virtualizer.scrollToIndex(Math.floor(nextIndex / columnCount));
|
|
5933
|
+
};
|
|
5934
|
+
const handleKeyDown = (event, index) => {
|
|
5935
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
5936
|
+
event.preventDefault();
|
|
5937
|
+
onSelect(items2[index].id);
|
|
5938
|
+
onClose();
|
|
5939
|
+
return;
|
|
5940
|
+
}
|
|
5941
|
+
if (event.key === "ArrowRight") {
|
|
5942
|
+
event.preventDefault();
|
|
5943
|
+
moveFocus(index + horizontalOffset);
|
|
5944
|
+
return;
|
|
5945
|
+
}
|
|
5946
|
+
if (event.key === "ArrowLeft") {
|
|
5947
|
+
event.preventDefault();
|
|
5948
|
+
moveFocus(index - horizontalOffset);
|
|
5949
|
+
return;
|
|
5950
|
+
}
|
|
5951
|
+
if (event.key === "ArrowDown") {
|
|
5952
|
+
event.preventDefault();
|
|
5953
|
+
moveFocus(index + columnCount);
|
|
5954
|
+
return;
|
|
5955
|
+
}
|
|
5956
|
+
if (event.key === "ArrowUp") {
|
|
5957
|
+
event.preventDefault();
|
|
5958
|
+
moveFocus(index - columnCount);
|
|
5959
|
+
return;
|
|
5960
|
+
}
|
|
5961
|
+
if (HOME_END_KEYS.has(event.key)) {
|
|
5962
|
+
event.preventDefault();
|
|
5963
|
+
if (event.ctrlKey) {
|
|
5964
|
+
moveFocus(event.key === "Home" ? 0 : items2.length - 1);
|
|
5965
|
+
return;
|
|
5966
|
+
}
|
|
5967
|
+
const rowStart = Math.floor(index / columnCount) * columnCount;
|
|
5968
|
+
const rowEnd = Math.min(rowStart + columnCount - 1, items2.length - 1);
|
|
5969
|
+
moveFocus(event.key === "Home" ? rowStart : rowEnd);
|
|
5970
|
+
}
|
|
5971
|
+
};
|
|
5972
|
+
return /* @__PURE__ */ React83.createElement(
|
|
5973
|
+
Box16,
|
|
5974
|
+
{
|
|
5975
|
+
ref: containerRef,
|
|
5976
|
+
sx: {
|
|
5977
|
+
width: "100%",
|
|
5978
|
+
height: "100%",
|
|
5979
|
+
minWidth: 0,
|
|
5980
|
+
overflowX: "hidden",
|
|
5981
|
+
overflowY: "auto"
|
|
5982
|
+
}
|
|
5983
|
+
},
|
|
5984
|
+
items2.length === 0 && noResultsComponent ? noResultsComponent : /* @__PURE__ */ React83.createElement(
|
|
5985
|
+
Box16,
|
|
5986
|
+
{
|
|
5987
|
+
role: "grid",
|
|
5988
|
+
"aria-label": __33("Icons", "elementor"),
|
|
5989
|
+
"aria-rowcount": rowCount,
|
|
5990
|
+
"aria-colcount": columnCount,
|
|
5991
|
+
"data-testid": "icon-library-grid",
|
|
5992
|
+
sx: {
|
|
5993
|
+
width: "100%",
|
|
5994
|
+
minWidth: 0,
|
|
5995
|
+
height: virtualizer.getTotalSize(),
|
|
5996
|
+
position: "relative"
|
|
5997
|
+
}
|
|
5998
|
+
},
|
|
5999
|
+
virtualizer.getVirtualItems().map((virtualRow) => {
|
|
6000
|
+
const startIndex = virtualRow.index * columnCount;
|
|
6001
|
+
const rowItems = items2.slice(startIndex, startIndex + columnCount);
|
|
6002
|
+
return /* @__PURE__ */ React83.createElement(
|
|
6003
|
+
Box16,
|
|
6004
|
+
{
|
|
6005
|
+
key: virtualRow.key,
|
|
6006
|
+
role: "row",
|
|
6007
|
+
"aria-rowindex": virtualRow.index + 1,
|
|
6008
|
+
sx: {
|
|
6009
|
+
position: "absolute",
|
|
6010
|
+
top: 0,
|
|
6011
|
+
left: 0,
|
|
6012
|
+
width: "100%",
|
|
6013
|
+
height: virtualRow.size,
|
|
6014
|
+
transform: `translateY(${virtualRow.start}px)`,
|
|
6015
|
+
display: "grid",
|
|
6016
|
+
gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`,
|
|
6017
|
+
gap: GRID_COLUMN_GAP,
|
|
6018
|
+
px: GRID_HORIZONTAL_PADDING,
|
|
6019
|
+
boxSizing: "border-box"
|
|
6020
|
+
}
|
|
6021
|
+
},
|
|
6022
|
+
rowItems.map((item, columnIndex) => {
|
|
6023
|
+
const index = startIndex + columnIndex;
|
|
6024
|
+
const isSelected = selectedValue === item.id;
|
|
6025
|
+
const tabIndex = focusedIndex === index ? 0 : -1;
|
|
6026
|
+
return /* @__PURE__ */ React83.createElement(
|
|
6027
|
+
Box16,
|
|
6028
|
+
{
|
|
6029
|
+
key: item.id,
|
|
6030
|
+
role: "presentation",
|
|
6031
|
+
sx: { minWidth: 0, minHeight: 0, width: "100%", height: "100%" }
|
|
6032
|
+
},
|
|
6033
|
+
/* @__PURE__ */ React83.createElement(
|
|
6034
|
+
Tooltip9,
|
|
6035
|
+
{
|
|
6036
|
+
title: item.label,
|
|
6037
|
+
placement: "top",
|
|
6038
|
+
enterDelay: ICON_LIBRARY_GRID_TOOLTIP_ENTER_DELAY,
|
|
6039
|
+
enterNextDelay: ICON_LIBRARY_GRID_TOOLTIP_ENTER_DELAY,
|
|
6040
|
+
disableInteractive: true,
|
|
6041
|
+
disableFocusListener: true
|
|
6042
|
+
},
|
|
6043
|
+
/* @__PURE__ */ React83.createElement(
|
|
6044
|
+
Box16,
|
|
6045
|
+
{
|
|
6046
|
+
component: "button",
|
|
6047
|
+
type: "button",
|
|
6048
|
+
role: "gridcell",
|
|
6049
|
+
"aria-colindex": columnIndex + 1,
|
|
6050
|
+
"aria-label": item.label,
|
|
6051
|
+
"aria-selected": isSelected,
|
|
6052
|
+
tabIndex,
|
|
6053
|
+
ref: (node) => {
|
|
6054
|
+
if (node) {
|
|
6055
|
+
cellRefs.current.set(item.id, node);
|
|
6056
|
+
} else {
|
|
6057
|
+
cellRefs.current.delete(item.id);
|
|
6058
|
+
}
|
|
6059
|
+
},
|
|
6060
|
+
onClick: () => {
|
|
6061
|
+
onSelect(item.id);
|
|
6062
|
+
onClose();
|
|
6063
|
+
},
|
|
6064
|
+
onFocus: () => setFocusedIndex(index),
|
|
6065
|
+
onKeyDown: (event) => handleKeyDown(event, index),
|
|
6066
|
+
sx: {
|
|
6067
|
+
boxSizing: "border-box",
|
|
6068
|
+
appearance: "none",
|
|
6069
|
+
m: 0,
|
|
6070
|
+
width: "100%",
|
|
6071
|
+
height: "100%",
|
|
6072
|
+
minWidth: 0,
|
|
6073
|
+
minHeight: 0,
|
|
6074
|
+
display: "flex",
|
|
6075
|
+
alignItems: "center",
|
|
6076
|
+
justifyContent: "center",
|
|
6077
|
+
border: "1px solid",
|
|
6078
|
+
borderColor: "divider",
|
|
6079
|
+
borderRadius: 1,
|
|
6080
|
+
color: "text.tertiary",
|
|
6081
|
+
bgcolor: "transparent",
|
|
6082
|
+
p: 0,
|
|
6083
|
+
cursor: "pointer",
|
|
6084
|
+
font: "inherit",
|
|
6085
|
+
lineHeight: 0,
|
|
6086
|
+
overflow: "hidden",
|
|
6087
|
+
"&:hover, &:focus": {
|
|
6088
|
+
bgcolor: "action.hover"
|
|
6089
|
+
},
|
|
6090
|
+
'&[aria-selected="true"]': {
|
|
6091
|
+
bgcolor: "action.selected"
|
|
6092
|
+
},
|
|
6093
|
+
'&[aria-selected="true"]:hover, &[aria-selected="true"]:focus': {
|
|
6094
|
+
bgcolor: "action.selected"
|
|
6095
|
+
}
|
|
6096
|
+
}
|
|
6097
|
+
},
|
|
6098
|
+
item.paths.length > 0 ? /* @__PURE__ */ React83.createElement(
|
|
6099
|
+
FontAwesomeGlyph,
|
|
6100
|
+
{
|
|
6101
|
+
icon: item,
|
|
6102
|
+
size: ICON_GLYPH_SIZE,
|
|
6103
|
+
color: "currentColor"
|
|
6104
|
+
}
|
|
6105
|
+
) : null
|
|
6106
|
+
)
|
|
6107
|
+
)
|
|
6108
|
+
);
|
|
6109
|
+
})
|
|
6110
|
+
);
|
|
6111
|
+
})
|
|
6112
|
+
)
|
|
6113
|
+
);
|
|
6114
|
+
};
|
|
6115
|
+
|
|
6116
|
+
// src/controls/icon-library/icon-library-view-toggle.tsx
|
|
6117
|
+
import * as React84 from "react";
|
|
6118
|
+
import { useId as useId5 } from "react";
|
|
6119
|
+
import { CheckIcon as CheckIcon2, ListIcon as ListIcon2, WidgetsIcon } from "@elementor/icons";
|
|
6120
|
+
import {
|
|
6121
|
+
bindMenu as bindMenu4,
|
|
6122
|
+
bindToggle as bindToggle3,
|
|
6123
|
+
Menu as Menu5,
|
|
6124
|
+
MenuItem as MenuItem3,
|
|
6125
|
+
Stack as Stack14,
|
|
6126
|
+
ToggleButton as ToggleButton3,
|
|
6127
|
+
Tooltip as Tooltip10,
|
|
6128
|
+
Typography as Typography8,
|
|
6129
|
+
usePopupState as usePopupState9
|
|
6130
|
+
} from "@elementor/ui";
|
|
6131
|
+
import { __ as __34 } from "@wordpress/i18n";
|
|
6132
|
+
var VIEW_MENU_WIDTH = 122;
|
|
6133
|
+
var IconLibraryViewToggle = ({ value, onChange }) => {
|
|
6134
|
+
const popupId = useId5();
|
|
6135
|
+
const popupState = usePopupState9({
|
|
6136
|
+
variant: "popover",
|
|
6137
|
+
popupId
|
|
6138
|
+
});
|
|
6139
|
+
const isGrid = value === "grid";
|
|
6140
|
+
const ViewIcon = isGrid ? WidgetsIcon : ListIcon2;
|
|
6141
|
+
const viewButtonLabel = isGrid ? __34("Grid view", "elementor") : __34("List view", "elementor");
|
|
6142
|
+
return /* @__PURE__ */ React84.createElement(React84.Fragment, null, /* @__PURE__ */ React84.createElement(
|
|
6143
|
+
Tooltip10,
|
|
6144
|
+
{
|
|
6145
|
+
title: viewButtonLabel,
|
|
6146
|
+
placement: "top",
|
|
6147
|
+
enterDelay: ICON_LIBRARY_ACTION_TOOLTIP_ENTER_DELAY,
|
|
6148
|
+
enterNextDelay: ICON_LIBRARY_ACTION_TOOLTIP_ENTER_DELAY,
|
|
6149
|
+
disableInteractive: true
|
|
6150
|
+
},
|
|
6151
|
+
/* @__PURE__ */ React84.createElement(
|
|
6152
|
+
ToggleButton3,
|
|
6153
|
+
{
|
|
6154
|
+
"aria-label": viewButtonLabel,
|
|
6155
|
+
value: "view",
|
|
6156
|
+
size: "tiny",
|
|
6157
|
+
selected: popupState.isOpen,
|
|
6158
|
+
sx: { flexShrink: 0 },
|
|
6159
|
+
...bindToggle3(popupState),
|
|
6160
|
+
"aria-expanded": popupState.isOpen
|
|
6161
|
+
},
|
|
6162
|
+
/* @__PURE__ */ React84.createElement(ViewIcon, { fontSize: "tiny" })
|
|
6163
|
+
)
|
|
6164
|
+
), /* @__PURE__ */ React84.createElement(
|
|
6165
|
+
Menu5,
|
|
6166
|
+
{
|
|
6167
|
+
...bindMenu4(popupState),
|
|
6168
|
+
MenuListProps: {
|
|
6169
|
+
dense: true,
|
|
6170
|
+
autoFocusItem: true,
|
|
6171
|
+
"aria-label": __34("View", "elementor")
|
|
6172
|
+
},
|
|
6173
|
+
sx: { "& .MuiPaper-root": { minWidth: VIEW_MENU_WIDTH } }
|
|
6174
|
+
},
|
|
6175
|
+
/* @__PURE__ */ React84.createElement(
|
|
6176
|
+
ViewMenuItem,
|
|
6177
|
+
{
|
|
6178
|
+
label: __34("List", "elementor"),
|
|
6179
|
+
selected: value === "list",
|
|
6180
|
+
onClick: () => {
|
|
6181
|
+
onChange("list");
|
|
6182
|
+
popupState.close();
|
|
6183
|
+
}
|
|
6184
|
+
}
|
|
6185
|
+
),
|
|
6186
|
+
/* @__PURE__ */ React84.createElement(
|
|
6187
|
+
ViewMenuItem,
|
|
6188
|
+
{
|
|
6189
|
+
label: __34("Grid", "elementor"),
|
|
6190
|
+
selected: value === "grid",
|
|
6191
|
+
onClick: () => {
|
|
6192
|
+
onChange("grid");
|
|
6193
|
+
popupState.close();
|
|
6194
|
+
}
|
|
6195
|
+
}
|
|
6196
|
+
)
|
|
6197
|
+
));
|
|
6198
|
+
};
|
|
6199
|
+
var ViewMenuItem = ({ label, selected, onClick }) => /* @__PURE__ */ React84.createElement(MenuItem3, { role: "menuitemradio", "aria-checked": selected, selected, onClick }, /* @__PURE__ */ React84.createElement(Stack14, { direction: "row", alignItems: "center", gap: 1, width: "100%" }, /* @__PURE__ */ React84.createElement(Typography8, { variant: "caption", sx: { flex: 1 } }, label), selected ? /* @__PURE__ */ React84.createElement(CheckIcon2, { fontSize: "tiny", "aria-hidden": "true" }) : null));
|
|
6200
|
+
|
|
6201
|
+
// src/controls/icon-library/use-font-awesome-7-catalog.ts
|
|
6202
|
+
import { useQuery as useQuery2 } from "@elementor/query";
|
|
6203
|
+
var FONT_AWESOME_7_CATALOG_QUERY_KEY = ["font-awesome-7-catalog"];
|
|
6204
|
+
function useFontAwesome7Catalog(enabled) {
|
|
6205
|
+
return useQuery2({
|
|
6206
|
+
queryKey: FONT_AWESOME_7_CATALOG_QUERY_KEY,
|
|
6207
|
+
queryFn: ({ signal }) => loadFontAwesome7Catalog(signal),
|
|
6208
|
+
enabled,
|
|
6209
|
+
staleTime: Infinity
|
|
6210
|
+
});
|
|
5426
6211
|
}
|
|
6212
|
+
|
|
6213
|
+
// src/controls/icon-library/icon-library-popover.tsx
|
|
6214
|
+
var ICON_LIBRARY_POPOVER_WIDTH = 300;
|
|
6215
|
+
var ICON_LIBRARY_ROW_HEIGHT = 48;
|
|
6216
|
+
var ICON_LIBRARY_SEARCH_DEBOUNCE_DELAY = 300;
|
|
6217
|
+
var ICON_LIBRARY_VIEW_STORAGE_KEY = "icon-library-view";
|
|
6218
|
+
var ICON_LIBRARY_VIEW_STORAGE_PREFIX = "editor-controls";
|
|
6219
|
+
var DEFAULT_ICON_LIBRARY_VIEW = "list";
|
|
6220
|
+
var isIconLibraryView = (value) => {
|
|
6221
|
+
return value === "grid" || value === "list";
|
|
6222
|
+
};
|
|
6223
|
+
var ICON_TILE_SIZE = 40;
|
|
6224
|
+
var ICON_GLYPH_SIZE2 = 20;
|
|
6225
|
+
var ICON_LIBRARY_INLINE_SPACING = 1;
|
|
6226
|
+
var CompactIconLibraryMenuList = styled9(StyledMenuList)(({ theme }) => ({
|
|
6227
|
+
'& > [role="option"]': {
|
|
6228
|
+
padding: theme.spacing(0.75, ICON_LIBRARY_INLINE_SPACING)
|
|
6229
|
+
}
|
|
6230
|
+
}));
|
|
6231
|
+
var IconLibraryPopover = ({
|
|
6232
|
+
open,
|
|
6233
|
+
selectedIconClass,
|
|
6234
|
+
selectedIconLibrary,
|
|
6235
|
+
onSelect,
|
|
6236
|
+
onClose,
|
|
6237
|
+
width = ICON_LIBRARY_POPOVER_WIDTH
|
|
6238
|
+
}) => {
|
|
6239
|
+
const {
|
|
6240
|
+
debouncedValue: searchValue,
|
|
6241
|
+
inputValue: searchInputValue,
|
|
6242
|
+
handleChange: handleSearchChange,
|
|
6243
|
+
setImmediateValue: setSearchValue
|
|
6244
|
+
} = useDebounceState({ delay: ICON_LIBRARY_SEARCH_DEBOUNCE_DELAY });
|
|
6245
|
+
const [activeLibraries, setActiveLibraries] = useState17([]);
|
|
6246
|
+
const [storedView, setStoredView] = useSessionStorage2(
|
|
6247
|
+
ICON_LIBRARY_VIEW_STORAGE_KEY,
|
|
6248
|
+
ICON_LIBRARY_VIEW_STORAGE_PREFIX
|
|
6249
|
+
);
|
|
6250
|
+
const view = isIconLibraryView(storedView) ? storedView : DEFAULT_ICON_LIBRARY_VIEW;
|
|
6251
|
+
const { data: icons = [], isLoading } = useFontAwesome7Catalog(open);
|
|
6252
|
+
const items2 = useMemo12(
|
|
6253
|
+
() => createIconLibraryItems(icons, searchValue, activeLibraries),
|
|
6254
|
+
[activeLibraries, icons, searchValue]
|
|
6255
|
+
);
|
|
6256
|
+
const selectedValue = useMemo12(
|
|
6257
|
+
() => findFontAwesome7Icon(icons, selectedIconClass, selectedIconLibrary)?.id,
|
|
6258
|
+
[icons, selectedIconClass, selectedIconLibrary]
|
|
6259
|
+
);
|
|
6260
|
+
const handleClose = () => {
|
|
6261
|
+
setSearchValue("");
|
|
6262
|
+
setActiveLibraries([]);
|
|
6263
|
+
onClose();
|
|
6264
|
+
};
|
|
6265
|
+
const handleSelect = (id) => {
|
|
6266
|
+
const icon = items2.find((item) => item.id === id);
|
|
6267
|
+
if (!icon) {
|
|
6268
|
+
return;
|
|
6269
|
+
}
|
|
6270
|
+
onSelect({
|
|
6271
|
+
value: createIconSelectionValue(icon.library, icon.name),
|
|
6272
|
+
library: icon.library
|
|
6273
|
+
});
|
|
6274
|
+
};
|
|
6275
|
+
const handleClearSearch = () => {
|
|
6276
|
+
setSearchValue("");
|
|
6277
|
+
};
|
|
6278
|
+
return /* @__PURE__ */ React85.createElement(PopoverBody2, { width, fillWidth: true, id: "icon-library" }, /* @__PURE__ */ React85.createElement(
|
|
6279
|
+
PopoverHeader4,
|
|
6280
|
+
{
|
|
6281
|
+
title: __35("Icon library", "elementor"),
|
|
6282
|
+
onClose: handleClose,
|
|
6283
|
+
icon: /* @__PURE__ */ React85.createElement(ComponentsIcon, { fontSize: "tiny" }),
|
|
6284
|
+
actions: [/* @__PURE__ */ React85.createElement(IconLibraryViewToggle, { key: "view", value: view, onChange: setStoredView })],
|
|
6285
|
+
sx: { pl: ICON_LIBRARY_INLINE_SPACING, pr: 0.5 }
|
|
6286
|
+
}
|
|
6287
|
+
), /* @__PURE__ */ React85.createElement(Stack15, { direction: "row", alignItems: "center", gap: 1, sx: { px: ICON_LIBRARY_INLINE_SPACING, pb: 1 } }, /* @__PURE__ */ React85.createElement(
|
|
6288
|
+
SearchField2,
|
|
6289
|
+
{
|
|
6290
|
+
value: searchInputValue,
|
|
6291
|
+
onSearch: handleSearchChange,
|
|
6292
|
+
placeholder: __35("Search", "elementor"),
|
|
6293
|
+
id: "icon-library-search",
|
|
6294
|
+
sx: { flex: 1, px: 0, pb: 0 }
|
|
6295
|
+
}
|
|
6296
|
+
), /* @__PURE__ */ React85.createElement(IconLibraryFilter, { value: activeLibraries, onChange: setActiveLibraries })), /* @__PURE__ */ React85.createElement(Divider4, null), /* @__PURE__ */ React85.createElement(Box17, { sx: { flex: 1, overflow: "hidden", minHeight: 0, minWidth: 0 } }, /* @__PURE__ */ React85.createElement(
|
|
6297
|
+
IconLibraryContent,
|
|
6298
|
+
{
|
|
6299
|
+
isLoading,
|
|
6300
|
+
items: items2,
|
|
6301
|
+
selectedValue,
|
|
6302
|
+
searchValue,
|
|
6303
|
+
isCatalogAvailable: icons.length > 0,
|
|
6304
|
+
view,
|
|
6305
|
+
onSelect: handleSelect,
|
|
6306
|
+
onClose: handleClose,
|
|
6307
|
+
onClearSearch: handleClearSearch
|
|
6308
|
+
}
|
|
6309
|
+
)));
|
|
6310
|
+
};
|
|
6311
|
+
var IconLibraryContent = ({
|
|
6312
|
+
isLoading,
|
|
6313
|
+
items: items2,
|
|
6314
|
+
selectedValue,
|
|
6315
|
+
searchValue,
|
|
6316
|
+
isCatalogAvailable,
|
|
6317
|
+
view,
|
|
6318
|
+
onSelect,
|
|
6319
|
+
onClose,
|
|
6320
|
+
onClearSearch
|
|
6321
|
+
}) => {
|
|
6322
|
+
if (isLoading) {
|
|
6323
|
+
return /* @__PURE__ */ React85.createElement(IconLibraryLoadingState, null);
|
|
6324
|
+
}
|
|
6325
|
+
const emptyState = /* @__PURE__ */ React85.createElement(
|
|
6326
|
+
IconLibraryEmptyState,
|
|
6327
|
+
{
|
|
6328
|
+
searchValue,
|
|
6329
|
+
isCatalogAvailable,
|
|
6330
|
+
onClear: onClearSearch
|
|
6331
|
+
}
|
|
6332
|
+
);
|
|
6333
|
+
if (view === "grid") {
|
|
6334
|
+
return /* @__PURE__ */ React85.createElement(Box17, { sx: { width: "100%", height: "100%", minWidth: 0, minHeight: 0 } }, /* @__PURE__ */ React85.createElement(
|
|
6335
|
+
IconLibraryGrid,
|
|
6336
|
+
{
|
|
6337
|
+
items: items2,
|
|
6338
|
+
selectedValue,
|
|
6339
|
+
onSelect,
|
|
6340
|
+
onClose,
|
|
6341
|
+
noResultsComponent: emptyState
|
|
6342
|
+
}
|
|
6343
|
+
));
|
|
6344
|
+
}
|
|
6345
|
+
return /* @__PURE__ */ React85.createElement(
|
|
6346
|
+
PopoverMenuList2,
|
|
6347
|
+
{
|
|
6348
|
+
items: items2,
|
|
6349
|
+
selectedValue,
|
|
6350
|
+
menuListTemplate: CompactIconLibraryMenuList,
|
|
6351
|
+
onSelect,
|
|
6352
|
+
onClose,
|
|
6353
|
+
itemHeight: ICON_LIBRARY_ROW_HEIGHT,
|
|
6354
|
+
menuItemContentTemplate: IconLibraryRow,
|
|
6355
|
+
noResultsComponent: emptyState,
|
|
6356
|
+
"data-testid": "icon-library-list"
|
|
6357
|
+
}
|
|
6358
|
+
);
|
|
6359
|
+
};
|
|
6360
|
+
var IconLibraryLoadingState = () => /* @__PURE__ */ React85.createElement(Stack15, { alignItems: "center", justifyContent: "center", height: "100%" }, /* @__PURE__ */ React85.createElement(CircularProgress3, { role: "progressbar", size: 24 }));
|
|
6361
|
+
var IconLibraryEmptyState = ({
|
|
6362
|
+
searchValue,
|
|
6363
|
+
isCatalogAvailable,
|
|
6364
|
+
onClear
|
|
6365
|
+
}) => {
|
|
6366
|
+
if (!isCatalogAvailable) {
|
|
6367
|
+
return /* @__PURE__ */ React85.createElement(CatalogUnavailable, null);
|
|
6368
|
+
}
|
|
6369
|
+
return /* @__PURE__ */ React85.createElement(NoResults, { searchValue, onClear });
|
|
6370
|
+
};
|
|
6371
|
+
var IconLibraryRow = (item) => {
|
|
6372
|
+
const icon = item;
|
|
6373
|
+
return /* @__PURE__ */ React85.createElement(Stack15, { direction: "row", alignItems: "center", gap: 1, sx: { width: "100%" } }, /* @__PURE__ */ React85.createElement(
|
|
6374
|
+
Box17,
|
|
6375
|
+
{
|
|
6376
|
+
sx: {
|
|
6377
|
+
width: ICON_TILE_SIZE,
|
|
6378
|
+
height: ICON_TILE_SIZE,
|
|
6379
|
+
display: "flex",
|
|
6380
|
+
alignItems: "center",
|
|
6381
|
+
justifyContent: "center",
|
|
6382
|
+
border: 1,
|
|
6383
|
+
borderColor: "divider",
|
|
6384
|
+
borderRadius: 1,
|
|
6385
|
+
color: "text.tertiary",
|
|
6386
|
+
flexShrink: 0
|
|
6387
|
+
}
|
|
6388
|
+
},
|
|
6389
|
+
icon.paths.length > 0 ? /* @__PURE__ */ React85.createElement(FontAwesomeGlyph, { icon, size: ICON_GLYPH_SIZE2, color: "currentColor" }) : null
|
|
6390
|
+
), /* @__PURE__ */ React85.createElement(Typography9, { variant: "caption", color: "text.primary", noWrap: true }, icon.label));
|
|
6391
|
+
};
|
|
6392
|
+
var CatalogUnavailable = () => /* @__PURE__ */ React85.createElement(Stack15, { alignItems: "center", justifyContent: "center", height: "100%", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React85.createElement(ComponentsIcon, { fontSize: "large" }), /* @__PURE__ */ React85.createElement(Typography9, { align: "center", variant: "subtitle2", color: "text.secondary" }, __35("Icons couldn't be loaded.", "elementor")));
|
|
6393
|
+
var NoResults = ({ searchValue, onClear }) => /* @__PURE__ */ React85.createElement(Stack15, { alignItems: "center", justifyContent: "center", height: "100%", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React85.createElement(ComponentsIcon, { fontSize: "large" }), /* @__PURE__ */ React85.createElement(Typography9, { align: "center", variant: "subtitle2", color: "text.secondary" }, __35("Sorry, nothing matched", "elementor")), searchValue ? /* @__PURE__ */ React85.createElement(React85.Fragment, null, /* @__PURE__ */ React85.createElement(Typography9, { align: "center", variant: "subtitle2", color: "text.secondary", noWrap: true, sx: { maxWidth: "80%" } }, "\u201C", searchValue, "\u201D."), /* @__PURE__ */ React85.createElement(Link3, { color: "secondary", variant: "caption", component: "button", type: "button", onClick: onClear }, __35("Clear & try again", "elementor"))) : null);
|
|
6394
|
+
var createIconLibraryItems = (icons, searchValue, libraries) => filterFontAwesome7Icons(icons, searchValue, libraries).map((icon) => ({
|
|
6395
|
+
...icon,
|
|
6396
|
+
type: "item",
|
|
6397
|
+
value: icon.id
|
|
6398
|
+
}));
|
|
6399
|
+
|
|
6400
|
+
// src/controls/open-icon-library.ts
|
|
6401
|
+
import { stringPropTypeUtil as stringPropTypeUtil14 } from "@elementor/editor-props";
|
|
5427
6402
|
function createIconPropValue(icon, library) {
|
|
5428
6403
|
return {
|
|
5429
6404
|
value: stringPropTypeUtil14.create(icon),
|
|
@@ -5431,13 +6406,170 @@ function createIconPropValue(icon, library) {
|
|
|
5431
6406
|
};
|
|
5432
6407
|
}
|
|
5433
6408
|
|
|
6409
|
+
// src/controls/svg-media-overlay.tsx
|
|
6410
|
+
import * as React86 from "react";
|
|
6411
|
+
import { LibraryIcon as LibraryIcon2, UploadIcon as UploadIcon2 } from "@elementor/icons";
|
|
6412
|
+
import { Box as Box18, Button as Button5, Stack as Stack16, styled as styled10, ThemeProvider, Typography as Typography10 } from "@elementor/ui";
|
|
6413
|
+
import { __ as __36 } from "@wordpress/i18n";
|
|
6414
|
+
var SVG_MEDIA_CONTROL_CONTAINER_TEST_ID = "svg-media-control-container";
|
|
6415
|
+
var SVG_MEDIA_ACTION_GROUP_TEST_ID = "svg-media-action-group";
|
|
6416
|
+
var MEDIA_ACTION_PADDING_Y = 0.75;
|
|
6417
|
+
var MEDIA_ACTION_PADDING_X = 2;
|
|
6418
|
+
var ICON_LIBRARY_PADDING = 0.625;
|
|
6419
|
+
var svgButtonSx = {
|
|
6420
|
+
px: MEDIA_ACTION_PADDING_X,
|
|
6421
|
+
py: MEDIA_ACTION_PADDING_Y
|
|
6422
|
+
};
|
|
6423
|
+
var MediaActionGroup = styled10(Stack16)(({ theme }) => ({
|
|
6424
|
+
display: "inline-flex",
|
|
6425
|
+
flexDirection: "row",
|
|
6426
|
+
alignItems: "stretch",
|
|
6427
|
+
border: "1px solid currentColor",
|
|
6428
|
+
borderRadius: theme.shape.borderRadius,
|
|
6429
|
+
overflow: "hidden",
|
|
6430
|
+
"& .MuiButton-root": {
|
|
6431
|
+
border: "none",
|
|
6432
|
+
borderRadius: 0,
|
|
6433
|
+
lineHeight: 1
|
|
6434
|
+
}
|
|
6435
|
+
}));
|
|
6436
|
+
var SvgMediaOverlay = ({
|
|
6437
|
+
isAdmin,
|
|
6438
|
+
showIconLibrary,
|
|
6439
|
+
buttonGroupRef,
|
|
6440
|
+
onSelectSvg,
|
|
6441
|
+
onUpload,
|
|
6442
|
+
onOpenIconLibrary,
|
|
6443
|
+
infotipTitle,
|
|
6444
|
+
infotipDescription
|
|
6445
|
+
}) => /* @__PURE__ */ React86.createElement(Stack16, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React86.createElement(MediaActionGroup, { ref: buttonGroupRef, direction: "row", "data-testid": SVG_MEDIA_ACTION_GROUP_TEST_ID }, /* @__PURE__ */ React86.createElement(
|
|
6446
|
+
Button5,
|
|
6447
|
+
{
|
|
6448
|
+
size: "tiny",
|
|
6449
|
+
color: "inherit",
|
|
6450
|
+
variant: "text",
|
|
6451
|
+
onClick: onSelectSvg,
|
|
6452
|
+
"aria-label": __36("Select", "elementor"),
|
|
6453
|
+
sx: svgButtonSx
|
|
6454
|
+
},
|
|
6455
|
+
__36("Select", "elementor")
|
|
6456
|
+
), /* @__PURE__ */ React86.createElement(
|
|
6457
|
+
Box18,
|
|
6458
|
+
{
|
|
6459
|
+
sx: {
|
|
6460
|
+
width: "1px",
|
|
6461
|
+
alignSelf: "stretch",
|
|
6462
|
+
bgcolor: "currentColor",
|
|
6463
|
+
flexShrink: 0
|
|
6464
|
+
}
|
|
6465
|
+
}
|
|
6466
|
+
), /* @__PURE__ */ React86.createElement(
|
|
6467
|
+
ConditionalControlInfotip,
|
|
6468
|
+
{
|
|
6469
|
+
title: infotipTitle,
|
|
6470
|
+
description: infotipDescription,
|
|
6471
|
+
isEnabled: !isAdmin
|
|
6472
|
+
},
|
|
6473
|
+
/* @__PURE__ */ React86.createElement(Box18, { component: "span", sx: { display: "inline-flex" } }, /* @__PURE__ */ React86.createElement(UploadControl, { isAdmin, onUpload }))
|
|
6474
|
+
)), showIconLibrary ? /* @__PURE__ */ React86.createElement(
|
|
6475
|
+
Button5,
|
|
6476
|
+
{
|
|
6477
|
+
size: "tiny",
|
|
6478
|
+
color: "inherit",
|
|
6479
|
+
variant: "text",
|
|
6480
|
+
startIcon: /* @__PURE__ */ React86.createElement(LibraryIcon2, { sx: { height: "18px", width: "16px" } }),
|
|
6481
|
+
"aria-label": __36("Icon library", "elementor"),
|
|
6482
|
+
onClick: onOpenIconLibrary,
|
|
6483
|
+
sx: {
|
|
6484
|
+
height: "28px",
|
|
6485
|
+
p: ICON_LIBRARY_PADDING,
|
|
6486
|
+
".MuiButton-icon": { ml: 0 }
|
|
6487
|
+
}
|
|
6488
|
+
},
|
|
6489
|
+
/* @__PURE__ */ React86.createElement(Typography10, null, __36("Icon library", "elementor"))
|
|
6490
|
+
) : null);
|
|
6491
|
+
var UploadControl = ({ isAdmin, onUpload }) => {
|
|
6492
|
+
if (isAdmin) {
|
|
6493
|
+
return /* @__PURE__ */ React86.createElement(UploadButton, { sx: svgButtonSx, onClick: onUpload });
|
|
6494
|
+
}
|
|
6495
|
+
return /* @__PURE__ */ React86.createElement(ThemeProvider, { colorScheme: "dark" }, /* @__PURE__ */ React86.createElement(UploadButton, { disabled: true, sx: svgButtonSx }));
|
|
6496
|
+
};
|
|
6497
|
+
var UploadButton = ({
|
|
6498
|
+
disabled = false,
|
|
6499
|
+
sx,
|
|
6500
|
+
onClick
|
|
6501
|
+
}) => /* @__PURE__ */ React86.createElement(
|
|
6502
|
+
Button5,
|
|
6503
|
+
{
|
|
6504
|
+
sx,
|
|
6505
|
+
size: "tiny",
|
|
6506
|
+
color: "inherit",
|
|
6507
|
+
variant: "text",
|
|
6508
|
+
disabled,
|
|
6509
|
+
onClick,
|
|
6510
|
+
"aria-label": __36("Upload", "elementor")
|
|
6511
|
+
},
|
|
6512
|
+
/* @__PURE__ */ React86.createElement(UploadIcon2, null)
|
|
6513
|
+
);
|
|
6514
|
+
|
|
6515
|
+
// src/controls/svg-media-preview.tsx
|
|
6516
|
+
import * as React87 from "react";
|
|
6517
|
+
import { Box as Box19, CardMedia as CardMedia2, CircularProgress as CircularProgress4 } from "@elementor/ui";
|
|
6518
|
+
import { __ as __37 } from "@wordpress/i18n";
|
|
6519
|
+
var ICON_PREVIEW_SIZE = 50;
|
|
6520
|
+
var ICON_PREVIEW_COLOR = "#000000";
|
|
6521
|
+
var SvgMediaPreview = ({ isFetching, src, iconClassName, iconLibrary }) => {
|
|
6522
|
+
const shouldLoadIconCatalog = Boolean(iconClassName && iconLibrary);
|
|
6523
|
+
const { data: icons = [], isLoading } = useFontAwesome7Catalog(shouldLoadIconCatalog);
|
|
6524
|
+
const selectedIcon = findFontAwesome7Icon(icons, iconClassName, iconLibrary);
|
|
6525
|
+
if (isFetching || shouldLoadIconCatalog && isLoading) {
|
|
6526
|
+
return /* @__PURE__ */ React87.createElement(CircularProgress4, { role: "progressbar" });
|
|
6527
|
+
}
|
|
6528
|
+
if (selectedIcon) {
|
|
6529
|
+
return /* @__PURE__ */ React87.createElement(IconPreview, { icon: selectedIcon });
|
|
6530
|
+
}
|
|
6531
|
+
if (shouldLoadIconCatalog) {
|
|
6532
|
+
return /* @__PURE__ */ React87.createElement(IconPreviewPlaceholder, null);
|
|
6533
|
+
}
|
|
6534
|
+
return /* @__PURE__ */ React87.createElement(SvgPreview, { src });
|
|
6535
|
+
};
|
|
6536
|
+
var IconPreview = ({ icon }) => /* @__PURE__ */ React87.createElement(Box19, { sx: { color: ICON_PREVIEW_COLOR } }, /* @__PURE__ */ React87.createElement(
|
|
6537
|
+
FontAwesomeGlyph,
|
|
6538
|
+
{
|
|
6539
|
+
icon,
|
|
6540
|
+
size: ICON_PREVIEW_SIZE,
|
|
6541
|
+
color: ICON_PREVIEW_COLOR,
|
|
6542
|
+
label: __37("Preview icon", "elementor")
|
|
6543
|
+
}
|
|
6544
|
+
));
|
|
6545
|
+
var IconPreviewPlaceholder = () => /* @__PURE__ */ React87.createElement(
|
|
6546
|
+
Box19,
|
|
6547
|
+
{
|
|
6548
|
+
"aria-hidden": true,
|
|
6549
|
+
sx: {
|
|
6550
|
+
width: ICON_PREVIEW_SIZE,
|
|
6551
|
+
height: ICON_PREVIEW_SIZE,
|
|
6552
|
+
color: ICON_PREVIEW_COLOR
|
|
6553
|
+
}
|
|
6554
|
+
}
|
|
6555
|
+
);
|
|
6556
|
+
var SvgPreview = ({ src }) => /* @__PURE__ */ React87.createElement(
|
|
6557
|
+
CardMedia2,
|
|
6558
|
+
{
|
|
6559
|
+
component: "img",
|
|
6560
|
+
image: src,
|
|
6561
|
+
alt: __37("Preview SVG", "elementor"),
|
|
6562
|
+
sx: { maxHeight: "140px", width: `${ICON_PREVIEW_SIZE}px`, color: ICON_PREVIEW_COLOR }
|
|
6563
|
+
}
|
|
6564
|
+
);
|
|
6565
|
+
|
|
5434
6566
|
// src/controls/svg-media-control.tsx
|
|
5435
6567
|
var TILE_SIZE = 8;
|
|
5436
6568
|
var TILE_WHITE = "transparent";
|
|
5437
6569
|
var TILE_BLACK = "#c1c1c1";
|
|
5438
|
-
var ICON_PREVIEW_FONT_SIZE = 50;
|
|
5439
6570
|
var TILES_GRADIENT_FORMULA = `linear-gradient(45deg, ${TILE_BLACK} 25%, ${TILE_WHITE} 0, ${TILE_WHITE} 75%, ${TILE_BLACK} 0, ${TILE_BLACK})`;
|
|
5440
|
-
var StyledCard =
|
|
6571
|
+
var StyledCard = styled11(Card2)`
|
|
6572
|
+
position: relative;
|
|
5441
6573
|
background-color: white;
|
|
5442
6574
|
background-image: ${TILES_GRADIENT_FORMULA}, ${TILES_GRADIENT_FORMULA};
|
|
5443
6575
|
background-size: ${TILE_SIZE}px ${TILE_SIZE}px;
|
|
@@ -5446,7 +6578,8 @@ var StyledCard = styled9(Card2)`
|
|
|
5446
6578
|
${TILE_SIZE / 2}px ${TILE_SIZE / 2}px;
|
|
5447
6579
|
border: none;
|
|
5448
6580
|
`;
|
|
5449
|
-
var
|
|
6581
|
+
var PREVIEW_ICON_COLOR = "#000000";
|
|
6582
|
+
var StyledCardMediaContainer = styled11(Stack17)`
|
|
5450
6583
|
position: relative;
|
|
5451
6584
|
height: 140px;
|
|
5452
6585
|
object-fit: contain;
|
|
@@ -5454,6 +6587,7 @@ var StyledCardMediaContainer = styled9(Stack13)`
|
|
|
5454
6587
|
justify-content: center;
|
|
5455
6588
|
align-items: center;
|
|
5456
6589
|
background-color: rgba( 255, 255, 255, 0.37 );
|
|
6590
|
+
color: ${PREVIEW_ICON_COLOR};
|
|
5457
6591
|
`;
|
|
5458
6592
|
var MODE_BROWSE = { mode: "browse" };
|
|
5459
6593
|
var MODE_UPLOAD = { mode: "upload" };
|
|
@@ -5465,7 +6599,11 @@ var SvgMediaControl = createControl(({ showIconLibrary = false }) => {
|
|
|
5465
6599
|
const { data: attachment, isFetching } = useWpMediaAttachment2(id?.value || null);
|
|
5466
6600
|
const src = attachment?.url ?? url?.value ?? null;
|
|
5467
6601
|
const { data: allowSvgUpload } = useUnfilteredFilesUpload();
|
|
5468
|
-
const [unfilteredModalOpenState, setUnfilteredModalOpenState] =
|
|
6602
|
+
const [unfilteredModalOpenState, setUnfilteredModalOpenState] = useState18(false);
|
|
6603
|
+
const iconLibraryPopoverState = usePopupState10({ variant: "popover" });
|
|
6604
|
+
const controlContainerRef = useRef16(null);
|
|
6605
|
+
const buttonGroupRef = useRef16(null);
|
|
6606
|
+
const [iconLibraryAnchor, setIconLibraryAnchor] = useState18(null);
|
|
5469
6607
|
const { isAdmin } = useCurrentUserCapabilities();
|
|
5470
6608
|
const selectedIconClass = showIconLibrary && typeof iconValue?.value?.value === "string" ? iconValue.value.value : null;
|
|
5471
6609
|
const selectedIconLibrary = showIconLibrary && typeof iconValue?.library?.value === "string" ? iconValue.library.value : null;
|
|
@@ -5483,7 +6621,7 @@ var SvgMediaControl = createControl(({ showIconLibrary = false }) => {
|
|
|
5483
6621
|
});
|
|
5484
6622
|
}
|
|
5485
6623
|
});
|
|
5486
|
-
const
|
|
6624
|
+
const handleCloseUnfilteredModal = (enabled) => {
|
|
5487
6625
|
setUnfilteredModalOpenState(false);
|
|
5488
6626
|
if (enabled) {
|
|
5489
6627
|
open(MODE_UPLOAD);
|
|
@@ -5496,127 +6634,123 @@ var SvgMediaControl = createControl(({ showIconLibrary = false }) => {
|
|
|
5496
6634
|
open(openOptions);
|
|
5497
6635
|
}
|
|
5498
6636
|
};
|
|
6637
|
+
const handleSelectSvg = () => {
|
|
6638
|
+
handleClick(MODE_BROWSE);
|
|
6639
|
+
};
|
|
6640
|
+
const handleUpload = () => {
|
|
6641
|
+
handleClick(MODE_UPLOAD);
|
|
6642
|
+
};
|
|
6643
|
+
const handleCloseIconLibrary = () => {
|
|
6644
|
+
iconLibraryPopoverState.close();
|
|
6645
|
+
setIconLibraryAnchor(null);
|
|
6646
|
+
};
|
|
5499
6647
|
const handleIconLibrarySelect = (icon) => {
|
|
5500
|
-
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
|
|
5504
|
-
|
|
5505
|
-
id: icon.value.id ? {
|
|
5506
|
-
$$type: "image-attachment-id",
|
|
5507
|
-
value: icon.value.id
|
|
5508
|
-
} : null,
|
|
5509
|
-
url: icon.value.url ? urlPropTypeUtil4.create(icon.value.url) : null
|
|
5510
|
-
});
|
|
6648
|
+
setIconValue(createIconPropValue(icon.value, icon.library));
|
|
6649
|
+
};
|
|
6650
|
+
const handleOpenIconLibrary = (event) => {
|
|
6651
|
+
const anchor = measureIconLibraryAnchor(controlContainerRef.current, buttonGroupRef.current);
|
|
6652
|
+
if (!anchor) {
|
|
5511
6653
|
return;
|
|
5512
6654
|
}
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
}
|
|
6655
|
+
setIconLibraryAnchor(anchor);
|
|
6656
|
+
iconLibraryPopoverState.open(event);
|
|
5516
6657
|
};
|
|
5517
|
-
|
|
5518
|
-
|
|
5519
|
-
|
|
5520
|
-
isEnabled: !isAdmin
|
|
5521
|
-
};
|
|
5522
|
-
return /* @__PURE__ */ React81.createElement(Stack13, { gap: 1, "aria-label": "SVG Control" }, /* @__PURE__ */ React81.createElement(EnableUnfilteredModal, { open: unfilteredModalOpenState, onClose: onCloseUnfilteredModal }), /* @__PURE__ */ React81.createElement(ControlActions, null, /* @__PURE__ */ React81.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React81.createElement(StyledCardMediaContainer, null, /* @__PURE__ */ React81.createElement(
|
|
5523
|
-
SvgMediaPreview,
|
|
5524
|
-
{
|
|
5525
|
-
isFetching,
|
|
5526
|
-
src,
|
|
5527
|
-
iconClassName: selectedIconClass,
|
|
5528
|
-
iconLibrary: selectedIconLibrary
|
|
6658
|
+
useEffect16(() => {
|
|
6659
|
+
if (!iconLibraryPopoverState.isOpen) {
|
|
6660
|
+
return;
|
|
5529
6661
|
}
|
|
5530
|
-
|
|
5531
|
-
|
|
6662
|
+
const handleResize = () => {
|
|
6663
|
+
const nextAnchor = measureIconLibraryAnchor(controlContainerRef.current, buttonGroupRef.current);
|
|
6664
|
+
if (nextAnchor) {
|
|
6665
|
+
setIconLibraryAnchor(nextAnchor);
|
|
6666
|
+
}
|
|
6667
|
+
};
|
|
6668
|
+
window.addEventListener("resize", handleResize);
|
|
6669
|
+
return () => {
|
|
6670
|
+
window.removeEventListener("resize", handleResize);
|
|
6671
|
+
};
|
|
6672
|
+
}, [iconLibraryPopoverState.isOpen]);
|
|
6673
|
+
const iconLibraryWidth = iconLibraryAnchor?.width ?? ICON_LIBRARY_POPOVER_WIDTH;
|
|
6674
|
+
return /* @__PURE__ */ React88.createElement(Stack17, { gap: 1, "aria-label": __38("SVG control", "elementor") }, /* @__PURE__ */ React88.createElement(EnableUnfilteredModal, { open: unfilteredModalOpenState, onClose: handleCloseUnfilteredModal }), showIconLibrary && iconLibraryAnchor ? /* @__PURE__ */ React88.createElement(
|
|
6675
|
+
Popover6,
|
|
5532
6676
|
{
|
|
5533
|
-
|
|
5534
|
-
|
|
5535
|
-
|
|
6677
|
+
disableScrollLock: true,
|
|
6678
|
+
open: iconLibraryPopoverState.isOpen,
|
|
6679
|
+
onClose: handleCloseIconLibrary,
|
|
6680
|
+
anchorReference: "anchorPosition",
|
|
6681
|
+
anchorPosition: { top: iconLibraryAnchor.top, left: iconLibraryAnchor.left },
|
|
6682
|
+
anchorOrigin: { vertical: "top", horizontal: "left" },
|
|
6683
|
+
transformOrigin: { vertical: "top", horizontal: "left" },
|
|
6684
|
+
marginThreshold: 0,
|
|
6685
|
+
PaperProps: {
|
|
6686
|
+
sx: {
|
|
6687
|
+
width: iconLibraryWidth,
|
|
6688
|
+
minWidth: iconLibraryWidth,
|
|
6689
|
+
maxWidth: iconLibraryWidth,
|
|
6690
|
+
m: 0
|
|
5536
6691
|
}
|
|
5537
6692
|
}
|
|
5538
6693
|
},
|
|
5539
|
-
/* @__PURE__ */
|
|
5540
|
-
|
|
5541
|
-
{
|
|
5542
|
-
|
|
5543
|
-
|
|
5544
|
-
|
|
5545
|
-
|
|
5546
|
-
|
|
5547
|
-
|
|
5548
|
-
|
|
5549
|
-
)
|
|
5550
|
-
|
|
6694
|
+
/* @__PURE__ */ React88.createElement(
|
|
6695
|
+
IconLibraryPopover,
|
|
6696
|
+
{
|
|
6697
|
+
open: iconLibraryPopoverState.isOpen,
|
|
6698
|
+
selectedIconClass,
|
|
6699
|
+
selectedIconLibrary,
|
|
6700
|
+
onSelect: handleIconLibrarySelect,
|
|
6701
|
+
onClose: handleCloseIconLibrary,
|
|
6702
|
+
width: iconLibraryWidth
|
|
6703
|
+
}
|
|
6704
|
+
)
|
|
6705
|
+
) : null, /* @__PURE__ */ React88.createElement(
|
|
6706
|
+
Box20,
|
|
6707
|
+
{
|
|
6708
|
+
ref: controlContainerRef,
|
|
6709
|
+
"data-testid": SVG_MEDIA_CONTROL_CONTAINER_TEST_ID,
|
|
6710
|
+
sx: { width: "100%" }
|
|
6711
|
+
},
|
|
6712
|
+
/* @__PURE__ */ React88.createElement(ControlActions, null, /* @__PURE__ */ React88.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React88.createElement(StyledCardMediaContainer, null, /* @__PURE__ */ React88.createElement(
|
|
6713
|
+
SvgMediaPreview,
|
|
5551
6714
|
{
|
|
5552
|
-
|
|
5553
|
-
|
|
5554
|
-
|
|
5555
|
-
|
|
5556
|
-
|
|
5557
|
-
|
|
5558
|
-
|
|
5559
|
-
"aria-label": __32("Icon library", "elementor")
|
|
5560
|
-
},
|
|
5561
|
-
__32("Icon library", "elementor")
|
|
5562
|
-
) : null, /* @__PURE__ */ React81.createElement(ConditionalControlInfotip, { ...infotipProps }, /* @__PURE__ */ React81.createElement("span", null, /* @__PURE__ */ React81.createElement(ThemeProvider, { colorScheme: isAdmin ? "light" : "dark" }, /* @__PURE__ */ React81.createElement(
|
|
5563
|
-
Button5,
|
|
6715
|
+
isFetching,
|
|
6716
|
+
src,
|
|
6717
|
+
iconClassName: selectedIconClass,
|
|
6718
|
+
iconLibrary: selectedIconLibrary
|
|
6719
|
+
}
|
|
6720
|
+
)), /* @__PURE__ */ React88.createElement(
|
|
6721
|
+
CardOverlay2,
|
|
5564
6722
|
{
|
|
5565
|
-
|
|
5566
|
-
|
|
5567
|
-
|
|
5568
|
-
|
|
5569
|
-
|
|
5570
|
-
onClick: () => isAdmin && handleClick(MODE_UPLOAD),
|
|
5571
|
-
"aria-label": "Upload SVG"
|
|
6723
|
+
sx: {
|
|
6724
|
+
"&:hover": {
|
|
6725
|
+
backgroundColor: "rgba( 0, 0, 0, 0.75 )"
|
|
6726
|
+
}
|
|
6727
|
+
}
|
|
5572
6728
|
},
|
|
5573
|
-
|
|
5574
|
-
|
|
5575
|
-
|
|
6729
|
+
/* @__PURE__ */ React88.createElement(
|
|
6730
|
+
SvgMediaOverlay,
|
|
6731
|
+
{
|
|
6732
|
+
isAdmin,
|
|
6733
|
+
showIconLibrary,
|
|
6734
|
+
buttonGroupRef,
|
|
6735
|
+
onSelectSvg: handleSelectSvg,
|
|
6736
|
+
onUpload: handleUpload,
|
|
6737
|
+
onOpenIconLibrary: handleOpenIconLibrary,
|
|
6738
|
+
infotipTitle: __38("Sorry, you can't upload that file yet.", "elementor"),
|
|
6739
|
+
infotipDescription: /* @__PURE__ */ React88.createElement(UnfilteredUploadInfotipDescription, null)
|
|
6740
|
+
}
|
|
6741
|
+
)
|
|
6742
|
+
)))
|
|
6743
|
+
));
|
|
5576
6744
|
});
|
|
5577
|
-
|
|
5578
|
-
isFetching,
|
|
5579
|
-
src,
|
|
5580
|
-
iconClassName,
|
|
5581
|
-
iconLibrary
|
|
5582
|
-
}) {
|
|
5583
|
-
useEffect16(() => {
|
|
5584
|
-
if (iconLibrary) {
|
|
5585
|
-
enqueueIconFonts(iconLibrary);
|
|
5586
|
-
}
|
|
5587
|
-
}, [iconLibrary]);
|
|
5588
|
-
if (isFetching) {
|
|
5589
|
-
return /* @__PURE__ */ React81.createElement(CircularProgress3, { role: "progressbar" });
|
|
5590
|
-
}
|
|
5591
|
-
if (iconClassName) {
|
|
5592
|
-
return /* @__PURE__ */ React81.createElement(
|
|
5593
|
-
Box15,
|
|
5594
|
-
{
|
|
5595
|
-
component: "i",
|
|
5596
|
-
className: iconClassName,
|
|
5597
|
-
"aria-label": __32("Preview icon", "elementor"),
|
|
5598
|
-
sx: { fontSize: ICON_PREVIEW_FONT_SIZE }
|
|
5599
|
-
}
|
|
5600
|
-
);
|
|
5601
|
-
}
|
|
5602
|
-
return /* @__PURE__ */ React81.createElement(
|
|
5603
|
-
CardMedia2,
|
|
5604
|
-
{
|
|
5605
|
-
component: "img",
|
|
5606
|
-
image: src,
|
|
5607
|
-
alt: __32("Preview SVG", "elementor"),
|
|
5608
|
-
sx: { maxHeight: "140px", width: `${ICON_PREVIEW_FONT_SIZE}px` }
|
|
5609
|
-
}
|
|
5610
|
-
);
|
|
5611
|
-
}
|
|
6745
|
+
var UnfilteredUploadInfotipDescription = () => /* @__PURE__ */ React88.createElement(React88.Fragment, null, __38("To upload them anyway, ask the site administrator to enable unfiltered", "elementor"), /* @__PURE__ */ React88.createElement("br", null), __38("file uploads.", "elementor"));
|
|
5612
6746
|
|
|
5613
6747
|
// src/controls/video-media-control.tsx
|
|
5614
|
-
import * as
|
|
6748
|
+
import * as React89 from "react";
|
|
5615
6749
|
import { urlPropTypeUtil as urlPropTypeUtil5, videoSrcPropTypeUtil } from "@elementor/editor-props";
|
|
5616
6750
|
import { UploadIcon as UploadIcon3 } from "@elementor/icons";
|
|
5617
|
-
import { Button as Button6, Card as Card3, CardMedia as CardMedia3, CardOverlay as CardOverlay3, CircularProgress as
|
|
6751
|
+
import { Button as Button6, Card as Card3, CardMedia as CardMedia3, CardOverlay as CardOverlay3, CircularProgress as CircularProgress5, Stack as Stack18 } from "@elementor/ui";
|
|
5618
6752
|
import { useWpMediaAttachment as useWpMediaAttachment3, useWpMediaFrame as useWpMediaFrame3 } from "@elementor/wp-media";
|
|
5619
|
-
import { __ as
|
|
6753
|
+
import { __ as __39 } from "@wordpress/i18n";
|
|
5620
6754
|
var PLACEHOLDER_IMAGE = window.elementorCommon?.config?.urls?.assets + "/shapes/play-triangle.svg";
|
|
5621
6755
|
var VideoMediaControl = createControl(() => {
|
|
5622
6756
|
const { value, setValue, propType } = useBoundProp(videoSrcPropTypeUtil);
|
|
@@ -5646,7 +6780,7 @@ var VideoMediaControl = createControl(() => {
|
|
|
5646
6780
|
});
|
|
5647
6781
|
}
|
|
5648
6782
|
});
|
|
5649
|
-
return /* @__PURE__ */
|
|
6783
|
+
return /* @__PURE__ */ React89.createElement(ControlActions, null, /* @__PURE__ */ React89.createElement(Card3, { variant: "outlined" }, /* @__PURE__ */ React89.createElement(
|
|
5650
6784
|
CardMedia3,
|
|
5651
6785
|
{
|
|
5652
6786
|
sx: {
|
|
@@ -5661,8 +6795,8 @@ var VideoMediaControl = createControl(() => {
|
|
|
5661
6795
|
alignItems: "center"
|
|
5662
6796
|
}
|
|
5663
6797
|
},
|
|
5664
|
-
/* @__PURE__ */
|
|
5665
|
-
), /* @__PURE__ */
|
|
6798
|
+
/* @__PURE__ */ React89.createElement(VideoPreview, { isFetching, videoUrl })
|
|
6799
|
+
), /* @__PURE__ */ React89.createElement(CardOverlay3, null, /* @__PURE__ */ React89.createElement(Stack18, { gap: 1 }, /* @__PURE__ */ React89.createElement(
|
|
5666
6800
|
Button6,
|
|
5667
6801
|
{
|
|
5668
6802
|
size: "tiny",
|
|
@@ -5670,18 +6804,18 @@ var VideoMediaControl = createControl(() => {
|
|
|
5670
6804
|
variant: "outlined",
|
|
5671
6805
|
onClick: () => open({ mode: "browse" })
|
|
5672
6806
|
},
|
|
5673
|
-
|
|
5674
|
-
), /* @__PURE__ */
|
|
6807
|
+
__39("Select video", "elementor")
|
|
6808
|
+
), /* @__PURE__ */ React89.createElement(
|
|
5675
6809
|
Button6,
|
|
5676
6810
|
{
|
|
5677
6811
|
size: "tiny",
|
|
5678
6812
|
variant: "text",
|
|
5679
6813
|
color: "inherit",
|
|
5680
|
-
startIcon: /* @__PURE__ */
|
|
6814
|
+
startIcon: /* @__PURE__ */ React89.createElement(UploadIcon3, null),
|
|
5681
6815
|
onClick: () => open({ mode: "upload" })
|
|
5682
6816
|
},
|
|
5683
|
-
|
|
5684
|
-
), /* @__PURE__ */
|
|
6817
|
+
__39("Upload", "elementor")
|
|
6818
|
+
), /* @__PURE__ */ React89.createElement(
|
|
5685
6819
|
Button6,
|
|
5686
6820
|
{
|
|
5687
6821
|
size: "tiny",
|
|
@@ -5689,18 +6823,18 @@ var VideoMediaControl = createControl(() => {
|
|
|
5689
6823
|
color: "inherit",
|
|
5690
6824
|
onClick: () => open({ mode: "url", currentUrl: currentUrlForModal })
|
|
5691
6825
|
},
|
|
5692
|
-
|
|
6826
|
+
__39("Insert from URL", "elementor")
|
|
5693
6827
|
)))));
|
|
5694
6828
|
});
|
|
5695
6829
|
var VideoPreview = ({ isFetching = false, videoUrl }) => {
|
|
5696
6830
|
if (isFetching) {
|
|
5697
|
-
return /* @__PURE__ */
|
|
6831
|
+
return /* @__PURE__ */ React89.createElement(CircularProgress5, null);
|
|
5698
6832
|
}
|
|
5699
6833
|
if (videoUrl) {
|
|
5700
|
-
return /* @__PURE__ */
|
|
6834
|
+
return /* @__PURE__ */ React89.createElement(
|
|
5701
6835
|
"video",
|
|
5702
6836
|
{
|
|
5703
|
-
"aria-label":
|
|
6837
|
+
"aria-label": __39("Video preview", "elementor"),
|
|
5704
6838
|
src: videoUrl,
|
|
5705
6839
|
muted: true,
|
|
5706
6840
|
preload: "metadata",
|
|
@@ -5713,33 +6847,33 @@ var VideoPreview = ({ isFetching = false, videoUrl }) => {
|
|
|
5713
6847
|
}
|
|
5714
6848
|
);
|
|
5715
6849
|
}
|
|
5716
|
-
return /* @__PURE__ */
|
|
6850
|
+
return /* @__PURE__ */ React89.createElement("img", { src: PLACEHOLDER_IMAGE, alt: "No video selected" });
|
|
5717
6851
|
};
|
|
5718
6852
|
|
|
5719
6853
|
// src/controls/background-control/background-control.tsx
|
|
5720
|
-
import * as
|
|
6854
|
+
import * as React96 from "react";
|
|
5721
6855
|
import { backgroundPropTypeUtil } from "@elementor/editor-props";
|
|
5722
6856
|
import { Grid as Grid18 } from "@elementor/ui";
|
|
5723
|
-
import { __ as
|
|
6857
|
+
import { __ as __45 } from "@wordpress/i18n";
|
|
5724
6858
|
|
|
5725
6859
|
// src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx
|
|
5726
|
-
import * as
|
|
6860
|
+
import * as React95 from "react";
|
|
5727
6861
|
import {
|
|
5728
6862
|
backgroundColorOverlayPropTypeUtil as backgroundColorOverlayPropTypeUtil2,
|
|
5729
6863
|
backgroundImageOverlayPropTypeUtil as backgroundImageOverlayPropTypeUtil2,
|
|
5730
6864
|
backgroundOverlayPropTypeUtil,
|
|
5731
6865
|
colorPropTypeUtil as colorPropTypeUtil3
|
|
5732
6866
|
} from "@elementor/editor-props";
|
|
5733
|
-
import { Box as
|
|
6867
|
+
import { Box as Box21, CardMedia as CardMedia4, styled as styled12, Tab, TabPanel, Tabs, UnstableColorIndicator as UnstableColorIndicator3 } from "@elementor/ui";
|
|
5734
6868
|
import { useWpMediaAttachment as useWpMediaAttachment4 } from "@elementor/wp-media";
|
|
5735
|
-
import { __ as
|
|
6869
|
+
import { __ as __44 } from "@wordpress/i18n";
|
|
5736
6870
|
|
|
5737
6871
|
// src/env.ts
|
|
5738
6872
|
import { parseEnv } from "@elementor/env";
|
|
5739
6873
|
var { env } = parseEnv("@elementor/editor-controls");
|
|
5740
6874
|
|
|
5741
6875
|
// src/controls/background-control/background-gradient-color-control.tsx
|
|
5742
|
-
import * as
|
|
6876
|
+
import * as React90 from "react";
|
|
5743
6877
|
import {
|
|
5744
6878
|
backgroundGradientOverlayPropTypeUtil,
|
|
5745
6879
|
colorPropTypeUtil as colorPropTypeUtil2,
|
|
@@ -5786,7 +6920,7 @@ var BackgroundGradientColorControl = createControl(() => {
|
|
|
5786
6920
|
positions: positions?.value.split(" ")
|
|
5787
6921
|
};
|
|
5788
6922
|
};
|
|
5789
|
-
return /* @__PURE__ */
|
|
6923
|
+
return /* @__PURE__ */ React90.createElement(
|
|
5790
6924
|
UnstableGradientBox,
|
|
5791
6925
|
{
|
|
5792
6926
|
sx: { width: "auto", padding: 1.5 },
|
|
@@ -5811,53 +6945,53 @@ var initialBackgroundGradientOverlay = backgroundGradientOverlayPropTypeUtil.cre
|
|
|
5811
6945
|
});
|
|
5812
6946
|
|
|
5813
6947
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx
|
|
5814
|
-
import * as
|
|
6948
|
+
import * as React91 from "react";
|
|
5815
6949
|
import { PinIcon, PinnedOffIcon } from "@elementor/icons";
|
|
5816
6950
|
import { Grid as Grid14 } from "@elementor/ui";
|
|
5817
|
-
import { __ as
|
|
6951
|
+
import { __ as __40 } from "@wordpress/i18n";
|
|
5818
6952
|
var attachmentControlOptions = [
|
|
5819
6953
|
{
|
|
5820
6954
|
value: "fixed",
|
|
5821
|
-
label:
|
|
5822
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
6955
|
+
label: __40("Fixed", "elementor"),
|
|
6956
|
+
renderContent: ({ size }) => /* @__PURE__ */ React91.createElement(PinIcon, { fontSize: size }),
|
|
5823
6957
|
showTooltip: true
|
|
5824
6958
|
},
|
|
5825
6959
|
{
|
|
5826
6960
|
value: "scroll",
|
|
5827
|
-
label:
|
|
5828
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
6961
|
+
label: __40("Scroll", "elementor"),
|
|
6962
|
+
renderContent: ({ size }) => /* @__PURE__ */ React91.createElement(PinnedOffIcon, { fontSize: size }),
|
|
5829
6963
|
showTooltip: true
|
|
5830
6964
|
}
|
|
5831
6965
|
];
|
|
5832
6966
|
var BackgroundImageOverlayAttachment = () => {
|
|
5833
|
-
return /* @__PURE__ */
|
|
6967
|
+
return /* @__PURE__ */ React91.createElement(PopoverGridContainer, null, /* @__PURE__ */ React91.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React91.createElement(ControlFormLabel, null, __40("Attachment", "elementor"))), /* @__PURE__ */ React91.createElement(Grid14, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React91.createElement(ToggleControl, { options: attachmentControlOptions })));
|
|
5834
6968
|
};
|
|
5835
6969
|
|
|
5836
6970
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
|
|
5837
|
-
import * as
|
|
5838
|
-
import { useRef as
|
|
6971
|
+
import * as React92 from "react";
|
|
6972
|
+
import { useRef as useRef17 } from "react";
|
|
5839
6973
|
import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil16 } from "@elementor/editor-props";
|
|
5840
6974
|
import { MenuListItem as MenuListItem6 } from "@elementor/editor-ui";
|
|
5841
6975
|
import { LetterXIcon, LetterYIcon } from "@elementor/icons";
|
|
5842
6976
|
import { Grid as Grid15, Select as Select4 } from "@elementor/ui";
|
|
5843
|
-
import { __ as
|
|
6977
|
+
import { __ as __41 } from "@wordpress/i18n";
|
|
5844
6978
|
var backgroundPositionOptions = [
|
|
5845
|
-
{ label:
|
|
5846
|
-
{ label:
|
|
5847
|
-
{ label:
|
|
5848
|
-
{ label:
|
|
5849
|
-
{ label:
|
|
5850
|
-
{ label:
|
|
5851
|
-
{ label:
|
|
5852
|
-
{ label:
|
|
5853
|
-
{ label:
|
|
5854
|
-
{ label:
|
|
6979
|
+
{ label: __41("Center center", "elementor"), value: "center center" },
|
|
6980
|
+
{ label: __41("Center left", "elementor"), value: "center left" },
|
|
6981
|
+
{ label: __41("Center right", "elementor"), value: "center right" },
|
|
6982
|
+
{ label: __41("Top center", "elementor"), value: "top center" },
|
|
6983
|
+
{ label: __41("Top left", "elementor"), value: "top left" },
|
|
6984
|
+
{ label: __41("Top right", "elementor"), value: "top right" },
|
|
6985
|
+
{ label: __41("Bottom center", "elementor"), value: "bottom center" },
|
|
6986
|
+
{ label: __41("Bottom left", "elementor"), value: "bottom left" },
|
|
6987
|
+
{ label: __41("Bottom right", "elementor"), value: "bottom right" },
|
|
6988
|
+
{ label: __41("Custom", "elementor"), value: "custom" }
|
|
5855
6989
|
];
|
|
5856
6990
|
var BackgroundImageOverlayPosition = () => {
|
|
5857
6991
|
const backgroundImageOffsetContext = useBoundProp(backgroundImagePositionOffsetPropTypeUtil);
|
|
5858
6992
|
const stringPropContext = useBoundProp(stringPropTypeUtil16);
|
|
5859
6993
|
const isCustom = !!backgroundImageOffsetContext.value;
|
|
5860
|
-
const rowRef =
|
|
6994
|
+
const rowRef = useRef17(null);
|
|
5861
6995
|
const handlePositionChange = (event) => {
|
|
5862
6996
|
const value = event.target.value || null;
|
|
5863
6997
|
if (value === "custom") {
|
|
@@ -5866,7 +7000,7 @@ var BackgroundImageOverlayPosition = () => {
|
|
|
5866
7000
|
stringPropContext.setValue(value);
|
|
5867
7001
|
}
|
|
5868
7002
|
};
|
|
5869
|
-
return /* @__PURE__ */
|
|
7003
|
+
return /* @__PURE__ */ React92.createElement(Grid15, { container: true, spacing: 1.5 }, /* @__PURE__ */ React92.createElement(Grid15, { item: true, xs: 12 }, /* @__PURE__ */ React92.createElement(PopoverGridContainer, null, /* @__PURE__ */ React92.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React92.createElement(ControlFormLabel, null, __41("Position", "elementor"))), /* @__PURE__ */ React92.createElement(Grid15, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React92.createElement(ControlActions, null, /* @__PURE__ */ React92.createElement(
|
|
5870
7004
|
Select4,
|
|
5871
7005
|
{
|
|
5872
7006
|
fullWidth: true,
|
|
@@ -5875,18 +7009,18 @@ var BackgroundImageOverlayPosition = () => {
|
|
|
5875
7009
|
disabled: stringPropContext.disabled,
|
|
5876
7010
|
value: (backgroundImageOffsetContext.value ? "custom" : stringPropContext.value) ?? ""
|
|
5877
7011
|
},
|
|
5878
|
-
backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */
|
|
5879
|
-
))))), isCustom ? /* @__PURE__ */
|
|
7012
|
+
backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React92.createElement(MenuListItem6, { key: value, value: value ?? "" }, label))
|
|
7013
|
+
))))), isCustom ? /* @__PURE__ */ React92.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React92.createElement(Grid15, { item: true, xs: 12 }, /* @__PURE__ */ React92.createElement(Grid15, { container: true, spacing: 1.5, ref: rowRef }, /* @__PURE__ */ React92.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React92.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React92.createElement(
|
|
5880
7014
|
SizeControl,
|
|
5881
7015
|
{
|
|
5882
|
-
startIcon: /* @__PURE__ */
|
|
7016
|
+
startIcon: /* @__PURE__ */ React92.createElement(LetterXIcon, { fontSize: "tiny" }),
|
|
5883
7017
|
anchorRef: rowRef,
|
|
5884
7018
|
min: -Number.MAX_SAFE_INTEGER
|
|
5885
7019
|
}
|
|
5886
|
-
))), /* @__PURE__ */
|
|
7020
|
+
))), /* @__PURE__ */ React92.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React92.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React92.createElement(
|
|
5887
7021
|
SizeControl,
|
|
5888
7022
|
{
|
|
5889
|
-
startIcon: /* @__PURE__ */
|
|
7023
|
+
startIcon: /* @__PURE__ */ React92.createElement(LetterYIcon, { fontSize: "tiny" }),
|
|
5890
7024
|
anchorRef: rowRef,
|
|
5891
7025
|
min: -Number.MAX_SAFE_INTEGER
|
|
5892
7026
|
}
|
|
@@ -5894,43 +7028,43 @@ var BackgroundImageOverlayPosition = () => {
|
|
|
5894
7028
|
};
|
|
5895
7029
|
|
|
5896
7030
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx
|
|
5897
|
-
import * as
|
|
7031
|
+
import * as React93 from "react";
|
|
5898
7032
|
import { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon as XIcon3 } from "@elementor/icons";
|
|
5899
7033
|
import { Grid as Grid16 } from "@elementor/ui";
|
|
5900
|
-
import { __ as
|
|
7034
|
+
import { __ as __42 } from "@wordpress/i18n";
|
|
5901
7035
|
var repeatControlOptions = [
|
|
5902
7036
|
{
|
|
5903
7037
|
value: "repeat",
|
|
5904
|
-
label:
|
|
5905
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
7038
|
+
label: __42("Repeat", "elementor"),
|
|
7039
|
+
renderContent: ({ size }) => /* @__PURE__ */ React93.createElement(GridDotsIcon, { fontSize: size }),
|
|
5906
7040
|
showTooltip: true
|
|
5907
7041
|
},
|
|
5908
7042
|
{
|
|
5909
7043
|
value: "repeat-x",
|
|
5910
|
-
label:
|
|
5911
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
7044
|
+
label: __42("Repeat-x", "elementor"),
|
|
7045
|
+
renderContent: ({ size }) => /* @__PURE__ */ React93.createElement(DotsHorizontalIcon, { fontSize: size }),
|
|
5912
7046
|
showTooltip: true
|
|
5913
7047
|
},
|
|
5914
7048
|
{
|
|
5915
7049
|
value: "repeat-y",
|
|
5916
|
-
label:
|
|
5917
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
7050
|
+
label: __42("Repeat-y", "elementor"),
|
|
7051
|
+
renderContent: ({ size }) => /* @__PURE__ */ React93.createElement(DotsVerticalIcon, { fontSize: size }),
|
|
5918
7052
|
showTooltip: true
|
|
5919
7053
|
},
|
|
5920
7054
|
{
|
|
5921
7055
|
value: "no-repeat",
|
|
5922
|
-
label:
|
|
5923
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
7056
|
+
label: __42("No-repeat", "elementor"),
|
|
7057
|
+
renderContent: ({ size }) => /* @__PURE__ */ React93.createElement(XIcon3, { fontSize: size }),
|
|
5924
7058
|
showTooltip: true
|
|
5925
7059
|
}
|
|
5926
7060
|
];
|
|
5927
7061
|
var BackgroundImageOverlayRepeat = () => {
|
|
5928
|
-
return /* @__PURE__ */
|
|
7062
|
+
return /* @__PURE__ */ React93.createElement(PopoverGridContainer, null, /* @__PURE__ */ React93.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React93.createElement(ControlFormLabel, null, __42("Repeat", "elementor"))), /* @__PURE__ */ React93.createElement(Grid16, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React93.createElement(ToggleControl, { options: repeatControlOptions })));
|
|
5929
7063
|
};
|
|
5930
7064
|
|
|
5931
7065
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
|
|
5932
|
-
import * as
|
|
5933
|
-
import { useRef as
|
|
7066
|
+
import * as React94 from "react";
|
|
7067
|
+
import { useRef as useRef18 } from "react";
|
|
5934
7068
|
import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil17 } from "@elementor/editor-props";
|
|
5935
7069
|
import {
|
|
5936
7070
|
ArrowBarBothIcon,
|
|
@@ -5941,30 +7075,30 @@ import {
|
|
|
5941
7075
|
PencilIcon
|
|
5942
7076
|
} from "@elementor/icons";
|
|
5943
7077
|
import { Grid as Grid17 } from "@elementor/ui";
|
|
5944
|
-
import { __ as
|
|
7078
|
+
import { __ as __43 } from "@wordpress/i18n";
|
|
5945
7079
|
var sizeControlOptions = [
|
|
5946
7080
|
{
|
|
5947
7081
|
value: "auto",
|
|
5948
|
-
label:
|
|
5949
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
7082
|
+
label: __43("Auto", "elementor"),
|
|
7083
|
+
renderContent: ({ size }) => /* @__PURE__ */ React94.createElement(LetterAIcon, { fontSize: size }),
|
|
5950
7084
|
showTooltip: true
|
|
5951
7085
|
},
|
|
5952
7086
|
{
|
|
5953
7087
|
value: "cover",
|
|
5954
|
-
label:
|
|
5955
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
7088
|
+
label: __43("Cover", "elementor"),
|
|
7089
|
+
renderContent: ({ size }) => /* @__PURE__ */ React94.createElement(ArrowsMaximizeIcon, { fontSize: size }),
|
|
5956
7090
|
showTooltip: true
|
|
5957
7091
|
},
|
|
5958
7092
|
{
|
|
5959
7093
|
value: "contain",
|
|
5960
|
-
label:
|
|
5961
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
7094
|
+
label: __43("Contain", "elementor"),
|
|
7095
|
+
renderContent: ({ size }) => /* @__PURE__ */ React94.createElement(ArrowBarBothIcon, { fontSize: size }),
|
|
5962
7096
|
showTooltip: true
|
|
5963
7097
|
},
|
|
5964
7098
|
{
|
|
5965
7099
|
value: "custom",
|
|
5966
|
-
label:
|
|
5967
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
7100
|
+
label: __43("Custom", "elementor"),
|
|
7101
|
+
renderContent: ({ size }) => /* @__PURE__ */ React94.createElement(PencilIcon, { fontSize: size }),
|
|
5968
7102
|
showTooltip: true
|
|
5969
7103
|
}
|
|
5970
7104
|
];
|
|
@@ -5972,7 +7106,7 @@ var BackgroundImageOverlaySize = () => {
|
|
|
5972
7106
|
const backgroundImageScaleContext = useBoundProp(backgroundImageSizeScalePropTypeUtil);
|
|
5973
7107
|
const stringPropContext = useBoundProp(stringPropTypeUtil17);
|
|
5974
7108
|
const isCustom = !!backgroundImageScaleContext.value;
|
|
5975
|
-
const rowRef =
|
|
7109
|
+
const rowRef = useRef18(null);
|
|
5976
7110
|
const handleSizeChange = (size) => {
|
|
5977
7111
|
if (size === "custom") {
|
|
5978
7112
|
backgroundImageScaleContext.setValue({ width: null, height: null });
|
|
@@ -5980,7 +7114,7 @@ var BackgroundImageOverlaySize = () => {
|
|
|
5980
7114
|
stringPropContext.setValue(size);
|
|
5981
7115
|
}
|
|
5982
7116
|
};
|
|
5983
|
-
return /* @__PURE__ */
|
|
7117
|
+
return /* @__PURE__ */ React94.createElement(Grid17, { container: true, spacing: 1.5 }, /* @__PURE__ */ React94.createElement(Grid17, { item: true, xs: 12 }, /* @__PURE__ */ React94.createElement(PopoverGridContainer, null, /* @__PURE__ */ React94.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React94.createElement(ControlFormLabel, null, __43("Size", "elementor"))), /* @__PURE__ */ React94.createElement(Grid17, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React94.createElement(
|
|
5984
7118
|
ControlToggleButtonGroup,
|
|
5985
7119
|
{
|
|
5986
7120
|
exclusive: true,
|
|
@@ -5989,17 +7123,17 @@ var BackgroundImageOverlaySize = () => {
|
|
|
5989
7123
|
disabled: stringPropContext.disabled,
|
|
5990
7124
|
value: backgroundImageScaleContext.value ? "custom" : stringPropContext.value
|
|
5991
7125
|
}
|
|
5992
|
-
)))), isCustom ? /* @__PURE__ */
|
|
7126
|
+
)))), isCustom ? /* @__PURE__ */ React94.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React94.createElement(Grid17, { item: true, xs: 12, ref: rowRef }, /* @__PURE__ */ React94.createElement(PopoverGridContainer, null, /* @__PURE__ */ React94.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React94.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React94.createElement(
|
|
5993
7127
|
SizeControl,
|
|
5994
7128
|
{
|
|
5995
|
-
startIcon: /* @__PURE__ */
|
|
7129
|
+
startIcon: /* @__PURE__ */ React94.createElement(ArrowsMoveHorizontalIcon2, { fontSize: "tiny" }),
|
|
5996
7130
|
extendedOptions: ["auto"],
|
|
5997
7131
|
anchorRef: rowRef
|
|
5998
7132
|
}
|
|
5999
|
-
))), /* @__PURE__ */
|
|
7133
|
+
))), /* @__PURE__ */ React94.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React94.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React94.createElement(
|
|
6000
7134
|
SizeControl,
|
|
6001
7135
|
{
|
|
6002
|
-
startIcon: /* @__PURE__ */
|
|
7136
|
+
startIcon: /* @__PURE__ */ React94.createElement(ArrowsMoveVerticalIcon2, { fontSize: "tiny" }),
|
|
6003
7137
|
extendedOptions: ["auto"],
|
|
6004
7138
|
anchorRef: rowRef
|
|
6005
7139
|
}
|
|
@@ -6007,7 +7141,7 @@ var BackgroundImageOverlaySize = () => {
|
|
|
6007
7141
|
};
|
|
6008
7142
|
|
|
6009
7143
|
// src/controls/background-control/background-overlay/use-background-tabs-history.ts
|
|
6010
|
-
import { useRef as
|
|
7144
|
+
import { useRef as useRef19 } from "react";
|
|
6011
7145
|
import {
|
|
6012
7146
|
backgroundColorOverlayPropTypeUtil,
|
|
6013
7147
|
backgroundGradientOverlayPropTypeUtil as backgroundGradientOverlayPropTypeUtil2,
|
|
@@ -6032,7 +7166,7 @@ var useBackgroundTabsHistory = ({
|
|
|
6032
7166
|
return "image";
|
|
6033
7167
|
};
|
|
6034
7168
|
const { getTabsProps, getTabProps, getTabPanelProps } = useTabs(getCurrentOverlayType());
|
|
6035
|
-
const valuesHistory =
|
|
7169
|
+
const valuesHistory = useRef19({
|
|
6036
7170
|
image: initialBackgroundImageOverlay,
|
|
6037
7171
|
color: initialBackgroundColorOverlay2,
|
|
6038
7172
|
gradient: initialBackgroundGradientOverlay2
|
|
@@ -6100,29 +7234,29 @@ var getInitialBackgroundOverlay = () => ({
|
|
|
6100
7234
|
}
|
|
6101
7235
|
});
|
|
6102
7236
|
var backgroundResolutionOptions = [
|
|
6103
|
-
{ label:
|
|
6104
|
-
{ label:
|
|
6105
|
-
{ label:
|
|
6106
|
-
{ label:
|
|
7237
|
+
{ label: __44("Thumbnail - 150 x 150", "elementor"), value: "thumbnail" },
|
|
7238
|
+
{ label: __44("Medium - 300 x 300", "elementor"), value: "medium" },
|
|
7239
|
+
{ label: __44("Large 1024 x 1024", "elementor"), value: "large" },
|
|
7240
|
+
{ label: __44("Full", "elementor"), value: "full" }
|
|
6107
7241
|
];
|
|
6108
7242
|
var BackgroundOverlayRepeaterControl = createControl(() => {
|
|
6109
7243
|
const { propType, value: overlayValues, setValue } = useBoundProp(backgroundOverlayPropTypeUtil);
|
|
6110
|
-
return /* @__PURE__ */
|
|
7244
|
+
return /* @__PURE__ */ React95.createElement(PropProvider, { propType, value: overlayValues, setValue }, /* @__PURE__ */ React95.createElement(
|
|
6111
7245
|
ControlRepeater,
|
|
6112
7246
|
{
|
|
6113
7247
|
initial: getInitialBackgroundOverlay(),
|
|
6114
7248
|
propTypeUtil: backgroundOverlayPropTypeUtil
|
|
6115
7249
|
},
|
|
6116
|
-
/* @__PURE__ */
|
|
6117
|
-
/* @__PURE__ */
|
|
7250
|
+
/* @__PURE__ */ React95.createElement(RepeaterHeader, { label: __44("Overlay", "elementor") }, /* @__PURE__ */ React95.createElement(TooltipAddItemAction, { newItemIndex: 0 })),
|
|
7251
|
+
/* @__PURE__ */ React95.createElement(ItemsContainer, null, /* @__PURE__ */ React95.createElement(
|
|
6118
7252
|
Item,
|
|
6119
7253
|
{
|
|
6120
7254
|
Icon: ItemIcon2,
|
|
6121
7255
|
Label: ItemLabel3,
|
|
6122
|
-
actions: /* @__PURE__ */
|
|
7256
|
+
actions: /* @__PURE__ */ React95.createElement(React95.Fragment, null, /* @__PURE__ */ React95.createElement(DuplicateItemAction, null), /* @__PURE__ */ React95.createElement(DisableItemAction, null), /* @__PURE__ */ React95.createElement(RemoveItemAction, null))
|
|
6123
7257
|
}
|
|
6124
7258
|
)),
|
|
6125
|
-
/* @__PURE__ */
|
|
7259
|
+
/* @__PURE__ */ React95.createElement(EditItemPopover, null, /* @__PURE__ */ React95.createElement(ItemContent2, null))
|
|
6126
7260
|
));
|
|
6127
7261
|
});
|
|
6128
7262
|
var ItemContent2 = () => {
|
|
@@ -6132,27 +7266,27 @@ var ItemContent2 = () => {
|
|
|
6132
7266
|
gradient: initialBackgroundGradientOverlay.value
|
|
6133
7267
|
});
|
|
6134
7268
|
const { rowRef } = useRepeaterContext();
|
|
6135
|
-
return /* @__PURE__ */
|
|
7269
|
+
return /* @__PURE__ */ React95.createElement(Box21, { sx: { width: "100%" } }, /* @__PURE__ */ React95.createElement(Box21, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React95.createElement(
|
|
6136
7270
|
Tabs,
|
|
6137
7271
|
{
|
|
6138
7272
|
size: "small",
|
|
6139
7273
|
variant: "fullWidth",
|
|
6140
7274
|
...getTabsProps(),
|
|
6141
|
-
"aria-label":
|
|
7275
|
+
"aria-label": __44("Background Overlay", "elementor")
|
|
6142
7276
|
},
|
|
6143
|
-
/* @__PURE__ */
|
|
6144
|
-
/* @__PURE__ */
|
|
6145
|
-
/* @__PURE__ */
|
|
6146
|
-
)), /* @__PURE__ */
|
|
7277
|
+
/* @__PURE__ */ React95.createElement(Tab, { label: __44("Image", "elementor"), ...getTabProps("image") }),
|
|
7278
|
+
/* @__PURE__ */ React95.createElement(Tab, { label: __44("Gradient", "elementor"), ...getTabProps("gradient") }),
|
|
7279
|
+
/* @__PURE__ */ React95.createElement(Tab, { label: __44("Color", "elementor"), ...getTabProps("color") })
|
|
7280
|
+
)), /* @__PURE__ */ React95.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React95.createElement(PopoverContent, null, /* @__PURE__ */ React95.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React95.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("gradient") }, /* @__PURE__ */ React95.createElement(BackgroundGradientColorControl, null)), /* @__PURE__ */ React95.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("color") }, /* @__PURE__ */ React95.createElement(PopoverContent, null, /* @__PURE__ */ React95.createElement(ColorOverlayContent, { anchorEl: rowRef }))));
|
|
6147
7281
|
};
|
|
6148
7282
|
var ItemIcon2 = ({ value }) => {
|
|
6149
7283
|
switch (value.$$type) {
|
|
6150
7284
|
case "background-image-overlay":
|
|
6151
|
-
return /* @__PURE__ */
|
|
7285
|
+
return /* @__PURE__ */ React95.createElement(ItemIconImage, { value });
|
|
6152
7286
|
case "background-color-overlay":
|
|
6153
|
-
return /* @__PURE__ */
|
|
7287
|
+
return /* @__PURE__ */ React95.createElement(ItemIconColor, { value });
|
|
6154
7288
|
case "background-gradient-overlay":
|
|
6155
|
-
return /* @__PURE__ */
|
|
7289
|
+
return /* @__PURE__ */ React95.createElement(ItemIconGradient, { value });
|
|
6156
7290
|
default:
|
|
6157
7291
|
return null;
|
|
6158
7292
|
}
|
|
@@ -6165,11 +7299,11 @@ var extractColorFrom = (prop) => {
|
|
|
6165
7299
|
};
|
|
6166
7300
|
var ItemIconColor = ({ value: prop }) => {
|
|
6167
7301
|
const color = extractColorFrom(prop);
|
|
6168
|
-
return /* @__PURE__ */
|
|
7302
|
+
return /* @__PURE__ */ React95.createElement(StyledUnstableColorIndicator3, { size: "inherit", component: "span", value: color });
|
|
6169
7303
|
};
|
|
6170
7304
|
var ItemIconImage = ({ value }) => {
|
|
6171
7305
|
const { imageUrl } = useImage(value);
|
|
6172
|
-
return /* @__PURE__ */
|
|
7306
|
+
return /* @__PURE__ */ React95.createElement(
|
|
6173
7307
|
CardMedia4,
|
|
6174
7308
|
{
|
|
6175
7309
|
image: imageUrl,
|
|
@@ -6184,43 +7318,43 @@ var ItemIconImage = ({ value }) => {
|
|
|
6184
7318
|
};
|
|
6185
7319
|
var ItemIconGradient = ({ value }) => {
|
|
6186
7320
|
const gradient = getGradientValue(value);
|
|
6187
|
-
return /* @__PURE__ */
|
|
7321
|
+
return /* @__PURE__ */ React95.createElement(StyledUnstableColorIndicator3, { size: "inherit", component: "span", value: gradient });
|
|
6188
7322
|
};
|
|
6189
7323
|
var ItemLabel3 = ({ value }) => {
|
|
6190
7324
|
switch (value.$$type) {
|
|
6191
7325
|
case "background-image-overlay":
|
|
6192
|
-
return /* @__PURE__ */
|
|
7326
|
+
return /* @__PURE__ */ React95.createElement(ItemLabelImage, { value });
|
|
6193
7327
|
case "background-color-overlay":
|
|
6194
|
-
return /* @__PURE__ */
|
|
7328
|
+
return /* @__PURE__ */ React95.createElement(ItemLabelColor, { value });
|
|
6195
7329
|
case "background-gradient-overlay":
|
|
6196
|
-
return /* @__PURE__ */
|
|
7330
|
+
return /* @__PURE__ */ React95.createElement(ItemLabelGradient, { value });
|
|
6197
7331
|
default:
|
|
6198
7332
|
return null;
|
|
6199
7333
|
}
|
|
6200
7334
|
};
|
|
6201
7335
|
var ItemLabelColor = ({ value: prop }) => {
|
|
6202
7336
|
const color = extractColorFrom(prop);
|
|
6203
|
-
return /* @__PURE__ */
|
|
7337
|
+
return /* @__PURE__ */ React95.createElement("span", null, color);
|
|
6204
7338
|
};
|
|
6205
7339
|
var ItemLabelImage = ({ value }) => {
|
|
6206
7340
|
const { imageTitle } = useImage(value);
|
|
6207
|
-
return /* @__PURE__ */
|
|
7341
|
+
return /* @__PURE__ */ React95.createElement("span", null, imageTitle);
|
|
6208
7342
|
};
|
|
6209
7343
|
var ItemLabelGradient = ({ value }) => {
|
|
6210
7344
|
if (value.value.type.value === "linear") {
|
|
6211
|
-
return /* @__PURE__ */
|
|
7345
|
+
return /* @__PURE__ */ React95.createElement("span", null, __44("Linear Gradient", "elementor"));
|
|
6212
7346
|
}
|
|
6213
|
-
return /* @__PURE__ */
|
|
7347
|
+
return /* @__PURE__ */ React95.createElement("span", null, __44("Radial Gradient", "elementor"));
|
|
6214
7348
|
};
|
|
6215
7349
|
var ColorOverlayContent = ({ anchorEl }) => {
|
|
6216
7350
|
const propContext = useBoundProp(backgroundColorOverlayPropTypeUtil2);
|
|
6217
|
-
return /* @__PURE__ */
|
|
7351
|
+
return /* @__PURE__ */ React95.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React95.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React95.createElement(ColorControl, { anchorEl })));
|
|
6218
7352
|
};
|
|
6219
7353
|
var ImageOverlayContent = () => {
|
|
6220
7354
|
const propContext = useBoundProp(backgroundImageOverlayPropTypeUtil2);
|
|
6221
|
-
return /* @__PURE__ */
|
|
7355
|
+
return /* @__PURE__ */ React95.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React95.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React95.createElement(ImageControl, { sizes: backgroundResolutionOptions })), /* @__PURE__ */ React95.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React95.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React95.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React95.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React95.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React95.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React95.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React95.createElement(BackgroundImageOverlayAttachment, null)));
|
|
6222
7356
|
};
|
|
6223
|
-
var StyledUnstableColorIndicator3 =
|
|
7357
|
+
var StyledUnstableColorIndicator3 = styled12(UnstableColorIndicator3)(({ theme }) => ({
|
|
6224
7358
|
height: "1rem",
|
|
6225
7359
|
width: "1rem",
|
|
6226
7360
|
borderRadius: `${theme.shape.borderRadius / 2}px`
|
|
@@ -6259,29 +7393,29 @@ var getGradientValue = (value) => {
|
|
|
6259
7393
|
|
|
6260
7394
|
// src/controls/background-control/background-control.tsx
|
|
6261
7395
|
var clipOptions = [
|
|
6262
|
-
{ label:
|
|
6263
|
-
{ label:
|
|
6264
|
-
{ label:
|
|
6265
|
-
{ label:
|
|
7396
|
+
{ label: __45("Full element", "elementor"), value: "border-box" },
|
|
7397
|
+
{ label: __45("Padding edges", "elementor"), value: "padding-box" },
|
|
7398
|
+
{ label: __45("Content edges", "elementor"), value: "content-box" },
|
|
7399
|
+
{ label: __45("Text", "elementor"), value: "text" }
|
|
6266
7400
|
];
|
|
6267
|
-
var colorLabel =
|
|
6268
|
-
var clipLabel =
|
|
7401
|
+
var colorLabel = __45("Color", "elementor");
|
|
7402
|
+
var clipLabel = __45("Clipping", "elementor");
|
|
6269
7403
|
var BackgroundControl = createControl(() => {
|
|
6270
7404
|
const propContext = useBoundProp(backgroundPropTypeUtil);
|
|
6271
|
-
return /* @__PURE__ */
|
|
7405
|
+
return /* @__PURE__ */ React96.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React96.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React96.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React96.createElement(BackgroundColorField, null), /* @__PURE__ */ React96.createElement(BackgroundClipField, null));
|
|
6272
7406
|
});
|
|
6273
7407
|
var BackgroundColorField = () => {
|
|
6274
|
-
return /* @__PURE__ */
|
|
7408
|
+
return /* @__PURE__ */ React96.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React96.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React96.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React96.createElement(ControlLabel, null, colorLabel)), /* @__PURE__ */ React96.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React96.createElement(ColorControl, null))));
|
|
6275
7409
|
};
|
|
6276
7410
|
var BackgroundClipField = () => {
|
|
6277
|
-
return /* @__PURE__ */
|
|
7411
|
+
return /* @__PURE__ */ React96.createElement(PropKeyProvider, { bind: "clip" }, /* @__PURE__ */ React96.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React96.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React96.createElement(ControlLabel, null, clipLabel)), /* @__PURE__ */ React96.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React96.createElement(SelectControl, { options: clipOptions }))));
|
|
6278
7412
|
};
|
|
6279
7413
|
|
|
6280
7414
|
// src/controls/repeatable-control.tsx
|
|
6281
|
-
import * as
|
|
6282
|
-
import { useMemo as
|
|
7415
|
+
import * as React97 from "react";
|
|
7416
|
+
import { useMemo as useMemo13 } from "react";
|
|
6283
7417
|
import { createArrayPropUtils as createArrayPropUtils2 } from "@elementor/editor-props";
|
|
6284
|
-
import { Box as
|
|
7418
|
+
import { Box as Box22 } from "@elementor/ui";
|
|
6285
7419
|
var PLACEHOLDER_REGEX = /\$\{([^}]+)\}/g;
|
|
6286
7420
|
var RepeatableControl = createControl(
|
|
6287
7421
|
({
|
|
@@ -6300,11 +7434,11 @@ var RepeatableControl = createControl(
|
|
|
6300
7434
|
if (!childPropTypeUtil) {
|
|
6301
7435
|
return null;
|
|
6302
7436
|
}
|
|
6303
|
-
const childArrayPropTypeUtil2 =
|
|
7437
|
+
const childArrayPropTypeUtil2 = useMemo13(
|
|
6304
7438
|
() => createArrayPropUtils2(childPropTypeUtil.key, childPropTypeUtil.schema, propKey),
|
|
6305
7439
|
[childPropTypeUtil.key, childPropTypeUtil.schema, propKey]
|
|
6306
7440
|
);
|
|
6307
|
-
const contextValue =
|
|
7441
|
+
const contextValue = useMemo13(
|
|
6308
7442
|
() => ({
|
|
6309
7443
|
...childControlConfig,
|
|
6310
7444
|
placeholder: placeholder || "",
|
|
@@ -6314,14 +7448,14 @@ var RepeatableControl = createControl(
|
|
|
6314
7448
|
);
|
|
6315
7449
|
const { propType, value, setValue } = useBoundProp(childArrayPropTypeUtil2);
|
|
6316
7450
|
const newItemIndex = addItemTooltipProps?.newItemIndex === null ? void 0 : 0;
|
|
6317
|
-
return /* @__PURE__ */
|
|
7451
|
+
return /* @__PURE__ */ React97.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React97.createElement(RepeatableControlContext.Provider, { value: contextValue }, /* @__PURE__ */ React97.createElement(
|
|
6318
7452
|
ControlRepeater,
|
|
6319
7453
|
{
|
|
6320
7454
|
initial: childPropTypeUtil.create(initialValues || null),
|
|
6321
7455
|
propTypeUtil: childArrayPropTypeUtil2,
|
|
6322
7456
|
isItemDisabled: isItemDisabled2
|
|
6323
7457
|
},
|
|
6324
|
-
/* @__PURE__ */
|
|
7458
|
+
/* @__PURE__ */ React97.createElement(RepeaterHeader, { label: repeaterLabel }, /* @__PURE__ */ React97.createElement(
|
|
6325
7459
|
TooltipAddItemAction,
|
|
6326
7460
|
{
|
|
6327
7461
|
...addItemTooltipProps,
|
|
@@ -6329,22 +7463,22 @@ var RepeatableControl = createControl(
|
|
|
6329
7463
|
ariaLabel: repeaterLabel
|
|
6330
7464
|
}
|
|
6331
7465
|
)),
|
|
6332
|
-
/* @__PURE__ */
|
|
7466
|
+
/* @__PURE__ */ React97.createElement(ItemsContainer, { isSortable }, /* @__PURE__ */ React97.createElement(
|
|
6333
7467
|
Item,
|
|
6334
7468
|
{
|
|
6335
7469
|
Icon: ItemIcon3,
|
|
6336
7470
|
Label: ItemLabel4,
|
|
6337
|
-
actions: /* @__PURE__ */
|
|
7471
|
+
actions: /* @__PURE__ */ React97.createElement(React97.Fragment, null, showDuplicate && /* @__PURE__ */ React97.createElement(DuplicateItemAction, null), showToggle && /* @__PURE__ */ React97.createElement(DisableItemAction, null), /* @__PURE__ */ React97.createElement(RemoveItemAction, null))
|
|
6338
7472
|
}
|
|
6339
7473
|
)),
|
|
6340
|
-
/* @__PURE__ */
|
|
7474
|
+
/* @__PURE__ */ React97.createElement(EditItemPopover, null, /* @__PURE__ */ React97.createElement(Content2, null))
|
|
6341
7475
|
)));
|
|
6342
7476
|
}
|
|
6343
7477
|
);
|
|
6344
|
-
var ItemIcon3 = () => /* @__PURE__ */
|
|
7478
|
+
var ItemIcon3 = () => /* @__PURE__ */ React97.createElement(React97.Fragment, null);
|
|
6345
7479
|
var Content2 = () => {
|
|
6346
7480
|
const { component: ChildControl, props = {} } = useRepeatableControlContext();
|
|
6347
|
-
return /* @__PURE__ */
|
|
7481
|
+
return /* @__PURE__ */ React97.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React97.createElement(PopoverGridContainer, null, /* @__PURE__ */ React97.createElement(ChildControl, { ...props })));
|
|
6348
7482
|
};
|
|
6349
7483
|
var interpolate = (template, data) => {
|
|
6350
7484
|
if (!data) {
|
|
@@ -6427,7 +7561,7 @@ var ItemLabel4 = ({ value }) => {
|
|
|
6427
7561
|
const label = showPlaceholder ? placeholder : interpolate(patternLabel, value);
|
|
6428
7562
|
const isReadOnly = !!childProps?.readOnly;
|
|
6429
7563
|
const color = getTextColor(isReadOnly, showPlaceholder);
|
|
6430
|
-
return /* @__PURE__ */
|
|
7564
|
+
return /* @__PURE__ */ React97.createElement(Box22, { component: "span", color }, label);
|
|
6431
7565
|
};
|
|
6432
7566
|
var getAllProperties = (pattern) => {
|
|
6433
7567
|
const properties = pattern.match(PLACEHOLDER_REGEX)?.map((match) => match.slice(2, -1)) || [];
|
|
@@ -6435,15 +7569,15 @@ var getAllProperties = (pattern) => {
|
|
|
6435
7569
|
};
|
|
6436
7570
|
|
|
6437
7571
|
// src/controls/key-value-control.tsx
|
|
6438
|
-
import * as
|
|
6439
|
-
import { useMemo as
|
|
7572
|
+
import * as React98 from "react";
|
|
7573
|
+
import { useMemo as useMemo14, useState as useState19 } from "react";
|
|
6440
7574
|
import {
|
|
6441
7575
|
isTransformable,
|
|
6442
7576
|
keyValuePropTypeUtil,
|
|
6443
7577
|
stringPropTypeUtil as stringPropTypeUtil18
|
|
6444
7578
|
} from "@elementor/editor-props";
|
|
6445
7579
|
import { FormHelperText, FormLabel as FormLabel3, Grid as Grid19 } from "@elementor/ui";
|
|
6446
|
-
import { __ as
|
|
7580
|
+
import { __ as __46 } from "@wordpress/i18n";
|
|
6447
7581
|
|
|
6448
7582
|
// src/utils/escape-html-attr.ts
|
|
6449
7583
|
var escapeHtmlAttr = (value) => {
|
|
@@ -6467,23 +7601,23 @@ var getInitialFieldValue = (fieldValue) => {
|
|
|
6467
7601
|
};
|
|
6468
7602
|
var KeyValueControl = createControl((props = {}) => {
|
|
6469
7603
|
const { value, setValue, ...propContext } = useBoundProp(keyValuePropTypeUtil);
|
|
6470
|
-
const [keyError, setKeyError] =
|
|
6471
|
-
const [valueError, setValueError] =
|
|
6472
|
-
const [sessionState, setSessionState] =
|
|
7604
|
+
const [keyError, setKeyError] = useState19("");
|
|
7605
|
+
const [valueError, setValueError] = useState19("");
|
|
7606
|
+
const [sessionState, setSessionState] = useState19({
|
|
6473
7607
|
key: getInitialFieldValue(value?.key),
|
|
6474
7608
|
value: getInitialFieldValue(value?.value)
|
|
6475
7609
|
});
|
|
6476
|
-
const keyLabel = props.keyName ||
|
|
6477
|
-
const valueLabel = props.valueName ||
|
|
7610
|
+
const keyLabel = props.keyName || __46("Key", "elementor");
|
|
7611
|
+
const valueLabel = props.valueName || __46("Value", "elementor");
|
|
6478
7612
|
const { keyHelper, valueHelper } = props.getHelperText?.(sessionState.key, sessionState.value) || {
|
|
6479
7613
|
keyHelper: void 0,
|
|
6480
7614
|
valueHelper: void 0
|
|
6481
7615
|
};
|
|
6482
|
-
const [keyRegex, valueRegex, errMsg] =
|
|
7616
|
+
const [keyRegex, valueRegex, errMsg] = useMemo14(
|
|
6483
7617
|
() => [
|
|
6484
7618
|
props.regexKey ? new RegExp(props.regexKey) : void 0,
|
|
6485
7619
|
props.regexValue ? new RegExp(props.regexValue) : void 0,
|
|
6486
|
-
props.validationErrorMessage ||
|
|
7620
|
+
props.validationErrorMessage || __46("Invalid Format", "elementor")
|
|
6487
7621
|
],
|
|
6488
7622
|
[props.regexKey, props.regexValue, props.validationErrorMessage]
|
|
6489
7623
|
);
|
|
@@ -6532,14 +7666,14 @@ var KeyValueControl = createControl((props = {}) => {
|
|
|
6532
7666
|
});
|
|
6533
7667
|
}
|
|
6534
7668
|
};
|
|
6535
|
-
return /* @__PURE__ */
|
|
7669
|
+
return /* @__PURE__ */ React98.createElement(PropProvider, { ...propContext, value, setValue: handleChange }, /* @__PURE__ */ React98.createElement(Grid19, { container: true, gap: 1.5 }, /* @__PURE__ */ React98.createElement(Grid19, { item: true, xs: 12, display: "flex", flexDirection: "column" }, /* @__PURE__ */ React98.createElement(FormLabel3, { size: "tiny", sx: { pb: 1 } }, keyLabel), /* @__PURE__ */ React98.createElement(PropKeyProvider, { bind: "key" }, /* @__PURE__ */ React98.createElement(
|
|
6536
7670
|
TextControl,
|
|
6537
7671
|
{
|
|
6538
7672
|
inputValue: props.escapeHtml ? escapeHtmlAttr(sessionState.key) : sessionState.key,
|
|
6539
7673
|
error: !!keyError,
|
|
6540
7674
|
helperText: keyHelper
|
|
6541
7675
|
}
|
|
6542
|
-
)), !!keyError && /* @__PURE__ */
|
|
7676
|
+
)), !!keyError && /* @__PURE__ */ React98.createElement(FormHelperText, { error: true }, keyError)), /* @__PURE__ */ React98.createElement(Grid19, { item: true, xs: 12, display: "flex", flexDirection: "column" }, /* @__PURE__ */ React98.createElement(FormLabel3, { size: "tiny", sx: { pb: 1 } }, valueLabel), /* @__PURE__ */ React98.createElement(PropKeyProvider, { bind: "value" }, /* @__PURE__ */ React98.createElement(
|
|
6543
7677
|
TextControl,
|
|
6544
7678
|
{
|
|
6545
7679
|
inputValue: props.escapeHtml ? escapeHtmlAttr(sessionState.value) : sessionState.value,
|
|
@@ -6547,27 +7681,27 @@ var KeyValueControl = createControl((props = {}) => {
|
|
|
6547
7681
|
inputDisabled: !!keyError,
|
|
6548
7682
|
helperText: valueHelper
|
|
6549
7683
|
}
|
|
6550
|
-
)), !!valueError && /* @__PURE__ */
|
|
7684
|
+
)), !!valueError && /* @__PURE__ */ React98.createElement(FormHelperText, { error: true }, valueError))));
|
|
6551
7685
|
});
|
|
6552
7686
|
|
|
6553
7687
|
// src/controls/position-control.tsx
|
|
6554
|
-
import * as
|
|
7688
|
+
import * as React99 from "react";
|
|
6555
7689
|
import { positionPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil19 } from "@elementor/editor-props";
|
|
6556
7690
|
import { MenuListItem as MenuListItem7 } from "@elementor/editor-ui";
|
|
6557
7691
|
import { LetterXIcon as LetterXIcon2, LetterYIcon as LetterYIcon2 } from "@elementor/icons";
|
|
6558
7692
|
import { Grid as Grid20, Select as Select5 } from "@elementor/ui";
|
|
6559
|
-
import { __ as
|
|
7693
|
+
import { __ as __47 } from "@wordpress/i18n";
|
|
6560
7694
|
var positionOptions = [
|
|
6561
|
-
{ label:
|
|
6562
|
-
{ label:
|
|
6563
|
-
{ label:
|
|
6564
|
-
{ label:
|
|
6565
|
-
{ label:
|
|
6566
|
-
{ label:
|
|
6567
|
-
{ label:
|
|
6568
|
-
{ label:
|
|
6569
|
-
{ label:
|
|
6570
|
-
{ label:
|
|
7695
|
+
{ label: __47("Center center", "elementor"), value: "center center" },
|
|
7696
|
+
{ label: __47("Center left", "elementor"), value: "center left" },
|
|
7697
|
+
{ label: __47("Center right", "elementor"), value: "center right" },
|
|
7698
|
+
{ label: __47("Top center", "elementor"), value: "top center" },
|
|
7699
|
+
{ label: __47("Top left", "elementor"), value: "top left" },
|
|
7700
|
+
{ label: __47("Top right", "elementor"), value: "top right" },
|
|
7701
|
+
{ label: __47("Bottom center", "elementor"), value: "bottom center" },
|
|
7702
|
+
{ label: __47("Bottom left", "elementor"), value: "bottom left" },
|
|
7703
|
+
{ label: __47("Bottom right", "elementor"), value: "bottom right" },
|
|
7704
|
+
{ label: __47("Custom", "elementor"), value: "custom" }
|
|
6571
7705
|
];
|
|
6572
7706
|
var PositionControl = () => {
|
|
6573
7707
|
const positionContext = useBoundProp(positionPropTypeUtil);
|
|
@@ -6582,7 +7716,7 @@ var PositionControl = () => {
|
|
|
6582
7716
|
stringPropContext.setValue(value);
|
|
6583
7717
|
}
|
|
6584
7718
|
};
|
|
6585
|
-
return /* @__PURE__ */
|
|
7719
|
+
return /* @__PURE__ */ React99.createElement(Grid20, { container: true, spacing: 1.5 }, /* @__PURE__ */ React99.createElement(Grid20, { item: true, xs: 12 }, /* @__PURE__ */ React99.createElement(Grid20, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React99.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React99.createElement(ControlFormLabel, null, __47("Object position", "elementor"))), /* @__PURE__ */ React99.createElement(Grid20, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React99.createElement(
|
|
6586
7720
|
Select5,
|
|
6587
7721
|
{
|
|
6588
7722
|
size: "tiny",
|
|
@@ -6593,29 +7727,29 @@ var PositionControl = () => {
|
|
|
6593
7727
|
renderValue: (selectedValue) => getSelectRenderValue(positionOptions, placeholder, selectedValue),
|
|
6594
7728
|
fullWidth: true
|
|
6595
7729
|
},
|
|
6596
|
-
positionOptions.map(({ label, value }) => /* @__PURE__ */
|
|
6597
|
-
)))), isCustom && /* @__PURE__ */
|
|
7730
|
+
positionOptions.map(({ label, value }) => /* @__PURE__ */ React99.createElement(MenuListItem7, { key: value, value: value ?? "" }, label))
|
|
7731
|
+
)))), isCustom && /* @__PURE__ */ React99.createElement(PropProvider, { ...positionContext }, /* @__PURE__ */ React99.createElement(Grid20, { item: true, xs: 12 }, /* @__PURE__ */ React99.createElement(Grid20, { container: true, spacing: 1.5 }, /* @__PURE__ */ React99.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React99.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React99.createElement(
|
|
6598
7732
|
SizeControl,
|
|
6599
7733
|
{
|
|
6600
|
-
startIcon: /* @__PURE__ */
|
|
7734
|
+
startIcon: /* @__PURE__ */ React99.createElement(LetterXIcon2, { fontSize: "tiny" }),
|
|
6601
7735
|
min: -Number.MAX_SAFE_INTEGER
|
|
6602
7736
|
}
|
|
6603
|
-
))), /* @__PURE__ */
|
|
7737
|
+
))), /* @__PURE__ */ React99.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React99.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React99.createElement(
|
|
6604
7738
|
SizeControl,
|
|
6605
7739
|
{
|
|
6606
|
-
startIcon: /* @__PURE__ */
|
|
7740
|
+
startIcon: /* @__PURE__ */ React99.createElement(LetterYIcon2, { fontSize: "tiny" }),
|
|
6607
7741
|
min: -Number.MAX_SAFE_INTEGER
|
|
6608
7742
|
}
|
|
6609
7743
|
)))))));
|
|
6610
7744
|
};
|
|
6611
7745
|
|
|
6612
7746
|
// src/controls/transform-control/transform-repeater-control.tsx
|
|
6613
|
-
import * as
|
|
6614
|
-
import { useRef as
|
|
7747
|
+
import * as React112 from "react";
|
|
7748
|
+
import { useRef as useRef27 } from "react";
|
|
6615
7749
|
import { transformFunctionsPropTypeUtil, transformPropTypeUtil } from "@elementor/editor-props";
|
|
6616
7750
|
import { AdjustmentsIcon as AdjustmentsIcon2, InfoCircleFilledIcon as InfoCircleFilledIcon2 } from "@elementor/icons";
|
|
6617
|
-
import { bindTrigger as bindTrigger5, Box as
|
|
6618
|
-
import { __ as
|
|
7751
|
+
import { bindTrigger as bindTrigger5, Box as Box26, IconButton as IconButton8, Tooltip as Tooltip11, Typography as Typography11, usePopupState as usePopupState11 } from "@elementor/ui";
|
|
7752
|
+
import { __ as __57 } from "@wordpress/i18n";
|
|
6619
7753
|
|
|
6620
7754
|
// src/controls/transform-control/initial-values.ts
|
|
6621
7755
|
import {
|
|
@@ -6669,24 +7803,24 @@ var initialSkewValue = skewTransformPropTypeUtil.create({
|
|
|
6669
7803
|
});
|
|
6670
7804
|
|
|
6671
7805
|
// src/controls/transform-control/transform-content.tsx
|
|
6672
|
-
import * as
|
|
6673
|
-
import { Box as
|
|
6674
|
-
import { __ as
|
|
7806
|
+
import * as React106 from "react";
|
|
7807
|
+
import { Box as Box23, Tab as Tab2, TabPanel as TabPanel2, Tabs as Tabs2 } from "@elementor/ui";
|
|
7808
|
+
import { __ as __52 } from "@wordpress/i18n";
|
|
6675
7809
|
|
|
6676
7810
|
// src/controls/transform-control/functions/move.tsx
|
|
6677
|
-
import * as
|
|
6678
|
-
import { useRef as
|
|
7811
|
+
import * as React101 from "react";
|
|
7812
|
+
import { useRef as useRef20 } from "react";
|
|
6679
7813
|
import { moveTransformPropTypeUtil } from "@elementor/editor-props";
|
|
6680
7814
|
import { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from "@elementor/icons";
|
|
6681
7815
|
import { Grid as Grid22 } from "@elementor/ui";
|
|
6682
|
-
import { __ as
|
|
7816
|
+
import { __ as __48 } from "@wordpress/i18n";
|
|
6683
7817
|
|
|
6684
7818
|
// src/controls/transform-control/functions/axis-row.tsx
|
|
6685
|
-
import * as
|
|
7819
|
+
import * as React100 from "react";
|
|
6686
7820
|
import { Grid as Grid21 } from "@elementor/ui";
|
|
6687
7821
|
var AxisRow = ({ label, bind, startIcon, anchorRef, units: units2, variant = "angle" }) => {
|
|
6688
7822
|
const safeId = label.replace(/\s+/g, "-").toLowerCase();
|
|
6689
|
-
return /* @__PURE__ */
|
|
7823
|
+
return /* @__PURE__ */ React100.createElement(Grid21, { item: true, xs: 12 }, /* @__PURE__ */ React100.createElement(PopoverGridContainer, { ref: anchorRef }, /* @__PURE__ */ React100.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React100.createElement(ControlLabel, { htmlFor: safeId }, label)), /* @__PURE__ */ React100.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React100.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React100.createElement(
|
|
6690
7824
|
SizeControl,
|
|
6691
7825
|
{
|
|
6692
7826
|
anchorRef,
|
|
@@ -6702,28 +7836,28 @@ var AxisRow = ({ label, bind, startIcon, anchorRef, units: units2, variant = "an
|
|
|
6702
7836
|
// src/controls/transform-control/functions/move.tsx
|
|
6703
7837
|
var moveAxisControls = [
|
|
6704
7838
|
{
|
|
6705
|
-
label:
|
|
7839
|
+
label: __48("Move X", "elementor"),
|
|
6706
7840
|
bind: "x",
|
|
6707
|
-
startIcon: /* @__PURE__ */
|
|
7841
|
+
startIcon: /* @__PURE__ */ React101.createElement(ArrowRightIcon, { fontSize: "tiny" }),
|
|
6708
7842
|
units: ["px", "%", "em", "rem", "vw"]
|
|
6709
7843
|
},
|
|
6710
7844
|
{
|
|
6711
|
-
label:
|
|
7845
|
+
label: __48("Move Y", "elementor"),
|
|
6712
7846
|
bind: "y",
|
|
6713
|
-
startIcon: /* @__PURE__ */
|
|
7847
|
+
startIcon: /* @__PURE__ */ React101.createElement(ArrowDownSmallIcon, { fontSize: "tiny" }),
|
|
6714
7848
|
units: ["px", "%", "em", "rem", "vh"]
|
|
6715
7849
|
},
|
|
6716
7850
|
{
|
|
6717
|
-
label:
|
|
7851
|
+
label: __48("Move Z", "elementor"),
|
|
6718
7852
|
bind: "z",
|
|
6719
|
-
startIcon: /* @__PURE__ */
|
|
7853
|
+
startIcon: /* @__PURE__ */ React101.createElement(ArrowDownLeftIcon, { fontSize: "tiny" }),
|
|
6720
7854
|
units: ["px", "%", "em", "rem", "vw", "vh"]
|
|
6721
7855
|
}
|
|
6722
7856
|
];
|
|
6723
7857
|
var Move = () => {
|
|
6724
7858
|
const context = useBoundProp(moveTransformPropTypeUtil);
|
|
6725
|
-
const rowRefs = [
|
|
6726
|
-
return /* @__PURE__ */
|
|
7859
|
+
const rowRefs = [useRef20(null), useRef20(null), useRef20(null)];
|
|
7860
|
+
return /* @__PURE__ */ React101.createElement(Grid22, { container: true, spacing: 1.5 }, /* @__PURE__ */ React101.createElement(PropProvider, { ...context }, /* @__PURE__ */ React101.createElement(PropKeyProvider, { bind: TransformFunctionKeys.move }, moveAxisControls.map((control, index) => /* @__PURE__ */ React101.createElement(
|
|
6727
7861
|
AxisRow,
|
|
6728
7862
|
{
|
|
6729
7863
|
key: control.bind,
|
|
@@ -6736,34 +7870,34 @@ var Move = () => {
|
|
|
6736
7870
|
};
|
|
6737
7871
|
|
|
6738
7872
|
// src/controls/transform-control/functions/rotate.tsx
|
|
6739
|
-
import * as
|
|
6740
|
-
import { useRef as
|
|
7873
|
+
import * as React102 from "react";
|
|
7874
|
+
import { useRef as useRef21 } from "react";
|
|
6741
7875
|
import { rotateTransformPropTypeUtil as rotateTransformPropTypeUtil2 } from "@elementor/editor-props";
|
|
6742
7876
|
import { Arrow360Icon, RotateClockwiseIcon } from "@elementor/icons";
|
|
6743
7877
|
import { Grid as Grid23 } from "@elementor/ui";
|
|
6744
|
-
import { __ as
|
|
7878
|
+
import { __ as __49 } from "@wordpress/i18n";
|
|
6745
7879
|
var rotateAxisControls = [
|
|
6746
7880
|
{
|
|
6747
|
-
label:
|
|
7881
|
+
label: __49("Rotate X", "elementor"),
|
|
6748
7882
|
bind: "x",
|
|
6749
|
-
startIcon: /* @__PURE__ */
|
|
7883
|
+
startIcon: /* @__PURE__ */ React102.createElement(Arrow360Icon, { fontSize: "tiny" })
|
|
6750
7884
|
},
|
|
6751
7885
|
{
|
|
6752
|
-
label:
|
|
7886
|
+
label: __49("Rotate Y", "elementor"),
|
|
6753
7887
|
bind: "y",
|
|
6754
|
-
startIcon: /* @__PURE__ */
|
|
7888
|
+
startIcon: /* @__PURE__ */ React102.createElement(Arrow360Icon, { fontSize: "tiny", style: { transform: "scaleX(-1) rotate(-90deg)" } })
|
|
6755
7889
|
},
|
|
6756
7890
|
{
|
|
6757
|
-
label:
|
|
7891
|
+
label: __49("Rotate Z", "elementor"),
|
|
6758
7892
|
bind: "z",
|
|
6759
|
-
startIcon: /* @__PURE__ */
|
|
7893
|
+
startIcon: /* @__PURE__ */ React102.createElement(RotateClockwiseIcon, { fontSize: "tiny" })
|
|
6760
7894
|
}
|
|
6761
7895
|
];
|
|
6762
7896
|
var rotateUnits = ["deg", "rad", "grad", "turn"];
|
|
6763
7897
|
var Rotate = () => {
|
|
6764
7898
|
const context = useBoundProp(rotateTransformPropTypeUtil2);
|
|
6765
|
-
const rowRefs = [
|
|
6766
|
-
return /* @__PURE__ */
|
|
7899
|
+
const rowRefs = [useRef21(null), useRef21(null), useRef21(null)];
|
|
7900
|
+
return /* @__PURE__ */ React102.createElement(Grid23, { container: true, spacing: 1.5 }, /* @__PURE__ */ React102.createElement(PropProvider, { ...context }, /* @__PURE__ */ React102.createElement(PropKeyProvider, { bind: TransformFunctionKeys.rotate }, rotateAxisControls.map((control, index) => /* @__PURE__ */ React102.createElement(
|
|
6767
7901
|
AxisRow,
|
|
6768
7902
|
{
|
|
6769
7903
|
key: control.bind,
|
|
@@ -6775,68 +7909,68 @@ var Rotate = () => {
|
|
|
6775
7909
|
};
|
|
6776
7910
|
|
|
6777
7911
|
// src/controls/transform-control/functions/scale.tsx
|
|
6778
|
-
import * as
|
|
6779
|
-
import { useRef as
|
|
7912
|
+
import * as React104 from "react";
|
|
7913
|
+
import { useRef as useRef22 } from "react";
|
|
6780
7914
|
import { scaleTransformPropTypeUtil as scaleTransformPropTypeUtil2 } from "@elementor/editor-props";
|
|
6781
7915
|
import { ArrowDownLeftIcon as ArrowDownLeftIcon2, ArrowDownSmallIcon as ArrowDownSmallIcon2, ArrowRightIcon as ArrowRightIcon2 } from "@elementor/icons";
|
|
6782
7916
|
import { Grid as Grid25 } from "@elementor/ui";
|
|
6783
|
-
import { __ as
|
|
7917
|
+
import { __ as __50 } from "@wordpress/i18n";
|
|
6784
7918
|
|
|
6785
7919
|
// src/controls/transform-control/functions/scale-axis-row.tsx
|
|
6786
|
-
import * as
|
|
7920
|
+
import * as React103 from "react";
|
|
6787
7921
|
import { Grid as Grid24 } from "@elementor/ui";
|
|
6788
7922
|
var ScaleAxisRow = ({ label, bind, startIcon, anchorRef }) => {
|
|
6789
|
-
return /* @__PURE__ */
|
|
7923
|
+
return /* @__PURE__ */ React103.createElement(Grid24, { item: true, xs: 12 }, /* @__PURE__ */ React103.createElement(PopoverGridContainer, { ref: anchorRef }, /* @__PURE__ */ React103.createElement(Grid24, { item: true, xs: 6 }, /* @__PURE__ */ React103.createElement(ControlLabel, null, label)), /* @__PURE__ */ React103.createElement(Grid24, { item: true, xs: 6 }, /* @__PURE__ */ React103.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React103.createElement(NumberControl, { step: 0.1, placeholder: "1", startIcon })))));
|
|
6790
7924
|
};
|
|
6791
7925
|
|
|
6792
7926
|
// src/controls/transform-control/functions/scale.tsx
|
|
6793
7927
|
var scaleAxisControls = [
|
|
6794
7928
|
{
|
|
6795
|
-
label:
|
|
7929
|
+
label: __50("Scale X", "elementor"),
|
|
6796
7930
|
bind: "x",
|
|
6797
|
-
startIcon: /* @__PURE__ */
|
|
7931
|
+
startIcon: /* @__PURE__ */ React104.createElement(ArrowRightIcon2, { fontSize: "tiny" })
|
|
6798
7932
|
},
|
|
6799
7933
|
{
|
|
6800
|
-
label:
|
|
7934
|
+
label: __50("Scale Y", "elementor"),
|
|
6801
7935
|
bind: "y",
|
|
6802
|
-
startIcon: /* @__PURE__ */
|
|
7936
|
+
startIcon: /* @__PURE__ */ React104.createElement(ArrowDownSmallIcon2, { fontSize: "tiny" })
|
|
6803
7937
|
},
|
|
6804
7938
|
{
|
|
6805
|
-
label:
|
|
7939
|
+
label: __50("Scale Z", "elementor"),
|
|
6806
7940
|
bind: "z",
|
|
6807
|
-
startIcon: /* @__PURE__ */
|
|
7941
|
+
startIcon: /* @__PURE__ */ React104.createElement(ArrowDownLeftIcon2, { fontSize: "tiny" })
|
|
6808
7942
|
}
|
|
6809
7943
|
];
|
|
6810
7944
|
var Scale = () => {
|
|
6811
7945
|
const context = useBoundProp(scaleTransformPropTypeUtil2);
|
|
6812
|
-
const rowRefs = [
|
|
6813
|
-
return /* @__PURE__ */
|
|
7946
|
+
const rowRefs = [useRef22(null), useRef22(null), useRef22(null)];
|
|
7947
|
+
return /* @__PURE__ */ React104.createElement(Grid25, { container: true, spacing: 1.5 }, /* @__PURE__ */ React104.createElement(PropProvider, { ...context }, /* @__PURE__ */ React104.createElement(PropKeyProvider, { bind: TransformFunctionKeys.scale }, scaleAxisControls.map((control, index) => /* @__PURE__ */ React104.createElement(ScaleAxisRow, { key: control.bind, ...control, anchorRef: rowRefs[index] })))));
|
|
6814
7948
|
};
|
|
6815
7949
|
|
|
6816
7950
|
// src/controls/transform-control/functions/skew.tsx
|
|
6817
|
-
import * as
|
|
6818
|
-
import { useRef as
|
|
7951
|
+
import * as React105 from "react";
|
|
7952
|
+
import { useRef as useRef23 } from "react";
|
|
6819
7953
|
import { skewTransformPropTypeUtil as skewTransformPropTypeUtil2 } from "@elementor/editor-props";
|
|
6820
7954
|
import { ArrowLeftIcon, ArrowRightIcon as ArrowRightIcon3 } from "@elementor/icons";
|
|
6821
7955
|
import { Grid as Grid26 } from "@elementor/ui";
|
|
6822
|
-
import { __ as
|
|
7956
|
+
import { __ as __51 } from "@wordpress/i18n";
|
|
6823
7957
|
var skewAxisControls = [
|
|
6824
7958
|
{
|
|
6825
|
-
label:
|
|
7959
|
+
label: __51("Skew X", "elementor"),
|
|
6826
7960
|
bind: "x",
|
|
6827
|
-
startIcon: /* @__PURE__ */
|
|
7961
|
+
startIcon: /* @__PURE__ */ React105.createElement(ArrowRightIcon3, { fontSize: "tiny" })
|
|
6828
7962
|
},
|
|
6829
7963
|
{
|
|
6830
|
-
label:
|
|
7964
|
+
label: __51("Skew Y", "elementor"),
|
|
6831
7965
|
bind: "y",
|
|
6832
|
-
startIcon: /* @__PURE__ */
|
|
7966
|
+
startIcon: /* @__PURE__ */ React105.createElement(ArrowLeftIcon, { fontSize: "tiny", style: { transform: "scaleX(-1) rotate(-90deg)" } })
|
|
6833
7967
|
}
|
|
6834
7968
|
];
|
|
6835
7969
|
var skewUnits = ["deg", "rad", "grad", "turn"];
|
|
6836
7970
|
var Skew = () => {
|
|
6837
7971
|
const context = useBoundProp(skewTransformPropTypeUtil2);
|
|
6838
|
-
const rowRefs = [
|
|
6839
|
-
return /* @__PURE__ */
|
|
7972
|
+
const rowRefs = [useRef23(null), useRef23(null), useRef23(null)];
|
|
7973
|
+
return /* @__PURE__ */ React105.createElement(Grid26, { container: true, spacing: 1.5 }, /* @__PURE__ */ React105.createElement(PropProvider, { ...context }, /* @__PURE__ */ React105.createElement(PropKeyProvider, { bind: TransformFunctionKeys.skew }, skewAxisControls.map((control, index) => /* @__PURE__ */ React105.createElement(
|
|
6840
7974
|
AxisRow,
|
|
6841
7975
|
{
|
|
6842
7976
|
key: control.bind,
|
|
@@ -6848,7 +7982,7 @@ var Skew = () => {
|
|
|
6848
7982
|
};
|
|
6849
7983
|
|
|
6850
7984
|
// src/controls/transform-control/use-transform-tabs-history.tsx
|
|
6851
|
-
import { useRef as
|
|
7985
|
+
import { useRef as useRef24 } from "react";
|
|
6852
7986
|
import {
|
|
6853
7987
|
moveTransformPropTypeUtil as moveTransformPropTypeUtil2,
|
|
6854
7988
|
rotateTransformPropTypeUtil as rotateTransformPropTypeUtil3,
|
|
@@ -6880,7 +8014,7 @@ var useTransformTabsHistory = ({
|
|
|
6880
8014
|
}
|
|
6881
8015
|
};
|
|
6882
8016
|
const { getTabsProps, getTabProps, getTabPanelProps } = useTabs2(getCurrentTransformType());
|
|
6883
|
-
const valuesHistory =
|
|
8017
|
+
const valuesHistory = useRef24({
|
|
6884
8018
|
move: initialMove,
|
|
6885
8019
|
scale: initialScale,
|
|
6886
8020
|
rotate: initialRotate,
|
|
@@ -6941,7 +8075,7 @@ var TransformContent = () => {
|
|
|
6941
8075
|
rotate: initialRotateValue.value,
|
|
6942
8076
|
skew: initialSkewValue.value
|
|
6943
8077
|
});
|
|
6944
|
-
return /* @__PURE__ */
|
|
8078
|
+
return /* @__PURE__ */ React106.createElement(PopoverContent, null, /* @__PURE__ */ React106.createElement(Box23, { sx: { width: "100%" } }, /* @__PURE__ */ React106.createElement(Box23, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React106.createElement(
|
|
6945
8079
|
Tabs2,
|
|
6946
8080
|
{
|
|
6947
8081
|
size: "small",
|
|
@@ -6952,37 +8086,37 @@ var TransformContent = () => {
|
|
|
6952
8086
|
}
|
|
6953
8087
|
},
|
|
6954
8088
|
...getTabsProps(),
|
|
6955
|
-
"aria-label":
|
|
8089
|
+
"aria-label": __52("Transform", "elementor")
|
|
6956
8090
|
},
|
|
6957
|
-
/* @__PURE__ */
|
|
6958
|
-
/* @__PURE__ */
|
|
6959
|
-
/* @__PURE__ */
|
|
6960
|
-
/* @__PURE__ */
|
|
6961
|
-
)), /* @__PURE__ */
|
|
8091
|
+
/* @__PURE__ */ React106.createElement(Tab2, { label: __52("Move", "elementor"), ...getTabProps(TransformFunctionKeys.move) }),
|
|
8092
|
+
/* @__PURE__ */ React106.createElement(Tab2, { label: __52("Scale", "elementor"), ...getTabProps(TransformFunctionKeys.scale) }),
|
|
8093
|
+
/* @__PURE__ */ React106.createElement(Tab2, { label: __52("Rotate", "elementor"), ...getTabProps(TransformFunctionKeys.rotate) }),
|
|
8094
|
+
/* @__PURE__ */ React106.createElement(Tab2, { label: __52("Skew", "elementor"), ...getTabProps(TransformFunctionKeys.skew) })
|
|
8095
|
+
)), /* @__PURE__ */ React106.createElement(TabPanel2, { sx: { p: 1.5 }, ...getTabPanelProps(TransformFunctionKeys.move) }, /* @__PURE__ */ React106.createElement(Move, null)), /* @__PURE__ */ React106.createElement(TabPanel2, { sx: { p: 1.5 }, ...getTabPanelProps(TransformFunctionKeys.scale) }, /* @__PURE__ */ React106.createElement(Scale, null)), /* @__PURE__ */ React106.createElement(TabPanel2, { sx: { p: 1.5 }, ...getTabPanelProps(TransformFunctionKeys.rotate) }, /* @__PURE__ */ React106.createElement(Rotate, null)), /* @__PURE__ */ React106.createElement(TabPanel2, { sx: { p: 1.5 }, ...getTabPanelProps(TransformFunctionKeys.skew) }, /* @__PURE__ */ React106.createElement(Skew, null))));
|
|
6962
8096
|
};
|
|
6963
8097
|
|
|
6964
8098
|
// src/controls/transform-control/transform-icon.tsx
|
|
6965
|
-
import * as
|
|
8099
|
+
import * as React107 from "react";
|
|
6966
8100
|
import { ArrowAutofitHeightIcon, ArrowsMaximizeIcon as ArrowsMaximizeIcon2, RotateClockwise2Icon, SkewXIcon } from "@elementor/icons";
|
|
6967
8101
|
var TransformIcon = ({ value }) => {
|
|
6968
8102
|
switch (value.$$type) {
|
|
6969
8103
|
case TransformFunctionKeys.move:
|
|
6970
|
-
return /* @__PURE__ */
|
|
8104
|
+
return /* @__PURE__ */ React107.createElement(ArrowsMaximizeIcon2, { fontSize: "tiny" });
|
|
6971
8105
|
case TransformFunctionKeys.scale:
|
|
6972
|
-
return /* @__PURE__ */
|
|
8106
|
+
return /* @__PURE__ */ React107.createElement(ArrowAutofitHeightIcon, { fontSize: "tiny" });
|
|
6973
8107
|
case TransformFunctionKeys.rotate:
|
|
6974
|
-
return /* @__PURE__ */
|
|
8108
|
+
return /* @__PURE__ */ React107.createElement(RotateClockwise2Icon, { fontSize: "tiny" });
|
|
6975
8109
|
case TransformFunctionKeys.skew:
|
|
6976
|
-
return /* @__PURE__ */
|
|
8110
|
+
return /* @__PURE__ */ React107.createElement(SkewXIcon, { fontSize: "tiny" });
|
|
6977
8111
|
default:
|
|
6978
8112
|
return null;
|
|
6979
8113
|
}
|
|
6980
8114
|
};
|
|
6981
8115
|
|
|
6982
8116
|
// src/controls/transform-control/transform-label.tsx
|
|
6983
|
-
import * as
|
|
6984
|
-
import { Box as
|
|
6985
|
-
import { __ as
|
|
8117
|
+
import * as React108 from "react";
|
|
8118
|
+
import { Box as Box24 } from "@elementor/ui";
|
|
8119
|
+
import { __ as __53 } from "@wordpress/i18n";
|
|
6986
8120
|
var orderedAxis = ["x", "y", "z"];
|
|
6987
8121
|
var formatLabel = (value, functionType) => {
|
|
6988
8122
|
return orderedAxis.map((axisKey) => {
|
|
@@ -7000,98 +8134,98 @@ var TransformLabel = (props) => {
|
|
|
7000
8134
|
const { $$type, value } = props.value;
|
|
7001
8135
|
switch ($$type) {
|
|
7002
8136
|
case TransformFunctionKeys.move:
|
|
7003
|
-
return /* @__PURE__ */
|
|
8137
|
+
return /* @__PURE__ */ React108.createElement(Label2, { label: __53("Move", "elementor"), value: formatLabel(value, "move") });
|
|
7004
8138
|
case TransformFunctionKeys.scale:
|
|
7005
|
-
return /* @__PURE__ */
|
|
8139
|
+
return /* @__PURE__ */ React108.createElement(Label2, { label: __53("Scale", "elementor"), value: formatLabel(value, "scale") });
|
|
7006
8140
|
case TransformFunctionKeys.rotate:
|
|
7007
|
-
return /* @__PURE__ */
|
|
8141
|
+
return /* @__PURE__ */ React108.createElement(Label2, { label: __53("Rotate", "elementor"), value: formatLabel(value, "rotate") });
|
|
7008
8142
|
case TransformFunctionKeys.skew:
|
|
7009
|
-
return /* @__PURE__ */
|
|
8143
|
+
return /* @__PURE__ */ React108.createElement(Label2, { label: __53("Skew", "elementor"), value: formatLabel(value, "skew") });
|
|
7010
8144
|
default:
|
|
7011
8145
|
return "";
|
|
7012
8146
|
}
|
|
7013
8147
|
};
|
|
7014
8148
|
var Label2 = ({ label, value }) => {
|
|
7015
|
-
return /* @__PURE__ */
|
|
8149
|
+
return /* @__PURE__ */ React108.createElement(Box24, { component: "span" }, label, ": ", value);
|
|
7016
8150
|
};
|
|
7017
8151
|
|
|
7018
8152
|
// src/controls/transform-control/transform-settings-control.tsx
|
|
7019
|
-
import * as
|
|
7020
|
-
import { PopoverHeader as
|
|
8153
|
+
import * as React111 from "react";
|
|
8154
|
+
import { PopoverHeader as PopoverHeader5 } from "@elementor/editor-ui";
|
|
7021
8155
|
import { AdjustmentsIcon } from "@elementor/icons";
|
|
7022
|
-
import { bindPopover as bindPopover6, Box as
|
|
7023
|
-
import { __ as
|
|
8156
|
+
import { bindPopover as bindPopover6, Box as Box25, Divider as Divider5, Popover as Popover7 } from "@elementor/ui";
|
|
8157
|
+
import { __ as __56 } from "@wordpress/i18n";
|
|
7024
8158
|
|
|
7025
8159
|
// src/controls/transform-control/transform-base-controls/children-perspective-control.tsx
|
|
7026
|
-
import * as
|
|
7027
|
-
import { useRef as
|
|
8160
|
+
import * as React109 from "react";
|
|
8161
|
+
import { useRef as useRef25 } from "react";
|
|
7028
8162
|
import { perspectiveOriginPropTypeUtil } from "@elementor/editor-props";
|
|
7029
|
-
import { Grid as Grid27, Stack as
|
|
7030
|
-
import { __ as
|
|
8163
|
+
import { Grid as Grid27, Stack as Stack19 } from "@elementor/ui";
|
|
8164
|
+
import { __ as __54 } from "@wordpress/i18n";
|
|
7031
8165
|
var ORIGIN_UNITS = ["px", "%", "em", "rem"];
|
|
7032
8166
|
var PERSPECTIVE_CONTROL_FIELD = {
|
|
7033
|
-
label:
|
|
8167
|
+
label: __54("Perspective", "elementor"),
|
|
7034
8168
|
bind: "perspective",
|
|
7035
8169
|
units: ["px", "em", "rem", "vw", "vh"]
|
|
7036
8170
|
};
|
|
7037
8171
|
var CHILDREN_PERSPECTIVE_FIELDS = [
|
|
7038
8172
|
{
|
|
7039
|
-
label:
|
|
8173
|
+
label: __54("Origin X", "elementor"),
|
|
7040
8174
|
bind: "x",
|
|
7041
8175
|
units: ORIGIN_UNITS
|
|
7042
8176
|
},
|
|
7043
8177
|
{
|
|
7044
|
-
label:
|
|
8178
|
+
label: __54("Origin Y", "elementor"),
|
|
7045
8179
|
bind: "y",
|
|
7046
8180
|
units: ORIGIN_UNITS
|
|
7047
8181
|
}
|
|
7048
8182
|
];
|
|
7049
8183
|
var ChildrenPerspectiveControl = () => {
|
|
7050
|
-
return /* @__PURE__ */
|
|
8184
|
+
return /* @__PURE__ */ React109.createElement(Stack19, { direction: "column", spacing: 1.5 }, /* @__PURE__ */ React109.createElement(ControlFormLabel, null, __54("Children perspective", "elementor")), /* @__PURE__ */ React109.createElement(PerspectiveControl, null), /* @__PURE__ */ React109.createElement(PerspectiveOriginControl, null));
|
|
7051
8185
|
};
|
|
7052
|
-
var PerspectiveControl = () => /* @__PURE__ */
|
|
7053
|
-
var PerspectiveOriginControl = () => /* @__PURE__ */
|
|
8186
|
+
var PerspectiveControl = () => /* @__PURE__ */ React109.createElement(PropKeyProvider, { bind: "perspective" }, /* @__PURE__ */ React109.createElement(ControlFields, { control: PERSPECTIVE_CONTROL_FIELD, key: PERSPECTIVE_CONTROL_FIELD.bind }));
|
|
8187
|
+
var PerspectiveOriginControl = () => /* @__PURE__ */ React109.createElement(PropKeyProvider, { bind: "perspective-origin" }, /* @__PURE__ */ React109.createElement(PerspectiveOriginControlProvider, null));
|
|
7054
8188
|
var PerspectiveOriginControlProvider = () => {
|
|
7055
8189
|
const context = useBoundProp(perspectiveOriginPropTypeUtil);
|
|
7056
|
-
return /* @__PURE__ */
|
|
8190
|
+
return /* @__PURE__ */ React109.createElement(PropProvider, { ...context }, CHILDREN_PERSPECTIVE_FIELDS.map((control) => /* @__PURE__ */ React109.createElement(PropKeyProvider, { bind: control.bind, key: control.bind }, /* @__PURE__ */ React109.createElement(ControlFields, { control }))));
|
|
7057
8191
|
};
|
|
7058
8192
|
var ControlFields = ({ control }) => {
|
|
7059
|
-
const rowRef =
|
|
7060
|
-
return /* @__PURE__ */
|
|
8193
|
+
const rowRef = useRef25(null);
|
|
8194
|
+
return /* @__PURE__ */ React109.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React109.createElement(Grid27, { item: true, xs: 6 }, /* @__PURE__ */ React109.createElement(ControlFormLabel, null, control.label)), /* @__PURE__ */ React109.createElement(Grid27, { item: true, xs: 6 }, /* @__PURE__ */ React109.createElement(SizeControl, { variant: "length", units: control.units, anchorRef: rowRef, disableCustom: true })));
|
|
7061
8195
|
};
|
|
7062
8196
|
|
|
7063
8197
|
// src/controls/transform-control/transform-base-controls/transform-origin-control.tsx
|
|
7064
|
-
import * as
|
|
7065
|
-
import { useRef as
|
|
8198
|
+
import * as React110 from "react";
|
|
8199
|
+
import { useRef as useRef26 } from "react";
|
|
7066
8200
|
import { transformOriginPropTypeUtil } from "@elementor/editor-props";
|
|
7067
|
-
import { Grid as Grid28, Stack as
|
|
7068
|
-
import { __ as
|
|
8201
|
+
import { Grid as Grid28, Stack as Stack20 } from "@elementor/ui";
|
|
8202
|
+
import { __ as __55 } from "@wordpress/i18n";
|
|
7069
8203
|
var TRANSFORM_ORIGIN_UNITS = ["px", "%", "em", "rem"];
|
|
7070
8204
|
var TRANSFORM_ORIGIN_UNITS_Z_AXIS = TRANSFORM_ORIGIN_UNITS.filter((unit) => unit !== "%");
|
|
7071
8205
|
var TRANSFORM_ORIGIN_FIELDS = [
|
|
7072
8206
|
{
|
|
7073
|
-
label:
|
|
8207
|
+
label: __55("Origin X", "elementor"),
|
|
7074
8208
|
bind: "x",
|
|
7075
8209
|
units: TRANSFORM_ORIGIN_UNITS
|
|
7076
8210
|
},
|
|
7077
8211
|
{
|
|
7078
|
-
label:
|
|
8212
|
+
label: __55("Origin Y", "elementor"),
|
|
7079
8213
|
bind: "y",
|
|
7080
8214
|
units: TRANSFORM_ORIGIN_UNITS
|
|
7081
8215
|
},
|
|
7082
8216
|
{
|
|
7083
|
-
label:
|
|
8217
|
+
label: __55("Origin Z", "elementor"),
|
|
7084
8218
|
bind: "z",
|
|
7085
8219
|
units: TRANSFORM_ORIGIN_UNITS_Z_AXIS
|
|
7086
8220
|
}
|
|
7087
8221
|
];
|
|
7088
8222
|
var TransformOriginControl = () => {
|
|
7089
|
-
return /* @__PURE__ */
|
|
8223
|
+
return /* @__PURE__ */ React110.createElement(Stack20, { direction: "column", spacing: 1.5 }, /* @__PURE__ */ React110.createElement(ControlFormLabel, null, __55("Transform", "elementor")), TRANSFORM_ORIGIN_FIELDS.map((control) => /* @__PURE__ */ React110.createElement(ControlFields2, { control, key: control.bind })));
|
|
7090
8224
|
};
|
|
7091
8225
|
var ControlFields2 = ({ control }) => {
|
|
7092
8226
|
const context = useBoundProp(transformOriginPropTypeUtil);
|
|
7093
|
-
const rowRef =
|
|
7094
|
-
return /* @__PURE__ */
|
|
8227
|
+
const rowRef = useRef26(null);
|
|
8228
|
+
return /* @__PURE__ */ React110.createElement(PropProvider, { ...context }, /* @__PURE__ */ React110.createElement(PropKeyProvider, { bind: control.bind }, /* @__PURE__ */ React110.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React110.createElement(Grid28, { item: true, xs: 6 }, /* @__PURE__ */ React110.createElement(ControlFormLabel, null, control.label)), /* @__PURE__ */ React110.createElement(Grid28, { item: true, xs: 6 }, /* @__PURE__ */ React110.createElement(SizeControl, { variant: "length", units: control.units, anchorRef: rowRef })))));
|
|
7095
8229
|
};
|
|
7096
8230
|
|
|
7097
8231
|
// src/controls/transform-control/transform-settings-control.tsx
|
|
@@ -7105,8 +8239,8 @@ var TransformSettingsControl = ({
|
|
|
7105
8239
|
...popupState,
|
|
7106
8240
|
anchorEl: anchorRef.current ?? void 0
|
|
7107
8241
|
});
|
|
7108
|
-
return /* @__PURE__ */
|
|
7109
|
-
|
|
8242
|
+
return /* @__PURE__ */ React111.createElement(
|
|
8243
|
+
Popover7,
|
|
7110
8244
|
{
|
|
7111
8245
|
disablePortal: true,
|
|
7112
8246
|
anchorOrigin: { vertical: "bottom", horizontal: "left" },
|
|
@@ -7120,16 +8254,16 @@ var TransformSettingsControl = ({
|
|
|
7120
8254
|
},
|
|
7121
8255
|
...popupProps
|
|
7122
8256
|
},
|
|
7123
|
-
/* @__PURE__ */
|
|
7124
|
-
|
|
8257
|
+
/* @__PURE__ */ React111.createElement(
|
|
8258
|
+
PopoverHeader5,
|
|
7125
8259
|
{
|
|
7126
|
-
title:
|
|
8260
|
+
title: __56("Transform settings", "elementor"),
|
|
7127
8261
|
onClose: popupState.close,
|
|
7128
|
-
icon: /* @__PURE__ */
|
|
8262
|
+
icon: /* @__PURE__ */ React111.createElement(AdjustmentsIcon, { fontSize: SIZE10 })
|
|
7129
8263
|
}
|
|
7130
8264
|
),
|
|
7131
|
-
/* @__PURE__ */
|
|
7132
|
-
/* @__PURE__ */
|
|
8265
|
+
/* @__PURE__ */ React111.createElement(Divider5, null),
|
|
8266
|
+
/* @__PURE__ */ React111.createElement(PopoverContent, { sx: { px: 2, py: 1.5 } }, /* @__PURE__ */ React111.createElement(PropKeyProvider, { bind: "transform-origin" }, /* @__PURE__ */ React111.createElement(TransformOriginControl, null)), showChildrenPerspective && /* @__PURE__ */ React111.createElement(React111.Fragment, null, /* @__PURE__ */ React111.createElement(Box25, { sx: { my: 0.5 } }, /* @__PURE__ */ React111.createElement(Divider5, null)), /* @__PURE__ */ React111.createElement(ChildrenPerspectiveControl, null)))
|
|
7133
8267
|
);
|
|
7134
8268
|
};
|
|
7135
8269
|
|
|
@@ -7138,27 +8272,27 @@ var SIZE11 = "tiny";
|
|
|
7138
8272
|
var TransformRepeaterControl = createControl(
|
|
7139
8273
|
({ showChildrenPerspective }) => {
|
|
7140
8274
|
const context = useBoundProp(transformPropTypeUtil);
|
|
7141
|
-
const headerRef =
|
|
7142
|
-
const popupState =
|
|
7143
|
-
return /* @__PURE__ */
|
|
8275
|
+
const headerRef = useRef27(null);
|
|
8276
|
+
const popupState = usePopupState11({ variant: "popover" });
|
|
8277
|
+
return /* @__PURE__ */ React112.createElement(PropProvider, { ...context }, /* @__PURE__ */ React112.createElement(
|
|
7144
8278
|
TransformSettingsControl,
|
|
7145
8279
|
{
|
|
7146
8280
|
popupState,
|
|
7147
8281
|
anchorRef: headerRef,
|
|
7148
8282
|
showChildrenPerspective
|
|
7149
8283
|
}
|
|
7150
|
-
), /* @__PURE__ */
|
|
8284
|
+
), /* @__PURE__ */ React112.createElement(PropKeyProvider, { bind: "transform-functions" }, /* @__PURE__ */ React112.createElement(Repeater2, { headerRef, propType: context.propType, popupState })));
|
|
7151
8285
|
}
|
|
7152
8286
|
);
|
|
7153
|
-
var ToolTip = /* @__PURE__ */
|
|
7154
|
-
|
|
8287
|
+
var ToolTip = /* @__PURE__ */ React112.createElement(
|
|
8288
|
+
Box26,
|
|
7155
8289
|
{
|
|
7156
8290
|
component: "span",
|
|
7157
8291
|
"aria-label": void 0,
|
|
7158
8292
|
sx: { display: "flex", gap: 0.5, p: 2, width: 320, borderRadius: 1 }
|
|
7159
8293
|
},
|
|
7160
|
-
/* @__PURE__ */
|
|
7161
|
-
/* @__PURE__ */
|
|
8294
|
+
/* @__PURE__ */ React112.createElement(InfoCircleFilledIcon2, { sx: { color: "secondary.main" } }),
|
|
8295
|
+
/* @__PURE__ */ React112.createElement(Typography11, { variant: "body2", color: "text.secondary", fontSize: "14px" }, __57("You can use each kind of transform only once per element.", "elementor"))
|
|
7162
8296
|
);
|
|
7163
8297
|
var Repeater2 = ({
|
|
7164
8298
|
headerRef,
|
|
@@ -7172,21 +8306,21 @@ var Repeater2 = ({
|
|
|
7172
8306
|
return availableValues.find((value) => !transformValues?.some((item) => item.$$type === value.$$type));
|
|
7173
8307
|
};
|
|
7174
8308
|
const shouldDisableAddItem = !getInitialValue2();
|
|
7175
|
-
return /* @__PURE__ */
|
|
8309
|
+
return /* @__PURE__ */ React112.createElement(PropProvider, { ...transformFunctionsContext }, /* @__PURE__ */ React112.createElement(
|
|
7176
8310
|
ControlRepeater,
|
|
7177
8311
|
{
|
|
7178
8312
|
initial: getInitialValue2() ?? initialTransformValue,
|
|
7179
8313
|
propTypeUtil: transformFunctionsPropTypeUtil
|
|
7180
8314
|
},
|
|
7181
|
-
/* @__PURE__ */
|
|
8315
|
+
/* @__PURE__ */ React112.createElement(
|
|
7182
8316
|
RepeaterHeader,
|
|
7183
8317
|
{
|
|
7184
|
-
label:
|
|
7185
|
-
adornment: () => /* @__PURE__ */
|
|
8318
|
+
label: __57("Transform", "elementor"),
|
|
8319
|
+
adornment: () => /* @__PURE__ */ React112.createElement(ControlAdornments, { customContext: { path: ["transform"], propType } }),
|
|
7186
8320
|
ref: headerRef
|
|
7187
8321
|
},
|
|
7188
|
-
/* @__PURE__ */
|
|
7189
|
-
/* @__PURE__ */
|
|
8322
|
+
/* @__PURE__ */ React112.createElement(TransformBasePopoverTrigger, { popupState, repeaterBindKey: bind }),
|
|
8323
|
+
/* @__PURE__ */ React112.createElement(
|
|
7190
8324
|
TooltipAddItemAction,
|
|
7191
8325
|
{
|
|
7192
8326
|
disabled: shouldDisableAddItem,
|
|
@@ -7196,15 +8330,15 @@ var Repeater2 = ({
|
|
|
7196
8330
|
}
|
|
7197
8331
|
)
|
|
7198
8332
|
),
|
|
7199
|
-
/* @__PURE__ */
|
|
8333
|
+
/* @__PURE__ */ React112.createElement(ItemsContainer, null, /* @__PURE__ */ React112.createElement(
|
|
7200
8334
|
Item,
|
|
7201
8335
|
{
|
|
7202
8336
|
Icon: TransformIcon,
|
|
7203
8337
|
Label: TransformLabel,
|
|
7204
|
-
actions: /* @__PURE__ */
|
|
8338
|
+
actions: /* @__PURE__ */ React112.createElement(React112.Fragment, null, /* @__PURE__ */ React112.createElement(DisableItemAction, null), /* @__PURE__ */ React112.createElement(RemoveItemAction, null))
|
|
7205
8339
|
}
|
|
7206
8340
|
)),
|
|
7207
|
-
/* @__PURE__ */
|
|
8341
|
+
/* @__PURE__ */ React112.createElement(EditItemPopover, null, /* @__PURE__ */ React112.createElement(TransformContent, null))
|
|
7208
8342
|
));
|
|
7209
8343
|
};
|
|
7210
8344
|
var TransformBasePopoverTrigger = ({
|
|
@@ -7212,33 +8346,33 @@ var TransformBasePopoverTrigger = ({
|
|
|
7212
8346
|
repeaterBindKey
|
|
7213
8347
|
}) => {
|
|
7214
8348
|
const { bind } = useBoundProp();
|
|
7215
|
-
const titleLabel =
|
|
7216
|
-
return bind !== repeaterBindKey ? null : /* @__PURE__ */
|
|
8349
|
+
const titleLabel = __57("Transform settings", "elementor");
|
|
8350
|
+
return bind !== repeaterBindKey ? null : /* @__PURE__ */ React112.createElement(Tooltip11, { title: titleLabel, placement: "top" }, /* @__PURE__ */ React112.createElement(IconButton8, { size: SIZE11, "aria-label": titleLabel, ...bindTrigger5(popupState) }, /* @__PURE__ */ React112.createElement(AdjustmentsIcon2, { fontSize: SIZE11 })));
|
|
7217
8351
|
};
|
|
7218
8352
|
|
|
7219
8353
|
// src/controls/transition-control/transition-repeater-control.tsx
|
|
7220
|
-
import * as
|
|
7221
|
-
import { useEffect as useEffect17, useMemo as
|
|
8354
|
+
import * as React115 from "react";
|
|
8355
|
+
import { useEffect as useEffect17, useMemo as useMemo17, useState as useState20 } from "react";
|
|
7222
8356
|
import {
|
|
7223
8357
|
createArrayPropUtils as createArrayPropUtils3,
|
|
7224
8358
|
selectionSizePropTypeUtil as selectionSizePropTypeUtil2
|
|
7225
8359
|
} from "@elementor/editor-props";
|
|
7226
8360
|
import { InfoCircleFilledIcon as InfoCircleFilledIcon3 } from "@elementor/icons";
|
|
7227
|
-
import { Alert as Alert2, AlertTitle as AlertTitle3, Box as
|
|
8361
|
+
import { Alert as Alert2, AlertTitle as AlertTitle3, Box as Box28, Typography as Typography12 } from "@elementor/ui";
|
|
7228
8362
|
import { hasProInstalled as hasProInstalled2 } from "@elementor/utils";
|
|
7229
|
-
import { __ as
|
|
8363
|
+
import { __ as __60 } from "@wordpress/i18n";
|
|
7230
8364
|
|
|
7231
8365
|
// src/controls/selection-size-control.tsx
|
|
7232
|
-
import * as
|
|
7233
|
-
import { useMemo as
|
|
8366
|
+
import * as React113 from "react";
|
|
8367
|
+
import { useMemo as useMemo15, useRef as useRef28 } from "react";
|
|
7234
8368
|
import { selectionSizePropTypeUtil } from "@elementor/editor-props";
|
|
7235
8369
|
import { Grid as Grid29 } from "@elementor/ui";
|
|
7236
8370
|
var SelectionSizeControl = createControl(
|
|
7237
8371
|
({ selectionLabel, sizeLabel, selectionConfig, sizeConfigMap }) => {
|
|
7238
8372
|
const { value, setValue, propType } = useBoundProp(selectionSizePropTypeUtil);
|
|
7239
|
-
const rowRef =
|
|
8373
|
+
const rowRef = useRef28(null);
|
|
7240
8374
|
const sizeFieldId = sizeLabel.replace(/\s+/g, "-").toLowerCase();
|
|
7241
|
-
const currentSizeConfig =
|
|
8375
|
+
const currentSizeConfig = useMemo15(() => {
|
|
7242
8376
|
switch (value.selection.$$type) {
|
|
7243
8377
|
case "key-value":
|
|
7244
8378
|
return sizeConfigMap[value?.selection?.value.value.value || ""];
|
|
@@ -7249,7 +8383,7 @@ var SelectionSizeControl = createControl(
|
|
|
7249
8383
|
}
|
|
7250
8384
|
}, [value, sizeConfigMap]);
|
|
7251
8385
|
const SelectionComponent = selectionConfig.component;
|
|
7252
|
-
return /* @__PURE__ */
|
|
8386
|
+
return /* @__PURE__ */ React113.createElement(PropProvider, { value, setValue, propType }, /* @__PURE__ */ React113.createElement(Grid29, { container: true, spacing: 1.5, ref: rowRef }, /* @__PURE__ */ React113.createElement(Grid29, { item: true, xs: 6, sx: { display: "flex", alignItems: "center" } }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, selectionLabel)), /* @__PURE__ */ React113.createElement(Grid29, { item: true, xs: 6 }, /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "selection" }, /* @__PURE__ */ React113.createElement(SelectionComponent, { ...selectionConfig.props }))), currentSizeConfig && /* @__PURE__ */ React113.createElement(React113.Fragment, null, /* @__PURE__ */ React113.createElement(Grid29, { item: true, xs: 6, sx: { display: "flex", alignItems: "center" } }, /* @__PURE__ */ React113.createElement(ControlFormLabel, { htmlFor: sizeFieldId }, sizeLabel)), /* @__PURE__ */ React113.createElement(Grid29, { item: true, xs: 6 }, /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React113.createElement(
|
|
7253
8387
|
SizeControl,
|
|
7254
8388
|
{
|
|
7255
8389
|
anchorRef: rowRef,
|
|
@@ -7264,12 +8398,12 @@ var SelectionSizeControl = createControl(
|
|
|
7264
8398
|
|
|
7265
8399
|
// src/controls/transition-control/data.ts
|
|
7266
8400
|
import { hasProInstalled, isVersionGreaterOrEqual } from "@elementor/utils";
|
|
7267
|
-
import { __ as
|
|
8401
|
+
import { __ as __58 } from "@wordpress/i18n";
|
|
7268
8402
|
var initialTransitionValue = {
|
|
7269
8403
|
selection: {
|
|
7270
8404
|
$$type: "key-value",
|
|
7271
8405
|
value: {
|
|
7272
|
-
key: { value:
|
|
8406
|
+
key: { value: __58("All properties", "elementor"), $$type: "string" },
|
|
7273
8407
|
value: { value: "all", $$type: "string" }
|
|
7274
8408
|
}
|
|
7275
8409
|
},
|
|
@@ -7293,128 +8427,128 @@ var createTransitionPropertiesList = () => {
|
|
|
7293
8427
|
const isSiteRtl = getIsSiteRtl();
|
|
7294
8428
|
const baseProperties = [
|
|
7295
8429
|
{
|
|
7296
|
-
label:
|
|
8430
|
+
label: __58("Default", "elementor"),
|
|
7297
8431
|
type: "category",
|
|
7298
|
-
properties: [{ label:
|
|
8432
|
+
properties: [{ label: __58("All properties", "elementor"), value: "all" }]
|
|
7299
8433
|
},
|
|
7300
8434
|
{
|
|
7301
|
-
label:
|
|
8435
|
+
label: __58("Margin", "elementor"),
|
|
7302
8436
|
type: "category",
|
|
7303
8437
|
properties: [
|
|
7304
|
-
{ label:
|
|
7305
|
-
{ label:
|
|
8438
|
+
{ label: __58("Margin (all)", "elementor"), value: "margin", isDisabled: true },
|
|
8439
|
+
{ label: __58("Margin bottom", "elementor"), value: "margin-block-end", isDisabled: true },
|
|
7306
8440
|
{
|
|
7307
|
-
label: isSiteRtl ?
|
|
8441
|
+
label: isSiteRtl ? __58("Margin right", "elementor") : __58("Margin left", "elementor"),
|
|
7308
8442
|
value: "margin-inline-start",
|
|
7309
8443
|
isDisabled: true
|
|
7310
8444
|
},
|
|
7311
8445
|
{
|
|
7312
|
-
label: isSiteRtl ?
|
|
8446
|
+
label: isSiteRtl ? __58("Margin left", "elementor") : __58("Margin right", "elementor"),
|
|
7313
8447
|
value: "margin-inline-end",
|
|
7314
8448
|
isDisabled: true
|
|
7315
8449
|
},
|
|
7316
|
-
{ label:
|
|
8450
|
+
{ label: __58("Margin top", "elementor"), value: "margin-block-start", isDisabled: true }
|
|
7317
8451
|
]
|
|
7318
8452
|
},
|
|
7319
8453
|
{
|
|
7320
|
-
label:
|
|
8454
|
+
label: __58("Padding", "elementor"),
|
|
7321
8455
|
type: "category",
|
|
7322
8456
|
properties: [
|
|
7323
|
-
{ label:
|
|
7324
|
-
{ label:
|
|
8457
|
+
{ label: __58("Padding (all)", "elementor"), value: "padding", isDisabled: true },
|
|
8458
|
+
{ label: __58("Padding bottom", "elementor"), value: "padding-block-end", isDisabled: true },
|
|
7325
8459
|
{
|
|
7326
|
-
label: isSiteRtl ?
|
|
8460
|
+
label: isSiteRtl ? __58("Padding right", "elementor") : __58("Padding left", "elementor"),
|
|
7327
8461
|
value: "padding-inline-start",
|
|
7328
8462
|
isDisabled: true
|
|
7329
8463
|
},
|
|
7330
8464
|
{
|
|
7331
|
-
label: isSiteRtl ?
|
|
8465
|
+
label: isSiteRtl ? __58("Padding left", "elementor") : __58("Padding right", "elementor"),
|
|
7332
8466
|
value: "padding-inline-end",
|
|
7333
8467
|
isDisabled: true
|
|
7334
8468
|
},
|
|
7335
|
-
{ label:
|
|
8469
|
+
{ label: __58("Padding top", "elementor"), value: "padding-block-start", isDisabled: true }
|
|
7336
8470
|
]
|
|
7337
8471
|
},
|
|
7338
8472
|
{
|
|
7339
|
-
label:
|
|
8473
|
+
label: __58("Flex", "elementor"),
|
|
7340
8474
|
type: "category",
|
|
7341
8475
|
properties: [
|
|
7342
|
-
{ label:
|
|
7343
|
-
{ label:
|
|
7344
|
-
{ label:
|
|
7345
|
-
{ label:
|
|
8476
|
+
{ label: __58("Flex (all)", "elementor"), value: "flex", isDisabled: true },
|
|
8477
|
+
{ label: __58("Flex grow", "elementor"), value: "flex-grow", isDisabled: true },
|
|
8478
|
+
{ label: __58("Flex shrink", "elementor"), value: "flex-shrink", isDisabled: true },
|
|
8479
|
+
{ label: __58("Flex basis", "elementor"), value: "flex-basis", isDisabled: true }
|
|
7346
8480
|
]
|
|
7347
8481
|
},
|
|
7348
8482
|
{
|
|
7349
|
-
label:
|
|
8483
|
+
label: __58("Size", "elementor"),
|
|
7350
8484
|
type: "category",
|
|
7351
8485
|
properties: [
|
|
7352
|
-
{ label:
|
|
7353
|
-
{ label:
|
|
7354
|
-
{ label:
|
|
7355
|
-
{ label:
|
|
7356
|
-
{ label:
|
|
7357
|
-
{ label:
|
|
8486
|
+
{ label: __58("Width", "elementor"), value: "width", isDisabled: true },
|
|
8487
|
+
{ label: __58("Height", "elementor"), value: "height", isDisabled: true },
|
|
8488
|
+
{ label: __58("Max height", "elementor"), value: "max-height", isDisabled: true },
|
|
8489
|
+
{ label: __58("Max width", "elementor"), value: "max-width", isDisabled: true },
|
|
8490
|
+
{ label: __58("Min height", "elementor"), value: "min-height", isDisabled: true },
|
|
8491
|
+
{ label: __58("Min width", "elementor"), value: "min-width", isDisabled: true }
|
|
7358
8492
|
]
|
|
7359
8493
|
},
|
|
7360
8494
|
{
|
|
7361
|
-
label:
|
|
8495
|
+
label: __58("Position", "elementor"),
|
|
7362
8496
|
type: "category",
|
|
7363
8497
|
properties: [
|
|
7364
|
-
{ label:
|
|
8498
|
+
{ label: __58("Top", "elementor"), value: "inset-block-start", isDisabled: true },
|
|
7365
8499
|
{
|
|
7366
|
-
label: isSiteRtl ?
|
|
8500
|
+
label: isSiteRtl ? __58("Right", "elementor") : __58("Left", "elementor"),
|
|
7367
8501
|
value: "inset-inline-start",
|
|
7368
8502
|
isDisabled: true
|
|
7369
8503
|
},
|
|
7370
8504
|
{
|
|
7371
|
-
label: isSiteRtl ?
|
|
8505
|
+
label: isSiteRtl ? __58("Left", "elementor") : __58("Right", "elementor"),
|
|
7372
8506
|
value: "inset-inline-end",
|
|
7373
8507
|
isDisabled: true
|
|
7374
8508
|
},
|
|
7375
|
-
{ label:
|
|
7376
|
-
{ label:
|
|
8509
|
+
{ label: __58("Bottom", "elementor"), value: "inset-block-end", isDisabled: true },
|
|
8510
|
+
{ label: __58("Z-index", "elementor"), value: "z-index", isDisabled: true }
|
|
7377
8511
|
]
|
|
7378
8512
|
},
|
|
7379
8513
|
{
|
|
7380
|
-
label:
|
|
8514
|
+
label: __58("Typography", "elementor"),
|
|
7381
8515
|
type: "category",
|
|
7382
8516
|
properties: [
|
|
7383
|
-
{ label:
|
|
7384
|
-
{ label:
|
|
7385
|
-
{ label:
|
|
7386
|
-
{ label:
|
|
7387
|
-
{ label:
|
|
7388
|
-
{ label:
|
|
7389
|
-
{ label:
|
|
8517
|
+
{ label: __58("Font color", "elementor"), value: "color", isDisabled: true },
|
|
8518
|
+
{ label: __58("Font size", "elementor"), value: "font-size", isDisabled: true },
|
|
8519
|
+
{ label: __58("Line height", "elementor"), value: "line-height", isDisabled: true },
|
|
8520
|
+
{ label: __58("Letter spacing", "elementor"), value: "letter-spacing", isDisabled: true },
|
|
8521
|
+
{ label: __58("Word spacing", "elementor"), value: "word-spacing", isDisabled: true },
|
|
8522
|
+
{ label: __58("Font variations", "elementor"), value: "font-variation-settings", isDisabled: true },
|
|
8523
|
+
{ label: __58("Text stroke color", "elementor"), value: "-webkit-text-stroke-color", isDisabled: true }
|
|
7390
8524
|
]
|
|
7391
8525
|
},
|
|
7392
8526
|
{
|
|
7393
|
-
label:
|
|
8527
|
+
label: __58("Background", "elementor"),
|
|
7394
8528
|
type: "category",
|
|
7395
8529
|
properties: [
|
|
7396
|
-
{ label:
|
|
7397
|
-
{ label:
|
|
7398
|
-
{ label:
|
|
8530
|
+
{ label: __58("Background color", "elementor"), value: "background-color", isDisabled: true },
|
|
8531
|
+
{ label: __58("Background position", "elementor"), value: "background-position", isDisabled: true },
|
|
8532
|
+
{ label: __58("Box shadow", "elementor"), value: "box-shadow", isDisabled: true }
|
|
7399
8533
|
]
|
|
7400
8534
|
},
|
|
7401
8535
|
{
|
|
7402
|
-
label:
|
|
8536
|
+
label: __58("Border", "elementor"),
|
|
7403
8537
|
type: "category",
|
|
7404
8538
|
properties: [
|
|
7405
|
-
{ label:
|
|
7406
|
-
{ label:
|
|
7407
|
-
{ label:
|
|
7408
|
-
{ label:
|
|
8539
|
+
{ label: __58("Border (all)", "elementor"), value: "border", isDisabled: true },
|
|
8540
|
+
{ label: __58("Border radius", "elementor"), value: "border-radius", isDisabled: true },
|
|
8541
|
+
{ label: __58("Border color", "elementor"), value: "border-color", isDisabled: true },
|
|
8542
|
+
{ label: __58("Border width", "elementor"), value: "border-width", isDisabled: true }
|
|
7409
8543
|
]
|
|
7410
8544
|
},
|
|
7411
8545
|
{
|
|
7412
|
-
label:
|
|
8546
|
+
label: __58("Effects", "elementor"),
|
|
7413
8547
|
type: "category",
|
|
7414
8548
|
properties: [
|
|
7415
|
-
{ label:
|
|
7416
|
-
{ label:
|
|
7417
|
-
{ label:
|
|
8549
|
+
{ label: __58("Opacity", "elementor"), value: "opacity", isDisabled: true },
|
|
8550
|
+
{ label: __58("Transform (all)", "elementor"), value: "transform", isDisabled: true },
|
|
8551
|
+
{ label: __58("Filter (all)", "elementor"), value: "filter", isDisabled: true }
|
|
7418
8552
|
]
|
|
7419
8553
|
}
|
|
7420
8554
|
];
|
|
@@ -7450,13 +8584,13 @@ function subscribeToTransitionEvent() {
|
|
|
7450
8584
|
}
|
|
7451
8585
|
|
|
7452
8586
|
// src/controls/transition-control/transition-selector.tsx
|
|
7453
|
-
import * as
|
|
7454
|
-
import { useMemo as
|
|
8587
|
+
import * as React114 from "react";
|
|
8588
|
+
import { useMemo as useMemo16, useRef as useRef29 } from "react";
|
|
7455
8589
|
import { keyValuePropTypeUtil as keyValuePropTypeUtil2 } from "@elementor/editor-props";
|
|
7456
8590
|
import { PromotionAlert, PromotionChip } from "@elementor/editor-ui";
|
|
7457
8591
|
import { ChevronDownIcon as ChevronDownIcon3, VariationsIcon } from "@elementor/icons";
|
|
7458
|
-
import { bindPopover as bindPopover7, bindTrigger as bindTrigger6, Box as
|
|
7459
|
-
import { __ as
|
|
8592
|
+
import { bindPopover as bindPopover7, bindTrigger as bindTrigger6, Box as Box27, Popover as Popover8, UnstableTag as UnstableTag3, usePopupState as usePopupState12 } from "@elementor/ui";
|
|
8593
|
+
import { __ as __59 } from "@wordpress/i18n";
|
|
7460
8594
|
|
|
7461
8595
|
// src/utils/tracking.ts
|
|
7462
8596
|
import { getSelectedElements as getSelectedElements2 } from "@elementor/editor-elements";
|
|
@@ -7537,9 +8671,9 @@ var TransitionSelector = ({
|
|
|
7537
8671
|
const {
|
|
7538
8672
|
key: { value: transitionLabel }
|
|
7539
8673
|
} = value;
|
|
7540
|
-
const defaultRef =
|
|
7541
|
-
const popoverState =
|
|
7542
|
-
const disabledCategories =
|
|
8674
|
+
const defaultRef = useRef29(null);
|
|
8675
|
+
const popoverState = usePopupState12({ variant: "popover" });
|
|
8676
|
+
const disabledCategories = useMemo16(() => {
|
|
7543
8677
|
return new Set(
|
|
7544
8678
|
transitionProperties.filter((cat) => cat.properties.some((prop) => prop.isDisabled)).map((cat) => cat.label)
|
|
7545
8679
|
);
|
|
@@ -7559,7 +8693,7 @@ var TransitionSelector = ({
|
|
|
7559
8693
|
return [
|
|
7560
8694
|
first,
|
|
7561
8695
|
{
|
|
7562
|
-
label:
|
|
8696
|
+
label: __59("Recently Used", "elementor"),
|
|
7563
8697
|
items: recentItems
|
|
7564
8698
|
},
|
|
7565
8699
|
...rest
|
|
@@ -7583,17 +8717,17 @@ var TransitionSelector = ({
|
|
|
7583
8717
|
left: rect.right + 36
|
|
7584
8718
|
};
|
|
7585
8719
|
};
|
|
7586
|
-
return /* @__PURE__ */
|
|
8720
|
+
return /* @__PURE__ */ React114.createElement(Box27, { ref: defaultRef }, /* @__PURE__ */ React114.createElement(ControlActions, null, /* @__PURE__ */ React114.createElement(
|
|
7587
8721
|
UnstableTag3,
|
|
7588
8722
|
{
|
|
7589
8723
|
variant: "outlined",
|
|
7590
8724
|
label: transitionLabel,
|
|
7591
|
-
endIcon: /* @__PURE__ */
|
|
8725
|
+
endIcon: /* @__PURE__ */ React114.createElement(ChevronDownIcon3, { fontSize: "tiny" }),
|
|
7592
8726
|
...bindTrigger6(popoverState),
|
|
7593
8727
|
fullWidth: true
|
|
7594
8728
|
}
|
|
7595
|
-
)), /* @__PURE__ */
|
|
7596
|
-
|
|
8729
|
+
)), /* @__PURE__ */ React114.createElement(
|
|
8730
|
+
Popover8,
|
|
7597
8731
|
{
|
|
7598
8732
|
disablePortal: true,
|
|
7599
8733
|
disableScrollLock: true,
|
|
@@ -7603,7 +8737,7 @@ var TransitionSelector = ({
|
|
|
7603
8737
|
anchorOrigin: { vertical: "top", horizontal: "right" },
|
|
7604
8738
|
transformOrigin: { vertical: "top", horizontal: "left" }
|
|
7605
8739
|
},
|
|
7606
|
-
/* @__PURE__ */
|
|
8740
|
+
/* @__PURE__ */ React114.createElement(
|
|
7607
8741
|
ItemSelector,
|
|
7608
8742
|
{
|
|
7609
8743
|
itemsList: getItemList(),
|
|
@@ -7611,11 +8745,11 @@ var TransitionSelector = ({
|
|
|
7611
8745
|
onItemChange: handleTransitionPropertyChange,
|
|
7612
8746
|
onClose: popoverState.close,
|
|
7613
8747
|
sectionWidth: 268,
|
|
7614
|
-
title:
|
|
8748
|
+
title: __59("Transition Property", "elementor"),
|
|
7615
8749
|
icon: VariationsIcon,
|
|
7616
8750
|
disabledItems: includeCurrentValueInOptions(value, disabledItems),
|
|
7617
|
-
categoryItemContentTemplate: (item) => /* @__PURE__ */
|
|
7618
|
-
|
|
8751
|
+
categoryItemContentTemplate: (item) => /* @__PURE__ */ React114.createElement(
|
|
8752
|
+
Box27,
|
|
7619
8753
|
{
|
|
7620
8754
|
sx: {
|
|
7621
8755
|
display: "flex",
|
|
@@ -7624,13 +8758,13 @@ var TransitionSelector = ({
|
|
|
7624
8758
|
width: "100%"
|
|
7625
8759
|
}
|
|
7626
8760
|
},
|
|
7627
|
-
/* @__PURE__ */
|
|
7628
|
-
showPromotion && disabledCategories.has(item.value) && /* @__PURE__ */
|
|
8761
|
+
/* @__PURE__ */ React114.createElement("span", null, item.value),
|
|
8762
|
+
showPromotion && disabledCategories.has(item.value) && /* @__PURE__ */ React114.createElement(PromotionChip, null)
|
|
7629
8763
|
),
|
|
7630
|
-
footer: showPromotion ? /* @__PURE__ */
|
|
8764
|
+
footer: showPromotion ? /* @__PURE__ */ React114.createElement(
|
|
7631
8765
|
PromotionAlert,
|
|
7632
8766
|
{
|
|
7633
|
-
message:
|
|
8767
|
+
message: __59(
|
|
7634
8768
|
"Upgrade to customize transition properties and control effects.",
|
|
7635
8769
|
"elementor"
|
|
7636
8770
|
),
|
|
@@ -7669,8 +8803,8 @@ var areAllPropertiesUsed = (value = []) => {
|
|
|
7669
8803
|
};
|
|
7670
8804
|
var getSelectionSizeProps = (recentlyUsedList, disabledItems, showPromotion) => {
|
|
7671
8805
|
return {
|
|
7672
|
-
selectionLabel:
|
|
7673
|
-
sizeLabel:
|
|
8806
|
+
selectionLabel: __60("Type", "elementor"),
|
|
8807
|
+
sizeLabel: __60("Duration", "elementor"),
|
|
7674
8808
|
selectionConfig: {
|
|
7675
8809
|
component: TransitionSelector,
|
|
7676
8810
|
props: {
|
|
@@ -7746,7 +8880,7 @@ var getInitialValue = (values = []) => {
|
|
|
7746
8880
|
}
|
|
7747
8881
|
return initialTransitionValue;
|
|
7748
8882
|
};
|
|
7749
|
-
var disableAddItemTooltipContent = /* @__PURE__ */
|
|
8883
|
+
var disableAddItemTooltipContent = /* @__PURE__ */ React115.createElement(
|
|
7750
8884
|
Alert2,
|
|
7751
8885
|
{
|
|
7752
8886
|
sx: {
|
|
@@ -7754,10 +8888,10 @@ var disableAddItemTooltipContent = /* @__PURE__ */ React108.createElement(
|
|
|
7754
8888
|
gap: 0.5
|
|
7755
8889
|
},
|
|
7756
8890
|
color: "secondary",
|
|
7757
|
-
icon: /* @__PURE__ */
|
|
8891
|
+
icon: /* @__PURE__ */ React115.createElement(InfoCircleFilledIcon3, null)
|
|
7758
8892
|
},
|
|
7759
|
-
/* @__PURE__ */
|
|
7760
|
-
/* @__PURE__ */
|
|
8893
|
+
/* @__PURE__ */ React115.createElement(AlertTitle3, null, __60("Transitions", "elementor")),
|
|
8894
|
+
/* @__PURE__ */ React115.createElement(Box28, { component: "span" }, /* @__PURE__ */ React115.createElement(Typography12, { variant: "body2" }, __60("Switch to 'Normal' state to add a transition.", "elementor")))
|
|
7761
8895
|
);
|
|
7762
8896
|
var TransitionRepeaterControl = createControl(
|
|
7763
8897
|
({
|
|
@@ -7765,14 +8899,14 @@ var TransitionRepeaterControl = createControl(
|
|
|
7765
8899
|
currentStyleState
|
|
7766
8900
|
}) => {
|
|
7767
8901
|
const currentStyleIsNormal = currentStyleState === null;
|
|
7768
|
-
const [recentlyUsedList, setRecentlyUsedList] =
|
|
8902
|
+
const [recentlyUsedList, setRecentlyUsedList] = useState20([]);
|
|
7769
8903
|
const proInstalled = hasProInstalled2();
|
|
7770
8904
|
const { value, setValue } = useBoundProp(childArrayPropTypeUtil);
|
|
7771
|
-
const { allDisabled: disabledItems, proDisabled: proDisabledItems } =
|
|
8905
|
+
const { allDisabled: disabledItems, proDisabled: proDisabledItems } = useMemo17(
|
|
7772
8906
|
() => getDisabledItemLabels(value),
|
|
7773
8907
|
[value]
|
|
7774
8908
|
);
|
|
7775
|
-
const allowedTransitionSet =
|
|
8909
|
+
const allowedTransitionSet = useMemo17(() => {
|
|
7776
8910
|
const set = /* @__PURE__ */ new Set();
|
|
7777
8911
|
transitionProperties.forEach((category) => {
|
|
7778
8912
|
category.properties.forEach((prop) => {
|
|
@@ -7798,15 +8932,15 @@ var TransitionRepeaterControl = createControl(
|
|
|
7798
8932
|
useEffect17(() => {
|
|
7799
8933
|
recentlyUsedListGetter().then(setRecentlyUsedList);
|
|
7800
8934
|
}, [recentlyUsedListGetter]);
|
|
7801
|
-
const allPropertiesUsed =
|
|
8935
|
+
const allPropertiesUsed = useMemo17(() => areAllPropertiesUsed(value), [value]);
|
|
7802
8936
|
const isAddItemDisabled = !currentStyleIsNormal || allPropertiesUsed;
|
|
7803
|
-
return /* @__PURE__ */
|
|
8937
|
+
return /* @__PURE__ */ React115.createElement(
|
|
7804
8938
|
RepeatableControl,
|
|
7805
8939
|
{
|
|
7806
|
-
label:
|
|
7807
|
-
repeaterLabel:
|
|
8940
|
+
label: __60("Transitions", "elementor"),
|
|
8941
|
+
repeaterLabel: __60("Transitions", "elementor"),
|
|
7808
8942
|
patternLabel: "${value.selection.value.key.value}: ${value.size.value.size}${value.size.value.unit}",
|
|
7809
|
-
placeholder:
|
|
8943
|
+
placeholder: __60("Empty Transition", "elementor"),
|
|
7810
8944
|
showDuplicate: false,
|
|
7811
8945
|
showToggle: true,
|
|
7812
8946
|
initialValues: getInitialValue(value),
|
|
@@ -7827,11 +8961,11 @@ var TransitionRepeaterControl = createControl(
|
|
|
7827
8961
|
);
|
|
7828
8962
|
|
|
7829
8963
|
// src/controls/date-time-control.tsx
|
|
7830
|
-
import * as
|
|
8964
|
+
import * as React116 from "react";
|
|
7831
8965
|
import * as dayjs from "dayjs";
|
|
7832
8966
|
import { isTransformable as isTransformable2, stringPropTypeUtil as stringPropTypeUtil20 } from "@elementor/editor-props";
|
|
7833
8967
|
import { DateTimePropTypeUtil } from "@elementor/editor-props";
|
|
7834
|
-
import { Box as
|
|
8968
|
+
import { Box as Box29, DatePicker, LocalizationProvider, TimePicker } from "@elementor/ui";
|
|
7835
8969
|
var DATE_FORMAT = "YYYY-MM-DD";
|
|
7836
8970
|
var TIME_FORMAT = "HH:mm";
|
|
7837
8971
|
var DateTimeControl = createControl(({ inputDisabled }) => {
|
|
@@ -7875,7 +9009,7 @@ var DateTimeControl = createControl(({ inputDisabled }) => {
|
|
|
7875
9009
|
const base = dayjs.default();
|
|
7876
9010
|
return base.hour(h).minute(m).second(0).millisecond(0);
|
|
7877
9011
|
};
|
|
7878
|
-
return /* @__PURE__ */
|
|
9012
|
+
return /* @__PURE__ */ React116.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React116.createElement(ControlActions, null, /* @__PURE__ */ React116.createElement(LocalizationProvider, null, /* @__PURE__ */ React116.createElement(Box29, { display: "flex", gap: 1, alignItems: "center" }, /* @__PURE__ */ React116.createElement(PropKeyProvider, { bind: "date" }, /* @__PURE__ */ React116.createElement(
|
|
7879
9013
|
DatePicker,
|
|
7880
9014
|
{
|
|
7881
9015
|
value: parseDateValue(stringPropTypeUtil20.extract(value?.date)),
|
|
@@ -7887,7 +9021,7 @@ var DateTimeControl = createControl(({ inputDisabled }) => {
|
|
|
7887
9021
|
openPickerIcon: { fontSize: "tiny" }
|
|
7888
9022
|
}
|
|
7889
9023
|
}
|
|
7890
|
-
)), /* @__PURE__ */
|
|
9024
|
+
)), /* @__PURE__ */ React116.createElement(PropKeyProvider, { bind: "time" }, /* @__PURE__ */ React116.createElement(
|
|
7891
9025
|
TimePicker,
|
|
7892
9026
|
{
|
|
7893
9027
|
value: parseTimeValue(stringPropTypeUtil20.extract(value?.time)),
|
|
@@ -7903,13 +9037,13 @@ var DateTimeControl = createControl(({ inputDisabled }) => {
|
|
|
7903
9037
|
});
|
|
7904
9038
|
|
|
7905
9039
|
// src/controls/date-range-control.tsx
|
|
7906
|
-
import * as
|
|
9040
|
+
import * as React118 from "react";
|
|
7907
9041
|
import { dateRangePropTypeUtil, dateStringPropTypeUtil as dateStringPropTypeUtil2 } from "@elementor/editor-props";
|
|
7908
|
-
import { FormHelperText as FormHelperText2, Grid as Grid30, Stack as
|
|
7909
|
-
import { __ as
|
|
9042
|
+
import { FormHelperText as FormHelperText2, Grid as Grid30, Stack as Stack21 } from "@elementor/ui";
|
|
9043
|
+
import { __ as __61 } from "@wordpress/i18n";
|
|
7910
9044
|
|
|
7911
9045
|
// src/controls/date-string-control.tsx
|
|
7912
|
-
import * as
|
|
9046
|
+
import * as React117 from "react";
|
|
7913
9047
|
import { dateStringPropTypeUtil } from "@elementor/editor-props";
|
|
7914
9048
|
import { DatePicker as DatePicker2, LocalizationProvider as LocalizationProvider2 } from "@elementor/ui";
|
|
7915
9049
|
|
|
@@ -7968,7 +9102,7 @@ var DateStringControl = createControl(
|
|
|
7968
9102
|
}
|
|
7969
9103
|
setValue(newValue.format(format));
|
|
7970
9104
|
};
|
|
7971
|
-
return /* @__PURE__ */
|
|
9105
|
+
return /* @__PURE__ */ React117.createElement(LocalizationProvider2, null, /* @__PURE__ */ React117.createElement(ControlActions, null, /* @__PURE__ */ React117.createElement(
|
|
7972
9106
|
DatePicker2,
|
|
7973
9107
|
{
|
|
7974
9108
|
value: parseDateString(value ?? ""),
|
|
@@ -7982,8 +9116,8 @@ var DateStringControl = createControl(
|
|
|
7982
9116
|
|
|
7983
9117
|
// src/controls/date-range-control.tsx
|
|
7984
9118
|
var RANGE_LABELS = {
|
|
7985
|
-
min:
|
|
7986
|
-
max:
|
|
9119
|
+
min: __61("Min date", "elementor"),
|
|
9120
|
+
max: __61("Max date", "elementor")
|
|
7987
9121
|
};
|
|
7988
9122
|
var isMaxBeforeMin = (minIso, maxIso) => {
|
|
7989
9123
|
if (!minIso || !maxIso) {
|
|
@@ -7991,38 +9125,38 @@ var isMaxBeforeMin = (minIso, maxIso) => {
|
|
|
7991
9125
|
}
|
|
7992
9126
|
return maxIso < minIso;
|
|
7993
9127
|
};
|
|
7994
|
-
var RANGE_ERROR_MESSAGE =
|
|
9128
|
+
var RANGE_ERROR_MESSAGE = __61("Max date must be on or after Min date", "elementor");
|
|
7995
9129
|
var DateRangeControl = createControl(() => {
|
|
7996
9130
|
const { value, setValue, ...propContext } = useBoundProp(dateRangePropTypeUtil);
|
|
7997
9131
|
const minString = dateStringPropTypeUtil2.extract(value?.min);
|
|
7998
9132
|
const maxString = dateStringPropTypeUtil2.extract(value?.max);
|
|
7999
9133
|
const hasInvalidRange = isMaxBeforeMin(minString, maxString);
|
|
8000
|
-
return /* @__PURE__ */
|
|
9134
|
+
return /* @__PURE__ */ React118.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React118.createElement(Stack21, { gap: 0.75 }, /* @__PURE__ */ React118.createElement(Stack21, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React118.createElement(Grid30, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React118.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React118.createElement(ControlFormLabel, null, RANGE_LABELS.min)), /* @__PURE__ */ React118.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React118.createElement(
|
|
8001
9135
|
BoundDateStringControl,
|
|
8002
9136
|
{
|
|
8003
9137
|
bind: "min",
|
|
8004
9138
|
ariaLabel: RANGE_LABELS.min,
|
|
8005
9139
|
error: hasInvalidRange
|
|
8006
9140
|
}
|
|
8007
|
-
))), /* @__PURE__ */
|
|
9141
|
+
))), /* @__PURE__ */ React118.createElement(Grid30, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React118.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React118.createElement(ControlFormLabel, null, RANGE_LABELS.max)), /* @__PURE__ */ React118.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React118.createElement(
|
|
8008
9142
|
BoundDateStringControl,
|
|
8009
9143
|
{
|
|
8010
9144
|
bind: "max",
|
|
8011
9145
|
ariaLabel: RANGE_LABELS.max,
|
|
8012
9146
|
error: hasInvalidRange
|
|
8013
9147
|
}
|
|
8014
|
-
)))), hasInvalidRange && /* @__PURE__ */
|
|
9148
|
+
)))), hasInvalidRange && /* @__PURE__ */ React118.createElement(FormHelperText2, { error: true }, RANGE_ERROR_MESSAGE)));
|
|
8015
9149
|
});
|
|
8016
9150
|
var BoundDateStringControl = ({
|
|
8017
9151
|
bind,
|
|
8018
9152
|
ariaLabel,
|
|
8019
9153
|
error
|
|
8020
9154
|
}) => {
|
|
8021
|
-
return /* @__PURE__ */
|
|
9155
|
+
return /* @__PURE__ */ React118.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React118.createElement(DateStringControl, { ariaLabel, error, coerceInvalidToNull: true }));
|
|
8022
9156
|
};
|
|
8023
9157
|
|
|
8024
9158
|
// src/controls/time-string-control.tsx
|
|
8025
|
-
import * as
|
|
9159
|
+
import * as React119 from "react";
|
|
8026
9160
|
import { timeStringPropTypeUtil } from "@elementor/editor-props";
|
|
8027
9161
|
import { LocalizationProvider as LocalizationProvider3, TimePicker as TimePicker2 } from "@elementor/ui";
|
|
8028
9162
|
var TimeStringControl = createControl(
|
|
@@ -8050,7 +9184,7 @@ var TimeStringControl = createControl(
|
|
|
8050
9184
|
}
|
|
8051
9185
|
setValue(newValue.format(format));
|
|
8052
9186
|
};
|
|
8053
|
-
return /* @__PURE__ */
|
|
9187
|
+
return /* @__PURE__ */ React119.createElement(LocalizationProvider3, null, /* @__PURE__ */ React119.createElement(ControlActions, null, /* @__PURE__ */ React119.createElement(
|
|
8054
9188
|
TimePicker2,
|
|
8055
9189
|
{
|
|
8056
9190
|
value: parseTimeString(value ?? ""),
|
|
@@ -8063,38 +9197,38 @@ var TimeStringControl = createControl(
|
|
|
8063
9197
|
);
|
|
8064
9198
|
|
|
8065
9199
|
// src/controls/time-range-control.tsx
|
|
8066
|
-
import * as
|
|
9200
|
+
import * as React120 from "react";
|
|
8067
9201
|
import { timeRangePropTypeUtil } from "@elementor/editor-props";
|
|
8068
|
-
import { Grid as Grid31, Stack as
|
|
8069
|
-
import { __ as
|
|
9202
|
+
import { Grid as Grid31, Stack as Stack22 } from "@elementor/ui";
|
|
9203
|
+
import { __ as __62 } from "@wordpress/i18n";
|
|
8070
9204
|
var RANGE_LABELS2 = {
|
|
8071
|
-
min:
|
|
8072
|
-
max:
|
|
9205
|
+
min: __62("Start time", "elementor"),
|
|
9206
|
+
max: __62("End time", "elementor")
|
|
8073
9207
|
};
|
|
8074
9208
|
var TimeRangeControl = createControl(() => {
|
|
8075
9209
|
const { value, setValue, ...propContext } = useBoundProp(timeRangePropTypeUtil);
|
|
8076
|
-
return /* @__PURE__ */
|
|
9210
|
+
return /* @__PURE__ */ React120.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React120.createElement(Stack22, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React120.createElement(Grid31, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React120.createElement(Grid31, { item: true, xs: 12 }, /* @__PURE__ */ React120.createElement(ControlFormLabel, null, RANGE_LABELS2.min)), /* @__PURE__ */ React120.createElement(Grid31, { item: true, xs: 12 }, /* @__PURE__ */ React120.createElement(BoundTimeStringControl, { bind: "min", ariaLabel: RANGE_LABELS2.min }))), /* @__PURE__ */ React120.createElement(Grid31, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React120.createElement(Grid31, { item: true, xs: 12 }, /* @__PURE__ */ React120.createElement(ControlFormLabel, null, RANGE_LABELS2.max)), /* @__PURE__ */ React120.createElement(Grid31, { item: true, xs: 12 }, /* @__PURE__ */ React120.createElement(BoundTimeStringControl, { bind: "max", ariaLabel: RANGE_LABELS2.max })))));
|
|
8077
9211
|
});
|
|
8078
9212
|
var BoundTimeStringControl = ({ bind, ariaLabel }) => {
|
|
8079
|
-
return /* @__PURE__ */
|
|
9213
|
+
return /* @__PURE__ */ React120.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React120.createElement(TimeStringControl, { ariaLabel, coerceInvalidToNull: true }));
|
|
8080
9214
|
};
|
|
8081
9215
|
|
|
8082
9216
|
// src/controls/inline-editing-control.tsx
|
|
8083
|
-
import * as
|
|
8084
|
-
import { useCallback as useCallback4, useState as
|
|
9217
|
+
import * as React124 from "react";
|
|
9218
|
+
import { useCallback as useCallback4, useState as useState22 } from "react";
|
|
8085
9219
|
import { escapedHtmlPropTypeUtil as escapedHtmlPropTypeUtil2 } from "@elementor/editor-props";
|
|
8086
|
-
import { Box as
|
|
9220
|
+
import { Box as Box32 } from "@elementor/ui";
|
|
8087
9221
|
|
|
8088
9222
|
// src/components/inline-editor.tsx
|
|
8089
|
-
import * as
|
|
8090
|
-
import { useEffect as useEffect18, useRef as
|
|
8091
|
-
import { Box as
|
|
9223
|
+
import * as React121 from "react";
|
|
9224
|
+
import { useEffect as useEffect18, useRef as useRef30 } from "react";
|
|
9225
|
+
import { Box as Box30 } from "@elementor/ui";
|
|
8092
9226
|
import Bold from "@tiptap/extension-bold";
|
|
8093
9227
|
import Document from "@tiptap/extension-document";
|
|
8094
9228
|
import HardBreak from "@tiptap/extension-hard-break";
|
|
8095
9229
|
import Heading from "@tiptap/extension-heading";
|
|
8096
9230
|
import Italic from "@tiptap/extension-italic";
|
|
8097
|
-
import
|
|
9231
|
+
import Link4 from "@tiptap/extension-link";
|
|
8098
9232
|
import Paragraph from "@tiptap/extension-paragraph";
|
|
8099
9233
|
import Strike from "@tiptap/extension-strike";
|
|
8100
9234
|
import Subscript from "@tiptap/extension-subscript";
|
|
@@ -8133,7 +9267,7 @@ function extractInlineHtmlContent(propValue) {
|
|
|
8133
9267
|
var ITALIC_KEYBOARD_SHORTCUT = "i";
|
|
8134
9268
|
var BOLD_KEYBOARD_SHORTCUT = "b";
|
|
8135
9269
|
var UNDERLINE_KEYBOARD_SHORTCUT = "u";
|
|
8136
|
-
var InlineEditor =
|
|
9270
|
+
var InlineEditor = React121.forwardRef((props, ref) => {
|
|
8137
9271
|
const {
|
|
8138
9272
|
value,
|
|
8139
9273
|
setValue,
|
|
@@ -8150,8 +9284,8 @@ var InlineEditor = React114.forwardRef((props, ref) => {
|
|
|
8150
9284
|
onSelectionEnd,
|
|
8151
9285
|
mountElement = null
|
|
8152
9286
|
} = props;
|
|
8153
|
-
const containerRef =
|
|
8154
|
-
const onBlurRef =
|
|
9287
|
+
const containerRef = useRef30(null);
|
|
9288
|
+
const onBlurRef = useRef30(onBlur);
|
|
8155
9289
|
onBlurRef.current = onBlur;
|
|
8156
9290
|
const documentContentSettings = !!expectedTag ? "block+" : "inline*";
|
|
8157
9291
|
const onUpdate = ({ editor: updatedEditor }) => {
|
|
@@ -8196,7 +9330,7 @@ var InlineEditor = React114.forwardRef((props, ref) => {
|
|
|
8196
9330
|
}).configure({
|
|
8197
9331
|
levels: [1, 2, 3, 4, 5, 6]
|
|
8198
9332
|
}),
|
|
8199
|
-
|
|
9333
|
+
Link4.configure({
|
|
8200
9334
|
openOnClick: false
|
|
8201
9335
|
}),
|
|
8202
9336
|
Text,
|
|
@@ -8246,10 +9380,10 @@ var InlineEditor = React114.forwardRef((props, ref) => {
|
|
|
8246
9380
|
if (mountElement) {
|
|
8247
9381
|
return null;
|
|
8248
9382
|
}
|
|
8249
|
-
return /* @__PURE__ */
|
|
9383
|
+
return /* @__PURE__ */ React121.createElement(Box30, { ref: containerRef, sx, className: wrapperClassName }, /* @__PURE__ */ React121.createElement(EditorContent, { ref, editor }));
|
|
8250
9384
|
});
|
|
8251
9385
|
var useOnUpdate = (callback, dependencies) => {
|
|
8252
|
-
const hasMounted =
|
|
9386
|
+
const hasMounted = useRef30(false);
|
|
8253
9387
|
useEffect18(() => {
|
|
8254
9388
|
if (hasMounted.current) {
|
|
8255
9389
|
callback();
|
|
@@ -8260,8 +9394,8 @@ var useOnUpdate = (callback, dependencies) => {
|
|
|
8260
9394
|
};
|
|
8261
9395
|
|
|
8262
9396
|
// src/components/inline-editor-toolbar.tsx
|
|
8263
|
-
import * as
|
|
8264
|
-
import { useEffect as useEffect20, useMemo as
|
|
9397
|
+
import * as React123 from "react";
|
|
9398
|
+
import { useEffect as useEffect20, useMemo as useMemo18, useRef as useRef32, useState as useState21 } from "react";
|
|
8265
9399
|
import { getContainer as getContainer2, getElementSetting } from "@elementor/editor-elements";
|
|
8266
9400
|
import {
|
|
8267
9401
|
BoldIcon,
|
|
@@ -8274,23 +9408,23 @@ import {
|
|
|
8274
9408
|
UnderlineIcon
|
|
8275
9409
|
} from "@elementor/icons";
|
|
8276
9410
|
import {
|
|
8277
|
-
Box as
|
|
9411
|
+
Box as Box31,
|
|
8278
9412
|
IconButton as IconButton9,
|
|
8279
|
-
ToggleButton as
|
|
9413
|
+
ToggleButton as ToggleButton5,
|
|
8280
9414
|
ToggleButtonGroup as ToggleButtonGroup2,
|
|
8281
9415
|
toggleButtonGroupClasses,
|
|
8282
|
-
Tooltip as
|
|
8283
|
-
usePopupState as
|
|
9416
|
+
Tooltip as Tooltip13,
|
|
9417
|
+
usePopupState as usePopupState13
|
|
8284
9418
|
} from "@elementor/ui";
|
|
8285
9419
|
import { useEditorState } from "@tiptap/react";
|
|
8286
|
-
import { __ as
|
|
9420
|
+
import { __ as __64 } from "@wordpress/i18n";
|
|
8287
9421
|
|
|
8288
9422
|
// src/components/url-popover.tsx
|
|
8289
|
-
import * as
|
|
8290
|
-
import { useEffect as useEffect19, useRef as
|
|
9423
|
+
import * as React122 from "react";
|
|
9424
|
+
import { useEffect as useEffect19, useRef as useRef31 } from "react";
|
|
8291
9425
|
import { ExternalLinkIcon } from "@elementor/icons";
|
|
8292
|
-
import { bindPopover as bindPopover8, Popover as
|
|
8293
|
-
import { __ as
|
|
9426
|
+
import { bindPopover as bindPopover8, Popover as Popover9, Stack as Stack23, TextField as TextField11, ToggleButton as ToggleButton4, Tooltip as Tooltip12 } from "@elementor/ui";
|
|
9427
|
+
import { __ as __63 } from "@wordpress/i18n";
|
|
8294
9428
|
var UrlPopover = ({
|
|
8295
9429
|
popupState,
|
|
8296
9430
|
restoreValue,
|
|
@@ -8300,7 +9434,7 @@ var UrlPopover = ({
|
|
|
8300
9434
|
openInNewTab,
|
|
8301
9435
|
onToggleNewTab
|
|
8302
9436
|
}) => {
|
|
8303
|
-
const inputRef =
|
|
9437
|
+
const inputRef = useRef31(null);
|
|
8304
9438
|
useEffect19(() => {
|
|
8305
9439
|
if (popupState.isOpen) {
|
|
8306
9440
|
requestAnimationFrame(() => inputRef.current?.focus());
|
|
@@ -8310,8 +9444,8 @@ var UrlPopover = ({
|
|
|
8310
9444
|
restoreValue();
|
|
8311
9445
|
popupState.close();
|
|
8312
9446
|
};
|
|
8313
|
-
return /* @__PURE__ */
|
|
8314
|
-
|
|
9447
|
+
return /* @__PURE__ */ React122.createElement(
|
|
9448
|
+
Popover9,
|
|
8315
9449
|
{
|
|
8316
9450
|
slotProps: {
|
|
8317
9451
|
paper: { sx: { borderRadius: "16px", width: anchorRef.current?.offsetWidth + "px", marginTop: -1 } }
|
|
@@ -8321,30 +9455,30 @@ var UrlPopover = ({
|
|
|
8321
9455
|
transformOrigin: { vertical: "top", horizontal: "left" },
|
|
8322
9456
|
onClose: handleClose
|
|
8323
9457
|
},
|
|
8324
|
-
/* @__PURE__ */
|
|
9458
|
+
/* @__PURE__ */ React122.createElement(Stack23, { direction: "row", alignItems: "center", gap: 1, sx: { p: 1.5 } }, /* @__PURE__ */ React122.createElement(
|
|
8325
9459
|
TextField11,
|
|
8326
9460
|
{
|
|
8327
9461
|
value,
|
|
8328
9462
|
onChange,
|
|
8329
9463
|
size: "tiny",
|
|
8330
9464
|
fullWidth: true,
|
|
8331
|
-
placeholder:
|
|
9465
|
+
placeholder: __63("Type a URL", "elementor"),
|
|
8332
9466
|
inputProps: { ref: inputRef },
|
|
8333
9467
|
color: "secondary",
|
|
8334
9468
|
InputProps: { sx: { borderRadius: "8px" } },
|
|
8335
9469
|
onKeyUp: (event) => event.key === "Enter" && handleClose()
|
|
8336
9470
|
}
|
|
8337
|
-
), /* @__PURE__ */
|
|
8338
|
-
|
|
9471
|
+
), /* @__PURE__ */ React122.createElement(Tooltip12, { title: __63("Open in a new tab", "elementor") }, /* @__PURE__ */ React122.createElement(
|
|
9472
|
+
ToggleButton4,
|
|
8339
9473
|
{
|
|
8340
9474
|
size: "tiny",
|
|
8341
9475
|
value: "newTab",
|
|
8342
9476
|
selected: openInNewTab,
|
|
8343
9477
|
onClick: onToggleNewTab,
|
|
8344
|
-
"aria-label":
|
|
9478
|
+
"aria-label": __63("Open in a new tab", "elementor"),
|
|
8345
9479
|
sx: { borderRadius: "8px" }
|
|
8346
9480
|
},
|
|
8347
|
-
/* @__PURE__ */
|
|
9481
|
+
/* @__PURE__ */ React122.createElement(ExternalLinkIcon, { fontSize: "tiny" })
|
|
8348
9482
|
)))
|
|
8349
9483
|
);
|
|
8350
9484
|
};
|
|
@@ -8356,16 +9490,16 @@ var InlineEditorToolbar = ({
|
|
|
8356
9490
|
sx = {},
|
|
8357
9491
|
inControlPanel = false
|
|
8358
9492
|
}) => {
|
|
8359
|
-
const [urlValue, setUrlValue] =
|
|
8360
|
-
const [openInNewTab, setOpenInNewTab] =
|
|
8361
|
-
const toolbarRef =
|
|
8362
|
-
const linkPopupState =
|
|
9493
|
+
const [urlValue, setUrlValue] = useState21("");
|
|
9494
|
+
const [openInNewTab, setOpenInNewTab] = useState21(false);
|
|
9495
|
+
const toolbarRef = useRef32(null);
|
|
9496
|
+
const linkPopupState = usePopupState13({ variant: "popover" });
|
|
8363
9497
|
const isElementClickable = elementId ? checkIfElementIsClickable(elementId) : false;
|
|
8364
9498
|
const editorState = useEditorState({
|
|
8365
9499
|
editor,
|
|
8366
9500
|
selector: (ctx) => possibleFormats.filter((format) => ctx.editor.isActive(format))
|
|
8367
9501
|
});
|
|
8368
|
-
const formatButtonsList =
|
|
9502
|
+
const formatButtonsList = useMemo18(() => {
|
|
8369
9503
|
const buttons = Object.values(formatButtons);
|
|
8370
9504
|
if (isElementClickable) {
|
|
8371
9505
|
return buttons.filter((button) => button.action !== "link");
|
|
@@ -8407,8 +9541,8 @@ var InlineEditorToolbar = ({
|
|
|
8407
9541
|
editor?.commands?.focus();
|
|
8408
9542
|
}
|
|
8409
9543
|
}, [editor, inControlPanel]);
|
|
8410
|
-
return /* @__PURE__ */
|
|
8411
|
-
|
|
9544
|
+
return /* @__PURE__ */ React123.createElement(
|
|
9545
|
+
Box31,
|
|
8412
9546
|
{
|
|
8413
9547
|
ref: toolbarRef,
|
|
8414
9548
|
sx: {
|
|
@@ -8441,8 +9575,8 @@ var InlineEditorToolbar = ({
|
|
|
8441
9575
|
}
|
|
8442
9576
|
}
|
|
8443
9577
|
},
|
|
8444
|
-
/* @__PURE__ */
|
|
8445
|
-
/* @__PURE__ */
|
|
9578
|
+
/* @__PURE__ */ React123.createElement(Tooltip13, { title: clearButton.label, placement: "top", sx: { borderRadius: "8px" } }, /* @__PURE__ */ React123.createElement(IconButton9, { "aria-label": clearButton.label, onClick: () => clearButton.method(editor), size: "tiny" }, clearButton.icon)),
|
|
9579
|
+
/* @__PURE__ */ React123.createElement(
|
|
8446
9580
|
ToggleButtonGroup2,
|
|
8447
9581
|
{
|
|
8448
9582
|
value: editorState,
|
|
@@ -8472,8 +9606,8 @@ var InlineEditorToolbar = ({
|
|
|
8472
9606
|
}
|
|
8473
9607
|
}
|
|
8474
9608
|
},
|
|
8475
|
-
formatButtonsList.map((button) => /* @__PURE__ */
|
|
8476
|
-
|
|
9609
|
+
formatButtonsList.map((button) => /* @__PURE__ */ React123.createElement(Tooltip13, { title: button.label, key: button.action, placement: "top" }, /* @__PURE__ */ React123.createElement(
|
|
9610
|
+
ToggleButton5,
|
|
8477
9611
|
{
|
|
8478
9612
|
value: button.action,
|
|
8479
9613
|
"aria-label": button.label,
|
|
@@ -8490,7 +9624,7 @@ var InlineEditorToolbar = ({
|
|
|
8490
9624
|
button.icon
|
|
8491
9625
|
)))
|
|
8492
9626
|
),
|
|
8493
|
-
/* @__PURE__ */
|
|
9627
|
+
/* @__PURE__ */ React123.createElement(
|
|
8494
9628
|
UrlPopover,
|
|
8495
9629
|
{
|
|
8496
9630
|
popupState: linkPopupState,
|
|
@@ -8513,64 +9647,64 @@ var checkIfElementIsClickable = (elementId) => {
|
|
|
8513
9647
|
};
|
|
8514
9648
|
var toolbarButtons = {
|
|
8515
9649
|
clear: {
|
|
8516
|
-
label:
|
|
8517
|
-
icon: /* @__PURE__ */
|
|
9650
|
+
label: __64("Clear", "elementor"),
|
|
9651
|
+
icon: /* @__PURE__ */ React123.createElement(MinusIcon2, { fontSize: "tiny" }),
|
|
8518
9652
|
action: "clear",
|
|
8519
9653
|
method: (editor) => {
|
|
8520
9654
|
editor.chain().focus().clearNodes().unsetAllMarks().run();
|
|
8521
9655
|
}
|
|
8522
9656
|
},
|
|
8523
9657
|
bold: {
|
|
8524
|
-
label:
|
|
8525
|
-
icon: /* @__PURE__ */
|
|
9658
|
+
label: __64("Bold", "elementor"),
|
|
9659
|
+
icon: /* @__PURE__ */ React123.createElement(BoldIcon, { fontSize: "tiny" }),
|
|
8526
9660
|
action: "bold",
|
|
8527
9661
|
method: (editor) => {
|
|
8528
9662
|
editor.chain().focus().toggleBold().run();
|
|
8529
9663
|
}
|
|
8530
9664
|
},
|
|
8531
9665
|
italic: {
|
|
8532
|
-
label:
|
|
8533
|
-
icon: /* @__PURE__ */
|
|
9666
|
+
label: __64("Italic", "elementor"),
|
|
9667
|
+
icon: /* @__PURE__ */ React123.createElement(ItalicIcon, { fontSize: "tiny" }),
|
|
8534
9668
|
action: "italic",
|
|
8535
9669
|
method: (editor) => {
|
|
8536
9670
|
editor.chain().focus().toggleItalic().run();
|
|
8537
9671
|
}
|
|
8538
9672
|
},
|
|
8539
9673
|
underline: {
|
|
8540
|
-
label:
|
|
8541
|
-
icon: /* @__PURE__ */
|
|
9674
|
+
label: __64("Underline", "elementor"),
|
|
9675
|
+
icon: /* @__PURE__ */ React123.createElement(UnderlineIcon, { fontSize: "tiny" }),
|
|
8542
9676
|
action: "underline",
|
|
8543
9677
|
method: (editor) => {
|
|
8544
9678
|
editor.chain().focus().toggleUnderline().run();
|
|
8545
9679
|
}
|
|
8546
9680
|
},
|
|
8547
9681
|
strike: {
|
|
8548
|
-
label:
|
|
8549
|
-
icon: /* @__PURE__ */
|
|
9682
|
+
label: __64("Strikethrough", "elementor"),
|
|
9683
|
+
icon: /* @__PURE__ */ React123.createElement(StrikethroughIcon, { fontSize: "tiny" }),
|
|
8550
9684
|
action: "strike",
|
|
8551
9685
|
method: (editor) => {
|
|
8552
9686
|
editor.chain().focus().toggleStrike().run();
|
|
8553
9687
|
}
|
|
8554
9688
|
},
|
|
8555
9689
|
superscript: {
|
|
8556
|
-
label:
|
|
8557
|
-
icon: /* @__PURE__ */
|
|
9690
|
+
label: __64("Superscript", "elementor"),
|
|
9691
|
+
icon: /* @__PURE__ */ React123.createElement(SuperscriptIcon, { fontSize: "tiny" }),
|
|
8558
9692
|
action: "superscript",
|
|
8559
9693
|
method: (editor) => {
|
|
8560
9694
|
editor.chain().focus().toggleSuperscript().run();
|
|
8561
9695
|
}
|
|
8562
9696
|
},
|
|
8563
9697
|
subscript: {
|
|
8564
|
-
label:
|
|
8565
|
-
icon: /* @__PURE__ */
|
|
9698
|
+
label: __64("Subscript", "elementor"),
|
|
9699
|
+
icon: /* @__PURE__ */ React123.createElement(SubscriptIcon, { fontSize: "tiny" }),
|
|
8566
9700
|
action: "subscript",
|
|
8567
9701
|
method: (editor) => {
|
|
8568
9702
|
editor.chain().focus().toggleSubscript().run();
|
|
8569
9703
|
}
|
|
8570
9704
|
},
|
|
8571
9705
|
link: {
|
|
8572
|
-
label:
|
|
8573
|
-
icon: /* @__PURE__ */
|
|
9706
|
+
label: __64("Link", "elementor"),
|
|
9707
|
+
icon: /* @__PURE__ */ React123.createElement(LinkIcon3, { fontSize: "tiny" }),
|
|
8574
9708
|
action: "link",
|
|
8575
9709
|
method: null
|
|
8576
9710
|
}
|
|
@@ -8583,7 +9717,7 @@ var InlineEditingControl = createControl(({ sx, attributes, props, context: { el
|
|
|
8583
9717
|
const { setValue, placeholder, value } = useBoundProp(escapedHtmlPropTypeUtil2);
|
|
8584
9718
|
const { value: rawValue } = usePropKeyContext();
|
|
8585
9719
|
const content = value ?? extractInlineHtmlContent(rawValue);
|
|
8586
|
-
const [editor, setEditor] =
|
|
9720
|
+
const [editor, setEditor] = useState22(null);
|
|
8587
9721
|
const handleChange = useCallback4(
|
|
8588
9722
|
(newValue) => {
|
|
8589
9723
|
const html = newValue ?? "";
|
|
@@ -8591,7 +9725,7 @@ var InlineEditingControl = createControl(({ sx, attributes, props, context: { el
|
|
|
8591
9725
|
},
|
|
8592
9726
|
[setValue]
|
|
8593
9727
|
);
|
|
8594
|
-
return /* @__PURE__ */
|
|
9728
|
+
return /* @__PURE__ */ React124.createElement(ControlActions, null, /* @__PURE__ */ React124.createElement(Box32, { sx: { position: "relative" } }, editor && editor.isEditable && /* @__PURE__ */ React124.createElement(
|
|
8595
9729
|
InlineEditorToolbar,
|
|
8596
9730
|
{
|
|
8597
9731
|
editor,
|
|
@@ -8604,8 +9738,8 @@ var InlineEditingControl = createControl(({ sx, attributes, props, context: { el
|
|
|
8604
9738
|
}),
|
|
8605
9739
|
inControlPanel: true
|
|
8606
9740
|
}
|
|
8607
|
-
), /* @__PURE__ */
|
|
8608
|
-
|
|
9741
|
+
), /* @__PURE__ */ React124.createElement(
|
|
9742
|
+
Box32,
|
|
8609
9743
|
{
|
|
8610
9744
|
sx: (theme) => ({
|
|
8611
9745
|
p: 0.8,
|
|
@@ -8649,7 +9783,7 @@ var InlineEditingControl = createControl(({ sx, attributes, props, context: { el
|
|
|
8649
9783
|
...attributes,
|
|
8650
9784
|
...props
|
|
8651
9785
|
},
|
|
8652
|
-
/* @__PURE__ */
|
|
9786
|
+
/* @__PURE__ */ React124.createElement(
|
|
8653
9787
|
InlineEditor,
|
|
8654
9788
|
{
|
|
8655
9789
|
value: content,
|
|
@@ -8666,17 +9800,17 @@ var InlineEditingControl = createControl(({ sx, attributes, props, context: { el
|
|
|
8666
9800
|
});
|
|
8667
9801
|
|
|
8668
9802
|
// src/controls/email-form-action-control/index.tsx
|
|
8669
|
-
import * as
|
|
9803
|
+
import * as React128 from "react";
|
|
8670
9804
|
import { emailsPropTypeUtil } from "@elementor/editor-props";
|
|
8671
9805
|
import { CollapsibleContent } from "@elementor/editor-ui";
|
|
8672
|
-
import { Box as
|
|
8673
|
-
import { __ as
|
|
9806
|
+
import { Box as Box33, Divider as Divider6, Stack as Stack25 } from "@elementor/ui";
|
|
9807
|
+
import { __ as __66 } from "@wordpress/i18n";
|
|
8674
9808
|
|
|
8675
9809
|
// src/controls/email-form-action-control/fields.tsx
|
|
8676
|
-
import * as
|
|
9810
|
+
import * as React127 from "react";
|
|
8677
9811
|
import { InfoAlert as InfoAlert2 } from "@elementor/editor-ui";
|
|
8678
|
-
import { Grid as Grid34, Stack as
|
|
8679
|
-
import { __ as
|
|
9812
|
+
import { Grid as Grid34, Stack as Stack24 } from "@elementor/ui";
|
|
9813
|
+
import { __ as __65 } from "@wordpress/i18n";
|
|
8680
9814
|
|
|
8681
9815
|
// src/hooks/use-form-field-suggestions.ts
|
|
8682
9816
|
import { getContainer as getContainer3, getSelectedElements as getSelectedElements3, getWidgetsCache } from "@elementor/editor-elements";
|
|
@@ -8765,8 +9899,8 @@ function useFormFieldSuggestions(options) {
|
|
|
8765
9899
|
}
|
|
8766
9900
|
|
|
8767
9901
|
// src/controls/email-form-action-control/email-chips-field.tsx
|
|
8768
|
-
import * as
|
|
8769
|
-
import { useMemo as
|
|
9902
|
+
import * as React125 from "react";
|
|
9903
|
+
import { useMemo as useMemo19, useState as useState23 } from "react";
|
|
8770
9904
|
import { stringArrayPropTypeUtil as stringArrayPropTypeUtil3, stringPropTypeUtil as stringPropTypeUtil23 } from "@elementor/editor-props";
|
|
8771
9905
|
import { Autocomplete as Autocomplete4, Grid as Grid32, TextField as TextField12 } from "@elementor/ui";
|
|
8772
9906
|
|
|
@@ -8804,10 +9938,10 @@ function resolveMention(raw, suggestions) {
|
|
|
8804
9938
|
}
|
|
8805
9939
|
var EmailChipsControl = createControl(({ placeholder, suggestions = [] }) => {
|
|
8806
9940
|
const { value, setValue, disabled } = useBoundProp(stringArrayPropTypeUtil3);
|
|
8807
|
-
const [inputValue, setInputValue] =
|
|
9941
|
+
const [inputValue, setInputValue] = useState23("");
|
|
8808
9942
|
const items2 = value || [];
|
|
8809
9943
|
const selectedValues = items2.map((item) => stringPropTypeUtil23.extract(item)).filter((val) => val !== null);
|
|
8810
|
-
const suggestionOptions =
|
|
9944
|
+
const suggestionOptions = useMemo19(
|
|
8811
9945
|
() => suggestions.map((suggestion) => `[${suggestion.value}]`),
|
|
8812
9946
|
[suggestions]
|
|
8813
9947
|
);
|
|
@@ -8842,7 +9976,7 @@ var EmailChipsControl = createControl(({ placeholder, suggestions = [] }) => {
|
|
|
8842
9976
|
tryAddChip(inputValue);
|
|
8843
9977
|
}
|
|
8844
9978
|
};
|
|
8845
|
-
return /* @__PURE__ */
|
|
9979
|
+
return /* @__PURE__ */ React125.createElement(ControlActions, null, /* @__PURE__ */ React125.createElement(
|
|
8846
9980
|
Autocomplete4,
|
|
8847
9981
|
{
|
|
8848
9982
|
fullWidth: true,
|
|
@@ -8867,99 +10001,99 @@ var EmailChipsControl = createControl(({ placeholder, suggestions = [] }) => {
|
|
|
8867
10001
|
onBlur: handleBlur,
|
|
8868
10002
|
getOptionLabel: (option) => option,
|
|
8869
10003
|
isOptionEqualToValue: (option, val) => option === val,
|
|
8870
|
-
renderInput: (params) => /* @__PURE__ */
|
|
8871
|
-
renderTags: (tagValues, getTagProps) => /* @__PURE__ */
|
|
10004
|
+
renderInput: (params) => /* @__PURE__ */ React125.createElement(TextField12, { ...params, placeholder, onKeyDown: handleKeyDown }),
|
|
10005
|
+
renderTags: (tagValues, getTagProps) => /* @__PURE__ */ React125.createElement(ChipsList, { getLabel: (option) => option, getTagProps, values: tagValues })
|
|
8872
10006
|
}
|
|
8873
10007
|
));
|
|
8874
10008
|
});
|
|
8875
|
-
var EmailChipsField = ({ fieldLabel, placeholder, suggestions }) => /* @__PURE__ */
|
|
10009
|
+
var EmailChipsField = ({ fieldLabel, placeholder, suggestions }) => /* @__PURE__ */ React125.createElement(Grid32, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React125.createElement(Grid32, { item: true }, /* @__PURE__ */ React125.createElement(ControlFormLabel, null, fieldLabel)), /* @__PURE__ */ React125.createElement(Grid32, { item: true }, /* @__PURE__ */ React125.createElement(EmailChipsControl, { placeholder, suggestions })));
|
|
8876
10010
|
|
|
8877
10011
|
// src/controls/email-form-action-control/email-field.tsx
|
|
8878
|
-
import * as
|
|
10012
|
+
import * as React126 from "react";
|
|
8879
10013
|
import { Grid as Grid33 } from "@elementor/ui";
|
|
8880
|
-
var EmailField = ({ bind, label, placeholder }) => /* @__PURE__ */
|
|
10014
|
+
var EmailField = ({ bind, label, placeholder }) => /* @__PURE__ */ React126.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React126.createElement(Grid33, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React126.createElement(Grid33, { item: true }, /* @__PURE__ */ React126.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React126.createElement(Grid33, { item: true }, /* @__PURE__ */ React126.createElement(TextControl, { placeholder }))));
|
|
8881
10015
|
|
|
8882
10016
|
// src/controls/email-form-action-control/fields.tsx
|
|
8883
10017
|
var SendToField = ({ placeholder }) => {
|
|
8884
10018
|
const suggestions = useFormFieldSuggestions({ inputType: "email" });
|
|
8885
|
-
return /* @__PURE__ */
|
|
10019
|
+
return /* @__PURE__ */ React127.createElement(PropKeyProvider, { bind: "to" }, /* @__PURE__ */ React127.createElement(Stack24, { gap: 0.5 }, /* @__PURE__ */ React127.createElement(
|
|
8886
10020
|
EmailChipsField,
|
|
8887
10021
|
{
|
|
8888
|
-
fieldLabel:
|
|
10022
|
+
fieldLabel: __65("Send to", "elementor"),
|
|
8889
10023
|
placeholder,
|
|
8890
10024
|
suggestions
|
|
8891
10025
|
}
|
|
8892
|
-
), shouldShowMentionsInfo() && /* @__PURE__ */
|
|
10026
|
+
), shouldShowMentionsInfo() && /* @__PURE__ */ React127.createElement(InfoAlert2, null, __65("Type @ or an email field name to insert its submitted value.", "elementor"))));
|
|
8893
10027
|
};
|
|
8894
|
-
var SubjectField = () => /* @__PURE__ */
|
|
10028
|
+
var SubjectField = () => /* @__PURE__ */ React127.createElement(
|
|
8895
10029
|
EmailField,
|
|
8896
10030
|
{
|
|
8897
10031
|
bind: "subject",
|
|
8898
|
-
label:
|
|
8899
|
-
placeholder:
|
|
10032
|
+
label: __65("Email subject", "elementor"),
|
|
10033
|
+
placeholder: __65("New form submission", "elementor")
|
|
8900
10034
|
}
|
|
8901
10035
|
);
|
|
8902
10036
|
var MessageField = () => {
|
|
8903
10037
|
const suggestions = useFormFieldSuggestions();
|
|
8904
|
-
return /* @__PURE__ */
|
|
10038
|
+
return /* @__PURE__ */ React127.createElement(PropKeyProvider, { bind: "message" }, /* @__PURE__ */ React127.createElement(Grid34, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React127.createElement(Grid34, { item: true }, /* @__PURE__ */ React127.createElement(ControlFormLabel, null, __65("Message", "elementor"))), /* @__PURE__ */ React127.createElement(Grid34, { item: true }, /* @__PURE__ */ React127.createElement(MentionTextAreaControl, { suggestions })), /* @__PURE__ */ React127.createElement(Grid34, { item: true }, /* @__PURE__ */ React127.createElement(InfoAlert2, null, shouldShowMentionsInfo() ? __65(
|
|
8905
10039
|
"[all-fields] shortcode sends all fields. Type @ to insert specific fields and customize your message.",
|
|
8906
10040
|
"elementor"
|
|
8907
|
-
) :
|
|
10041
|
+
) : __65("[all-fields] shortcode sends all fields.", "elementor")))));
|
|
8908
10042
|
};
|
|
8909
|
-
var FromEmailField = () => /* @__PURE__ */
|
|
10043
|
+
var FromEmailField = () => /* @__PURE__ */ React127.createElement(
|
|
8910
10044
|
EmailField,
|
|
8911
10045
|
{
|
|
8912
10046
|
bind: "from",
|
|
8913
|
-
label:
|
|
8914
|
-
placeholder:
|
|
10047
|
+
label: __65("From email", "elementor"),
|
|
10048
|
+
placeholder: __65("What email should appear as the sender?", "elementor")
|
|
8915
10049
|
}
|
|
8916
10050
|
);
|
|
8917
|
-
var FromNameField = () => /* @__PURE__ */
|
|
10051
|
+
var FromNameField = () => /* @__PURE__ */ React127.createElement(
|
|
8918
10052
|
EmailField,
|
|
8919
10053
|
{
|
|
8920
10054
|
bind: "from-name",
|
|
8921
|
-
label:
|
|
8922
|
-
placeholder:
|
|
10055
|
+
label: __65("From name", "elementor"),
|
|
10056
|
+
placeholder: __65("What name should appear as the sender?", "elementor")
|
|
8923
10057
|
}
|
|
8924
10058
|
);
|
|
8925
10059
|
var ReplyToField = () => {
|
|
8926
10060
|
const emailSuggestions = useFormFieldSuggestions({ inputType: "email" });
|
|
8927
|
-
return /* @__PURE__ */
|
|
10061
|
+
return /* @__PURE__ */ React127.createElement(PropKeyProvider, { bind: "reply-to" }, /* @__PURE__ */ React127.createElement(Grid34, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React127.createElement(Grid34, { item: true }, /* @__PURE__ */ React127.createElement(ControlFormLabel, null, __65("Reply-to", "elementor"))), /* @__PURE__ */ React127.createElement(Grid34, { item: true }, /* @__PURE__ */ React127.createElement(
|
|
8928
10062
|
MentionTextAreaControl,
|
|
8929
10063
|
{
|
|
8930
10064
|
suggestions: emailSuggestions,
|
|
8931
10065
|
rows: 1,
|
|
8932
10066
|
triggerPosition: "start",
|
|
8933
|
-
placeholder:
|
|
10067
|
+
placeholder: __65("You can type @ to insert an email field", "elementor")
|
|
8934
10068
|
}
|
|
8935
10069
|
))));
|
|
8936
10070
|
};
|
|
8937
10071
|
var CcField = () => {
|
|
8938
10072
|
const suggestions = useFormFieldSuggestions({ inputType: "email" });
|
|
8939
|
-
return /* @__PURE__ */
|
|
10073
|
+
return /* @__PURE__ */ React127.createElement(PropKeyProvider, { bind: "cc" }, /* @__PURE__ */ React127.createElement(EmailChipsField, { fieldLabel: __65("Cc", "elementor"), suggestions }));
|
|
8940
10074
|
};
|
|
8941
10075
|
var BccField = () => {
|
|
8942
10076
|
const suggestions = useFormFieldSuggestions({ inputType: "email" });
|
|
8943
|
-
return /* @__PURE__ */
|
|
10077
|
+
return /* @__PURE__ */ React127.createElement(PropKeyProvider, { bind: "bcc" }, /* @__PURE__ */ React127.createElement(EmailChipsField, { fieldLabel: __65("Bcc", "elementor"), suggestions }));
|
|
8944
10078
|
};
|
|
8945
|
-
var MetaDataField = () => /* @__PURE__ */
|
|
10079
|
+
var MetaDataField = () => /* @__PURE__ */ React127.createElement(PropKeyProvider, { bind: "meta-data" }, /* @__PURE__ */ React127.createElement(Stack24, { gap: 0.5 }, /* @__PURE__ */ React127.createElement(ControlFormLabel, null, __65("Metadata", "elementor")), /* @__PURE__ */ React127.createElement(
|
|
8946
10080
|
ChipsControl,
|
|
8947
10081
|
{
|
|
8948
10082
|
options: [
|
|
8949
|
-
{ label:
|
|
8950
|
-
{ label:
|
|
8951
|
-
{ label:
|
|
8952
|
-
{ label:
|
|
8953
|
-
{ label:
|
|
10083
|
+
{ label: __65("Date", "elementor"), value: "date" },
|
|
10084
|
+
{ label: __65("Time", "elementor"), value: "time" },
|
|
10085
|
+
{ label: __65("Page URL", "elementor"), value: "page-url" },
|
|
10086
|
+
{ label: __65("User agent", "elementor"), value: "user-agent" },
|
|
10087
|
+
{ label: __65("Credit", "elementor"), value: "credit" }
|
|
8954
10088
|
]
|
|
8955
10089
|
}
|
|
8956
10090
|
)));
|
|
8957
|
-
var SendAsField = () => /* @__PURE__ */
|
|
10091
|
+
var SendAsField = () => /* @__PURE__ */ React127.createElement(PropKeyProvider, { bind: "send-as" }, /* @__PURE__ */ React127.createElement(Grid34, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React127.createElement(Grid34, { item: true }, /* @__PURE__ */ React127.createElement(ControlFormLabel, null, __65("Send as", "elementor"))), /* @__PURE__ */ React127.createElement(Grid34, { item: true }, /* @__PURE__ */ React127.createElement(
|
|
8958
10092
|
SelectControl,
|
|
8959
10093
|
{
|
|
8960
10094
|
options: [
|
|
8961
|
-
{ label:
|
|
8962
|
-
{ label:
|
|
10095
|
+
{ label: __65("HTML", "elementor"), value: "html" },
|
|
10096
|
+
{ label: __65("Plain Text", "elementor"), value: "plain" }
|
|
8963
10097
|
]
|
|
8964
10098
|
}
|
|
8965
10099
|
))));
|
|
@@ -8968,25 +10102,86 @@ var SendAsField = () => /* @__PURE__ */ React120.createElement(PropKeyProvider,
|
|
|
8968
10102
|
var EmailFormActionControl = createControl(
|
|
8969
10103
|
({ toPlaceholder, label }) => {
|
|
8970
10104
|
const { value, setValue, ...propContext } = useBoundProp(emailsPropTypeUtil);
|
|
8971
|
-
return /* @__PURE__ */
|
|
10105
|
+
return /* @__PURE__ */ React128.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React128.createElement(Stack25, { gap: 2 }, /* @__PURE__ */ React128.createElement(ControlLabel, null, label ? label + " " + __66("settings", "elementor") : __66("Email settings", "elementor")), /* @__PURE__ */ React128.createElement(SendToField, { placeholder: toPlaceholder }), /* @__PURE__ */ React128.createElement(SubjectField, null), /* @__PURE__ */ React128.createElement(MessageField, null), /* @__PURE__ */ React128.createElement(FromEmailField, null), /* @__PURE__ */ React128.createElement(AdvancedSettings, null)));
|
|
8972
10106
|
}
|
|
8973
10107
|
);
|
|
8974
|
-
var AdvancedSettings = () => /* @__PURE__ */
|
|
10108
|
+
var AdvancedSettings = () => /* @__PURE__ */ React128.createElement(CollapsibleContent, { defaultOpen: false }, /* @__PURE__ */ React128.createElement(Box33, { sx: { pt: 2 } }, /* @__PURE__ */ React128.createElement(Stack25, { gap: 2 }, /* @__PURE__ */ React128.createElement(FromNameField, null), /* @__PURE__ */ React128.createElement(ReplyToField, null), /* @__PURE__ */ React128.createElement(CcField, null), /* @__PURE__ */ React128.createElement(BccField, null), /* @__PURE__ */ React128.createElement(Divider6, null), /* @__PURE__ */ React128.createElement(MetaDataField, null), /* @__PURE__ */ React128.createElement(SendAsField, null))));
|
|
8975
10109
|
|
|
8976
10110
|
// src/controls/attachment-type-control.tsx
|
|
8977
|
-
import * as
|
|
10111
|
+
import * as React129 from "react";
|
|
8978
10112
|
import { InfoAlert as InfoAlert3 } from "@elementor/editor-ui";
|
|
8979
10113
|
import { Grid as Grid35 } from "@elementor/ui";
|
|
8980
|
-
import { __ as
|
|
10114
|
+
import { __ as __67 } from "@wordpress/i18n";
|
|
8981
10115
|
var AttachmentTypeControl = createControl(({ label, options }) => {
|
|
8982
|
-
return /* @__PURE__ */
|
|
10116
|
+
return /* @__PURE__ */ React129.createElement(Grid35, { container: true, direction: "column", gap: 1 }, label && /* @__PURE__ */ React129.createElement(Grid35, { item: true }, /* @__PURE__ */ React129.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React129.createElement(Grid35, { item: true }, /* @__PURE__ */ React129.createElement(SelectControl, { options })), /* @__PURE__ */ React129.createElement(Grid35, { item: true }, /* @__PURE__ */ React129.createElement(InfoAlert3, null, __67(
|
|
8983
10117
|
"Linked uploads are saved to the server. Direct attachments will not appear under Submissions.",
|
|
8984
10118
|
"elementor"
|
|
8985
10119
|
))));
|
|
8986
10120
|
});
|
|
8987
10121
|
|
|
10122
|
+
// src/controls/notice-control.tsx
|
|
10123
|
+
import * as React130 from "react";
|
|
10124
|
+
import { useState as useState24 } from "react";
|
|
10125
|
+
import { ajax } from "@elementor/editor-v1-adapters";
|
|
10126
|
+
import { BulbIcon } from "@elementor/icons";
|
|
10127
|
+
import { Alert as Alert3, AlertAction as AlertAction2, AlertTitle as AlertTitle4, styled as styled13, Typography as Typography13 } from "@elementor/ui";
|
|
10128
|
+
var NoticeTitle = styled13(AlertTitle4)({
|
|
10129
|
+
"&.MuiAlertTitle-root.MuiAlertTitle-root": {
|
|
10130
|
+
marginBottom: 4,
|
|
10131
|
+
fontStyle: "italic"
|
|
10132
|
+
}
|
|
10133
|
+
});
|
|
10134
|
+
var markNoticeAsDismissedInSession = (dismissId) => {
|
|
10135
|
+
const dismissedNotices = window.elementor?.config?.user?.dismissed_editor_notices;
|
|
10136
|
+
if (dismissedNotices && !dismissedNotices.includes(dismissId)) {
|
|
10137
|
+
dismissedNotices.push(dismissId);
|
|
10138
|
+
}
|
|
10139
|
+
};
|
|
10140
|
+
var NoticeControl = createControl(
|
|
10141
|
+
({ noticeType = "info", heading, content, dismissible, buttonText, buttonUrl }) => {
|
|
10142
|
+
const [isDismissed, setIsDismissed] = useState24(false);
|
|
10143
|
+
if (isDismissed || !content) {
|
|
10144
|
+
return null;
|
|
10145
|
+
}
|
|
10146
|
+
const severity = noticeType === "danger" ? "error" : noticeType;
|
|
10147
|
+
const icon = noticeType === "info" ? /* @__PURE__ */ React130.createElement(BulbIcon, { fontSize: "inherit" }) : void 0;
|
|
10148
|
+
const handleDismiss = () => {
|
|
10149
|
+
setIsDismissed(true);
|
|
10150
|
+
if (!dismissible) {
|
|
10151
|
+
return;
|
|
10152
|
+
}
|
|
10153
|
+
markNoticeAsDismissedInSession(dismissible);
|
|
10154
|
+
ajax.load({
|
|
10155
|
+
action: "dismissed_editor_notices",
|
|
10156
|
+
unique_id: `dismiss-editor-notice-${dismissible}`,
|
|
10157
|
+
data: { dismissId: dismissible }
|
|
10158
|
+
}).catch(() => {
|
|
10159
|
+
});
|
|
10160
|
+
};
|
|
10161
|
+
const handleActionClick = () => {
|
|
10162
|
+
setIsDismissed(true);
|
|
10163
|
+
if (dismissible) {
|
|
10164
|
+
markNoticeAsDismissedInSession(dismissible);
|
|
10165
|
+
}
|
|
10166
|
+
};
|
|
10167
|
+
return /* @__PURE__ */ React130.createElement(Alert3, { variant: "outlined", severity, icon, size: "small", onClose: handleDismiss }, heading && /* @__PURE__ */ React130.createElement(NoticeTitle, null, heading), /* @__PURE__ */ React130.createElement(Typography13, { variant: "caption", color: "textSecondary", sx: { fontStyle: "italic" } }, content), buttonText && buttonUrl && /* @__PURE__ */ React130.createElement(
|
|
10168
|
+
AlertAction2,
|
|
10169
|
+
{
|
|
10170
|
+
variant: "contained",
|
|
10171
|
+
color: severity,
|
|
10172
|
+
target: "_blank",
|
|
10173
|
+
rel: "noopener noreferrer",
|
|
10174
|
+
href: buttonUrl,
|
|
10175
|
+
onClick: handleActionClick,
|
|
10176
|
+
sx: { mt: 2 }
|
|
10177
|
+
},
|
|
10178
|
+
buttonText
|
|
10179
|
+
));
|
|
10180
|
+
}
|
|
10181
|
+
);
|
|
10182
|
+
|
|
8988
10183
|
// src/controls/grid-span-control.tsx
|
|
8989
|
-
import * as
|
|
10184
|
+
import * as React131 from "react";
|
|
8990
10185
|
import { spanPropTypeUtil } from "@elementor/editor-props";
|
|
8991
10186
|
import { TextField as TextField13 } from "@elementor/ui";
|
|
8992
10187
|
var GridSpanControl = createControl(
|
|
@@ -9005,7 +10200,7 @@ var GridSpanControl = createControl(
|
|
|
9005
10200
|
setValue(next === "" ? null : next);
|
|
9006
10201
|
};
|
|
9007
10202
|
const placeholder = propPlaceholder ?? boundPlaceholder ?? `e.g: 'span 2' or '1 / 3'`;
|
|
9008
|
-
return /* @__PURE__ */
|
|
10203
|
+
return /* @__PURE__ */ React131.createElement(ControlActions, null, /* @__PURE__ */ React131.createElement(
|
|
9009
10204
|
TextField13,
|
|
9010
10205
|
{
|
|
9011
10206
|
size: "tiny",
|
|
@@ -9026,23 +10221,23 @@ var GridSpanControl = createControl(
|
|
|
9026
10221
|
);
|
|
9027
10222
|
|
|
9028
10223
|
// src/components/promotions/display-conditions-control.tsx
|
|
9029
|
-
import * as
|
|
9030
|
-
import { useRef as
|
|
10224
|
+
import * as React133 from "react";
|
|
10225
|
+
import { useRef as useRef33 } from "react";
|
|
9031
10226
|
import { SitemapIcon } from "@elementor/icons";
|
|
9032
|
-
import { IconButton as IconButton10, Stack as
|
|
9033
|
-
import { __ as
|
|
10227
|
+
import { IconButton as IconButton10, Stack as Stack26, Tooltip as Tooltip14 } from "@elementor/ui";
|
|
10228
|
+
import { __ as __68 } from "@wordpress/i18n";
|
|
9034
10229
|
|
|
9035
10230
|
// src/components/promotions/promotion-trigger.tsx
|
|
9036
|
-
import * as
|
|
9037
|
-
import { forwardRef as forwardRef12, useCallback as useCallback5, useImperativeHandle, useState as
|
|
10231
|
+
import * as React132 from "react";
|
|
10232
|
+
import { forwardRef as forwardRef12, useCallback as useCallback5, useImperativeHandle, useState as useState25 } from "react";
|
|
9038
10233
|
import { PromotionChip as PromotionChip2, PromotionInfotip } from "@elementor/editor-ui";
|
|
9039
|
-
import { Box as
|
|
10234
|
+
import { Box as Box34 } from "@elementor/ui";
|
|
9040
10235
|
function getV4Promotion(key) {
|
|
9041
10236
|
return window.elementor?.config?.v4Promotions?.[key];
|
|
9042
10237
|
}
|
|
9043
10238
|
var PromotionTrigger = forwardRef12(
|
|
9044
10239
|
({ promotionKey, children, trackingData }, ref) => {
|
|
9045
|
-
const [isOpen, setIsOpen] =
|
|
10240
|
+
const [isOpen, setIsOpen] = useState25(false);
|
|
9046
10241
|
const promotion = getV4Promotion(promotionKey);
|
|
9047
10242
|
const toggle = useCallback5(() => {
|
|
9048
10243
|
setIsOpen((prev) => {
|
|
@@ -9053,7 +10248,7 @@ var PromotionTrigger = forwardRef12(
|
|
|
9053
10248
|
});
|
|
9054
10249
|
}, [trackingData]);
|
|
9055
10250
|
useImperativeHandle(ref, () => ({ toggle }), [toggle]);
|
|
9056
|
-
return /* @__PURE__ */
|
|
10251
|
+
return /* @__PURE__ */ React132.createElement(React132.Fragment, null, promotion && /* @__PURE__ */ React132.createElement(
|
|
9057
10252
|
PromotionInfotip,
|
|
9058
10253
|
{
|
|
9059
10254
|
title: promotion.title,
|
|
@@ -9067,8 +10262,8 @@ var PromotionTrigger = forwardRef12(
|
|
|
9067
10262
|
},
|
|
9068
10263
|
onCtaClick: () => trackUpgradePromotionClick(trackingData)
|
|
9069
10264
|
},
|
|
9070
|
-
/* @__PURE__ */
|
|
9071
|
-
|
|
10265
|
+
/* @__PURE__ */ React132.createElement(
|
|
10266
|
+
Box34,
|
|
9072
10267
|
{
|
|
9073
10268
|
onClick: (e) => {
|
|
9074
10269
|
e.stopPropagation();
|
|
@@ -9076,19 +10271,19 @@ var PromotionTrigger = forwardRef12(
|
|
|
9076
10271
|
},
|
|
9077
10272
|
sx: { cursor: "pointer", display: "inline-flex" }
|
|
9078
10273
|
},
|
|
9079
|
-
children ?? /* @__PURE__ */
|
|
10274
|
+
children ?? /* @__PURE__ */ React132.createElement(PromotionChip2, null)
|
|
9080
10275
|
)
|
|
9081
10276
|
));
|
|
9082
10277
|
}
|
|
9083
10278
|
);
|
|
9084
10279
|
|
|
9085
10280
|
// src/components/promotions/display-conditions-control.tsx
|
|
9086
|
-
var ARIA_LABEL =
|
|
10281
|
+
var ARIA_LABEL = __68("Display Conditions", "elementor");
|
|
9087
10282
|
var TRACKING_DATA = { target_name: "display_conditions", location_l2: "general" };
|
|
9088
10283
|
var DisplayConditionsControl = createControl(() => {
|
|
9089
|
-
const triggerRef =
|
|
9090
|
-
return /* @__PURE__ */
|
|
9091
|
-
|
|
10284
|
+
const triggerRef = useRef33(null);
|
|
10285
|
+
return /* @__PURE__ */ React133.createElement(
|
|
10286
|
+
Stack26,
|
|
9092
10287
|
{
|
|
9093
10288
|
direction: "row",
|
|
9094
10289
|
spacing: 2,
|
|
@@ -9097,8 +10292,8 @@ var DisplayConditionsControl = createControl(() => {
|
|
|
9097
10292
|
alignItems: "center"
|
|
9098
10293
|
}
|
|
9099
10294
|
},
|
|
9100
|
-
/* @__PURE__ */
|
|
9101
|
-
/* @__PURE__ */
|
|
10295
|
+
/* @__PURE__ */ React133.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "displayConditions", trackingData: TRACKING_DATA }),
|
|
10296
|
+
/* @__PURE__ */ React133.createElement(Tooltip14, { title: ARIA_LABEL, placement: "top" }, /* @__PURE__ */ React133.createElement(
|
|
9102
10297
|
IconButton10,
|
|
9103
10298
|
{
|
|
9104
10299
|
size: "tiny",
|
|
@@ -9111,23 +10306,23 @@ var DisplayConditionsControl = createControl(() => {
|
|
|
9111
10306
|
borderRadius: 1
|
|
9112
10307
|
}
|
|
9113
10308
|
},
|
|
9114
|
-
/* @__PURE__ */
|
|
10309
|
+
/* @__PURE__ */ React133.createElement(SitemapIcon, { fontSize: "tiny", color: "disabled" })
|
|
9115
10310
|
))
|
|
9116
10311
|
);
|
|
9117
10312
|
});
|
|
9118
10313
|
|
|
9119
10314
|
// src/components/promotions/attributes-control.tsx
|
|
9120
|
-
import * as
|
|
9121
|
-
import { useRef as
|
|
10315
|
+
import * as React134 from "react";
|
|
10316
|
+
import { useRef as useRef34 } from "react";
|
|
9122
10317
|
import { PlusIcon as PlusIcon4 } from "@elementor/icons";
|
|
9123
|
-
import { Stack as
|
|
9124
|
-
import { __ as
|
|
9125
|
-
var ARIA_LABEL2 =
|
|
10318
|
+
import { Stack as Stack27, Tooltip as Tooltip15 } from "@elementor/ui";
|
|
10319
|
+
import { __ as __69 } from "@wordpress/i18n";
|
|
10320
|
+
var ARIA_LABEL2 = __69("Attributes", "elementor");
|
|
9126
10321
|
var TRACKING_DATA2 = { target_name: "attributes", location_l2: "general" };
|
|
9127
10322
|
var AttributesControl = createControl(() => {
|
|
9128
|
-
const triggerRef =
|
|
9129
|
-
return /* @__PURE__ */
|
|
9130
|
-
|
|
10323
|
+
const triggerRef = useRef34(null);
|
|
10324
|
+
return /* @__PURE__ */ React134.createElement(
|
|
10325
|
+
Stack27,
|
|
9131
10326
|
{
|
|
9132
10327
|
direction: "row",
|
|
9133
10328
|
spacing: 2,
|
|
@@ -9136,8 +10331,8 @@ var AttributesControl = createControl(() => {
|
|
|
9136
10331
|
alignItems: "center"
|
|
9137
10332
|
}
|
|
9138
10333
|
},
|
|
9139
|
-
/* @__PURE__ */
|
|
9140
|
-
/* @__PURE__ */
|
|
10334
|
+
/* @__PURE__ */ React134.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "attributes", trackingData: TRACKING_DATA2 }),
|
|
10335
|
+
/* @__PURE__ */ React134.createElement(Tooltip15, { title: ARIA_LABEL2, placement: "top" }, /* @__PURE__ */ React134.createElement(
|
|
9141
10336
|
PlusIcon4,
|
|
9142
10337
|
{
|
|
9143
10338
|
"aria-label": ARIA_LABEL2,
|
|
@@ -9151,29 +10346,29 @@ var AttributesControl = createControl(() => {
|
|
|
9151
10346
|
});
|
|
9152
10347
|
|
|
9153
10348
|
// src/components/icon-buttons/clear-icon-button.tsx
|
|
9154
|
-
import * as
|
|
10349
|
+
import * as React135 from "react";
|
|
9155
10350
|
import { BrushBigIcon } from "@elementor/icons";
|
|
9156
|
-
import { IconButton as IconButton11, styled as
|
|
9157
|
-
var CustomIconButton =
|
|
10351
|
+
import { IconButton as IconButton11, styled as styled14, Tooltip as Tooltip16 } from "@elementor/ui";
|
|
10352
|
+
var CustomIconButton = styled14(IconButton11)(({ theme }) => ({
|
|
9158
10353
|
width: theme.spacing(2.5),
|
|
9159
10354
|
height: theme.spacing(2.5)
|
|
9160
10355
|
}));
|
|
9161
|
-
var ClearIconButton = ({ tooltipText, onClick, disabled, size = "tiny" }) => /* @__PURE__ */
|
|
10356
|
+
var ClearIconButton = ({ tooltipText, onClick, disabled, size = "tiny" }) => /* @__PURE__ */ React135.createElement(Tooltip16, { title: tooltipText, placement: "top", disableInteractive: true }, /* @__PURE__ */ React135.createElement(CustomIconButton, { "aria-label": tooltipText, size, onClick, disabled }, /* @__PURE__ */ React135.createElement(BrushBigIcon, { fontSize: size })));
|
|
9162
10357
|
|
|
9163
10358
|
// src/components/repeater/repeater.tsx
|
|
9164
|
-
import * as
|
|
9165
|
-
import { useEffect as useEffect21, useState as
|
|
10359
|
+
import * as React136 from "react";
|
|
10360
|
+
import { useEffect as useEffect21, useState as useState26 } from "react";
|
|
9166
10361
|
import { CopyIcon as CopyIcon2, EyeIcon as EyeIcon2, EyeOffIcon as EyeOffIcon2, PlusIcon as PlusIcon5, XIcon as XIcon4 } from "@elementor/icons";
|
|
9167
10362
|
import {
|
|
9168
10363
|
bindPopover as bindPopover9,
|
|
9169
10364
|
bindTrigger as bindTrigger7,
|
|
9170
|
-
Box as
|
|
10365
|
+
Box as Box35,
|
|
9171
10366
|
IconButton as IconButton12,
|
|
9172
10367
|
Infotip as Infotip4,
|
|
9173
|
-
Tooltip as
|
|
9174
|
-
usePopupState as
|
|
10368
|
+
Tooltip as Tooltip17,
|
|
10369
|
+
usePopupState as usePopupState14
|
|
9175
10370
|
} from "@elementor/ui";
|
|
9176
|
-
import { __ as
|
|
10371
|
+
import { __ as __70 } from "@wordpress/i18n";
|
|
9177
10372
|
var SIZE12 = "tiny";
|
|
9178
10373
|
var EMPTY_OPEN_ITEM2 = -1;
|
|
9179
10374
|
var Repeater3 = ({
|
|
@@ -9192,7 +10387,7 @@ var Repeater3 = ({
|
|
|
9192
10387
|
isSortable = true,
|
|
9193
10388
|
adornment = ControlAdornments
|
|
9194
10389
|
}) => {
|
|
9195
|
-
const [openItem, setOpenItem] =
|
|
10390
|
+
const [openItem, setOpenItem] = useState26(initialOpenItem);
|
|
9196
10391
|
const uniqueKeys = items2.map(
|
|
9197
10392
|
(item, index) => isSortable && "getId" in itemSettings ? itemSettings.getId({ item, index }) : String(index)
|
|
9198
10393
|
);
|
|
@@ -9255,7 +10450,7 @@ var Repeater3 = ({
|
|
|
9255
10450
|
};
|
|
9256
10451
|
const isButtonDisabled = disabled || disableAddItemButton;
|
|
9257
10452
|
const shouldShowInfotip = isButtonDisabled && addButtonInfotipContent;
|
|
9258
|
-
const addButton = /* @__PURE__ */
|
|
10453
|
+
const addButton = /* @__PURE__ */ React136.createElement(
|
|
9259
10454
|
IconButton12,
|
|
9260
10455
|
{
|
|
9261
10456
|
size: SIZE12,
|
|
@@ -9264,11 +10459,11 @@ var Repeater3 = ({
|
|
|
9264
10459
|
},
|
|
9265
10460
|
disabled: isButtonDisabled,
|
|
9266
10461
|
onClick: addRepeaterItem,
|
|
9267
|
-
"aria-label":
|
|
10462
|
+
"aria-label": __70("Add item", "elementor")
|
|
9268
10463
|
},
|
|
9269
|
-
/* @__PURE__ */
|
|
10464
|
+
/* @__PURE__ */ React136.createElement(PlusIcon5, { fontSize: SIZE12 })
|
|
9270
10465
|
);
|
|
9271
|
-
return /* @__PURE__ */
|
|
10466
|
+
return /* @__PURE__ */ React136.createElement(SectionContent, { gap: 2 }, /* @__PURE__ */ React136.createElement(RepeaterHeader, { label, adornment }, shouldShowInfotip ? /* @__PURE__ */ React136.createElement(
|
|
9272
10467
|
Infotip4,
|
|
9273
10468
|
{
|
|
9274
10469
|
placement: "right",
|
|
@@ -9276,20 +10471,20 @@ var Repeater3 = ({
|
|
|
9276
10471
|
color: "secondary",
|
|
9277
10472
|
slotProps: { popper: { sx: { width: 300 } } }
|
|
9278
10473
|
},
|
|
9279
|
-
/* @__PURE__ */
|
|
9280
|
-
) : addButton), 0 < uniqueKeys.length && /* @__PURE__ */
|
|
10474
|
+
/* @__PURE__ */ React136.createElement(Box35, { sx: { ...isButtonDisabled ? { cursor: "not-allowed" } : {} } }, addButton)
|
|
10475
|
+
) : addButton), 0 < uniqueKeys.length && /* @__PURE__ */ React136.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key) => {
|
|
9281
10476
|
const index = uniqueKeys.indexOf(key);
|
|
9282
10477
|
const value = items2[index];
|
|
9283
10478
|
if (!value) {
|
|
9284
10479
|
return null;
|
|
9285
10480
|
}
|
|
9286
|
-
return /* @__PURE__ */
|
|
10481
|
+
return /* @__PURE__ */ React136.createElement(SortableItem, { id: key, key: `sortable-${key}`, disabled: !isSortable }, /* @__PURE__ */ React136.createElement(
|
|
9287
10482
|
RepeaterItem,
|
|
9288
10483
|
{
|
|
9289
10484
|
disabled,
|
|
9290
10485
|
propDisabled: value?.disabled,
|
|
9291
|
-
label: /* @__PURE__ */
|
|
9292
|
-
startIcon: /* @__PURE__ */
|
|
10486
|
+
label: /* @__PURE__ */ React136.createElement(RepeaterItemLabelSlot, { value }, /* @__PURE__ */ React136.createElement(itemSettings.Label, { value, index })),
|
|
10487
|
+
startIcon: /* @__PURE__ */ React136.createElement(RepeaterItemIconSlot, { value }, /* @__PURE__ */ React136.createElement(itemSettings.Icon, { value })),
|
|
9293
10488
|
removeItem: () => removeRepeaterItem(index),
|
|
9294
10489
|
duplicateItem: () => duplicateRepeaterItem(index),
|
|
9295
10490
|
toggleDisableItem: () => toggleDisableRepeaterItem(index),
|
|
@@ -9303,7 +10498,7 @@ var Repeater3 = ({
|
|
|
9303
10498
|
actions: itemSettings.actions,
|
|
9304
10499
|
value
|
|
9305
10500
|
},
|
|
9306
|
-
(props) => /* @__PURE__ */
|
|
10501
|
+
(props) => /* @__PURE__ */ React136.createElement(
|
|
9307
10502
|
itemSettings.Content,
|
|
9308
10503
|
{
|
|
9309
10504
|
...props,
|
|
@@ -9345,16 +10540,16 @@ var RepeaterItem = ({
|
|
|
9345
10540
|
);
|
|
9346
10541
|
const triggerProps = bindTrigger7(popoverState);
|
|
9347
10542
|
usePopoverDismiss({ isOpen: popoverState.isOpen, onClose: popoverProps.onClose });
|
|
9348
|
-
const duplicateLabel =
|
|
9349
|
-
const toggleLabel = propDisabled ?
|
|
9350
|
-
const removeLabel =
|
|
9351
|
-
return /* @__PURE__ */
|
|
10543
|
+
const duplicateLabel = __70("Duplicate", "elementor");
|
|
10544
|
+
const toggleLabel = propDisabled ? __70("Show", "elementor") : __70("Hide", "elementor");
|
|
10545
|
+
const removeLabel = __70("Remove", "elementor");
|
|
10546
|
+
return /* @__PURE__ */ React136.createElement(Box35, { sx: { display: "contents" } }, /* @__PURE__ */ React136.createElement(
|
|
9352
10547
|
RepeaterTag,
|
|
9353
10548
|
{
|
|
9354
10549
|
disabled,
|
|
9355
10550
|
label,
|
|
9356
10551
|
ref: setRef,
|
|
9357
|
-
"aria-label":
|
|
10552
|
+
"aria-label": __70("Open item", "elementor"),
|
|
9358
10553
|
...triggerProps,
|
|
9359
10554
|
onClick: (e) => {
|
|
9360
10555
|
triggerProps.onClick(e);
|
|
@@ -9363,13 +10558,13 @@ var RepeaterItem = ({
|
|
|
9363
10558
|
}
|
|
9364
10559
|
},
|
|
9365
10560
|
startIcon,
|
|
9366
|
-
actions: /* @__PURE__ */
|
|
10561
|
+
actions: /* @__PURE__ */ React136.createElement(React136.Fragment, null, showDuplicate && /* @__PURE__ */ React136.createElement(Tooltip17, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React136.createElement(IconButton12, { size: SIZE12, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React136.createElement(CopyIcon2, { fontSize: SIZE12 }))), showToggle && /* @__PURE__ */ React136.createElement(Tooltip17, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React136.createElement(IconButton12, { size: SIZE12, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React136.createElement(EyeOffIcon2, { fontSize: SIZE12 }) : /* @__PURE__ */ React136.createElement(EyeIcon2, { fontSize: SIZE12 }))), actions?.(value), showRemove && /* @__PURE__ */ React136.createElement(Tooltip17, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React136.createElement(IconButton12, { size: SIZE12, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React136.createElement(XIcon4, { fontSize: SIZE12 }))))
|
|
9367
10562
|
}
|
|
9368
|
-
), /* @__PURE__ */
|
|
10563
|
+
), /* @__PURE__ */ React136.createElement(RepeaterPopover, { width: ref?.getBoundingClientRect().width, ...popoverProps, anchorEl: ref }, /* @__PURE__ */ React136.createElement(Box35, null, children({ anchorEl: ref }))));
|
|
9369
10564
|
};
|
|
9370
10565
|
var usePopover = (openOnMount, onOpen, onPopoverClose) => {
|
|
9371
|
-
const [ref, setRef] =
|
|
9372
|
-
const popoverState =
|
|
10566
|
+
const [ref, setRef] = useState26(null);
|
|
10567
|
+
const popoverState = usePopupState14({ variant: "popover" });
|
|
9373
10568
|
const popoverProps = bindPopover9(popoverState);
|
|
9374
10569
|
useEffect21(() => {
|
|
9375
10570
|
if (openOnMount && ref) {
|
|
@@ -9390,7 +10585,7 @@ var usePopover = (openOnMount, onOpen, onPopoverClose) => {
|
|
|
9390
10585
|
};
|
|
9391
10586
|
|
|
9392
10587
|
// src/components/size/unstable-size-field.tsx
|
|
9393
|
-
import * as
|
|
10588
|
+
import * as React139 from "react";
|
|
9394
10589
|
import { InputAdornment as InputAdornment6 } from "@elementor/ui";
|
|
9395
10590
|
|
|
9396
10591
|
// src/hooks/use-size-value.ts
|
|
@@ -9433,25 +10628,25 @@ var differsFromExternal = (newState, externalState) => {
|
|
|
9433
10628
|
};
|
|
9434
10629
|
|
|
9435
10630
|
// src/components/size/unit-select.tsx
|
|
9436
|
-
import * as
|
|
9437
|
-
import { useId as
|
|
10631
|
+
import * as React137 from "react";
|
|
10632
|
+
import { useId as useId6 } from "react";
|
|
9438
10633
|
import { MenuListItem as MenuListItem8 } from "@elementor/editor-ui";
|
|
9439
|
-
import { bindMenu as
|
|
10634
|
+
import { bindMenu as bindMenu5, bindTrigger as bindTrigger8, Button as Button7, Menu as Menu6, styled as styled15, usePopupState as usePopupState15 } from "@elementor/ui";
|
|
9440
10635
|
var menuItemContentStyles2 = {
|
|
9441
10636
|
display: "flex",
|
|
9442
10637
|
flexDirection: "column",
|
|
9443
10638
|
justifyContent: "center"
|
|
9444
10639
|
};
|
|
9445
10640
|
var UnitSelect = ({ value, showPrimaryColor, onClick, options }) => {
|
|
9446
|
-
const popupState =
|
|
10641
|
+
const popupState = usePopupState15({
|
|
9447
10642
|
variant: "popover",
|
|
9448
|
-
popupId:
|
|
10643
|
+
popupId: useId6()
|
|
9449
10644
|
});
|
|
9450
10645
|
const handleMenuItemClick = (index) => {
|
|
9451
10646
|
onClick(options[index]);
|
|
9452
10647
|
popupState.close();
|
|
9453
10648
|
};
|
|
9454
|
-
return /* @__PURE__ */
|
|
10649
|
+
return /* @__PURE__ */ React137.createElement(React137.Fragment, null, /* @__PURE__ */ React137.createElement(StyledButton3, { isPrimaryColor: showPrimaryColor, size: "small", ...bindTrigger8(popupState) }, value), /* @__PURE__ */ React137.createElement(Menu6, { MenuListProps: { dense: true }, ...bindMenu5(popupState) }, options.map((option, index) => /* @__PURE__ */ React137.createElement(
|
|
9455
10650
|
MenuListItem8,
|
|
9456
10651
|
{
|
|
9457
10652
|
key: option,
|
|
@@ -9470,7 +10665,7 @@ var UnitSelect = ({ value, showPrimaryColor, onClick, options }) => {
|
|
|
9470
10665
|
option.toUpperCase()
|
|
9471
10666
|
))));
|
|
9472
10667
|
};
|
|
9473
|
-
var StyledButton3 =
|
|
10668
|
+
var StyledButton3 = styled15(Button7, {
|
|
9474
10669
|
shouldForwardProp: (prop) => prop !== "isPrimaryColor"
|
|
9475
10670
|
})(({ isPrimaryColor, theme }) => ({
|
|
9476
10671
|
color: isPrimaryColor ? theme.palette.text.primary : theme.palette.text.tertiary,
|
|
@@ -9480,11 +10675,11 @@ var StyledButton3 = styled12(Button7, {
|
|
|
9480
10675
|
}));
|
|
9481
10676
|
|
|
9482
10677
|
// src/components/size/unstable-size-input.tsx
|
|
9483
|
-
import * as
|
|
10678
|
+
import * as React138 from "react";
|
|
9484
10679
|
import { forwardRef as forwardRef13 } from "react";
|
|
9485
10680
|
var UnstableSizeInput = forwardRef13(
|
|
9486
10681
|
({ type, value, onChange, onKeyDown, onKeyUp, InputProps, onBlur, focused, disabled }, ref) => {
|
|
9487
|
-
return /* @__PURE__ */
|
|
10682
|
+
return /* @__PURE__ */ React138.createElement(
|
|
9488
10683
|
NumberInput,
|
|
9489
10684
|
{
|
|
9490
10685
|
ref,
|
|
@@ -9522,7 +10717,7 @@ var UnstableSizeField = ({
|
|
|
9522
10717
|
const shouldHighlightUnit2 = () => {
|
|
9523
10718
|
return hasValue(size);
|
|
9524
10719
|
};
|
|
9525
|
-
return /* @__PURE__ */
|
|
10720
|
+
return /* @__PURE__ */ React139.createElement(
|
|
9526
10721
|
UnstableSizeInput,
|
|
9527
10722
|
{
|
|
9528
10723
|
type: "number",
|
|
@@ -9531,8 +10726,8 @@ var UnstableSizeField = ({
|
|
|
9531
10726
|
onChange: (event) => setSize(event.target.value),
|
|
9532
10727
|
InputProps: {
|
|
9533
10728
|
...InputProps,
|
|
9534
|
-
startAdornment: startIcon && /* @__PURE__ */
|
|
9535
|
-
endAdornment: /* @__PURE__ */
|
|
10729
|
+
startAdornment: startIcon && /* @__PURE__ */ React139.createElement(InputAdornment6, { position: "start" }, startIcon),
|
|
10730
|
+
endAdornment: /* @__PURE__ */ React139.createElement(InputAdornment6, { position: "end" }, /* @__PURE__ */ React139.createElement(
|
|
9536
10731
|
UnitSelect,
|
|
9537
10732
|
{
|
|
9538
10733
|
options: units2,
|
|
@@ -9550,7 +10745,7 @@ var hasValue = (value) => {
|
|
|
9550
10745
|
};
|
|
9551
10746
|
|
|
9552
10747
|
// src/hooks/use-font-families.ts
|
|
9553
|
-
import { useMemo as
|
|
10748
|
+
import { useMemo as useMemo20 } from "react";
|
|
9554
10749
|
import { getElementorConfig } from "@elementor/editor-v1-adapters";
|
|
9555
10750
|
var getFontControlConfig = () => {
|
|
9556
10751
|
const { controls } = getElementorConfig();
|
|
@@ -9558,7 +10753,7 @@ var getFontControlConfig = () => {
|
|
|
9558
10753
|
};
|
|
9559
10754
|
var useFontFamilies = () => {
|
|
9560
10755
|
const { groups, options } = getFontControlConfig();
|
|
9561
|
-
return
|
|
10756
|
+
return useMemo20(() => {
|
|
9562
10757
|
if (!groups || !options) {
|
|
9563
10758
|
return [];
|
|
9564
10759
|
}
|
|
@@ -9615,6 +10810,7 @@ export {
|
|
|
9615
10810
|
LinkControl,
|
|
9616
10811
|
LinkedDimensionsControl,
|
|
9617
10812
|
MentionTextAreaControl,
|
|
10813
|
+
NoticeControl,
|
|
9618
10814
|
NumberControl,
|
|
9619
10815
|
NumberInput,
|
|
9620
10816
|
PopoverContent,
|
|
@@ -9654,11 +10850,14 @@ export {
|
|
|
9654
10850
|
createControlReplacementsRegistry,
|
|
9655
10851
|
enqueueFont,
|
|
9656
10852
|
getControlReplacements,
|
|
10853
|
+
getFontAwesome7IconName,
|
|
9657
10854
|
injectIntoRepeaterItemActions,
|
|
9658
10855
|
injectIntoRepeaterItemIcon,
|
|
9659
10856
|
injectIntoRepeaterItemLabel,
|
|
9660
10857
|
isUnitExtendedOption,
|
|
9661
10858
|
registerControlReplacement,
|
|
10859
|
+
resetFontAwesome7IconsCache,
|
|
10860
|
+
resolveFontAwesome7Icon,
|
|
9662
10861
|
trackUpgradePromotionClick,
|
|
9663
10862
|
trackViewPromotion,
|
|
9664
10863
|
transitionProperties,
|