@elementor/editor-controls 1.2.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -0
- package/dist/index.d.mts +20 -8
- package/dist/index.d.ts +20 -8
- package/dist/index.js +1092 -714
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +937 -549
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/bound-prop-context/prop-context.tsx +3 -3
- package/src/bound-prop-context/prop-key-context.tsx +1 -0
- package/src/bound-prop-context/use-bound-prop.ts +5 -1
- package/src/components/font-family-selector.tsx +54 -56
- package/src/components/repeater.tsx +22 -11
- package/src/components/size-control/size-input.tsx +4 -4
- package/src/components/text-field-popover.tsx +19 -18
- package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +3 -15
- package/src/controls/box-shadow-repeater-control.tsx +1 -1
- package/src/controls/color-control.tsx +12 -1
- package/src/controls/equal-unequal-sizes-control.tsx +1 -1
- package/src/controls/filter-control/drop-shadow-item-content.tsx +69 -0
- package/src/controls/filter-control/drop-shadow-item-label.tsx +20 -0
- package/src/controls/filter-repeater-control.tsx +108 -21
- package/src/controls/font-family-control/font-family-control.tsx +14 -2
- package/src/controls/image-control.tsx +45 -16
- package/src/controls/key-value-control.tsx +57 -46
- package/src/controls/link-control.tsx +25 -20
- package/src/controls/linked-dimensions-control.tsx +1 -1
- package/src/controls/repeatable-control.tsx +100 -21
- package/src/controls/select-control.tsx +22 -2
- package/src/controls/size-control.tsx +25 -12
- package/src/controls/switch-control.tsx +9 -1
- package/src/controls/text-control.tsx +33 -18
- package/src/controls/transform-control/functions/axis-row.tsx +32 -0
- package/src/controls/transform-control/functions/move.tsx +44 -0
- package/src/controls/transform-control/transform-content.tsx +36 -0
- package/src/controls/transform-control/transform-icon.tsx +12 -0
- package/src/controls/transform-control/transform-label.tsx +27 -0
- package/src/controls/transform-control/transform-repeater-control.tsx +42 -0
- package/src/hooks/use-repeatable-control-context.ts +6 -1
- package/src/index.ts +1 -0
- package/src/utils/size-control.ts +4 -2
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// src/controls/image-control.tsx
|
|
2
|
-
import * as
|
|
2
|
+
import * as React10 from "react";
|
|
3
3
|
import { imagePropTypeUtil } from "@elementor/editor-props";
|
|
4
|
-
import { Stack as Stack2 } from "@elementor/ui";
|
|
4
|
+
import { Grid, Stack as Stack2 } from "@elementor/ui";
|
|
5
|
+
import { __ as __2 } from "@wordpress/i18n";
|
|
5
6
|
|
|
6
7
|
// src/bound-prop-context/prop-context.tsx
|
|
7
8
|
import * as React from "react";
|
|
@@ -30,7 +31,7 @@ var PropProvider = ({
|
|
|
30
31
|
setValue,
|
|
31
32
|
propType,
|
|
32
33
|
placeholder,
|
|
33
|
-
|
|
34
|
+
isDisabled
|
|
34
35
|
}) => {
|
|
35
36
|
return /* @__PURE__ */ React.createElement(
|
|
36
37
|
PropContext.Provider,
|
|
@@ -40,7 +41,7 @@ var PropProvider = ({
|
|
|
40
41
|
propType,
|
|
41
42
|
setValue,
|
|
42
43
|
placeholder,
|
|
43
|
-
|
|
44
|
+
isDisabled
|
|
44
45
|
}
|
|
45
46
|
},
|
|
46
47
|
children
|
|
@@ -130,8 +131,9 @@ import { useState } from "react";
|
|
|
130
131
|
function useBoundProp(propTypeUtil) {
|
|
131
132
|
const propKeyContext = usePropKeyContext();
|
|
132
133
|
const { isValid, validate, restoreValue } = useValidation(propKeyContext.propType);
|
|
134
|
+
const disabled = propKeyContext.isDisabled?.(propKeyContext.propType);
|
|
133
135
|
if (!propTypeUtil) {
|
|
134
|
-
return propKeyContext;
|
|
136
|
+
return { ...propKeyContext, disabled };
|
|
135
137
|
}
|
|
136
138
|
function setValue(value2, options, meta) {
|
|
137
139
|
if (!validate(value2)) {
|
|
@@ -151,7 +153,8 @@ function useBoundProp(propTypeUtil) {
|
|
|
151
153
|
setValue,
|
|
152
154
|
value: isValid ? value : null,
|
|
153
155
|
restoreValue,
|
|
154
|
-
placeholder
|
|
156
|
+
placeholder,
|
|
157
|
+
disabled
|
|
155
158
|
};
|
|
156
159
|
}
|
|
157
160
|
var useValidation = (propType) => {
|
|
@@ -183,16 +186,23 @@ var resolveUnionPropType = (propType, key) => {
|
|
|
183
186
|
return resolvedPropType;
|
|
184
187
|
};
|
|
185
188
|
|
|
189
|
+
// src/components/control-form-label.tsx
|
|
190
|
+
import * as React3 from "react";
|
|
191
|
+
import { FormLabel } from "@elementor/ui";
|
|
192
|
+
var ControlFormLabel = (props) => {
|
|
193
|
+
return /* @__PURE__ */ React3.createElement(FormLabel, { size: "tiny", ...props });
|
|
194
|
+
};
|
|
195
|
+
|
|
186
196
|
// src/create-control.tsx
|
|
187
|
-
import * as
|
|
197
|
+
import * as React5 from "react";
|
|
188
198
|
import { ErrorBoundary } from "@elementor/ui";
|
|
189
199
|
|
|
190
200
|
// src/control-replacements.tsx
|
|
191
|
-
import * as
|
|
201
|
+
import * as React4 from "react";
|
|
192
202
|
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
193
203
|
var ControlReplacementContext = createContext3([]);
|
|
194
204
|
var ControlReplacementsProvider = ({ replacements, children }) => {
|
|
195
|
-
return /* @__PURE__ */
|
|
205
|
+
return /* @__PURE__ */ React4.createElement(ControlReplacementContext.Provider, { value: replacements }, children);
|
|
196
206
|
};
|
|
197
207
|
var useControlReplacement = (OriginalComponent) => {
|
|
198
208
|
const { value } = useBoundProp();
|
|
@@ -220,7 +230,7 @@ var brandSymbol = Symbol("control");
|
|
|
220
230
|
function createControl(Control5) {
|
|
221
231
|
return (props) => {
|
|
222
232
|
const Component = useControlReplacement(Control5);
|
|
223
|
-
return /* @__PURE__ */
|
|
233
|
+
return /* @__PURE__ */ React5.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React5.createElement(Component, { ...props }));
|
|
224
234
|
};
|
|
225
235
|
}
|
|
226
236
|
|
|
@@ -264,7 +274,7 @@ var formatResponse = (response) => {
|
|
|
264
274
|
};
|
|
265
275
|
|
|
266
276
|
// src/controls/image-media-control.tsx
|
|
267
|
-
import * as
|
|
277
|
+
import * as React8 from "react";
|
|
268
278
|
import { imageSrcPropTypeUtil } from "@elementor/editor-props";
|
|
269
279
|
import { UploadIcon } from "@elementor/icons";
|
|
270
280
|
import { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from "@elementor/ui";
|
|
@@ -272,14 +282,14 @@ import { useWpMediaAttachment, useWpMediaFrame } from "@elementor/wp-media";
|
|
|
272
282
|
import { __ } from "@wordpress/i18n";
|
|
273
283
|
|
|
274
284
|
// src/control-actions/control-actions.tsx
|
|
275
|
-
import * as
|
|
285
|
+
import * as React7 from "react";
|
|
276
286
|
import { styled, UnstableFloatingActionBar } from "@elementor/ui";
|
|
277
287
|
|
|
278
288
|
// src/control-actions/control-actions-context.tsx
|
|
279
|
-
import * as
|
|
289
|
+
import * as React6 from "react";
|
|
280
290
|
import { createContext as createContext4, useContext as useContext4 } from "react";
|
|
281
291
|
var Context = createContext4(null);
|
|
282
|
-
var ControlActionsProvider = ({ children, items }) => /* @__PURE__ */
|
|
292
|
+
var ControlActionsProvider = ({ children, items: items2 }) => /* @__PURE__ */ React6.createElement(Context.Provider, { value: { items: items2 } }, children);
|
|
283
293
|
var useControlActions = () => {
|
|
284
294
|
const context = useContext4(Context);
|
|
285
295
|
if (!context) {
|
|
@@ -301,13 +311,13 @@ var FloatingBarContainer = styled("span")`
|
|
|
301
311
|
}
|
|
302
312
|
`;
|
|
303
313
|
function ControlActions({ children }) {
|
|
304
|
-
const { items } = useControlActions();
|
|
314
|
+
const { items: items2 } = useControlActions();
|
|
305
315
|
const { disabled } = useBoundProp();
|
|
306
|
-
if (
|
|
316
|
+
if (items2.length === 0 || disabled) {
|
|
307
317
|
return children;
|
|
308
318
|
}
|
|
309
|
-
const menuItems =
|
|
310
|
-
return /* @__PURE__ */
|
|
319
|
+
const menuItems = items2.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React7.createElement(MenuItem2, { key: id }));
|
|
320
|
+
return /* @__PURE__ */ React7.createElement(FloatingBarContainer, null, /* @__PURE__ */ React7.createElement(UnstableFloatingActionBar, { actions: menuItems }, children));
|
|
311
321
|
}
|
|
312
322
|
|
|
313
323
|
// src/controls/image-media-control.tsx
|
|
@@ -330,7 +340,7 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
|
|
|
330
340
|
});
|
|
331
341
|
}
|
|
332
342
|
});
|
|
333
|
-
return /* @__PURE__ */
|
|
343
|
+
return /* @__PURE__ */ React8.createElement(ControlActions, null, /* @__PURE__ */ React8.createElement(Card, { variant: "outlined" }, /* @__PURE__ */ React8.createElement(CardMedia, { image: src, sx: { height: 150 } }, isFetching ? /* @__PURE__ */ React8.createElement(Stack, { justifyContent: "center", alignItems: "center", width: "100%", height: "100%" }, /* @__PURE__ */ React8.createElement(CircularProgress, null)) : /* @__PURE__ */ React8.createElement(React8.Fragment, null)), /* @__PURE__ */ React8.createElement(CardOverlay, null, /* @__PURE__ */ React8.createElement(Stack, { gap: 1 }, /* @__PURE__ */ React8.createElement(
|
|
334
344
|
Button,
|
|
335
345
|
{
|
|
336
346
|
size: "tiny",
|
|
@@ -339,13 +349,13 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
|
|
|
339
349
|
onClick: () => open({ mode: "browse" })
|
|
340
350
|
},
|
|
341
351
|
__("Select image", "elementor")
|
|
342
|
-
), /* @__PURE__ */
|
|
352
|
+
), /* @__PURE__ */ React8.createElement(
|
|
343
353
|
Button,
|
|
344
354
|
{
|
|
345
355
|
size: "tiny",
|
|
346
356
|
variant: "text",
|
|
347
357
|
color: "inherit",
|
|
348
|
-
startIcon: /* @__PURE__ */
|
|
358
|
+
startIcon: /* @__PURE__ */ React8.createElement(UploadIcon, null),
|
|
349
359
|
onClick: () => open({ mode: "upload" })
|
|
350
360
|
},
|
|
351
361
|
__("Upload", "elementor")
|
|
@@ -353,62 +363,103 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
|
|
|
353
363
|
});
|
|
354
364
|
|
|
355
365
|
// src/controls/select-control.tsx
|
|
356
|
-
import * as
|
|
366
|
+
import * as React9 from "react";
|
|
357
367
|
import { stringPropTypeUtil } from "@elementor/editor-props";
|
|
358
368
|
import { MenuListItem } from "@elementor/editor-ui";
|
|
359
|
-
import { Select } from "@elementor/ui";
|
|
369
|
+
import { Select, Typography } from "@elementor/ui";
|
|
360
370
|
var SelectControl = createControl(({ options, onChange }) => {
|
|
361
|
-
const { value, setValue, disabled } = useBoundProp(stringPropTypeUtil);
|
|
371
|
+
const { value, setValue, disabled, placeholder } = useBoundProp(stringPropTypeUtil);
|
|
362
372
|
const handleChange = (event) => {
|
|
363
373
|
const newValue = event.target.value || null;
|
|
364
374
|
onChange?.(newValue, value);
|
|
365
375
|
setValue(newValue);
|
|
366
376
|
};
|
|
367
|
-
return /* @__PURE__ */
|
|
377
|
+
return /* @__PURE__ */ React9.createElement(ControlActions, null, /* @__PURE__ */ React9.createElement(
|
|
368
378
|
Select,
|
|
369
379
|
{
|
|
370
380
|
sx: { overflow: "hidden" },
|
|
371
381
|
displayEmpty: true,
|
|
372
382
|
size: "tiny",
|
|
383
|
+
renderValue: (selectedValue) => {
|
|
384
|
+
const findOptionByValue = (searchValue) => options.find((opt) => opt.value === searchValue);
|
|
385
|
+
if (!selectedValue || selectedValue === "") {
|
|
386
|
+
if (placeholder) {
|
|
387
|
+
const placeholderOption = findOptionByValue(placeholder);
|
|
388
|
+
const displayText = placeholderOption?.label || placeholder;
|
|
389
|
+
return /* @__PURE__ */ React9.createElement(Typography, { component: "span", variant: "caption", color: "text.tertiary" }, displayText);
|
|
390
|
+
}
|
|
391
|
+
return "";
|
|
392
|
+
}
|
|
393
|
+
const option = findOptionByValue(selectedValue);
|
|
394
|
+
return option?.label || selectedValue;
|
|
395
|
+
},
|
|
373
396
|
value: value ?? "",
|
|
374
397
|
onChange: handleChange,
|
|
375
398
|
disabled,
|
|
376
399
|
fullWidth: true
|
|
377
400
|
},
|
|
378
|
-
options.map(({ label, ...props }) => /* @__PURE__ */
|
|
401
|
+
options.map(({ label, ...props }) => /* @__PURE__ */ React9.createElement(MenuListItem, { key: props.value, ...props, value: props.value ?? "" }, label))
|
|
379
402
|
));
|
|
380
403
|
});
|
|
381
404
|
|
|
382
405
|
// src/controls/image-control.tsx
|
|
383
406
|
var ImageControl = createControl(({ sizes, showMode = "all" }) => {
|
|
384
407
|
const propContext = useBoundProp(imagePropTypeUtil);
|
|
408
|
+
let componentToRender;
|
|
409
|
+
switch (showMode) {
|
|
410
|
+
case "media":
|
|
411
|
+
componentToRender = /* @__PURE__ */ React10.createElement(ImageSrcControl, null);
|
|
412
|
+
break;
|
|
413
|
+
case "sizes":
|
|
414
|
+
componentToRender = /* @__PURE__ */ React10.createElement(ImageSizeControl, { sizes });
|
|
415
|
+
break;
|
|
416
|
+
case "all":
|
|
417
|
+
default:
|
|
418
|
+
componentToRender = /* @__PURE__ */ React10.createElement(Stack2, { gap: 1.5 }, /* @__PURE__ */ React10.createElement(ControlFormLabel, null, __2("Image", "elementor")), /* @__PURE__ */ React10.createElement(ImageSrcControl, null), /* @__PURE__ */ React10.createElement(Grid, { container: true, gap: 1.5, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React10.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React10.createElement(ControlFormLabel, null, __2("Resolution", "elementor"))), /* @__PURE__ */ React10.createElement(Grid, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React10.createElement(ImageSizeControl, { sizes }))));
|
|
419
|
+
}
|
|
420
|
+
return /* @__PURE__ */ React10.createElement(PropProvider, { ...propContext }, componentToRender);
|
|
421
|
+
});
|
|
422
|
+
var ImageSrcControl = () => {
|
|
385
423
|
const { data: allowSvgUpload } = useUnfilteredFilesUpload();
|
|
386
424
|
const mediaTypes = allowSvgUpload ? ["image", "svg"] : ["image"];
|
|
387
|
-
return /* @__PURE__ */
|
|
388
|
-
}
|
|
425
|
+
return /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "src" }, /* @__PURE__ */ React10.createElement(ImageMediaControl, { mediaTypes }));
|
|
426
|
+
};
|
|
427
|
+
var ImageSizeControl = ({ sizes }) => {
|
|
428
|
+
return /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React10.createElement(SelectControl, { options: sizes }));
|
|
429
|
+
};
|
|
389
430
|
|
|
390
431
|
// src/controls/text-control.tsx
|
|
391
|
-
import * as
|
|
432
|
+
import * as React11 from "react";
|
|
392
433
|
import { stringPropTypeUtil as stringPropTypeUtil2 } from "@elementor/editor-props";
|
|
393
434
|
import { TextField } from "@elementor/ui";
|
|
394
|
-
var TextControl = createControl(
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
435
|
+
var TextControl = createControl(
|
|
436
|
+
({
|
|
437
|
+
placeholder,
|
|
438
|
+
error,
|
|
439
|
+
inputValue,
|
|
440
|
+
inputDisabled,
|
|
441
|
+
sx
|
|
442
|
+
}) => {
|
|
443
|
+
const { value, setValue, disabled } = useBoundProp(stringPropTypeUtil2);
|
|
444
|
+
const handleChange = (event) => setValue(event.target.value);
|
|
445
|
+
return /* @__PURE__ */ React11.createElement(ControlActions, null, /* @__PURE__ */ React11.createElement(
|
|
446
|
+
TextField,
|
|
447
|
+
{
|
|
448
|
+
size: "tiny",
|
|
449
|
+
fullWidth: true,
|
|
450
|
+
disabled: inputDisabled ?? disabled,
|
|
451
|
+
value: inputValue ?? value ?? "",
|
|
452
|
+
onChange: handleChange,
|
|
453
|
+
placeholder,
|
|
454
|
+
error,
|
|
455
|
+
sx
|
|
456
|
+
}
|
|
457
|
+
));
|
|
458
|
+
}
|
|
459
|
+
);
|
|
409
460
|
|
|
410
461
|
// src/controls/text-area-control.tsx
|
|
411
|
-
import * as
|
|
462
|
+
import * as React12 from "react";
|
|
412
463
|
import { stringPropTypeUtil as stringPropTypeUtil3 } from "@elementor/editor-props";
|
|
413
464
|
import { TextField as TextField2 } from "@elementor/ui";
|
|
414
465
|
var TextAreaControl = createControl(({ placeholder }) => {
|
|
@@ -416,7 +467,7 @@ var TextAreaControl = createControl(({ placeholder }) => {
|
|
|
416
467
|
const handleChange = (event) => {
|
|
417
468
|
setValue(event.target.value);
|
|
418
469
|
};
|
|
419
|
-
return /* @__PURE__ */
|
|
470
|
+
return /* @__PURE__ */ React12.createElement(ControlActions, null, /* @__PURE__ */ React12.createElement(
|
|
420
471
|
TextField2,
|
|
421
472
|
{
|
|
422
473
|
size: "tiny",
|
|
@@ -432,14 +483,14 @@ var TextAreaControl = createControl(({ placeholder }) => {
|
|
|
432
483
|
});
|
|
433
484
|
|
|
434
485
|
// src/controls/size-control.tsx
|
|
435
|
-
import * as
|
|
486
|
+
import * as React16 from "react";
|
|
436
487
|
import { useEffect as useEffect2, useState as useState3 } from "react";
|
|
437
488
|
import { sizePropTypeUtil } from "@elementor/editor-props";
|
|
438
489
|
import { useActiveBreakpoint } from "@elementor/editor-responsive";
|
|
439
490
|
import { usePopupState as usePopupState2 } from "@elementor/ui";
|
|
440
491
|
|
|
441
492
|
// src/components/size-control/size-input.tsx
|
|
442
|
-
import * as
|
|
493
|
+
import * as React14 from "react";
|
|
443
494
|
import { useRef } from "react";
|
|
444
495
|
import { PencilIcon } from "@elementor/icons";
|
|
445
496
|
import { Box, InputAdornment as InputAdornment2 } from "@elementor/ui";
|
|
@@ -452,7 +503,7 @@ function isUnitExtendedOption(unit) {
|
|
|
452
503
|
}
|
|
453
504
|
|
|
454
505
|
// src/components/size-control/text-field-inner-selection.tsx
|
|
455
|
-
import * as
|
|
506
|
+
import * as React13 from "react";
|
|
456
507
|
import { forwardRef, useId } from "react";
|
|
457
508
|
import { MenuListItem as MenuListItem2 } from "@elementor/editor-ui";
|
|
458
509
|
import {
|
|
@@ -477,7 +528,7 @@ var TextFieldInnerSelection = forwardRef(
|
|
|
477
528
|
inputProps,
|
|
478
529
|
disabled
|
|
479
530
|
}, ref) => {
|
|
480
|
-
return /* @__PURE__ */
|
|
531
|
+
return /* @__PURE__ */ React13.createElement(
|
|
481
532
|
TextField3,
|
|
482
533
|
{
|
|
483
534
|
ref,
|
|
@@ -513,7 +564,7 @@ var SelectionEndAdornment = ({
|
|
|
513
564
|
onClick(options[index]);
|
|
514
565
|
popupState.close();
|
|
515
566
|
};
|
|
516
|
-
return /* @__PURE__ */
|
|
567
|
+
return /* @__PURE__ */ React13.createElement(InputAdornment, { position: "end" }, /* @__PURE__ */ React13.createElement(
|
|
517
568
|
Button2,
|
|
518
569
|
{
|
|
519
570
|
size: "small",
|
|
@@ -523,7 +574,7 @@ var SelectionEndAdornment = ({
|
|
|
523
574
|
...bindTrigger(popupState)
|
|
524
575
|
},
|
|
525
576
|
alternativeOptionLabels[value] ?? value
|
|
526
|
-
), /* @__PURE__ */
|
|
577
|
+
), /* @__PURE__ */ React13.createElement(Menu, { MenuListProps: { dense: true }, ...bindMenu(popupState) }, options.map((option, index) => /* @__PURE__ */ React13.createElement(
|
|
527
578
|
MenuListItem2,
|
|
528
579
|
{
|
|
529
580
|
key: option,
|
|
@@ -576,8 +627,8 @@ var SizeInput = ({
|
|
|
576
627
|
autoComplete: "off",
|
|
577
628
|
onClick,
|
|
578
629
|
onFocus,
|
|
579
|
-
startAdornment: startIcon ? /* @__PURE__ */
|
|
580
|
-
endAdornment: /* @__PURE__ */
|
|
630
|
+
startAdornment: startIcon ? /* @__PURE__ */ React14.createElement(InputAdornment2, { position: "start", disabled }, startIcon) : void 0,
|
|
631
|
+
endAdornment: /* @__PURE__ */ React14.createElement(
|
|
581
632
|
SelectionEndAdornment,
|
|
582
633
|
{
|
|
583
634
|
disabled,
|
|
@@ -585,7 +636,7 @@ var SizeInput = ({
|
|
|
585
636
|
onClick: handleUnitChange,
|
|
586
637
|
value: unit,
|
|
587
638
|
alternativeOptionLabels: {
|
|
588
|
-
custom: /* @__PURE__ */
|
|
639
|
+
custom: /* @__PURE__ */ React14.createElement(PencilIcon, { fontSize: "small" })
|
|
589
640
|
},
|
|
590
641
|
menuItemsAttributes: units2.includes("custom") ? {
|
|
591
642
|
custom: popupAttributes
|
|
@@ -593,7 +644,7 @@ var SizeInput = ({
|
|
|
593
644
|
}
|
|
594
645
|
)
|
|
595
646
|
};
|
|
596
|
-
return /* @__PURE__ */
|
|
647
|
+
return /* @__PURE__ */ React14.createElement(ControlActions, null, /* @__PURE__ */ React14.createElement(Box, null, /* @__PURE__ */ React14.createElement(
|
|
597
648
|
TextFieldInnerSelection,
|
|
598
649
|
{
|
|
599
650
|
disabled,
|
|
@@ -615,14 +666,23 @@ var SizeInput = ({
|
|
|
615
666
|
};
|
|
616
667
|
|
|
617
668
|
// src/components/text-field-popover.tsx
|
|
618
|
-
import * as
|
|
619
|
-
import { bindPopover,
|
|
669
|
+
import * as React15 from "react";
|
|
670
|
+
import { bindPopover, Popover, TextField as TextField4 } from "@elementor/ui";
|
|
620
671
|
var TextFieldPopover = (props) => {
|
|
621
672
|
const { popupState, restoreValue, anchorRef, value, onChange } = props;
|
|
622
|
-
return /* @__PURE__ */
|
|
673
|
+
return /* @__PURE__ */ React15.createElement(
|
|
623
674
|
Popover,
|
|
624
675
|
{
|
|
625
676
|
disablePortal: true,
|
|
677
|
+
slotProps: {
|
|
678
|
+
paper: {
|
|
679
|
+
sx: {
|
|
680
|
+
borderRadius: 2,
|
|
681
|
+
width: anchorRef.current?.offsetWidth + "px",
|
|
682
|
+
p: 1.5
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
},
|
|
626
686
|
...bindPopover(popupState),
|
|
627
687
|
anchorOrigin: { vertical: "bottom", horizontal: "center" },
|
|
628
688
|
transformOrigin: { vertical: "top", horizontal: "center" },
|
|
@@ -631,28 +691,18 @@ var TextFieldPopover = (props) => {
|
|
|
631
691
|
popupState.close();
|
|
632
692
|
}
|
|
633
693
|
},
|
|
634
|
-
/* @__PURE__ */
|
|
635
|
-
|
|
694
|
+
/* @__PURE__ */ React15.createElement(
|
|
695
|
+
TextField4,
|
|
636
696
|
{
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
TextField4,
|
|
645
|
-
{
|
|
646
|
-
value,
|
|
647
|
-
onChange,
|
|
648
|
-
size: "tiny",
|
|
649
|
-
type: "text",
|
|
650
|
-
fullWidth: true,
|
|
651
|
-
inputProps: {
|
|
652
|
-
autoFocus: true
|
|
653
|
-
}
|
|
697
|
+
value,
|
|
698
|
+
onChange,
|
|
699
|
+
size: "tiny",
|
|
700
|
+
type: "text",
|
|
701
|
+
fullWidth: true,
|
|
702
|
+
inputProps: {
|
|
703
|
+
autoFocus: true
|
|
654
704
|
}
|
|
655
|
-
|
|
705
|
+
}
|
|
656
706
|
)
|
|
657
707
|
);
|
|
658
708
|
};
|
|
@@ -732,12 +782,12 @@ var SizeControl = createControl((props) => {
|
|
|
732
782
|
return !!newState?.numeric || newState?.numeric === 0;
|
|
733
783
|
},
|
|
734
784
|
fallback: (newState) => ({
|
|
735
|
-
unit: newState?.unit ??
|
|
785
|
+
unit: newState?.unit ?? defaultUnit,
|
|
736
786
|
numeric: newState?.numeric ?? DEFAULT_SIZE,
|
|
737
787
|
custom: newState?.custom ?? ""
|
|
738
788
|
})
|
|
739
789
|
});
|
|
740
|
-
const { size: controlSize = DEFAULT_SIZE, unit: controlUnit =
|
|
790
|
+
const { size: controlSize = DEFAULT_SIZE, unit: controlUnit = defaultUnit } = extractValueFromState(state) || {};
|
|
741
791
|
const handleUnitChange = (newUnit) => {
|
|
742
792
|
if (newUnit === "custom") {
|
|
743
793
|
popupState.open(anchorRef?.current);
|
|
@@ -767,9 +817,13 @@ var SizeControl = createControl((props) => {
|
|
|
767
817
|
}
|
|
768
818
|
};
|
|
769
819
|
useEffect2(() => {
|
|
770
|
-
const newState = createStateFromSizeProp(sizeValue, defaultUnit);
|
|
771
|
-
const
|
|
772
|
-
const mergedStates = {
|
|
820
|
+
const newState = createStateFromSizeProp(sizeValue, state.unit === "custom" ? state.unit : defaultUnit);
|
|
821
|
+
const currentUnitType = isUnitExtendedOption(state.unit) ? "custom" : "numeric";
|
|
822
|
+
const mergedStates = {
|
|
823
|
+
...state,
|
|
824
|
+
unit: newState.unit ?? state.unit,
|
|
825
|
+
[currentUnitType]: newState[currentUnitType]
|
|
826
|
+
};
|
|
773
827
|
if (mergedStates.unit !== "auto" && areStatesEqual(state, mergedStates)) {
|
|
774
828
|
return;
|
|
775
829
|
}
|
|
@@ -785,7 +839,7 @@ var SizeControl = createControl((props) => {
|
|
|
785
839
|
setState(newState);
|
|
786
840
|
}
|
|
787
841
|
}, [activeBreakpoint]);
|
|
788
|
-
return /* @__PURE__ */
|
|
842
|
+
return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
|
|
789
843
|
SizeInput,
|
|
790
844
|
{
|
|
791
845
|
disabled,
|
|
@@ -801,7 +855,7 @@ var SizeControl = createControl((props) => {
|
|
|
801
855
|
onClick: onInputClick,
|
|
802
856
|
popupState
|
|
803
857
|
}
|
|
804
|
-
), anchorRef?.current && /* @__PURE__ */
|
|
858
|
+
), anchorRef?.current && /* @__PURE__ */ React16.createElement(
|
|
805
859
|
TextFieldPopover,
|
|
806
860
|
{
|
|
807
861
|
popupState,
|
|
@@ -857,15 +911,8 @@ function areStatesEqual(state1, state2) {
|
|
|
857
911
|
import * as React19 from "react";
|
|
858
912
|
import { forwardRef as forwardRef2, useRef as useRef2 } from "react";
|
|
859
913
|
import { strokePropTypeUtil } from "@elementor/editor-props";
|
|
860
|
-
import { Grid } from "@elementor/ui";
|
|
861
|
-
import { __ as
|
|
862
|
-
|
|
863
|
-
// src/components/control-form-label.tsx
|
|
864
|
-
import * as React16 from "react";
|
|
865
|
-
import { FormLabel } from "@elementor/ui";
|
|
866
|
-
var ControlFormLabel = (props) => {
|
|
867
|
-
return /* @__PURE__ */ React16.createElement(FormLabel, { size: "tiny", ...props });
|
|
868
|
-
};
|
|
914
|
+
import { Grid as Grid2 } from "@elementor/ui";
|
|
915
|
+
import { __ as __3 } from "@wordpress/i18n";
|
|
869
916
|
|
|
870
917
|
// src/components/section-content.tsx
|
|
871
918
|
import * as React17 from "react";
|
|
@@ -878,7 +925,8 @@ import { colorPropTypeUtil } from "@elementor/editor-props";
|
|
|
878
925
|
import { UnstableColorField } from "@elementor/ui";
|
|
879
926
|
var ColorControl = createControl(
|
|
880
927
|
({ propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, ...props }) => {
|
|
881
|
-
const { value, setValue, disabled } = useBoundProp(propTypeUtil);
|
|
928
|
+
const { value, setValue, placeholder: boundPropPlaceholder, disabled } = useBoundProp(propTypeUtil);
|
|
929
|
+
const placeholder = props.placeholder ?? boundPropPlaceholder;
|
|
882
930
|
const handleChange = (selectedColor) => {
|
|
883
931
|
setValue(selectedColor || null);
|
|
884
932
|
};
|
|
@@ -888,6 +936,7 @@ var ColorControl = createControl(
|
|
|
888
936
|
size: "tiny",
|
|
889
937
|
fullWidth: true,
|
|
890
938
|
value: value ?? "",
|
|
939
|
+
placeholder: placeholder ?? "",
|
|
891
940
|
onChange: handleChange,
|
|
892
941
|
...props,
|
|
893
942
|
disabled,
|
|
@@ -902,6 +951,14 @@ var ColorControl = createControl(
|
|
|
902
951
|
transformOrigin: {
|
|
903
952
|
vertical: "top",
|
|
904
953
|
horizontal: -10
|
|
954
|
+
},
|
|
955
|
+
slotProps: {
|
|
956
|
+
colorIndicator: {
|
|
957
|
+
value: value ?? placeholder ?? ""
|
|
958
|
+
},
|
|
959
|
+
colorBox: {
|
|
960
|
+
value: value ?? placeholder ?? ""
|
|
961
|
+
}
|
|
905
962
|
}
|
|
906
963
|
}
|
|
907
964
|
}
|
|
@@ -915,16 +972,16 @@ var units = ["px", "em", "rem"];
|
|
|
915
972
|
var StrokeControl = createControl(() => {
|
|
916
973
|
const propContext = useBoundProp(strokePropTypeUtil);
|
|
917
974
|
const rowRef = useRef2(null);
|
|
918
|
-
return /* @__PURE__ */ React19.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React19.createElement(SectionContent, null, /* @__PURE__ */ React19.createElement(Control, { bind: "width", label:
|
|
975
|
+
return /* @__PURE__ */ React19.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React19.createElement(SectionContent, null, /* @__PURE__ */ React19.createElement(Control, { bind: "width", label: __3("Stroke width", "elementor"), ref: rowRef }, /* @__PURE__ */ React19.createElement(SizeControl, { units, anchorRef: rowRef })), /* @__PURE__ */ React19.createElement(Control, { bind: "color", label: __3("Stroke color", "elementor") }, /* @__PURE__ */ React19.createElement(ColorControl, null))));
|
|
919
976
|
});
|
|
920
|
-
var Control = forwardRef2(({ bind, label, children }, ref) => /* @__PURE__ */ React19.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React19.createElement(
|
|
977
|
+
var Control = forwardRef2(({ bind, label, children }, ref) => /* @__PURE__ */ React19.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React19.createElement(Grid2, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref }, /* @__PURE__ */ React19.createElement(Grid2, { item: true, xs: 6 }, /* @__PURE__ */ React19.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React19.createElement(Grid2, { item: true, xs: 6 }, children))));
|
|
921
978
|
|
|
922
979
|
// src/controls/box-shadow-repeater-control.tsx
|
|
923
980
|
import * as React26 from "react";
|
|
924
981
|
import { useRef as useRef3 } from "react";
|
|
925
982
|
import { boxShadowPropTypeUtil, shadowPropTypeUtil } from "@elementor/editor-props";
|
|
926
|
-
import { FormLabel as FormLabel2, Grid as
|
|
927
|
-
import { __ as
|
|
983
|
+
import { FormLabel as FormLabel2, Grid as Grid4, UnstableColorIndicator } from "@elementor/ui";
|
|
984
|
+
import { __ as __5 } from "@wordpress/i18n";
|
|
928
985
|
|
|
929
986
|
// src/components/popover-content.tsx
|
|
930
987
|
import * as React20 from "react";
|
|
@@ -934,9 +991,9 @@ var PopoverContent = ({ gap = 1.5, children, ...props }) => /* @__PURE__ */ Reac
|
|
|
934
991
|
// src/components/popover-grid-container.tsx
|
|
935
992
|
import { forwardRef as forwardRef3 } from "react";
|
|
936
993
|
import * as React21 from "react";
|
|
937
|
-
import { Grid as
|
|
994
|
+
import { Grid as Grid3 } from "@elementor/ui";
|
|
938
995
|
var PopoverGridContainer = forwardRef3(
|
|
939
|
-
({ gap = 1.5, alignItems = "center", flexWrap = "nowrap", children }, ref) => /* @__PURE__ */ React21.createElement(
|
|
996
|
+
({ gap = 1.5, alignItems = "center", flexWrap = "nowrap", children }, ref) => /* @__PURE__ */ React21.createElement(Grid3, { container: true, gap, alignItems, flexWrap, ref }, children)
|
|
940
997
|
);
|
|
941
998
|
|
|
942
999
|
// src/components/repeater.tsx
|
|
@@ -951,11 +1008,11 @@ import {
|
|
|
951
1008
|
Popover as Popover2,
|
|
952
1009
|
Stack as Stack5,
|
|
953
1010
|
Tooltip,
|
|
954
|
-
Typography,
|
|
1011
|
+
Typography as Typography2,
|
|
955
1012
|
UnstableTag,
|
|
956
1013
|
usePopupState as usePopupState3
|
|
957
1014
|
} from "@elementor/ui";
|
|
958
|
-
import { __ as
|
|
1015
|
+
import { __ as __4 } from "@wordpress/i18n";
|
|
959
1016
|
|
|
960
1017
|
// src/control-adornments/control-adornments.tsx
|
|
961
1018
|
import * as React23 from "react";
|
|
@@ -964,7 +1021,7 @@ import * as React23 from "react";
|
|
|
964
1021
|
import * as React22 from "react";
|
|
965
1022
|
import { createContext as createContext5, useContext as useContext5 } from "react";
|
|
966
1023
|
var Context2 = createContext5(null);
|
|
967
|
-
var ControlAdornmentsProvider = ({ children, items }) => /* @__PURE__ */ React22.createElement(Context2.Provider, { value: { items } }, children);
|
|
1024
|
+
var ControlAdornmentsProvider = ({ children, items: items2 }) => /* @__PURE__ */ React22.createElement(Context2.Provider, { value: { items: items2 } }, children);
|
|
968
1025
|
var useControlAdornments = () => {
|
|
969
1026
|
const context = useContext5(Context2);
|
|
970
1027
|
return context?.items ?? [];
|
|
@@ -972,11 +1029,11 @@ var useControlAdornments = () => {
|
|
|
972
1029
|
|
|
973
1030
|
// src/control-adornments/control-adornments.tsx
|
|
974
1031
|
function ControlAdornments() {
|
|
975
|
-
const
|
|
976
|
-
if (
|
|
1032
|
+
const items2 = useControlAdornments();
|
|
1033
|
+
if (items2?.length === 0) {
|
|
977
1034
|
return null;
|
|
978
1035
|
}
|
|
979
|
-
return /* @__PURE__ */ React23.createElement(React23.Fragment, null,
|
|
1036
|
+
return /* @__PURE__ */ React23.createElement(React23.Fragment, null, items2.map(({ Adornment, id }) => /* @__PURE__ */ React23.createElement(Adornment, { key: id })));
|
|
980
1037
|
}
|
|
981
1038
|
|
|
982
1039
|
// src/locations.ts
|
|
@@ -1077,16 +1134,17 @@ var Repeater = ({
|
|
|
1077
1134
|
setValues: setRepeaterValues,
|
|
1078
1135
|
showDuplicate = true,
|
|
1079
1136
|
showToggle = true,
|
|
1080
|
-
isSortable = true
|
|
1137
|
+
isSortable = true,
|
|
1138
|
+
collectionPropUtil
|
|
1081
1139
|
}) => {
|
|
1082
1140
|
const [openItem, setOpenItem] = useState4(EMPTY_OPEN_ITEM);
|
|
1083
|
-
const [
|
|
1141
|
+
const [items2, setItems] = useSyncExternalState({
|
|
1084
1142
|
external: repeaterValues,
|
|
1085
1143
|
// @ts-expect-error - as long as persistWhen => true, value will never be null
|
|
1086
1144
|
setExternal: setRepeaterValues,
|
|
1087
1145
|
persistWhen: () => true
|
|
1088
1146
|
});
|
|
1089
|
-
const [uniqueKeys, setUniqueKeys] = useState4(
|
|
1147
|
+
const [uniqueKeys, setUniqueKeys] = useState4(items2.map((_, index) => index));
|
|
1090
1148
|
const generateNextKey = (source) => {
|
|
1091
1149
|
return 1 + Math.max(0, ...source);
|
|
1092
1150
|
};
|
|
@@ -1094,10 +1152,10 @@ var Repeater = ({
|
|
|
1094
1152
|
const newItem = structuredClone(itemSettings.initialValues);
|
|
1095
1153
|
const newKey = generateNextKey(uniqueKeys);
|
|
1096
1154
|
if (addToBottom) {
|
|
1097
|
-
setItems([...
|
|
1155
|
+
setItems([...items2, newItem]);
|
|
1098
1156
|
setUniqueKeys([...uniqueKeys, newKey]);
|
|
1099
1157
|
} else {
|
|
1100
|
-
setItems([newItem, ...
|
|
1158
|
+
setItems([newItem, ...items2]);
|
|
1101
1159
|
setUniqueKeys([newKey, ...uniqueKeys]);
|
|
1102
1160
|
}
|
|
1103
1161
|
if (openOnAdd) {
|
|
@@ -1105,10 +1163,10 @@ var Repeater = ({
|
|
|
1105
1163
|
}
|
|
1106
1164
|
};
|
|
1107
1165
|
const duplicateRepeaterItem = (index) => {
|
|
1108
|
-
const newItem = structuredClone(
|
|
1166
|
+
const newItem = structuredClone(items2[index]);
|
|
1109
1167
|
const newKey = generateNextKey(uniqueKeys);
|
|
1110
1168
|
const atPosition = 1 + index;
|
|
1111
|
-
setItems([...
|
|
1169
|
+
setItems([...items2.slice(0, atPosition), newItem, ...items2.slice(atPosition)]);
|
|
1112
1170
|
setUniqueKeys([...uniqueKeys.slice(0, atPosition), newKey, ...uniqueKeys.slice(atPosition)]);
|
|
1113
1171
|
};
|
|
1114
1172
|
const removeRepeaterItem = (index) => {
|
|
@@ -1118,14 +1176,14 @@ var Repeater = ({
|
|
|
1118
1176
|
})
|
|
1119
1177
|
);
|
|
1120
1178
|
setItems(
|
|
1121
|
-
|
|
1179
|
+
items2.filter((_, pos) => {
|
|
1122
1180
|
return pos !== index;
|
|
1123
1181
|
})
|
|
1124
1182
|
);
|
|
1125
1183
|
};
|
|
1126
1184
|
const toggleDisableRepeaterItem = (index) => {
|
|
1127
1185
|
setItems(
|
|
1128
|
-
|
|
1186
|
+
items2.map((value, pos) => {
|
|
1129
1187
|
if (pos === index) {
|
|
1130
1188
|
const { disabled: propDisabled, ...rest } = value;
|
|
1131
1189
|
return { ...rest, ...propDisabled ? {} : { disabled: true } };
|
|
@@ -1152,7 +1210,7 @@ var Repeater = ({
|
|
|
1152
1210
|
gap: 1,
|
|
1153
1211
|
sx: { marginInlineEnd: -0.75 }
|
|
1154
1212
|
},
|
|
1155
|
-
/* @__PURE__ */ React25.createElement(
|
|
1213
|
+
/* @__PURE__ */ React25.createElement(Typography2, { component: "label", variant: "caption", color: "text.secondary" }, label),
|
|
1156
1214
|
/* @__PURE__ */ React25.createElement(ControlAdornments, null),
|
|
1157
1215
|
/* @__PURE__ */ React25.createElement(
|
|
1158
1216
|
IconButton,
|
|
@@ -1161,12 +1219,12 @@ var Repeater = ({
|
|
|
1161
1219
|
sx: { ml: "auto" },
|
|
1162
1220
|
disabled,
|
|
1163
1221
|
onClick: addRepeaterItem,
|
|
1164
|
-
"aria-label":
|
|
1222
|
+
"aria-label": __4("Add item", "elementor")
|
|
1165
1223
|
},
|
|
1166
1224
|
/* @__PURE__ */ React25.createElement(PlusIcon, { fontSize: SIZE })
|
|
1167
1225
|
)
|
|
1168
1226
|
), 0 < uniqueKeys.length && /* @__PURE__ */ React25.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key, index) => {
|
|
1169
|
-
const value =
|
|
1227
|
+
const value = items2[index];
|
|
1170
1228
|
if (!value) {
|
|
1171
1229
|
return null;
|
|
1172
1230
|
}
|
|
@@ -1183,7 +1241,8 @@ var Repeater = ({
|
|
|
1183
1241
|
openOnMount: openOnAdd && openItem === key,
|
|
1184
1242
|
onOpen: () => setOpenItem(EMPTY_OPEN_ITEM),
|
|
1185
1243
|
showDuplicate,
|
|
1186
|
-
showToggle
|
|
1244
|
+
showToggle,
|
|
1245
|
+
collectionPropUtil
|
|
1187
1246
|
},
|
|
1188
1247
|
(props) => /* @__PURE__ */ React25.createElement(itemSettings.Content, { ...props, value, bind: String(index) })
|
|
1189
1248
|
));
|
|
@@ -1201,13 +1260,14 @@ var RepeaterItem = ({
|
|
|
1201
1260
|
onOpen,
|
|
1202
1261
|
showDuplicate,
|
|
1203
1262
|
showToggle,
|
|
1204
|
-
disabled
|
|
1263
|
+
disabled,
|
|
1264
|
+
collectionPropUtil
|
|
1205
1265
|
}) => {
|
|
1206
1266
|
const [anchorEl, setAnchorEl] = useState4(null);
|
|
1207
1267
|
const { popoverState, popoverProps, ref, setRef } = usePopover(openOnMount, onOpen);
|
|
1208
|
-
const duplicateLabel =
|
|
1209
|
-
const toggleLabel = propDisabled ?
|
|
1210
|
-
const removeLabel =
|
|
1268
|
+
const duplicateLabel = __4("Duplicate", "elementor");
|
|
1269
|
+
const toggleLabel = propDisabled ? __4("Show", "elementor") : __4("Hide", "elementor");
|
|
1270
|
+
const removeLabel = __4("Remove", "elementor");
|
|
1211
1271
|
return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(
|
|
1212
1272
|
UnstableTag,
|
|
1213
1273
|
{
|
|
@@ -1217,7 +1277,7 @@ var RepeaterItem = ({
|
|
|
1217
1277
|
fullWidth: true,
|
|
1218
1278
|
ref: setRef,
|
|
1219
1279
|
variant: "outlined",
|
|
1220
|
-
"aria-label":
|
|
1280
|
+
"aria-label": __4("Open item", "elementor"),
|
|
1221
1281
|
...bindTrigger2(popoverState),
|
|
1222
1282
|
startIcon,
|
|
1223
1283
|
actions: /* @__PURE__ */ React25.createElement(React25.Fragment, null, showDuplicate && /* @__PURE__ */ React25.createElement(Tooltip, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React25.createElement(IconButton, { size: SIZE, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React25.createElement(CopyIcon, { fontSize: SIZE }))), showToggle && /* @__PURE__ */ React25.createElement(Tooltip, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React25.createElement(IconButton, { size: SIZE, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React25.createElement(EyeOffIcon, { fontSize: SIZE }) : /* @__PURE__ */ React25.createElement(EyeIcon, { fontSize: SIZE }))), /* @__PURE__ */ React25.createElement(Tooltip, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React25.createElement(IconButton, { size: SIZE, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React25.createElement(XIcon, { fontSize: SIZE }))))
|
|
@@ -1236,7 +1296,7 @@ var RepeaterItem = ({
|
|
|
1236
1296
|
...popoverProps,
|
|
1237
1297
|
anchorEl: ref
|
|
1238
1298
|
},
|
|
1239
|
-
/* @__PURE__ */ React25.createElement(Box2, null, children({ anchorEl }))
|
|
1299
|
+
/* @__PURE__ */ React25.createElement(Box2, null, children({ anchorEl, collectionPropUtil }))
|
|
1240
1300
|
));
|
|
1241
1301
|
};
|
|
1242
1302
|
var usePopover = (openOnMount, onOpen) => {
|
|
@@ -1260,14 +1320,14 @@ var usePopover = (openOnMount, onOpen) => {
|
|
|
1260
1320
|
// src/controls/box-shadow-repeater-control.tsx
|
|
1261
1321
|
var BoxShadowRepeaterControl = createControl(() => {
|
|
1262
1322
|
const { propType, value, setValue, disabled } = useBoundProp(boxShadowPropTypeUtil);
|
|
1263
|
-
return /* @__PURE__ */ React26.createElement(PropProvider, { propType, value, setValue, disabled }, /* @__PURE__ */ React26.createElement(
|
|
1323
|
+
return /* @__PURE__ */ React26.createElement(PropProvider, { propType, value, setValue, isDisabled: () => disabled }, /* @__PURE__ */ React26.createElement(
|
|
1264
1324
|
Repeater,
|
|
1265
1325
|
{
|
|
1266
1326
|
openOnAdd: true,
|
|
1267
1327
|
disabled,
|
|
1268
1328
|
values: value ?? [],
|
|
1269
1329
|
setValues: setValue,
|
|
1270
|
-
label:
|
|
1330
|
+
label: __5("Box shadow", "elementor"),
|
|
1271
1331
|
itemSettings: {
|
|
1272
1332
|
Icon: ItemIcon,
|
|
1273
1333
|
Label: ItemLabel,
|
|
@@ -1284,22 +1344,22 @@ var ItemContent = ({ anchorEl, bind }) => {
|
|
|
1284
1344
|
var Content = ({ anchorEl }) => {
|
|
1285
1345
|
const context = useBoundProp(shadowPropTypeUtil);
|
|
1286
1346
|
const rowRef = [useRef3(null), useRef3(null)];
|
|
1287
|
-
return /* @__PURE__ */ React26.createElement(PropProvider, { ...context }, /* @__PURE__ */ React26.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React26.createElement(PopoverGridContainer, null, /* @__PURE__ */ React26.createElement(Control2, { bind: "color", label:
|
|
1347
|
+
return /* @__PURE__ */ React26.createElement(PropProvider, { ...context }, /* @__PURE__ */ React26.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React26.createElement(PopoverGridContainer, null, /* @__PURE__ */ React26.createElement(Control2, { bind: "color", label: __5("Color", "elementor") }, /* @__PURE__ */ React26.createElement(ColorControl, { anchorEl })), /* @__PURE__ */ React26.createElement(Control2, { bind: "position", label: __5("Position", "elementor"), sx: { overflow: "hidden" } }, /* @__PURE__ */ React26.createElement(
|
|
1288
1348
|
SelectControl,
|
|
1289
1349
|
{
|
|
1290
1350
|
options: [
|
|
1291
|
-
{ label:
|
|
1292
|
-
{ label:
|
|
1351
|
+
{ label: __5("Inset", "elementor"), value: "inset" },
|
|
1352
|
+
{ label: __5("Outset", "elementor"), value: null }
|
|
1293
1353
|
]
|
|
1294
1354
|
}
|
|
1295
|
-
))), /* @__PURE__ */ React26.createElement(PopoverGridContainer, { ref: rowRef[0] }, /* @__PURE__ */ React26.createElement(Control2, { bind: "hOffset", label:
|
|
1355
|
+
))), /* @__PURE__ */ React26.createElement(PopoverGridContainer, { ref: rowRef[0] }, /* @__PURE__ */ React26.createElement(Control2, { bind: "hOffset", label: __5("Horizontal", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[0] })), /* @__PURE__ */ React26.createElement(Control2, { bind: "vOffset", label: __5("Vertical", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[0] }))), /* @__PURE__ */ React26.createElement(PopoverGridContainer, { ref: rowRef[1] }, /* @__PURE__ */ React26.createElement(Control2, { bind: "blur", label: __5("Blur", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[1] })), /* @__PURE__ */ React26.createElement(Control2, { bind: "spread", label: __5("Spread", "elementor") }, /* @__PURE__ */ React26.createElement(SizeControl, { anchorRef: rowRef[1] })))));
|
|
1296
1356
|
};
|
|
1297
1357
|
var Control2 = ({
|
|
1298
1358
|
label,
|
|
1299
1359
|
bind,
|
|
1300
1360
|
children,
|
|
1301
1361
|
sx
|
|
1302
|
-
}) => /* @__PURE__ */ React26.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React26.createElement(
|
|
1362
|
+
}) => /* @__PURE__ */ React26.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 6, sx }, /* @__PURE__ */ React26.createElement(Grid4, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(FormLabel2, { size: "tiny" }, label)), /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 12 }, children))));
|
|
1303
1363
|
var ItemLabel = ({ value }) => {
|
|
1304
1364
|
const { position, hOffset, vOffset, blur, spread } = value.value;
|
|
1305
1365
|
const { size: blurSize = "", unit: blurUnit = "" } = blur?.value || {};
|
|
@@ -1343,16 +1403,24 @@ var initialShadow = {
|
|
|
1343
1403
|
};
|
|
1344
1404
|
|
|
1345
1405
|
// src/controls/filter-repeater-control.tsx
|
|
1346
|
-
import * as
|
|
1347
|
-
import { useRef as
|
|
1406
|
+
import * as React30 from "react";
|
|
1407
|
+
import { useRef as useRef5 } from "react";
|
|
1348
1408
|
import {
|
|
1349
1409
|
blurFilterPropTypeUtil,
|
|
1350
1410
|
brightnessFilterPropTypeUtil,
|
|
1351
|
-
|
|
1411
|
+
contrastFilterPropTypeUtil,
|
|
1412
|
+
dropShadowFilterPropTypeUtil,
|
|
1413
|
+
filterPropTypeUtil,
|
|
1414
|
+
grayscaleFilterPropTypeUtil,
|
|
1415
|
+
hueRotateFilterPropTypeUtil,
|
|
1416
|
+
invertFilterPropTypeUtil,
|
|
1417
|
+
saturateFilterPropTypeUtil,
|
|
1418
|
+
sepiaFilterPropTypeUtil
|
|
1352
1419
|
} from "@elementor/editor-props";
|
|
1420
|
+
import { backdropFilterPropTypeUtil } from "@elementor/editor-props";
|
|
1353
1421
|
import { MenuListItem as MenuListItem3 } from "@elementor/editor-ui";
|
|
1354
|
-
import { Box as
|
|
1355
|
-
import { __ as
|
|
1422
|
+
import { Box as Box4, Grid as Grid6, Select as Select2 } from "@elementor/ui";
|
|
1423
|
+
import { __ as __7 } from "@wordpress/i18n";
|
|
1356
1424
|
|
|
1357
1425
|
// src/components/control-label.tsx
|
|
1358
1426
|
import * as React27 from "react";
|
|
@@ -1361,39 +1429,145 @@ var ControlLabel = ({ children }) => {
|
|
|
1361
1429
|
return /* @__PURE__ */ React27.createElement(Stack6, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React27.createElement(ControlFormLabel, null, children), /* @__PURE__ */ React27.createElement(ControlAdornments, null));
|
|
1362
1430
|
};
|
|
1363
1431
|
|
|
1432
|
+
// src/controls/filter-control/drop-shadow-item-content.tsx
|
|
1433
|
+
import * as React28 from "react";
|
|
1434
|
+
import { useRef as useRef4 } from "react";
|
|
1435
|
+
import { Grid as Grid5 } from "@elementor/ui";
|
|
1436
|
+
import { __ as __6 } from "@wordpress/i18n";
|
|
1437
|
+
var items = [
|
|
1438
|
+
{
|
|
1439
|
+
bind: "xAxis",
|
|
1440
|
+
label: __6("X-axis", "elementor"),
|
|
1441
|
+
rowIndex: 0
|
|
1442
|
+
},
|
|
1443
|
+
{
|
|
1444
|
+
bind: "yAxis",
|
|
1445
|
+
label: __6("Y-axis", "elementor"),
|
|
1446
|
+
rowIndex: 0
|
|
1447
|
+
},
|
|
1448
|
+
{
|
|
1449
|
+
bind: "blur",
|
|
1450
|
+
label: __6("Blur", "elementor"),
|
|
1451
|
+
rowIndex: 1
|
|
1452
|
+
},
|
|
1453
|
+
{
|
|
1454
|
+
bind: "color",
|
|
1455
|
+
label: __6("Color", "elementor"),
|
|
1456
|
+
rowIndex: 1
|
|
1457
|
+
}
|
|
1458
|
+
];
|
|
1459
|
+
var DropShadowItemContent = ({
|
|
1460
|
+
propType,
|
|
1461
|
+
units: units2,
|
|
1462
|
+
anchorEl
|
|
1463
|
+
}) => {
|
|
1464
|
+
const context = useBoundProp(propType);
|
|
1465
|
+
const rowRefs = [useRef4(null), useRef4(null)];
|
|
1466
|
+
return /* @__PURE__ */ React28.createElement(PropProvider, { ...context }, items.map((item) => /* @__PURE__ */ React28.createElement(PopoverGridContainer, { key: item.bind, ref: rowRefs[item.rowIndex] ?? null }, /* @__PURE__ */ React28.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React28.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React28.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React28.createElement(Grid5, { item: true, xs: 6 }, item.bind === "color" ? /* @__PURE__ */ React28.createElement(ColorControl, { anchorEl }) : /* @__PURE__ */ React28.createElement(SizeControl, { anchorRef: rowRefs[item.rowIndex], units: units2, defaultUnit: "px" }))))));
|
|
1467
|
+
};
|
|
1468
|
+
|
|
1469
|
+
// src/controls/filter-control/drop-shadow-item-label.tsx
|
|
1470
|
+
import * as React29 from "react";
|
|
1471
|
+
import { Box as Box3 } from "@elementor/ui";
|
|
1472
|
+
var DropShadowItemLabel = ({ value }) => {
|
|
1473
|
+
const { xAxis, yAxis, blur } = value.value;
|
|
1474
|
+
const xValue = `${xAxis?.value?.size ?? 0}${xAxis?.value?.unit ?? "px"}`;
|
|
1475
|
+
const yValue = `${yAxis?.value?.size ?? 0}${yAxis?.value?.unit ?? "px"}`;
|
|
1476
|
+
const blurValue = `${blur?.value?.size ?? 10}${blur?.value?.unit ?? "px"}`;
|
|
1477
|
+
return /* @__PURE__ */ React29.createElement(Box3, { component: "span" }, /* @__PURE__ */ React29.createElement(Box3, { component: "span", style: { textTransform: "capitalize" } }, "Drop shadow:"), `${xValue} ${yValue} ${blurValue}`);
|
|
1478
|
+
};
|
|
1479
|
+
|
|
1364
1480
|
// src/controls/filter-repeater-control.tsx
|
|
1365
1481
|
var DEFAULT_FILTER_KEY = "blur";
|
|
1366
1482
|
var filterConfig = {
|
|
1367
1483
|
blur: {
|
|
1368
1484
|
defaultValue: { $$type: "radius", radius: { $$type: "size", value: { size: 0, unit: "px" } } },
|
|
1369
|
-
name:
|
|
1370
|
-
valueName:
|
|
1485
|
+
name: __7("Blur", "elementor"),
|
|
1486
|
+
valueName: __7("Radius", "elementor"),
|
|
1371
1487
|
propType: blurFilterPropTypeUtil,
|
|
1372
1488
|
units: defaultUnits.filter((unit) => unit !== "%")
|
|
1373
1489
|
},
|
|
1490
|
+
"drop-shadow": {
|
|
1491
|
+
defaultValue: {
|
|
1492
|
+
$$type: "drop-shadow",
|
|
1493
|
+
value: {
|
|
1494
|
+
xAxis: { $$type: "size", value: { size: 0, unit: "px" } },
|
|
1495
|
+
yAxis: { $$type: "size", value: { size: 0, unit: "px" } },
|
|
1496
|
+
blur: { $$type: "size", value: { size: 10, unit: "px" } },
|
|
1497
|
+
color: { $$type: "color", value: "rgba(0, 0, 0, 1)" }
|
|
1498
|
+
}
|
|
1499
|
+
},
|
|
1500
|
+
name: __7("Drop shadow", "elementor"),
|
|
1501
|
+
valueName: __7("Drop-shadow", "elementor"),
|
|
1502
|
+
propType: dropShadowFilterPropTypeUtil,
|
|
1503
|
+
units: defaultUnits.filter((unit) => unit !== "%")
|
|
1504
|
+
},
|
|
1374
1505
|
brightness: {
|
|
1375
1506
|
defaultValue: { $$type: "amount", amount: { $$type: "size", value: { size: 100, unit: "%" } } },
|
|
1376
|
-
name:
|
|
1377
|
-
valueName:
|
|
1507
|
+
name: __7("Brightness", "elementor"),
|
|
1508
|
+
valueName: __7("Amount", "elementor"),
|
|
1378
1509
|
propType: brightnessFilterPropTypeUtil,
|
|
1379
1510
|
units: ["%"]
|
|
1511
|
+
},
|
|
1512
|
+
contrast: {
|
|
1513
|
+
defaultValue: { $$type: "contrast", contrast: { $$type: "size", value: { size: 100, unit: "%" } } },
|
|
1514
|
+
name: __7("Contrast", "elementor"),
|
|
1515
|
+
valueName: __7("Amount", "elementor"),
|
|
1516
|
+
propType: contrastFilterPropTypeUtil,
|
|
1517
|
+
units: ["%"]
|
|
1518
|
+
},
|
|
1519
|
+
"hue-rotate": {
|
|
1520
|
+
defaultValue: { $$type: "hue-rotate", "hue-rotate": { $$type: "size", value: { size: 0, unit: "deg" } } },
|
|
1521
|
+
name: __7("Hue Rotate", "elementor"),
|
|
1522
|
+
valueName: __7("Angle", "elementor"),
|
|
1523
|
+
propType: hueRotateFilterPropTypeUtil,
|
|
1524
|
+
units: ["deg", "rad", "grad", "turn"]
|
|
1525
|
+
},
|
|
1526
|
+
saturate: {
|
|
1527
|
+
defaultValue: { $$type: "saturate", saturate: { $$type: "size", value: { size: 100, unit: "%" } } },
|
|
1528
|
+
name: __7("Saturate", "elementor"),
|
|
1529
|
+
valueName: __7("Amount", "elementor"),
|
|
1530
|
+
propType: saturateFilterPropTypeUtil,
|
|
1531
|
+
units: ["%"]
|
|
1532
|
+
},
|
|
1533
|
+
grayscale: {
|
|
1534
|
+
defaultValue: { $$type: "grayscale", grayscale: { $$type: "size", value: { size: 0, unit: "%" } } },
|
|
1535
|
+
name: __7("Grayscale", "elementor"),
|
|
1536
|
+
valueName: __7("Amount", "elementor"),
|
|
1537
|
+
propType: grayscaleFilterPropTypeUtil,
|
|
1538
|
+
units: ["%"]
|
|
1539
|
+
},
|
|
1540
|
+
invert: {
|
|
1541
|
+
defaultValue: { $$type: "invert", invert: { $$type: "size", value: { size: 0, unit: "%" } } },
|
|
1542
|
+
name: __7("Invert", "elementor"),
|
|
1543
|
+
valueName: __7("Amount", "elementor"),
|
|
1544
|
+
propType: invertFilterPropTypeUtil,
|
|
1545
|
+
units: ["%"]
|
|
1546
|
+
},
|
|
1547
|
+
sepia: {
|
|
1548
|
+
defaultValue: { $$type: "sepia", sepia: { $$type: "size", value: { size: 0, unit: "%" } } },
|
|
1549
|
+
name: __7("Sepia", "elementor"),
|
|
1550
|
+
valueName: __7("Amount", "elementor"),
|
|
1551
|
+
propType: sepiaFilterPropTypeUtil,
|
|
1552
|
+
units: ["%"]
|
|
1380
1553
|
}
|
|
1381
1554
|
};
|
|
1382
1555
|
var filterKeys = Object.keys(filterConfig);
|
|
1383
|
-
var
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
})
|
|
1387
|
-
|
|
1388
|
-
const { propType, value: filterValues, setValue, disabled } = useBoundProp(
|
|
1389
|
-
return /* @__PURE__ */
|
|
1556
|
+
var isSingleSize = (key) => {
|
|
1557
|
+
return !["drop-shadow"].includes(key);
|
|
1558
|
+
};
|
|
1559
|
+
var FilterRepeaterControl = createControl(({ filterPropName = "filter" }) => {
|
|
1560
|
+
const [propUtil, label] = filterPropName === "backdrop-filter" ? [backdropFilterPropTypeUtil, __7("Backdrop Filters", "elementor")] : [filterPropTypeUtil, __7("Filters", "elementor")];
|
|
1561
|
+
const { propType, value: filterValues, setValue, disabled } = useBoundProp(propUtil);
|
|
1562
|
+
return /* @__PURE__ */ React30.createElement(PropProvider, { propType, value: filterValues, setValue }, /* @__PURE__ */ React30.createElement(
|
|
1390
1563
|
Repeater,
|
|
1391
1564
|
{
|
|
1392
1565
|
openOnAdd: true,
|
|
1393
1566
|
disabled,
|
|
1394
1567
|
values: filterValues ?? [],
|
|
1395
1568
|
setValues: setValue,
|
|
1396
|
-
label
|
|
1569
|
+
label,
|
|
1570
|
+
collectionPropUtil: propUtil,
|
|
1397
1571
|
itemSettings: {
|
|
1398
1572
|
Icon: ItemIcon2,
|
|
1399
1573
|
Label: ItemLabel2,
|
|
@@ -1406,21 +1580,24 @@ var FilterRepeaterControl = createControl(() => {
|
|
|
1406
1580
|
}
|
|
1407
1581
|
));
|
|
1408
1582
|
});
|
|
1409
|
-
var ItemIcon2 = () => /* @__PURE__ */
|
|
1410
|
-
var ItemLabel2 = (
|
|
1411
|
-
|
|
1412
|
-
return singleSizeFilterNames.includes($$type) && /* @__PURE__ */ React28.createElement(SingleSizeItemLabel, { value: props.value });
|
|
1583
|
+
var ItemIcon2 = () => /* @__PURE__ */ React30.createElement(React30.Fragment, null);
|
|
1584
|
+
var ItemLabel2 = ({ value }) => {
|
|
1585
|
+
return isSingleSize(value.$$type) ? /* @__PURE__ */ React30.createElement(SingleSizeItemLabel, { value }) : /* @__PURE__ */ React30.createElement(DropShadowItemLabel, { value });
|
|
1413
1586
|
};
|
|
1414
1587
|
var SingleSizeItemLabel = ({ value }) => {
|
|
1415
1588
|
const { $$type, value: sizeValue } = value;
|
|
1416
1589
|
const { $$type: key } = filterConfig[$$type].defaultValue;
|
|
1417
1590
|
const defaultUnit = filterConfig[$$type].defaultValue[key].value.unit;
|
|
1418
1591
|
const { unit, size } = sizeValue[key]?.value ?? { unit: defaultUnit, size: 0 };
|
|
1419
|
-
const label = /* @__PURE__ */
|
|
1420
|
-
return /* @__PURE__ */
|
|
1592
|
+
const label = /* @__PURE__ */ React30.createElement(Box4, { component: "span", style: { textTransform: "capitalize" } }, value.$$type, ":");
|
|
1593
|
+
return /* @__PURE__ */ React30.createElement(Box4, { component: "span" }, label, unit !== "custom" ? ` ${size ?? 0}${unit ?? defaultUnit}` : size);
|
|
1421
1594
|
};
|
|
1422
|
-
var ItemContent2 = ({
|
|
1423
|
-
|
|
1595
|
+
var ItemContent2 = ({
|
|
1596
|
+
bind,
|
|
1597
|
+
collectionPropUtil,
|
|
1598
|
+
anchorEl
|
|
1599
|
+
}) => {
|
|
1600
|
+
const { value: filterValues, setValue } = useBoundProp(collectionPropUtil ?? filterPropTypeUtil);
|
|
1424
1601
|
const itemIndex = parseInt(bind, 10);
|
|
1425
1602
|
const item = filterValues?.[itemIndex];
|
|
1426
1603
|
const handleChange = (e) => {
|
|
@@ -1428,11 +1605,11 @@ var ItemContent2 = ({ bind }) => {
|
|
|
1428
1605
|
const filterType = e.target.value;
|
|
1429
1606
|
newFilterValues[itemIndex] = {
|
|
1430
1607
|
$$type: filterType,
|
|
1431
|
-
value: filterConfig[filterType].defaultValue
|
|
1608
|
+
value: { ...filterConfig[filterType].defaultValue }
|
|
1432
1609
|
};
|
|
1433
1610
|
setValue(newFilterValues);
|
|
1434
1611
|
};
|
|
1435
|
-
return /* @__PURE__ */
|
|
1612
|
+
return /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React30.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React30.createElement(PopoverGridContainer, null, /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel, null, __7("Filter", "elementor"))), /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(
|
|
1436
1613
|
Select2,
|
|
1437
1614
|
{
|
|
1438
1615
|
sx: { overflow: "hidden" },
|
|
@@ -1441,27 +1618,29 @@ var ItemContent2 = ({ bind }) => {
|
|
|
1441
1618
|
onChange: handleChange,
|
|
1442
1619
|
fullWidth: true
|
|
1443
1620
|
},
|
|
1444
|
-
filterKeys.map((filterKey) => /* @__PURE__ */
|
|
1445
|
-
))), /* @__PURE__ */
|
|
1621
|
+
filterKeys.map((filterKey) => /* @__PURE__ */ React30.createElement(MenuListItem3, { key: filterKey, value: filterKey }, filterConfig[filterKey].name))
|
|
1622
|
+
))), /* @__PURE__ */ React30.createElement(Content2, { filterType: item?.$$type, anchorEl })));
|
|
1446
1623
|
};
|
|
1447
|
-
var Content2 = ({ filterType }) => {
|
|
1448
|
-
|
|
1624
|
+
var Content2 = ({ filterType, anchorEl }) => {
|
|
1625
|
+
const { propType, units: units2 = [] } = filterConfig[filterType];
|
|
1626
|
+
return isSingleSize(filterType) ? /* @__PURE__ */ React30.createElement(SingleSizeItemContent, { filterType }) : /* @__PURE__ */ React30.createElement(DropShadowItemContent, { propType, units: units2, anchorEl });
|
|
1449
1627
|
};
|
|
1450
1628
|
var SingleSizeItemContent = ({ filterType }) => {
|
|
1451
1629
|
const { propType, valueName, defaultValue, units: units2 } = filterConfig[filterType];
|
|
1452
1630
|
const { $$type } = defaultValue;
|
|
1453
1631
|
const context = useBoundProp(propType);
|
|
1454
|
-
const rowRef =
|
|
1455
|
-
|
|
1632
|
+
const rowRef = useRef5(null);
|
|
1633
|
+
const defaultUnit = defaultValue[$$type].value.unit;
|
|
1634
|
+
return /* @__PURE__ */ React30.createElement(PropProvider, { ...context }, /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind: $$type }, /* @__PURE__ */ React30.createElement(PopoverGridContainer, { ref: rowRef }, /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel, null, valueName)), /* @__PURE__ */ React30.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(SizeControl, { anchorRef: rowRef, units: units2, defaultUnit })))));
|
|
1456
1635
|
};
|
|
1457
1636
|
|
|
1458
1637
|
// src/controls/toggle-control.tsx
|
|
1459
|
-
import * as
|
|
1638
|
+
import * as React33 from "react";
|
|
1460
1639
|
import { stringPropTypeUtil as stringPropTypeUtil4 } from "@elementor/editor-props";
|
|
1461
1640
|
|
|
1462
1641
|
// src/components/control-toggle-button-group.tsx
|
|
1463
|
-
import * as
|
|
1464
|
-
import { useEffect as useEffect4, useMemo as useMemo2, useRef as
|
|
1642
|
+
import * as React32 from "react";
|
|
1643
|
+
import { useEffect as useEffect4, useMemo as useMemo2, useRef as useRef6, useState as useState5 } from "react";
|
|
1465
1644
|
import { ChevronDownIcon } from "@elementor/icons";
|
|
1466
1645
|
import {
|
|
1467
1646
|
ListItemText,
|
|
@@ -1470,19 +1649,19 @@ import {
|
|
|
1470
1649
|
styled as styled3,
|
|
1471
1650
|
ToggleButton,
|
|
1472
1651
|
ToggleButtonGroup,
|
|
1473
|
-
Typography as
|
|
1652
|
+
Typography as Typography3,
|
|
1474
1653
|
useTheme
|
|
1475
1654
|
} from "@elementor/ui";
|
|
1476
1655
|
|
|
1477
1656
|
// src/components/conditional-tooltip.tsx
|
|
1478
|
-
import * as
|
|
1657
|
+
import * as React31 from "react";
|
|
1479
1658
|
import { Tooltip as Tooltip2 } from "@elementor/ui";
|
|
1480
1659
|
var ConditionalTooltip = ({
|
|
1481
1660
|
showTooltip,
|
|
1482
1661
|
children,
|
|
1483
1662
|
label
|
|
1484
1663
|
}) => {
|
|
1485
|
-
return showTooltip && label ? /* @__PURE__ */
|
|
1664
|
+
return showTooltip && label ? /* @__PURE__ */ React31.createElement(Tooltip2, { title: label, disableFocusListener: true, placement: "top" }, children) : children;
|
|
1486
1665
|
};
|
|
1487
1666
|
|
|
1488
1667
|
// src/components/control-toggle-button-group.tsx
|
|
@@ -1506,15 +1685,15 @@ var ControlToggleButtonGroup = ({
|
|
|
1506
1685
|
size = "tiny",
|
|
1507
1686
|
value,
|
|
1508
1687
|
onChange,
|
|
1509
|
-
items,
|
|
1688
|
+
items: items2,
|
|
1510
1689
|
maxItems,
|
|
1511
1690
|
exclusive = false,
|
|
1512
1691
|
fullWidth = false,
|
|
1513
1692
|
disabled
|
|
1514
1693
|
}) => {
|
|
1515
|
-
const shouldSliceItems = exclusive && maxItems !== void 0 &&
|
|
1516
|
-
const menuItems = shouldSliceItems ?
|
|
1517
|
-
const fixedItems = shouldSliceItems ?
|
|
1694
|
+
const shouldSliceItems = exclusive && maxItems !== void 0 && items2.length > maxItems;
|
|
1695
|
+
const menuItems = shouldSliceItems ? items2.slice(maxItems - 1) : [];
|
|
1696
|
+
const fixedItems = shouldSliceItems ? items2.slice(0, maxItems - 1) : items2;
|
|
1518
1697
|
const isRtl = "rtl" === useTheme().direction;
|
|
1519
1698
|
const handleChange = (_, newValue) => {
|
|
1520
1699
|
onChange(newValue);
|
|
@@ -1525,7 +1704,7 @@ var ControlToggleButtonGroup = ({
|
|
|
1525
1704
|
const templateColumnsSuffix = isOffLimits ? "auto" : "";
|
|
1526
1705
|
return `repeat(${itemsCount}, minmax(0, 25%)) ${templateColumnsSuffix}`;
|
|
1527
1706
|
}, [menuItems?.length, fixedItems.length]);
|
|
1528
|
-
return /* @__PURE__ */
|
|
1707
|
+
return /* @__PURE__ */ React32.createElement(ControlActions, null, /* @__PURE__ */ React32.createElement(
|
|
1529
1708
|
StyledToggleButtonGroup,
|
|
1530
1709
|
{
|
|
1531
1710
|
justify,
|
|
@@ -1540,16 +1719,16 @@ var ControlToggleButtonGroup = ({
|
|
|
1540
1719
|
width: `100%`
|
|
1541
1720
|
}
|
|
1542
1721
|
},
|
|
1543
|
-
fixedItems.map(({ label, value: buttonValue, renderContent: Content5, showTooltip }) => /* @__PURE__ */
|
|
1722
|
+
fixedItems.map(({ label, value: buttonValue, renderContent: Content5, showTooltip }) => /* @__PURE__ */ React32.createElement(
|
|
1544
1723
|
ConditionalTooltip,
|
|
1545
1724
|
{
|
|
1546
1725
|
key: buttonValue,
|
|
1547
1726
|
label,
|
|
1548
1727
|
showTooltip: showTooltip || false
|
|
1549
1728
|
},
|
|
1550
|
-
/* @__PURE__ */
|
|
1729
|
+
/* @__PURE__ */ React32.createElement(ToggleButton, { value: buttonValue, "aria-label": label, size, fullWidth }, /* @__PURE__ */ React32.createElement(Content5, { size }))
|
|
1551
1730
|
)),
|
|
1552
|
-
menuItems.length && exclusive && /* @__PURE__ */
|
|
1731
|
+
menuItems.length && exclusive && /* @__PURE__ */ React32.createElement(
|
|
1553
1732
|
SplitButtonGroup,
|
|
1554
1733
|
{
|
|
1555
1734
|
size,
|
|
@@ -1564,13 +1743,13 @@ var ControlToggleButtonGroup = ({
|
|
|
1564
1743
|
var SplitButtonGroup = ({
|
|
1565
1744
|
size = "tiny",
|
|
1566
1745
|
onChange,
|
|
1567
|
-
items,
|
|
1746
|
+
items: items2,
|
|
1568
1747
|
fullWidth,
|
|
1569
1748
|
value
|
|
1570
1749
|
}) => {
|
|
1571
|
-
const previewButton = usePreviewButton(
|
|
1750
|
+
const previewButton = usePreviewButton(items2, value);
|
|
1572
1751
|
const [isMenuOpen, setIsMenuOpen] = useState5(false);
|
|
1573
|
-
const menuButtonRef =
|
|
1752
|
+
const menuButtonRef = useRef6(null);
|
|
1574
1753
|
const onMenuToggle = (ev) => {
|
|
1575
1754
|
setIsMenuOpen((prev) => !prev);
|
|
1576
1755
|
ev.preventDefault();
|
|
@@ -1583,7 +1762,7 @@ var SplitButtonGroup = ({
|
|
|
1583
1762
|
const shouldRemove = newValue === value;
|
|
1584
1763
|
onChange(shouldRemove ? null : newValue);
|
|
1585
1764
|
};
|
|
1586
|
-
return /* @__PURE__ */
|
|
1765
|
+
return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(
|
|
1587
1766
|
ToggleButton,
|
|
1588
1767
|
{
|
|
1589
1768
|
value: previewButton.value,
|
|
@@ -1597,7 +1776,7 @@ var SplitButtonGroup = ({
|
|
|
1597
1776
|
ref: menuButtonRef
|
|
1598
1777
|
},
|
|
1599
1778
|
previewButton.renderContent({ size })
|
|
1600
|
-
), /* @__PURE__ */
|
|
1779
|
+
), /* @__PURE__ */ React32.createElement(
|
|
1601
1780
|
ToggleButton,
|
|
1602
1781
|
{
|
|
1603
1782
|
size,
|
|
@@ -1608,8 +1787,8 @@ var SplitButtonGroup = ({
|
|
|
1608
1787
|
ref: menuButtonRef,
|
|
1609
1788
|
value: "__chevron-icon-button__"
|
|
1610
1789
|
},
|
|
1611
|
-
/* @__PURE__ */
|
|
1612
|
-
), /* @__PURE__ */
|
|
1790
|
+
/* @__PURE__ */ React32.createElement(ChevronDownIcon, { fontSize: size })
|
|
1791
|
+
), /* @__PURE__ */ React32.createElement(
|
|
1613
1792
|
Menu2,
|
|
1614
1793
|
{
|
|
1615
1794
|
open: isMenuOpen,
|
|
@@ -1627,27 +1806,27 @@ var SplitButtonGroup = ({
|
|
|
1627
1806
|
mt: 0.5
|
|
1628
1807
|
}
|
|
1629
1808
|
},
|
|
1630
|
-
|
|
1809
|
+
items2.map(({ label, value: buttonValue }) => /* @__PURE__ */ React32.createElement(
|
|
1631
1810
|
MenuItem,
|
|
1632
1811
|
{
|
|
1633
1812
|
key: buttonValue,
|
|
1634
1813
|
selected: buttonValue === value,
|
|
1635
1814
|
onClick: () => onMenuItemClick(buttonValue)
|
|
1636
1815
|
},
|
|
1637
|
-
/* @__PURE__ */
|
|
1816
|
+
/* @__PURE__ */ React32.createElement(ListItemText, null, /* @__PURE__ */ React32.createElement(Typography3, { sx: { fontSize: "14px" } }, label))
|
|
1638
1817
|
))
|
|
1639
1818
|
));
|
|
1640
1819
|
};
|
|
1641
|
-
var usePreviewButton = (
|
|
1820
|
+
var usePreviewButton = (items2, value) => {
|
|
1642
1821
|
const [previewButton, setPreviewButton] = useState5(
|
|
1643
|
-
|
|
1822
|
+
items2.find((item) => item.value === value) ?? items2[0]
|
|
1644
1823
|
);
|
|
1645
1824
|
useEffect4(() => {
|
|
1646
|
-
const selectedButton =
|
|
1825
|
+
const selectedButton = items2.find((item) => item.value === value);
|
|
1647
1826
|
if (selectedButton) {
|
|
1648
1827
|
setPreviewButton(selectedButton);
|
|
1649
1828
|
}
|
|
1650
|
-
}, [
|
|
1829
|
+
}, [items2, value]);
|
|
1651
1830
|
return previewButton;
|
|
1652
1831
|
};
|
|
1653
1832
|
|
|
@@ -1674,7 +1853,7 @@ var ToggleControl = createControl(
|
|
|
1674
1853
|
fullWidth,
|
|
1675
1854
|
size
|
|
1676
1855
|
};
|
|
1677
|
-
return exclusive ? /* @__PURE__ */
|
|
1856
|
+
return exclusive ? /* @__PURE__ */ React33.createElement(
|
|
1678
1857
|
ControlToggleButtonGroup,
|
|
1679
1858
|
{
|
|
1680
1859
|
...toggleButtonGroupProps,
|
|
@@ -1683,7 +1862,7 @@ var ToggleControl = createControl(
|
|
|
1683
1862
|
disabled,
|
|
1684
1863
|
exclusive: true
|
|
1685
1864
|
}
|
|
1686
|
-
) : /* @__PURE__ */
|
|
1865
|
+
) : /* @__PURE__ */ React33.createElement(
|
|
1687
1866
|
ControlToggleButtonGroup,
|
|
1688
1867
|
{
|
|
1689
1868
|
...toggleButtonGroupProps,
|
|
@@ -1697,7 +1876,7 @@ var ToggleControl = createControl(
|
|
|
1697
1876
|
);
|
|
1698
1877
|
|
|
1699
1878
|
// src/controls/number-control.tsx
|
|
1700
|
-
import * as
|
|
1879
|
+
import * as React34 from "react";
|
|
1701
1880
|
import { numberPropTypeUtil } from "@elementor/editor-props";
|
|
1702
1881
|
import { TextField as TextField5 } from "@elementor/ui";
|
|
1703
1882
|
var isEmptyOrNaN = (value) => value === null || value === void 0 || value === "" || Number.isNaN(Number(value));
|
|
@@ -1720,7 +1899,7 @@ var NumberControl = createControl(
|
|
|
1720
1899
|
const formattedValue = shouldForceInt ? +parseInt(eventValue) : Number(eventValue);
|
|
1721
1900
|
setValue(Math.min(Math.max(formattedValue, min), max));
|
|
1722
1901
|
};
|
|
1723
|
-
return /* @__PURE__ */
|
|
1902
|
+
return /* @__PURE__ */ React34.createElement(ControlActions, null, /* @__PURE__ */ React34.createElement(
|
|
1724
1903
|
TextField5,
|
|
1725
1904
|
{
|
|
1726
1905
|
size: "tiny",
|
|
@@ -1742,15 +1921,15 @@ var NumberControl = createControl(
|
|
|
1742
1921
|
);
|
|
1743
1922
|
|
|
1744
1923
|
// src/controls/equal-unequal-sizes-control.tsx
|
|
1745
|
-
import * as
|
|
1746
|
-
import { useId as useId2, useRef as
|
|
1924
|
+
import * as React35 from "react";
|
|
1925
|
+
import { useId as useId2, useRef as useRef7 } from "react";
|
|
1747
1926
|
import { sizePropTypeUtil as sizePropTypeUtil2 } from "@elementor/editor-props";
|
|
1748
1927
|
import { isExperimentActive as isExperimentActive2 } from "@elementor/editor-v1-adapters";
|
|
1749
|
-
import { bindPopover as bindPopover3, bindToggle, Grid as
|
|
1750
|
-
import { __ as
|
|
1751
|
-
var isEqualSizes = (propValue,
|
|
1928
|
+
import { bindPopover as bindPopover3, bindToggle, Grid as Grid7, Popover as Popover3, Stack as Stack7, ToggleButton as ToggleButton2, Tooltip as Tooltip3, usePopupState as usePopupState4 } from "@elementor/ui";
|
|
1929
|
+
import { __ as __8 } from "@wordpress/i18n";
|
|
1930
|
+
var isEqualSizes = (propValue, items2) => {
|
|
1752
1931
|
const values = Object.values(propValue);
|
|
1753
|
-
if (values.length !==
|
|
1932
|
+
if (values.length !== items2.length) {
|
|
1754
1933
|
return false;
|
|
1755
1934
|
}
|
|
1756
1935
|
const [firstValue, ...restValues] = values;
|
|
@@ -1762,7 +1941,7 @@ function EqualUnequalSizesControl({
|
|
|
1762
1941
|
label,
|
|
1763
1942
|
icon,
|
|
1764
1943
|
tooltipLabel,
|
|
1765
|
-
items,
|
|
1944
|
+
items: items2,
|
|
1766
1945
|
multiSizePropTypeUtil
|
|
1767
1946
|
}) {
|
|
1768
1947
|
const popupId = useId2();
|
|
@@ -1774,12 +1953,12 @@ function EqualUnequalSizesControl({
|
|
|
1774
1953
|
disabled: multiSizeDisabled
|
|
1775
1954
|
} = useBoundProp(multiSizePropTypeUtil);
|
|
1776
1955
|
const { value: sizeValue, setValue: setSizeValue } = useBoundProp(sizePropTypeUtil2);
|
|
1777
|
-
const rowRefs = [
|
|
1956
|
+
const rowRefs = [useRef7(null), useRef7(null)];
|
|
1778
1957
|
const splitEqualValue = () => {
|
|
1779
1958
|
if (!sizeValue) {
|
|
1780
1959
|
return null;
|
|
1781
1960
|
}
|
|
1782
|
-
return
|
|
1961
|
+
return items2.reduce(
|
|
1783
1962
|
(acc, { bind }) => ({ ...acc, [bind]: sizePropTypeUtil2.create(sizeValue) }),
|
|
1784
1963
|
{}
|
|
1785
1964
|
);
|
|
@@ -1789,7 +1968,7 @@ function EqualUnequalSizesControl({
|
|
|
1789
1968
|
...multiSizeValue ?? splitEqualValue(),
|
|
1790
1969
|
...newValue
|
|
1791
1970
|
};
|
|
1792
|
-
const isEqual = isEqualSizes(newMappedValues,
|
|
1971
|
+
const isEqual = isEqualSizes(newMappedValues, items2);
|
|
1793
1972
|
if (isEqual) {
|
|
1794
1973
|
return setSizeValue(Object.values(newMappedValues)[0]?.value);
|
|
1795
1974
|
}
|
|
@@ -1803,13 +1982,13 @@ function EqualUnequalSizesControl({
|
|
|
1803
1982
|
};
|
|
1804
1983
|
const isShowingGeneralIndicator = !isExperimentActive2("e_v_3_30") || !popupState.isOpen;
|
|
1805
1984
|
const isMixed = !!multiSizeValue;
|
|
1806
|
-
return /* @__PURE__ */
|
|
1985
|
+
return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRefs[0] }, /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 6 }, !isShowingGeneralIndicator ? /* @__PURE__ */ React35.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React35.createElement(ControlLabel, null, label)), /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React35.createElement(Stack7, { direction: "row", alignItems: "center", gap: 1 }, /* @__PURE__ */ React35.createElement(
|
|
1807
1986
|
SizeControl,
|
|
1808
1987
|
{
|
|
1809
|
-
placeholder: isMixed ?
|
|
1988
|
+
placeholder: isMixed ? __8("Mixed", "elementor") : void 0,
|
|
1810
1989
|
anchorRef: rowRefs[0]
|
|
1811
1990
|
}
|
|
1812
|
-
), /* @__PURE__ */
|
|
1991
|
+
), /* @__PURE__ */ React35.createElement(Tooltip3, { title: tooltipLabel, placement: "top" }, /* @__PURE__ */ React35.createElement(
|
|
1813
1992
|
ToggleButton2,
|
|
1814
1993
|
{
|
|
1815
1994
|
size: "tiny",
|
|
@@ -1820,7 +1999,7 @@ function EqualUnequalSizesControl({
|
|
|
1820
1999
|
"aria-label": tooltipLabel
|
|
1821
2000
|
},
|
|
1822
2001
|
icon
|
|
1823
|
-
))))), /* @__PURE__ */
|
|
2002
|
+
))))), /* @__PURE__ */ React35.createElement(
|
|
1824
2003
|
Popover3,
|
|
1825
2004
|
{
|
|
1826
2005
|
disablePortal: true,
|
|
@@ -1838,31 +2017,31 @@ function EqualUnequalSizesControl({
|
|
|
1838
2017
|
paper: { sx: { mt: 0.5, width: rowRefs[0].current?.getBoundingClientRect().width } }
|
|
1839
2018
|
}
|
|
1840
2019
|
},
|
|
1841
|
-
/* @__PURE__ */
|
|
2020
|
+
/* @__PURE__ */ React35.createElement(
|
|
1842
2021
|
PropProvider,
|
|
1843
2022
|
{
|
|
1844
2023
|
propType: multiSizePropType,
|
|
1845
2024
|
value: getMultiSizeValues(),
|
|
1846
2025
|
setValue: setNestedProp,
|
|
1847
|
-
|
|
2026
|
+
isDisabled: () => multiSizeDisabled
|
|
1848
2027
|
},
|
|
1849
|
-
/* @__PURE__ */
|
|
2028
|
+
/* @__PURE__ */ React35.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React35.createElement(PopoverGridContainer, { ref: rowRefs[1] }, /* @__PURE__ */ React35.createElement(MultiSizeValueControl, { item: items2[0], rowRef: rowRefs[1] }), /* @__PURE__ */ React35.createElement(MultiSizeValueControl, { item: items2[1], rowRef: rowRefs[1] })), /* @__PURE__ */ React35.createElement(PopoverGridContainer, { ref: rowRefs[2] }, /* @__PURE__ */ React35.createElement(MultiSizeValueControl, { item: items2[2], rowRef: rowRefs[2] }), /* @__PURE__ */ React35.createElement(MultiSizeValueControl, { item: items2[3], rowRef: rowRefs[2] })))
|
|
1850
2029
|
)
|
|
1851
2030
|
));
|
|
1852
2031
|
}
|
|
1853
2032
|
var MultiSizeValueControl = ({ item, rowRef }) => {
|
|
1854
2033
|
const isUsingNestedProps = isExperimentActive2("e_v_3_30");
|
|
1855
|
-
return /* @__PURE__ */
|
|
2034
|
+
return /* @__PURE__ */ React35.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React35.createElement(Grid7, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 12 }, isUsingNestedProps ? /* @__PURE__ */ React35.createElement(ControlLabel, null, item.label) : /* @__PURE__ */ React35.createElement(ControlFormLabel, null, item.label)), /* @__PURE__ */ React35.createElement(Grid7, { item: true, xs: 12 }, /* @__PURE__ */ React35.createElement(SizeControl, { startIcon: item.icon, anchorRef: rowRef })))));
|
|
1856
2035
|
};
|
|
1857
2036
|
|
|
1858
2037
|
// src/controls/linked-dimensions-control.tsx
|
|
1859
|
-
import * as
|
|
1860
|
-
import { useRef as
|
|
2038
|
+
import * as React36 from "react";
|
|
2039
|
+
import { useRef as useRef8 } from "react";
|
|
1861
2040
|
import { dimensionsPropTypeUtil, sizePropTypeUtil as sizePropTypeUtil3 } from "@elementor/editor-props";
|
|
1862
2041
|
import { isExperimentActive as isExperimentActive3 } from "@elementor/editor-v1-adapters";
|
|
1863
2042
|
import { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from "@elementor/icons";
|
|
1864
|
-
import { Grid as
|
|
1865
|
-
import { __ as
|
|
2043
|
+
import { Grid as Grid8, Stack as Stack8, ToggleButton as ToggleButton3, Tooltip as Tooltip4 } from "@elementor/ui";
|
|
2044
|
+
import { __ as __9 } from "@wordpress/i18n";
|
|
1866
2045
|
var LinkedDimensionsControl = createControl(
|
|
1867
2046
|
({
|
|
1868
2047
|
label,
|
|
@@ -1870,7 +2049,7 @@ var LinkedDimensionsControl = createControl(
|
|
|
1870
2049
|
extendedOptions
|
|
1871
2050
|
}) => {
|
|
1872
2051
|
const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(sizePropTypeUtil3);
|
|
1873
|
-
const gridRowRefs = [
|
|
2052
|
+
const gridRowRefs = [useRef8(null), useRef8(null)];
|
|
1874
2053
|
const {
|
|
1875
2054
|
value: dimensionsValue,
|
|
1876
2055
|
setValue: setDimensionsValue,
|
|
@@ -1894,18 +2073,18 @@ var LinkedDimensionsControl = createControl(
|
|
|
1894
2073
|
};
|
|
1895
2074
|
const tooltipLabel = label.toLowerCase();
|
|
1896
2075
|
const LinkedIcon = isLinked ? LinkIcon : DetachIcon;
|
|
1897
|
-
const linkedLabel =
|
|
1898
|
-
const unlinkedLabel =
|
|
2076
|
+
const linkedLabel = __9("Link %s", "elementor").replace("%s", tooltipLabel);
|
|
2077
|
+
const unlinkedLabel = __9("Unlink %s", "elementor").replace("%s", tooltipLabel);
|
|
1899
2078
|
const disabled = sizeDisabled || dimensionsDisabled;
|
|
1900
|
-
return /* @__PURE__ */
|
|
2079
|
+
return /* @__PURE__ */ React36.createElement(
|
|
1901
2080
|
PropProvider,
|
|
1902
2081
|
{
|
|
1903
2082
|
propType,
|
|
1904
2083
|
value: dimensionsValue,
|
|
1905
2084
|
setValue: setDimensionsValue,
|
|
1906
|
-
disabled
|
|
2085
|
+
isDisabled: () => disabled
|
|
1907
2086
|
},
|
|
1908
|
-
/* @__PURE__ */
|
|
2087
|
+
/* @__PURE__ */ React36.createElement(Stack8, { direction: "row", gap: 2, flexWrap: "nowrap" }, isUsingNestedProps ? /* @__PURE__ */ React36.createElement(ControlFormLabel, null, label) : /* @__PURE__ */ React36.createElement(ControlLabel, null, label), /* @__PURE__ */ React36.createElement(Tooltip4, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React36.createElement(
|
|
1909
2088
|
ToggleButton3,
|
|
1910
2089
|
{
|
|
1911
2090
|
"aria-label": isLinked ? unlinkedLabel : linkedLabel,
|
|
@@ -1916,9 +2095,9 @@ var LinkedDimensionsControl = createControl(
|
|
|
1916
2095
|
onChange: onLinkToggle,
|
|
1917
2096
|
disabled
|
|
1918
2097
|
},
|
|
1919
|
-
/* @__PURE__ */
|
|
2098
|
+
/* @__PURE__ */ React36.createElement(LinkedIcon, { fontSize: "tiny" })
|
|
1920
2099
|
))),
|
|
1921
|
-
getCssMarginProps(isSiteRtl).map((row, index) => /* @__PURE__ */
|
|
2100
|
+
getCssMarginProps(isSiteRtl).map((row, index) => /* @__PURE__ */ React36.createElement(Stack8, { direction: "row", gap: 2, flexWrap: "nowrap", key: index, ref: gridRowRefs[index] }, row.map(({ icon, ...props }) => /* @__PURE__ */ React36.createElement(Grid8, { container: true, gap: 0.75, alignItems: "center", key: props.bind }, /* @__PURE__ */ React36.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(Label, { ...props })), /* @__PURE__ */ React36.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(
|
|
1922
2101
|
Control3,
|
|
1923
2102
|
{
|
|
1924
2103
|
bind: props.bind,
|
|
@@ -1939,60 +2118,60 @@ var Control3 = ({
|
|
|
1939
2118
|
anchorRef
|
|
1940
2119
|
}) => {
|
|
1941
2120
|
if (isLinked) {
|
|
1942
|
-
return /* @__PURE__ */
|
|
2121
|
+
return /* @__PURE__ */ React36.createElement(SizeControl, { startIcon, extendedOptions, anchorRef });
|
|
1943
2122
|
}
|
|
1944
|
-
return /* @__PURE__ */
|
|
2123
|
+
return /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React36.createElement(SizeControl, { startIcon, extendedOptions, anchorRef }));
|
|
1945
2124
|
};
|
|
1946
2125
|
var Label = ({ label, bind }) => {
|
|
1947
2126
|
const isUsingNestedProps = isExperimentActive3("e_v_3_30");
|
|
1948
2127
|
if (!isUsingNestedProps) {
|
|
1949
|
-
return /* @__PURE__ */
|
|
2128
|
+
return /* @__PURE__ */ React36.createElement(ControlFormLabel, null, label);
|
|
1950
2129
|
}
|
|
1951
|
-
return /* @__PURE__ */
|
|
2130
|
+
return /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React36.createElement(ControlLabel, null, label));
|
|
1952
2131
|
};
|
|
1953
2132
|
function getCssMarginProps(isSiteRtl) {
|
|
1954
2133
|
return [
|
|
1955
2134
|
[
|
|
1956
2135
|
{
|
|
1957
2136
|
bind: "block-start",
|
|
1958
|
-
label:
|
|
1959
|
-
icon: /* @__PURE__ */
|
|
2137
|
+
label: __9("Top", "elementor"),
|
|
2138
|
+
icon: /* @__PURE__ */ React36.createElement(SideTopIcon, { fontSize: "tiny" })
|
|
1960
2139
|
},
|
|
1961
2140
|
{
|
|
1962
2141
|
bind: "inline-end",
|
|
1963
|
-
label: isSiteRtl ?
|
|
1964
|
-
icon: isSiteRtl ? /* @__PURE__ */
|
|
2142
|
+
label: isSiteRtl ? __9("Left", "elementor") : __9("Right", "elementor"),
|
|
2143
|
+
icon: isSiteRtl ? /* @__PURE__ */ React36.createElement(SideLeftIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React36.createElement(SideRightIcon, { fontSize: "tiny" })
|
|
1965
2144
|
}
|
|
1966
2145
|
],
|
|
1967
2146
|
[
|
|
1968
2147
|
{
|
|
1969
2148
|
bind: "block-end",
|
|
1970
|
-
label:
|
|
1971
|
-
icon: /* @__PURE__ */
|
|
2149
|
+
label: __9("Bottom", "elementor"),
|
|
2150
|
+
icon: /* @__PURE__ */ React36.createElement(SideBottomIcon, { fontSize: "tiny" })
|
|
1972
2151
|
},
|
|
1973
2152
|
{
|
|
1974
2153
|
bind: "inline-start",
|
|
1975
|
-
label: isSiteRtl ?
|
|
1976
|
-
icon: isSiteRtl ? /* @__PURE__ */
|
|
2154
|
+
label: isSiteRtl ? __9("Right", "elementor") : __9("Left", "elementor"),
|
|
2155
|
+
icon: isSiteRtl ? /* @__PURE__ */ React36.createElement(SideRightIcon, { fontSize: "tiny" }) : /* @__PURE__ */ React36.createElement(SideLeftIcon, { fontSize: "tiny" })
|
|
1977
2156
|
}
|
|
1978
2157
|
]
|
|
1979
2158
|
];
|
|
1980
2159
|
}
|
|
1981
2160
|
|
|
1982
2161
|
// src/controls/font-family-control/font-family-control.tsx
|
|
1983
|
-
import * as
|
|
2162
|
+
import * as React38 from "react";
|
|
1984
2163
|
import { stringPropTypeUtil as stringPropTypeUtil5 } from "@elementor/editor-props";
|
|
1985
2164
|
import { ChevronDownIcon as ChevronDownIcon2 } from "@elementor/icons";
|
|
1986
2165
|
import { bindPopover as bindPopover4, bindTrigger as bindTrigger3, Popover as Popover4, UnstableTag as UnstableTag2, usePopupState as usePopupState5 } from "@elementor/ui";
|
|
1987
2166
|
|
|
1988
2167
|
// src/components/font-family-selector.tsx
|
|
1989
|
-
import * as
|
|
2168
|
+
import * as React37 from "react";
|
|
1990
2169
|
import { useEffect as useEffect5, useState as useState6 } from "react";
|
|
1991
|
-
import { PopoverHeader, PopoverMenuList,
|
|
2170
|
+
import { PopoverBody, PopoverHeader, PopoverMenuList, PopoverSearch } from "@elementor/editor-ui";
|
|
1992
2171
|
import { TextIcon } from "@elementor/icons";
|
|
1993
|
-
import { Box as
|
|
2172
|
+
import { Box as Box5, Divider as Divider2, Link, Stack as Stack9, Typography as Typography4 } from "@elementor/ui";
|
|
1994
2173
|
import { debounce } from "@elementor/utils";
|
|
1995
|
-
import { __ as
|
|
2174
|
+
import { __ as __10 } from "@wordpress/i18n";
|
|
1996
2175
|
|
|
1997
2176
|
// src/controls/font-family-control/enqueue-font.tsx
|
|
1998
2177
|
var enqueueFont = (fontFamily, context = "editor") => {
|
|
@@ -2034,21 +2213,21 @@ var FontFamilySelector = ({
|
|
|
2034
2213
|
setSearchValue("");
|
|
2035
2214
|
onClose();
|
|
2036
2215
|
};
|
|
2037
|
-
return /* @__PURE__ */
|
|
2216
|
+
return /* @__PURE__ */ React37.createElement(PopoverBody, { width: sectionWidth }, /* @__PURE__ */ React37.createElement(
|
|
2038
2217
|
PopoverHeader,
|
|
2039
2218
|
{
|
|
2040
|
-
title:
|
|
2219
|
+
title: __10("Font Family", "elementor"),
|
|
2041
2220
|
onClose: handleClose,
|
|
2042
|
-
icon: /* @__PURE__ */
|
|
2221
|
+
icon: /* @__PURE__ */ React37.createElement(TextIcon, { fontSize: SIZE2 })
|
|
2043
2222
|
}
|
|
2044
|
-
), /* @__PURE__ */
|
|
2223
|
+
), /* @__PURE__ */ React37.createElement(
|
|
2045
2224
|
PopoverSearch,
|
|
2046
2225
|
{
|
|
2047
2226
|
value: searchValue,
|
|
2048
2227
|
onSearch: handleSearch,
|
|
2049
|
-
placeholder:
|
|
2228
|
+
placeholder: __10("Search", "elementor")
|
|
2050
2229
|
}
|
|
2051
|
-
), /* @__PURE__ */
|
|
2230
|
+
), /* @__PURE__ */ React37.createElement(Divider2, null), filteredFontFamilies.length > 0 ? /* @__PURE__ */ React37.createElement(
|
|
2052
2231
|
FontList,
|
|
2053
2232
|
{
|
|
2054
2233
|
fontListItems: filteredFontFamilies,
|
|
@@ -2056,7 +2235,7 @@ var FontFamilySelector = ({
|
|
|
2056
2235
|
handleClose,
|
|
2057
2236
|
fontFamily
|
|
2058
2237
|
}
|
|
2059
|
-
) : /* @__PURE__ */
|
|
2238
|
+
) : /* @__PURE__ */ React37.createElement(
|
|
2060
2239
|
Stack9,
|
|
2061
2240
|
{
|
|
2062
2241
|
alignItems: "center",
|
|
@@ -2066,9 +2245,9 @@ var FontFamilySelector = ({
|
|
|
2066
2245
|
gap: 1.5,
|
|
2067
2246
|
overflow: "hidden"
|
|
2068
2247
|
},
|
|
2069
|
-
/* @__PURE__ */
|
|
2070
|
-
/* @__PURE__ */
|
|
2071
|
-
|
|
2248
|
+
/* @__PURE__ */ React37.createElement(TextIcon, { fontSize: "large" }),
|
|
2249
|
+
/* @__PURE__ */ React37.createElement(Box5, { sx: { maxWidth: 160, overflow: "hidden" } }, /* @__PURE__ */ React37.createElement(Typography4, { align: "center", variant: "subtitle2", color: "text.secondary" }, __10("Sorry, nothing matched", "elementor")), /* @__PURE__ */ React37.createElement(
|
|
2250
|
+
Typography4,
|
|
2072
2251
|
{
|
|
2073
2252
|
variant: "subtitle2",
|
|
2074
2253
|
color: "text.secondary",
|
|
@@ -2078,20 +2257,20 @@ var FontFamilySelector = ({
|
|
|
2078
2257
|
justifyContent: "center"
|
|
2079
2258
|
}
|
|
2080
2259
|
},
|
|
2081
|
-
/* @__PURE__ */
|
|
2082
|
-
/* @__PURE__ */
|
|
2083
|
-
/* @__PURE__ */
|
|
2260
|
+
/* @__PURE__ */ React37.createElement("span", null, "\u201C"),
|
|
2261
|
+
/* @__PURE__ */ React37.createElement("span", { style: { maxWidth: "80%", overflow: "hidden", textOverflow: "ellipsis" } }, searchValue),
|
|
2262
|
+
/* @__PURE__ */ React37.createElement("span", null, "\u201D.")
|
|
2084
2263
|
)),
|
|
2085
|
-
/* @__PURE__ */
|
|
2086
|
-
|
|
2264
|
+
/* @__PURE__ */ React37.createElement(
|
|
2265
|
+
Typography4,
|
|
2087
2266
|
{
|
|
2088
2267
|
align: "center",
|
|
2089
2268
|
variant: "caption",
|
|
2090
2269
|
color: "text.secondary",
|
|
2091
2270
|
sx: { display: "flex", flexDirection: "column" }
|
|
2092
2271
|
},
|
|
2093
|
-
|
|
2094
|
-
/* @__PURE__ */
|
|
2272
|
+
__10("Try something else.", "elementor"),
|
|
2273
|
+
/* @__PURE__ */ React37.createElement(
|
|
2095
2274
|
Link,
|
|
2096
2275
|
{
|
|
2097
2276
|
color: "secondary",
|
|
@@ -2099,10 +2278,10 @@ var FontFamilySelector = ({
|
|
|
2099
2278
|
component: "button",
|
|
2100
2279
|
onClick: () => setSearchValue("")
|
|
2101
2280
|
},
|
|
2102
|
-
|
|
2281
|
+
__10("Clear & try again", "elementor")
|
|
2103
2282
|
)
|
|
2104
2283
|
)
|
|
2105
|
-
))
|
|
2284
|
+
));
|
|
2106
2285
|
};
|
|
2107
2286
|
var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
|
|
2108
2287
|
const selectedItem = fontListItems.find((item) => item.value === fontFamily);
|
|
@@ -2114,7 +2293,7 @@ var FontList = ({ fontListItems, setFontFamily, handleClose, fontFamily }) => {
|
|
|
2114
2293
|
}
|
|
2115
2294
|
});
|
|
2116
2295
|
}, 100);
|
|
2117
|
-
return /* @__PURE__ */
|
|
2296
|
+
return /* @__PURE__ */ React37.createElement(
|
|
2118
2297
|
PopoverMenuList,
|
|
2119
2298
|
{
|
|
2120
2299
|
items: fontListItems,
|
|
@@ -2136,19 +2315,26 @@ var useDebounce = (fn, delay) => {
|
|
|
2136
2315
|
// src/controls/font-family-control/font-family-control.tsx
|
|
2137
2316
|
var SIZE3 = "tiny";
|
|
2138
2317
|
var FontFamilyControl = createControl(({ fontFamilies, sectionWidth }) => {
|
|
2139
|
-
const { value: fontFamily, setValue: setFontFamily, disabled } = useBoundProp(stringPropTypeUtil5);
|
|
2318
|
+
const { value: fontFamily, setValue: setFontFamily, disabled, placeholder } = useBoundProp(stringPropTypeUtil5);
|
|
2140
2319
|
const popoverState = usePopupState5({ variant: "popover" });
|
|
2141
|
-
|
|
2320
|
+
const isShowingPlaceholder = !fontFamily && placeholder;
|
|
2321
|
+
return /* @__PURE__ */ React38.createElement(React38.Fragment, null, /* @__PURE__ */ React38.createElement(ControlActions, null, /* @__PURE__ */ React38.createElement(
|
|
2142
2322
|
UnstableTag2,
|
|
2143
2323
|
{
|
|
2144
2324
|
variant: "outlined",
|
|
2145
|
-
label: fontFamily,
|
|
2146
|
-
endIcon: /* @__PURE__ */
|
|
2325
|
+
label: fontFamily || placeholder,
|
|
2326
|
+
endIcon: /* @__PURE__ */ React38.createElement(ChevronDownIcon2, { fontSize: SIZE3 }),
|
|
2147
2327
|
...bindTrigger3(popoverState),
|
|
2148
2328
|
fullWidth: true,
|
|
2149
|
-
disabled
|
|
2329
|
+
disabled,
|
|
2330
|
+
sx: isShowingPlaceholder ? {
|
|
2331
|
+
"& .MuiTag-label": {
|
|
2332
|
+
color: (theme) => theme.palette.text.tertiary
|
|
2333
|
+
},
|
|
2334
|
+
textTransform: "capitalize"
|
|
2335
|
+
} : void 0
|
|
2150
2336
|
}
|
|
2151
|
-
)), /* @__PURE__ */
|
|
2337
|
+
)), /* @__PURE__ */ React38.createElement(
|
|
2152
2338
|
Popover4,
|
|
2153
2339
|
{
|
|
2154
2340
|
disablePortal: true,
|
|
@@ -2158,7 +2344,7 @@ var FontFamilyControl = createControl(({ fontFamilies, sectionWidth }) => {
|
|
|
2158
2344
|
sx: { my: 1.5 },
|
|
2159
2345
|
...bindPopover4(popoverState)
|
|
2160
2346
|
},
|
|
2161
|
-
/* @__PURE__ */
|
|
2347
|
+
/* @__PURE__ */ React38.createElement(
|
|
2162
2348
|
FontFamilySelector,
|
|
2163
2349
|
{
|
|
2164
2350
|
fontFamilies,
|
|
@@ -2172,13 +2358,13 @@ var FontFamilyControl = createControl(({ fontFamilies, sectionWidth }) => {
|
|
|
2172
2358
|
});
|
|
2173
2359
|
|
|
2174
2360
|
// src/controls/url-control.tsx
|
|
2175
|
-
import * as
|
|
2361
|
+
import * as React39 from "react";
|
|
2176
2362
|
import { urlPropTypeUtil } from "@elementor/editor-props";
|
|
2177
2363
|
import { TextField as TextField6 } from "@elementor/ui";
|
|
2178
2364
|
var UrlControl = createControl(({ placeholder }) => {
|
|
2179
2365
|
const { value, setValue, disabled } = useBoundProp(urlPropTypeUtil);
|
|
2180
2366
|
const handleChange = (event) => setValue(event.target.value);
|
|
2181
|
-
return /* @__PURE__ */
|
|
2367
|
+
return /* @__PURE__ */ React39.createElement(ControlActions, null, /* @__PURE__ */ React39.createElement(
|
|
2182
2368
|
TextField6,
|
|
2183
2369
|
{
|
|
2184
2370
|
size: "tiny",
|
|
@@ -2192,31 +2378,32 @@ var UrlControl = createControl(({ placeholder }) => {
|
|
|
2192
2378
|
});
|
|
2193
2379
|
|
|
2194
2380
|
// src/controls/link-control.tsx
|
|
2195
|
-
import * as
|
|
2381
|
+
import * as React42 from "react";
|
|
2196
2382
|
import { useMemo as useMemo3, useState as useState7 } from "react";
|
|
2197
2383
|
import { getLinkInLinkRestriction, selectElement } from "@elementor/editor-elements";
|
|
2198
2384
|
import {
|
|
2199
|
-
booleanPropTypeUtil,
|
|
2385
|
+
booleanPropTypeUtil as booleanPropTypeUtil2,
|
|
2200
2386
|
linkPropTypeUtil,
|
|
2201
2387
|
numberPropTypeUtil as numberPropTypeUtil2,
|
|
2202
2388
|
stringPropTypeUtil as stringPropTypeUtil6,
|
|
2203
2389
|
urlPropTypeUtil as urlPropTypeUtil2
|
|
2204
2390
|
} from "@elementor/editor-props";
|
|
2205
2391
|
import { InfoTipCard } from "@elementor/editor-ui";
|
|
2392
|
+
import { isExperimentActive as isExperimentActive4 } from "@elementor/editor-v1-adapters";
|
|
2206
2393
|
import { httpService as httpService2 } from "@elementor/http-client";
|
|
2207
2394
|
import { AlertTriangleIcon, MinusIcon, PlusIcon as PlusIcon2 } from "@elementor/icons";
|
|
2208
2395
|
import { useSessionStorage } from "@elementor/session";
|
|
2209
|
-
import { Box as
|
|
2396
|
+
import { Box as Box7, Collapse, Grid as Grid9, IconButton as IconButton3, Infotip, Stack as Stack10, Switch as Switch2 } from "@elementor/ui";
|
|
2210
2397
|
import { debounce as debounce2 } from "@elementor/utils";
|
|
2211
|
-
import { __ as
|
|
2398
|
+
import { __ as __11 } from "@wordpress/i18n";
|
|
2212
2399
|
|
|
2213
2400
|
// src/components/autocomplete.tsx
|
|
2214
|
-
import * as
|
|
2401
|
+
import * as React40 from "react";
|
|
2215
2402
|
import { forwardRef as forwardRef4 } from "react";
|
|
2216
2403
|
import { XIcon as XIcon2 } from "@elementor/icons";
|
|
2217
2404
|
import {
|
|
2218
2405
|
Autocomplete as AutocompleteBase,
|
|
2219
|
-
Box as
|
|
2406
|
+
Box as Box6,
|
|
2220
2407
|
IconButton as IconButton2,
|
|
2221
2408
|
InputAdornment as InputAdornment3,
|
|
2222
2409
|
TextField as TextField7
|
|
@@ -2237,7 +2424,7 @@ var Autocomplete = forwardRef4((props, ref) => {
|
|
|
2237
2424
|
const muiWarningPreventer = allowCustomValues || !!value?.toString()?.length;
|
|
2238
2425
|
const isOptionEqualToValue = muiWarningPreventer ? void 0 : () => true;
|
|
2239
2426
|
const isValueFromOptions = typeof value === "number" && !!findMatchingOption(options, value);
|
|
2240
|
-
return /* @__PURE__ */
|
|
2427
|
+
return /* @__PURE__ */ React40.createElement(
|
|
2241
2428
|
AutocompleteBase,
|
|
2242
2429
|
{
|
|
2243
2430
|
...restProps,
|
|
@@ -2255,8 +2442,8 @@ var Autocomplete = forwardRef4((props, ref) => {
|
|
|
2255
2442
|
groupBy: isCategorizedOptionPool(options) ? (optionId) => findMatchingOption(options, optionId)?.groupLabel || optionId : void 0,
|
|
2256
2443
|
isOptionEqualToValue,
|
|
2257
2444
|
filterOptions: () => optionKeys,
|
|
2258
|
-
renderOption: (optionProps, optionId) => /* @__PURE__ */
|
|
2259
|
-
renderInput: (params) => /* @__PURE__ */
|
|
2445
|
+
renderOption: (optionProps, optionId) => /* @__PURE__ */ React40.createElement(Box6, { component: "li", ...optionProps, key: optionProps.id }, findMatchingOption(options, optionId)?.label ?? optionId),
|
|
2446
|
+
renderInput: (params) => /* @__PURE__ */ React40.createElement(
|
|
2260
2447
|
TextInput,
|
|
2261
2448
|
{
|
|
2262
2449
|
params,
|
|
@@ -2279,7 +2466,7 @@ var TextInput = ({
|
|
|
2279
2466
|
const onChange = (event) => {
|
|
2280
2467
|
handleChange(event.target.value);
|
|
2281
2468
|
};
|
|
2282
|
-
return /* @__PURE__ */
|
|
2469
|
+
return /* @__PURE__ */ React40.createElement(
|
|
2283
2470
|
TextField7,
|
|
2284
2471
|
{
|
|
2285
2472
|
...params,
|
|
@@ -2292,7 +2479,7 @@ var TextInput = ({
|
|
|
2292
2479
|
},
|
|
2293
2480
|
InputProps: {
|
|
2294
2481
|
...params.InputProps,
|
|
2295
|
-
endAdornment: /* @__PURE__ */
|
|
2482
|
+
endAdornment: /* @__PURE__ */ React40.createElement(ClearButton, { params, allowClear, handleChange })
|
|
2296
2483
|
}
|
|
2297
2484
|
}
|
|
2298
2485
|
);
|
|
@@ -2301,7 +2488,7 @@ var ClearButton = ({
|
|
|
2301
2488
|
allowClear,
|
|
2302
2489
|
handleChange,
|
|
2303
2490
|
params
|
|
2304
|
-
}) => /* @__PURE__ */
|
|
2491
|
+
}) => /* @__PURE__ */ React40.createElement(InputAdornment3, { position: "end" }, allowClear && /* @__PURE__ */ React40.createElement(IconButton2, { size: params.size, onClick: () => handleChange(null), sx: { cursor: "pointer" } }, /* @__PURE__ */ React40.createElement(XIcon2, { fontSize: params.size })));
|
|
2305
2492
|
function findMatchingOption(options, optionId = null) {
|
|
2306
2493
|
const formattedOption = (optionId || "").toString();
|
|
2307
2494
|
return options.find(({ id }) => formattedOption === id.toString());
|
|
@@ -2322,10 +2509,33 @@ function _factoryFilter(newValue, options, minInputLength) {
|
|
|
2322
2509
|
);
|
|
2323
2510
|
}
|
|
2324
2511
|
|
|
2512
|
+
// src/controls/switch-control.tsx
|
|
2513
|
+
import * as React41 from "react";
|
|
2514
|
+
import { booleanPropTypeUtil } from "@elementor/editor-props";
|
|
2515
|
+
import { Switch } from "@elementor/ui";
|
|
2516
|
+
var SwitchControl = createControl(() => {
|
|
2517
|
+
const { value, setValue, disabled } = useBoundProp(booleanPropTypeUtil);
|
|
2518
|
+
const handleChange = (event) => {
|
|
2519
|
+
setValue(event.target.checked);
|
|
2520
|
+
};
|
|
2521
|
+
return /* @__PURE__ */ React41.createElement("div", { style: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React41.createElement(
|
|
2522
|
+
Switch,
|
|
2523
|
+
{
|
|
2524
|
+
checked: !!value,
|
|
2525
|
+
onChange: handleChange,
|
|
2526
|
+
size: "small",
|
|
2527
|
+
disabled,
|
|
2528
|
+
inputProps: {
|
|
2529
|
+
...disabled ? { style: { opacity: 0 } } : {}
|
|
2530
|
+
}
|
|
2531
|
+
}
|
|
2532
|
+
));
|
|
2533
|
+
});
|
|
2534
|
+
|
|
2325
2535
|
// src/controls/link-control.tsx
|
|
2326
2536
|
var SIZE4 = "tiny";
|
|
2327
2537
|
var learnMoreButton = {
|
|
2328
|
-
label:
|
|
2538
|
+
label: __11("Learn More", "elementor"),
|
|
2329
2539
|
href: "https://go.elementor.com/element-link-inside-link-infotip"
|
|
2330
2540
|
};
|
|
2331
2541
|
var LinkControl = createControl((props) => {
|
|
@@ -2338,7 +2548,7 @@ var LinkControl = createControl((props) => {
|
|
|
2338
2548
|
placeholder,
|
|
2339
2549
|
minInputLength = 2,
|
|
2340
2550
|
context: { elementId },
|
|
2341
|
-
label =
|
|
2551
|
+
label = __11("Link", "elementor")
|
|
2342
2552
|
} = props || {};
|
|
2343
2553
|
const [linkInLinkRestriction, setLinkInLinkRestriction] = useState7(getLinkInLinkRestriction(elementId));
|
|
2344
2554
|
const [options, setOptions] = useState7(
|
|
@@ -2401,7 +2611,7 @@ var LinkControl = createControl((props) => {
|
|
|
2401
2611
|
),
|
|
2402
2612
|
[endpoint]
|
|
2403
2613
|
);
|
|
2404
|
-
return /* @__PURE__ */
|
|
2614
|
+
return /* @__PURE__ */ React42.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React42.createElement(Stack10, { gap: 1.5 }, /* @__PURE__ */ React42.createElement(
|
|
2405
2615
|
Stack10,
|
|
2406
2616
|
{
|
|
2407
2617
|
direction: "row",
|
|
@@ -2411,17 +2621,17 @@ var LinkControl = createControl((props) => {
|
|
|
2411
2621
|
marginInlineEnd: -0.75
|
|
2412
2622
|
}
|
|
2413
2623
|
},
|
|
2414
|
-
/* @__PURE__ */
|
|
2415
|
-
/* @__PURE__ */
|
|
2624
|
+
/* @__PURE__ */ React42.createElement(ControlFormLabel, null, label),
|
|
2625
|
+
/* @__PURE__ */ React42.createElement(ConditionalInfoTip, { isVisible: !isActive, linkInLinkRestriction }, /* @__PURE__ */ React42.createElement(
|
|
2416
2626
|
ToggleIconControl,
|
|
2417
2627
|
{
|
|
2418
2628
|
disabled: shouldDisableAddingLink,
|
|
2419
2629
|
active: isActive,
|
|
2420
2630
|
onIconClick: onEnabledChange,
|
|
2421
|
-
label:
|
|
2631
|
+
label: __11("Toggle link", "elementor")
|
|
2422
2632
|
}
|
|
2423
2633
|
))
|
|
2424
|
-
), /* @__PURE__ */
|
|
2634
|
+
), /* @__PURE__ */ React42.createElement(Collapse, { in: isActive, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React42.createElement(Stack10, { gap: 1.5 }, /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "destination" }, /* @__PURE__ */ React42.createElement(ControlActions, null, /* @__PURE__ */ React42.createElement(
|
|
2425
2635
|
Autocomplete,
|
|
2426
2636
|
{
|
|
2427
2637
|
options,
|
|
@@ -2432,22 +2642,31 @@ var LinkControl = createControl((props) => {
|
|
|
2432
2642
|
onTextChange,
|
|
2433
2643
|
minInputLength
|
|
2434
2644
|
}
|
|
2435
|
-
))), /* @__PURE__ */
|
|
2645
|
+
))), /* @__PURE__ */ React42.createElement(PropKeyProvider, { bind: "isTargetBlank" }, /* @__PURE__ */ React42.createElement(Grid9, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React42.createElement(Grid9, { item: true }, /* @__PURE__ */ React42.createElement(ControlFormLabel, null, __11("Open in a new tab", "elementor"))), /* @__PURE__ */ React42.createElement(Grid9, { item: true, sx: { marginInlineEnd: -1 } }, /* @__PURE__ */ React42.createElement(SwitchControlComponent, { disabled: propContext.disabled || !value }))))))));
|
|
2436
2646
|
});
|
|
2437
2647
|
var ToggleIconControl = ({ disabled, active, onIconClick, label }) => {
|
|
2438
|
-
return /* @__PURE__ */
|
|
2648
|
+
return /* @__PURE__ */ React42.createElement(IconButton3, { size: SIZE4, onClick: onIconClick, "aria-label": label, disabled }, active ? /* @__PURE__ */ React42.createElement(MinusIcon, { fontSize: SIZE4 }) : /* @__PURE__ */ React42.createElement(PlusIcon2, { fontSize: SIZE4 }));
|
|
2439
2649
|
};
|
|
2440
|
-
var
|
|
2441
|
-
const { value
|
|
2650
|
+
var SwitchControlComponent = ({ disabled }) => {
|
|
2651
|
+
const { value, setValue } = useBoundProp(booleanPropTypeUtil2);
|
|
2652
|
+
const isVersion331Active = isExperimentActive4("e_v_3_31");
|
|
2653
|
+
if (isVersion331Active) {
|
|
2654
|
+
return /* @__PURE__ */ React42.createElement(SwitchControl, null);
|
|
2655
|
+
}
|
|
2442
2656
|
const onClick = () => {
|
|
2443
2657
|
setValue(!value);
|
|
2444
2658
|
};
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2659
|
+
return /* @__PURE__ */ React42.createElement(
|
|
2660
|
+
Switch2,
|
|
2661
|
+
{
|
|
2662
|
+
checked: value ?? false,
|
|
2663
|
+
onClick,
|
|
2664
|
+
disabled,
|
|
2665
|
+
inputProps: {
|
|
2666
|
+
...disabled ? { style: { opacity: 0 } } : {}
|
|
2667
|
+
}
|
|
2448
2668
|
}
|
|
2449
|
-
|
|
2450
|
-
return /* @__PURE__ */ React39.createElement(Grid7, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React39.createElement(Grid7, { item: true }, /* @__PURE__ */ React39.createElement(ControlFormLabel, null, __9("Open in a new tab", "elementor"))), /* @__PURE__ */ React39.createElement(Grid7, { item: true, sx: { marginInlineEnd: -1 } }, /* @__PURE__ */ React39.createElement(Switch, { checked: value, onClick, disabled, inputProps })));
|
|
2669
|
+
);
|
|
2451
2670
|
};
|
|
2452
2671
|
async function fetchOptions(ajaxUrl, params) {
|
|
2453
2672
|
if (!params || !ajaxUrl) {
|
|
@@ -2484,38 +2703,38 @@ var ConditionalInfoTip = ({ linkInLinkRestriction, isVisible, children }) => {
|
|
|
2484
2703
|
selectElement(elementId);
|
|
2485
2704
|
}
|
|
2486
2705
|
};
|
|
2487
|
-
return shouldRestrict && isVisible ? /* @__PURE__ */
|
|
2706
|
+
return shouldRestrict && isVisible ? /* @__PURE__ */ React42.createElement(
|
|
2488
2707
|
Infotip,
|
|
2489
2708
|
{
|
|
2490
2709
|
placement: "right",
|
|
2491
|
-
content: /* @__PURE__ */
|
|
2710
|
+
content: /* @__PURE__ */ React42.createElement(
|
|
2492
2711
|
InfoTipCard,
|
|
2493
2712
|
{
|
|
2494
2713
|
content: INFOTIP_CONTENT[reason],
|
|
2495
|
-
svgIcon: /* @__PURE__ */
|
|
2714
|
+
svgIcon: /* @__PURE__ */ React42.createElement(AlertTriangleIcon, null),
|
|
2496
2715
|
learnMoreButton,
|
|
2497
2716
|
ctaButton: {
|
|
2498
|
-
label:
|
|
2717
|
+
label: __11("Take me there", "elementor"),
|
|
2499
2718
|
onClick: handleTakeMeClick
|
|
2500
2719
|
}
|
|
2501
2720
|
}
|
|
2502
2721
|
)
|
|
2503
2722
|
},
|
|
2504
|
-
/* @__PURE__ */
|
|
2505
|
-
) : /* @__PURE__ */
|
|
2723
|
+
/* @__PURE__ */ React42.createElement(Box7, null, children)
|
|
2724
|
+
) : /* @__PURE__ */ React42.createElement(React42.Fragment, null, children);
|
|
2506
2725
|
};
|
|
2507
2726
|
var INFOTIP_CONTENT = {
|
|
2508
|
-
descendant: /* @__PURE__ */
|
|
2509
|
-
ancestor: /* @__PURE__ */
|
|
2727
|
+
descendant: /* @__PURE__ */ React42.createElement(React42.Fragment, null, __11("To add a link to this container,", "elementor"), /* @__PURE__ */ React42.createElement("br", null), __11("first remove the link from the elements inside of it.", "elementor")),
|
|
2728
|
+
ancestor: /* @__PURE__ */ React42.createElement(React42.Fragment, null, __11("To add a link to this element,", "elementor"), /* @__PURE__ */ React42.createElement("br", null), __11("first remove the link from its parent container.", "elementor"))
|
|
2510
2729
|
};
|
|
2511
2730
|
|
|
2512
2731
|
// src/controls/gap-control.tsx
|
|
2513
|
-
import * as
|
|
2514
|
-
import { useRef as
|
|
2732
|
+
import * as React43 from "react";
|
|
2733
|
+
import { useRef as useRef9 } from "react";
|
|
2515
2734
|
import { layoutDirectionPropTypeUtil, sizePropTypeUtil as sizePropTypeUtil4 } from "@elementor/editor-props";
|
|
2516
2735
|
import { DetachIcon as DetachIcon2, LinkIcon as LinkIcon2 } from "@elementor/icons";
|
|
2517
|
-
import { Grid as
|
|
2518
|
-
import { __ as
|
|
2736
|
+
import { Grid as Grid10, Stack as Stack11, ToggleButton as ToggleButton4, Tooltip as Tooltip5 } from "@elementor/ui";
|
|
2737
|
+
import { __ as __12 } from "@wordpress/i18n";
|
|
2519
2738
|
var GapControl = createControl(({ label }) => {
|
|
2520
2739
|
const {
|
|
2521
2740
|
value: directionValue,
|
|
@@ -2523,7 +2742,7 @@ var GapControl = createControl(({ label }) => {
|
|
|
2523
2742
|
propType,
|
|
2524
2743
|
disabled: directionDisabled
|
|
2525
2744
|
} = useBoundProp(layoutDirectionPropTypeUtil);
|
|
2526
|
-
const stackRef =
|
|
2745
|
+
const stackRef = useRef9(null);
|
|
2527
2746
|
const { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp(sizePropTypeUtil4);
|
|
2528
2747
|
const isLinked = !directionValue && !sizeValue ? true : !!sizeValue;
|
|
2529
2748
|
const onLinkToggle = () => {
|
|
@@ -2539,10 +2758,10 @@ var GapControl = createControl(({ label }) => {
|
|
|
2539
2758
|
};
|
|
2540
2759
|
const tooltipLabel = label.toLowerCase();
|
|
2541
2760
|
const LinkedIcon = isLinked ? LinkIcon2 : DetachIcon2;
|
|
2542
|
-
const linkedLabel =
|
|
2543
|
-
const unlinkedLabel =
|
|
2761
|
+
const linkedLabel = __12("Link %s", "elementor").replace("%s", tooltipLabel);
|
|
2762
|
+
const unlinkedLabel = __12("Unlink %s", "elementor").replace("%s", tooltipLabel);
|
|
2544
2763
|
const disabled = sizeDisabled || directionDisabled;
|
|
2545
|
-
return /* @__PURE__ */
|
|
2764
|
+
return /* @__PURE__ */ React43.createElement(PropProvider, { propType, value: directionValue, setValue: setDirectionValue }, /* @__PURE__ */ React43.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React43.createElement(ControlLabel, null, label), /* @__PURE__ */ React43.createElement(Tooltip5, { title: isLinked ? unlinkedLabel : linkedLabel, placement: "top" }, /* @__PURE__ */ React43.createElement(
|
|
2546
2765
|
ToggleButton4,
|
|
2547
2766
|
{
|
|
2548
2767
|
"aria-label": isLinked ? unlinkedLabel : linkedLabel,
|
|
@@ -2553,8 +2772,8 @@ var GapControl = createControl(({ label }) => {
|
|
|
2553
2772
|
onChange: onLinkToggle,
|
|
2554
2773
|
disabled
|
|
2555
2774
|
},
|
|
2556
|
-
/* @__PURE__ */
|
|
2557
|
-
))), /* @__PURE__ */
|
|
2775
|
+
/* @__PURE__ */ React43.createElement(LinkedIcon, { fontSize: "tiny" })
|
|
2776
|
+
))), /* @__PURE__ */ React43.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap", ref: stackRef }, /* @__PURE__ */ React43.createElement(Grid10, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React43.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(ControlFormLabel, null, __12("Column", "elementor"))), /* @__PURE__ */ React43.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(Control4, { bind: "column", isLinked, anchorRef: stackRef }))), /* @__PURE__ */ React43.createElement(Grid10, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React43.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(ControlFormLabel, null, __12("Row", "elementor"))), /* @__PURE__ */ React43.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React43.createElement(Control4, { bind: "row", isLinked, anchorRef: stackRef })))));
|
|
2558
2777
|
});
|
|
2559
2778
|
var Control4 = ({
|
|
2560
2779
|
bind,
|
|
@@ -2562,21 +2781,21 @@ var Control4 = ({
|
|
|
2562
2781
|
anchorRef
|
|
2563
2782
|
}) => {
|
|
2564
2783
|
if (isLinked) {
|
|
2565
|
-
return /* @__PURE__ */
|
|
2784
|
+
return /* @__PURE__ */ React43.createElement(SizeControl, { anchorRef });
|
|
2566
2785
|
}
|
|
2567
|
-
return /* @__PURE__ */
|
|
2786
|
+
return /* @__PURE__ */ React43.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React43.createElement(SizeControl, { anchorRef }));
|
|
2568
2787
|
};
|
|
2569
2788
|
|
|
2570
2789
|
// src/controls/aspect-ratio-control.tsx
|
|
2571
|
-
import * as
|
|
2790
|
+
import * as React44 from "react";
|
|
2572
2791
|
import { useEffect as useEffect6, useState as useState8 } from "react";
|
|
2573
2792
|
import { stringPropTypeUtil as stringPropTypeUtil7 } from "@elementor/editor-props";
|
|
2574
2793
|
import { MenuListItem as MenuListItem4 } from "@elementor/editor-ui";
|
|
2575
2794
|
import { ArrowsMoveHorizontalIcon, ArrowsMoveVerticalIcon } from "@elementor/icons";
|
|
2576
|
-
import { Grid as
|
|
2577
|
-
import { __ as
|
|
2795
|
+
import { Grid as Grid11, Select as Select3, Stack as Stack12, TextField as TextField8 } from "@elementor/ui";
|
|
2796
|
+
import { __ as __13 } from "@wordpress/i18n";
|
|
2578
2797
|
var RATIO_OPTIONS = [
|
|
2579
|
-
{ label:
|
|
2798
|
+
{ label: __13("Auto", "elementor"), value: "auto" },
|
|
2580
2799
|
{ label: "1/1", value: "1/1" },
|
|
2581
2800
|
{ label: "4/3", value: "4/3" },
|
|
2582
2801
|
{ label: "3/4", value: "3/4" },
|
|
@@ -2635,7 +2854,7 @@ var AspectRatioControl = createControl(({ label }) => {
|
|
|
2635
2854
|
setAspectRatioValue(`${customWidth}/${newHeight}`);
|
|
2636
2855
|
}
|
|
2637
2856
|
};
|
|
2638
|
-
return /* @__PURE__ */
|
|
2857
|
+
return /* @__PURE__ */ React44.createElement(ControlActions, null, /* @__PURE__ */ React44.createElement(Stack12, { direction: "column", gap: 2 }, /* @__PURE__ */ React44.createElement(Grid11, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React44.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(ControlLabel, null, label)), /* @__PURE__ */ React44.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(
|
|
2639
2858
|
Select3,
|
|
2640
2859
|
{
|
|
2641
2860
|
size: "tiny",
|
|
@@ -2646,10 +2865,10 @@ var AspectRatioControl = createControl(({ label }) => {
|
|
|
2646
2865
|
onChange: handleSelectChange,
|
|
2647
2866
|
fullWidth: true
|
|
2648
2867
|
},
|
|
2649
|
-
[...RATIO_OPTIONS, { label:
|
|
2650
|
-
({ label: optionLabel, ...props }) => /* @__PURE__ */
|
|
2868
|
+
[...RATIO_OPTIONS, { label: __13("Custom", "elementor"), value: CUSTOM_RATIO }].map(
|
|
2869
|
+
({ label: optionLabel, ...props }) => /* @__PURE__ */ React44.createElement(MenuListItem4, { key: props.value, ...props, value: props.value ?? "" }, optionLabel)
|
|
2651
2870
|
)
|
|
2652
|
-
))), isCustom && /* @__PURE__ */
|
|
2871
|
+
))), isCustom && /* @__PURE__ */ React44.createElement(Grid11, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React44.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(
|
|
2653
2872
|
TextField8,
|
|
2654
2873
|
{
|
|
2655
2874
|
size: "tiny",
|
|
@@ -2659,10 +2878,10 @@ var AspectRatioControl = createControl(({ label }) => {
|
|
|
2659
2878
|
value: customWidth,
|
|
2660
2879
|
onChange: handleCustomWidthChange,
|
|
2661
2880
|
InputProps: {
|
|
2662
|
-
startAdornment: /* @__PURE__ */
|
|
2881
|
+
startAdornment: /* @__PURE__ */ React44.createElement(ArrowsMoveHorizontalIcon, { fontSize: "tiny" })
|
|
2663
2882
|
}
|
|
2664
2883
|
}
|
|
2665
|
-
)), /* @__PURE__ */
|
|
2884
|
+
)), /* @__PURE__ */ React44.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(
|
|
2666
2885
|
TextField8,
|
|
2667
2886
|
{
|
|
2668
2887
|
size: "tiny",
|
|
@@ -2672,23 +2891,23 @@ var AspectRatioControl = createControl(({ label }) => {
|
|
|
2672
2891
|
value: customHeight,
|
|
2673
2892
|
onChange: handleCustomHeightChange,
|
|
2674
2893
|
InputProps: {
|
|
2675
|
-
startAdornment: /* @__PURE__ */
|
|
2894
|
+
startAdornment: /* @__PURE__ */ React44.createElement(ArrowsMoveVerticalIcon, { fontSize: "tiny" })
|
|
2676
2895
|
}
|
|
2677
2896
|
}
|
|
2678
2897
|
)))));
|
|
2679
2898
|
});
|
|
2680
2899
|
|
|
2681
2900
|
// src/controls/svg-media-control.tsx
|
|
2682
|
-
import * as
|
|
2901
|
+
import * as React46 from "react";
|
|
2683
2902
|
import { useState as useState10 } from "react";
|
|
2684
2903
|
import { imageSrcPropTypeUtil as imageSrcPropTypeUtil2 } from "@elementor/editor-props";
|
|
2685
2904
|
import { UploadIcon as UploadIcon2 } from "@elementor/icons";
|
|
2686
2905
|
import { Button as Button4, Card as Card2, CardMedia as CardMedia2, CardOverlay as CardOverlay2, CircularProgress as CircularProgress3, Stack as Stack13, styled as styled4 } from "@elementor/ui";
|
|
2687
2906
|
import { useWpMediaAttachment as useWpMediaAttachment2, useWpMediaFrame as useWpMediaFrame2 } from "@elementor/wp-media";
|
|
2688
|
-
import { __ as
|
|
2907
|
+
import { __ as __15 } from "@wordpress/i18n";
|
|
2689
2908
|
|
|
2690
2909
|
// src/components/enable-unfiltered-modal.tsx
|
|
2691
|
-
import * as
|
|
2910
|
+
import * as React45 from "react";
|
|
2692
2911
|
import { useState as useState9 } from "react";
|
|
2693
2912
|
import { useCurrentUserCapabilities } from "@elementor/editor-current-user";
|
|
2694
2913
|
import {
|
|
@@ -2702,19 +2921,19 @@ import {
|
|
|
2702
2921
|
DialogTitle,
|
|
2703
2922
|
Divider as Divider3
|
|
2704
2923
|
} from "@elementor/ui";
|
|
2705
|
-
import { __ as
|
|
2706
|
-
var ADMIN_TITLE_TEXT =
|
|
2707
|
-
var ADMIN_CONTENT_TEXT =
|
|
2924
|
+
import { __ as __14 } from "@wordpress/i18n";
|
|
2925
|
+
var ADMIN_TITLE_TEXT = __14("Enable Unfiltered Uploads", "elementor");
|
|
2926
|
+
var ADMIN_CONTENT_TEXT = __14(
|
|
2708
2927
|
"Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.",
|
|
2709
2928
|
"elementor"
|
|
2710
2929
|
);
|
|
2711
|
-
var NON_ADMIN_TITLE_TEXT =
|
|
2712
|
-
var NON_ADMIN_CONTENT_TEXT =
|
|
2930
|
+
var NON_ADMIN_TITLE_TEXT = __14("Sorry, you can't upload that file yet", "elementor");
|
|
2931
|
+
var NON_ADMIN_CONTENT_TEXT = __14(
|
|
2713
2932
|
"This is because this file type may pose a security risk. To upload them anyway, ask the site administrator to enable unfiltered file uploads.",
|
|
2714
2933
|
"elementor"
|
|
2715
2934
|
);
|
|
2716
|
-
var ADMIN_FAILED_CONTENT_TEXT_PT1 =
|
|
2717
|
-
var ADMIN_FAILED_CONTENT_TEXT_PT2 =
|
|
2935
|
+
var ADMIN_FAILED_CONTENT_TEXT_PT1 = __14("Failed to enable unfiltered files upload.", "elementor");
|
|
2936
|
+
var ADMIN_FAILED_CONTENT_TEXT_PT2 = __14(
|
|
2718
2937
|
"You can try again, if the problem persists, please contact support.",
|
|
2719
2938
|
"elementor"
|
|
2720
2939
|
);
|
|
@@ -2741,9 +2960,9 @@ var EnableUnfilteredModal = (props) => {
|
|
|
2741
2960
|
}
|
|
2742
2961
|
};
|
|
2743
2962
|
const dialogProps = { ...props, isPending, handleEnable, isError, onClose };
|
|
2744
|
-
return canManageOptions ? /* @__PURE__ */
|
|
2963
|
+
return canManageOptions ? /* @__PURE__ */ React45.createElement(AdminDialog, { ...dialogProps }) : /* @__PURE__ */ React45.createElement(NonAdminDialog, { ...dialogProps });
|
|
2745
2964
|
};
|
|
2746
|
-
var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @__PURE__ */
|
|
2965
|
+
var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @__PURE__ */ React45.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React45.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React45.createElement(DialogTitle, null, ADMIN_TITLE_TEXT)), /* @__PURE__ */ React45.createElement(Divider3, null), /* @__PURE__ */ React45.createElement(DialogContent, null, /* @__PURE__ */ React45.createElement(DialogContentText, null, isError ? /* @__PURE__ */ React45.createElement(React45.Fragment, null, ADMIN_FAILED_CONTENT_TEXT_PT1, " ", /* @__PURE__ */ React45.createElement("br", null), " ", ADMIN_FAILED_CONTENT_TEXT_PT2) : ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React45.createElement(DialogActions, null, /* @__PURE__ */ React45.createElement(Button3, { size: "medium", color: "secondary", onClick: () => onClose(false) }, __14("Cancel", "elementor")), /* @__PURE__ */ React45.createElement(
|
|
2747
2966
|
Button3,
|
|
2748
2967
|
{
|
|
2749
2968
|
size: "medium",
|
|
@@ -2752,9 +2971,9 @@ var AdminDialog = ({ open, onClose, handleEnable, isPending, isError }) => /* @_
|
|
|
2752
2971
|
color: "primary",
|
|
2753
2972
|
disabled: isPending
|
|
2754
2973
|
},
|
|
2755
|
-
isPending ? /* @__PURE__ */
|
|
2974
|
+
isPending ? /* @__PURE__ */ React45.createElement(CircularProgress2, { size: 24 }) : __14("Enable", "elementor")
|
|
2756
2975
|
)));
|
|
2757
|
-
var NonAdminDialog = ({ open, onClose }) => /* @__PURE__ */
|
|
2976
|
+
var NonAdminDialog = ({ open, onClose }) => /* @__PURE__ */ React45.createElement(Dialog, { open, maxWidth: "sm", onClose: () => onClose(false) }, /* @__PURE__ */ React45.createElement(DialogHeader, { logo: false }, /* @__PURE__ */ React45.createElement(DialogTitle, null, NON_ADMIN_TITLE_TEXT)), /* @__PURE__ */ React45.createElement(Divider3, null), /* @__PURE__ */ React45.createElement(DialogContent, null, /* @__PURE__ */ React45.createElement(DialogContentText, null, NON_ADMIN_CONTENT_TEXT)), /* @__PURE__ */ React45.createElement(DialogActions, null, /* @__PURE__ */ React45.createElement(Button3, { size: "medium", onClick: () => onClose(false), variant: "contained", color: "primary" }, __14("Got it", "elementor"))));
|
|
2758
2977
|
|
|
2759
2978
|
// src/controls/svg-media-control.tsx
|
|
2760
2979
|
var TILE_SIZE = 8;
|
|
@@ -2815,15 +3034,15 @@ var SvgMediaControl = createControl(() => {
|
|
|
2815
3034
|
open(openOptions);
|
|
2816
3035
|
}
|
|
2817
3036
|
};
|
|
2818
|
-
return /* @__PURE__ */
|
|
3037
|
+
return /* @__PURE__ */ React46.createElement(Stack13, { gap: 1 }, /* @__PURE__ */ React46.createElement(EnableUnfilteredModal, { open: unfilteredModalOpenState, onClose: onCloseUnfilteredModal }), /* @__PURE__ */ React46.createElement(ControlActions, null, /* @__PURE__ */ React46.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React46.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React46.createElement(CircularProgress3, { role: "progressbar" }) : /* @__PURE__ */ React46.createElement(
|
|
2819
3038
|
CardMedia2,
|
|
2820
3039
|
{
|
|
2821
3040
|
component: "img",
|
|
2822
3041
|
image: src,
|
|
2823
|
-
alt:
|
|
3042
|
+
alt: __15("Preview SVG", "elementor"),
|
|
2824
3043
|
sx: { maxHeight: "140px", width: "50px" }
|
|
2825
3044
|
}
|
|
2826
|
-
)), /* @__PURE__ */
|
|
3045
|
+
)), /* @__PURE__ */ React46.createElement(
|
|
2827
3046
|
CardOverlay2,
|
|
2828
3047
|
{
|
|
2829
3048
|
sx: {
|
|
@@ -2832,7 +3051,7 @@ var SvgMediaControl = createControl(() => {
|
|
|
2832
3051
|
}
|
|
2833
3052
|
}
|
|
2834
3053
|
},
|
|
2835
|
-
/* @__PURE__ */
|
|
3054
|
+
/* @__PURE__ */ React46.createElement(Stack13, { gap: 1 }, /* @__PURE__ */ React46.createElement(
|
|
2836
3055
|
Button4,
|
|
2837
3056
|
{
|
|
2838
3057
|
size: "tiny",
|
|
@@ -2840,46 +3059,46 @@ var SvgMediaControl = createControl(() => {
|
|
|
2840
3059
|
variant: "outlined",
|
|
2841
3060
|
onClick: () => handleClick(MODE_BROWSE)
|
|
2842
3061
|
},
|
|
2843
|
-
|
|
2844
|
-
), /* @__PURE__ */
|
|
3062
|
+
__15("Select SVG", "elementor")
|
|
3063
|
+
), /* @__PURE__ */ React46.createElement(
|
|
2845
3064
|
Button4,
|
|
2846
3065
|
{
|
|
2847
3066
|
size: "tiny",
|
|
2848
3067
|
variant: "text",
|
|
2849
3068
|
color: "inherit",
|
|
2850
|
-
startIcon: /* @__PURE__ */
|
|
3069
|
+
startIcon: /* @__PURE__ */ React46.createElement(UploadIcon2, null),
|
|
2851
3070
|
onClick: () => handleClick(MODE_UPLOAD)
|
|
2852
3071
|
},
|
|
2853
|
-
|
|
3072
|
+
__15("Upload", "elementor")
|
|
2854
3073
|
))
|
|
2855
3074
|
))));
|
|
2856
3075
|
});
|
|
2857
3076
|
|
|
2858
3077
|
// src/controls/background-control/background-control.tsx
|
|
2859
|
-
import * as
|
|
3078
|
+
import * as React53 from "react";
|
|
2860
3079
|
import { backgroundPropTypeUtil } from "@elementor/editor-props";
|
|
2861
|
-
import { isExperimentActive as
|
|
2862
|
-
import { Grid as
|
|
2863
|
-
import { __ as
|
|
3080
|
+
import { isExperimentActive as isExperimentActive5 } from "@elementor/editor-v1-adapters";
|
|
3081
|
+
import { Grid as Grid16 } from "@elementor/ui";
|
|
3082
|
+
import { __ as __21 } from "@wordpress/i18n";
|
|
2864
3083
|
|
|
2865
3084
|
// src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx
|
|
2866
|
-
import * as
|
|
3085
|
+
import * as React52 from "react";
|
|
2867
3086
|
import {
|
|
2868
3087
|
backgroundColorOverlayPropTypeUtil as backgroundColorOverlayPropTypeUtil2,
|
|
2869
3088
|
backgroundImageOverlayPropTypeUtil as backgroundImageOverlayPropTypeUtil2,
|
|
2870
3089
|
backgroundOverlayPropTypeUtil,
|
|
2871
3090
|
colorPropTypeUtil as colorPropTypeUtil3
|
|
2872
3091
|
} from "@elementor/editor-props";
|
|
2873
|
-
import { Box as
|
|
3092
|
+
import { Box as Box8, CardMedia as CardMedia3, styled as styled5, Tab, TabPanel, Tabs, UnstableColorIndicator as UnstableColorIndicator2 } from "@elementor/ui";
|
|
2874
3093
|
import { useWpMediaAttachment as useWpMediaAttachment3 } from "@elementor/wp-media";
|
|
2875
|
-
import { __ as
|
|
3094
|
+
import { __ as __20 } from "@wordpress/i18n";
|
|
2876
3095
|
|
|
2877
3096
|
// src/env.ts
|
|
2878
3097
|
import { parseEnv } from "@elementor/env";
|
|
2879
3098
|
var { env } = parseEnv("@elementor/editor-controls");
|
|
2880
3099
|
|
|
2881
3100
|
// src/controls/background-control/background-gradient-color-control.tsx
|
|
2882
|
-
import * as
|
|
3101
|
+
import * as React47 from "react";
|
|
2883
3102
|
import {
|
|
2884
3103
|
backgroundGradientOverlayPropTypeUtil,
|
|
2885
3104
|
colorPropTypeUtil as colorPropTypeUtil2,
|
|
@@ -2926,7 +3145,7 @@ var BackgroundGradientColorControl = createControl(() => {
|
|
|
2926
3145
|
positions: positions?.value.split(" ")
|
|
2927
3146
|
};
|
|
2928
3147
|
};
|
|
2929
|
-
return /* @__PURE__ */
|
|
3148
|
+
return /* @__PURE__ */ React47.createElement(ControlActions, null, /* @__PURE__ */ React47.createElement(
|
|
2930
3149
|
UnstableGradientBox,
|
|
2931
3150
|
{
|
|
2932
3151
|
sx: { width: "auto", padding: 1.5 },
|
|
@@ -2951,53 +3170,53 @@ var initialBackgroundGradientOverlay = backgroundGradientOverlayPropTypeUtil.cre
|
|
|
2951
3170
|
});
|
|
2952
3171
|
|
|
2953
3172
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx
|
|
2954
|
-
import * as
|
|
3173
|
+
import * as React48 from "react";
|
|
2955
3174
|
import { PinIcon, PinnedOffIcon } from "@elementor/icons";
|
|
2956
|
-
import { Grid as
|
|
2957
|
-
import { __ as
|
|
3175
|
+
import { Grid as Grid12 } from "@elementor/ui";
|
|
3176
|
+
import { __ as __16 } from "@wordpress/i18n";
|
|
2958
3177
|
var attachmentControlOptions = [
|
|
2959
3178
|
{
|
|
2960
3179
|
value: "fixed",
|
|
2961
|
-
label:
|
|
2962
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3180
|
+
label: __16("Fixed", "elementor"),
|
|
3181
|
+
renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(PinIcon, { fontSize: size }),
|
|
2963
3182
|
showTooltip: true
|
|
2964
3183
|
},
|
|
2965
3184
|
{
|
|
2966
3185
|
value: "scroll",
|
|
2967
|
-
label:
|
|
2968
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3186
|
+
label: __16("Scroll", "elementor"),
|
|
3187
|
+
renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(PinnedOffIcon, { fontSize: size }),
|
|
2969
3188
|
showTooltip: true
|
|
2970
3189
|
}
|
|
2971
3190
|
];
|
|
2972
3191
|
var BackgroundImageOverlayAttachment = () => {
|
|
2973
|
-
return /* @__PURE__ */
|
|
3192
|
+
return /* @__PURE__ */ React48.createElement(PopoverGridContainer, null, /* @__PURE__ */ React48.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(ControlFormLabel, null, __16("Attachment", "elementor"))), /* @__PURE__ */ React48.createElement(Grid12, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React48.createElement(ToggleControl, { options: attachmentControlOptions })));
|
|
2974
3193
|
};
|
|
2975
3194
|
|
|
2976
3195
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
|
|
2977
|
-
import * as
|
|
2978
|
-
import { useRef as
|
|
3196
|
+
import * as React49 from "react";
|
|
3197
|
+
import { useRef as useRef10 } from "react";
|
|
2979
3198
|
import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil9 } from "@elementor/editor-props";
|
|
2980
3199
|
import { MenuListItem as MenuListItem5 } from "@elementor/editor-ui";
|
|
2981
3200
|
import { LetterXIcon, LetterYIcon } from "@elementor/icons";
|
|
2982
|
-
import { Grid as
|
|
2983
|
-
import { __ as
|
|
3201
|
+
import { Grid as Grid13, Select as Select4 } from "@elementor/ui";
|
|
3202
|
+
import { __ as __17 } from "@wordpress/i18n";
|
|
2984
3203
|
var backgroundPositionOptions = [
|
|
2985
|
-
{ label:
|
|
2986
|
-
{ label:
|
|
2987
|
-
{ label:
|
|
2988
|
-
{ label:
|
|
2989
|
-
{ label:
|
|
2990
|
-
{ label:
|
|
2991
|
-
{ label:
|
|
2992
|
-
{ label:
|
|
2993
|
-
{ label:
|
|
2994
|
-
{ label:
|
|
3204
|
+
{ label: __17("Center center", "elementor"), value: "center center" },
|
|
3205
|
+
{ label: __17("Center left", "elementor"), value: "center left" },
|
|
3206
|
+
{ label: __17("Center right", "elementor"), value: "center right" },
|
|
3207
|
+
{ label: __17("Top center", "elementor"), value: "top center" },
|
|
3208
|
+
{ label: __17("Top left", "elementor"), value: "top left" },
|
|
3209
|
+
{ label: __17("Top right", "elementor"), value: "top right" },
|
|
3210
|
+
{ label: __17("Bottom center", "elementor"), value: "bottom center" },
|
|
3211
|
+
{ label: __17("Bottom left", "elementor"), value: "bottom left" },
|
|
3212
|
+
{ label: __17("Bottom right", "elementor"), value: "bottom right" },
|
|
3213
|
+
{ label: __17("Custom", "elementor"), value: "custom" }
|
|
2995
3214
|
];
|
|
2996
3215
|
var BackgroundImageOverlayPosition = () => {
|
|
2997
3216
|
const backgroundImageOffsetContext = useBoundProp(backgroundImagePositionOffsetPropTypeUtil);
|
|
2998
3217
|
const stringPropContext = useBoundProp(stringPropTypeUtil9);
|
|
2999
3218
|
const isCustom = !!backgroundImageOffsetContext.value;
|
|
3000
|
-
const rowRef =
|
|
3219
|
+
const rowRef = useRef10(null);
|
|
3001
3220
|
const handlePositionChange = (event) => {
|
|
3002
3221
|
const value = event.target.value || null;
|
|
3003
3222
|
if (value === "custom") {
|
|
@@ -3006,7 +3225,7 @@ var BackgroundImageOverlayPosition = () => {
|
|
|
3006
3225
|
stringPropContext.setValue(value);
|
|
3007
3226
|
}
|
|
3008
3227
|
};
|
|
3009
|
-
return /* @__PURE__ */
|
|
3228
|
+
return /* @__PURE__ */ React49.createElement(Grid13, { container: true, spacing: 1.5 }, /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React49.createElement(PopoverGridContainer, null, /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(ControlFormLabel, null, __17("Position", "elementor"))), /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React49.createElement(
|
|
3010
3229
|
Select4,
|
|
3011
3230
|
{
|
|
3012
3231
|
fullWidth: true,
|
|
@@ -3015,60 +3234,60 @@ var BackgroundImageOverlayPosition = () => {
|
|
|
3015
3234
|
disabled: stringPropContext.disabled,
|
|
3016
3235
|
value: (backgroundImageOffsetContext.value ? "custom" : stringPropContext.value) ?? ""
|
|
3017
3236
|
},
|
|
3018
|
-
backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */
|
|
3019
|
-
)))), isCustom ? /* @__PURE__ */
|
|
3237
|
+
backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React49.createElement(MenuListItem5, { key: value, value: value ?? "" }, label))
|
|
3238
|
+
)))), isCustom ? /* @__PURE__ */ React49.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React49.createElement(Grid13, { container: true, spacing: 1.5, ref: rowRef }, /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React49.createElement(
|
|
3020
3239
|
SizeControl,
|
|
3021
3240
|
{
|
|
3022
|
-
startIcon: /* @__PURE__ */
|
|
3241
|
+
startIcon: /* @__PURE__ */ React49.createElement(LetterXIcon, { fontSize: "tiny" }),
|
|
3023
3242
|
anchorRef: rowRef
|
|
3024
3243
|
}
|
|
3025
|
-
))), /* @__PURE__ */
|
|
3244
|
+
))), /* @__PURE__ */ React49.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React49.createElement(
|
|
3026
3245
|
SizeControl,
|
|
3027
3246
|
{
|
|
3028
|
-
startIcon: /* @__PURE__ */
|
|
3247
|
+
startIcon: /* @__PURE__ */ React49.createElement(LetterYIcon, { fontSize: "tiny" }),
|
|
3029
3248
|
anchorRef: rowRef
|
|
3030
3249
|
}
|
|
3031
3250
|
)))))) : null);
|
|
3032
3251
|
};
|
|
3033
3252
|
|
|
3034
3253
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx
|
|
3035
|
-
import * as
|
|
3254
|
+
import * as React50 from "react";
|
|
3036
3255
|
import { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon as XIcon3 } from "@elementor/icons";
|
|
3037
|
-
import { Grid as
|
|
3038
|
-
import { __ as
|
|
3256
|
+
import { Grid as Grid14 } from "@elementor/ui";
|
|
3257
|
+
import { __ as __18 } from "@wordpress/i18n";
|
|
3039
3258
|
var repeatControlOptions = [
|
|
3040
3259
|
{
|
|
3041
3260
|
value: "repeat",
|
|
3042
|
-
label:
|
|
3043
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3261
|
+
label: __18("Repeat", "elementor"),
|
|
3262
|
+
renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(GridDotsIcon, { fontSize: size }),
|
|
3044
3263
|
showTooltip: true
|
|
3045
3264
|
},
|
|
3046
3265
|
{
|
|
3047
3266
|
value: "repeat-x",
|
|
3048
|
-
label:
|
|
3049
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3267
|
+
label: __18("Repeat-x", "elementor"),
|
|
3268
|
+
renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(DotsHorizontalIcon, { fontSize: size }),
|
|
3050
3269
|
showTooltip: true
|
|
3051
3270
|
},
|
|
3052
3271
|
{
|
|
3053
3272
|
value: "repeat-y",
|
|
3054
|
-
label:
|
|
3055
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3273
|
+
label: __18("Repeat-y", "elementor"),
|
|
3274
|
+
renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(DotsVerticalIcon, { fontSize: size }),
|
|
3056
3275
|
showTooltip: true
|
|
3057
3276
|
},
|
|
3058
3277
|
{
|
|
3059
3278
|
value: "no-repeat",
|
|
3060
|
-
label:
|
|
3061
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3279
|
+
label: __18("No-repeat", "elementor"),
|
|
3280
|
+
renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(XIcon3, { fontSize: size }),
|
|
3062
3281
|
showTooltip: true
|
|
3063
3282
|
}
|
|
3064
3283
|
];
|
|
3065
3284
|
var BackgroundImageOverlayRepeat = () => {
|
|
3066
|
-
return /* @__PURE__ */
|
|
3285
|
+
return /* @__PURE__ */ React50.createElement(PopoverGridContainer, null, /* @__PURE__ */ React50.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React50.createElement(ControlFormLabel, null, __18("Repeat", "elementor"))), /* @__PURE__ */ React50.createElement(Grid14, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React50.createElement(ToggleControl, { options: repeatControlOptions })));
|
|
3067
3286
|
};
|
|
3068
3287
|
|
|
3069
3288
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
|
|
3070
|
-
import * as
|
|
3071
|
-
import { useRef as
|
|
3289
|
+
import * as React51 from "react";
|
|
3290
|
+
import { useRef as useRef11 } from "react";
|
|
3072
3291
|
import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil10 } from "@elementor/editor-props";
|
|
3073
3292
|
import {
|
|
3074
3293
|
ArrowBarBothIcon,
|
|
@@ -3078,31 +3297,31 @@ import {
|
|
|
3078
3297
|
LetterAIcon,
|
|
3079
3298
|
PencilIcon as PencilIcon2
|
|
3080
3299
|
} from "@elementor/icons";
|
|
3081
|
-
import { Grid as
|
|
3082
|
-
import { __ as
|
|
3300
|
+
import { Grid as Grid15 } from "@elementor/ui";
|
|
3301
|
+
import { __ as __19 } from "@wordpress/i18n";
|
|
3083
3302
|
var sizeControlOptions = [
|
|
3084
3303
|
{
|
|
3085
3304
|
value: "auto",
|
|
3086
|
-
label:
|
|
3087
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3305
|
+
label: __19("Auto", "elementor"),
|
|
3306
|
+
renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(LetterAIcon, { fontSize: size }),
|
|
3088
3307
|
showTooltip: true
|
|
3089
3308
|
},
|
|
3090
3309
|
{
|
|
3091
3310
|
value: "cover",
|
|
3092
|
-
label:
|
|
3093
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3311
|
+
label: __19("Cover", "elementor"),
|
|
3312
|
+
renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(ArrowsMaximizeIcon, { fontSize: size }),
|
|
3094
3313
|
showTooltip: true
|
|
3095
3314
|
},
|
|
3096
3315
|
{
|
|
3097
3316
|
value: "contain",
|
|
3098
|
-
label:
|
|
3099
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3317
|
+
label: __19("Contain", "elementor"),
|
|
3318
|
+
renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(ArrowBarBothIcon, { fontSize: size }),
|
|
3100
3319
|
showTooltip: true
|
|
3101
3320
|
},
|
|
3102
3321
|
{
|
|
3103
3322
|
value: "custom",
|
|
3104
|
-
label:
|
|
3105
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
3323
|
+
label: __19("Custom", "elementor"),
|
|
3324
|
+
renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(PencilIcon2, { fontSize: size }),
|
|
3106
3325
|
showTooltip: true
|
|
3107
3326
|
}
|
|
3108
3327
|
];
|
|
@@ -3110,7 +3329,7 @@ var BackgroundImageOverlaySize = () => {
|
|
|
3110
3329
|
const backgroundImageScaleContext = useBoundProp(backgroundImageSizeScalePropTypeUtil);
|
|
3111
3330
|
const stringPropContext = useBoundProp(stringPropTypeUtil10);
|
|
3112
3331
|
const isCustom = !!backgroundImageScaleContext.value;
|
|
3113
|
-
const rowRef =
|
|
3332
|
+
const rowRef = useRef11(null);
|
|
3114
3333
|
const handleSizeChange = (size) => {
|
|
3115
3334
|
if (size === "custom") {
|
|
3116
3335
|
backgroundImageScaleContext.setValue({ width: null, height: null });
|
|
@@ -3118,7 +3337,7 @@ var BackgroundImageOverlaySize = () => {
|
|
|
3118
3337
|
stringPropContext.setValue(size);
|
|
3119
3338
|
}
|
|
3120
3339
|
};
|
|
3121
|
-
return /* @__PURE__ */
|
|
3340
|
+
return /* @__PURE__ */ React51.createElement(Grid15, { container: true, spacing: 1.5 }, /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 12 }, /* @__PURE__ */ React51.createElement(PopoverGridContainer, null, /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(ControlFormLabel, null, __19("Size", "elementor"))), /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React51.createElement(
|
|
3122
3341
|
ControlToggleButtonGroup,
|
|
3123
3342
|
{
|
|
3124
3343
|
exclusive: true,
|
|
@@ -3127,17 +3346,17 @@ var BackgroundImageOverlaySize = () => {
|
|
|
3127
3346
|
disabled: stringPropContext.disabled,
|
|
3128
3347
|
value: backgroundImageScaleContext.value ? "custom" : stringPropContext.value
|
|
3129
3348
|
}
|
|
3130
|
-
)))), isCustom ? /* @__PURE__ */
|
|
3349
|
+
)))), isCustom ? /* @__PURE__ */ React51.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 12, ref: rowRef }, /* @__PURE__ */ React51.createElement(PopoverGridContainer, null, /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React51.createElement(
|
|
3131
3350
|
SizeControl,
|
|
3132
3351
|
{
|
|
3133
|
-
startIcon: /* @__PURE__ */
|
|
3352
|
+
startIcon: /* @__PURE__ */ React51.createElement(ArrowsMoveHorizontalIcon2, { fontSize: "tiny" }),
|
|
3134
3353
|
extendedOptions: ["auto"],
|
|
3135
3354
|
anchorRef: rowRef
|
|
3136
3355
|
}
|
|
3137
|
-
))), /* @__PURE__ */
|
|
3356
|
+
))), /* @__PURE__ */ React51.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React51.createElement(
|
|
3138
3357
|
SizeControl,
|
|
3139
3358
|
{
|
|
3140
|
-
startIcon: /* @__PURE__ */
|
|
3359
|
+
startIcon: /* @__PURE__ */ React51.createElement(ArrowsMoveVerticalIcon2, { fontSize: "tiny" }),
|
|
3141
3360
|
extendedOptions: ["auto"],
|
|
3142
3361
|
anchorRef: rowRef
|
|
3143
3362
|
}
|
|
@@ -3145,7 +3364,7 @@ var BackgroundImageOverlaySize = () => {
|
|
|
3145
3364
|
};
|
|
3146
3365
|
|
|
3147
3366
|
// src/controls/background-control/background-overlay/use-background-tabs-history.ts
|
|
3148
|
-
import { useRef as
|
|
3367
|
+
import { useRef as useRef12 } from "react";
|
|
3149
3368
|
import {
|
|
3150
3369
|
backgroundColorOverlayPropTypeUtil,
|
|
3151
3370
|
backgroundGradientOverlayPropTypeUtil as backgroundGradientOverlayPropTypeUtil2,
|
|
@@ -3170,7 +3389,7 @@ var useBackgroundTabsHistory = ({
|
|
|
3170
3389
|
return "image";
|
|
3171
3390
|
};
|
|
3172
3391
|
const { getTabsProps, getTabProps, getTabPanelProps } = useTabs(getCurrentOverlayType());
|
|
3173
|
-
const valuesHistory =
|
|
3392
|
+
const valuesHistory = useRef12({
|
|
3174
3393
|
image: initialBackgroundImageOverlay,
|
|
3175
3394
|
color: initialBackgroundColorOverlay2,
|
|
3176
3395
|
gradient: initialBackgroundGradientOverlay2
|
|
@@ -3238,21 +3457,21 @@ var getInitialBackgroundOverlay = () => ({
|
|
|
3238
3457
|
}
|
|
3239
3458
|
});
|
|
3240
3459
|
var backgroundResolutionOptions = [
|
|
3241
|
-
{ label:
|
|
3242
|
-
{ label:
|
|
3243
|
-
{ label:
|
|
3244
|
-
{ label:
|
|
3460
|
+
{ label: __20("Thumbnail - 150 x 150", "elementor"), value: "thumbnail" },
|
|
3461
|
+
{ label: __20("Medium - 300 x 300", "elementor"), value: "medium" },
|
|
3462
|
+
{ label: __20("Large 1024 x 1024", "elementor"), value: "large" },
|
|
3463
|
+
{ label: __20("Full", "elementor"), value: "full" }
|
|
3245
3464
|
];
|
|
3246
3465
|
var BackgroundOverlayRepeaterControl = createControl(() => {
|
|
3247
3466
|
const { propType, value: overlayValues, setValue, disabled } = useBoundProp(backgroundOverlayPropTypeUtil);
|
|
3248
|
-
return /* @__PURE__ */
|
|
3467
|
+
return /* @__PURE__ */ React52.createElement(PropProvider, { propType, value: overlayValues, setValue, isDisabled: () => disabled }, /* @__PURE__ */ React52.createElement(
|
|
3249
3468
|
Repeater,
|
|
3250
3469
|
{
|
|
3251
3470
|
openOnAdd: true,
|
|
3252
3471
|
disabled,
|
|
3253
3472
|
values: overlayValues ?? [],
|
|
3254
3473
|
setValues: setValue,
|
|
3255
|
-
label:
|
|
3474
|
+
label: __20("Overlay", "elementor"),
|
|
3256
3475
|
itemSettings: {
|
|
3257
3476
|
Icon: ItemIcon3,
|
|
3258
3477
|
Label: ItemLabel3,
|
|
@@ -3263,7 +3482,7 @@ var BackgroundOverlayRepeaterControl = createControl(() => {
|
|
|
3263
3482
|
));
|
|
3264
3483
|
});
|
|
3265
3484
|
var ItemContent3 = ({ anchorEl = null, bind }) => {
|
|
3266
|
-
return /* @__PURE__ */
|
|
3485
|
+
return /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React52.createElement(Content3, { anchorEl }));
|
|
3267
3486
|
};
|
|
3268
3487
|
var Content3 = ({ anchorEl }) => {
|
|
3269
3488
|
const { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory({
|
|
@@ -3271,27 +3490,27 @@ var Content3 = ({ anchorEl }) => {
|
|
|
3271
3490
|
color: initialBackgroundColorOverlay.value,
|
|
3272
3491
|
gradient: initialBackgroundGradientOverlay.value
|
|
3273
3492
|
});
|
|
3274
|
-
return /* @__PURE__ */
|
|
3493
|
+
return /* @__PURE__ */ React52.createElement(Box8, { sx: { width: "100%" } }, /* @__PURE__ */ React52.createElement(Box8, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React52.createElement(
|
|
3275
3494
|
Tabs,
|
|
3276
3495
|
{
|
|
3277
3496
|
size: "small",
|
|
3278
3497
|
variant: "fullWidth",
|
|
3279
3498
|
...getTabsProps(),
|
|
3280
|
-
"aria-label":
|
|
3499
|
+
"aria-label": __20("Background Overlay", "elementor")
|
|
3281
3500
|
},
|
|
3282
|
-
/* @__PURE__ */
|
|
3283
|
-
/* @__PURE__ */
|
|
3284
|
-
/* @__PURE__ */
|
|
3285
|
-
)), /* @__PURE__ */
|
|
3501
|
+
/* @__PURE__ */ React52.createElement(Tab, { label: __20("Image", "elementor"), ...getTabProps("image") }),
|
|
3502
|
+
/* @__PURE__ */ React52.createElement(Tab, { label: __20("Gradient", "elementor"), ...getTabProps("gradient") }),
|
|
3503
|
+
/* @__PURE__ */ React52.createElement(Tab, { label: __20("Color", "elementor"), ...getTabProps("color") })
|
|
3504
|
+
)), /* @__PURE__ */ React52.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React52.createElement(PopoverContent, null, /* @__PURE__ */ React52.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React52.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("gradient") }, /* @__PURE__ */ React52.createElement(BackgroundGradientColorControl, null)), /* @__PURE__ */ React52.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("color") }, /* @__PURE__ */ React52.createElement(PopoverContent, null, /* @__PURE__ */ React52.createElement(ColorOverlayContent, { anchorEl }))));
|
|
3286
3505
|
};
|
|
3287
3506
|
var ItemIcon3 = ({ value }) => {
|
|
3288
3507
|
switch (value.$$type) {
|
|
3289
3508
|
case "background-image-overlay":
|
|
3290
|
-
return /* @__PURE__ */
|
|
3509
|
+
return /* @__PURE__ */ React52.createElement(ItemIconImage, { value });
|
|
3291
3510
|
case "background-color-overlay":
|
|
3292
|
-
return /* @__PURE__ */
|
|
3511
|
+
return /* @__PURE__ */ React52.createElement(ItemIconColor, { value });
|
|
3293
3512
|
case "background-gradient-overlay":
|
|
3294
|
-
return /* @__PURE__ */
|
|
3513
|
+
return /* @__PURE__ */ React52.createElement(ItemIconGradient, { value });
|
|
3295
3514
|
default:
|
|
3296
3515
|
return null;
|
|
3297
3516
|
}
|
|
@@ -3304,11 +3523,11 @@ var extractColorFrom = (prop) => {
|
|
|
3304
3523
|
};
|
|
3305
3524
|
var ItemIconColor = ({ value: prop }) => {
|
|
3306
3525
|
const color = extractColorFrom(prop);
|
|
3307
|
-
return /* @__PURE__ */
|
|
3526
|
+
return /* @__PURE__ */ React52.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: color });
|
|
3308
3527
|
};
|
|
3309
3528
|
var ItemIconImage = ({ value }) => {
|
|
3310
3529
|
const { imageUrl } = useImage(value);
|
|
3311
|
-
return /* @__PURE__ */
|
|
3530
|
+
return /* @__PURE__ */ React52.createElement(
|
|
3312
3531
|
CardMedia3,
|
|
3313
3532
|
{
|
|
3314
3533
|
image: imageUrl,
|
|
@@ -3323,41 +3542,41 @@ var ItemIconImage = ({ value }) => {
|
|
|
3323
3542
|
};
|
|
3324
3543
|
var ItemIconGradient = ({ value }) => {
|
|
3325
3544
|
const gradient = getGradientValue(value);
|
|
3326
|
-
return /* @__PURE__ */
|
|
3545
|
+
return /* @__PURE__ */ React52.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: gradient });
|
|
3327
3546
|
};
|
|
3328
3547
|
var ItemLabel3 = ({ value }) => {
|
|
3329
3548
|
switch (value.$$type) {
|
|
3330
3549
|
case "background-image-overlay":
|
|
3331
|
-
return /* @__PURE__ */
|
|
3550
|
+
return /* @__PURE__ */ React52.createElement(ItemLabelImage, { value });
|
|
3332
3551
|
case "background-color-overlay":
|
|
3333
|
-
return /* @__PURE__ */
|
|
3552
|
+
return /* @__PURE__ */ React52.createElement(ItemLabelColor, { value });
|
|
3334
3553
|
case "background-gradient-overlay":
|
|
3335
|
-
return /* @__PURE__ */
|
|
3554
|
+
return /* @__PURE__ */ React52.createElement(ItemLabelGradient, { value });
|
|
3336
3555
|
default:
|
|
3337
3556
|
return null;
|
|
3338
3557
|
}
|
|
3339
3558
|
};
|
|
3340
3559
|
var ItemLabelColor = ({ value: prop }) => {
|
|
3341
3560
|
const color = extractColorFrom(prop);
|
|
3342
|
-
return /* @__PURE__ */
|
|
3561
|
+
return /* @__PURE__ */ React52.createElement("span", null, color);
|
|
3343
3562
|
};
|
|
3344
3563
|
var ItemLabelImage = ({ value }) => {
|
|
3345
3564
|
const { imageTitle } = useImage(value);
|
|
3346
|
-
return /* @__PURE__ */
|
|
3565
|
+
return /* @__PURE__ */ React52.createElement("span", null, imageTitle);
|
|
3347
3566
|
};
|
|
3348
3567
|
var ItemLabelGradient = ({ value }) => {
|
|
3349
3568
|
if (value.value.type.value === "linear") {
|
|
3350
|
-
return /* @__PURE__ */
|
|
3569
|
+
return /* @__PURE__ */ React52.createElement("span", null, __20("Linear Gradient", "elementor"));
|
|
3351
3570
|
}
|
|
3352
|
-
return /* @__PURE__ */
|
|
3571
|
+
return /* @__PURE__ */ React52.createElement("span", null, __20("Radial Gradient", "elementor"));
|
|
3353
3572
|
};
|
|
3354
3573
|
var ColorOverlayContent = ({ anchorEl }) => {
|
|
3355
3574
|
const propContext = useBoundProp(backgroundColorOverlayPropTypeUtil2);
|
|
3356
|
-
return /* @__PURE__ */
|
|
3575
|
+
return /* @__PURE__ */ React52.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React52.createElement(ColorControl, { anchorEl })));
|
|
3357
3576
|
};
|
|
3358
3577
|
var ImageOverlayContent = () => {
|
|
3359
3578
|
const propContext = useBoundProp(backgroundImageOverlayPropTypeUtil2);
|
|
3360
|
-
return /* @__PURE__ */
|
|
3579
|
+
return /* @__PURE__ */ React52.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React52.createElement(ImageControl, { sizes: backgroundResolutionOptions })), /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React52.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React52.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React52.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React52.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React52.createElement(BackgroundImageOverlayAttachment, null)));
|
|
3361
3580
|
};
|
|
3362
3581
|
var StyledUnstableColorIndicator = styled5(UnstableColorIndicator2)(({ theme }) => ({
|
|
3363
3582
|
borderRadius: `${theme.shape.borderRadius / 2}px`
|
|
@@ -3395,28 +3614,16 @@ var getGradientValue = (value) => {
|
|
|
3395
3614
|
// src/controls/background-control/background-control.tsx
|
|
3396
3615
|
var BackgroundControl = createControl(() => {
|
|
3397
3616
|
const propContext = useBoundProp(backgroundPropTypeUtil);
|
|
3398
|
-
const isUsingNestedProps =
|
|
3399
|
-
const colorLabel =
|
|
3400
|
-
return /* @__PURE__ */
|
|
3401
|
-
});
|
|
3402
|
-
|
|
3403
|
-
// src/controls/switch-control.tsx
|
|
3404
|
-
import * as React51 from "react";
|
|
3405
|
-
import { booleanPropTypeUtil as booleanPropTypeUtil2 } from "@elementor/editor-props";
|
|
3406
|
-
import { Switch as Switch2 } from "@elementor/ui";
|
|
3407
|
-
var SwitchControl2 = createControl(() => {
|
|
3408
|
-
const { value, setValue, disabled } = useBoundProp(booleanPropTypeUtil2);
|
|
3409
|
-
const handleChange = (event) => {
|
|
3410
|
-
setValue(event.target.checked);
|
|
3411
|
-
};
|
|
3412
|
-
return /* @__PURE__ */ React51.createElement("div", { style: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React51.createElement(Switch2, { checked: !!value, onChange: handleChange, size: "small", disabled }));
|
|
3617
|
+
const isUsingNestedProps = isExperimentActive5("e_v_3_30");
|
|
3618
|
+
const colorLabel = __21("Color", "elementor");
|
|
3619
|
+
return /* @__PURE__ */ React53.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React53.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React53.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React53.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React53.createElement(Grid16, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React53.createElement(Grid16, { item: true, xs: 6 }, isUsingNestedProps ? /* @__PURE__ */ React53.createElement(ControlLabel, null, colorLabel) : /* @__PURE__ */ React53.createElement(ControlFormLabel, null, colorLabel)), /* @__PURE__ */ React53.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React53.createElement(ColorControl, null)))));
|
|
3413
3620
|
});
|
|
3414
3621
|
|
|
3415
3622
|
// src/controls/repeatable-control.tsx
|
|
3416
|
-
import * as
|
|
3623
|
+
import * as React54 from "react";
|
|
3417
3624
|
import { useMemo as useMemo4 } from "react";
|
|
3418
3625
|
import { createArrayPropUtils } from "@elementor/editor-props";
|
|
3419
|
-
import { Box as
|
|
3626
|
+
import { Box as Box9 } from "@elementor/ui";
|
|
3420
3627
|
|
|
3421
3628
|
// src/hooks/use-repeatable-control-context.ts
|
|
3422
3629
|
import { createContext as createContext6, useContext as useContext6 } from "react";
|
|
@@ -3430,6 +3637,7 @@ var useRepeatableControlContext = () => {
|
|
|
3430
3637
|
};
|
|
3431
3638
|
|
|
3432
3639
|
// src/controls/repeatable-control.tsx
|
|
3640
|
+
var PLACEHOLDER_REGEX = /\$\{([^}]+)\}/g;
|
|
3433
3641
|
var RepeatableControl = createControl(
|
|
3434
3642
|
({
|
|
3435
3643
|
repeaterLabel,
|
|
@@ -3448,16 +3656,16 @@ var RepeatableControl = createControl(
|
|
|
3448
3656
|
() => createArrayPropUtils(childPropTypeUtil.key, childPropTypeUtil.schema),
|
|
3449
3657
|
[childPropTypeUtil.key, childPropTypeUtil.schema]
|
|
3450
3658
|
);
|
|
3659
|
+
const contextValue = useMemo4(
|
|
3660
|
+
() => ({
|
|
3661
|
+
...childControlConfig,
|
|
3662
|
+
placeholder: placeholder || "",
|
|
3663
|
+
patternLabel: patternLabel || ""
|
|
3664
|
+
}),
|
|
3665
|
+
[childControlConfig, placeholder, patternLabel]
|
|
3666
|
+
);
|
|
3451
3667
|
const { propType, value, setValue } = useBoundProp(childArrayPropTypeUtil);
|
|
3452
|
-
|
|
3453
|
-
const pattern = patternLabel || "";
|
|
3454
|
-
const finalLabel = interpolate(pattern, itemValue.value);
|
|
3455
|
-
if (finalLabel) {
|
|
3456
|
-
return /* @__PURE__ */ React52.createElement("span", null, finalLabel);
|
|
3457
|
-
}
|
|
3458
|
-
return /* @__PURE__ */ React52.createElement(Box8, { component: "span", color: "text.tertiary" }, placeholder);
|
|
3459
|
-
};
|
|
3460
|
-
return /* @__PURE__ */ React52.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React52.createElement(RepeatableControlContext.Provider, { value: childControlConfig }, /* @__PURE__ */ React52.createElement(
|
|
3668
|
+
return /* @__PURE__ */ React54.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React54.createElement(RepeatableControlContext.Provider, { value: contextValue }, /* @__PURE__ */ React54.createElement(
|
|
3461
3669
|
Repeater,
|
|
3462
3670
|
{
|
|
3463
3671
|
openOnAdd: true,
|
|
@@ -3478,69 +3686,140 @@ var RepeatableControl = createControl(
|
|
|
3478
3686
|
}
|
|
3479
3687
|
);
|
|
3480
3688
|
var ItemContent4 = ({ bind }) => {
|
|
3481
|
-
return /* @__PURE__ */
|
|
3689
|
+
return /* @__PURE__ */ React54.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React54.createElement(Content4, null));
|
|
3482
3690
|
};
|
|
3483
|
-
var ItemIcon4 = () => /* @__PURE__ */
|
|
3691
|
+
var ItemIcon4 = () => /* @__PURE__ */ React54.createElement(React54.Fragment, null);
|
|
3484
3692
|
var Content4 = () => {
|
|
3485
3693
|
const { component: ChildControl, props = {} } = useRepeatableControlContext();
|
|
3486
|
-
return /* @__PURE__ */
|
|
3694
|
+
return /* @__PURE__ */ React54.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React54.createElement(PopoverGridContainer, null, /* @__PURE__ */ React54.createElement(ChildControl, { ...props })));
|
|
3487
3695
|
};
|
|
3488
3696
|
var interpolate = (template, data) => {
|
|
3489
|
-
if (
|
|
3490
|
-
return
|
|
3697
|
+
if (!data) {
|
|
3698
|
+
return template;
|
|
3699
|
+
}
|
|
3700
|
+
return template.replace(PLACEHOLDER_REGEX, (_, path) => {
|
|
3701
|
+
const value = getNestedValue(data, path);
|
|
3702
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
3703
|
+
if (value.name) {
|
|
3704
|
+
return value.name;
|
|
3705
|
+
}
|
|
3706
|
+
return JSON.stringify(value);
|
|
3707
|
+
}
|
|
3708
|
+
if (Array.isArray(value)) {
|
|
3709
|
+
return value.join(", ");
|
|
3710
|
+
}
|
|
3711
|
+
return String(value ?? "");
|
|
3712
|
+
});
|
|
3713
|
+
};
|
|
3714
|
+
var getNestedValue = (obj, path) => {
|
|
3715
|
+
return path.split(".").reduce((current, key) => {
|
|
3716
|
+
if (current && typeof current === "object") {
|
|
3717
|
+
return current[key];
|
|
3718
|
+
}
|
|
3719
|
+
return {};
|
|
3720
|
+
}, obj);
|
|
3721
|
+
};
|
|
3722
|
+
var isEmptyValue = (val) => {
|
|
3723
|
+
if (typeof val === "string") {
|
|
3724
|
+
return val.trim() === "";
|
|
3725
|
+
}
|
|
3726
|
+
if (Number.isNaN(val)) {
|
|
3727
|
+
return true;
|
|
3491
3728
|
}
|
|
3492
|
-
|
|
3729
|
+
if (Array.isArray(val)) {
|
|
3730
|
+
return val.length === 0;
|
|
3731
|
+
}
|
|
3732
|
+
if (typeof val === "object" && val !== null) {
|
|
3733
|
+
return Object.keys(val).length === 0;
|
|
3734
|
+
}
|
|
3735
|
+
return false;
|
|
3736
|
+
};
|
|
3737
|
+
var shouldShowPlaceholder = (pattern, data) => {
|
|
3738
|
+
const propertyPaths = getAllProperties(pattern);
|
|
3739
|
+
const values = propertyPaths.map((path) => getNestedValue(data, path));
|
|
3740
|
+
if (values.length === 0) {
|
|
3741
|
+
return false;
|
|
3742
|
+
}
|
|
3743
|
+
if (values.some((value) => value === null || value === void 0)) {
|
|
3744
|
+
return true;
|
|
3745
|
+
}
|
|
3746
|
+
if (values.every(isEmptyValue)) {
|
|
3747
|
+
return true;
|
|
3748
|
+
}
|
|
3749
|
+
return false;
|
|
3750
|
+
};
|
|
3751
|
+
var ItemLabel4 = ({ value }) => {
|
|
3752
|
+
const { placeholder, patternLabel } = useRepeatableControlContext();
|
|
3753
|
+
const label = shouldShowPlaceholder(patternLabel, value) ? placeholder : interpolate(patternLabel, value);
|
|
3754
|
+
return /* @__PURE__ */ React54.createElement(Box9, { component: "span", color: "text.tertiary" }, label);
|
|
3755
|
+
};
|
|
3756
|
+
var getAllProperties = (pattern) => {
|
|
3757
|
+
const properties = pattern.match(PLACEHOLDER_REGEX)?.map((match) => match.slice(2, -1)) || [];
|
|
3758
|
+
return properties;
|
|
3493
3759
|
};
|
|
3494
3760
|
|
|
3495
3761
|
// src/controls/key-value-control.tsx
|
|
3496
|
-
import * as
|
|
3762
|
+
import * as React55 from "react";
|
|
3497
3763
|
import { useMemo as useMemo5, useState as useState11 } from "react";
|
|
3498
|
-
import {
|
|
3499
|
-
|
|
3500
|
-
|
|
3764
|
+
import {
|
|
3765
|
+
isTransformable,
|
|
3766
|
+
keyValuePropTypeUtil,
|
|
3767
|
+
stringPropTypeUtil as stringPropTypeUtil11
|
|
3768
|
+
} from "@elementor/editor-props";
|
|
3769
|
+
import { FormHelperText, FormLabel as FormLabel3, Grid as Grid17 } from "@elementor/ui";
|
|
3770
|
+
import { __ as __22 } from "@wordpress/i18n";
|
|
3501
3771
|
var KeyValueControl = createControl((props = {}) => {
|
|
3502
|
-
const { value, setValue } = useBoundProp(keyValuePropTypeUtil);
|
|
3503
|
-
const [keyError, setKeyError] = useState11(
|
|
3504
|
-
const [valueError, setValueError] = useState11(
|
|
3772
|
+
const { value, setValue, ...propContext } = useBoundProp(keyValuePropTypeUtil);
|
|
3773
|
+
const [keyError, setKeyError] = useState11("");
|
|
3774
|
+
const [valueError, setValueError] = useState11("");
|
|
3505
3775
|
const [sessionState, setSessionState] = useState11({
|
|
3506
3776
|
key: value?.key?.value || "",
|
|
3507
3777
|
value: value?.value?.value || ""
|
|
3508
3778
|
});
|
|
3509
|
-
const keyLabel = props.keyName ||
|
|
3510
|
-
const valueLabel = props.valueName ||
|
|
3779
|
+
const keyLabel = props.keyName || __22("Key", "elementor");
|
|
3780
|
+
const valueLabel = props.valueName || __22("Value", "elementor");
|
|
3511
3781
|
const [keyRegex, valueRegex, errMsg] = useMemo5(
|
|
3512
3782
|
() => [
|
|
3513
3783
|
props.regexKey ? new RegExp(props.regexKey) : void 0,
|
|
3514
3784
|
props.regexValue ? new RegExp(props.regexValue) : void 0,
|
|
3515
|
-
props.validationErrorMessage ||
|
|
3785
|
+
props.validationErrorMessage || __22("Invalid Format", "elementor")
|
|
3516
3786
|
],
|
|
3517
3787
|
[props.regexKey, props.regexValue, props.validationErrorMessage]
|
|
3518
3788
|
);
|
|
3519
3789
|
const validate = (newValue, fieldType) => {
|
|
3520
3790
|
if (fieldType === "key" && keyRegex) {
|
|
3521
3791
|
const isValid = keyRegex.test(newValue);
|
|
3522
|
-
setKeyError(isValid ?
|
|
3792
|
+
setKeyError(isValid ? "" : errMsg);
|
|
3523
3793
|
return isValid;
|
|
3524
3794
|
} else if (fieldType === "value" && valueRegex) {
|
|
3525
3795
|
const isValid = valueRegex.test(newValue);
|
|
3526
|
-
setValueError(isValid ?
|
|
3796
|
+
setValueError(isValid ? "" : errMsg);
|
|
3527
3797
|
return isValid;
|
|
3528
3798
|
}
|
|
3529
3799
|
return true;
|
|
3530
3800
|
};
|
|
3531
|
-
const handleChange = (
|
|
3532
|
-
const
|
|
3801
|
+
const handleChange = (newValue, options, meta) => {
|
|
3802
|
+
const fieldType = meta?.bind;
|
|
3803
|
+
if (!fieldType) {
|
|
3804
|
+
return;
|
|
3805
|
+
}
|
|
3806
|
+
const newChangedValue = newValue[fieldType];
|
|
3807
|
+
if (isTransformable(newChangedValue) && newChangedValue.$$type === "dynamic") {
|
|
3808
|
+
setValue({
|
|
3809
|
+
...value,
|
|
3810
|
+
[fieldType]: newChangedValue
|
|
3811
|
+
});
|
|
3812
|
+
return;
|
|
3813
|
+
}
|
|
3814
|
+
const extractedValue = stringPropTypeUtil11.extract(newChangedValue);
|
|
3533
3815
|
setSessionState((prev) => ({
|
|
3534
3816
|
...prev,
|
|
3535
|
-
[fieldType]:
|
|
3817
|
+
[fieldType]: extractedValue
|
|
3536
3818
|
}));
|
|
3537
|
-
if (validate(
|
|
3819
|
+
if (extractedValue && validate(extractedValue, fieldType)) {
|
|
3538
3820
|
setValue({
|
|
3539
3821
|
...value,
|
|
3540
|
-
[fieldType]:
|
|
3541
|
-
value: newValue,
|
|
3542
|
-
$$type: "string"
|
|
3543
|
-
}
|
|
3822
|
+
[fieldType]: newChangedValue
|
|
3544
3823
|
});
|
|
3545
3824
|
} else {
|
|
3546
3825
|
setValue({
|
|
@@ -3552,62 +3831,46 @@ var KeyValueControl = createControl((props = {}) => {
|
|
|
3552
3831
|
});
|
|
3553
3832
|
}
|
|
3554
3833
|
};
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
return /* @__PURE__ */ React53.createElement(ControlActions, null, /* @__PURE__ */ React53.createElement(Grid16, { container: true, gap: 1.5 }, /* @__PURE__ */ React53.createElement(Grid16, { item: true, xs: 12 }, /* @__PURE__ */ React53.createElement(FormLabel3, { size: "tiny" }, keyLabel), /* @__PURE__ */ React53.createElement(
|
|
3558
|
-
TextField9,
|
|
3834
|
+
return /* @__PURE__ */ React55.createElement(PropProvider, { ...propContext, value, setValue: handleChange }, /* @__PURE__ */ React55.createElement(Grid17, { container: true, gap: 1.5 }, /* @__PURE__ */ React55.createElement(Grid17, { item: true, xs: 12 }, /* @__PURE__ */ React55.createElement(FormLabel3, { size: "tiny" }, keyLabel), /* @__PURE__ */ React55.createElement(PropKeyProvider, { bind: "key" }, /* @__PURE__ */ React55.createElement(TextControl, { inputValue: sessionState.key, error: !!keyError, sx: { pt: 1 } })), !!keyError && /* @__PURE__ */ React55.createElement(FormHelperText, { error: true }, keyError)), /* @__PURE__ */ React55.createElement(Grid17, { item: true, xs: 12 }, /* @__PURE__ */ React55.createElement(FormLabel3, { size: "tiny" }, valueLabel), /* @__PURE__ */ React55.createElement(PropKeyProvider, { bind: "value" }, /* @__PURE__ */ React55.createElement(
|
|
3835
|
+
TextControl,
|
|
3559
3836
|
{
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
value: sessionState.key,
|
|
3565
|
-
onChange: (e) => handleChange(e, "key"),
|
|
3566
|
-
error: isKeyInvalid
|
|
3837
|
+
inputValue: sessionState.value,
|
|
3838
|
+
error: !!valueError,
|
|
3839
|
+
inputDisabled: !!keyError,
|
|
3840
|
+
sx: { pt: 1 }
|
|
3567
3841
|
}
|
|
3568
|
-
),
|
|
3569
|
-
TextField9,
|
|
3570
|
-
{
|
|
3571
|
-
sx: { pt: 1 },
|
|
3572
|
-
size: "tiny",
|
|
3573
|
-
fullWidth: true,
|
|
3574
|
-
value: sessionState.value,
|
|
3575
|
-
onChange: (e) => handleChange(e, "value"),
|
|
3576
|
-
disabled: isKeyInvalid,
|
|
3577
|
-
error: isValueInvalid
|
|
3578
|
-
}
|
|
3579
|
-
), isValueInvalid && /* @__PURE__ */ React53.createElement(FormHelperText, { error: true }, valueError))));
|
|
3842
|
+
)), !!valueError && /* @__PURE__ */ React55.createElement(FormHelperText, { error: true }, valueError))));
|
|
3580
3843
|
});
|
|
3581
3844
|
|
|
3582
3845
|
// src/controls/position-control.tsx
|
|
3583
|
-
import * as
|
|
3846
|
+
import * as React56 from "react";
|
|
3584
3847
|
import { useMemo as useMemo6 } from "react";
|
|
3585
|
-
import { positionPropTypeUtil, stringPropTypeUtil as
|
|
3848
|
+
import { positionPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil12 } from "@elementor/editor-props";
|
|
3586
3849
|
import { MenuListItem as MenuListItem6 } from "@elementor/editor-ui";
|
|
3587
|
-
import { isExperimentActive as
|
|
3850
|
+
import { isExperimentActive as isExperimentActive6 } from "@elementor/editor-v1-adapters";
|
|
3588
3851
|
import { LetterXIcon as LetterXIcon2, LetterYIcon as LetterYIcon2 } from "@elementor/icons";
|
|
3589
|
-
import { Grid as
|
|
3590
|
-
import { __ as
|
|
3852
|
+
import { Grid as Grid18, Select as Select5 } from "@elementor/ui";
|
|
3853
|
+
import { __ as __23 } from "@wordpress/i18n";
|
|
3591
3854
|
var positionOptions = [
|
|
3592
|
-
{ label:
|
|
3593
|
-
{ label:
|
|
3594
|
-
{ label:
|
|
3595
|
-
{ label:
|
|
3596
|
-
{ label:
|
|
3597
|
-
{ label:
|
|
3598
|
-
{ label:
|
|
3599
|
-
{ label:
|
|
3600
|
-
{ label:
|
|
3855
|
+
{ label: __23("Center center", "elementor"), value: "center center" },
|
|
3856
|
+
{ label: __23("Center left", "elementor"), value: "center left" },
|
|
3857
|
+
{ label: __23("Center right", "elementor"), value: "center right" },
|
|
3858
|
+
{ label: __23("Top center", "elementor"), value: "top center" },
|
|
3859
|
+
{ label: __23("Top left", "elementor"), value: "top left" },
|
|
3860
|
+
{ label: __23("Top right", "elementor"), value: "top right" },
|
|
3861
|
+
{ label: __23("Bottom center", "elementor"), value: "bottom center" },
|
|
3862
|
+
{ label: __23("Bottom left", "elementor"), value: "bottom left" },
|
|
3863
|
+
{ label: __23("Bottom right", "elementor"), value: "bottom right" }
|
|
3601
3864
|
];
|
|
3602
3865
|
var PositionControl = () => {
|
|
3603
3866
|
const positionContext = useBoundProp(positionPropTypeUtil);
|
|
3604
|
-
const stringPropContext = useBoundProp(
|
|
3605
|
-
const isVersion331Active =
|
|
3867
|
+
const stringPropContext = useBoundProp(stringPropTypeUtil12);
|
|
3868
|
+
const isVersion331Active = isExperimentActive6("e_v_3_31");
|
|
3606
3869
|
const isCustom = !!positionContext.value && isVersion331Active;
|
|
3607
3870
|
const availablePositionOptions = useMemo6(() => {
|
|
3608
3871
|
const options = [...positionOptions];
|
|
3609
3872
|
if (isVersion331Active) {
|
|
3610
|
-
options.push({ label:
|
|
3873
|
+
options.push({ label: __23("Custom", "elementor"), value: "custom" });
|
|
3611
3874
|
}
|
|
3612
3875
|
return options;
|
|
3613
3876
|
}, [isVersion331Active]);
|
|
@@ -3619,7 +3882,7 @@ var PositionControl = () => {
|
|
|
3619
3882
|
stringPropContext.setValue(value);
|
|
3620
3883
|
}
|
|
3621
3884
|
};
|
|
3622
|
-
return /* @__PURE__ */
|
|
3885
|
+
return /* @__PURE__ */ React56.createElement(Grid18, { container: true, spacing: 1.5 }, /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 12 }, /* @__PURE__ */ React56.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(ControlFormLabel, null, __23("Object position", "elementor"))), /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React56.createElement(
|
|
3623
3886
|
Select5,
|
|
3624
3887
|
{
|
|
3625
3888
|
size: "tiny",
|
|
@@ -3628,9 +3891,133 @@ var PositionControl = () => {
|
|
|
3628
3891
|
onChange: handlePositionChange,
|
|
3629
3892
|
fullWidth: true
|
|
3630
3893
|
},
|
|
3631
|
-
availablePositionOptions.map(({ label, value }) => /* @__PURE__ */
|
|
3632
|
-
)))), isCustom && /* @__PURE__ */
|
|
3894
|
+
availablePositionOptions.map(({ label, value }) => /* @__PURE__ */ React56.createElement(MenuListItem6, { key: value, value: value ?? "" }, label))
|
|
3895
|
+
)))), isCustom && /* @__PURE__ */ React56.createElement(PropProvider, { ...positionContext }, /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 12 }, /* @__PURE__ */ React56.createElement(Grid18, { container: true, spacing: 1.5 }, /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React56.createElement(SizeControl, { startIcon: /* @__PURE__ */ React56.createElement(LetterXIcon2, { fontSize: "tiny" }) }))), /* @__PURE__ */ React56.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React56.createElement(SizeControl, { startIcon: /* @__PURE__ */ React56.createElement(LetterYIcon2, { fontSize: "tiny" }) })))))));
|
|
3633
3896
|
};
|
|
3897
|
+
|
|
3898
|
+
// src/controls/transform-control/transform-repeater-control.tsx
|
|
3899
|
+
import * as React62 from "react";
|
|
3900
|
+
import { transformPropTypeUtil } from "@elementor/editor-props";
|
|
3901
|
+
import { __ as __27 } from "@wordpress/i18n";
|
|
3902
|
+
|
|
3903
|
+
// src/controls/transform-control/transform-content.tsx
|
|
3904
|
+
import * as React59 from "react";
|
|
3905
|
+
import { Box as Box10, Tab as Tab2, TabPanel as TabPanel2, Tabs as Tabs2, useTabs as useTabs2 } from "@elementor/ui";
|
|
3906
|
+
import { __ as __25 } from "@wordpress/i18n";
|
|
3907
|
+
|
|
3908
|
+
// src/controls/transform-control/functions/move.tsx
|
|
3909
|
+
import * as React58 from "react";
|
|
3910
|
+
import { useRef as useRef13 } from "react";
|
|
3911
|
+
import { moveTransformPropTypeUtil } from "@elementor/editor-props";
|
|
3912
|
+
import { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from "@elementor/icons";
|
|
3913
|
+
import { Grid as Grid20 } from "@elementor/ui";
|
|
3914
|
+
import { __ as __24 } from "@wordpress/i18n";
|
|
3915
|
+
|
|
3916
|
+
// src/controls/transform-control/functions/axis-row.tsx
|
|
3917
|
+
import * as React57 from "react";
|
|
3918
|
+
import { Grid as Grid19 } from "@elementor/ui";
|
|
3919
|
+
var AxisRow = ({ label, bindValue, startIcon, anchorRef }) => {
|
|
3920
|
+
return /* @__PURE__ */ React57.createElement(Grid19, { item: true, xs: 12 }, /* @__PURE__ */ React57.createElement(PopoverGridContainer, { ref: anchorRef }, /* @__PURE__ */ React57.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React57.createElement(ControlLabel, null, label)), /* @__PURE__ */ React57.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React57.createElement(PropKeyProvider, { bind: bindValue }, /* @__PURE__ */ React57.createElement(SizeControl, { anchorRef, startIcon })))));
|
|
3921
|
+
};
|
|
3922
|
+
|
|
3923
|
+
// src/controls/transform-control/functions/move.tsx
|
|
3924
|
+
var moveAxisControls = [
|
|
3925
|
+
{
|
|
3926
|
+
label: __24("Move X", "elementor"),
|
|
3927
|
+
bindValue: "x",
|
|
3928
|
+
startIcon: /* @__PURE__ */ React58.createElement(ArrowRightIcon, { fontSize: "tiny" })
|
|
3929
|
+
},
|
|
3930
|
+
{
|
|
3931
|
+
label: __24("Move Y", "elementor"),
|
|
3932
|
+
bindValue: "y",
|
|
3933
|
+
startIcon: /* @__PURE__ */ React58.createElement(ArrowDownSmallIcon, { fontSize: "tiny" })
|
|
3934
|
+
},
|
|
3935
|
+
{
|
|
3936
|
+
label: __24("Move Z", "elementor"),
|
|
3937
|
+
bindValue: "z",
|
|
3938
|
+
startIcon: /* @__PURE__ */ React58.createElement(ArrowDownLeftIcon, { fontSize: "tiny" })
|
|
3939
|
+
}
|
|
3940
|
+
];
|
|
3941
|
+
var Move = () => {
|
|
3942
|
+
const context = useBoundProp(moveTransformPropTypeUtil);
|
|
3943
|
+
const rowRef = useRef13(null);
|
|
3944
|
+
return /* @__PURE__ */ React58.createElement(Grid20, { container: true, spacing: 1.5 }, /* @__PURE__ */ React58.createElement(PropProvider, { ...context }, /* @__PURE__ */ React58.createElement(PropKeyProvider, { bind: "transform-move" }, moveAxisControls.map((control) => /* @__PURE__ */ React58.createElement(AxisRow, { key: control.bindValue, ...control, anchorRef: rowRef })))));
|
|
3945
|
+
};
|
|
3946
|
+
|
|
3947
|
+
// src/controls/transform-control/transform-content.tsx
|
|
3948
|
+
var TransformContent = ({ bind }) => {
|
|
3949
|
+
const { getTabsProps, getTabProps, getTabPanelProps } = useTabs2("transform-move");
|
|
3950
|
+
return /* @__PURE__ */ React59.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React59.createElement(PopoverContent, null, /* @__PURE__ */ React59.createElement(Box10, { sx: { width: "100%" } }, /* @__PURE__ */ React59.createElement(Box10, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React59.createElement(
|
|
3951
|
+
Tabs2,
|
|
3952
|
+
{
|
|
3953
|
+
size: "small",
|
|
3954
|
+
variant: "fullWidth",
|
|
3955
|
+
...getTabsProps(),
|
|
3956
|
+
"aria-label": __25("Transform", "elementor")
|
|
3957
|
+
},
|
|
3958
|
+
/* @__PURE__ */ React59.createElement(Tab2, { label: __25("Move", "elementor"), ...getTabProps("transform-move") })
|
|
3959
|
+
)), /* @__PURE__ */ React59.createElement(TabPanel2, { sx: { p: 1.5 }, ...getTabPanelProps("transform-move") }, /* @__PURE__ */ React59.createElement(Move, null)))));
|
|
3960
|
+
};
|
|
3961
|
+
|
|
3962
|
+
// src/controls/transform-control/transform-icon.tsx
|
|
3963
|
+
import * as React60 from "react";
|
|
3964
|
+
import { ArrowsMaximizeIcon as ArrowsMaximizeIcon2 } from "@elementor/icons";
|
|
3965
|
+
var TransformIcon = ({ value }) => {
|
|
3966
|
+
switch (value.$$type) {
|
|
3967
|
+
case "transform-move":
|
|
3968
|
+
return /* @__PURE__ */ React60.createElement(ArrowsMaximizeIcon2, { fontSize: "tiny" });
|
|
3969
|
+
default:
|
|
3970
|
+
return null;
|
|
3971
|
+
}
|
|
3972
|
+
};
|
|
3973
|
+
|
|
3974
|
+
// src/controls/transform-control/transform-label.tsx
|
|
3975
|
+
import * as React61 from "react";
|
|
3976
|
+
import { Box as Box11 } from "@elementor/ui";
|
|
3977
|
+
import { __ as __26 } from "@wordpress/i18n";
|
|
3978
|
+
var transformMoveValue = (value) => Object.values(value).map((axis) => `${axis?.value.size}${axis?.value.unit}`).join(", ");
|
|
3979
|
+
var TransformLabel = (props) => {
|
|
3980
|
+
const { $$type, value } = props.value;
|
|
3981
|
+
switch ($$type) {
|
|
3982
|
+
case "transform-move":
|
|
3983
|
+
return /* @__PURE__ */ React61.createElement(Label2, { label: __26("Move", "elementor"), value: transformMoveValue(value) });
|
|
3984
|
+
default:
|
|
3985
|
+
return "";
|
|
3986
|
+
}
|
|
3987
|
+
};
|
|
3988
|
+
var Label2 = ({ label, value }) => {
|
|
3989
|
+
return /* @__PURE__ */ React61.createElement(Box11, { component: "span" }, label, ": ", value);
|
|
3990
|
+
};
|
|
3991
|
+
|
|
3992
|
+
// src/controls/transform-control/transform-repeater-control.tsx
|
|
3993
|
+
var initialTransformValue = {
|
|
3994
|
+
$$type: "transform-move",
|
|
3995
|
+
value: {
|
|
3996
|
+
x: { $$type: "size", value: { size: 0, unit: "px" } },
|
|
3997
|
+
y: { $$type: "size", value: { size: 0, unit: "px" } },
|
|
3998
|
+
z: { $$type: "size", value: { size: 0, unit: "px" } }
|
|
3999
|
+
}
|
|
4000
|
+
};
|
|
4001
|
+
var TransformRepeaterControl = createControl(() => {
|
|
4002
|
+
const { propType, value: transformValues, setValue, disabled } = useBoundProp(transformPropTypeUtil);
|
|
4003
|
+
return /* @__PURE__ */ React62.createElement(PropProvider, { propType, value: transformValues, setValue }, /* @__PURE__ */ React62.createElement(
|
|
4004
|
+
Repeater,
|
|
4005
|
+
{
|
|
4006
|
+
openOnAdd: true,
|
|
4007
|
+
disabled,
|
|
4008
|
+
values: transformValues ?? [],
|
|
4009
|
+
setValues: setValue,
|
|
4010
|
+
label: __27("Transform", "elementor"),
|
|
4011
|
+
showDuplicate: false,
|
|
4012
|
+
itemSettings: {
|
|
4013
|
+
Icon: TransformIcon,
|
|
4014
|
+
Label: TransformLabel,
|
|
4015
|
+
Content: TransformContent,
|
|
4016
|
+
initialValues: initialTransformValue
|
|
4017
|
+
}
|
|
4018
|
+
}
|
|
4019
|
+
));
|
|
4020
|
+
});
|
|
3634
4021
|
export {
|
|
3635
4022
|
AspectRatioControl,
|
|
3636
4023
|
BackgroundControl,
|
|
@@ -3661,10 +4048,11 @@ export {
|
|
|
3661
4048
|
SizeControl,
|
|
3662
4049
|
StrokeControl,
|
|
3663
4050
|
SvgMediaControl,
|
|
3664
|
-
|
|
4051
|
+
SwitchControl,
|
|
3665
4052
|
TextAreaControl,
|
|
3666
4053
|
TextControl,
|
|
3667
4054
|
ToggleControl,
|
|
4055
|
+
TransformRepeaterControl,
|
|
3668
4056
|
UrlControl,
|
|
3669
4057
|
createControlReplacementsRegistry,
|
|
3670
4058
|
injectIntoRepeaterItemIcon,
|