@elementor/editor-controls 0.10.0 → 0.12.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 +22 -0
- package/dist/index.d.mts +3 -25
- package/dist/index.d.ts +3 -25
- package/dist/index.js +427 -403
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +400 -369
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/components/autocomplete.tsx +181 -0
- package/src/components/popover-content.tsx +15 -0
- package/src/components/popover-grid-container.tsx +20 -0
- package/src/components/repeater.tsx +6 -4
- package/src/components/section-content.tsx +16 -0
- package/src/controls/background-control/background-control.tsx +4 -3
- package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx +4 -3
- package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx +15 -14
- package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx +3 -2
- package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx +5 -4
- package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +4 -3
- package/src/controls/box-shadow-repeater-control.tsx +12 -10
- package/src/controls/equal-unequal-sizes-control.tsx +9 -7
- package/src/controls/font-family-control.tsx +4 -2
- package/src/controls/gap-control.tsx +1 -1
- package/src/controls/image-control.tsx +2 -2
- package/src/controls/image-media-control.tsx +2 -2
- package/src/controls/link-control.tsx +65 -49
- package/src/controls/linked-dimensions-control.tsx +1 -1
- package/src/controls/select-control.tsx +8 -1
- package/src/controls/size-control.tsx +3 -1
- package/src/controls/stroke-control.tsx +6 -5
- package/src/index.ts +0 -1
- package/src/controls/autocomplete-control.tsx +0 -195
package/dist/index.mjs
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
// src/controls/
|
|
2
|
-
import * as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
Box,
|
|
7
|
-
IconButton,
|
|
8
|
-
InputAdornment,
|
|
9
|
-
TextField
|
|
10
|
-
} from "@elementor/ui";
|
|
1
|
+
// src/controls/image-control.tsx
|
|
2
|
+
import * as React10 from "react";
|
|
3
|
+
import { imagePropTypeUtil } from "@elementor/editor-props";
|
|
4
|
+
import { Grid, Stack as Stack2 } from "@elementor/ui";
|
|
5
|
+
import { __ as __2 } from "@wordpress/i18n";
|
|
11
6
|
|
|
12
7
|
// src/bound-prop-context/prop-context.tsx
|
|
13
8
|
import * as React from "react";
|
|
@@ -158,12 +153,19 @@ var resolveUnionPropType = (propType, key) => {
|
|
|
158
153
|
return resolvedPropType;
|
|
159
154
|
};
|
|
160
155
|
|
|
156
|
+
// src/components/control-label.tsx
|
|
157
|
+
import * as React3 from "react";
|
|
158
|
+
import { Typography } from "@elementor/ui";
|
|
159
|
+
var ControlLabel = ({ children }) => {
|
|
160
|
+
return /* @__PURE__ */ React3.createElement(Typography, { component: "label", variant: "caption", color: "text.secondary" }, children);
|
|
161
|
+
};
|
|
162
|
+
|
|
161
163
|
// src/create-control.tsx
|
|
162
|
-
import * as
|
|
164
|
+
import * as React5 from "react";
|
|
163
165
|
import { ErrorBoundary } from "@elementor/ui";
|
|
164
166
|
|
|
165
167
|
// src/create-control-replacement.tsx
|
|
166
|
-
import * as
|
|
168
|
+
import * as React4 from "react";
|
|
167
169
|
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
168
170
|
var ControlReplacementContext = createContext3(void 0);
|
|
169
171
|
var ControlReplacementProvider = ({
|
|
@@ -171,7 +173,7 @@ var ControlReplacementProvider = ({
|
|
|
171
173
|
condition,
|
|
172
174
|
children
|
|
173
175
|
}) => {
|
|
174
|
-
return /* @__PURE__ */
|
|
176
|
+
return /* @__PURE__ */ React4.createElement(ControlReplacementContext.Provider, { value: { component, condition } }, children);
|
|
175
177
|
};
|
|
176
178
|
var useControlReplacement = () => {
|
|
177
179
|
const { value } = useBoundProp();
|
|
@@ -200,141 +202,14 @@ function createControl(Component, { supportsReplacements = true } = {}) {
|
|
|
200
202
|
return (props) => {
|
|
201
203
|
const ControlReplacement = useControlReplacement();
|
|
202
204
|
if (ControlReplacement && supportsReplacements) {
|
|
203
|
-
return /* @__PURE__ */
|
|
205
|
+
return /* @__PURE__ */ React5.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React5.createElement(ControlReplacement, { ...props }));
|
|
204
206
|
}
|
|
205
|
-
return /* @__PURE__ */
|
|
207
|
+
return /* @__PURE__ */ React5.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React5.createElement(Component, { ...props }));
|
|
206
208
|
};
|
|
207
209
|
}
|
|
208
210
|
|
|
209
|
-
// src/controls/autocomplete-control.tsx
|
|
210
|
-
var AutocompleteControl = createControl(
|
|
211
|
-
(props) => {
|
|
212
|
-
const {
|
|
213
|
-
options,
|
|
214
|
-
optionRestrictedPropTypeUtil,
|
|
215
|
-
onOptionChangeCallback,
|
|
216
|
-
onTextChangeCallback,
|
|
217
|
-
allowCustomValues = false,
|
|
218
|
-
placeholder = "",
|
|
219
|
-
minInputLength = 2,
|
|
220
|
-
customValue
|
|
221
|
-
} = props;
|
|
222
|
-
const { value: selectableValue, setValue: setSelectableValue } = useBoundProp(optionRestrictedPropTypeUtil);
|
|
223
|
-
const value = selectableValue || customValue || "";
|
|
224
|
-
const optionKeys = _factoryFilter(selectableValue || customValue || null, options, minInputLength).map(
|
|
225
|
-
({ id }) => id
|
|
226
|
-
);
|
|
227
|
-
const allowClear = !!value;
|
|
228
|
-
const muiWarningPreventer = allowCustomValues || !!value?.toString()?.length;
|
|
229
|
-
const isOptionEqualToValue = () => {
|
|
230
|
-
return muiWarningPreventer ? void 0 : () => true;
|
|
231
|
-
};
|
|
232
|
-
const hasSelectedValue = !!findMatchingOption(options, selectableValue?.toString());
|
|
233
|
-
const onOptionChange = (newValue) => {
|
|
234
|
-
setSelectableValue(newValue);
|
|
235
|
-
onOptionChangeCallback?.(newValue);
|
|
236
|
-
};
|
|
237
|
-
const onTextChange = (newValue) => {
|
|
238
|
-
onTextChangeCallback?.(newValue);
|
|
239
|
-
};
|
|
240
|
-
return /* @__PURE__ */ React5.createElement(
|
|
241
|
-
Autocomplete,
|
|
242
|
-
{
|
|
243
|
-
forcePopupIcon: false,
|
|
244
|
-
disableClearable: true,
|
|
245
|
-
freeSolo: allowCustomValues,
|
|
246
|
-
value: value?.toString() || "",
|
|
247
|
-
size: "tiny",
|
|
248
|
-
onChange: (_, newValue) => onOptionChange(Number(newValue)),
|
|
249
|
-
readOnly: hasSelectedValue,
|
|
250
|
-
options: optionKeys,
|
|
251
|
-
getOptionKey: (optionId) => findMatchingOption(options, optionId)?.id || optionId,
|
|
252
|
-
getOptionLabel: (optionId) => findMatchingOption(options, optionId)?.label || optionId.toString(),
|
|
253
|
-
groupBy: isCategorizedOptionPool(options) ? (optionId) => findMatchingOption(options, optionId)?.groupLabel || optionId : void 0,
|
|
254
|
-
isOptionEqualToValue: isOptionEqualToValue(),
|
|
255
|
-
filterOptions: () => optionKeys,
|
|
256
|
-
renderOption: (optionProps, optionId) => /* @__PURE__ */ React5.createElement(Box, { component: "li", ...optionProps, key: optionProps.id }, findMatchingOption(options, optionId)?.label ?? optionId),
|
|
257
|
-
renderInput: (params) => /* @__PURE__ */ React5.createElement(
|
|
258
|
-
TextInput,
|
|
259
|
-
{
|
|
260
|
-
params,
|
|
261
|
-
handleChange: onTextChange,
|
|
262
|
-
allowClear,
|
|
263
|
-
placeholder,
|
|
264
|
-
hasSelectedValue
|
|
265
|
-
}
|
|
266
|
-
)
|
|
267
|
-
}
|
|
268
|
-
);
|
|
269
|
-
}
|
|
270
|
-
);
|
|
271
|
-
var TextInput = ({
|
|
272
|
-
params,
|
|
273
|
-
allowClear,
|
|
274
|
-
placeholder,
|
|
275
|
-
handleChange,
|
|
276
|
-
hasSelectedValue
|
|
277
|
-
}) => {
|
|
278
|
-
const onChange = (event) => {
|
|
279
|
-
handleChange(event.target.value);
|
|
280
|
-
};
|
|
281
|
-
return /* @__PURE__ */ React5.createElement(
|
|
282
|
-
TextField,
|
|
283
|
-
{
|
|
284
|
-
...params,
|
|
285
|
-
placeholder,
|
|
286
|
-
onChange,
|
|
287
|
-
sx: {
|
|
288
|
-
"& .MuiInputBase-input": {
|
|
289
|
-
cursor: hasSelectedValue ? "default" : void 0
|
|
290
|
-
}
|
|
291
|
-
},
|
|
292
|
-
InputProps: {
|
|
293
|
-
...params.InputProps,
|
|
294
|
-
endAdornment: /* @__PURE__ */ React5.createElement(ClearButton, { params, allowClear, handleChange })
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
);
|
|
298
|
-
};
|
|
299
|
-
var ClearButton = ({
|
|
300
|
-
allowClear,
|
|
301
|
-
handleChange,
|
|
302
|
-
params
|
|
303
|
-
}) => /* @__PURE__ */ React5.createElement(InputAdornment, { position: "end" }, allowClear && /* @__PURE__ */ React5.createElement(IconButton, { size: params.size, onClick: () => handleChange(null), sx: { cursor: "pointer" } }, /* @__PURE__ */ React5.createElement(XIcon, { fontSize: params.size })));
|
|
304
|
-
function findMatchingOption(options, optionId = null) {
|
|
305
|
-
return options.find(({ id }) => optionId?.toString() === id.toString());
|
|
306
|
-
}
|
|
307
|
-
function isCategorizedOptionPool(options) {
|
|
308
|
-
return options.every((option) => "groupLabel" in option);
|
|
309
|
-
}
|
|
310
|
-
function _factoryFilter(newValue, options, minInputLength) {
|
|
311
|
-
if (null === newValue) {
|
|
312
|
-
return options;
|
|
313
|
-
}
|
|
314
|
-
const formattedValue = String(newValue || "")?.toLowerCase();
|
|
315
|
-
if (formattedValue.length < minInputLength) {
|
|
316
|
-
return new Array(0);
|
|
317
|
-
}
|
|
318
|
-
return options.filter(
|
|
319
|
-
(option) => String(option.id).toLowerCase().includes(formattedValue) || option.label.toLowerCase().includes(formattedValue)
|
|
320
|
-
);
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
// src/controls/image-control.tsx
|
|
324
|
-
import * as React11 from "react";
|
|
325
|
-
import { imagePropTypeUtil } from "@elementor/editor-props";
|
|
326
|
-
import { Grid, Stack as Stack2 } from "@elementor/ui";
|
|
327
|
-
import { __ as __2 } from "@wordpress/i18n";
|
|
328
|
-
|
|
329
|
-
// src/components/control-label.tsx
|
|
330
|
-
import * as React6 from "react";
|
|
331
|
-
import { Typography } from "@elementor/ui";
|
|
332
|
-
var ControlLabel = ({ children }) => {
|
|
333
|
-
return /* @__PURE__ */ React6.createElement(Typography, { component: "label", variant: "caption", color: "text.secondary" }, children);
|
|
334
|
-
};
|
|
335
|
-
|
|
336
211
|
// src/controls/image-media-control.tsx
|
|
337
|
-
import * as
|
|
212
|
+
import * as React8 from "react";
|
|
338
213
|
import { imageSrcPropTypeUtil } from "@elementor/editor-props";
|
|
339
214
|
import { UploadIcon } from "@elementor/icons";
|
|
340
215
|
import { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from "@elementor/ui";
|
|
@@ -342,14 +217,14 @@ import { useWpMediaAttachment, useWpMediaFrame } from "@elementor/wp-media";
|
|
|
342
217
|
import { __ } from "@wordpress/i18n";
|
|
343
218
|
|
|
344
219
|
// src/control-actions/control-actions.tsx
|
|
345
|
-
import * as
|
|
220
|
+
import * as React7 from "react";
|
|
346
221
|
import { styled, UnstableFloatingActionBar } from "@elementor/ui";
|
|
347
222
|
|
|
348
223
|
// src/control-actions/control-actions-context.tsx
|
|
349
|
-
import * as
|
|
224
|
+
import * as React6 from "react";
|
|
350
225
|
import { createContext as createContext4, useContext as useContext4 } from "react";
|
|
351
226
|
var Context = createContext4(null);
|
|
352
|
-
var ControlActionsProvider = ({ children, items }) => /* @__PURE__ */
|
|
227
|
+
var ControlActionsProvider = ({ children, items }) => /* @__PURE__ */ React6.createElement(Context.Provider, { value: { items } }, children);
|
|
353
228
|
var useControlActions = () => {
|
|
354
229
|
const context = useContext4(Context);
|
|
355
230
|
if (!context) {
|
|
@@ -371,8 +246,8 @@ function ControlActions({ children }) {
|
|
|
371
246
|
if (items.length === 0) {
|
|
372
247
|
return children;
|
|
373
248
|
}
|
|
374
|
-
const menuItems = items.map(({ MenuItem: MenuItem5, id }) => /* @__PURE__ */
|
|
375
|
-
return /* @__PURE__ */
|
|
249
|
+
const menuItems = items.map(({ MenuItem: MenuItem5, id }) => /* @__PURE__ */ React7.createElement(MenuItem5, { key: id }));
|
|
250
|
+
return /* @__PURE__ */ React7.createElement(FloatingBarContainer, null, /* @__PURE__ */ React7.createElement(UnstableFloatingActionBar, { actions: menuItems }, children));
|
|
376
251
|
}
|
|
377
252
|
|
|
378
253
|
// src/controls/image-media-control.tsx
|
|
@@ -396,7 +271,7 @@ var ImageMediaControl = createControl((props) => {
|
|
|
396
271
|
});
|
|
397
272
|
}
|
|
398
273
|
});
|
|
399
|
-
return /* @__PURE__ */
|
|
274
|
+
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(
|
|
400
275
|
Button,
|
|
401
276
|
{
|
|
402
277
|
size: "tiny",
|
|
@@ -404,22 +279,22 @@ var ImageMediaControl = createControl((props) => {
|
|
|
404
279
|
variant: "outlined",
|
|
405
280
|
onClick: () => open({ mode: "browse" })
|
|
406
281
|
},
|
|
407
|
-
__("Select
|
|
408
|
-
), /* @__PURE__ */
|
|
282
|
+
__("Select image", "elementor")
|
|
283
|
+
), /* @__PURE__ */ React8.createElement(
|
|
409
284
|
Button,
|
|
410
285
|
{
|
|
411
286
|
size: "tiny",
|
|
412
287
|
variant: "text",
|
|
413
288
|
color: "inherit",
|
|
414
|
-
startIcon: /* @__PURE__ */
|
|
289
|
+
startIcon: /* @__PURE__ */ React8.createElement(UploadIcon, null),
|
|
415
290
|
onClick: () => open({ mode: "upload" })
|
|
416
291
|
},
|
|
417
|
-
__("Upload
|
|
292
|
+
__("Upload image", "elementor")
|
|
418
293
|
)))));
|
|
419
294
|
});
|
|
420
295
|
|
|
421
296
|
// src/controls/select-control.tsx
|
|
422
|
-
import * as
|
|
297
|
+
import * as React9 from "react";
|
|
423
298
|
import { stringPropTypeUtil } from "@elementor/editor-props";
|
|
424
299
|
import { MenuItem, Select } from "@elementor/ui";
|
|
425
300
|
var SelectControl = createControl(({ options, onChange }) => {
|
|
@@ -429,26 +304,37 @@ var SelectControl = createControl(({ options, onChange }) => {
|
|
|
429
304
|
onChange?.(newValue, value);
|
|
430
305
|
setValue(newValue);
|
|
431
306
|
};
|
|
432
|
-
return /* @__PURE__ */
|
|
307
|
+
return /* @__PURE__ */ React9.createElement(ControlActions, null, /* @__PURE__ */ React9.createElement(
|
|
308
|
+
Select,
|
|
309
|
+
{
|
|
310
|
+
sx: { overflow: "hidden" },
|
|
311
|
+
displayEmpty: true,
|
|
312
|
+
size: "tiny",
|
|
313
|
+
value: value ?? "",
|
|
314
|
+
onChange: handleChange,
|
|
315
|
+
fullWidth: true
|
|
316
|
+
},
|
|
317
|
+
options.map(({ label, ...props }) => /* @__PURE__ */ React9.createElement(MenuItem, { key: props.value, ...props, value: props.value ?? "" }, label))
|
|
318
|
+
));
|
|
433
319
|
});
|
|
434
320
|
|
|
435
321
|
// src/controls/image-control.tsx
|
|
436
322
|
var ImageControl = createControl(
|
|
437
323
|
({ sizes, resolutionLabel = __2("Image resolution", "elementor") }) => {
|
|
438
324
|
const propContext = useBoundProp(imagePropTypeUtil);
|
|
439
|
-
return /* @__PURE__ */
|
|
325
|
+
return /* @__PURE__ */ React10.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React10.createElement(Stack2, { gap: 1.5 }, /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "src" }, /* @__PURE__ */ React10.createElement(ControlLabel, null, " ", __2("Choose image", "elementor"), " "), /* @__PURE__ */ React10.createElement(ImageMediaControl, null)), /* @__PURE__ */ React10.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React10.createElement(Grid, { container: true, gap: 1.5, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React10.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React10.createElement(ControlLabel, null, " ", resolutionLabel, " ")), /* @__PURE__ */ React10.createElement(Grid, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React10.createElement(SelectControl, { options: sizes }))))));
|
|
440
326
|
}
|
|
441
327
|
);
|
|
442
328
|
|
|
443
329
|
// src/controls/text-control.tsx
|
|
444
|
-
import * as
|
|
330
|
+
import * as React11 from "react";
|
|
445
331
|
import { stringPropTypeUtil as stringPropTypeUtil2 } from "@elementor/editor-props";
|
|
446
|
-
import { TextField
|
|
332
|
+
import { TextField } from "@elementor/ui";
|
|
447
333
|
var TextControl = createControl(({ placeholder }) => {
|
|
448
334
|
const { value, setValue } = useBoundProp(stringPropTypeUtil2);
|
|
449
335
|
const handleChange = (event) => setValue(event.target.value);
|
|
450
|
-
return /* @__PURE__ */
|
|
451
|
-
|
|
336
|
+
return /* @__PURE__ */ React11.createElement(ControlActions, null, /* @__PURE__ */ React11.createElement(
|
|
337
|
+
TextField,
|
|
452
338
|
{
|
|
453
339
|
size: "tiny",
|
|
454
340
|
fullWidth: true,
|
|
@@ -460,16 +346,16 @@ var TextControl = createControl(({ placeholder }) => {
|
|
|
460
346
|
});
|
|
461
347
|
|
|
462
348
|
// src/controls/text-area-control.tsx
|
|
463
|
-
import * as
|
|
349
|
+
import * as React12 from "react";
|
|
464
350
|
import { stringPropTypeUtil as stringPropTypeUtil3 } from "@elementor/editor-props";
|
|
465
|
-
import { TextField as
|
|
351
|
+
import { TextField as TextField2 } from "@elementor/ui";
|
|
466
352
|
var TextAreaControl = createControl(({ placeholder }) => {
|
|
467
353
|
const { value, setValue } = useBoundProp(stringPropTypeUtil3);
|
|
468
354
|
const handleChange = (event) => {
|
|
469
355
|
setValue(event.target.value);
|
|
470
356
|
};
|
|
471
|
-
return /* @__PURE__ */
|
|
472
|
-
|
|
357
|
+
return /* @__PURE__ */ React12.createElement(ControlActions, null, /* @__PURE__ */ React12.createElement(
|
|
358
|
+
TextField2,
|
|
473
359
|
{
|
|
474
360
|
size: "tiny",
|
|
475
361
|
multiline: true,
|
|
@@ -483,18 +369,18 @@ var TextAreaControl = createControl(({ placeholder }) => {
|
|
|
483
369
|
});
|
|
484
370
|
|
|
485
371
|
// src/controls/size-control.tsx
|
|
486
|
-
import * as
|
|
372
|
+
import * as React14 from "react";
|
|
487
373
|
import { sizePropTypeUtil } from "@elementor/editor-props";
|
|
488
|
-
import { InputAdornment as
|
|
374
|
+
import { InputAdornment as InputAdornment2 } from "@elementor/ui";
|
|
489
375
|
|
|
490
376
|
// src/components/text-field-inner-selection.tsx
|
|
491
|
-
import * as
|
|
377
|
+
import * as React13 from "react";
|
|
492
378
|
import { forwardRef, useId } from "react";
|
|
493
|
-
import { bindMenu, bindTrigger, Button as Button2, InputAdornment
|
|
379
|
+
import { bindMenu, bindTrigger, Button as Button2, InputAdornment, Menu, MenuItem as MenuItem2, TextField as TextField3, usePopupState } from "@elementor/ui";
|
|
494
380
|
var TextFieldInnerSelection = forwardRef(
|
|
495
381
|
({ placeholder, type, value, onChange, endAdornment, startAdornment }, ref) => {
|
|
496
|
-
return /* @__PURE__ */
|
|
497
|
-
|
|
382
|
+
return /* @__PURE__ */ React13.createElement(
|
|
383
|
+
TextField3,
|
|
498
384
|
{
|
|
499
385
|
size: "tiny",
|
|
500
386
|
fullWidth: true,
|
|
@@ -524,7 +410,7 @@ var SelectionEndAdornment = ({
|
|
|
524
410
|
onClick(options[index]);
|
|
525
411
|
popupState.close();
|
|
526
412
|
};
|
|
527
|
-
return /* @__PURE__ */
|
|
413
|
+
return /* @__PURE__ */ React13.createElement(InputAdornment, { position: "end" }, /* @__PURE__ */ React13.createElement(
|
|
528
414
|
Button2,
|
|
529
415
|
{
|
|
530
416
|
size: "small",
|
|
@@ -533,7 +419,7 @@ var SelectionEndAdornment = ({
|
|
|
533
419
|
...bindTrigger(popupState)
|
|
534
420
|
},
|
|
535
421
|
value.toUpperCase()
|
|
536
|
-
), /* @__PURE__ */
|
|
422
|
+
), /* @__PURE__ */ React13.createElement(Menu, { MenuListProps: { dense: true }, ...bindMenu(popupState) }, options.map((option, index) => /* @__PURE__ */ React13.createElement(MenuItem2, { key: option, onClick: () => handleMenuItemClick(index) }, option.toUpperCase()))));
|
|
537
423
|
};
|
|
538
424
|
|
|
539
425
|
// src/hooks/use-sync-external-state.tsx
|
|
@@ -594,10 +480,10 @@ var SizeControl = createControl(({ units: units2 = defaultUnits, placeholder, st
|
|
|
594
480
|
size: size || size === "0" ? parseFloat(size) : defaultSize
|
|
595
481
|
}));
|
|
596
482
|
};
|
|
597
|
-
return /* @__PURE__ */
|
|
483
|
+
return /* @__PURE__ */ React14.createElement(ControlActions, null, /* @__PURE__ */ React14.createElement(
|
|
598
484
|
TextFieldInnerSelection,
|
|
599
485
|
{
|
|
600
|
-
endAdornment: /* @__PURE__ */
|
|
486
|
+
endAdornment: /* @__PURE__ */ React14.createElement(
|
|
601
487
|
SelectionEndAdornment,
|
|
602
488
|
{
|
|
603
489
|
options: units2,
|
|
@@ -606,7 +492,7 @@ var SizeControl = createControl(({ units: units2 = defaultUnits, placeholder, st
|
|
|
606
492
|
}
|
|
607
493
|
),
|
|
608
494
|
placeholder,
|
|
609
|
-
startAdornment: startIcon
|
|
495
|
+
startAdornment: startIcon ? /* @__PURE__ */ React14.createElement(InputAdornment2, { position: "start" }, startIcon) : void 0,
|
|
610
496
|
type: "number",
|
|
611
497
|
value: Number.isNaN(state?.size) ? "" : state?.size,
|
|
612
498
|
onChange: handleSizeChange
|
|
@@ -617,9 +503,14 @@ var SizeControl = createControl(({ units: units2 = defaultUnits, placeholder, st
|
|
|
617
503
|
// src/controls/stroke-control.tsx
|
|
618
504
|
import * as React17 from "react";
|
|
619
505
|
import { strokePropTypeUtil } from "@elementor/editor-props";
|
|
620
|
-
import { Grid as Grid2
|
|
506
|
+
import { Grid as Grid2 } from "@elementor/ui";
|
|
621
507
|
import { __ as __3 } from "@wordpress/i18n";
|
|
622
508
|
|
|
509
|
+
// src/components/section-content.tsx
|
|
510
|
+
import * as React15 from "react";
|
|
511
|
+
import { Stack as Stack3 } from "@elementor/ui";
|
|
512
|
+
var SectionContent = ({ gap = 2, sx, children }) => /* @__PURE__ */ React15.createElement(Stack3, { gap, sx: { ...sx } }, children);
|
|
513
|
+
|
|
623
514
|
// src/controls/color-control.tsx
|
|
624
515
|
import * as React16 from "react";
|
|
625
516
|
import { colorPropTypeUtil } from "@elementor/editor-props";
|
|
@@ -636,27 +527,42 @@ var ColorControl = createControl(({ propTypeUtil = colorPropTypeUtil, ...props }
|
|
|
636
527
|
var units = ["px", "em", "rem"];
|
|
637
528
|
var StrokeControl = createControl(() => {
|
|
638
529
|
const propContext = useBoundProp(strokePropTypeUtil);
|
|
639
|
-
return /* @__PURE__ */ React17.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React17.createElement(
|
|
530
|
+
return /* @__PURE__ */ React17.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React17.createElement(SectionContent, null, /* @__PURE__ */ React17.createElement(Control, { bind: "width", label: __3("Stroke width", "elementor") }, /* @__PURE__ */ React17.createElement(SizeControl, { units })), /* @__PURE__ */ React17.createElement(Control, { bind: "color", label: __3("Stroke color", "elementor") }, /* @__PURE__ */ React17.createElement(ColorControl, null))));
|
|
640
531
|
});
|
|
641
532
|
var Control = ({ bind, label, children }) => /* @__PURE__ */ React17.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React17.createElement(Grid2, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React17.createElement(Grid2, { item: true, xs: 6 }, /* @__PURE__ */ React17.createElement(ControlLabel, null, label)), /* @__PURE__ */ React17.createElement(Grid2, { item: true, xs: 6 }, children)));
|
|
642
533
|
|
|
643
534
|
// src/controls/box-shadow-repeater-control.tsx
|
|
644
|
-
import * as
|
|
535
|
+
import * as React21 from "react";
|
|
645
536
|
import { boxShadowPropTypeUtil, shadowPropTypeUtil } from "@elementor/editor-props";
|
|
646
|
-
import { Grid as
|
|
537
|
+
import { Grid as Grid4, Typography as Typography3, UnstableColorIndicator } from "@elementor/ui";
|
|
647
538
|
import { __ as __5 } from "@wordpress/i18n";
|
|
648
539
|
|
|
649
|
-
// src/components/
|
|
540
|
+
// src/components/popover-content.tsx
|
|
650
541
|
import * as React18 from "react";
|
|
542
|
+
import { Stack as Stack4 } from "@elementor/ui";
|
|
543
|
+
var PopoverContent = ({ alignItems, gap = 1.5, p, children }) => /* @__PURE__ */ React18.createElement(Stack4, { alignItems, gap, p }, children);
|
|
544
|
+
|
|
545
|
+
// src/components/popover-grid-container.tsx
|
|
546
|
+
import * as React19 from "react";
|
|
547
|
+
import { Grid as Grid3 } from "@elementor/ui";
|
|
548
|
+
var PopoverGridContainer = ({
|
|
549
|
+
gap = 1.5,
|
|
550
|
+
alignItems = "center",
|
|
551
|
+
flexWrap = "nowrap",
|
|
552
|
+
children
|
|
553
|
+
}) => /* @__PURE__ */ React19.createElement(Grid3, { container: true, gap, alignItems, flexWrap }, children);
|
|
554
|
+
|
|
555
|
+
// src/components/repeater.tsx
|
|
556
|
+
import * as React20 from "react";
|
|
651
557
|
import { useRef, useState as useState2 } from "react";
|
|
652
|
-
import { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon
|
|
558
|
+
import { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from "@elementor/icons";
|
|
653
559
|
import {
|
|
654
560
|
bindPopover,
|
|
655
561
|
bindTrigger as bindTrigger2,
|
|
656
|
-
Box
|
|
657
|
-
IconButton
|
|
562
|
+
Box,
|
|
563
|
+
IconButton,
|
|
658
564
|
Popover,
|
|
659
|
-
Stack as
|
|
565
|
+
Stack as Stack5,
|
|
660
566
|
Typography as Typography2,
|
|
661
567
|
UnstableTag,
|
|
662
568
|
usePopupState as usePopupState2
|
|
@@ -698,19 +604,19 @@ var Repeater = ({
|
|
|
698
604
|
})
|
|
699
605
|
);
|
|
700
606
|
};
|
|
701
|
-
return /* @__PURE__ */
|
|
607
|
+
return /* @__PURE__ */ React20.createElement(SectionContent, null, /* @__PURE__ */ React20.createElement(Stack5, { direction: "row", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React20.createElement(Typography2, { component: "label", variant: "caption", color: "text.secondary" }, label), /* @__PURE__ */ React20.createElement(IconButton, { size: SIZE, onClick: addRepeaterItem, "aria-label": __4("Add item", "elementor") }, /* @__PURE__ */ React20.createElement(PlusIcon, { fontSize: SIZE }))), /* @__PURE__ */ React20.createElement(Stack5, { gap: 1, sx: { "&:empty": { display: "none" } } }, repeaterValues.map((value, index) => /* @__PURE__ */ React20.createElement(
|
|
702
608
|
RepeaterItem,
|
|
703
609
|
{
|
|
704
610
|
key: index,
|
|
705
611
|
bind: String(index),
|
|
706
612
|
disabled: value.disabled,
|
|
707
|
-
label: /* @__PURE__ */
|
|
708
|
-
startIcon: /* @__PURE__ */
|
|
613
|
+
label: /* @__PURE__ */ React20.createElement(itemSettings.Label, { value }),
|
|
614
|
+
startIcon: /* @__PURE__ */ React20.createElement(itemSettings.Icon, { value }),
|
|
709
615
|
removeItem: () => removeRepeaterItem(index),
|
|
710
616
|
duplicateItem: () => duplicateRepeaterItem(index),
|
|
711
617
|
toggleDisableItem: () => toggleDisableRepeaterItem(index)
|
|
712
618
|
},
|
|
713
|
-
(props) => /* @__PURE__ */
|
|
619
|
+
(props) => /* @__PURE__ */ React20.createElement(itemSettings.Content, { ...props, value, bind: String(index) })
|
|
714
620
|
))));
|
|
715
621
|
};
|
|
716
622
|
var RepeaterItem = ({
|
|
@@ -728,7 +634,7 @@ var RepeaterItem = ({
|
|
|
728
634
|
const [anchorEl, setAnchorEl] = useState2(null);
|
|
729
635
|
const popoverState = usePopupState2({ popupId, variant: "popover" });
|
|
730
636
|
const popoverProps = bindPopover(popoverState);
|
|
731
|
-
return /* @__PURE__ */
|
|
637
|
+
return /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(
|
|
732
638
|
UnstableTag,
|
|
733
639
|
{
|
|
734
640
|
label,
|
|
@@ -738,33 +644,33 @@ var RepeaterItem = ({
|
|
|
738
644
|
"aria-label": __4("Open item", "elementor"),
|
|
739
645
|
...bindTrigger2(popoverState),
|
|
740
646
|
startIcon,
|
|
741
|
-
actions: /* @__PURE__ */
|
|
742
|
-
|
|
647
|
+
actions: /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(
|
|
648
|
+
IconButton,
|
|
743
649
|
{
|
|
744
650
|
size: SIZE,
|
|
745
651
|
onClick: duplicateItem,
|
|
746
652
|
"aria-label": __4("Duplicate item", "elementor")
|
|
747
653
|
},
|
|
748
|
-
/* @__PURE__ */
|
|
749
|
-
), /* @__PURE__ */
|
|
750
|
-
|
|
654
|
+
/* @__PURE__ */ React20.createElement(CopyIcon, { fontSize: SIZE })
|
|
655
|
+
), /* @__PURE__ */ React20.createElement(
|
|
656
|
+
IconButton,
|
|
751
657
|
{
|
|
752
658
|
size: SIZE,
|
|
753
659
|
onClick: toggleDisableItem,
|
|
754
660
|
"aria-label": disabled ? __4("Enable item", "elementor") : __4("Disable item", "elementor")
|
|
755
661
|
},
|
|
756
|
-
disabled ? /* @__PURE__ */
|
|
757
|
-
), /* @__PURE__ */
|
|
758
|
-
|
|
662
|
+
disabled ? /* @__PURE__ */ React20.createElement(EyeOffIcon, { fontSize: SIZE }) : /* @__PURE__ */ React20.createElement(EyeIcon, { fontSize: SIZE })
|
|
663
|
+
), /* @__PURE__ */ React20.createElement(
|
|
664
|
+
IconButton,
|
|
759
665
|
{
|
|
760
666
|
size: SIZE,
|
|
761
667
|
onClick: removeItem,
|
|
762
668
|
"aria-label": __4("Remove item", "elementor")
|
|
763
669
|
},
|
|
764
|
-
/* @__PURE__ */
|
|
670
|
+
/* @__PURE__ */ React20.createElement(XIcon, { fontSize: SIZE })
|
|
765
671
|
))
|
|
766
672
|
}
|
|
767
|
-
), /* @__PURE__ */
|
|
673
|
+
), /* @__PURE__ */ React20.createElement(
|
|
768
674
|
Popover,
|
|
769
675
|
{
|
|
770
676
|
disablePortal: true,
|
|
@@ -777,14 +683,14 @@ var RepeaterItem = ({
|
|
|
777
683
|
anchorOrigin: { vertical: "bottom", horizontal: "left" },
|
|
778
684
|
...popoverProps
|
|
779
685
|
},
|
|
780
|
-
/* @__PURE__ */
|
|
686
|
+
/* @__PURE__ */ React20.createElement(Box, null, children({ anchorEl }))
|
|
781
687
|
));
|
|
782
688
|
};
|
|
783
689
|
|
|
784
690
|
// src/controls/box-shadow-repeater-control.tsx
|
|
785
691
|
var BoxShadowRepeaterControl = createControl(() => {
|
|
786
692
|
const { propType, value, setValue } = useBoundProp(boxShadowPropTypeUtil);
|
|
787
|
-
return /* @__PURE__ */
|
|
693
|
+
return /* @__PURE__ */ React21.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React21.createElement(
|
|
788
694
|
Repeater,
|
|
789
695
|
{
|
|
790
696
|
values: value ?? [],
|
|
@@ -799,13 +705,13 @@ var BoxShadowRepeaterControl = createControl(() => {
|
|
|
799
705
|
}
|
|
800
706
|
));
|
|
801
707
|
});
|
|
802
|
-
var ItemIcon = ({ value }) => /* @__PURE__ */
|
|
708
|
+
var ItemIcon = ({ value }) => /* @__PURE__ */ React21.createElement(UnstableColorIndicator, { size: "inherit", component: "span", value: value.value.color.value });
|
|
803
709
|
var ItemContent = ({ anchorEl, bind }) => {
|
|
804
|
-
return /* @__PURE__ */
|
|
710
|
+
return /* @__PURE__ */ React21.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React21.createElement(Content, { anchorEl }));
|
|
805
711
|
};
|
|
806
712
|
var Content = ({ anchorEl }) => {
|
|
807
713
|
const { propType, value, setValue } = useBoundProp(shadowPropTypeUtil);
|
|
808
|
-
return /* @__PURE__ */
|
|
714
|
+
return /* @__PURE__ */ React21.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React21.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React21.createElement(PopoverGridContainer, null, /* @__PURE__ */ React21.createElement(Control2, { bind: "color", label: __5("Color", "elementor") }, /* @__PURE__ */ React21.createElement(
|
|
809
715
|
ColorControl,
|
|
810
716
|
{
|
|
811
717
|
slotProps: {
|
|
@@ -822,7 +728,7 @@ var Content = ({ anchorEl }) => {
|
|
|
822
728
|
}
|
|
823
729
|
}
|
|
824
730
|
}
|
|
825
|
-
)), /* @__PURE__ */
|
|
731
|
+
)), /* @__PURE__ */ React21.createElement(Control2, { bind: "position", label: __5("Position", "elementor") }, /* @__PURE__ */ React21.createElement(
|
|
826
732
|
SelectControl,
|
|
827
733
|
{
|
|
828
734
|
options: [
|
|
@@ -830,9 +736,9 @@ var Content = ({ anchorEl }) => {
|
|
|
830
736
|
{ label: __5("Outset", "elementor"), value: null }
|
|
831
737
|
]
|
|
832
738
|
}
|
|
833
|
-
))), /* @__PURE__ */
|
|
739
|
+
))), /* @__PURE__ */ React21.createElement(PopoverGridContainer, null, /* @__PURE__ */ React21.createElement(Control2, { bind: "hOffset", label: __5("Horizontal", "elementor") }, /* @__PURE__ */ React21.createElement(SizeControl, null)), /* @__PURE__ */ React21.createElement(Control2, { bind: "vOffset", label: __5("Vertical", "elementor") }, /* @__PURE__ */ React21.createElement(SizeControl, null))), /* @__PURE__ */ React21.createElement(PopoverGridContainer, null, /* @__PURE__ */ React21.createElement(Control2, { bind: "blur", label: __5("Blur", "elementor") }, /* @__PURE__ */ React21.createElement(SizeControl, null)), /* @__PURE__ */ React21.createElement(Control2, { bind: "spread", label: __5("Spread", "elementor") }, /* @__PURE__ */ React21.createElement(SizeControl, null)))));
|
|
834
740
|
};
|
|
835
|
-
var Control2 = ({ label, bind, children }) => /* @__PURE__ */
|
|
741
|
+
var Control2 = ({ label, bind, children }) => /* @__PURE__ */ React21.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React21.createElement(Grid4, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React21.createElement(Grid4, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React21.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React21.createElement(Typography3, { component: "label", variant: "caption", color: "text.secondary" }, label)), /* @__PURE__ */ React21.createElement(Grid4, { item: true, xs: 12 }, children))));
|
|
836
742
|
var ItemLabel = ({ value }) => {
|
|
837
743
|
const { position, hOffset, vOffset, blur, spread } = value.value;
|
|
838
744
|
const { size: blurSize = "", unit: blurUnit = "" } = blur?.value || {};
|
|
@@ -846,7 +752,7 @@ var ItemLabel = ({ value }) => {
|
|
|
846
752
|
blurSize + blurUnit,
|
|
847
753
|
spreadSize + spreadUnit
|
|
848
754
|
].join(" ");
|
|
849
|
-
return /* @__PURE__ */
|
|
755
|
+
return /* @__PURE__ */ React21.createElement("span", { style: { textTransform: "capitalize" } }, positionLabel, ": ", sizes);
|
|
850
756
|
};
|
|
851
757
|
var initialShadow = {
|
|
852
758
|
$$type: "shadow",
|
|
@@ -876,11 +782,11 @@ var initialShadow = {
|
|
|
876
782
|
};
|
|
877
783
|
|
|
878
784
|
// src/controls/toggle-control.tsx
|
|
879
|
-
import * as
|
|
785
|
+
import * as React23 from "react";
|
|
880
786
|
import { stringPropTypeUtil as stringPropTypeUtil4 } from "@elementor/editor-props";
|
|
881
787
|
|
|
882
788
|
// src/components/control-toggle-button-group.tsx
|
|
883
|
-
import * as
|
|
789
|
+
import * as React22 from "react";
|
|
884
790
|
import {
|
|
885
791
|
styled as styled2,
|
|
886
792
|
ToggleButton,
|
|
@@ -904,7 +810,7 @@ var ControlToggleButtonGroup = ({
|
|
|
904
810
|
const handleChange = (_, newValue) => {
|
|
905
811
|
onChange(newValue);
|
|
906
812
|
};
|
|
907
|
-
return /* @__PURE__ */
|
|
813
|
+
return /* @__PURE__ */ React22.createElement(
|
|
908
814
|
StyledToggleButtonGroup,
|
|
909
815
|
{
|
|
910
816
|
justify,
|
|
@@ -916,7 +822,7 @@ var ControlToggleButtonGroup = ({
|
|
|
916
822
|
}
|
|
917
823
|
},
|
|
918
824
|
items.map(
|
|
919
|
-
({ label, value: buttonValue, renderContent: Content3, showTooltip }) => showTooltip ? /* @__PURE__ */
|
|
825
|
+
({ label, value: buttonValue, renderContent: Content3, showTooltip }) => showTooltip ? /* @__PURE__ */ React22.createElement(Tooltip, { key: buttonValue, title: label, disableFocusListener: true, placement: "top" }, /* @__PURE__ */ React22.createElement(ToggleButton, { value: buttonValue, "aria-label": label, size, fullWidth }, /* @__PURE__ */ React22.createElement(Content3, { size }))) : /* @__PURE__ */ React22.createElement(
|
|
920
826
|
ToggleButton,
|
|
921
827
|
{
|
|
922
828
|
key: buttonValue,
|
|
@@ -925,7 +831,7 @@ var ControlToggleButtonGroup = ({
|
|
|
925
831
|
size,
|
|
926
832
|
fullWidth
|
|
927
833
|
},
|
|
928
|
-
/* @__PURE__ */
|
|
834
|
+
/* @__PURE__ */ React22.createElement(Content3, { size })
|
|
929
835
|
)
|
|
930
836
|
)
|
|
931
837
|
);
|
|
@@ -938,7 +844,7 @@ var ToggleControl = createControl(
|
|
|
938
844
|
const handleToggle = (option) => {
|
|
939
845
|
setValue(option);
|
|
940
846
|
};
|
|
941
|
-
return /* @__PURE__ */
|
|
847
|
+
return /* @__PURE__ */ React23.createElement(
|
|
942
848
|
ControlToggleButtonGroup,
|
|
943
849
|
{
|
|
944
850
|
items: options,
|
|
@@ -953,9 +859,9 @@ var ToggleControl = createControl(
|
|
|
953
859
|
);
|
|
954
860
|
|
|
955
861
|
// src/controls/number-control.tsx
|
|
956
|
-
import * as
|
|
862
|
+
import * as React24 from "react";
|
|
957
863
|
import { numberPropTypeUtil } from "@elementor/editor-props";
|
|
958
|
-
import { TextField as
|
|
864
|
+
import { TextField as TextField4 } from "@elementor/ui";
|
|
959
865
|
var isEmptyOrNaN = (value) => value === null || value === void 0 || value === "" || Number.isNaN(Number(value));
|
|
960
866
|
var NumberControl = createControl(
|
|
961
867
|
({
|
|
@@ -975,8 +881,8 @@ var NumberControl = createControl(
|
|
|
975
881
|
const formattedValue = shouldForceInt ? +parseInt(eventValue) : Number(eventValue);
|
|
976
882
|
setValue(Math.min(Math.max(formattedValue, min), max));
|
|
977
883
|
};
|
|
978
|
-
return /* @__PURE__ */
|
|
979
|
-
|
|
884
|
+
return /* @__PURE__ */ React24.createElement(ControlActions, null, /* @__PURE__ */ React24.createElement(
|
|
885
|
+
TextField4,
|
|
980
886
|
{
|
|
981
887
|
size: "tiny",
|
|
982
888
|
type: "number",
|
|
@@ -991,10 +897,10 @@ var NumberControl = createControl(
|
|
|
991
897
|
);
|
|
992
898
|
|
|
993
899
|
// src/controls/equal-unequal-sizes-control.tsx
|
|
994
|
-
import * as
|
|
900
|
+
import * as React25 from "react";
|
|
995
901
|
import { useId as useId2, useRef as useRef2 } from "react";
|
|
996
902
|
import { sizePropTypeUtil as sizePropTypeUtil2 } from "@elementor/editor-props";
|
|
997
|
-
import { bindPopover as bindPopover2, bindToggle, Grid as
|
|
903
|
+
import { bindPopover as bindPopover2, bindToggle, Grid as Grid5, Popover as Popover2, Stack as Stack6, ToggleButton as ToggleButton2, usePopupState as usePopupState3 } from "@elementor/ui";
|
|
998
904
|
import { __ as __6 } from "@wordpress/i18n";
|
|
999
905
|
var isEqualSizes = (propValue, items) => {
|
|
1000
906
|
const values = Object.values(propValue);
|
|
@@ -1048,7 +954,7 @@ function EqualUnequalSizesControl({
|
|
|
1048
954
|
return splitEqualValue() ?? null;
|
|
1049
955
|
};
|
|
1050
956
|
const isMixed = !!multiSizeValue;
|
|
1051
|
-
return /* @__PURE__ */
|
|
957
|
+
return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(Grid5, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: controlRef }, /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React25.createElement(ControlLabel, null, label)), /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React25.createElement(Stack6, { direction: "row", alignItems: "center", gap: 1 }, /* @__PURE__ */ React25.createElement(SizeControl, { placeholder: isMixed ? __6("Mixed", "elementor") : void 0 }), /* @__PURE__ */ React25.createElement(
|
|
1052
958
|
ToggleButton2,
|
|
1053
959
|
{
|
|
1054
960
|
size: "tiny",
|
|
@@ -1058,7 +964,7 @@ function EqualUnequalSizesControl({
|
|
|
1058
964
|
selected: popupState.isOpen
|
|
1059
965
|
},
|
|
1060
966
|
icon
|
|
1061
|
-
)))), /* @__PURE__ */
|
|
967
|
+
)))), /* @__PURE__ */ React25.createElement(
|
|
1062
968
|
Popover2,
|
|
1063
969
|
{
|
|
1064
970
|
disablePortal: true,
|
|
@@ -1073,19 +979,19 @@ function EqualUnequalSizesControl({
|
|
|
1073
979
|
},
|
|
1074
980
|
...bindPopover2(popupState),
|
|
1075
981
|
slotProps: {
|
|
1076
|
-
paper: { sx: { mt: 0.5,
|
|
982
|
+
paper: { sx: { mt: 0.5, width: controlRef.current?.getBoundingClientRect().width } }
|
|
1077
983
|
}
|
|
1078
984
|
},
|
|
1079
|
-
/* @__PURE__ */
|
|
985
|
+
/* @__PURE__ */ React25.createElement(PropProvider, { propType: multiSizePropType, value: getMultiSizeValues(), setValue: setNestedProp }, /* @__PURE__ */ React25.createElement(PopoverContent, { p: 1.5 }, /* @__PURE__ */ React25.createElement(PopoverGridContainer, null, /* @__PURE__ */ React25.createElement(MultiSizeValueControl, { item: items[0] }), /* @__PURE__ */ React25.createElement(MultiSizeValueControl, { item: items[1] })), /* @__PURE__ */ React25.createElement(PopoverGridContainer, null, /* @__PURE__ */ React25.createElement(MultiSizeValueControl, { item: items[3] }), /* @__PURE__ */ React25.createElement(MultiSizeValueControl, { item: items[2] }))))
|
|
1080
986
|
));
|
|
1081
987
|
}
|
|
1082
|
-
var MultiSizeValueControl = ({ item }) => /* @__PURE__ */
|
|
988
|
+
var MultiSizeValueControl = ({ item }) => /* @__PURE__ */ React25.createElement(PropKeyProvider, { bind: item.bind }, /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React25.createElement(Grid5, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React25.createElement(ControlLabel, null, item.label)), /* @__PURE__ */ React25.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React25.createElement(SizeControl, { startIcon: item.icon })))));
|
|
1083
989
|
|
|
1084
990
|
// src/controls/linked-dimensions-control.tsx
|
|
1085
|
-
import * as
|
|
991
|
+
import * as React26 from "react";
|
|
1086
992
|
import { dimensionsPropTypeUtil, sizePropTypeUtil as sizePropTypeUtil3 } from "@elementor/editor-props";
|
|
1087
993
|
import { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from "@elementor/icons";
|
|
1088
|
-
import { Grid as
|
|
994
|
+
import { Grid as Grid6, Stack as Stack7, ToggleButton as ToggleButton3 } from "@elementor/ui";
|
|
1089
995
|
import { __ as __7 } from "@wordpress/i18n";
|
|
1090
996
|
var LinkedDimensionsControl = createControl(({ label }) => {
|
|
1091
997
|
const { value: dimensionsValue, setValue: setDimensionsValue, propType } = useBoundProp(dimensionsPropTypeUtil);
|
|
@@ -1105,73 +1011,73 @@ var LinkedDimensionsControl = createControl(({ label }) => {
|
|
|
1105
1011
|
});
|
|
1106
1012
|
};
|
|
1107
1013
|
const LinkedIcon = isLinked ? LinkIcon : DetachIcon;
|
|
1108
|
-
return /* @__PURE__ */
|
|
1014
|
+
return /* @__PURE__ */ React26.createElement(PropProvider, { propType, value: dimensionsValue, setValue: setDimensionsValue }, /* @__PURE__ */ React26.createElement(Stack7, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React26.createElement(ControlLabel, null, label), /* @__PURE__ */ React26.createElement(
|
|
1109
1015
|
ToggleButton3,
|
|
1110
1016
|
{
|
|
1111
|
-
"aria-label": __7("Link
|
|
1017
|
+
"aria-label": __7("Link inputs", "elementor"),
|
|
1112
1018
|
size: "tiny",
|
|
1113
1019
|
value: "check",
|
|
1114
1020
|
selected: isLinked,
|
|
1115
1021
|
sx: { marginLeft: "auto" },
|
|
1116
1022
|
onChange: onLinkToggle
|
|
1117
1023
|
},
|
|
1118
|
-
/* @__PURE__ */
|
|
1119
|
-
)), /* @__PURE__ */
|
|
1024
|
+
/* @__PURE__ */ React26.createElement(LinkedIcon, { fontSize: "tiny" })
|
|
1025
|
+
)), /* @__PURE__ */ React26.createElement(Stack7, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React26.createElement(Grid6, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(ControlLabel, null, __7("Top", "elementor"))), /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(
|
|
1120
1026
|
Control3,
|
|
1121
1027
|
{
|
|
1122
1028
|
bind: "top",
|
|
1123
|
-
startIcon: /* @__PURE__ */
|
|
1029
|
+
startIcon: /* @__PURE__ */ React26.createElement(SideTopIcon, { fontSize: "tiny" }),
|
|
1124
1030
|
isLinked
|
|
1125
1031
|
}
|
|
1126
|
-
))), /* @__PURE__ */
|
|
1032
|
+
))), /* @__PURE__ */ React26.createElement(Grid6, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(ControlLabel, null, __7("Right", "elementor"))), /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(
|
|
1127
1033
|
Control3,
|
|
1128
1034
|
{
|
|
1129
1035
|
bind: "right",
|
|
1130
|
-
startIcon: /* @__PURE__ */
|
|
1036
|
+
startIcon: /* @__PURE__ */ React26.createElement(SideRightIcon, { fontSize: "tiny" }),
|
|
1131
1037
|
isLinked
|
|
1132
1038
|
}
|
|
1133
|
-
)))), /* @__PURE__ */
|
|
1039
|
+
)))), /* @__PURE__ */ React26.createElement(Stack7, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React26.createElement(Grid6, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(ControlLabel, null, __7("Bottom", "elementor"))), /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(
|
|
1134
1040
|
Control3,
|
|
1135
1041
|
{
|
|
1136
1042
|
bind: "bottom",
|
|
1137
|
-
startIcon: /* @__PURE__ */
|
|
1043
|
+
startIcon: /* @__PURE__ */ React26.createElement(SideBottomIcon, { fontSize: "tiny" }),
|
|
1138
1044
|
isLinked
|
|
1139
1045
|
}
|
|
1140
|
-
))), /* @__PURE__ */
|
|
1046
|
+
))), /* @__PURE__ */ React26.createElement(Grid6, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(ControlLabel, null, __7("Left", "elementor"))), /* @__PURE__ */ React26.createElement(Grid6, { item: true, xs: 12 }, /* @__PURE__ */ React26.createElement(
|
|
1141
1047
|
Control3,
|
|
1142
1048
|
{
|
|
1143
1049
|
bind: "left",
|
|
1144
|
-
startIcon: /* @__PURE__ */
|
|
1050
|
+
startIcon: /* @__PURE__ */ React26.createElement(SideLeftIcon, { fontSize: "tiny" }),
|
|
1145
1051
|
isLinked
|
|
1146
1052
|
}
|
|
1147
1053
|
)))));
|
|
1148
1054
|
});
|
|
1149
1055
|
var Control3 = ({ bind, startIcon, isLinked }) => {
|
|
1150
1056
|
if (isLinked) {
|
|
1151
|
-
return /* @__PURE__ */
|
|
1057
|
+
return /* @__PURE__ */ React26.createElement(SizeControl, { startIcon });
|
|
1152
1058
|
}
|
|
1153
|
-
return /* @__PURE__ */
|
|
1059
|
+
return /* @__PURE__ */ React26.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React26.createElement(SizeControl, { startIcon }));
|
|
1154
1060
|
};
|
|
1155
1061
|
|
|
1156
1062
|
// src/controls/font-family-control.tsx
|
|
1157
1063
|
import { Fragment as Fragment4, useId as useId3, useState as useState3 } from "react";
|
|
1158
|
-
import * as
|
|
1064
|
+
import * as React27 from "react";
|
|
1159
1065
|
import { stringPropTypeUtil as stringPropTypeUtil5 } from "@elementor/editor-props";
|
|
1160
|
-
import { ChevronDownIcon, EditIcon, PhotoIcon, SearchIcon, XIcon as
|
|
1066
|
+
import { ChevronDownIcon, EditIcon, PhotoIcon, SearchIcon, XIcon as XIcon2 } from "@elementor/icons";
|
|
1161
1067
|
import {
|
|
1162
1068
|
bindPopover as bindPopover3,
|
|
1163
1069
|
bindTrigger as bindTrigger3,
|
|
1164
|
-
Box as
|
|
1070
|
+
Box as Box2,
|
|
1165
1071
|
Divider,
|
|
1166
|
-
IconButton as
|
|
1167
|
-
InputAdornment as
|
|
1072
|
+
IconButton as IconButton2,
|
|
1073
|
+
InputAdornment as InputAdornment3,
|
|
1168
1074
|
Link,
|
|
1169
1075
|
ListSubheader,
|
|
1170
1076
|
MenuItem as MenuItem3,
|
|
1171
1077
|
MenuList,
|
|
1172
1078
|
Popover as Popover3,
|
|
1173
1079
|
Stack as Stack8,
|
|
1174
|
-
TextField as
|
|
1080
|
+
TextField as TextField5,
|
|
1175
1081
|
Typography as Typography4,
|
|
1176
1082
|
UnstableTag as UnstableTag2,
|
|
1177
1083
|
usePopupState as usePopupState4
|
|
@@ -1226,16 +1132,16 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
|
|
|
1226
1132
|
setSearchValue("");
|
|
1227
1133
|
popoverState.close();
|
|
1228
1134
|
};
|
|
1229
|
-
return /* @__PURE__ */
|
|
1135
|
+
return /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(
|
|
1230
1136
|
UnstableTag2,
|
|
1231
1137
|
{
|
|
1232
1138
|
variant: "outlined",
|
|
1233
1139
|
label: fontFamily,
|
|
1234
|
-
endIcon: /* @__PURE__ */
|
|
1140
|
+
endIcon: /* @__PURE__ */ React27.createElement(ChevronDownIcon, { fontSize: "tiny" }),
|
|
1235
1141
|
...bindTrigger3(popoverState),
|
|
1236
1142
|
fullWidth: true
|
|
1237
1143
|
}
|
|
1238
|
-
), /* @__PURE__ */
|
|
1144
|
+
), /* @__PURE__ */ React27.createElement(
|
|
1239
1145
|
Popover3,
|
|
1240
1146
|
{
|
|
1241
1147
|
disablePortal: true,
|
|
@@ -1244,8 +1150,8 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
|
|
|
1244
1150
|
...bindPopover3(popoverState),
|
|
1245
1151
|
onClose: handleClose
|
|
1246
1152
|
},
|
|
1247
|
-
/* @__PURE__ */
|
|
1248
|
-
|
|
1153
|
+
/* @__PURE__ */ React27.createElement(Stack8, null, /* @__PURE__ */ React27.createElement(Stack8, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React27.createElement(EditIcon, { fontSize: SIZE2, sx: { mr: 0.5 } }), /* @__PURE__ */ React27.createElement(Typography4, { variant: "subtitle2" }, __9("Font Family", "elementor")), /* @__PURE__ */ React27.createElement(IconButton2, { size: SIZE2, sx: { ml: "auto" }, onClick: handleClose }, /* @__PURE__ */ React27.createElement(XIcon2, { fontSize: SIZE2 }))), /* @__PURE__ */ React27.createElement(Box2, { px: 1.5, pb: 1 }, /* @__PURE__ */ React27.createElement(
|
|
1154
|
+
TextField5,
|
|
1249
1155
|
{
|
|
1250
1156
|
fullWidth: true,
|
|
1251
1157
|
size: SIZE2,
|
|
@@ -1253,12 +1159,18 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
|
|
|
1253
1159
|
placeholder: __9("Search", "elementor"),
|
|
1254
1160
|
onChange: handleSearch,
|
|
1255
1161
|
InputProps: {
|
|
1256
|
-
startAdornment: /* @__PURE__ */
|
|
1162
|
+
startAdornment: /* @__PURE__ */ React27.createElement(InputAdornment3, { position: "start" }, /* @__PURE__ */ React27.createElement(SearchIcon, { fontSize: SIZE2 }))
|
|
1257
1163
|
}
|
|
1258
1164
|
}
|
|
1259
|
-
)), /* @__PURE__ */
|
|
1165
|
+
)), /* @__PURE__ */ React27.createElement(Divider, null), /* @__PURE__ */ React27.createElement(Box2, { sx: { overflowY: "auto", height: 260, width: 220 } }, filteredFontFamilies.length > 0 ? /* @__PURE__ */ React27.createElement(MenuList, { role: "listbox", tabIndex: 0 }, filteredFontFamilies.map(([category, items], index) => /* @__PURE__ */ React27.createElement(Fragment4, { key: index }, /* @__PURE__ */ React27.createElement(
|
|
1166
|
+
ListSubheader,
|
|
1167
|
+
{
|
|
1168
|
+
sx: { px: 1.5, typography: "caption", color: "text.tertiary" }
|
|
1169
|
+
},
|
|
1170
|
+
category
|
|
1171
|
+
), items.map((item) => {
|
|
1260
1172
|
const isSelected = item === fontFamily;
|
|
1261
|
-
return /* @__PURE__ */
|
|
1173
|
+
return /* @__PURE__ */ React27.createElement(
|
|
1262
1174
|
MenuItem3,
|
|
1263
1175
|
{
|
|
1264
1176
|
key: item,
|
|
@@ -1268,12 +1180,12 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
|
|
|
1268
1180
|
setFontFamily(item);
|
|
1269
1181
|
handleClose();
|
|
1270
1182
|
},
|
|
1271
|
-
sx: { typography: "caption" },
|
|
1183
|
+
sx: { px: 1.5, typography: "caption" },
|
|
1272
1184
|
style: { fontFamily: item }
|
|
1273
1185
|
},
|
|
1274
1186
|
item
|
|
1275
1187
|
);
|
|
1276
|
-
})))) : /* @__PURE__ */
|
|
1188
|
+
})))) : /* @__PURE__ */ React27.createElement(Stack8, { alignItems: "center", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React27.createElement(PhotoIcon, { fontSize: "large" }), /* @__PURE__ */ React27.createElement(Typography4, { align: "center", variant: "caption", color: "text.secondary" }, __9("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React27.createElement("br", null), "\u201C", searchValue, "\u201D."), /* @__PURE__ */ React27.createElement(Typography4, { align: "center", variant: "caption", color: "text.secondary" }, /* @__PURE__ */ React27.createElement(
|
|
1277
1189
|
Link,
|
|
1278
1190
|
{
|
|
1279
1191
|
color: "secondary",
|
|
@@ -1287,14 +1199,14 @@ var FontFamilyControl = createControl(({ fontFamilies }) => {
|
|
|
1287
1199
|
});
|
|
1288
1200
|
|
|
1289
1201
|
// src/controls/url-control.tsx
|
|
1290
|
-
import * as
|
|
1202
|
+
import * as React28 from "react";
|
|
1291
1203
|
import { urlPropTypeUtil } from "@elementor/editor-props";
|
|
1292
|
-
import { TextField as
|
|
1204
|
+
import { TextField as TextField6 } from "@elementor/ui";
|
|
1293
1205
|
var UrlControl = createControl(({ placeholder }) => {
|
|
1294
1206
|
const { value, setValue } = useBoundProp(urlPropTypeUtil);
|
|
1295
1207
|
const handleChange = (event) => setValue(event.target.value);
|
|
1296
|
-
return /* @__PURE__ */
|
|
1297
|
-
|
|
1208
|
+
return /* @__PURE__ */ React28.createElement(ControlActions, null, /* @__PURE__ */ React28.createElement(
|
|
1209
|
+
TextField6,
|
|
1298
1210
|
{
|
|
1299
1211
|
size: "tiny",
|
|
1300
1212
|
fullWidth: true,
|
|
@@ -1306,18 +1218,139 @@ var UrlControl = createControl(({ placeholder }) => {
|
|
|
1306
1218
|
});
|
|
1307
1219
|
|
|
1308
1220
|
// src/controls/link-control.tsx
|
|
1309
|
-
import * as
|
|
1310
|
-
import { useState as useState4 } from "react";
|
|
1311
|
-
import {
|
|
1221
|
+
import * as React30 from "react";
|
|
1222
|
+
import { useMemo, useState as useState4 } from "react";
|
|
1223
|
+
import {
|
|
1224
|
+
booleanPropTypeUtil,
|
|
1225
|
+
linkPropTypeUtil,
|
|
1226
|
+
numberPropTypeUtil as numberPropTypeUtil2,
|
|
1227
|
+
stringPropTypeUtil as stringPropTypeUtil6,
|
|
1228
|
+
urlPropTypeUtil as urlPropTypeUtil2
|
|
1229
|
+
} from "@elementor/editor-props";
|
|
1312
1230
|
import { httpService } from "@elementor/http";
|
|
1313
1231
|
import { MinusIcon, PlusIcon as PlusIcon2 } from "@elementor/icons";
|
|
1314
1232
|
import { useSessionStorage } from "@elementor/session";
|
|
1315
|
-
import { Collapse, Divider as Divider2, Grid as
|
|
1233
|
+
import { Collapse, Divider as Divider2, Grid as Grid7, IconButton as IconButton4, Stack as Stack9, Switch } from "@elementor/ui";
|
|
1316
1234
|
import { __ as __10 } from "@wordpress/i18n";
|
|
1235
|
+
|
|
1236
|
+
// src/components/autocomplete.tsx
|
|
1237
|
+
import * as React29 from "react";
|
|
1238
|
+
import { forwardRef as forwardRef2 } from "react";
|
|
1239
|
+
import { XIcon as XIcon3 } from "@elementor/icons";
|
|
1240
|
+
import {
|
|
1241
|
+
Autocomplete as AutocompleteBase,
|
|
1242
|
+
Box as Box3,
|
|
1243
|
+
IconButton as IconButton3,
|
|
1244
|
+
InputAdornment as InputAdornment4,
|
|
1245
|
+
TextField as TextField7
|
|
1246
|
+
} from "@elementor/ui";
|
|
1247
|
+
var Autocomplete = forwardRef2((props, ref) => {
|
|
1248
|
+
const {
|
|
1249
|
+
options,
|
|
1250
|
+
onOptionChange,
|
|
1251
|
+
onTextChange,
|
|
1252
|
+
allowCustomValues = false,
|
|
1253
|
+
placeholder = "",
|
|
1254
|
+
minInputLength = 2,
|
|
1255
|
+
value = "",
|
|
1256
|
+
...restProps
|
|
1257
|
+
} = props;
|
|
1258
|
+
const optionKeys = _factoryFilter(value, options, minInputLength).map(({ id }) => id);
|
|
1259
|
+
const allowClear = !!value;
|
|
1260
|
+
const muiWarningPreventer = allowCustomValues || !!value?.toString()?.length;
|
|
1261
|
+
const isOptionEqualToValue = muiWarningPreventer ? void 0 : () => true;
|
|
1262
|
+
const isValueFromOptions = typeof value === "number" && !!findMatchingOption(options, value);
|
|
1263
|
+
return /* @__PURE__ */ React29.createElement(
|
|
1264
|
+
AutocompleteBase,
|
|
1265
|
+
{
|
|
1266
|
+
...restProps,
|
|
1267
|
+
ref,
|
|
1268
|
+
forcePopupIcon: false,
|
|
1269
|
+
disableClearable: true,
|
|
1270
|
+
freeSolo: allowCustomValues,
|
|
1271
|
+
value: value?.toString() || "",
|
|
1272
|
+
size: "tiny",
|
|
1273
|
+
onChange: (_, newValue) => onOptionChange(Number(newValue)),
|
|
1274
|
+
readOnly: isValueFromOptions,
|
|
1275
|
+
options: optionKeys,
|
|
1276
|
+
getOptionKey: (optionId) => findMatchingOption(options, optionId)?.id || optionId,
|
|
1277
|
+
getOptionLabel: (optionId) => findMatchingOption(options, optionId)?.label || optionId.toString(),
|
|
1278
|
+
groupBy: isCategorizedOptionPool(options) ? (optionId) => findMatchingOption(options, optionId)?.groupLabel || optionId : void 0,
|
|
1279
|
+
isOptionEqualToValue,
|
|
1280
|
+
filterOptions: () => optionKeys,
|
|
1281
|
+
renderOption: (optionProps, optionId) => /* @__PURE__ */ React29.createElement(Box3, { component: "li", ...optionProps, key: optionProps.id }, findMatchingOption(options, optionId)?.label ?? optionId),
|
|
1282
|
+
renderInput: (params) => /* @__PURE__ */ React29.createElement(
|
|
1283
|
+
TextInput,
|
|
1284
|
+
{
|
|
1285
|
+
params,
|
|
1286
|
+
handleChange: (newValue) => onTextChange?.(newValue),
|
|
1287
|
+
allowClear,
|
|
1288
|
+
placeholder,
|
|
1289
|
+
hasSelectedValue: isValueFromOptions
|
|
1290
|
+
}
|
|
1291
|
+
)
|
|
1292
|
+
}
|
|
1293
|
+
);
|
|
1294
|
+
});
|
|
1295
|
+
var TextInput = ({
|
|
1296
|
+
params,
|
|
1297
|
+
allowClear,
|
|
1298
|
+
placeholder,
|
|
1299
|
+
handleChange,
|
|
1300
|
+
hasSelectedValue
|
|
1301
|
+
}) => {
|
|
1302
|
+
const onChange = (event) => {
|
|
1303
|
+
handleChange(event.target.value);
|
|
1304
|
+
};
|
|
1305
|
+
return /* @__PURE__ */ React29.createElement(
|
|
1306
|
+
TextField7,
|
|
1307
|
+
{
|
|
1308
|
+
...params,
|
|
1309
|
+
placeholder,
|
|
1310
|
+
onChange,
|
|
1311
|
+
sx: {
|
|
1312
|
+
"& .MuiInputBase-input": {
|
|
1313
|
+
cursor: hasSelectedValue ? "default" : void 0
|
|
1314
|
+
}
|
|
1315
|
+
},
|
|
1316
|
+
InputProps: {
|
|
1317
|
+
...params.InputProps,
|
|
1318
|
+
endAdornment: /* @__PURE__ */ React29.createElement(ClearButton, { params, allowClear, handleChange })
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
);
|
|
1322
|
+
};
|
|
1323
|
+
var ClearButton = ({
|
|
1324
|
+
allowClear,
|
|
1325
|
+
handleChange,
|
|
1326
|
+
params
|
|
1327
|
+
}) => /* @__PURE__ */ React29.createElement(InputAdornment4, { position: "end" }, allowClear && /* @__PURE__ */ React29.createElement(IconButton3, { size: params.size, onClick: () => handleChange(null), sx: { cursor: "pointer" } }, /* @__PURE__ */ React29.createElement(XIcon3, { fontSize: params.size })));
|
|
1328
|
+
function findMatchingOption(options, optionId = null) {
|
|
1329
|
+
const formattedOption = (optionId || "").toString();
|
|
1330
|
+
return options.find(({ id }) => formattedOption === id.toString());
|
|
1331
|
+
}
|
|
1332
|
+
function isCategorizedOptionPool(options) {
|
|
1333
|
+
return options.every((option) => "groupLabel" in option);
|
|
1334
|
+
}
|
|
1335
|
+
function _factoryFilter(newValue, options, minInputLength) {
|
|
1336
|
+
if (null === newValue) {
|
|
1337
|
+
return options;
|
|
1338
|
+
}
|
|
1339
|
+
const formattedValue = String(newValue || "")?.toLowerCase();
|
|
1340
|
+
if (formattedValue.length < minInputLength) {
|
|
1341
|
+
return new Array(0);
|
|
1342
|
+
}
|
|
1343
|
+
return options.filter(
|
|
1344
|
+
(option) => String(option.id).toLowerCase().includes(formattedValue) || option.label.toLowerCase().includes(formattedValue)
|
|
1345
|
+
);
|
|
1346
|
+
}
|
|
1347
|
+
|
|
1348
|
+
// src/controls/link-control.tsx
|
|
1317
1349
|
var SIZE3 = "tiny";
|
|
1318
1350
|
var LinkControl = createControl((props) => {
|
|
1319
1351
|
const { value, path, setValue, ...propContext } = useBoundProp(linkPropTypeUtil);
|
|
1320
1352
|
const [linkSessionValue, setLinkSessionValue] = useSessionStorage(path.join("/"));
|
|
1353
|
+
const [isEnabled, setIsEnabled] = useState4(!!value);
|
|
1321
1354
|
const {
|
|
1322
1355
|
allowCustomValues,
|
|
1323
1356
|
queryOptions: { endpoint = "", requestParams = {} },
|
|
@@ -1328,28 +1361,25 @@ var LinkControl = createControl((props) => {
|
|
|
1328
1361
|
generateFirstLoadedOption(value)
|
|
1329
1362
|
);
|
|
1330
1363
|
const onEnabledChange = () => {
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
setValue(isEnabled ? null : linkSessionValue?.value ?? { destination: null });
|
|
1364
|
+
setIsEnabled((prevState) => !prevState);
|
|
1365
|
+
setValue(isEnabled ? null : linkSessionValue?.value ?? null);
|
|
1334
1366
|
setLinkSessionValue({ value, meta: { isEnabled: !isEnabled } });
|
|
1335
1367
|
};
|
|
1336
1368
|
const onOptionChange = (newValue) => {
|
|
1337
|
-
const valueToSave = {
|
|
1369
|
+
const valueToSave = newValue ? {
|
|
1338
1370
|
...value,
|
|
1339
|
-
destination:
|
|
1340
|
-
label:
|
|
1341
|
-
|
|
1342
|
-
value: findMatchingOption(options, newValue?.toString())?.label || ""
|
|
1343
|
-
}
|
|
1344
|
-
};
|
|
1371
|
+
destination: numberPropTypeUtil2.create(newValue),
|
|
1372
|
+
label: stringPropTypeUtil6.create(findMatchingOption(options, newValue)?.label || null)
|
|
1373
|
+
} : null;
|
|
1345
1374
|
onSaveNewValue(valueToSave);
|
|
1346
1375
|
};
|
|
1347
1376
|
const onTextChange = (newValue) => {
|
|
1348
|
-
|
|
1377
|
+
newValue = newValue?.trim() || "";
|
|
1378
|
+
const valueToSave = newValue ? {
|
|
1349
1379
|
...value,
|
|
1350
|
-
destination:
|
|
1380
|
+
destination: urlPropTypeUtil2.create(newValue),
|
|
1351
1381
|
label: null
|
|
1352
|
-
};
|
|
1382
|
+
} : null;
|
|
1353
1383
|
onSaveNewValue(valueToSave);
|
|
1354
1384
|
updateOptions(newValue);
|
|
1355
1385
|
};
|
|
@@ -1362,15 +1392,18 @@ var LinkControl = createControl((props) => {
|
|
|
1362
1392
|
if (!newValue || !endpoint || newValue.length < minInputLength) {
|
|
1363
1393
|
return;
|
|
1364
1394
|
}
|
|
1365
|
-
debounceFetch(newValue)
|
|
1395
|
+
debounceFetch({ ...requestParams, term: newValue });
|
|
1366
1396
|
};
|
|
1367
|
-
const debounceFetch = (
|
|
1368
|
-
() =>
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1397
|
+
const debounceFetch = useMemo(
|
|
1398
|
+
() => debounce(
|
|
1399
|
+
(params) => fetchOptions(endpoint, params).then((newOptions) => {
|
|
1400
|
+
setOptions(formatOptions(newOptions));
|
|
1401
|
+
}),
|
|
1402
|
+
400
|
|
1403
|
+
),
|
|
1404
|
+
[endpoint]
|
|
1372
1405
|
);
|
|
1373
|
-
return /* @__PURE__ */
|
|
1406
|
+
return /* @__PURE__ */ React30.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React30.createElement(Stack9, { gap: 1.5 }, /* @__PURE__ */ React30.createElement(Divider2, null), /* @__PURE__ */ React30.createElement(
|
|
1374
1407
|
Stack9,
|
|
1375
1408
|
{
|
|
1376
1409
|
direction: "row",
|
|
@@ -1379,38 +1412,37 @@ var LinkControl = createControl((props) => {
|
|
|
1379
1412
|
alignItems: "center"
|
|
1380
1413
|
}
|
|
1381
1414
|
},
|
|
1382
|
-
/* @__PURE__ */
|
|
1383
|
-
/* @__PURE__ */
|
|
1415
|
+
/* @__PURE__ */ React30.createElement(ControlLabel, null, __10("Link", "elementor")),
|
|
1416
|
+
/* @__PURE__ */ React30.createElement(
|
|
1384
1417
|
ToggleIconControl,
|
|
1385
1418
|
{
|
|
1386
|
-
enabled:
|
|
1419
|
+
enabled: isEnabled,
|
|
1387
1420
|
onIconClick: onEnabledChange,
|
|
1388
|
-
label: __10("Toggle
|
|
1421
|
+
label: __10("Toggle link", "elementor")
|
|
1389
1422
|
}
|
|
1390
1423
|
)
|
|
1391
|
-
), /* @__PURE__ */
|
|
1392
|
-
|
|
1424
|
+
), /* @__PURE__ */ React30.createElement(Collapse, { in: isEnabled, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React30.createElement(Stack9, { gap: 1.5 }, /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind: "destination" }, /* @__PURE__ */ React30.createElement(ControlActions, null, /* @__PURE__ */ React30.createElement(
|
|
1425
|
+
Autocomplete,
|
|
1393
1426
|
{
|
|
1394
1427
|
options,
|
|
1395
1428
|
allowCustomValues,
|
|
1396
1429
|
placeholder,
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
minInputLength
|
|
1401
|
-
customValue: value?.destination?.value?.toString()
|
|
1430
|
+
value: value?.destination?.value,
|
|
1431
|
+
onOptionChange,
|
|
1432
|
+
onTextChange,
|
|
1433
|
+
minInputLength
|
|
1402
1434
|
}
|
|
1403
|
-
)), /* @__PURE__ */
|
|
1435
|
+
))), /* @__PURE__ */ React30.createElement(PropKeyProvider, { bind: "isTargetBlank" }, /* @__PURE__ */ React30.createElement(SwitchControl, null))))));
|
|
1404
1436
|
});
|
|
1405
1437
|
var ToggleIconControl = ({ enabled, onIconClick, label }) => {
|
|
1406
|
-
return /* @__PURE__ */
|
|
1438
|
+
return /* @__PURE__ */ React30.createElement(IconButton4, { size: SIZE3, onClick: onIconClick, "aria-label": label }, enabled ? /* @__PURE__ */ React30.createElement(MinusIcon, { fontSize: SIZE3 }) : /* @__PURE__ */ React30.createElement(PlusIcon2, { fontSize: SIZE3 }));
|
|
1407
1439
|
};
|
|
1408
1440
|
var SwitchControl = () => {
|
|
1409
1441
|
const { value = false, setValue } = useBoundProp(booleanPropTypeUtil);
|
|
1410
1442
|
const onClick = () => {
|
|
1411
1443
|
setValue(!value);
|
|
1412
1444
|
};
|
|
1413
|
-
return /* @__PURE__ */
|
|
1445
|
+
return /* @__PURE__ */ React30.createElement(Grid7, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React30.createElement(Grid7, { item: true }, /* @__PURE__ */ React30.createElement(ControlLabel, null, __10("Open in new tab", "elementor"))), /* @__PURE__ */ React30.createElement(Grid7, { item: true }, /* @__PURE__ */ React30.createElement(Switch, { checked: value, onClick })));
|
|
1414
1446
|
};
|
|
1415
1447
|
async function fetchOptions(ajaxUrl, params) {
|
|
1416
1448
|
if (!params || !ajaxUrl) {
|
|
@@ -1451,10 +1483,10 @@ function debounce(fn, timeout) {
|
|
|
1451
1483
|
}
|
|
1452
1484
|
|
|
1453
1485
|
// src/controls/gap-control.tsx
|
|
1454
|
-
import * as
|
|
1486
|
+
import * as React31 from "react";
|
|
1455
1487
|
import { layoutDirectionPropTypeUtil, sizePropTypeUtil as sizePropTypeUtil4 } from "@elementor/editor-props";
|
|
1456
1488
|
import { DetachIcon as DetachIcon2, LinkIcon as LinkIcon2 } from "@elementor/icons";
|
|
1457
|
-
import { Grid as
|
|
1489
|
+
import { Grid as Grid8, Stack as Stack10, ToggleButton as ToggleButton4 } from "@elementor/ui";
|
|
1458
1490
|
import { __ as __11 } from "@wordpress/i18n";
|
|
1459
1491
|
var GapControl = createControl(({ label }) => {
|
|
1460
1492
|
const {
|
|
@@ -1476,28 +1508,28 @@ var GapControl = createControl(({ label }) => {
|
|
|
1476
1508
|
});
|
|
1477
1509
|
};
|
|
1478
1510
|
const LinkedIcon = isLinked ? LinkIcon2 : DetachIcon2;
|
|
1479
|
-
return /* @__PURE__ */
|
|
1511
|
+
return /* @__PURE__ */ React31.createElement(PropProvider, { propType, value: directionValue, setValue: setDirectionValue }, /* @__PURE__ */ React31.createElement(Stack10, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(ControlLabel, null, label), /* @__PURE__ */ React31.createElement(
|
|
1480
1512
|
ToggleButton4,
|
|
1481
1513
|
{
|
|
1482
|
-
"aria-label": __11("Link
|
|
1514
|
+
"aria-label": __11("Link inputs", "elementor"),
|
|
1483
1515
|
size: "tiny",
|
|
1484
1516
|
value: "check",
|
|
1485
1517
|
selected: isLinked,
|
|
1486
1518
|
sx: { marginLeft: "auto" },
|
|
1487
1519
|
onChange: onLinkToggle
|
|
1488
1520
|
},
|
|
1489
|
-
/* @__PURE__ */
|
|
1490
|
-
)), /* @__PURE__ */
|
|
1521
|
+
/* @__PURE__ */ React31.createElement(LinkedIcon, { fontSize: "tiny" })
|
|
1522
|
+
)), /* @__PURE__ */ React31.createElement(Stack10, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(ControlLabel, null, __11("Column", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Control4, { bind: "column", isLinked }))), /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(ControlLabel, null, __11("Row", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 12 }, /* @__PURE__ */ React31.createElement(Control4, { bind: "row", isLinked })))));
|
|
1491
1523
|
});
|
|
1492
1524
|
var Control4 = ({ bind, isLinked }) => {
|
|
1493
1525
|
if (isLinked) {
|
|
1494
|
-
return /* @__PURE__ */
|
|
1526
|
+
return /* @__PURE__ */ React31.createElement(SizeControl, null);
|
|
1495
1527
|
}
|
|
1496
|
-
return /* @__PURE__ */
|
|
1528
|
+
return /* @__PURE__ */ React31.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React31.createElement(SizeControl, null));
|
|
1497
1529
|
};
|
|
1498
1530
|
|
|
1499
1531
|
// src/controls/svg-media-control.tsx
|
|
1500
|
-
import * as
|
|
1532
|
+
import * as React32 from "react";
|
|
1501
1533
|
import { imageSrcPropTypeUtil as imageSrcPropTypeUtil2 } from "@elementor/editor-props";
|
|
1502
1534
|
import { UploadIcon as UploadIcon2 } from "@elementor/icons";
|
|
1503
1535
|
import { Button as Button3, Card as Card2, CardMedia as CardMedia2, CardOverlay as CardOverlay2, CircularProgress as CircularProgress2, Stack as Stack11, styled as styled3 } from "@elementor/ui";
|
|
@@ -1545,7 +1577,7 @@ var SvgMediaControl = createControl(() => {
|
|
|
1545
1577
|
});
|
|
1546
1578
|
}
|
|
1547
1579
|
});
|
|
1548
|
-
return /* @__PURE__ */
|
|
1580
|
+
return /* @__PURE__ */ React32.createElement(Stack11, { gap: 1 }, /* @__PURE__ */ React32.createElement(ControlLabel, null, " ", __12("Choose SVG", "elementor"), " "), /* @__PURE__ */ React32.createElement(ControlActions, null, /* @__PURE__ */ React32.createElement(StyledCard, { variant: "outlined" }, /* @__PURE__ */ React32.createElement(StyledCardMediaContainer, null, isFetching ? /* @__PURE__ */ React32.createElement(CircularProgress2, { role: "progressbar" }) : /* @__PURE__ */ React32.createElement(
|
|
1549
1581
|
CardMedia2,
|
|
1550
1582
|
{
|
|
1551
1583
|
component: "img",
|
|
@@ -1553,7 +1585,7 @@ var SvgMediaControl = createControl(() => {
|
|
|
1553
1585
|
alt: __12("Preview SVG", "elementor"),
|
|
1554
1586
|
sx: { maxHeight: "140px", width: "50px" }
|
|
1555
1587
|
}
|
|
1556
|
-
)), /* @__PURE__ */
|
|
1588
|
+
)), /* @__PURE__ */ React32.createElement(
|
|
1557
1589
|
CardOverlay2,
|
|
1558
1590
|
{
|
|
1559
1591
|
sx: {
|
|
@@ -1562,7 +1594,7 @@ var SvgMediaControl = createControl(() => {
|
|
|
1562
1594
|
}
|
|
1563
1595
|
}
|
|
1564
1596
|
},
|
|
1565
|
-
/* @__PURE__ */
|
|
1597
|
+
/* @__PURE__ */ React32.createElement(Stack11, { gap: 1 }, /* @__PURE__ */ React32.createElement(
|
|
1566
1598
|
Button3,
|
|
1567
1599
|
{
|
|
1568
1600
|
size: "tiny",
|
|
@@ -1571,13 +1603,13 @@ var SvgMediaControl = createControl(() => {
|
|
|
1571
1603
|
onClick: () => open({ mode: "browse" })
|
|
1572
1604
|
},
|
|
1573
1605
|
__12("Select SVG", "elementor")
|
|
1574
|
-
), /* @__PURE__ */
|
|
1606
|
+
), /* @__PURE__ */ React32.createElement(
|
|
1575
1607
|
Button3,
|
|
1576
1608
|
{
|
|
1577
1609
|
size: "tiny",
|
|
1578
1610
|
variant: "text",
|
|
1579
1611
|
color: "inherit",
|
|
1580
|
-
startIcon: /* @__PURE__ */
|
|
1612
|
+
startIcon: /* @__PURE__ */ React32.createElement(UploadIcon2, null),
|
|
1581
1613
|
onClick: () => open({ mode: "upload" })
|
|
1582
1614
|
},
|
|
1583
1615
|
__12("Upload SVG", "elementor")
|
|
@@ -1586,19 +1618,19 @@ var SvgMediaControl = createControl(() => {
|
|
|
1586
1618
|
});
|
|
1587
1619
|
|
|
1588
1620
|
// src/controls/background-control/background-control.tsx
|
|
1589
|
-
import * as
|
|
1621
|
+
import * as React38 from "react";
|
|
1590
1622
|
import { backgroundPropTypeUtil } from "@elementor/editor-props";
|
|
1591
|
-
import { Grid as
|
|
1623
|
+
import { Grid as Grid14 } from "@elementor/ui";
|
|
1592
1624
|
import { __ as __18 } from "@wordpress/i18n";
|
|
1593
1625
|
|
|
1594
1626
|
// src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx
|
|
1595
|
-
import * as
|
|
1627
|
+
import * as React37 from "react";
|
|
1596
1628
|
import {
|
|
1597
1629
|
backgroundColorOverlayPropTypeUtil as backgroundColorOverlayPropTypeUtil2,
|
|
1598
1630
|
backgroundImageOverlayPropTypeUtil as backgroundImageOverlayPropTypeUtil2,
|
|
1599
1631
|
backgroundOverlayPropTypeUtil
|
|
1600
1632
|
} from "@elementor/editor-props";
|
|
1601
|
-
import { Box as Box4, CardMedia as CardMedia3, Grid as
|
|
1633
|
+
import { Box as Box4, CardMedia as CardMedia3, Grid as Grid13, Tab, TabPanel, Tabs, UnstableColorIndicator as UnstableColorIndicator2 } from "@elementor/ui";
|
|
1602
1634
|
import { useWpMediaAttachment as useWpMediaAttachment3 } from "@elementor/wp-media";
|
|
1603
1635
|
import { __ as __17 } from "@wordpress/i18n";
|
|
1604
1636
|
|
|
@@ -1607,49 +1639,49 @@ import { parseEnv } from "@elementor/env";
|
|
|
1607
1639
|
var { env } = parseEnv("@elementor/editor-controls");
|
|
1608
1640
|
|
|
1609
1641
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx
|
|
1610
|
-
import * as
|
|
1642
|
+
import * as React33 from "react";
|
|
1611
1643
|
import { PinIcon, PinnedOffIcon } from "@elementor/icons";
|
|
1612
|
-
import { Grid as
|
|
1644
|
+
import { Grid as Grid9 } from "@elementor/ui";
|
|
1613
1645
|
import { __ as __13 } from "@wordpress/i18n";
|
|
1614
1646
|
var attachmentControlOptions = [
|
|
1615
1647
|
{
|
|
1616
1648
|
value: "fixed",
|
|
1617
1649
|
label: __13("Fixed", "elementor"),
|
|
1618
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1650
|
+
renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(PinIcon, { fontSize: size }),
|
|
1619
1651
|
showTooltip: true
|
|
1620
1652
|
},
|
|
1621
1653
|
{
|
|
1622
1654
|
value: "scroll",
|
|
1623
1655
|
label: __13("Scroll", "elementor"),
|
|
1624
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1656
|
+
renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(PinnedOffIcon, { fontSize: size }),
|
|
1625
1657
|
showTooltip: true
|
|
1626
1658
|
}
|
|
1627
1659
|
];
|
|
1628
1660
|
var BackgroundImageOverlayAttachment = () => {
|
|
1629
|
-
return /* @__PURE__ */
|
|
1661
|
+
return /* @__PURE__ */ React33.createElement(PopoverGridContainer, null, /* @__PURE__ */ React33.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(ControlLabel, null, __13("Attachment", "elementor"))), /* @__PURE__ */ React33.createElement(Grid9, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React33.createElement(ToggleControl, { options: attachmentControlOptions })));
|
|
1630
1662
|
};
|
|
1631
1663
|
|
|
1632
1664
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx
|
|
1633
|
-
import * as
|
|
1634
|
-
import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as
|
|
1665
|
+
import * as React34 from "react";
|
|
1666
|
+
import { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil as stringPropTypeUtil7 } from "@elementor/editor-props";
|
|
1635
1667
|
import { LetterXIcon, LetterYIcon } from "@elementor/icons";
|
|
1636
|
-
import { Grid as
|
|
1668
|
+
import { Grid as Grid10, MenuItem as MenuItem4, Select as Select2 } from "@elementor/ui";
|
|
1637
1669
|
import { __ as __14 } from "@wordpress/i18n";
|
|
1638
1670
|
var backgroundPositionOptions = [
|
|
1639
|
-
{ label: __14("Center
|
|
1640
|
-
{ label: __14("Center
|
|
1641
|
-
{ label: __14("Center
|
|
1642
|
-
{ label: __14("Top
|
|
1643
|
-
{ label: __14("Top
|
|
1644
|
-
{ label: __14("Top
|
|
1645
|
-
{ label: __14("Bottom
|
|
1646
|
-
{ label: __14("Bottom
|
|
1647
|
-
{ label: __14("Bottom
|
|
1671
|
+
{ label: __14("Center center", "elementor"), value: "center center" },
|
|
1672
|
+
{ label: __14("Center left", "elementor"), value: "center left" },
|
|
1673
|
+
{ label: __14("Center right", "elementor"), value: "center right" },
|
|
1674
|
+
{ label: __14("Top center", "elementor"), value: "top center" },
|
|
1675
|
+
{ label: __14("Top left", "elementor"), value: "top left" },
|
|
1676
|
+
{ label: __14("Top right", "elementor"), value: "top right" },
|
|
1677
|
+
{ label: __14("Bottom center", "elementor"), value: "bottom center" },
|
|
1678
|
+
{ label: __14("Bottom left", "elementor"), value: "bottom left" },
|
|
1679
|
+
{ label: __14("Bottom right", "elementor"), value: "bottom right" },
|
|
1648
1680
|
{ label: __14("Custom", "elementor"), value: "custom" }
|
|
1649
1681
|
];
|
|
1650
1682
|
var BackgroundImageOverlayPosition = () => {
|
|
1651
1683
|
const backgroundImageOffsetContext = useBoundProp(backgroundImagePositionOffsetPropTypeUtil);
|
|
1652
|
-
const stringPropContext = useBoundProp(
|
|
1684
|
+
const stringPropContext = useBoundProp(stringPropTypeUtil7);
|
|
1653
1685
|
const isCustom = !!backgroundImageOffsetContext.value;
|
|
1654
1686
|
const handlePositionChange = (event) => {
|
|
1655
1687
|
const value = event.target.value || null;
|
|
@@ -1659,7 +1691,7 @@ var BackgroundImageOverlayPosition = () => {
|
|
|
1659
1691
|
stringPropContext.setValue(value);
|
|
1660
1692
|
}
|
|
1661
1693
|
};
|
|
1662
|
-
return /* @__PURE__ */
|
|
1694
|
+
return /* @__PURE__ */ React34.createElement(Grid10, { container: true, spacing: 1.5 }, /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React34.createElement(PopoverGridContainer, null, /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(ControlLabel, null, __14("Position", "elementor"))), /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end", overflow: "hidden" } }, /* @__PURE__ */ React34.createElement(
|
|
1663
1695
|
Select2,
|
|
1664
1696
|
{
|
|
1665
1697
|
size: "tiny",
|
|
@@ -1667,48 +1699,48 @@ var BackgroundImageOverlayPosition = () => {
|
|
|
1667
1699
|
onChange: handlePositionChange,
|
|
1668
1700
|
fullWidth: true
|
|
1669
1701
|
},
|
|
1670
|
-
backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */
|
|
1671
|
-
)))), isCustom ? /* @__PURE__ */
|
|
1702
|
+
backgroundPositionOptions.map(({ label, value }) => /* @__PURE__ */ React34.createElement(MenuItem4, { key: value, value: value ?? "" }, label))
|
|
1703
|
+
)))), isCustom ? /* @__PURE__ */ React34.createElement(PropProvider, { ...backgroundImageOffsetContext }, /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React34.createElement(Grid10, { container: true, spacing: 1.5 }, /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind: "x" }, /* @__PURE__ */ React34.createElement(SizeControl, { startIcon: /* @__PURE__ */ React34.createElement(LetterXIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React34.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(PropKeyProvider, { bind: "y" }, /* @__PURE__ */ React34.createElement(SizeControl, { startIcon: /* @__PURE__ */ React34.createElement(LetterYIcon, { fontSize: "tiny" }) })))))) : null);
|
|
1672
1704
|
};
|
|
1673
1705
|
|
|
1674
1706
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx
|
|
1675
|
-
import * as
|
|
1707
|
+
import * as React35 from "react";
|
|
1676
1708
|
import { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon as XIcon4 } from "@elementor/icons";
|
|
1677
|
-
import { Grid as
|
|
1709
|
+
import { Grid as Grid11 } from "@elementor/ui";
|
|
1678
1710
|
import { __ as __15 } from "@wordpress/i18n";
|
|
1679
1711
|
var repeatControlOptions = [
|
|
1680
1712
|
{
|
|
1681
1713
|
value: "repeat",
|
|
1682
1714
|
label: __15("Repeat", "elementor"),
|
|
1683
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1715
|
+
renderContent: ({ size }) => /* @__PURE__ */ React35.createElement(GridDotsIcon, { fontSize: size }),
|
|
1684
1716
|
showTooltip: true
|
|
1685
1717
|
},
|
|
1686
1718
|
{
|
|
1687
1719
|
value: "repeat-x",
|
|
1688
1720
|
label: __15("Repeat-x", "elementor"),
|
|
1689
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1721
|
+
renderContent: ({ size }) => /* @__PURE__ */ React35.createElement(DotsHorizontalIcon, { fontSize: size }),
|
|
1690
1722
|
showTooltip: true
|
|
1691
1723
|
},
|
|
1692
1724
|
{
|
|
1693
1725
|
value: "repeat-y",
|
|
1694
1726
|
label: __15("Repeat-y", "elementor"),
|
|
1695
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1727
|
+
renderContent: ({ size }) => /* @__PURE__ */ React35.createElement(DotsVerticalIcon, { fontSize: size }),
|
|
1696
1728
|
showTooltip: true
|
|
1697
1729
|
},
|
|
1698
1730
|
{
|
|
1699
1731
|
value: "no-repeat",
|
|
1700
1732
|
label: __15("No-Repeat", "elementor"),
|
|
1701
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1733
|
+
renderContent: ({ size }) => /* @__PURE__ */ React35.createElement(XIcon4, { fontSize: size }),
|
|
1702
1734
|
showTooltip: true
|
|
1703
1735
|
}
|
|
1704
1736
|
];
|
|
1705
1737
|
var BackgroundImageOverlayRepeat = () => {
|
|
1706
|
-
return /* @__PURE__ */
|
|
1738
|
+
return /* @__PURE__ */ React35.createElement(PopoverGridContainer, null, /* @__PURE__ */ React35.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React35.createElement(ControlLabel, null, __15("Repeat", "elementor"))), /* @__PURE__ */ React35.createElement(Grid11, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React35.createElement(ToggleControl, { options: repeatControlOptions })));
|
|
1707
1739
|
};
|
|
1708
1740
|
|
|
1709
1741
|
// src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx
|
|
1710
|
-
import * as
|
|
1711
|
-
import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as
|
|
1742
|
+
import * as React36 from "react";
|
|
1743
|
+
import { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil as stringPropTypeUtil8 } from "@elementor/editor-props";
|
|
1712
1744
|
import {
|
|
1713
1745
|
ArrowBarBothIcon,
|
|
1714
1746
|
ArrowsMaximizeIcon,
|
|
@@ -1717,37 +1749,37 @@ import {
|
|
|
1717
1749
|
LetterAIcon,
|
|
1718
1750
|
PencilIcon
|
|
1719
1751
|
} from "@elementor/icons";
|
|
1720
|
-
import { Grid as
|
|
1752
|
+
import { Grid as Grid12 } from "@elementor/ui";
|
|
1721
1753
|
import { __ as __16 } from "@wordpress/i18n";
|
|
1722
1754
|
var sizeControlOptions = [
|
|
1723
1755
|
{
|
|
1724
1756
|
value: "auto",
|
|
1725
1757
|
label: __16("Auto", "elementor"),
|
|
1726
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1758
|
+
renderContent: ({ size }) => /* @__PURE__ */ React36.createElement(LetterAIcon, { fontSize: size }),
|
|
1727
1759
|
showTooltip: true
|
|
1728
1760
|
},
|
|
1729
1761
|
{
|
|
1730
1762
|
value: "cover",
|
|
1731
1763
|
label: __16("Cover", "elementor"),
|
|
1732
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1764
|
+
renderContent: ({ size }) => /* @__PURE__ */ React36.createElement(ArrowsMaximizeIcon, { fontSize: size }),
|
|
1733
1765
|
showTooltip: true
|
|
1734
1766
|
},
|
|
1735
1767
|
{
|
|
1736
1768
|
value: "contain",
|
|
1737
1769
|
label: __16("Contain", "elementor"),
|
|
1738
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1770
|
+
renderContent: ({ size }) => /* @__PURE__ */ React36.createElement(ArrowBarBothIcon, { fontSize: size }),
|
|
1739
1771
|
showTooltip: true
|
|
1740
1772
|
},
|
|
1741
1773
|
{
|
|
1742
1774
|
value: "custom",
|
|
1743
1775
|
label: __16("Custom", "elementor"),
|
|
1744
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1776
|
+
renderContent: ({ size }) => /* @__PURE__ */ React36.createElement(PencilIcon, { fontSize: size }),
|
|
1745
1777
|
showTooltip: true
|
|
1746
1778
|
}
|
|
1747
1779
|
];
|
|
1748
1780
|
var BackgroundImageOverlaySize = () => {
|
|
1749
1781
|
const backgroundImageScaleContext = useBoundProp(backgroundImageSizeScalePropTypeUtil);
|
|
1750
|
-
const stringPropContext = useBoundProp(
|
|
1782
|
+
const stringPropContext = useBoundProp(stringPropTypeUtil8);
|
|
1751
1783
|
const isCustom = !!backgroundImageScaleContext.value;
|
|
1752
1784
|
const handleSizeChange = (size) => {
|
|
1753
1785
|
if (size === "custom") {
|
|
@@ -1756,7 +1788,7 @@ var BackgroundImageOverlaySize = () => {
|
|
|
1756
1788
|
stringPropContext.setValue(size);
|
|
1757
1789
|
}
|
|
1758
1790
|
};
|
|
1759
|
-
return /* @__PURE__ */
|
|
1791
|
+
return /* @__PURE__ */ React36.createElement(Grid12, { container: true, spacing: 1.5 }, /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(PopoverGridContainer, null, /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(ControlLabel, null, __16("Size", "elementor"))), /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React36.createElement(
|
|
1760
1792
|
ControlToggleButtonGroup,
|
|
1761
1793
|
{
|
|
1762
1794
|
exclusive: true,
|
|
@@ -1764,7 +1796,7 @@ var BackgroundImageOverlaySize = () => {
|
|
|
1764
1796
|
value: backgroundImageScaleContext.value ? "custom" : stringPropContext.value,
|
|
1765
1797
|
onChange: handleSizeChange
|
|
1766
1798
|
}
|
|
1767
|
-
)))), isCustom ? /* @__PURE__ */
|
|
1799
|
+
)))), isCustom ? /* @__PURE__ */ React36.createElement(PropProvider, { ...backgroundImageScaleContext }, /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 12 }, /* @__PURE__ */ React36.createElement(PopoverGridContainer, null, /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind: "width" }, /* @__PURE__ */ React36.createElement(SizeControl, { startIcon: /* @__PURE__ */ React36.createElement(ArrowsMoveHorizontalIcon, { fontSize: "tiny" }) }))), /* @__PURE__ */ React36.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(PropKeyProvider, { bind: "height" }, /* @__PURE__ */ React36.createElement(SizeControl, { startIcon: /* @__PURE__ */ React36.createElement(ArrowsMoveVerticalIcon, { fontSize: "tiny" }) })))))) : null);
|
|
1768
1800
|
};
|
|
1769
1801
|
|
|
1770
1802
|
// src/controls/background-control/background-overlay/use-background-tabs-history.ts
|
|
@@ -1846,7 +1878,7 @@ var backgroundResolutionOptions = [
|
|
|
1846
1878
|
];
|
|
1847
1879
|
var BackgroundOverlayRepeaterControl = createControl(() => {
|
|
1848
1880
|
const { propType, value: overlayValues, setValue } = useBoundProp(backgroundOverlayPropTypeUtil);
|
|
1849
|
-
return /* @__PURE__ */
|
|
1881
|
+
return /* @__PURE__ */ React37.createElement(PropProvider, { propType, value: overlayValues, setValue }, /* @__PURE__ */ React37.createElement(
|
|
1850
1882
|
Repeater,
|
|
1851
1883
|
{
|
|
1852
1884
|
values: overlayValues ?? [],
|
|
@@ -1862,58 +1894,58 @@ var BackgroundOverlayRepeaterControl = createControl(() => {
|
|
|
1862
1894
|
));
|
|
1863
1895
|
});
|
|
1864
1896
|
var ItemContent2 = ({ bind }) => {
|
|
1865
|
-
return /* @__PURE__ */
|
|
1897
|
+
return /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React37.createElement(Content2, null));
|
|
1866
1898
|
};
|
|
1867
1899
|
var Content2 = () => {
|
|
1868
1900
|
const { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory({
|
|
1869
1901
|
image: getInitialBackgroundOverlay().value,
|
|
1870
1902
|
color: initialBackgroundColorOverlay.value
|
|
1871
1903
|
});
|
|
1872
|
-
return /* @__PURE__ */
|
|
1904
|
+
return /* @__PURE__ */ React37.createElement(Box4, { sx: { width: "100%" } }, /* @__PURE__ */ React37.createElement(Box4, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React37.createElement(Tabs, { ...getTabsProps(), "aria-label": __17("Background Overlay", "elementor") }, /* @__PURE__ */ React37.createElement(Tab, { label: __17("Image", "elementor"), ...getTabProps("image") }), /* @__PURE__ */ React37.createElement(Tab, { label: __17("Color", "elementor"), ...getTabProps("color") }))), /* @__PURE__ */ React37.createElement(TabPanel, { sx: { p: 1.5 }, ...getTabPanelProps("image") }, /* @__PURE__ */ React37.createElement(PopoverContent, null, /* @__PURE__ */ React37.createElement(ImageOverlayContent, null))), /* @__PURE__ */ React37.createElement(TabPanel, { ...getTabPanelProps("color"), sx: { p: 1.5 } }, /* @__PURE__ */ React37.createElement(Grid13, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React37.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React37.createElement(ColorControl, { propTypeUtil: backgroundColorOverlayPropTypeUtil2 })))));
|
|
1873
1905
|
};
|
|
1874
1906
|
var ItemIcon2 = ({ value }) => {
|
|
1875
1907
|
switch (value.$$type) {
|
|
1876
1908
|
case "background-image-overlay":
|
|
1877
|
-
return /* @__PURE__ */
|
|
1909
|
+
return /* @__PURE__ */ React37.createElement(ItemIconImage, { value });
|
|
1878
1910
|
case "background-color-overlay":
|
|
1879
|
-
return /* @__PURE__ */
|
|
1911
|
+
return /* @__PURE__ */ React37.createElement(ItemIconColor, { value });
|
|
1880
1912
|
default:
|
|
1881
1913
|
return null;
|
|
1882
1914
|
}
|
|
1883
1915
|
};
|
|
1884
1916
|
var ItemIconColor = ({ value }) => {
|
|
1885
|
-
return /* @__PURE__ */
|
|
1917
|
+
return /* @__PURE__ */ React37.createElement(UnstableColorIndicator2, { size: "inherit", component: "span", value: value.value });
|
|
1886
1918
|
};
|
|
1887
1919
|
var ItemIconImage = ({ value }) => {
|
|
1888
1920
|
const { imageUrl } = useImage(value);
|
|
1889
|
-
return /* @__PURE__ */
|
|
1921
|
+
return /* @__PURE__ */ React37.createElement(CardMedia3, { image: imageUrl, sx: { height: 13, width: 13, borderRadius: "4px" } });
|
|
1890
1922
|
};
|
|
1891
1923
|
var ItemLabel2 = ({ value }) => {
|
|
1892
1924
|
switch (value.$$type) {
|
|
1893
1925
|
case "background-image-overlay":
|
|
1894
|
-
return /* @__PURE__ */
|
|
1926
|
+
return /* @__PURE__ */ React37.createElement(ItemLabelImage, { value });
|
|
1895
1927
|
case "background-color-overlay":
|
|
1896
|
-
return /* @__PURE__ */
|
|
1928
|
+
return /* @__PURE__ */ React37.createElement(ItemLabelColor, { value });
|
|
1897
1929
|
default:
|
|
1898
1930
|
return null;
|
|
1899
1931
|
}
|
|
1900
1932
|
};
|
|
1901
1933
|
var ItemLabelColor = ({ value }) => {
|
|
1902
|
-
return /* @__PURE__ */
|
|
1934
|
+
return /* @__PURE__ */ React37.createElement("span", null, value.value);
|
|
1903
1935
|
};
|
|
1904
1936
|
var ItemLabelImage = ({ value }) => {
|
|
1905
1937
|
const { imageTitle } = useImage(value);
|
|
1906
|
-
return /* @__PURE__ */
|
|
1938
|
+
return /* @__PURE__ */ React37.createElement("span", null, imageTitle);
|
|
1907
1939
|
};
|
|
1908
1940
|
var ImageOverlayContent = () => {
|
|
1909
1941
|
const propContext = useBoundProp(backgroundImageOverlayPropTypeUtil2);
|
|
1910
|
-
return /* @__PURE__ */
|
|
1942
|
+
return /* @__PURE__ */ React37.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "image" }, /* @__PURE__ */ React37.createElement(Grid13, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React37.createElement(Grid13, { item: true, xs: 12 }, /* @__PURE__ */ React37.createElement(
|
|
1911
1943
|
ImageControl,
|
|
1912
1944
|
{
|
|
1913
1945
|
resolutionLabel: __17("Resolution", "elementor"),
|
|
1914
1946
|
sizes: backgroundResolutionOptions
|
|
1915
1947
|
}
|
|
1916
|
-
)))), /* @__PURE__ */
|
|
1948
|
+
)))), /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "position" }, /* @__PURE__ */ React37.createElement(BackgroundImageOverlayPosition, null)), /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "repeat" }, /* @__PURE__ */ React37.createElement(BackgroundImageOverlayRepeat, null)), /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "size" }, /* @__PURE__ */ React37.createElement(BackgroundImageOverlaySize, null)), /* @__PURE__ */ React37.createElement(PropKeyProvider, { bind: "attachment" }, /* @__PURE__ */ React37.createElement(BackgroundImageOverlayAttachment, null)));
|
|
1917
1949
|
};
|
|
1918
1950
|
var useImage = (image) => {
|
|
1919
1951
|
let imageTitle, imageUrl = null;
|
|
@@ -1933,10 +1965,9 @@ var useImage = (image) => {
|
|
|
1933
1965
|
// src/controls/background-control/background-control.tsx
|
|
1934
1966
|
var BackgroundControl = createControl(() => {
|
|
1935
1967
|
const propContext = useBoundProp(backgroundPropTypeUtil);
|
|
1936
|
-
return /* @__PURE__ */
|
|
1968
|
+
return /* @__PURE__ */ React38.createElement(PropProvider, { ...propContext }, /* @__PURE__ */ React38.createElement(SectionContent, null, /* @__PURE__ */ React38.createElement(PropKeyProvider, { bind: "background-overlay" }, /* @__PURE__ */ React38.createElement(BackgroundOverlayRepeaterControl, null)), /* @__PURE__ */ React38.createElement(PropKeyProvider, { bind: "color" }, /* @__PURE__ */ React38.createElement(Grid14, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React38.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(ControlLabel, null, __18("Color", "elementor"))), /* @__PURE__ */ React38.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React38.createElement(ColorControl, null))))));
|
|
1937
1969
|
});
|
|
1938
1970
|
export {
|
|
1939
|
-
AutocompleteControl,
|
|
1940
1971
|
BackgroundControl,
|
|
1941
1972
|
BoxShadowRepeaterControl,
|
|
1942
1973
|
ColorControl,
|