@elementor/editor-editing-panel 1.1.0 → 1.3.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 +53 -0
- package/dist/index.js +868 -444
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +851 -403
- package/dist/index.mjs.map +1 -1
- package/package.json +15 -14
- package/src/components/css-class-selector.tsx +131 -0
- package/src/components/multi-combobox/multi-combobox.tsx +34 -32
- package/src/components/multi-combobox/types.ts +2 -0
- package/src/components/multi-combobox/use-combobox-actions.ts +4 -4
- package/src/components/style-sections/border-section/border-radius-field.tsx +4 -4
- package/src/components/style-sections/border-section/border-width-field.tsx +4 -4
- package/src/components/style-sections/layout-section/align-items-field.tsx +72 -0
- package/src/components/style-sections/layout-section/align-self-child-field.tsx +72 -0
- package/src/components/style-sections/layout-section/flex-direction-field.tsx +64 -0
- package/src/components/style-sections/layout-section/flex-order-field.tsx +120 -0
- package/src/components/style-sections/layout-section/flex-size-field.tsx +164 -0
- package/src/components/style-sections/layout-section/justify-content-field.tsx +62 -62
- package/src/components/style-sections/layout-section/layout-section.tsx +27 -3
- package/src/components/style-sections/layout-section/utils/rotated-icon.tsx +52 -0
- package/src/components/style-sections/layout-section/wrap-field.tsx +52 -0
- package/src/components/style-sections/position-section/position-section.tsx +3 -3
- package/src/components/style-sections/typography-section/line-height-field.tsx +21 -0
- package/src/components/style-sections/typography-section/text-stroke-field.tsx +41 -6
- package/src/components/style-sections/typography-section/text-style-field.tsx +31 -8
- package/src/components/style-sections/typography-section/typography-section.tsx +3 -1
- package/src/components/style-tab.tsx +2 -2
- package/src/controls-registry/controls-registry.tsx +4 -0
- package/src/dynamics/components/dynamic-selection-control.tsx +8 -5
- package/src/dynamics/components/dynamic-selection.tsx +10 -8
- package/src/dynamics/dynamic-control.tsx +9 -11
- package/src/dynamics/utils.ts +20 -3
- package/src/components/css-class-selector-section.tsx +0 -76
- package/src/components/style-sections/layout-section/utils/rotate-flex-icon.ts +0 -12
package/dist/index.mjs
CHANGED
|
@@ -19,12 +19,12 @@ import { __privateListenTo as listenTo, commandStartEvent } from "@elementor/edi
|
|
|
19
19
|
import { __createPanel as createPanel } from "@elementor/editor-panels";
|
|
20
20
|
|
|
21
21
|
// src/components/editing-panel.tsx
|
|
22
|
-
import * as
|
|
22
|
+
import * as React58 from "react";
|
|
23
23
|
import { ControlActionsProvider, ControlReplacementProvider } from "@elementor/editor-controls";
|
|
24
24
|
import { useSelectedElement } from "@elementor/editor-elements";
|
|
25
25
|
import { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from "@elementor/editor-panels";
|
|
26
26
|
import { ErrorBoundary } from "@elementor/ui";
|
|
27
|
-
import { __ as
|
|
27
|
+
import { __ as __38 } from "@wordpress/i18n";
|
|
28
28
|
|
|
29
29
|
// src/contexts/element-context.tsx
|
|
30
30
|
import * as React from "react";
|
|
@@ -95,10 +95,10 @@ function EditorPanelErrorFallback() {
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
// src/components/editing-panel-tabs.tsx
|
|
98
|
-
import * as
|
|
99
|
-
import { Fragment as
|
|
100
|
-
import { Divider as
|
|
101
|
-
import { __ as
|
|
98
|
+
import * as React57 from "react";
|
|
99
|
+
import { Fragment as Fragment7 } from "react";
|
|
100
|
+
import { Divider as Divider8, Stack as Stack19, Tab, TabPanel, Tabs, useTabs } from "@elementor/ui";
|
|
101
|
+
import { __ as __37 } from "@wordpress/i18n";
|
|
102
102
|
|
|
103
103
|
// src/components/settings-tab.tsx
|
|
104
104
|
import * as React9 from "react";
|
|
@@ -111,17 +111,21 @@ import { createError } from "@elementor/utils";
|
|
|
111
111
|
// src/controls-registry/controls-registry.tsx
|
|
112
112
|
import {
|
|
113
113
|
ImageControl,
|
|
114
|
+
LinkControl,
|
|
114
115
|
SelectControl,
|
|
115
116
|
SizeControl,
|
|
116
117
|
TextAreaControl,
|
|
117
|
-
TextControl
|
|
118
|
+
TextControl,
|
|
119
|
+
UrlControl
|
|
118
120
|
} from "@elementor/editor-controls";
|
|
119
121
|
var controlTypes = {
|
|
120
122
|
image: { component: ImageControl, layout: "full" },
|
|
121
123
|
text: { component: TextControl, layout: "two-columns" },
|
|
122
124
|
textarea: { component: TextAreaControl, layout: "full" },
|
|
123
125
|
size: { component: SizeControl, layout: "two-columns" },
|
|
124
|
-
select: { component: SelectControl, layout: "two-columns" }
|
|
126
|
+
select: { component: SelectControl, layout: "two-columns" },
|
|
127
|
+
link: { component: LinkControl, layout: "full" },
|
|
128
|
+
url: { component: UrlControl, layout: "full" }
|
|
125
129
|
};
|
|
126
130
|
var getControlByType = (type) => controlTypes[type]?.component;
|
|
127
131
|
var getLayoutByType = (type) => controlTypes[type].layout;
|
|
@@ -254,13 +258,13 @@ var Control2 = ({ control }) => {
|
|
|
254
258
|
};
|
|
255
259
|
|
|
256
260
|
// src/components/style-tab.tsx
|
|
257
|
-
import * as
|
|
258
|
-
import { useState as
|
|
261
|
+
import * as React56 from "react";
|
|
262
|
+
import { useState as useState5 } from "react";
|
|
259
263
|
import { useElementSetting as useElementSetting3, useElementStyles as useElementStyles2 } from "@elementor/editor-elements";
|
|
260
264
|
import { useActiveBreakpoint } from "@elementor/editor-responsive";
|
|
261
265
|
import { generateId } from "@elementor/editor-styles";
|
|
262
|
-
import { Divider as
|
|
263
|
-
import { __ as
|
|
266
|
+
import { Divider as Divider7 } from "@elementor/ui";
|
|
267
|
+
import { __ as __36 } from "@wordpress/i18n";
|
|
264
268
|
|
|
265
269
|
// src/contexts/classes-prop-context.tsx
|
|
266
270
|
import * as React10 from "react";
|
|
@@ -292,9 +296,10 @@ function useStyle() {
|
|
|
292
296
|
return context;
|
|
293
297
|
}
|
|
294
298
|
|
|
295
|
-
// src/components/css-class-selector
|
|
299
|
+
// src/components/css-class-selector.tsx
|
|
296
300
|
import * as React13 from "react";
|
|
297
|
-
import { useElementSetting as useElementSetting2, useElementStyles } from "@elementor/editor-elements";
|
|
301
|
+
import { updateSettings as updateSettings2, useElementSetting as useElementSetting2, useElementStyles } from "@elementor/editor-elements";
|
|
302
|
+
import { classesPropTypeUtil } from "@elementor/editor-props";
|
|
298
303
|
import { Chip as Chip2, Stack as Stack3, Typography as Typography2 } from "@elementor/ui";
|
|
299
304
|
import { __ } from "@wordpress/i18n";
|
|
300
305
|
|
|
@@ -310,9 +315,9 @@ import {
|
|
|
310
315
|
|
|
311
316
|
// src/components/multi-combobox/use-combobox-actions.ts
|
|
312
317
|
import { createFilterOptions } from "@elementor/ui";
|
|
313
|
-
var useComboboxActions = (applied, actions, optionsLabel,
|
|
318
|
+
var useComboboxActions = (applied, actions, optionsLabel, onSelect) => ({
|
|
314
319
|
action: {
|
|
315
|
-
is: (opt) =>
|
|
320
|
+
is: (opt) => typeof opt !== "string" && "action" in opt,
|
|
316
321
|
getLabel: (option) => option.action.getLabel(option.label),
|
|
317
322
|
groupBy: (option) => option.action.groupLabel,
|
|
318
323
|
onChange: ({ action, label }) => action?.apply(label),
|
|
@@ -332,10 +337,10 @@ var useComboboxActions = (applied, actions, optionsLabel, onApply) => ({
|
|
|
332
337
|
}
|
|
333
338
|
},
|
|
334
339
|
option: {
|
|
335
|
-
is: (opt) => !("action" in opt),
|
|
340
|
+
is: (opt) => typeof opt !== "string" && !("action" in opt),
|
|
336
341
|
getLabel: (option) => option.label,
|
|
337
342
|
groupBy: () => optionsLabel ?? "",
|
|
338
|
-
onChange: (optionValues) =>
|
|
343
|
+
onChange: (optionValues) => onSelect?.(optionValues),
|
|
339
344
|
getFilteredOptions: (optionList, params) => {
|
|
340
345
|
const appliedValues = applied.map((option) => option.value);
|
|
341
346
|
const optionsWithoutApplied = optionList.filter((option) => !appliedValues.includes(option.value));
|
|
@@ -358,24 +363,19 @@ var createActionOption = (groupLabel, action, inputValue) => ({
|
|
|
358
363
|
var MultiCombobox = ({
|
|
359
364
|
actions = {},
|
|
360
365
|
selected,
|
|
361
|
-
options:
|
|
366
|
+
options: options10,
|
|
362
367
|
optionsLabel,
|
|
363
|
-
|
|
368
|
+
onSelect,
|
|
364
369
|
onCreate,
|
|
365
370
|
...props
|
|
366
371
|
}) => {
|
|
367
|
-
const { action: actionProps, option: optionProps } = useComboboxActions(
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
};
|
|
375
|
-
const handleCreateOption = (values) => {
|
|
376
|
-
const value = values.find((option) => typeof option === "string");
|
|
377
|
-
onCreate?.(value);
|
|
378
|
-
};
|
|
372
|
+
const { action: actionProps, option: optionProps } = useComboboxActions(
|
|
373
|
+
selected,
|
|
374
|
+
actions,
|
|
375
|
+
// TODO: make the group mechanism more generic, allow passing list of groups.
|
|
376
|
+
optionsLabel,
|
|
377
|
+
onSelect
|
|
378
|
+
);
|
|
379
379
|
return /* @__PURE__ */ React12.createElement(
|
|
380
380
|
Autocomplete,
|
|
381
381
|
{
|
|
@@ -387,29 +387,36 @@ var MultiCombobox = ({
|
|
|
387
387
|
disableClearable: true,
|
|
388
388
|
handleHomeEndKeys: true,
|
|
389
389
|
value: selected,
|
|
390
|
-
options:
|
|
390
|
+
options: options10,
|
|
391
391
|
renderGroup,
|
|
392
392
|
renderInput: (params) => /* @__PURE__ */ React12.createElement(TextField, { ...params }),
|
|
393
393
|
getLimitTagsText: (more) => /* @__PURE__ */ React12.createElement(Chip, { size: "tiny", variant: "standard", label: `+${more}`, clickable: true }),
|
|
394
|
-
onChange: (_,
|
|
395
|
-
if (reason === "selectOption") {
|
|
396
|
-
return handleSelectOption(values);
|
|
397
|
-
}
|
|
394
|
+
onChange: (_, selectedOrTypedValue, reason) => {
|
|
398
395
|
if (reason === "createOption") {
|
|
399
|
-
|
|
396
|
+
const typedValue = selectedOrTypedValue.find((option) => typeof option === "string");
|
|
397
|
+
return typedValue && onCreate?.(typedValue);
|
|
400
398
|
}
|
|
401
|
-
|
|
399
|
+
const action = selectedOrTypedValue.find((value) => actionProps.is(value));
|
|
400
|
+
if (reason === "selectOption" && action) {
|
|
401
|
+
return actionProps.onChange(action);
|
|
402
|
+
}
|
|
403
|
+
const selectedValues = selectedOrTypedValue.filter((v) => typeof v !== "string");
|
|
404
|
+
const fixedValues = options10.filter((option) => option.fixed);
|
|
405
|
+
optionProps.onChange([.../* @__PURE__ */ new Set([...fixedValues, ...selectedValues])]);
|
|
402
406
|
},
|
|
403
407
|
getOptionLabel: (option) => {
|
|
404
408
|
if (optionProps.is(option)) {
|
|
405
409
|
return optionProps.getLabel(option);
|
|
406
410
|
}
|
|
407
|
-
|
|
411
|
+
if (actionProps.is(option)) {
|
|
412
|
+
return actionProps.getLabel(option);
|
|
413
|
+
}
|
|
414
|
+
return "";
|
|
408
415
|
},
|
|
409
416
|
filterOptions: (optionList, params) => {
|
|
410
|
-
const
|
|
417
|
+
const filteredOptions = optionProps.getFilteredOptions(optionList, params);
|
|
411
418
|
const actionOptions = actionProps.getFilteredActions(optionList, params);
|
|
412
|
-
return [...actionOptions, ...
|
|
419
|
+
return [...actionOptions, ...filteredOptions];
|
|
413
420
|
},
|
|
414
421
|
groupBy: (option) => (optionProps.is(option) ? optionProps.groupBy() : actionProps.groupBy(option)) ?? ""
|
|
415
422
|
}
|
|
@@ -431,36 +438,40 @@ var GroupItems = styled3("ul")`
|
|
|
431
438
|
padding: 0;
|
|
432
439
|
`;
|
|
433
440
|
|
|
434
|
-
// src/components/css-class-selector
|
|
441
|
+
// src/components/css-class-selector.tsx
|
|
435
442
|
var ID = "elementor-css-class-selector";
|
|
436
443
|
var TAGS_LIMIT = 8;
|
|
437
|
-
function
|
|
438
|
-
const
|
|
444
|
+
function CssClassSelector() {
|
|
445
|
+
const options10 = useOptions();
|
|
439
446
|
const { id: activeId, setId: setActiveId } = useStyle();
|
|
440
|
-
const appliedIds = useAppliedClassesIds();
|
|
441
|
-
const
|
|
442
|
-
const
|
|
447
|
+
const [appliedIds] = useAppliedClassesIds();
|
|
448
|
+
const handleApply = useHandleApply();
|
|
449
|
+
const handleActivate = ({ value }) => setActiveId(value);
|
|
450
|
+
const active = options10.find((option) => option.value === activeId) || null;
|
|
451
|
+
const applied = appliedIds.map((id) => options10.find((option) => option.value === id)).filter((option) => !!option);
|
|
443
452
|
return /* @__PURE__ */ React13.createElement(Stack3, { gap: 1, p: 2 }, /* @__PURE__ */ React13.createElement(Typography2, { component: "label", variant: "caption", htmlFor: ID }, __("CSS Classes", "elementor")), /* @__PURE__ */ React13.createElement(
|
|
444
453
|
MultiCombobox,
|
|
445
454
|
{
|
|
446
455
|
id: ID,
|
|
447
456
|
size: "tiny",
|
|
448
|
-
options:
|
|
457
|
+
options: options10,
|
|
449
458
|
selected: applied,
|
|
459
|
+
onSelect: handleApply,
|
|
450
460
|
limitTags: TAGS_LIMIT,
|
|
451
461
|
optionsLabel: __("Global CSS Classes", "elementor"),
|
|
452
|
-
renderTags: (
|
|
462
|
+
renderTags: (values, getTagProps) => values.map((value, index) => {
|
|
453
463
|
const chipProps = getTagProps({ index });
|
|
464
|
+
const isActive = value.value === active?.value;
|
|
454
465
|
return /* @__PURE__ */ React13.createElement(
|
|
455
466
|
Chip2,
|
|
456
467
|
{
|
|
457
468
|
...chipProps,
|
|
458
469
|
key: chipProps.key,
|
|
459
470
|
size: "small",
|
|
460
|
-
label:
|
|
461
|
-
variant:
|
|
462
|
-
color:
|
|
463
|
-
onClick: () =>
|
|
471
|
+
label: value.label,
|
|
472
|
+
variant: isActive ? "filled" : "standard",
|
|
473
|
+
color: isActive && value.color ? value.color : "default",
|
|
474
|
+
onClick: () => handleActivate(value),
|
|
464
475
|
onDelete: null
|
|
465
476
|
}
|
|
466
477
|
);
|
|
@@ -468,20 +479,51 @@ function CssClassSelectorSection() {
|
|
|
468
479
|
}
|
|
469
480
|
));
|
|
470
481
|
}
|
|
471
|
-
function useAppliedClassesIds() {
|
|
472
|
-
const { element } = useElement();
|
|
473
|
-
const currentClassesProp = useClassesProp();
|
|
474
|
-
return useElementSetting2(element.id, currentClassesProp)?.value || [];
|
|
475
|
-
}
|
|
476
482
|
function useOptions() {
|
|
477
483
|
const { element } = useElement();
|
|
478
484
|
const styleDefs = useElementStyles(element.id);
|
|
479
485
|
return Object.values(styleDefs).map((styleDef) => ({
|
|
480
486
|
label: styleDef.label,
|
|
481
487
|
value: styleDef.id,
|
|
488
|
+
fixed: true,
|
|
482
489
|
color: "primary"
|
|
483
490
|
}));
|
|
484
491
|
}
|
|
492
|
+
function useAppliedClassesIds() {
|
|
493
|
+
const { element } = useElement();
|
|
494
|
+
const currentClassesProp = useClassesProp();
|
|
495
|
+
const value = useElementSetting2(element.id, currentClassesProp)?.value || [];
|
|
496
|
+
const setValue = (ids) => {
|
|
497
|
+
updateSettings2({
|
|
498
|
+
id: element.id,
|
|
499
|
+
props: {
|
|
500
|
+
[currentClassesProp]: classesPropTypeUtil.create(ids)
|
|
501
|
+
}
|
|
502
|
+
});
|
|
503
|
+
};
|
|
504
|
+
return [value, setValue];
|
|
505
|
+
}
|
|
506
|
+
function useHandleApply() {
|
|
507
|
+
const { id: activeId, setId: setActiveId } = useStyle();
|
|
508
|
+
const [appliedIds, setAppliedIds] = useAppliedClassesIds();
|
|
509
|
+
return (selectedOptions) => {
|
|
510
|
+
const selectedValues = selectedOptions.map(({ value }) => value);
|
|
511
|
+
const isSameClassesAlreadyApplied = selectedValues.length === appliedIds.length && selectedValues.every((value) => appliedIds.includes(value));
|
|
512
|
+
if (isSameClassesAlreadyApplied) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
setAppliedIds(selectedValues);
|
|
516
|
+
const addedValue = selectedValues.find((id) => !appliedIds.includes(id));
|
|
517
|
+
if (addedValue) {
|
|
518
|
+
setActiveId(addedValue);
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
const removedValue = appliedIds.find((id) => !selectedValues.includes(id));
|
|
522
|
+
if (removedValue && removedValue === activeId) {
|
|
523
|
+
setActiveId(selectedValues[0] ?? null);
|
|
524
|
+
}
|
|
525
|
+
};
|
|
526
|
+
}
|
|
485
527
|
|
|
486
528
|
// src/components/style-sections/background-section/background-section.tsx
|
|
487
529
|
import * as React16 from "react";
|
|
@@ -609,6 +651,7 @@ var BorderStyleField = () => {
|
|
|
609
651
|
// src/components/style-sections/border-section/border-width-field.tsx
|
|
610
652
|
import * as React20 from "react";
|
|
611
653
|
import { EqualUnequalSizesControl } from "@elementor/editor-controls";
|
|
654
|
+
import { borderWidthPropTypeUtil } from "@elementor/editor-props";
|
|
612
655
|
import { SideAllIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from "@elementor/icons";
|
|
613
656
|
import { __ as __5 } from "@wordpress/i18n";
|
|
614
657
|
var edges = [
|
|
@@ -637,10 +680,10 @@ var BorderWidthField = () => {
|
|
|
637
680
|
return /* @__PURE__ */ React20.createElement(StylesField, { bind: "border-width" }, /* @__PURE__ */ React20.createElement(
|
|
638
681
|
EqualUnequalSizesControl,
|
|
639
682
|
{
|
|
683
|
+
items: edges,
|
|
640
684
|
label: __5("Border Width", "elementor"),
|
|
641
685
|
icon: /* @__PURE__ */ React20.createElement(SideAllIcon, { fontSize: "tiny" }),
|
|
642
|
-
|
|
643
|
-
multiSizeType: "border-width"
|
|
686
|
+
multiSizePropTypeUtil: borderWidthPropTypeUtil
|
|
644
687
|
}
|
|
645
688
|
));
|
|
646
689
|
};
|
|
@@ -685,6 +728,7 @@ var BorderField = () => {
|
|
|
685
728
|
// src/components/style-sections/border-section/border-radius-field.tsx
|
|
686
729
|
import * as React22 from "react";
|
|
687
730
|
import { EqualUnequalSizesControl as EqualUnequalSizesControl2 } from "@elementor/editor-controls";
|
|
731
|
+
import { borderRadiusPropTypeUtil } from "@elementor/editor-props";
|
|
688
732
|
import {
|
|
689
733
|
BorderCornersIcon,
|
|
690
734
|
RadiusBottomLeftIcon,
|
|
@@ -719,10 +763,10 @@ var BorderRadiusField = () => {
|
|
|
719
763
|
return /* @__PURE__ */ React22.createElement(StylesField, { bind: "border-radius" }, /* @__PURE__ */ React22.createElement(
|
|
720
764
|
EqualUnequalSizesControl2,
|
|
721
765
|
{
|
|
766
|
+
items: corners,
|
|
722
767
|
label: __7("Border Radius", "elementor"),
|
|
723
768
|
icon: /* @__PURE__ */ React22.createElement(BorderCornersIcon, { fontSize: "tiny" }),
|
|
724
|
-
|
|
725
|
-
multiSizeType: "border-radius"
|
|
769
|
+
multiSizePropTypeUtil: borderRadiusPropTypeUtil
|
|
726
770
|
}
|
|
727
771
|
));
|
|
728
772
|
};
|
|
@@ -739,43 +783,22 @@ var EffectsSection = () => {
|
|
|
739
783
|
};
|
|
740
784
|
|
|
741
785
|
// src/components/style-sections/layout-section/layout-section.tsx
|
|
742
|
-
import * as
|
|
743
|
-
import {
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
import * as React25 from "react";
|
|
747
|
-
import { ControlLabel as ControlLabel6, ToggleControl } from "@elementor/editor-controls";
|
|
748
|
-
import { Stack as Stack8 } from "@elementor/ui";
|
|
749
|
-
import { __ as __8 } from "@wordpress/i18n";
|
|
750
|
-
var DisplayField = () => {
|
|
751
|
-
const options5 = [
|
|
752
|
-
{
|
|
753
|
-
value: "block",
|
|
754
|
-
renderContent: () => __8("Block", "elementor"),
|
|
755
|
-
label: __8("Block", "elementor")
|
|
756
|
-
},
|
|
757
|
-
{
|
|
758
|
-
value: "flex",
|
|
759
|
-
renderContent: () => __8("Flex", "elementor"),
|
|
760
|
-
label: __8("Flex", "elementor")
|
|
761
|
-
}
|
|
762
|
-
];
|
|
763
|
-
return /* @__PURE__ */ React25.createElement(StylesField, { bind: "display" }, /* @__PURE__ */ React25.createElement(Stack8, { gap: 1 }, /* @__PURE__ */ React25.createElement(ControlLabel6, null, __8("Display", "elementor")), /* @__PURE__ */ React25.createElement(ToggleControl, { options: options5, fullWidth: true })));
|
|
764
|
-
};
|
|
786
|
+
import * as React34 from "react";
|
|
787
|
+
import { ControlLabel as ControlLabel14 } from "@elementor/editor-controls";
|
|
788
|
+
import { Divider as Divider3, Stack as Stack12 } from "@elementor/ui";
|
|
789
|
+
import { __ as __16 } from "@wordpress/i18n";
|
|
765
790
|
|
|
766
|
-
// src/components/style-sections/layout-section/
|
|
791
|
+
// src/components/style-sections/layout-section/align-items-field.tsx
|
|
767
792
|
import * as React26 from "react";
|
|
768
|
-
import { ControlLabel as
|
|
793
|
+
import { ControlLabel as ControlLabel6, ToggleControl } from "@elementor/editor-controls";
|
|
769
794
|
import {
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
JustifySpaceBetweenVerticalIcon,
|
|
775
|
-
JustifyTopIcon
|
|
795
|
+
LayoutAlignCenterIcon as CenterIcon,
|
|
796
|
+
LayoutAlignLeftIcon,
|
|
797
|
+
LayoutAlignRightIcon,
|
|
798
|
+
LayoutDistributeVerticalIcon as JustifyIcon
|
|
776
799
|
} from "@elementor/icons";
|
|
777
|
-
import {
|
|
778
|
-
import { __ as
|
|
800
|
+
import { DirectionProvider, Grid as Grid4, ThemeProvider, withDirection } from "@elementor/ui";
|
|
801
|
+
import { __ as __8 } from "@wordpress/i18n";
|
|
779
802
|
|
|
780
803
|
// src/hooks/use-direction.ts
|
|
781
804
|
import { useTheme } from "@elementor/ui";
|
|
@@ -785,84 +808,461 @@ function useDirection() {
|
|
|
785
808
|
return { isSiteRtl, isUiRtl };
|
|
786
809
|
}
|
|
787
810
|
|
|
788
|
-
// src/components/style-sections/layout-section/utils/
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
811
|
+
// src/components/style-sections/layout-section/utils/rotated-icon.tsx
|
|
812
|
+
import * as React25 from "react";
|
|
813
|
+
import { useRef as useRef2 } from "react";
|
|
814
|
+
import { useTheme as useTheme2 } from "@elementor/ui";
|
|
815
|
+
var CLOCKWISE_ANGLES = {
|
|
816
|
+
row: 0,
|
|
817
|
+
column: 90,
|
|
818
|
+
"row-reverse": 180,
|
|
819
|
+
"column-reverse": 270
|
|
820
|
+
};
|
|
821
|
+
var COUNTER_CLOCKWISE_ANGLES = {
|
|
822
|
+
row: 0,
|
|
823
|
+
column: -90,
|
|
824
|
+
"row-reverse": -180,
|
|
825
|
+
"column-reverse": -270
|
|
826
|
+
};
|
|
827
|
+
var RotatedIcon = ({ icon: Icon, size, isClockwise = true, offset = 0 }) => {
|
|
828
|
+
const rotate = useRef2(useGetTargetAngle(isClockwise, offset));
|
|
829
|
+
rotate.current = useGetTargetAngle(isClockwise, offset, rotate);
|
|
830
|
+
return /* @__PURE__ */ React25.createElement(Icon, { fontSize: size, sx: { transition: ".3s", rotate: `${rotate.current}deg` } });
|
|
831
|
+
};
|
|
832
|
+
var useGetTargetAngle = (isClockwise, offset, existingRef) => {
|
|
802
833
|
const [direction] = useStylesField("flex-direction");
|
|
803
|
-
const
|
|
804
|
-
const
|
|
805
|
-
const
|
|
834
|
+
const isRtl = "rtl" === useTheme2().direction;
|
|
835
|
+
const rotationMultiplier = isRtl ? -1 : 1;
|
|
836
|
+
const angleMap = isClockwise ? CLOCKWISE_ANGLES : COUNTER_CLOCKWISE_ANGLES;
|
|
837
|
+
const currentAngle = existingRef ? existingRef.current * rotationMultiplier : angleMap[direction?.value || "row"] + offset;
|
|
838
|
+
const targetAngle = angleMap[direction?.value || "row"] + offset;
|
|
839
|
+
const diffToTargetAngle = (targetAngle - currentAngle + 360) % 360;
|
|
840
|
+
const formattedDiff = (diffToTargetAngle + 180) % 360 - 180;
|
|
841
|
+
return (currentAngle + formattedDiff) * rotationMultiplier;
|
|
842
|
+
};
|
|
843
|
+
|
|
844
|
+
// src/components/style-sections/layout-section/align-items-field.tsx
|
|
845
|
+
var StartIcon = withDirection(LayoutAlignLeftIcon);
|
|
846
|
+
var EndIcon = withDirection(LayoutAlignRightIcon);
|
|
847
|
+
var iconProps = {
|
|
848
|
+
isClockwise: false,
|
|
849
|
+
offset: 90
|
|
850
|
+
};
|
|
851
|
+
var options = [
|
|
852
|
+
{
|
|
853
|
+
value: "start",
|
|
854
|
+
label: __8("Start", "elementor"),
|
|
855
|
+
renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(RotatedIcon, { icon: StartIcon, size, ...iconProps }),
|
|
856
|
+
showTooltip: true
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
value: "center",
|
|
860
|
+
label: __8("Center", "elementor"),
|
|
861
|
+
renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(RotatedIcon, { icon: CenterIcon, size, ...iconProps }),
|
|
862
|
+
showTooltip: true
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
value: "end",
|
|
866
|
+
label: __8("End", "elementor"),
|
|
867
|
+
renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(RotatedIcon, { icon: EndIcon, size, ...iconProps }),
|
|
868
|
+
showTooltip: true
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
value: "stretch",
|
|
872
|
+
label: __8("Stretch", "elementor"),
|
|
873
|
+
renderContent: ({ size }) => /* @__PURE__ */ React26.createElement(RotatedIcon, { icon: JustifyIcon, size, ...iconProps }),
|
|
874
|
+
showTooltip: true
|
|
875
|
+
}
|
|
876
|
+
];
|
|
877
|
+
var AlignItemsField = () => {
|
|
878
|
+
const { isSiteRtl } = useDirection();
|
|
879
|
+
return /* @__PURE__ */ React26.createElement(DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React26.createElement(ThemeProvider, null, /* @__PURE__ */ React26.createElement(StylesField, { bind: "align-items" }, /* @__PURE__ */ React26.createElement(Grid4, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React26.createElement(ControlLabel6, null, __8("Align items", "elementor"))), /* @__PURE__ */ React26.createElement(Grid4, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React26.createElement(ToggleControl, { options }))))));
|
|
880
|
+
};
|
|
881
|
+
|
|
882
|
+
// src/components/style-sections/layout-section/align-self-child-field.tsx
|
|
883
|
+
import * as React27 from "react";
|
|
884
|
+
import { ControlLabel as ControlLabel7, ToggleControl as ToggleControl2 } from "@elementor/editor-controls";
|
|
885
|
+
import {
|
|
886
|
+
LayoutAlignCenterIcon as CenterIcon2,
|
|
887
|
+
LayoutAlignLeftIcon as LayoutAlignLeftIcon2,
|
|
888
|
+
LayoutAlignRightIcon as LayoutAlignRightIcon2,
|
|
889
|
+
LayoutDistributeVerticalIcon as JustifyIcon2
|
|
890
|
+
} from "@elementor/icons";
|
|
891
|
+
import { DirectionProvider as DirectionProvider2, Grid as Grid5, ThemeProvider as ThemeProvider2, withDirection as withDirection2 } from "@elementor/ui";
|
|
892
|
+
import { __ as __9 } from "@wordpress/i18n";
|
|
893
|
+
var StartIcon2 = withDirection2(LayoutAlignLeftIcon2);
|
|
894
|
+
var EndIcon2 = withDirection2(LayoutAlignRightIcon2);
|
|
895
|
+
var iconProps2 = {
|
|
896
|
+
isClockwise: false,
|
|
897
|
+
offset: 90
|
|
898
|
+
};
|
|
899
|
+
var options2 = [
|
|
900
|
+
{
|
|
901
|
+
value: "start",
|
|
902
|
+
label: __9("Start", "elementor"),
|
|
903
|
+
renderContent: ({ size }) => /* @__PURE__ */ React27.createElement(RotatedIcon, { icon: StartIcon2, size, ...iconProps2 }),
|
|
904
|
+
showTooltip: true
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
value: "center",
|
|
908
|
+
label: __9("Center", "elementor"),
|
|
909
|
+
renderContent: ({ size }) => /* @__PURE__ */ React27.createElement(RotatedIcon, { icon: CenterIcon2, size, ...iconProps2 }),
|
|
910
|
+
showTooltip: true
|
|
911
|
+
},
|
|
912
|
+
{
|
|
913
|
+
value: "end",
|
|
914
|
+
label: __9("End", "elementor"),
|
|
915
|
+
renderContent: ({ size }) => /* @__PURE__ */ React27.createElement(RotatedIcon, { icon: EndIcon2, size, ...iconProps2 }),
|
|
916
|
+
showTooltip: true
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
value: "stretch",
|
|
920
|
+
label: __9("Stretch", "elementor"),
|
|
921
|
+
renderContent: ({ size }) => /* @__PURE__ */ React27.createElement(RotatedIcon, { icon: JustifyIcon2, size, ...iconProps2 }),
|
|
922
|
+
showTooltip: true
|
|
923
|
+
}
|
|
924
|
+
];
|
|
925
|
+
var AlignSelfChild = () => {
|
|
926
|
+
const { isSiteRtl } = useDirection();
|
|
927
|
+
return /* @__PURE__ */ React27.createElement(DirectionProvider2, { rtl: isSiteRtl }, /* @__PURE__ */ React27.createElement(ThemeProvider2, null, /* @__PURE__ */ React27.createElement(StylesField, { bind: "align-self" }, /* @__PURE__ */ React27.createElement(Grid5, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React27.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React27.createElement(ControlLabel7, null, __9("Align self", "elementor"))), /* @__PURE__ */ React27.createElement(Grid5, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React27.createElement(ToggleControl2, { options: options2 }))))));
|
|
928
|
+
};
|
|
929
|
+
|
|
930
|
+
// src/components/style-sections/layout-section/display-field.tsx
|
|
931
|
+
import * as React28 from "react";
|
|
932
|
+
import { ControlLabel as ControlLabel8, ToggleControl as ToggleControl3 } from "@elementor/editor-controls";
|
|
933
|
+
import { Stack as Stack8 } from "@elementor/ui";
|
|
934
|
+
import { __ as __10 } from "@wordpress/i18n";
|
|
935
|
+
var DisplayField = () => {
|
|
936
|
+
const options10 = [
|
|
806
937
|
{
|
|
807
|
-
value: "
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
showTooltip: true
|
|
938
|
+
value: "block",
|
|
939
|
+
renderContent: () => __10("Block", "elementor"),
|
|
940
|
+
label: __10("Block", "elementor")
|
|
811
941
|
},
|
|
812
942
|
{
|
|
813
|
-
value: "
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
943
|
+
value: "flex",
|
|
944
|
+
renderContent: () => __10("Flex", "elementor"),
|
|
945
|
+
label: __10("Flex", "elementor")
|
|
946
|
+
}
|
|
947
|
+
];
|
|
948
|
+
return /* @__PURE__ */ React28.createElement(StylesField, { bind: "display" }, /* @__PURE__ */ React28.createElement(Stack8, { gap: 1 }, /* @__PURE__ */ React28.createElement(ControlLabel8, null, __10("Display", "elementor")), /* @__PURE__ */ React28.createElement(ToggleControl3, { options: options10, fullWidth: true })));
|
|
949
|
+
};
|
|
950
|
+
|
|
951
|
+
// src/components/style-sections/layout-section/flex-direction-field.tsx
|
|
952
|
+
import * as React29 from "react";
|
|
953
|
+
import { ControlLabel as ControlLabel9, ToggleControl as ToggleControl4 } from "@elementor/editor-controls";
|
|
954
|
+
import { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from "@elementor/icons";
|
|
955
|
+
import { DirectionProvider as DirectionProvider3, Grid as Grid6, ThemeProvider as ThemeProvider3, withDirection as withDirection3 } from "@elementor/ui";
|
|
956
|
+
import { __ as __11 } from "@wordpress/i18n";
|
|
957
|
+
var options3 = [
|
|
958
|
+
{
|
|
959
|
+
value: "row",
|
|
960
|
+
label: __11("Row", "elementor"),
|
|
961
|
+
renderContent: ({ size }) => {
|
|
962
|
+
const StartIcon4 = withDirection3(ArrowRightIcon);
|
|
963
|
+
return /* @__PURE__ */ React29.createElement(StartIcon4, { fontSize: size });
|
|
817
964
|
},
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
965
|
+
showTooltip: true
|
|
966
|
+
},
|
|
967
|
+
{
|
|
968
|
+
value: "column",
|
|
969
|
+
label: __11("Column", "elementor"),
|
|
970
|
+
renderContent: ({ size }) => /* @__PURE__ */ React29.createElement(ArrowDownSmallIcon, { fontSize: size }),
|
|
971
|
+
showTooltip: true
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
value: "row-reverse",
|
|
975
|
+
label: __11("Reversed row", "elementor"),
|
|
976
|
+
renderContent: ({ size }) => {
|
|
977
|
+
const EndIcon4 = withDirection3(ArrowLeftIcon);
|
|
978
|
+
return /* @__PURE__ */ React29.createElement(EndIcon4, { fontSize: size });
|
|
823
979
|
},
|
|
980
|
+
showTooltip: true
|
|
981
|
+
},
|
|
982
|
+
{
|
|
983
|
+
value: "column-reverse",
|
|
984
|
+
label: __11("Reversed column", "elementor"),
|
|
985
|
+
renderContent: ({ size }) => /* @__PURE__ */ React29.createElement(ArrowUpSmallIcon, { fontSize: size }),
|
|
986
|
+
showTooltip: true
|
|
987
|
+
}
|
|
988
|
+
];
|
|
989
|
+
var FlexDirectionField = () => {
|
|
990
|
+
const { isSiteRtl } = useDirection();
|
|
991
|
+
return /* @__PURE__ */ React29.createElement(DirectionProvider3, { rtl: isSiteRtl }, /* @__PURE__ */ React29.createElement(ThemeProvider3, null, /* @__PURE__ */ React29.createElement(StylesField, { bind: "flex-direction" }, /* @__PURE__ */ React29.createElement(Grid6, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React29.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React29.createElement(ControlLabel9, null, __11("Direction", "elementor"))), /* @__PURE__ */ React29.createElement(Grid6, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React29.createElement(ToggleControl4, { options: options3 }))))));
|
|
992
|
+
};
|
|
993
|
+
|
|
994
|
+
// src/components/style-sections/layout-section/flex-order-field.tsx
|
|
995
|
+
import * as React30 from "react";
|
|
996
|
+
import { useState as useState2 } from "react";
|
|
997
|
+
import {
|
|
998
|
+
ControlLabel as ControlLabel10,
|
|
999
|
+
ControlToggleButtonGroup,
|
|
1000
|
+
NumberControl
|
|
1001
|
+
} from "@elementor/editor-controls";
|
|
1002
|
+
import { ArrowDownSmallIcon as ArrowDownSmallIcon2, ArrowUpSmallIcon as ArrowUpSmallIcon2, PencilIcon } from "@elementor/icons";
|
|
1003
|
+
import { DirectionProvider as DirectionProvider4, Grid as Grid7, Stack as Stack9, ThemeProvider as ThemeProvider4 } from "@elementor/ui";
|
|
1004
|
+
import { __ as __12 } from "@wordpress/i18n";
|
|
1005
|
+
var FIRST_DEFAULT_VALUE = -99999;
|
|
1006
|
+
var LAST_DEFAULT_VALUE = 99999;
|
|
1007
|
+
var FIRST = "first";
|
|
1008
|
+
var LAST = "last";
|
|
1009
|
+
var CUSTOM = "custom";
|
|
1010
|
+
var orderValueMap = {
|
|
1011
|
+
[FIRST]: FIRST_DEFAULT_VALUE,
|
|
1012
|
+
[LAST]: LAST_DEFAULT_VALUE
|
|
1013
|
+
};
|
|
1014
|
+
var items = [
|
|
1015
|
+
{
|
|
1016
|
+
value: FIRST,
|
|
1017
|
+
label: __12("First", "elementor"),
|
|
1018
|
+
renderContent: ({ size }) => /* @__PURE__ */ React30.createElement(ArrowUpSmallIcon2, { fontSize: size }),
|
|
1019
|
+
showTooltip: true
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
value: LAST,
|
|
1023
|
+
label: __12("Last", "elementor"),
|
|
1024
|
+
renderContent: ({ size }) => /* @__PURE__ */ React30.createElement(ArrowDownSmallIcon2, { fontSize: size }),
|
|
1025
|
+
showTooltip: true
|
|
1026
|
+
},
|
|
1027
|
+
{
|
|
1028
|
+
value: CUSTOM,
|
|
1029
|
+
label: __12("Custom", "elementor"),
|
|
1030
|
+
renderContent: ({ size }) => /* @__PURE__ */ React30.createElement(PencilIcon, { fontSize: size }),
|
|
1031
|
+
showTooltip: true
|
|
1032
|
+
}
|
|
1033
|
+
];
|
|
1034
|
+
var FlexOrderField = () => {
|
|
1035
|
+
const { isSiteRtl } = useDirection(), [order, setOrder] = useStylesField("order");
|
|
1036
|
+
const [groupControlValue, setGroupControlValue] = useState2(getGroupControlValue(order?.value || null));
|
|
1037
|
+
const handleToggleButtonChange = (group) => {
|
|
1038
|
+
setGroupControlValue(group);
|
|
1039
|
+
if (!group || group === CUSTOM) {
|
|
1040
|
+
setOrder(null);
|
|
1041
|
+
return;
|
|
1042
|
+
}
|
|
1043
|
+
setOrder({ $$type: "number", value: orderValueMap[group] });
|
|
1044
|
+
};
|
|
1045
|
+
return /* @__PURE__ */ React30.createElement(DirectionProvider4, { rtl: isSiteRtl }, /* @__PURE__ */ React30.createElement(ThemeProvider4, null, /* @__PURE__ */ React30.createElement(Stack9, { gap: 2 }, /* @__PURE__ */ React30.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React30.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel10, null, __12("Order", "elementor"))), /* @__PURE__ */ React30.createElement(Grid7, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React30.createElement(
|
|
1046
|
+
ControlToggleButtonGroup,
|
|
824
1047
|
{
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
}
|
|
1048
|
+
items,
|
|
1049
|
+
value: groupControlValue,
|
|
1050
|
+
onChange: handleToggleButtonChange,
|
|
1051
|
+
exclusive: true
|
|
1052
|
+
}
|
|
1053
|
+
))), CUSTOM === groupControlValue && /* @__PURE__ */ React30.createElement(StylesField, { bind: "order" }, /* @__PURE__ */ React30.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React30.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React30.createElement(ControlLabel10, null, __12("Custom order", "elementor"))), /* @__PURE__ */ React30.createElement(Grid7, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React30.createElement(
|
|
1054
|
+
NumberControl,
|
|
830
1055
|
{
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
1056
|
+
min: FIRST_DEFAULT_VALUE + 1,
|
|
1057
|
+
max: LAST_DEFAULT_VALUE - 1,
|
|
1058
|
+
shouldForceInt: true
|
|
1059
|
+
}
|
|
1060
|
+
)))))));
|
|
1061
|
+
};
|
|
1062
|
+
var getGroupControlValue = (order) => {
|
|
1063
|
+
if (LAST_DEFAULT_VALUE === order) {
|
|
1064
|
+
return LAST;
|
|
1065
|
+
}
|
|
1066
|
+
if (FIRST_DEFAULT_VALUE === order) {
|
|
1067
|
+
return FIRST;
|
|
1068
|
+
}
|
|
1069
|
+
return 0 === order || order ? CUSTOM : null;
|
|
1070
|
+
};
|
|
1071
|
+
|
|
1072
|
+
// src/components/style-sections/layout-section/flex-size-field.tsx
|
|
1073
|
+
import * as React31 from "react";
|
|
1074
|
+
import {
|
|
1075
|
+
ControlLabel as ControlLabel11,
|
|
1076
|
+
ControlToggleButtonGroup as ControlToggleButtonGroup2,
|
|
1077
|
+
NumberControl as NumberControl2,
|
|
1078
|
+
SizeControl as SizeControl2
|
|
1079
|
+
} from "@elementor/editor-controls";
|
|
1080
|
+
import { ExpandIcon, PencilIcon as PencilIcon2, ShrinkIcon } from "@elementor/icons";
|
|
1081
|
+
import { DirectionProvider as DirectionProvider5, Grid as Grid8, Stack as Stack10, ThemeProvider as ThemeProvider5 } from "@elementor/ui";
|
|
1082
|
+
import { __ as __13 } from "@wordpress/i18n";
|
|
1083
|
+
var DEFAULT = 1;
|
|
1084
|
+
var items2 = [
|
|
1085
|
+
{
|
|
1086
|
+
value: "flex-grow",
|
|
1087
|
+
label: __13("Grow", "elementor"),
|
|
1088
|
+
renderContent: ({ size }) => /* @__PURE__ */ React31.createElement(ExpandIcon, { fontSize: size }),
|
|
1089
|
+
showTooltip: true
|
|
1090
|
+
},
|
|
1091
|
+
{
|
|
1092
|
+
value: "flex-shrink",
|
|
1093
|
+
label: __13("Shrink", "elementor"),
|
|
1094
|
+
renderContent: ({ size }) => /* @__PURE__ */ React31.createElement(ShrinkIcon, { fontSize: size }),
|
|
1095
|
+
showTooltip: true
|
|
1096
|
+
},
|
|
1097
|
+
{
|
|
1098
|
+
value: "custom",
|
|
1099
|
+
label: __13("Custom", "elementor"),
|
|
1100
|
+
renderContent: ({ size }) => /* @__PURE__ */ React31.createElement(PencilIcon2, { fontSize: size }),
|
|
1101
|
+
showTooltip: true
|
|
1102
|
+
}
|
|
1103
|
+
];
|
|
1104
|
+
var FlexSizeField = () => {
|
|
1105
|
+
const { isSiteRtl } = useDirection(), [growField, setGrowField] = useStylesField("flex-grow"), [shrinkField, setShrinkField] = useStylesField("flex-shrink"), [basisField, setBasisField] = useStylesField("flex-basis");
|
|
1106
|
+
const grow = growField?.value || null, shrink = shrinkField?.value || null, basis = basisField?.value || null;
|
|
1107
|
+
const currentGroup = React31.useMemo(() => getActiveGroup({ grow, shrink, basis }), [grow, shrink, basis]), [activeGroup, setActiveGroup] = React31.useState(currentGroup);
|
|
1108
|
+
const onChangeGroup = (group = null) => {
|
|
1109
|
+
setActiveGroup(group);
|
|
1110
|
+
setBasisField(null);
|
|
1111
|
+
if (!group || group === "custom") {
|
|
1112
|
+
setGrowField(null);
|
|
1113
|
+
setShrinkField(null);
|
|
1114
|
+
return;
|
|
1115
|
+
}
|
|
1116
|
+
if (group === "flex-grow") {
|
|
1117
|
+
setGrowField({ $$type: "number", value: DEFAULT });
|
|
1118
|
+
setShrinkField(null);
|
|
1119
|
+
return;
|
|
1120
|
+
}
|
|
1121
|
+
setGrowField(null);
|
|
1122
|
+
setShrinkField({ $$type: "number", value: DEFAULT });
|
|
1123
|
+
};
|
|
1124
|
+
return /* @__PURE__ */ React31.createElement(DirectionProvider5, { rtl: isSiteRtl }, /* @__PURE__ */ React31.createElement(ThemeProvider5, null, /* @__PURE__ */ React31.createElement(Stack10, { gap: 2 }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(ControlLabel11, null, __13("Size", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React31.createElement(
|
|
1125
|
+
ControlToggleButtonGroup2,
|
|
836
1126
|
{
|
|
837
|
-
value:
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
1127
|
+
value: activeGroup,
|
|
1128
|
+
onChange: onChangeGroup,
|
|
1129
|
+
items: items2,
|
|
1130
|
+
exclusive: true
|
|
841
1131
|
}
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
1132
|
+
))), "custom" === activeGroup && /* @__PURE__ */ React31.createElement(FlexCustomField, null))));
|
|
1133
|
+
};
|
|
1134
|
+
var FlexCustomField = () => /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(StylesField, { bind: "flex-grow" }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(ControlLabel11, null, __13("Grow", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React31.createElement(NumberControl2, { min: 0, shouldForceInt: true })))), /* @__PURE__ */ React31.createElement(StylesField, { bind: "flex-shrink" }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(ControlLabel11, null, __13("Shrink", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React31.createElement(NumberControl2, { min: 0, shouldForceInt: true })))), /* @__PURE__ */ React31.createElement(StylesField, { bind: "flex-basis" }, /* @__PURE__ */ React31.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React31.createElement(ControlLabel11, null, __13("Basis", "elementor"))), /* @__PURE__ */ React31.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React31.createElement(SizeControl2, null)))));
|
|
1135
|
+
var getActiveGroup = ({
|
|
1136
|
+
grow,
|
|
1137
|
+
shrink,
|
|
1138
|
+
basis
|
|
1139
|
+
}) => {
|
|
1140
|
+
if (null === grow && null === shrink && !basis) {
|
|
1141
|
+
return null;
|
|
1142
|
+
}
|
|
1143
|
+
if (shrink && grow || basis) {
|
|
1144
|
+
return "custom";
|
|
1145
|
+
}
|
|
1146
|
+
if (grow === DEFAULT) {
|
|
1147
|
+
return "flex-grow";
|
|
1148
|
+
}
|
|
1149
|
+
if (shrink === DEFAULT) {
|
|
1150
|
+
return "flex-shrink";
|
|
1151
|
+
}
|
|
1152
|
+
return "custom";
|
|
1153
|
+
};
|
|
1154
|
+
|
|
1155
|
+
// src/components/style-sections/layout-section/justify-content-field.tsx
|
|
1156
|
+
import * as React32 from "react";
|
|
1157
|
+
import { ControlLabel as ControlLabel12, ToggleControl as ToggleControl5 } from "@elementor/editor-controls";
|
|
1158
|
+
import {
|
|
1159
|
+
JustifyBottomIcon,
|
|
1160
|
+
JustifyCenterIcon as CenterIcon3,
|
|
1161
|
+
JustifyDistributeVerticalIcon as EvenlyIcon,
|
|
1162
|
+
JustifySpaceAroundVerticalIcon as AroundIcon,
|
|
1163
|
+
JustifySpaceBetweenVerticalIcon as BetweenIcon,
|
|
1164
|
+
JustifyTopIcon
|
|
1165
|
+
} from "@elementor/icons";
|
|
1166
|
+
import { DirectionProvider as DirectionProvider6, Stack as Stack11, ThemeProvider as ThemeProvider6, withDirection as withDirection4 } from "@elementor/ui";
|
|
1167
|
+
import { __ as __14 } from "@wordpress/i18n";
|
|
1168
|
+
var StartIcon3 = withDirection4(JustifyTopIcon);
|
|
1169
|
+
var EndIcon3 = withDirection4(JustifyBottomIcon);
|
|
1170
|
+
var iconProps3 = {
|
|
1171
|
+
isClockwise: true,
|
|
1172
|
+
offset: -90
|
|
1173
|
+
};
|
|
1174
|
+
var options4 = [
|
|
1175
|
+
{
|
|
1176
|
+
value: "start",
|
|
1177
|
+
label: __14("Start", "elementor"),
|
|
1178
|
+
renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: StartIcon3, size, ...iconProps3 }),
|
|
1179
|
+
showTooltip: true
|
|
1180
|
+
},
|
|
1181
|
+
{
|
|
1182
|
+
value: "center",
|
|
1183
|
+
label: __14("Center", "elementor"),
|
|
1184
|
+
renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: CenterIcon3, size, ...iconProps3 }),
|
|
1185
|
+
showTooltip: true
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
value: "end",
|
|
1189
|
+
label: __14("End", "elementor"),
|
|
1190
|
+
renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: EndIcon3, size, ...iconProps3 }),
|
|
1191
|
+
showTooltip: true
|
|
1192
|
+
},
|
|
1193
|
+
{
|
|
1194
|
+
value: "space-between",
|
|
1195
|
+
label: __14("Space between", "elementor"),
|
|
1196
|
+
renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: BetweenIcon, size, ...iconProps3 }),
|
|
1197
|
+
showTooltip: true
|
|
1198
|
+
},
|
|
1199
|
+
{
|
|
1200
|
+
value: "space-around",
|
|
1201
|
+
label: __14("Space around", "elementor"),
|
|
1202
|
+
renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: AroundIcon, size, ...iconProps3 }),
|
|
1203
|
+
showTooltip: true
|
|
1204
|
+
},
|
|
1205
|
+
{
|
|
1206
|
+
value: "space-evenly",
|
|
1207
|
+
label: __14("Space evenly", "elementor"),
|
|
1208
|
+
renderContent: ({ size }) => /* @__PURE__ */ React32.createElement(RotatedIcon, { icon: EvenlyIcon, size, ...iconProps3 }),
|
|
1209
|
+
showTooltip: true
|
|
1210
|
+
}
|
|
1211
|
+
];
|
|
1212
|
+
var JustifyContentField = () => {
|
|
1213
|
+
const { isSiteRtl } = useDirection();
|
|
1214
|
+
return /* @__PURE__ */ React32.createElement(DirectionProvider6, { rtl: isSiteRtl }, /* @__PURE__ */ React32.createElement(ThemeProvider6, null, /* @__PURE__ */ React32.createElement(StylesField, { bind: "justify-content" }, /* @__PURE__ */ React32.createElement(Stack11, { gap: 1 }, /* @__PURE__ */ React32.createElement(ControlLabel12, null, __14("Justify content", "elementor")), /* @__PURE__ */ React32.createElement(ToggleControl5, { options: options4, fullWidth: true })))));
|
|
1215
|
+
};
|
|
1216
|
+
|
|
1217
|
+
// src/components/style-sections/layout-section/wrap-field.tsx
|
|
1218
|
+
import * as React33 from "react";
|
|
1219
|
+
import { ControlLabel as ControlLabel13, ToggleControl as ToggleControl6 } from "@elementor/editor-controls";
|
|
1220
|
+
import { ArrowBackIcon, ArrowForwardIcon, ArrowRightIcon as ArrowRightIcon2 } from "@elementor/icons";
|
|
1221
|
+
import { DirectionProvider as DirectionProvider7, Grid as Grid9, ThemeProvider as ThemeProvider7 } from "@elementor/ui";
|
|
1222
|
+
import { __ as __15 } from "@wordpress/i18n";
|
|
1223
|
+
var options5 = [
|
|
1224
|
+
{
|
|
1225
|
+
value: "nowrap",
|
|
1226
|
+
label: __15("No wrap", "elementor"),
|
|
1227
|
+
renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(ArrowRightIcon2, { fontSize: size }),
|
|
1228
|
+
showTooltip: true
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
value: "wrap",
|
|
1232
|
+
label: __15("Wrap", "elementor"),
|
|
1233
|
+
renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(ArrowBackIcon, { fontSize: size }),
|
|
1234
|
+
showTooltip: true
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
value: "wrap-reverse",
|
|
1238
|
+
label: __15("Reversed wrap", "elementor"),
|
|
1239
|
+
renderContent: ({ size }) => /* @__PURE__ */ React33.createElement(ArrowForwardIcon, { fontSize: size }),
|
|
1240
|
+
showTooltip: true
|
|
845
1241
|
}
|
|
846
|
-
|
|
1242
|
+
];
|
|
1243
|
+
var WrapField = () => {
|
|
1244
|
+
const { isSiteRtl } = useDirection();
|
|
1245
|
+
return /* @__PURE__ */ React33.createElement(DirectionProvider7, { rtl: isSiteRtl }, /* @__PURE__ */ React33.createElement(ThemeProvider7, null, /* @__PURE__ */ React33.createElement(StylesField, { bind: "flex-wrap" }, /* @__PURE__ */ React33.createElement(Grid9, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React33.createElement(Grid9, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(ControlLabel13, null, __15("Wrap", "elementor"))), /* @__PURE__ */ React33.createElement(Grid9, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React33.createElement(ToggleControl6, { options: options5 }))))));
|
|
847
1246
|
};
|
|
848
1247
|
|
|
849
1248
|
// src/components/style-sections/layout-section/layout-section.tsx
|
|
850
1249
|
var LayoutSection = () => {
|
|
851
1250
|
const [display] = useStylesField("display");
|
|
852
|
-
return /* @__PURE__ */
|
|
1251
|
+
return /* @__PURE__ */ React34.createElement(Stack12, { gap: 2 }, /* @__PURE__ */ React34.createElement(DisplayField, null), "flex" === display?.value && /* @__PURE__ */ React34.createElement(FlexFields, null));
|
|
853
1252
|
};
|
|
1253
|
+
var FlexFields = () => /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(FlexDirectionField, null), /* @__PURE__ */ React34.createElement(JustifyContentField, null), /* @__PURE__ */ React34.createElement(AlignItemsField, null), /* @__PURE__ */ React34.createElement(Divider3, null), /* @__PURE__ */ React34.createElement(WrapField, null), /* @__PURE__ */ React34.createElement(Divider3, null), /* @__PURE__ */ React34.createElement(ControlLabel14, null, __16("Flex child", "elementor")), /* @__PURE__ */ React34.createElement(AlignSelfChild, null), /* @__PURE__ */ React34.createElement(FlexOrderField, null), /* @__PURE__ */ React34.createElement(FlexSizeField, null));
|
|
854
1254
|
|
|
855
1255
|
// src/components/style-sections/position-section/position-section.tsx
|
|
856
|
-
import * as
|
|
1256
|
+
import * as React38 from "react";
|
|
857
1257
|
import { useCallback as useCallback3 } from "react";
|
|
858
|
-
import { Stack as
|
|
1258
|
+
import { Stack as Stack14 } from "@elementor/ui";
|
|
859
1259
|
|
|
860
1260
|
// src/hooks/use-style-prop-history.ts
|
|
861
|
-
import { useCallback as useCallback2, useMemo as
|
|
1261
|
+
import { useCallback as useCallback2, useMemo as useMemo3 } from "react";
|
|
862
1262
|
import { getElementStyles, getVariantByMeta, updateStyle as updateStyle2 } from "@elementor/editor-elements";
|
|
863
1263
|
|
|
864
1264
|
// src/hooks/use-prop-value-history.ts
|
|
865
|
-
import { useCallback, useMemo } from "react";
|
|
1265
|
+
import { useCallback, useMemo as useMemo2 } from "react";
|
|
866
1266
|
import { getSessionStorageItem, setSessionStorageItem } from "@elementor/utils";
|
|
867
1267
|
var PROPS_VALUES_HISTORY_PREFIX = "elementor/editor-editing-panel/prop-value-history";
|
|
868
1268
|
var usePropValueHistory = () => {
|
|
@@ -896,7 +1296,7 @@ var usePropValueHistory = () => {
|
|
|
896
1296
|
},
|
|
897
1297
|
[getElementPropsHistory, elementKey]
|
|
898
1298
|
);
|
|
899
|
-
return
|
|
1299
|
+
return useMemo2(() => ({ getPropValue, setPropValue, removeProp }), [getPropValue, removeProp, setPropValue]);
|
|
900
1300
|
};
|
|
901
1301
|
|
|
902
1302
|
// src/hooks/use-style-prop-history.ts
|
|
@@ -952,53 +1352,53 @@ var useStylePropsHistory = (props) => {
|
|
|
952
1352
|
bind: "classes"
|
|
953
1353
|
});
|
|
954
1354
|
}, [element.id, meta, props, styleDefID]);
|
|
955
|
-
return
|
|
1355
|
+
return useMemo3(
|
|
956
1356
|
() => ({ saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps }),
|
|
957
1357
|
[saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps]
|
|
958
1358
|
);
|
|
959
1359
|
};
|
|
960
1360
|
|
|
961
1361
|
// src/components/style-sections/position-section/dimensions-field.tsx
|
|
962
|
-
import * as
|
|
963
|
-
import { ControlLabel as
|
|
1362
|
+
import * as React35 from "react";
|
|
1363
|
+
import { ControlLabel as ControlLabel15, SizeControl as SizeControl3 } from "@elementor/editor-controls";
|
|
964
1364
|
import { SideBottomIcon as SideBottomIcon2, SideLeftIcon as SideLeftIcon2, SideRightIcon as SideRightIcon2, SideTopIcon as SideTopIcon2 } from "@elementor/icons";
|
|
965
|
-
import { Grid as
|
|
966
|
-
import { __ as
|
|
1365
|
+
import { Grid as Grid10, Stack as Stack13 } from "@elementor/ui";
|
|
1366
|
+
import { __ as __17 } from "@wordpress/i18n";
|
|
967
1367
|
var sideIcons = {
|
|
968
|
-
left: /* @__PURE__ */
|
|
969
|
-
right: /* @__PURE__ */
|
|
970
|
-
top: /* @__PURE__ */
|
|
971
|
-
bottom: /* @__PURE__ */
|
|
1368
|
+
left: /* @__PURE__ */ React35.createElement(SideLeftIcon2, { fontSize: "tiny" }),
|
|
1369
|
+
right: /* @__PURE__ */ React35.createElement(SideRightIcon2, { fontSize: "tiny" }),
|
|
1370
|
+
top: /* @__PURE__ */ React35.createElement(SideTopIcon2, { fontSize: "tiny" }),
|
|
1371
|
+
bottom: /* @__PURE__ */ React35.createElement(SideBottomIcon2, { fontSize: "tiny" })
|
|
972
1372
|
};
|
|
973
1373
|
var DimensionsField = () => {
|
|
974
|
-
return /* @__PURE__ */
|
|
1374
|
+
return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(Stack13, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React35.createElement(DimensionField, { side: "top", label: __17("Top", "elementor") }), /* @__PURE__ */ React35.createElement(DimensionField, { side: "right", label: __17("Right", "elementor") })), /* @__PURE__ */ React35.createElement(Stack13, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React35.createElement(DimensionField, { side: "bottom", label: __17("Bottom", "elementor") }), /* @__PURE__ */ React35.createElement(DimensionField, { side: "left", label: __17("Left", "elementor") })));
|
|
975
1375
|
};
|
|
976
1376
|
var DimensionField = ({ side, label }) => {
|
|
977
|
-
return /* @__PURE__ */
|
|
1377
|
+
return /* @__PURE__ */ React35.createElement(Grid10, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React35.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React35.createElement(ControlLabel15, null, label)), /* @__PURE__ */ React35.createElement(Grid10, { item: true, xs: 12 }, /* @__PURE__ */ React35.createElement(StylesField, { bind: side }, /* @__PURE__ */ React35.createElement(SizeControl3, { startIcon: sideIcons[side] }))));
|
|
978
1378
|
};
|
|
979
1379
|
|
|
980
1380
|
// src/components/style-sections/position-section/position-field.tsx
|
|
981
|
-
import * as
|
|
982
|
-
import { ControlLabel as
|
|
983
|
-
import { Grid as
|
|
984
|
-
import { __ as
|
|
1381
|
+
import * as React36 from "react";
|
|
1382
|
+
import { ControlLabel as ControlLabel16, SelectControl as SelectControl3 } from "@elementor/editor-controls";
|
|
1383
|
+
import { Grid as Grid11 } from "@elementor/ui";
|
|
1384
|
+
import { __ as __18 } from "@wordpress/i18n";
|
|
985
1385
|
var positionOptions = [
|
|
986
|
-
{ label:
|
|
987
|
-
{ label:
|
|
988
|
-
{ label:
|
|
989
|
-
{ label:
|
|
1386
|
+
{ label: __18("Static", "elementor"), value: "static" },
|
|
1387
|
+
{ label: __18("Relative", "elementor"), value: "relative" },
|
|
1388
|
+
{ label: __18("Absolute", "elementor"), value: "absolute" },
|
|
1389
|
+
{ label: __18("Fixed", "elementor"), value: "fixed" }
|
|
990
1390
|
];
|
|
991
1391
|
var PositionField = () => {
|
|
992
|
-
return /* @__PURE__ */
|
|
1392
|
+
return /* @__PURE__ */ React36.createElement(StylesField, { bind: "position" }, /* @__PURE__ */ React36.createElement(Grid11, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React36.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(ControlLabel16, null, __18("Position", "elementor"))), /* @__PURE__ */ React36.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React36.createElement(SelectControl3, { options: positionOptions }))));
|
|
993
1393
|
};
|
|
994
1394
|
|
|
995
1395
|
// src/components/style-sections/position-section/z-index-field.tsx
|
|
996
|
-
import * as
|
|
997
|
-
import { ControlLabel as
|
|
998
|
-
import { Grid as
|
|
999
|
-
import { __ as
|
|
1396
|
+
import * as React37 from "react";
|
|
1397
|
+
import { ControlLabel as ControlLabel17, NumberControl as NumberControl3 } from "@elementor/editor-controls";
|
|
1398
|
+
import { Grid as Grid12 } from "@elementor/ui";
|
|
1399
|
+
import { __ as __19 } from "@wordpress/i18n";
|
|
1000
1400
|
var ZIndexField = () => {
|
|
1001
|
-
return /* @__PURE__ */
|
|
1401
|
+
return /* @__PURE__ */ React37.createElement(StylesField, { bind: "z-index" }, /* @__PURE__ */ React37.createElement(Grid12, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React37.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(ControlLabel17, null, __19("Z-Index", "elementor"))), /* @__PURE__ */ React37.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(NumberControl3, null))));
|
|
1002
1402
|
};
|
|
1003
1403
|
|
|
1004
1404
|
// src/components/style-sections/position-section/position-section.tsx
|
|
@@ -1006,8 +1406,8 @@ var dimensionsPropKeys = ["top", "bottom", "left", "right"];
|
|
|
1006
1406
|
var PositionSection = () => {
|
|
1007
1407
|
const [positionValue] = useStylesField("position");
|
|
1008
1408
|
usePositionChangeHandler();
|
|
1009
|
-
const isNotStatic = positionValue && positionValue !== "static";
|
|
1010
|
-
return /* @__PURE__ */
|
|
1409
|
+
const isNotStatic = positionValue && positionValue?.value !== "static";
|
|
1410
|
+
return /* @__PURE__ */ React38.createElement(Stack14, { gap: 1.5 }, /* @__PURE__ */ React38.createElement(PositionField, null), isNotStatic ? /* @__PURE__ */ React38.createElement(React38.Fragment, null, /* @__PURE__ */ React38.createElement(DimensionsField, null), /* @__PURE__ */ React38.createElement(ZIndexField, null)) : null);
|
|
1011
1411
|
};
|
|
1012
1412
|
var usePositionChangeHandler = () => {
|
|
1013
1413
|
const dimensionsHistory = useStylePropsHistory(dimensionsPropKeys);
|
|
@@ -1032,73 +1432,73 @@ var usePositionChangeHandler = () => {
|
|
|
1032
1432
|
};
|
|
1033
1433
|
|
|
1034
1434
|
// src/components/style-sections/size-section/size-section.tsx
|
|
1035
|
-
import * as
|
|
1036
|
-
import { ControlLabel as
|
|
1037
|
-
import { Divider as
|
|
1038
|
-
import { __ as
|
|
1435
|
+
import * as React40 from "react";
|
|
1436
|
+
import { ControlLabel as ControlLabel19, SizeControl as SizeControl4 } from "@elementor/editor-controls";
|
|
1437
|
+
import { Divider as Divider4, Grid as Grid14, Stack as Stack15 } from "@elementor/ui";
|
|
1438
|
+
import { __ as __21 } from "@wordpress/i18n";
|
|
1039
1439
|
|
|
1040
1440
|
// src/components/style-sections/size-section/overflow-field.tsx
|
|
1041
|
-
import * as
|
|
1042
|
-
import { ControlLabel as
|
|
1441
|
+
import * as React39 from "react";
|
|
1442
|
+
import { ControlLabel as ControlLabel18, ToggleControl as ToggleControl7 } from "@elementor/editor-controls";
|
|
1043
1443
|
import { ExpandBottomIcon, EyeIcon, EyeOffIcon } from "@elementor/icons";
|
|
1044
|
-
import { Grid as
|
|
1045
|
-
import { __ as
|
|
1046
|
-
var
|
|
1444
|
+
import { Grid as Grid13 } from "@elementor/ui";
|
|
1445
|
+
import { __ as __20 } from "@wordpress/i18n";
|
|
1446
|
+
var options6 = [
|
|
1047
1447
|
{
|
|
1048
1448
|
value: "visible",
|
|
1049
|
-
label:
|
|
1050
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1449
|
+
label: __20("Visible", "elementor"),
|
|
1450
|
+
renderContent: ({ size }) => /* @__PURE__ */ React39.createElement(EyeIcon, { fontSize: size }),
|
|
1051
1451
|
showTooltip: true
|
|
1052
1452
|
},
|
|
1053
1453
|
{
|
|
1054
1454
|
value: "hidden",
|
|
1055
|
-
label:
|
|
1056
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1455
|
+
label: __20("Hidden", "elementor"),
|
|
1456
|
+
renderContent: ({ size }) => /* @__PURE__ */ React39.createElement(EyeOffIcon, { fontSize: size }),
|
|
1057
1457
|
showTooltip: true
|
|
1058
1458
|
},
|
|
1059
1459
|
{
|
|
1060
1460
|
value: "auto",
|
|
1061
|
-
label:
|
|
1062
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1461
|
+
label: __20("Auto", "elementor"),
|
|
1462
|
+
renderContent: ({ size }) => /* @__PURE__ */ React39.createElement(ExpandBottomIcon, { fontSize: size }),
|
|
1063
1463
|
showTooltip: true
|
|
1064
1464
|
}
|
|
1065
1465
|
];
|
|
1066
1466
|
var OverflowField = () => {
|
|
1067
|
-
return /* @__PURE__ */
|
|
1467
|
+
return /* @__PURE__ */ React39.createElement(StylesField, { bind: "overflow" }, /* @__PURE__ */ React39.createElement(Grid13, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React39.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React39.createElement(ControlLabel18, null, __20("Overflow", "elementor"))), /* @__PURE__ */ React39.createElement(Grid13, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React39.createElement(ToggleControl7, { options: options6 }))));
|
|
1068
1468
|
};
|
|
1069
1469
|
|
|
1070
1470
|
// src/components/style-sections/size-section/size-section.tsx
|
|
1071
1471
|
var SizeSection = () => {
|
|
1072
|
-
return /* @__PURE__ */
|
|
1472
|
+
return /* @__PURE__ */ React40.createElement(Stack15, { gap: 1.5 }, /* @__PURE__ */ React40.createElement(Grid14, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "width", label: __21("Width", "elementor") })), /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "height", label: __21("Height", "elementor") }))), /* @__PURE__ */ React40.createElement(Grid14, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "min-width", label: __21("Min. Width", "elementor") })), /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "min-height", label: __21("Min. Height", "elementor") }))), /* @__PURE__ */ React40.createElement(Grid14, { container: true, gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "max-width", label: __21("Max. Width", "elementor") })), /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React40.createElement(SizeField, { bind: "max-height", label: __21("Max. Height", "elementor") }))), /* @__PURE__ */ React40.createElement(Divider4, null), /* @__PURE__ */ React40.createElement(Stack15, null, /* @__PURE__ */ React40.createElement(OverflowField, null)));
|
|
1073
1473
|
};
|
|
1074
1474
|
var SizeField = ({ label, bind }) => {
|
|
1075
|
-
return /* @__PURE__ */
|
|
1475
|
+
return /* @__PURE__ */ React40.createElement(StylesField, { bind }, /* @__PURE__ */ React40.createElement(Grid14, { container: true, gap: 1, alignItems: "center" }, /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 12 }, /* @__PURE__ */ React40.createElement(ControlLabel19, null, label)), /* @__PURE__ */ React40.createElement(Grid14, { item: true, xs: 12 }, /* @__PURE__ */ React40.createElement(SizeControl4, null))));
|
|
1076
1476
|
};
|
|
1077
1477
|
|
|
1078
1478
|
// src/components/style-sections/spacing-section/spacing-section.tsx
|
|
1079
|
-
import * as
|
|
1479
|
+
import * as React41 from "react";
|
|
1080
1480
|
import { LinkedDimensionsControl } from "@elementor/editor-controls";
|
|
1081
|
-
import { Divider as
|
|
1082
|
-
import { __ as
|
|
1481
|
+
import { Divider as Divider5, Stack as Stack16 } from "@elementor/ui";
|
|
1482
|
+
import { __ as __22 } from "@wordpress/i18n";
|
|
1083
1483
|
var SpacingSection = () => {
|
|
1084
|
-
return /* @__PURE__ */
|
|
1484
|
+
return /* @__PURE__ */ React41.createElement(Stack16, { gap: 1.5 }, /* @__PURE__ */ React41.createElement(StylesField, { bind: "padding" }, /* @__PURE__ */ React41.createElement(LinkedDimensionsControl, { label: __22("Padding", "elementor") })), /* @__PURE__ */ React41.createElement(Divider5, null), /* @__PURE__ */ React41.createElement(StylesField, { bind: "margin" }, /* @__PURE__ */ React41.createElement(LinkedDimensionsControl, { label: __22("Margin", "elementor") })));
|
|
1085
1485
|
};
|
|
1086
1486
|
|
|
1087
1487
|
// src/components/style-sections/typography-section/typography-section.tsx
|
|
1088
|
-
import * as
|
|
1089
|
-
import { Divider as
|
|
1488
|
+
import * as React55 from "react";
|
|
1489
|
+
import { Divider as Divider6, Stack as Stack18 } from "@elementor/ui";
|
|
1090
1490
|
|
|
1091
1491
|
// src/components/collapsible-content.tsx
|
|
1092
|
-
import * as
|
|
1093
|
-
import { useState as
|
|
1094
|
-
import { Button, Collapse as Collapse3, Stack as
|
|
1095
|
-
import { __ as
|
|
1492
|
+
import * as React42 from "react";
|
|
1493
|
+
import { useState as useState4 } from "react";
|
|
1494
|
+
import { Button, Collapse as Collapse3, Stack as Stack17 } from "@elementor/ui";
|
|
1495
|
+
import { __ as __23 } from "@wordpress/i18n";
|
|
1096
1496
|
var CollapsibleContent = ({ children, defaultOpen = false }) => {
|
|
1097
|
-
const [open, setOpen] =
|
|
1497
|
+
const [open, setOpen] = useState4(defaultOpen);
|
|
1098
1498
|
const handleToggle = () => {
|
|
1099
1499
|
setOpen((prevOpen) => !prevOpen);
|
|
1100
1500
|
};
|
|
1101
|
-
return /* @__PURE__ */
|
|
1501
|
+
return /* @__PURE__ */ React42.createElement(Stack17, { sx: { py: 0.5 } }, /* @__PURE__ */ React42.createElement(
|
|
1102
1502
|
Button,
|
|
1103
1503
|
{
|
|
1104
1504
|
fullWidth: true,
|
|
@@ -1106,17 +1506,17 @@ var CollapsibleContent = ({ children, defaultOpen = false }) => {
|
|
|
1106
1506
|
color: "secondary",
|
|
1107
1507
|
variant: "outlined",
|
|
1108
1508
|
onClick: handleToggle,
|
|
1109
|
-
endIcon: /* @__PURE__ */
|
|
1509
|
+
endIcon: /* @__PURE__ */ React42.createElement(CollapseIcon, { open })
|
|
1110
1510
|
},
|
|
1111
|
-
open ?
|
|
1112
|
-
), /* @__PURE__ */
|
|
1511
|
+
open ? __23("Show less", "elementor") : __23("Show more", "elementor")
|
|
1512
|
+
), /* @__PURE__ */ React42.createElement(Collapse3, { in: open, timeout: "auto", unmountOnExit: true }, children));
|
|
1113
1513
|
};
|
|
1114
1514
|
|
|
1115
1515
|
// src/components/style-sections/typography-section/font-family-field.tsx
|
|
1116
|
-
import * as
|
|
1117
|
-
import { ControlLabel as
|
|
1118
|
-
import { Grid as
|
|
1119
|
-
import { __ as
|
|
1516
|
+
import * as React43 from "react";
|
|
1517
|
+
import { ControlLabel as ControlLabel20, FontFamilyControl } from "@elementor/editor-controls";
|
|
1518
|
+
import { Grid as Grid15 } from "@elementor/ui";
|
|
1519
|
+
import { __ as __24 } from "@wordpress/i18n";
|
|
1120
1520
|
|
|
1121
1521
|
// src/sync/get-elementor-config.ts
|
|
1122
1522
|
var getElementorConfig = () => {
|
|
@@ -1130,184 +1530,220 @@ var FontFamilyField = () => {
|
|
|
1130
1530
|
if (!fontFamilies) {
|
|
1131
1531
|
return null;
|
|
1132
1532
|
}
|
|
1133
|
-
return /* @__PURE__ */
|
|
1533
|
+
return /* @__PURE__ */ React43.createElement(StylesField, { bind: "font-family" }, /* @__PURE__ */ React43.createElement(Grid15, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React43.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(ControlLabel20, null, __24("Font Family", "elementor"))), /* @__PURE__ */ React43.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(FontFamilyControl, { fontFamilies }))));
|
|
1134
1534
|
};
|
|
1135
1535
|
var getFontFamilies = () => {
|
|
1136
1536
|
const { controls } = getElementorConfig();
|
|
1137
|
-
const
|
|
1138
|
-
if (!
|
|
1537
|
+
const options10 = controls?.font?.options;
|
|
1538
|
+
if (!options10) {
|
|
1139
1539
|
return null;
|
|
1140
1540
|
}
|
|
1141
|
-
return
|
|
1541
|
+
return options10;
|
|
1142
1542
|
};
|
|
1143
1543
|
|
|
1144
1544
|
// src/components/style-sections/typography-section/font-size-field.tsx
|
|
1145
|
-
import * as
|
|
1146
|
-
import { ControlLabel as
|
|
1147
|
-
import { Grid as
|
|
1148
|
-
import { __ as
|
|
1545
|
+
import * as React44 from "react";
|
|
1546
|
+
import { ControlLabel as ControlLabel21, SizeControl as SizeControl5 } from "@elementor/editor-controls";
|
|
1547
|
+
import { Grid as Grid16 } from "@elementor/ui";
|
|
1548
|
+
import { __ as __25 } from "@wordpress/i18n";
|
|
1149
1549
|
var FontSizeField = () => {
|
|
1150
|
-
return /* @__PURE__ */
|
|
1550
|
+
return /* @__PURE__ */ React44.createElement(StylesField, { bind: "font-size" }, /* @__PURE__ */ React44.createElement(Grid16, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React44.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(ControlLabel21, null, __25("Font Size", "elementor"))), /* @__PURE__ */ React44.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(SizeControl5, null))));
|
|
1151
1551
|
};
|
|
1152
1552
|
|
|
1153
1553
|
// src/components/style-sections/typography-section/font-weight-field.tsx
|
|
1154
|
-
import * as
|
|
1155
|
-
import { ControlLabel as
|
|
1156
|
-
import { Grid as
|
|
1157
|
-
import { __ as
|
|
1554
|
+
import * as React45 from "react";
|
|
1555
|
+
import { ControlLabel as ControlLabel22, SelectControl as SelectControl4 } from "@elementor/editor-controls";
|
|
1556
|
+
import { Grid as Grid17 } from "@elementor/ui";
|
|
1557
|
+
import { __ as __26 } from "@wordpress/i18n";
|
|
1158
1558
|
var fontWeightOptions = [
|
|
1159
|
-
{ label:
|
|
1160
|
-
{ label:
|
|
1161
|
-
{ label:
|
|
1162
|
-
{ label:
|
|
1163
|
-
{ label:
|
|
1559
|
+
{ label: __26("Light - 400", "elementor"), value: "400" },
|
|
1560
|
+
{ label: __26("Regular - 500", "elementor"), value: "500" },
|
|
1561
|
+
{ label: __26("Semi Bold - 600", "elementor"), value: "600" },
|
|
1562
|
+
{ label: __26("Bold - 700", "elementor"), value: "700" },
|
|
1563
|
+
{ label: __26("Black - 900", "elementor"), value: "900" }
|
|
1164
1564
|
];
|
|
1165
1565
|
var FontWeightField = () => {
|
|
1166
|
-
return /* @__PURE__ */
|
|
1566
|
+
return /* @__PURE__ */ React45.createElement(StylesField, { bind: "font-weight" }, /* @__PURE__ */ React45.createElement(Grid17, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React45.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(ControlLabel22, null, __26("Font Weight", "elementor"))), /* @__PURE__ */ React45.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React45.createElement(SelectControl4, { options: fontWeightOptions }))));
|
|
1167
1567
|
};
|
|
1168
1568
|
|
|
1169
1569
|
// src/components/style-sections/typography-section/letter-spacing-field.tsx
|
|
1170
|
-
import * as
|
|
1171
|
-
import { ControlLabel as
|
|
1172
|
-
import { Grid as
|
|
1173
|
-
import { __ as
|
|
1570
|
+
import * as React46 from "react";
|
|
1571
|
+
import { ControlLabel as ControlLabel23, SizeControl as SizeControl6 } from "@elementor/editor-controls";
|
|
1572
|
+
import { Grid as Grid18 } from "@elementor/ui";
|
|
1573
|
+
import { __ as __27 } from "@wordpress/i18n";
|
|
1174
1574
|
var LetterSpacingField = () => {
|
|
1175
|
-
return /* @__PURE__ */
|
|
1575
|
+
return /* @__PURE__ */ React46.createElement(StylesField, { bind: "letter-spacing" }, /* @__PURE__ */ React46.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React46.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(ControlLabel23, null, __27("Letter Spacing", "elementor"))), /* @__PURE__ */ React46.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(SizeControl6, null))));
|
|
1576
|
+
};
|
|
1577
|
+
|
|
1578
|
+
// src/components/style-sections/typography-section/line-height-field.tsx
|
|
1579
|
+
import * as React47 from "react";
|
|
1580
|
+
import { ControlLabel as ControlLabel24, SizeControl as SizeControl7 } from "@elementor/editor-controls";
|
|
1581
|
+
import { Grid as Grid19 } from "@elementor/ui";
|
|
1582
|
+
import { __ as __28 } from "@wordpress/i18n";
|
|
1583
|
+
var LineHeightField = () => {
|
|
1584
|
+
return /* @__PURE__ */ React47.createElement(StylesField, { bind: "line-height" }, /* @__PURE__ */ React47.createElement(Grid19, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React47.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ControlLabel24, null, __28("Line Height", "elementor"))), /* @__PURE__ */ React47.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(SizeControl7, null))));
|
|
1176
1585
|
};
|
|
1177
1586
|
|
|
1178
1587
|
// src/components/style-sections/typography-section/text-alignment-field.tsx
|
|
1179
|
-
import * as
|
|
1180
|
-
import { ControlLabel as
|
|
1588
|
+
import * as React48 from "react";
|
|
1589
|
+
import { ControlLabel as ControlLabel25, ToggleControl as ToggleControl8 } from "@elementor/editor-controls";
|
|
1181
1590
|
import { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from "@elementor/icons";
|
|
1182
|
-
import { Grid as
|
|
1183
|
-
import { __ as
|
|
1184
|
-
var
|
|
1591
|
+
import { Grid as Grid20 } from "@elementor/ui";
|
|
1592
|
+
import { __ as __29 } from "@wordpress/i18n";
|
|
1593
|
+
var options7 = [
|
|
1185
1594
|
{
|
|
1186
1595
|
value: "left",
|
|
1187
|
-
label:
|
|
1188
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1596
|
+
label: __29("Left", "elementor"),
|
|
1597
|
+
renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(AlignLeftIcon, { fontSize: size })
|
|
1189
1598
|
},
|
|
1190
1599
|
{
|
|
1191
1600
|
value: "center",
|
|
1192
|
-
label:
|
|
1193
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1601
|
+
label: __29("Center", "elementor"),
|
|
1602
|
+
renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(AlignCenterIcon, { fontSize: size })
|
|
1194
1603
|
},
|
|
1195
1604
|
{
|
|
1196
1605
|
value: "right",
|
|
1197
|
-
label:
|
|
1198
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1606
|
+
label: __29("Right", "elementor"),
|
|
1607
|
+
renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(AlignRightIcon, { fontSize: size })
|
|
1199
1608
|
},
|
|
1200
1609
|
{
|
|
1201
1610
|
value: "justify",
|
|
1202
|
-
label:
|
|
1203
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1611
|
+
label: __29("Justify", "elementor"),
|
|
1612
|
+
renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(AlignJustifiedIcon, { fontSize: size })
|
|
1204
1613
|
}
|
|
1205
1614
|
];
|
|
1206
1615
|
var TextAlignmentField = () => {
|
|
1207
|
-
return /* @__PURE__ */
|
|
1616
|
+
return /* @__PURE__ */ React48.createElement(StylesField, { bind: "text-align" }, /* @__PURE__ */ React48.createElement(Grid20, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React48.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(ControlLabel25, null, __29("Alignment", "elementor"))), /* @__PURE__ */ React48.createElement(Grid20, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React48.createElement(ToggleControl8, { options: options7 }))));
|
|
1208
1617
|
};
|
|
1209
1618
|
|
|
1210
1619
|
// src/components/style-sections/typography-section/text-color-field.tsx
|
|
1211
|
-
import * as
|
|
1212
|
-
import { ColorControl as ColorControl3, ControlLabel as
|
|
1213
|
-
import { Grid as
|
|
1214
|
-
import { __ as
|
|
1620
|
+
import * as React49 from "react";
|
|
1621
|
+
import { ColorControl as ColorControl3, ControlLabel as ControlLabel26 } from "@elementor/editor-controls";
|
|
1622
|
+
import { Grid as Grid21 } from "@elementor/ui";
|
|
1623
|
+
import { __ as __30 } from "@wordpress/i18n";
|
|
1215
1624
|
var TextColorField = () => {
|
|
1216
|
-
return /* @__PURE__ */
|
|
1625
|
+
return /* @__PURE__ */ React49.createElement(StylesField, { bind: "color" }, /* @__PURE__ */ React49.createElement(Grid21, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React49.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(ControlLabel26, null, __30("Text Color", "elementor"))), /* @__PURE__ */ React49.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(ColorControl3, null))));
|
|
1217
1626
|
};
|
|
1218
1627
|
|
|
1219
1628
|
// src/components/style-sections/typography-section/text-direction-field.tsx
|
|
1220
|
-
import * as
|
|
1221
|
-
import { ControlLabel as
|
|
1629
|
+
import * as React50 from "react";
|
|
1630
|
+
import { ControlLabel as ControlLabel27, ToggleControl as ToggleControl9 } from "@elementor/editor-controls";
|
|
1222
1631
|
import { TextDirectionLtrIcon, TextDirectionRtlIcon } from "@elementor/icons";
|
|
1223
|
-
import { Grid as
|
|
1224
|
-
import { __ as
|
|
1225
|
-
var
|
|
1632
|
+
import { Grid as Grid22 } from "@elementor/ui";
|
|
1633
|
+
import { __ as __31 } from "@wordpress/i18n";
|
|
1634
|
+
var options8 = [
|
|
1226
1635
|
{
|
|
1227
1636
|
value: "ltr",
|
|
1228
|
-
label:
|
|
1229
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1637
|
+
label: __31("Left to Right", "elementor"),
|
|
1638
|
+
renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(TextDirectionLtrIcon, { fontSize: size })
|
|
1230
1639
|
},
|
|
1231
1640
|
{
|
|
1232
1641
|
value: "rtl",
|
|
1233
|
-
label:
|
|
1234
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1642
|
+
label: __31("Right to Left", "elementor"),
|
|
1643
|
+
renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(TextDirectionRtlIcon, { fontSize: size })
|
|
1235
1644
|
}
|
|
1236
1645
|
];
|
|
1237
1646
|
var TextDirectionField = () => {
|
|
1238
|
-
return /* @__PURE__ */
|
|
1647
|
+
return /* @__PURE__ */ React50.createElement(StylesField, { bind: "direction" }, /* @__PURE__ */ React50.createElement(Grid22, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React50.createElement(Grid22, { item: true, xs: 6 }, /* @__PURE__ */ React50.createElement(ControlLabel27, null, __31("Direction", "elementor"))), /* @__PURE__ */ React50.createElement(Grid22, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React50.createElement(ToggleControl9, { options: options8 }))));
|
|
1239
1648
|
};
|
|
1240
1649
|
|
|
1241
1650
|
// src/components/style-sections/typography-section/text-stroke-field.tsx
|
|
1242
|
-
import * as
|
|
1243
|
-
import {
|
|
1244
|
-
import { __ as
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
import { __ as __24 } from "@wordpress/i18n";
|
|
1252
|
-
var CollapsibleField = ({ label, children, defaultOpen = false }) => {
|
|
1253
|
-
const [open, setOpen] = useState3(defaultOpen);
|
|
1254
|
-
const handleToggle = () => {
|
|
1255
|
-
setOpen((prevOpen) => !prevOpen);
|
|
1256
|
-
};
|
|
1257
|
-
return /* @__PURE__ */ React43.createElement(Stack16, { gap: 1.5 }, /* @__PURE__ */ React43.createElement(Stack16, { direction: "row", justifyContent: "space-between", alignItems: "center", sx: { py: 0.5 } }, label, /* @__PURE__ */ React43.createElement(
|
|
1258
|
-
IconButton3,
|
|
1259
|
-
{
|
|
1260
|
-
onClick: handleToggle,
|
|
1261
|
-
size: "tiny",
|
|
1262
|
-
"aria-label": open ? __24("Close", "elementor") : __24("Expand", "elementor")
|
|
1651
|
+
import * as React51 from "react";
|
|
1652
|
+
import { StrokeControl } from "@elementor/editor-controls";
|
|
1653
|
+
import { __ as __32 } from "@wordpress/i18n";
|
|
1654
|
+
var initTextStroke = {
|
|
1655
|
+
$$type: "stroke",
|
|
1656
|
+
value: {
|
|
1657
|
+
color: {
|
|
1658
|
+
$$type: "color",
|
|
1659
|
+
value: "#000000"
|
|
1263
1660
|
},
|
|
1264
|
-
|
|
1265
|
-
|
|
1661
|
+
width: {
|
|
1662
|
+
$$type: "size",
|
|
1663
|
+
value: {
|
|
1664
|
+
unit: "px",
|
|
1665
|
+
size: 1
|
|
1666
|
+
}
|
|
1667
|
+
}
|
|
1668
|
+
}
|
|
1266
1669
|
};
|
|
1267
|
-
|
|
1268
|
-
// src/components/style-sections/typography-section/text-stroke-field.tsx
|
|
1269
1670
|
var TextStrokeField = () => {
|
|
1270
|
-
|
|
1671
|
+
const [textStroke, setTextStroke] = useStylesField("-webkit-text-stroke");
|
|
1672
|
+
const addTextStroke = () => {
|
|
1673
|
+
setTextStroke(initTextStroke);
|
|
1674
|
+
};
|
|
1675
|
+
const removeTextStroke = () => {
|
|
1676
|
+
setTextStroke(null);
|
|
1677
|
+
};
|
|
1678
|
+
const hasTextStroke = Boolean(textStroke);
|
|
1679
|
+
return /* @__PURE__ */ React51.createElement(
|
|
1680
|
+
AddOrRemoveContent,
|
|
1681
|
+
{
|
|
1682
|
+
label: __32("Text Stroke", "elementor"),
|
|
1683
|
+
isAdded: hasTextStroke,
|
|
1684
|
+
onAdd: addTextStroke,
|
|
1685
|
+
onRemove: removeTextStroke
|
|
1686
|
+
},
|
|
1687
|
+
/* @__PURE__ */ React51.createElement(StylesField, { bind: "-webkit-text-stroke" }, /* @__PURE__ */ React51.createElement(StrokeControl, null))
|
|
1688
|
+
);
|
|
1271
1689
|
};
|
|
1272
1690
|
|
|
1273
1691
|
// src/components/style-sections/typography-section/text-style-field.tsx
|
|
1274
|
-
import * as
|
|
1275
|
-
import { ControlLabel as
|
|
1692
|
+
import * as React52 from "react";
|
|
1693
|
+
import { ControlLabel as ControlLabel28 } from "@elementor/editor-controls";
|
|
1276
1694
|
import { ItalicIcon, StrikethroughIcon, UnderlineIcon } from "@elementor/icons";
|
|
1277
|
-
import { Grid as
|
|
1278
|
-
import { __ as
|
|
1695
|
+
import { Grid as Grid23, ToggleButton as ToggleButtonBase, ToggleButtonGroup } from "@elementor/ui";
|
|
1696
|
+
import { __ as __33 } from "@wordpress/i18n";
|
|
1279
1697
|
var buttonSize = "tiny";
|
|
1280
1698
|
var TextStyleField = () => {
|
|
1281
1699
|
const [fontStyle, setFontStyle] = useStylesField("font-style");
|
|
1282
1700
|
const [textDecoration, setTextDecoration] = useStylesField("text-decoration");
|
|
1283
|
-
const formats = [fontStyle, ...(textDecoration || "").split(" ")];
|
|
1284
|
-
|
|
1701
|
+
const formats = [fontStyle?.value, ...(textDecoration?.value || "").split(" ")];
|
|
1702
|
+
const handleSetFontStyle = (newValue) => {
|
|
1703
|
+
if (newValue === null) {
|
|
1704
|
+
return setFontStyle(null);
|
|
1705
|
+
}
|
|
1706
|
+
setFontStyle({
|
|
1707
|
+
$$type: "string",
|
|
1708
|
+
value: newValue
|
|
1709
|
+
});
|
|
1710
|
+
};
|
|
1711
|
+
const handleSetTextDecoration = (newValue) => {
|
|
1712
|
+
if (newValue === null) {
|
|
1713
|
+
return setTextDecoration(null);
|
|
1714
|
+
}
|
|
1715
|
+
setTextDecoration({
|
|
1716
|
+
$$type: "string",
|
|
1717
|
+
value: newValue
|
|
1718
|
+
});
|
|
1719
|
+
};
|
|
1720
|
+
return /* @__PURE__ */ React52.createElement(Grid23, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React52.createElement(Grid23, { item: true, xs: 6 }, /* @__PURE__ */ React52.createElement(ControlLabel28, null, __33("Style", "elementor"))), /* @__PURE__ */ React52.createElement(Grid23, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React52.createElement(ToggleButtonGroup, { value: formats }, /* @__PURE__ */ React52.createElement(
|
|
1285
1721
|
ToggleButton,
|
|
1286
1722
|
{
|
|
1287
1723
|
value: "italic",
|
|
1288
|
-
onChange: (v) =>
|
|
1724
|
+
onChange: (v) => handleSetFontStyle(fontStyle?.value === v ? null : v),
|
|
1289
1725
|
"aria-label": "italic",
|
|
1290
1726
|
sx: { marginLeft: "auto" }
|
|
1291
1727
|
},
|
|
1292
|
-
/* @__PURE__ */
|
|
1293
|
-
), /* @__PURE__ */
|
|
1728
|
+
/* @__PURE__ */ React52.createElement(ItalicIcon, { fontSize: buttonSize })
|
|
1729
|
+
), /* @__PURE__ */ React52.createElement(
|
|
1294
1730
|
ShorthandControl,
|
|
1295
1731
|
{
|
|
1296
1732
|
value: "line-through",
|
|
1297
|
-
currentValues: textDecoration || "",
|
|
1298
|
-
updateValues:
|
|
1733
|
+
currentValues: textDecoration?.value || "",
|
|
1734
|
+
updateValues: handleSetTextDecoration,
|
|
1299
1735
|
"aria-label": "line-through"
|
|
1300
1736
|
},
|
|
1301
|
-
/* @__PURE__ */
|
|
1302
|
-
), /* @__PURE__ */
|
|
1737
|
+
/* @__PURE__ */ React52.createElement(StrikethroughIcon, { fontSize: buttonSize })
|
|
1738
|
+
), /* @__PURE__ */ React52.createElement(
|
|
1303
1739
|
ShorthandControl,
|
|
1304
1740
|
{
|
|
1305
1741
|
value: "underline",
|
|
1306
|
-
currentValues: textDecoration || "",
|
|
1307
|
-
updateValues:
|
|
1742
|
+
currentValues: textDecoration?.value || "",
|
|
1743
|
+
updateValues: handleSetTextDecoration,
|
|
1308
1744
|
"aria-label": "underline"
|
|
1309
1745
|
},
|
|
1310
|
-
/* @__PURE__ */
|
|
1746
|
+
/* @__PURE__ */ React52.createElement(UnderlineIcon, { fontSize: buttonSize })
|
|
1311
1747
|
))));
|
|
1312
1748
|
};
|
|
1313
1749
|
var ShorthandControl = ({
|
|
@@ -1326,52 +1762,52 @@ var ShorthandControl = ({
|
|
|
1326
1762
|
updateValues([...valuesArr, newValue].join(" "));
|
|
1327
1763
|
}
|
|
1328
1764
|
};
|
|
1329
|
-
return /* @__PURE__ */
|
|
1765
|
+
return /* @__PURE__ */ React52.createElement(ToggleButton, { value, onChange: toggleValue, selected, "aria-label": ariaLabel }, children);
|
|
1330
1766
|
};
|
|
1331
1767
|
var ToggleButton = ({ onChange, ...props }) => {
|
|
1332
1768
|
const handleChange = (_e, newValue) => {
|
|
1333
1769
|
onChange(newValue);
|
|
1334
1770
|
};
|
|
1335
|
-
return /* @__PURE__ */
|
|
1771
|
+
return /* @__PURE__ */ React52.createElement(ToggleButtonBase, { ...props, onChange: handleChange, size: buttonSize });
|
|
1336
1772
|
};
|
|
1337
1773
|
|
|
1338
1774
|
// src/components/style-sections/typography-section/transform-field.tsx
|
|
1339
|
-
import * as
|
|
1340
|
-
import { ControlLabel as
|
|
1775
|
+
import * as React53 from "react";
|
|
1776
|
+
import { ControlLabel as ControlLabel29, ToggleControl as ToggleControl10 } from "@elementor/editor-controls";
|
|
1341
1777
|
import { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon } from "@elementor/icons";
|
|
1342
|
-
import { Grid as
|
|
1343
|
-
import { __ as
|
|
1344
|
-
var
|
|
1778
|
+
import { Grid as Grid24 } from "@elementor/ui";
|
|
1779
|
+
import { __ as __34 } from "@wordpress/i18n";
|
|
1780
|
+
var options9 = [
|
|
1345
1781
|
{
|
|
1346
1782
|
value: "capitalize",
|
|
1347
|
-
label:
|
|
1348
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1783
|
+
label: __34("Capitalize", "elementor"),
|
|
1784
|
+
renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(LetterCaseIcon, { fontSize: size })
|
|
1349
1785
|
},
|
|
1350
1786
|
{
|
|
1351
1787
|
value: "uppercase",
|
|
1352
|
-
label:
|
|
1353
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1788
|
+
label: __34("Uppercase", "elementor"),
|
|
1789
|
+
renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(LetterCaseUpperIcon, { fontSize: size })
|
|
1354
1790
|
},
|
|
1355
1791
|
{
|
|
1356
1792
|
value: "lowercase",
|
|
1357
|
-
label:
|
|
1358
|
-
renderContent: ({ size }) => /* @__PURE__ */
|
|
1793
|
+
label: __34("Lowercase", "elementor"),
|
|
1794
|
+
renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(LetterCaseLowerIcon, { fontSize: size })
|
|
1359
1795
|
}
|
|
1360
1796
|
];
|
|
1361
|
-
var TransformField = () => /* @__PURE__ */
|
|
1797
|
+
var TransformField = () => /* @__PURE__ */ React53.createElement(StylesField, { bind: "text-transform" }, /* @__PURE__ */ React53.createElement(Grid24, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React53.createElement(Grid24, { item: true, xs: 6 }, /* @__PURE__ */ React53.createElement(ControlLabel29, null, __34("Transform", "elementor"))), /* @__PURE__ */ React53.createElement(Grid24, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React53.createElement(ToggleControl10, { options: options9 }))));
|
|
1362
1798
|
|
|
1363
1799
|
// src/components/style-sections/typography-section/word-spacing-field.tsx
|
|
1364
|
-
import * as
|
|
1365
|
-
import { ControlLabel as
|
|
1366
|
-
import { Grid as
|
|
1367
|
-
import { __ as
|
|
1800
|
+
import * as React54 from "react";
|
|
1801
|
+
import { ControlLabel as ControlLabel30, SizeControl as SizeControl8 } from "@elementor/editor-controls";
|
|
1802
|
+
import { Grid as Grid25 } from "@elementor/ui";
|
|
1803
|
+
import { __ as __35 } from "@wordpress/i18n";
|
|
1368
1804
|
var WordSpacingField = () => {
|
|
1369
|
-
return /* @__PURE__ */
|
|
1805
|
+
return /* @__PURE__ */ React54.createElement(StylesField, { bind: "word-spacing" }, /* @__PURE__ */ React54.createElement(Grid25, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React54.createElement(Grid25, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(ControlLabel30, null, __35("Word Spacing", "elementor"))), /* @__PURE__ */ React54.createElement(Grid25, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(SizeControl8, null))));
|
|
1370
1806
|
};
|
|
1371
1807
|
|
|
1372
1808
|
// src/components/style-sections/typography-section/typography-section.tsx
|
|
1373
1809
|
var TypographySection = () => {
|
|
1374
|
-
return /* @__PURE__ */
|
|
1810
|
+
return /* @__PURE__ */ React55.createElement(Stack18, { gap: 1.5 }, /* @__PURE__ */ React55.createElement(FontFamilyField, null), /* @__PURE__ */ React55.createElement(FontWeightField, null), /* @__PURE__ */ React55.createElement(FontSizeField, null), /* @__PURE__ */ React55.createElement(Divider6, null), /* @__PURE__ */ React55.createElement(TextAlignmentField, null), /* @__PURE__ */ React55.createElement(TextColorField, null), /* @__PURE__ */ React55.createElement(CollapsibleContent, null, /* @__PURE__ */ React55.createElement(Stack18, { gap: 1.5, sx: { pt: 1.5 } }, /* @__PURE__ */ React55.createElement(LineHeightField, null), /* @__PURE__ */ React55.createElement(LetterSpacingField, null), /* @__PURE__ */ React55.createElement(WordSpacingField, null), /* @__PURE__ */ React55.createElement(Divider6, null), /* @__PURE__ */ React55.createElement(TextStyleField, null), /* @__PURE__ */ React55.createElement(TransformField, null), /* @__PURE__ */ React55.createElement(TextDirectionField, null), /* @__PURE__ */ React55.createElement(TextStrokeField, null))));
|
|
1375
1811
|
};
|
|
1376
1812
|
|
|
1377
1813
|
// src/components/style-tab.tsx
|
|
@@ -1380,10 +1816,10 @@ var StyleTab = () => {
|
|
|
1380
1816
|
const currentClassesProp = useCurrentClassesProp();
|
|
1381
1817
|
const [activeStyleDefId, setActiveStyleDefId] = useActiveStyleDefId(currentClassesProp);
|
|
1382
1818
|
const breakpoint = useActiveBreakpoint();
|
|
1383
|
-
return /* @__PURE__ */
|
|
1819
|
+
return /* @__PURE__ */ React56.createElement(ClassesPropProvider, { prop: currentClassesProp }, /* @__PURE__ */ React56.createElement(StyleProvider, { meta: { breakpoint, state: null }, id: activeStyleDefId, setId: setActiveStyleDefId }, /* @__PURE__ */ React56.createElement(CssClassSelector, null), /* @__PURE__ */ React56.createElement(Divider7, null), /* @__PURE__ */ React56.createElement(SectionsList, null, /* @__PURE__ */ React56.createElement(Section, { title: __36("Layout", "elementor") }, /* @__PURE__ */ React56.createElement(LayoutSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Spacing", "elementor") }, /* @__PURE__ */ React56.createElement(SpacingSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Size", "elementor") }, /* @__PURE__ */ React56.createElement(SizeSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Position", "elementor") }, /* @__PURE__ */ React56.createElement(PositionSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Typography", "elementor") }, /* @__PURE__ */ React56.createElement(TypographySection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Background", "elementor") }, /* @__PURE__ */ React56.createElement(BackgroundSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Border", "elementor") }, /* @__PURE__ */ React56.createElement(BorderSection, null)), /* @__PURE__ */ React56.createElement(Section, { title: __36("Effects", "elementor") }, /* @__PURE__ */ React56.createElement(EffectsSection, null)))));
|
|
1384
1820
|
};
|
|
1385
1821
|
function useActiveStyleDefId(currentClassesProp) {
|
|
1386
|
-
const [activeStyledDefId, setActiveStyledDefId] =
|
|
1822
|
+
const [activeStyledDefId, setActiveStyledDefId] = useState5(null);
|
|
1387
1823
|
const fallback = useFirstElementStyleDef(currentClassesProp);
|
|
1388
1824
|
const newId = useGeneratedId();
|
|
1389
1825
|
return [activeStyledDefId || fallback?.id || newId, setActiveStyledDefId];
|
|
@@ -1417,7 +1853,7 @@ var EditingPanelTabs = () => {
|
|
|
1417
1853
|
return (
|
|
1418
1854
|
// When switching between elements, the local states should be reset. We are using key to rerender the tabs.
|
|
1419
1855
|
// Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key
|
|
1420
|
-
/* @__PURE__ */
|
|
1856
|
+
/* @__PURE__ */ React57.createElement(Fragment7, { key: element.id }, /* @__PURE__ */ React57.createElement(Stack19, { direction: "column", sx: { width: "100%" } }, /* @__PURE__ */ React57.createElement(Tabs, { variant: "fullWidth", indicatorColor: "secondary", textColor: "inherit", ...getTabsProps() }, /* @__PURE__ */ React57.createElement(Tab, { label: __37("General", "elementor"), ...getTabProps("settings") }), /* @__PURE__ */ React57.createElement(Tab, { label: __37("Style", "elementor"), ...getTabProps("style") })), /* @__PURE__ */ React57.createElement(Divider8, null), /* @__PURE__ */ React57.createElement(TabPanel, { ...getTabPanelProps("settings"), disablePadding: true }, /* @__PURE__ */ React57.createElement(SettingsTab, null)), /* @__PURE__ */ React57.createElement(TabPanel, { ...getTabPanelProps("style"), disablePadding: true }, /* @__PURE__ */ React57.createElement(StyleTab, null))))
|
|
1421
1857
|
);
|
|
1422
1858
|
};
|
|
1423
1859
|
|
|
@@ -1430,8 +1866,8 @@ var EditingPanel = () => {
|
|
|
1430
1866
|
if (!element || !elementType) {
|
|
1431
1867
|
return null;
|
|
1432
1868
|
}
|
|
1433
|
-
const panelTitle =
|
|
1434
|
-
return /* @__PURE__ */
|
|
1869
|
+
const panelTitle = __38("Edit %s", "elementor").replace("%s", elementType.title);
|
|
1870
|
+
return /* @__PURE__ */ React58.createElement(ErrorBoundary, { fallback: /* @__PURE__ */ React58.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React58.createElement(Panel, null, /* @__PURE__ */ React58.createElement(PanelHeader, null, /* @__PURE__ */ React58.createElement(PanelHeaderTitle, null, panelTitle)), /* @__PURE__ */ React58.createElement(PanelBody, null, /* @__PURE__ */ React58.createElement(ControlActionsProvider, { items: menuItems }, /* @__PURE__ */ React58.createElement(ControlReplacementProvider, { ...controlReplacement }, /* @__PURE__ */ React58.createElement(ElementProvider, { element, elementType }, /* @__PURE__ */ React58.createElement(EditingPanelTabs, null)))))));
|
|
1435
1871
|
};
|
|
1436
1872
|
|
|
1437
1873
|
// src/panel.ts
|
|
@@ -1488,19 +1924,19 @@ var EditingPanelHooks = () => {
|
|
|
1488
1924
|
};
|
|
1489
1925
|
|
|
1490
1926
|
// src/dynamics/components/dynamic-selection-control.tsx
|
|
1491
|
-
import * as
|
|
1927
|
+
import * as React61 from "react";
|
|
1492
1928
|
import { useId as useId3 } from "react";
|
|
1493
|
-
import { ControlLabel as
|
|
1929
|
+
import { ControlLabel as ControlLabel31, useBoundProp as useBoundProp3 } from "@elementor/editor-controls";
|
|
1494
1930
|
import { DatabaseIcon, SettingsIcon, XIcon as XIcon2 } from "@elementor/icons";
|
|
1495
1931
|
import {
|
|
1496
1932
|
bindPopover as bindPopover2,
|
|
1497
1933
|
bindTrigger,
|
|
1498
1934
|
Box as Box5,
|
|
1499
|
-
Divider as
|
|
1500
|
-
IconButton as
|
|
1935
|
+
Divider as Divider10,
|
|
1936
|
+
IconButton as IconButton3,
|
|
1501
1937
|
Paper,
|
|
1502
1938
|
Popover as Popover2,
|
|
1503
|
-
Stack as
|
|
1939
|
+
Stack as Stack21,
|
|
1504
1940
|
Tab as Tab2,
|
|
1505
1941
|
TabPanel as TabPanel2,
|
|
1506
1942
|
Tabs as Tabs2,
|
|
@@ -1509,17 +1945,18 @@ import {
|
|
|
1509
1945
|
usePopupState as usePopupState2,
|
|
1510
1946
|
useTabs as useTabs2
|
|
1511
1947
|
} from "@elementor/ui";
|
|
1512
|
-
import { __ as
|
|
1948
|
+
import { __ as __40 } from "@wordpress/i18n";
|
|
1513
1949
|
|
|
1514
1950
|
// src/dynamics/dynamic-control.tsx
|
|
1515
|
-
import * as
|
|
1951
|
+
import * as React59 from "react";
|
|
1516
1952
|
import { BoundPropProvider as BoundPropProvider3, useBoundProp } from "@elementor/editor-controls";
|
|
1953
|
+
import { isTransformable as isTransformable2 } from "@elementor/editor-props";
|
|
1517
1954
|
|
|
1518
1955
|
// src/dynamics/hooks/use-dynamic-tag.ts
|
|
1519
|
-
import { useMemo as
|
|
1956
|
+
import { useMemo as useMemo5 } from "react";
|
|
1520
1957
|
|
|
1521
1958
|
// src/dynamics/hooks/use-prop-dynamic-tags.ts
|
|
1522
|
-
import { useMemo as
|
|
1959
|
+
import { useMemo as useMemo4 } from "react";
|
|
1523
1960
|
|
|
1524
1961
|
// src/dynamics/sync/get-elementor-config.ts
|
|
1525
1962
|
var getElementorConfig2 = () => {
|
|
@@ -1540,7 +1977,11 @@ var getAtomicDynamicTags = () => {
|
|
|
1540
1977
|
};
|
|
1541
1978
|
|
|
1542
1979
|
// src/dynamics/utils.ts
|
|
1543
|
-
import {
|
|
1980
|
+
import {
|
|
1981
|
+
createPropUtils,
|
|
1982
|
+
isTransformable
|
|
1983
|
+
} from "@elementor/editor-props";
|
|
1984
|
+
import { z } from "@elementor/schema";
|
|
1544
1985
|
var DYNAMIC_PROP_TYPE_KEY = "dynamic";
|
|
1545
1986
|
var isDynamicPropType = (prop) => prop.key === DYNAMIC_PROP_TYPE_KEY;
|
|
1546
1987
|
var getDynamicPropType = (propType) => {
|
|
@@ -1553,6 +1994,13 @@ var isDynamicPropValue = (prop) => {
|
|
|
1553
1994
|
var supportsDynamic = (propType) => {
|
|
1554
1995
|
return !!getDynamicPropType(propType);
|
|
1555
1996
|
};
|
|
1997
|
+
var dynamicPropTypeUtil = createPropUtils(
|
|
1998
|
+
DYNAMIC_PROP_TYPE_KEY,
|
|
1999
|
+
z.strictObject({
|
|
2000
|
+
name: z.string(),
|
|
2001
|
+
settings: z.record(z.any()).optional()
|
|
2002
|
+
})
|
|
2003
|
+
);
|
|
1556
2004
|
|
|
1557
2005
|
// src/dynamics/hooks/use-prop-dynamic-tags.ts
|
|
1558
2006
|
var usePropDynamicTags = (propName) => {
|
|
@@ -1563,7 +2011,7 @@ var usePropDynamicTags = (propName) => {
|
|
|
1563
2011
|
const propDynamicType = getDynamicPropType(propType);
|
|
1564
2012
|
categories = propDynamicType?.settings.categories || [];
|
|
1565
2013
|
}
|
|
1566
|
-
return
|
|
2014
|
+
return useMemo4(() => getDynamicTagsByCategories(categories), [categories.join()]);
|
|
1567
2015
|
};
|
|
1568
2016
|
var getDynamicTagsByCategories = (categories) => {
|
|
1569
2017
|
const dynamicTags = getAtomicDynamicTags();
|
|
@@ -1579,13 +2027,13 @@ var getDynamicTagsByCategories = (categories) => {
|
|
|
1579
2027
|
// src/dynamics/hooks/use-dynamic-tag.ts
|
|
1580
2028
|
var useDynamicTag = (propName, tagName) => {
|
|
1581
2029
|
const dynamicTags = usePropDynamicTags(propName);
|
|
1582
|
-
return
|
|
2030
|
+
return useMemo5(() => dynamicTags.find((tag) => tag.name === tagName) ?? null, [dynamicTags, tagName]);
|
|
1583
2031
|
};
|
|
1584
2032
|
|
|
1585
2033
|
// src/dynamics/dynamic-control.tsx
|
|
1586
2034
|
var DynamicControl = ({ bind, children }) => {
|
|
1587
|
-
const { value, setValue, bind: propName } = useBoundProp();
|
|
1588
|
-
const { name = "", settings } = value
|
|
2035
|
+
const { value, setValue, bind: propName } = useBoundProp(dynamicPropTypeUtil);
|
|
2036
|
+
const { name = "", settings } = value ?? {};
|
|
1589
2037
|
const dynamicTag = useDynamicTag(propName, name);
|
|
1590
2038
|
if (!dynamicTag) {
|
|
1591
2039
|
throw new Error(`Dynamic tag ${name} not found`);
|
|
@@ -1594,70 +2042,69 @@ var DynamicControl = ({ bind, children }) => {
|
|
|
1594
2042
|
const dynamicValue = settings?.[bind] ?? defaultValue;
|
|
1595
2043
|
const setDynamicValue = (newValue) => {
|
|
1596
2044
|
setValue({
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
[bind]: newValue
|
|
1603
|
-
}
|
|
2045
|
+
name,
|
|
2046
|
+
settings: {
|
|
2047
|
+
...settings,
|
|
2048
|
+
// The value inside the dynamic is not a transformable value, so we need to store the whole object.
|
|
2049
|
+
[bind]: isTransformable2(newValue) ? newValue.value : newValue
|
|
1604
2050
|
}
|
|
1605
2051
|
});
|
|
1606
2052
|
};
|
|
1607
|
-
return /* @__PURE__ */
|
|
2053
|
+
return /* @__PURE__ */ React59.createElement(BoundPropProvider3, { setValue: setDynamicValue, value: dynamicValue, bind }, children);
|
|
1608
2054
|
};
|
|
1609
2055
|
|
|
1610
2056
|
// src/dynamics/components/dynamic-selection.tsx
|
|
1611
|
-
import * as
|
|
1612
|
-
import { Fragment as
|
|
2057
|
+
import * as React60 from "react";
|
|
2058
|
+
import { Fragment as Fragment8, useState as useState6 } from "react";
|
|
1613
2059
|
import { useBoundProp as useBoundProp2 } from "@elementor/editor-controls";
|
|
1614
2060
|
import { PhotoIcon, SearchIcon } from "@elementor/icons";
|
|
1615
2061
|
import {
|
|
1616
2062
|
Box as Box4,
|
|
1617
|
-
Divider as
|
|
2063
|
+
Divider as Divider9,
|
|
1618
2064
|
InputAdornment,
|
|
1619
2065
|
Link,
|
|
1620
2066
|
ListSubheader,
|
|
1621
2067
|
MenuItem,
|
|
1622
2068
|
MenuList,
|
|
1623
|
-
Stack as
|
|
2069
|
+
Stack as Stack20,
|
|
1624
2070
|
TextField as TextField2,
|
|
1625
2071
|
Typography as Typography3
|
|
1626
2072
|
} from "@elementor/ui";
|
|
1627
|
-
import { __ as
|
|
2073
|
+
import { __ as __39 } from "@wordpress/i18n";
|
|
1628
2074
|
var SIZE3 = "tiny";
|
|
1629
2075
|
var DynamicSelection = ({ onSelect }) => {
|
|
1630
|
-
const [searchValue, setSearchValue] =
|
|
2076
|
+
const [searchValue, setSearchValue] = useState6("");
|
|
1631
2077
|
const { groups: dynamicGroups } = getAtomicDynamicTags() || {};
|
|
1632
|
-
const {
|
|
2078
|
+
const { value: anyValue } = useBoundProp2();
|
|
2079
|
+
const { bind, value: dynamicvalue, setValue } = useBoundProp2(dynamicPropTypeUtil);
|
|
1633
2080
|
const { setPropValue: updatePropValueHistory } = usePropValueHistory();
|
|
1634
|
-
const isCurrentValueDynamic =
|
|
1635
|
-
const
|
|
2081
|
+
const isCurrentValueDynamic = !!dynamicvalue;
|
|
2082
|
+
const options10 = useFilteredOptions(bind, searchValue);
|
|
1636
2083
|
const handleSearch = (event) => {
|
|
1637
2084
|
setSearchValue(event.target.value);
|
|
1638
2085
|
};
|
|
1639
2086
|
const handleSetDynamicTag = (value) => {
|
|
1640
2087
|
if (!isCurrentValueDynamic) {
|
|
1641
|
-
updatePropValueHistory(bind,
|
|
2088
|
+
updatePropValueHistory(bind, anyValue);
|
|
1642
2089
|
}
|
|
1643
|
-
setValue({
|
|
2090
|
+
setValue({ name: value, settings: {} });
|
|
1644
2091
|
onSelect?.();
|
|
1645
2092
|
};
|
|
1646
|
-
return /* @__PURE__ */
|
|
2093
|
+
return /* @__PURE__ */ React60.createElement(Stack20, null, /* @__PURE__ */ React60.createElement(Box4, { px: 1.5, pb: 1 }, /* @__PURE__ */ React60.createElement(
|
|
1647
2094
|
TextField2,
|
|
1648
2095
|
{
|
|
1649
2096
|
fullWidth: true,
|
|
1650
2097
|
size: SIZE3,
|
|
1651
2098
|
value: searchValue,
|
|
1652
2099
|
onChange: handleSearch,
|
|
1653
|
-
placeholder:
|
|
2100
|
+
placeholder: __39("Search dynamic tag", "elementor"),
|
|
1654
2101
|
InputProps: {
|
|
1655
|
-
startAdornment: /* @__PURE__ */
|
|
2102
|
+
startAdornment: /* @__PURE__ */ React60.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React60.createElement(SearchIcon, { fontSize: SIZE3 }))
|
|
1656
2103
|
}
|
|
1657
2104
|
}
|
|
1658
|
-
)), /* @__PURE__ */
|
|
1659
|
-
const isSelected = isCurrentValueDynamic && value ===
|
|
1660
|
-
return /* @__PURE__ */
|
|
2105
|
+
)), /* @__PURE__ */ React60.createElement(Divider9, null), /* @__PURE__ */ React60.createElement(Box4, { sx: { overflowY: "auto", height: 260, width: 220 } }, options10.length > 0 ? /* @__PURE__ */ React60.createElement(MenuList, { role: "listbox", tabIndex: 0 }, options10.map(([category, items3], index) => /* @__PURE__ */ React60.createElement(Fragment8, { key: index }, /* @__PURE__ */ React60.createElement(ListSubheader, { sx: { typography: "caption", color: "text.tertiary" } }, dynamicGroups?.[category]?.title || category), items3.map(({ value, label: tagLabel }) => {
|
|
2106
|
+
const isSelected = isCurrentValueDynamic && value === dynamicvalue?.name;
|
|
2107
|
+
return /* @__PURE__ */ React60.createElement(
|
|
1661
2108
|
MenuItem,
|
|
1662
2109
|
{
|
|
1663
2110
|
key: value,
|
|
@@ -1668,7 +2115,7 @@ var DynamicSelection = ({ onSelect }) => {
|
|
|
1668
2115
|
},
|
|
1669
2116
|
tagLabel
|
|
1670
2117
|
);
|
|
1671
|
-
})))) : /* @__PURE__ */
|
|
2118
|
+
})))) : /* @__PURE__ */ React60.createElement(Stack20, { alignItems: "center", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React60.createElement(PhotoIcon, { fontSize: "large" }), /* @__PURE__ */ React60.createElement(Typography3, { align: "center", variant: "caption", color: "text.secondary" }, __39("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React60.createElement("br", null), "\u201C", searchValue, "\u201D."), /* @__PURE__ */ React60.createElement(Typography3, { align: "center", variant: "caption", color: "text.secondary" }, /* @__PURE__ */ React60.createElement(
|
|
1672
2119
|
Link,
|
|
1673
2120
|
{
|
|
1674
2121
|
color: "secondary",
|
|
@@ -1676,12 +2123,12 @@ var DynamicSelection = ({ onSelect }) => {
|
|
|
1676
2123
|
component: "button",
|
|
1677
2124
|
onClick: () => setSearchValue("")
|
|
1678
2125
|
},
|
|
1679
|
-
|
|
1680
|
-
), "\xA0",
|
|
2126
|
+
__39("Clear the filters", "elementor")
|
|
2127
|
+
), "\xA0", __39("and try again.", "elementor")))));
|
|
1681
2128
|
};
|
|
1682
2129
|
var useFilteredOptions = (bind, searchValue) => {
|
|
1683
2130
|
const dynamicTags = usePropDynamicTags(bind);
|
|
1684
|
-
const
|
|
2131
|
+
const options10 = dynamicTags.reduce((categories, { name, label, group }) => {
|
|
1685
2132
|
const isVisible = label.toLowerCase().includes(searchValue.trim().toLowerCase());
|
|
1686
2133
|
if (!isVisible) {
|
|
1687
2134
|
return categories;
|
|
@@ -1692,44 +2139,45 @@ var useFilteredOptions = (bind, searchValue) => {
|
|
|
1692
2139
|
categories.get(group)?.push({ label, value: name });
|
|
1693
2140
|
return categories;
|
|
1694
2141
|
}, /* @__PURE__ */ new Map());
|
|
1695
|
-
return [...
|
|
2142
|
+
return [...options10];
|
|
1696
2143
|
};
|
|
1697
2144
|
|
|
1698
2145
|
// src/dynamics/components/dynamic-selection-control.tsx
|
|
1699
2146
|
var SIZE4 = "tiny";
|
|
1700
2147
|
var DynamicSelectionControl = () => {
|
|
1701
|
-
const {
|
|
2148
|
+
const { setValue: setAnyValue } = useBoundProp3();
|
|
2149
|
+
const { bind, value } = useBoundProp3(dynamicPropTypeUtil);
|
|
1702
2150
|
const { getPropValue: getPropValueFromHistory } = usePropValueHistory();
|
|
1703
|
-
const { name: tagName = "" } = value
|
|
2151
|
+
const { name: tagName = "" } = value;
|
|
1704
2152
|
const selectionPopoverId = useId3();
|
|
1705
2153
|
const selectionPopoverState = usePopupState2({ variant: "popover", popupId: selectionPopoverId });
|
|
1706
2154
|
const dynamicTag = useDynamicTag(bind, tagName);
|
|
1707
2155
|
const removeDynamicTag = () => {
|
|
1708
2156
|
const propValue = getPropValueFromHistory(bind);
|
|
1709
|
-
|
|
2157
|
+
setAnyValue(propValue ?? null);
|
|
1710
2158
|
};
|
|
1711
2159
|
if (!dynamicTag) {
|
|
1712
2160
|
throw new Error(`Dynamic tag ${tagName} not found`);
|
|
1713
2161
|
}
|
|
1714
|
-
return /* @__PURE__ */
|
|
2162
|
+
return /* @__PURE__ */ React61.createElement(Box5, null, /* @__PURE__ */ React61.createElement(
|
|
1715
2163
|
Tag,
|
|
1716
2164
|
{
|
|
1717
2165
|
fullWidth: true,
|
|
1718
2166
|
showActionsOnHover: true,
|
|
1719
2167
|
label: dynamicTag.label,
|
|
1720
|
-
startIcon: /* @__PURE__ */
|
|
2168
|
+
startIcon: /* @__PURE__ */ React61.createElement(DatabaseIcon, { fontSize: SIZE4 }),
|
|
1721
2169
|
...bindTrigger(selectionPopoverState),
|
|
1722
|
-
actions: /* @__PURE__ */
|
|
1723
|
-
|
|
2170
|
+
actions: /* @__PURE__ */ React61.createElement(React61.Fragment, null, /* @__PURE__ */ React61.createElement(DynamicSettingsPopover, { dynamicTag }), /* @__PURE__ */ React61.createElement(
|
|
2171
|
+
IconButton3,
|
|
1724
2172
|
{
|
|
1725
2173
|
size: SIZE4,
|
|
1726
2174
|
onClick: removeDynamicTag,
|
|
1727
|
-
"aria-label":
|
|
2175
|
+
"aria-label": __40("Remove dynamic value", "elementor")
|
|
1728
2176
|
},
|
|
1729
|
-
/* @__PURE__ */
|
|
2177
|
+
/* @__PURE__ */ React61.createElement(XIcon2, { fontSize: SIZE4 })
|
|
1730
2178
|
))
|
|
1731
2179
|
}
|
|
1732
|
-
), /* @__PURE__ */
|
|
2180
|
+
), /* @__PURE__ */ React61.createElement(
|
|
1733
2181
|
Popover2,
|
|
1734
2182
|
{
|
|
1735
2183
|
disablePortal: true,
|
|
@@ -1737,7 +2185,7 @@ var DynamicSelectionControl = () => {
|
|
|
1737
2185
|
anchorOrigin: { vertical: "bottom", horizontal: "left" },
|
|
1738
2186
|
...bindPopover2(selectionPopoverState)
|
|
1739
2187
|
},
|
|
1740
|
-
/* @__PURE__ */
|
|
2188
|
+
/* @__PURE__ */ React61.createElement(Stack21, null, /* @__PURE__ */ React61.createElement(Stack21, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React61.createElement(DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React61.createElement(Typography4, { variant: "subtitle2" }, __40("Dynamic Tags", "elementor")), /* @__PURE__ */ React61.createElement(IconButton3, { size: SIZE4, sx: { ml: "auto" }, onClick: selectionPopoverState.close }, /* @__PURE__ */ React61.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React61.createElement(DynamicSelection, { onSelect: selectionPopoverState.close }))
|
|
1741
2189
|
));
|
|
1742
2190
|
};
|
|
1743
2191
|
var DynamicSettingsPopover = ({ dynamicTag }) => {
|
|
@@ -1747,22 +2195,22 @@ var DynamicSettingsPopover = ({ dynamicTag }) => {
|
|
|
1747
2195
|
if (!hasDynamicSettings) {
|
|
1748
2196
|
return null;
|
|
1749
2197
|
}
|
|
1750
|
-
return /* @__PURE__ */
|
|
1751
|
-
|
|
2198
|
+
return /* @__PURE__ */ React61.createElement(React61.Fragment, null, /* @__PURE__ */ React61.createElement(
|
|
2199
|
+
IconButton3,
|
|
1752
2200
|
{
|
|
1753
2201
|
size: SIZE4,
|
|
1754
2202
|
...bindTrigger(settingsPopupState),
|
|
1755
|
-
"aria-label":
|
|
2203
|
+
"aria-label": __40("Settings", "elementor")
|
|
1756
2204
|
},
|
|
1757
|
-
/* @__PURE__ */
|
|
1758
|
-
), /* @__PURE__ */
|
|
2205
|
+
/* @__PURE__ */ React61.createElement(SettingsIcon, { fontSize: SIZE4 })
|
|
2206
|
+
), /* @__PURE__ */ React61.createElement(
|
|
1759
2207
|
Popover2,
|
|
1760
2208
|
{
|
|
1761
2209
|
disableScrollLock: true,
|
|
1762
2210
|
anchorOrigin: { vertical: "bottom", horizontal: "center" },
|
|
1763
2211
|
...bindPopover2(settingsPopupState)
|
|
1764
2212
|
},
|
|
1765
|
-
/* @__PURE__ */
|
|
2213
|
+
/* @__PURE__ */ React61.createElement(Paper, { component: Stack21, sx: { minHeight: "300px", width: "220px" } }, /* @__PURE__ */ React61.createElement(Stack21, { direction: "row", alignItems: "center", px: 1.5, pt: 2, pb: 1 }, /* @__PURE__ */ React61.createElement(DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React61.createElement(Typography4, { variant: "subtitle2" }, dynamicTag.label), /* @__PURE__ */ React61.createElement(IconButton3, { sx: { ml: "auto" }, size: SIZE4, onClick: settingsPopupState.close }, /* @__PURE__ */ React61.createElement(XIcon2, { fontSize: SIZE4 }))), /* @__PURE__ */ React61.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls }))
|
|
1766
2214
|
));
|
|
1767
2215
|
};
|
|
1768
2216
|
var DynamicSettings = ({ controls }) => {
|
|
@@ -1771,10 +2219,10 @@ var DynamicSettings = ({ controls }) => {
|
|
|
1771
2219
|
if (!tabs.length) {
|
|
1772
2220
|
return null;
|
|
1773
2221
|
}
|
|
1774
|
-
return /* @__PURE__ */
|
|
1775
|
-
return /* @__PURE__ */
|
|
2222
|
+
return /* @__PURE__ */ React61.createElement(React61.Fragment, null, /* @__PURE__ */ React61.createElement(Tabs2, { indicatorColor: "secondary", textColor: "secondary", ...getTabsProps() }, tabs.map(({ value }, index) => /* @__PURE__ */ React61.createElement(Tab2, { key: index, label: value.label, sx: { px: 1, py: 0.5 }, ...getTabProps(index) }))), /* @__PURE__ */ React61.createElement(Divider10, null), tabs.map(({ value }, index) => {
|
|
2223
|
+
return /* @__PURE__ */ React61.createElement(TabPanel2, { key: index, sx: { flexGrow: 1 }, ...getTabPanelProps(index) }, /* @__PURE__ */ React61.createElement(Stack21, { gap: 1, px: 2 }, value.items.map((item) => {
|
|
1776
2224
|
if (item.type === "control") {
|
|
1777
|
-
return /* @__PURE__ */
|
|
2225
|
+
return /* @__PURE__ */ React61.createElement(Control3, { key: item.value.bind, control: item.value });
|
|
1778
2226
|
}
|
|
1779
2227
|
return null;
|
|
1780
2228
|
})));
|
|
@@ -1784,14 +2232,14 @@ var Control3 = ({ control }) => {
|
|
|
1784
2232
|
if (!getControlByType(control.type)) {
|
|
1785
2233
|
return null;
|
|
1786
2234
|
}
|
|
1787
|
-
return /* @__PURE__ */
|
|
2235
|
+
return /* @__PURE__ */ React61.createElement(DynamicControl, { bind: control.bind }, control.label ? /* @__PURE__ */ React61.createElement(ControlLabel31, null, control.label) : null, /* @__PURE__ */ React61.createElement(Control, { type: control.type, props: control.props }));
|
|
1788
2236
|
};
|
|
1789
2237
|
|
|
1790
2238
|
// src/dynamics/hooks/use-prop-dynamic-action.tsx
|
|
1791
|
-
import * as
|
|
2239
|
+
import * as React62 from "react";
|
|
1792
2240
|
import { useBoundProp as useBoundProp4 } from "@elementor/editor-controls";
|
|
1793
2241
|
import { DatabaseIcon as DatabaseIcon2 } from "@elementor/icons";
|
|
1794
|
-
import { __ as
|
|
2242
|
+
import { __ as __41 } from "@wordpress/i18n";
|
|
1795
2243
|
var usePropDynamicAction = () => {
|
|
1796
2244
|
const { bind } = useBoundProp4();
|
|
1797
2245
|
const { elementType } = useElement();
|
|
@@ -1800,8 +2248,8 @@ var usePropDynamicAction = () => {
|
|
|
1800
2248
|
return {
|
|
1801
2249
|
visible,
|
|
1802
2250
|
icon: DatabaseIcon2,
|
|
1803
|
-
title:
|
|
1804
|
-
popoverContent: ({ closePopover }) => /* @__PURE__ */
|
|
2251
|
+
title: __41("Dynamic Tags", "elementor"),
|
|
2252
|
+
popoverContent: ({ closePopover }) => /* @__PURE__ */ React62.createElement(DynamicSelection, { onSelect: closePopover })
|
|
1805
2253
|
};
|
|
1806
2254
|
};
|
|
1807
2255
|
|