@elementor/editor-editing-panel 0.17.0 → 0.19.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 +45 -0
- package/dist/index.d.mts +28 -10
- package/dist/index.d.ts +28 -10
- package/dist/index.js +941 -398
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +918 -366
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -7
- package/src/components/editing-panel-error-fallback.tsx +12 -0
- package/src/components/editing-panel.tsx +23 -12
- package/src/components/settings-tab.tsx +8 -5
- package/src/components/style-sections/background-section/background-color-control.tsx +20 -0
- package/src/components/style-sections/background-section/background-section.tsx +15 -0
- package/src/components/style-sections/effects-section/box-shadow-repeater.tsx +224 -0
- package/src/components/style-sections/effects-section/effects-section.tsx +18 -0
- package/src/components/style-sections/position-section/z-index-control.tsx +11 -7
- package/src/components/style-sections/size-section.tsx +23 -20
- package/src/components/style-sections/spacing-section/linked-dimensions-control.tsx +62 -47
- package/src/components/style-sections/typography-section/font-size-control.tsx +10 -6
- package/src/components/style-sections/typography-section/font-weight-control.tsx +16 -12
- package/src/components/style-sections/typography-section/letter-spacing-control.tsx +10 -6
- package/src/components/style-sections/typography-section/text-alignment-control.tsx +12 -8
- package/src/components/style-sections/typography-section/text-color-control.tsx +10 -6
- package/src/components/style-sections/typography-section/text-direction-control.tsx +37 -0
- package/src/components/style-sections/typography-section/text-style-control.tsx +37 -34
- package/src/components/style-sections/typography-section/transform-control.tsx +14 -12
- package/src/components/style-sections/typography-section/typography-section.tsx +2 -0
- package/src/components/style-sections/typography-section/word-spacing-control.tsx +10 -6
- package/src/components/style-tab.tsx +10 -4
- package/src/control-replacement.tsx +3 -0
- package/src/controls/components/control-type-container.tsx +28 -0
- package/src/controls/components/repeater.tsx +197 -0
- package/src/controls/components/text-field-inner-selection.tsx +2 -2
- package/src/controls/control-actions/actions/popover-action.tsx +58 -0
- package/src/controls/control-actions/control-actions-menu.ts +8 -0
- package/src/controls/control-actions/control-actions.tsx +43 -0
- package/src/controls/control-context.tsx +1 -1
- package/src/controls/control-replacement.ts +16 -8
- package/src/controls/control-types/color-control.tsx +21 -18
- package/src/controls/control-types/image-control.tsx +56 -59
- package/src/controls/control-types/image-media-control.tsx +73 -0
- package/src/controls/control-types/number-control.tsx +13 -9
- package/src/controls/control-types/select-control.tsx +14 -10
- package/src/controls/control-types/size-control.tsx +18 -14
- package/src/controls/control-types/text-area-control.tsx +15 -11
- package/src/controls/control-types/text-control.tsx +9 -3
- package/src/controls/control-types/toggle-control.tsx +4 -3
- package/src/controls/control.tsx +1 -7
- package/src/controls/controls-registry.tsx +19 -10
- package/src/controls/create-control-replacement.tsx +53 -0
- package/src/controls/create-control.tsx +40 -0
- package/src/controls/hooks/use-style-control.ts +3 -3
- package/src/{hooks → controls/hooks}/use-widget-settings.ts +1 -1
- package/src/{props → controls/props}/is-transformable.ts +1 -2
- package/src/controls/props/types.ts +51 -0
- package/src/{contexts/element-context.tsx → controls/providers/element-provider.tsx} +4 -4
- package/src/controls/settings-control.tsx +7 -14
- package/src/controls/style-control.tsx +1 -1
- package/src/{sync → controls/sync}/get-container.ts +1 -1
- package/src/{sync → controls/sync}/update-settings.ts +1 -1
- package/src/controls/types.ts +39 -0
- package/src/dynamics/components/dynamic-selection-control.tsx +2 -2
- package/src/dynamics/components/dynamic-selection.tsx +6 -6
- package/src/dynamics/dynamic-control.tsx +2 -2
- package/src/dynamics/hooks/use-dynamic-tag.ts +2 -2
- package/src/dynamics/hooks/use-prop-dynamic-action.tsx +23 -0
- package/src/dynamics/hooks/use-prop-dynamic-tags.ts +7 -7
- package/src/dynamics/hooks/use-prop-value-history.ts +3 -3
- package/src/dynamics/init.ts +10 -1
- package/src/dynamics/types.ts +7 -3
- package/src/dynamics/utils.ts +17 -4
- package/src/hooks/use-element-style-prop.ts +3 -2
- package/src/hooks/use-element-styles.ts +1 -1
- package/src/hooks/use-element-type.ts +1 -1
- package/src/index.ts +3 -1
- package/src/sync/get-element-styles.ts +2 -2
- package/src/sync/get-selected-elements.ts +1 -1
- package/src/sync/types.ts +2 -1
- package/src/sync/update-style.ts +3 -2
- package/src/controls/components/control-container.tsx +0 -18
- package/src/types.ts +0 -68
package/dist/index.js
CHANGED
|
@@ -30,24 +30,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
|
+
controlActionsMenu: () => controlActionsMenu,
|
|
33
34
|
replaceControl: () => replaceControl,
|
|
34
35
|
useControl: () => useControl
|
|
35
36
|
});
|
|
36
37
|
module.exports = __toCommonJS(src_exports);
|
|
37
38
|
|
|
38
|
-
// src/controls/control-replacement.
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
controlReplacement = { component, condition };
|
|
42
|
-
};
|
|
43
|
-
var getControlReplacement = ({ value }) => {
|
|
44
|
-
let shouldReplace = false;
|
|
45
|
-
try {
|
|
46
|
-
shouldReplace = !!controlReplacement?.condition({ value });
|
|
47
|
-
} catch {
|
|
48
|
-
}
|
|
49
|
-
return shouldReplace ? controlReplacement?.component : void 0;
|
|
50
|
-
};
|
|
39
|
+
// src/controls/create-control-replacement.tsx
|
|
40
|
+
var React = __toESM(require("react"));
|
|
41
|
+
var import_react2 = require("react");
|
|
51
42
|
|
|
52
43
|
// src/controls/control-context.tsx
|
|
53
44
|
var import_react = require("react");
|
|
@@ -60,12 +51,89 @@ function useControl(defaultValue) {
|
|
|
60
51
|
return { ...controlContext, value: controlContext.value ?? defaultValue };
|
|
61
52
|
}
|
|
62
53
|
|
|
54
|
+
// src/controls/create-control-replacement.tsx
|
|
55
|
+
var ControlReplacementContext = (0, import_react2.createContext)(void 0);
|
|
56
|
+
var ControlReplacementProvider = ({
|
|
57
|
+
component,
|
|
58
|
+
condition,
|
|
59
|
+
children
|
|
60
|
+
}) => {
|
|
61
|
+
return /* @__PURE__ */ React.createElement(ControlReplacementContext.Provider, { value: { component, condition } }, children);
|
|
62
|
+
};
|
|
63
|
+
var useControlReplacement = () => {
|
|
64
|
+
const { value } = useControl();
|
|
65
|
+
const controlReplacement = (0, import_react2.useContext)(ControlReplacementContext);
|
|
66
|
+
let shouldReplace = false;
|
|
67
|
+
try {
|
|
68
|
+
shouldReplace = !!controlReplacement?.condition({ value }) && !!controlReplacement.component;
|
|
69
|
+
} catch {
|
|
70
|
+
}
|
|
71
|
+
return shouldReplace ? controlReplacement?.component : void 0;
|
|
72
|
+
};
|
|
73
|
+
var createControlReplacement = () => {
|
|
74
|
+
let controlReplacement;
|
|
75
|
+
function replaceControl2({ component, condition }) {
|
|
76
|
+
controlReplacement = { component, condition };
|
|
77
|
+
}
|
|
78
|
+
function getControlReplacement2() {
|
|
79
|
+
return controlReplacement;
|
|
80
|
+
}
|
|
81
|
+
return { replaceControl: replaceControl2, getControlReplacement: getControlReplacement2 };
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// src/control-replacement.tsx
|
|
85
|
+
var { replaceControl, getControlReplacement } = createControlReplacement();
|
|
86
|
+
|
|
87
|
+
// src/controls/control-actions/actions/popover-action.tsx
|
|
88
|
+
var React2 = __toESM(require("react"));
|
|
89
|
+
var import_ui = require("@elementor/ui");
|
|
90
|
+
var import_react3 = require("react");
|
|
91
|
+
var import_icons = require("@elementor/icons");
|
|
92
|
+
var SIZE = "tiny";
|
|
93
|
+
function PopoverAction({
|
|
94
|
+
title,
|
|
95
|
+
visible = true,
|
|
96
|
+
icon: Icon,
|
|
97
|
+
popoverContent: PopoverContent
|
|
98
|
+
}) {
|
|
99
|
+
const id = (0, import_react3.useId)();
|
|
100
|
+
const popupState = (0, import_ui.usePopupState)({
|
|
101
|
+
variant: "popover",
|
|
102
|
+
popupId: `elementor-popover-action-${id}`
|
|
103
|
+
});
|
|
104
|
+
if (!visible) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(import_ui.Tooltip, { placement: "top", title }, /* @__PURE__ */ React2.createElement(import_ui.IconButton, { "aria-label": title, key: id, size: SIZE, ...(0, import_ui.bindToggle)(popupState) }, /* @__PURE__ */ React2.createElement(Icon, { fontSize: SIZE }))), /* @__PURE__ */ React2.createElement(
|
|
108
|
+
import_ui.Popover,
|
|
109
|
+
{
|
|
110
|
+
disablePortal: true,
|
|
111
|
+
disableScrollLock: true,
|
|
112
|
+
anchorOrigin: {
|
|
113
|
+
vertical: "bottom",
|
|
114
|
+
horizontal: "center"
|
|
115
|
+
},
|
|
116
|
+
...(0, import_ui.bindPopover)(popupState)
|
|
117
|
+
},
|
|
118
|
+
/* @__PURE__ */ React2.createElement(import_ui.Stack, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React2.createElement(Icon, { fontSize: SIZE, sx: { mr: 0.5 } }), /* @__PURE__ */ React2.createElement(import_ui.Typography, { variant: "subtitle2" }, title), /* @__PURE__ */ React2.createElement(import_ui.IconButton, { sx: { ml: "auto" }, size: SIZE, onClick: popupState.close }, /* @__PURE__ */ React2.createElement(import_icons.XIcon, { fontSize: SIZE }))),
|
|
119
|
+
/* @__PURE__ */ React2.createElement(PopoverContent, { closePopover: popupState.close })
|
|
120
|
+
));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// src/controls/control-actions/control-actions-menu.ts
|
|
124
|
+
var import_menus = require("@elementor/menus");
|
|
125
|
+
var controlActionsMenu = (0, import_menus.createMenu)({
|
|
126
|
+
components: {
|
|
127
|
+
PopoverAction
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
63
131
|
// src/panel.ts
|
|
64
132
|
var import_editor_panels2 = require("@elementor/editor-panels");
|
|
65
133
|
|
|
66
134
|
// src/components/editing-panel.tsx
|
|
67
|
-
var
|
|
68
|
-
var
|
|
135
|
+
var React49 = __toESM(require("react"));
|
|
136
|
+
var import_i18n25 = require("@wordpress/i18n");
|
|
69
137
|
|
|
70
138
|
// src/hooks/use-selected-elements.ts
|
|
71
139
|
var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
|
|
@@ -94,6 +162,24 @@ function useSelectedElements() {
|
|
|
94
162
|
);
|
|
95
163
|
}
|
|
96
164
|
|
|
165
|
+
// src/components/editing-panel.tsx
|
|
166
|
+
var import_editor_panels = require("@elementor/editor-panels");
|
|
167
|
+
|
|
168
|
+
// src/controls/providers/element-provider.tsx
|
|
169
|
+
var React3 = __toESM(require("react"));
|
|
170
|
+
var import_react4 = require("react");
|
|
171
|
+
var Context = (0, import_react4.createContext)(null);
|
|
172
|
+
function ElementProvider({ children, element, elementType }) {
|
|
173
|
+
return /* @__PURE__ */ React3.createElement(Context.Provider, { value: { element, elementType } }, children);
|
|
174
|
+
}
|
|
175
|
+
function useElement() {
|
|
176
|
+
const context = (0, import_react4.useContext)(Context);
|
|
177
|
+
if (!context) {
|
|
178
|
+
throw new Error("useElement must be used within a ElementProvider");
|
|
179
|
+
}
|
|
180
|
+
return context;
|
|
181
|
+
}
|
|
182
|
+
|
|
97
183
|
// src/hooks/use-element-type.ts
|
|
98
184
|
var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
|
|
99
185
|
|
|
@@ -130,47 +216,29 @@ function useElementType(type) {
|
|
|
130
216
|
);
|
|
131
217
|
}
|
|
132
218
|
|
|
133
|
-
// src/components/editing-panel.tsx
|
|
134
|
-
var import_editor_panels = require("@elementor/editor-panels");
|
|
135
|
-
|
|
136
|
-
// src/contexts/element-context.tsx
|
|
137
|
-
var React = __toESM(require("react"));
|
|
138
|
-
var import_react2 = require("react");
|
|
139
|
-
var Context = (0, import_react2.createContext)(null);
|
|
140
|
-
function ElementContext({ children, element, elementType }) {
|
|
141
|
-
return /* @__PURE__ */ React.createElement(Context.Provider, { value: { element, elementType } }, children);
|
|
142
|
-
}
|
|
143
|
-
function useElementContext() {
|
|
144
|
-
const context = (0, import_react2.useContext)(Context);
|
|
145
|
-
if (!context) {
|
|
146
|
-
throw new Error("useElementContext must be used within a ElementContextProvider");
|
|
147
|
-
}
|
|
148
|
-
return context;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
219
|
// src/components/editing-panel-tabs.tsx
|
|
152
|
-
var
|
|
153
|
-
var
|
|
154
|
-
var
|
|
220
|
+
var import_ui40 = require("@elementor/ui");
|
|
221
|
+
var React47 = __toESM(require("react"));
|
|
222
|
+
var import_i18n24 = require("@wordpress/i18n");
|
|
155
223
|
|
|
156
224
|
// src/components/settings-tab.tsx
|
|
157
|
-
var
|
|
158
|
-
var
|
|
225
|
+
var React18 = __toESM(require("react"));
|
|
226
|
+
var import_ui14 = require("@elementor/ui");
|
|
159
227
|
|
|
160
228
|
// src/controls/settings-control.tsx
|
|
161
|
-
var
|
|
229
|
+
var React5 = __toESM(require("react"));
|
|
162
230
|
|
|
163
|
-
// src/hooks/use-widget-settings.ts
|
|
231
|
+
// src/controls/hooks/use-widget-settings.ts
|
|
164
232
|
var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
|
|
165
233
|
|
|
166
|
-
// src/sync/get-container.ts
|
|
234
|
+
// src/controls/sync/get-container.ts
|
|
167
235
|
function getContainer(id) {
|
|
168
236
|
const extendedWindow = window;
|
|
169
237
|
const container = extendedWindow.elementor?.getContainer?.(id);
|
|
170
238
|
return container ?? null;
|
|
171
239
|
}
|
|
172
240
|
|
|
173
|
-
// src/hooks/use-widget-settings.ts
|
|
241
|
+
// src/controls/hooks/use-widget-settings.ts
|
|
174
242
|
var useWidgetSettings = ({ id, bind }) => {
|
|
175
243
|
return (0, import_editor_v1_adapters3.__privateUseListenTo)(
|
|
176
244
|
(0, import_editor_v1_adapters3.commandEndEvent)("document/elements/settings"),
|
|
@@ -183,7 +251,7 @@ var useWidgetSettings = ({ id, bind }) => {
|
|
|
183
251
|
);
|
|
184
252
|
};
|
|
185
253
|
|
|
186
|
-
// src/sync/update-settings.ts
|
|
254
|
+
// src/controls/sync/update-settings.ts
|
|
187
255
|
var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
|
|
188
256
|
var updateSettings = ({ id, props }) => {
|
|
189
257
|
const container = getContainer(id);
|
|
@@ -196,32 +264,16 @@ var updateSettings = ({ id, props }) => {
|
|
|
196
264
|
};
|
|
197
265
|
|
|
198
266
|
// src/components/control-label.tsx
|
|
199
|
-
var
|
|
200
|
-
var
|
|
267
|
+
var React4 = __toESM(require("react"));
|
|
268
|
+
var import_ui2 = require("@elementor/ui");
|
|
201
269
|
var ControlLabel = ({ children }) => {
|
|
202
|
-
return /* @__PURE__ */
|
|
270
|
+
return /* @__PURE__ */ React4.createElement(import_ui2.Typography, { component: "label", variant: "caption", color: "text.secondary" }, children);
|
|
203
271
|
};
|
|
204
272
|
|
|
205
|
-
// src/controls/components/control-container.tsx
|
|
206
|
-
var React3 = __toESM(require("react"));
|
|
207
|
-
var import_ui2 = require("@elementor/ui");
|
|
208
|
-
var StyledStack = (0, import_ui2.styled)(import_ui2.Stack)(({ theme, gap, direction }) => ({
|
|
209
|
-
"> :only-child": {
|
|
210
|
-
width: "100%"
|
|
211
|
-
},
|
|
212
|
-
"&:where( :has( > :nth-child( 2 ):last-child ) ) > :where( * )": {
|
|
213
|
-
width: direction === "column" ? "100%" : `calc( 50% - ${theme.spacing(gap / 2)})`
|
|
214
|
-
},
|
|
215
|
-
"&:where( :has( > :nth-child( 3 ):last-child ) ) > :where( * )": {
|
|
216
|
-
width: direction === "column" ? "100%" : `calc( 33.3333% - ${theme.spacing(gap * 2)} / 3)`
|
|
217
|
-
}
|
|
218
|
-
}));
|
|
219
|
-
var ControlContainer = (props) => /* @__PURE__ */ React3.createElement(StyledStack, { gap: 1, direction: "row", alignItems: "center", justifyContent: "space-between", ...props });
|
|
220
|
-
|
|
221
273
|
// src/controls/settings-control.tsx
|
|
222
|
-
var
|
|
223
|
-
const { element, elementType } =
|
|
224
|
-
const defaultValue = elementType.propsSchema[bind]?.
|
|
274
|
+
var SettingsControl = ({ bind, children }) => {
|
|
275
|
+
const { element, elementType } = useElement();
|
|
276
|
+
const defaultValue = elementType.propsSchema[bind]?.default;
|
|
225
277
|
const settingsValue = useWidgetSettings({ id: element.id, bind });
|
|
226
278
|
const value = settingsValue ?? defaultValue ?? null;
|
|
227
279
|
const setValue = (newValue) => {
|
|
@@ -232,94 +284,181 @@ var SettingsControlProvider = ({ bind, children }) => {
|
|
|
232
284
|
}
|
|
233
285
|
});
|
|
234
286
|
};
|
|
235
|
-
return /* @__PURE__ */
|
|
287
|
+
return /* @__PURE__ */ React5.createElement(ControlContext.Provider, { value: { setValue, value, bind } }, children);
|
|
236
288
|
};
|
|
237
|
-
var SettingsControl = ({ children, bind }) => /* @__PURE__ */ React4.createElement(SettingsControlProvider, { bind }, /* @__PURE__ */ React4.createElement(ControlContainer, { flexWrap: "wrap" }, children));
|
|
238
289
|
SettingsControl.Label = ControlLabel;
|
|
239
290
|
|
|
240
291
|
// src/components/accordion-section.tsx
|
|
241
|
-
var
|
|
242
|
-
var
|
|
292
|
+
var React6 = __toESM(require("react"));
|
|
293
|
+
var import_react5 = require("react");
|
|
243
294
|
var import_ui3 = require("@elementor/ui");
|
|
244
295
|
var AccordionSection = ({ title, children }) => {
|
|
245
|
-
const uid = (0,
|
|
296
|
+
const uid = (0, import_react5.useId)();
|
|
246
297
|
const labelId = `label-${uid}`;
|
|
247
298
|
const contentId = `content-${uid}`;
|
|
248
|
-
return /* @__PURE__ */
|
|
299
|
+
return /* @__PURE__ */ React6.createElement(import_ui3.Accordion, { disableGutters: true, defaultExpanded: true }, /* @__PURE__ */ React6.createElement(import_ui3.AccordionSummary, { "aria-controls": contentId, id: labelId }, /* @__PURE__ */ React6.createElement(import_ui3.AccordionSummaryText, { primaryTypographyProps: { variant: "caption" } }, title)), /* @__PURE__ */ React6.createElement(import_ui3.AccordionDetails, { id: contentId, "aria-labelledby": labelId }, /* @__PURE__ */ React6.createElement(import_ui3.Stack, { gap: 2.5 }, children)));
|
|
249
300
|
};
|
|
250
301
|
|
|
251
302
|
// src/controls/control.tsx
|
|
252
|
-
var
|
|
303
|
+
var React16 = __toESM(require("react"));
|
|
253
304
|
var import_utils = require("@elementor/utils");
|
|
254
305
|
|
|
255
306
|
// src/controls/control-types/image-control.tsx
|
|
256
|
-
var
|
|
257
|
-
var
|
|
258
|
-
var
|
|
259
|
-
|
|
307
|
+
var React11 = __toESM(require("react"));
|
|
308
|
+
var import_ui8 = require("@elementor/ui");
|
|
309
|
+
var import_i18n2 = require("@wordpress/i18n");
|
|
310
|
+
|
|
311
|
+
// src/controls/control-types/image-media-control.tsx
|
|
312
|
+
var React9 = __toESM(require("react"));
|
|
313
|
+
var import_ui6 = require("@elementor/ui");
|
|
314
|
+
var import_icons2 = require("@elementor/icons");
|
|
260
315
|
var import_wp_media = require("@elementor/wp-media");
|
|
261
|
-
var
|
|
316
|
+
var import_i18n = require("@wordpress/i18n");
|
|
317
|
+
|
|
318
|
+
// src/controls/control-actions/control-actions.tsx
|
|
319
|
+
var React7 = __toESM(require("react"));
|
|
320
|
+
var import_ui4 = require("@elementor/ui");
|
|
321
|
+
var { useMenuItems } = controlActionsMenu;
|
|
322
|
+
var FloatingBar = (0, import_ui4.styled)(import_ui4.UnstableFloatingActionBar)`
|
|
323
|
+
& .MuiPaper-root:empty {
|
|
324
|
+
display: none;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// this is for a fix which would be added later on - to force the width externally
|
|
328
|
+
width: 100%;
|
|
329
|
+
& > :first-of-type {
|
|
330
|
+
width: 100%;
|
|
331
|
+
}
|
|
332
|
+
`;
|
|
333
|
+
function ControlActions({ fullWidth = false, children }) {
|
|
334
|
+
const items = useMenuItems().default;
|
|
335
|
+
if (items.length === 0) {
|
|
336
|
+
return children;
|
|
337
|
+
}
|
|
338
|
+
return /* @__PURE__ */ React7.createElement(
|
|
339
|
+
FloatingBar,
|
|
340
|
+
{
|
|
341
|
+
actions: items.map(({ MenuItem: MenuItem4, id }) => /* @__PURE__ */ React7.createElement(MenuItem4, { key: id })),
|
|
342
|
+
sx: fullWidth ? { width: "100%" } : void 0
|
|
343
|
+
},
|
|
344
|
+
children
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// src/controls/create-control.tsx
|
|
349
|
+
var React8 = __toESM(require("react"));
|
|
350
|
+
var import_ui5 = require("@elementor/ui");
|
|
351
|
+
var brandSymbol = Symbol("control");
|
|
352
|
+
function createControl(Component, { supportsReplacements = true } = {}) {
|
|
353
|
+
return (props) => {
|
|
354
|
+
const ControlReplacement = useControlReplacement();
|
|
355
|
+
if (ControlReplacement && supportsReplacements) {
|
|
356
|
+
return /* @__PURE__ */ React8.createElement(import_ui5.ErrorBoundary, { fallback: null }, /* @__PURE__ */ React8.createElement(ControlReplacement, { ...props }));
|
|
357
|
+
}
|
|
358
|
+
return /* @__PURE__ */ React8.createElement(import_ui5.ErrorBoundary, { fallback: null }, /* @__PURE__ */ React8.createElement(Component, { ...props }));
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// src/controls/control-types/image-media-control.tsx
|
|
363
|
+
var ImageMediaControl = createControl(() => {
|
|
262
364
|
const { value, setValue } = useControl();
|
|
263
|
-
const {
|
|
264
|
-
const
|
|
365
|
+
const { id, url } = value?.value ?? {};
|
|
366
|
+
const { data: attachment } = (0, import_wp_media.useWpMediaAttachment)(id?.value || null);
|
|
367
|
+
const src = attachment?.url ?? url;
|
|
265
368
|
const { open } = (0, import_wp_media.useWpMediaFrame)({
|
|
266
369
|
types: ["image"],
|
|
267
370
|
multiple: false,
|
|
268
|
-
selected:
|
|
371
|
+
selected: id?.value || null,
|
|
269
372
|
onSelect: (selectedAttachment) => {
|
|
270
373
|
setValue({
|
|
271
|
-
$$type: "image",
|
|
374
|
+
$$type: "image-src",
|
|
272
375
|
value: {
|
|
273
|
-
|
|
376
|
+
id: {
|
|
377
|
+
$$type: "image-attachment-id",
|
|
378
|
+
value: selectedAttachment.id
|
|
379
|
+
},
|
|
380
|
+
url: null
|
|
274
381
|
}
|
|
275
382
|
});
|
|
276
383
|
}
|
|
277
384
|
});
|
|
278
|
-
return /* @__PURE__ */
|
|
279
|
-
|
|
385
|
+
return /* @__PURE__ */ React9.createElement(import_ui6.Card, { variant: "outlined" }, /* @__PURE__ */ React9.createElement(import_ui6.CardMedia, { image: src, sx: { height: 150 } }), /* @__PURE__ */ React9.createElement(import_ui6.CardOverlay, null, /* @__PURE__ */ React9.createElement(ControlActions, null, /* @__PURE__ */ React9.createElement(import_ui6.Stack, { gap: 0.5 }, /* @__PURE__ */ React9.createElement(
|
|
386
|
+
import_ui6.Button,
|
|
280
387
|
{
|
|
388
|
+
size: "tiny",
|
|
281
389
|
color: "inherit",
|
|
282
|
-
size: "small",
|
|
283
390
|
variant: "outlined",
|
|
284
|
-
onClick: () => {
|
|
285
|
-
open({ mode: "browse" });
|
|
286
|
-
}
|
|
391
|
+
onClick: () => open({ mode: "browse" })
|
|
287
392
|
},
|
|
288
393
|
(0, import_i18n.__)("Select Image", "elementor")
|
|
289
|
-
), /* @__PURE__ */
|
|
290
|
-
|
|
394
|
+
), /* @__PURE__ */ React9.createElement(
|
|
395
|
+
import_ui6.Button,
|
|
291
396
|
{
|
|
292
|
-
|
|
293
|
-
size: "small",
|
|
397
|
+
size: "tiny",
|
|
294
398
|
variant: "text",
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
}
|
|
399
|
+
color: "inherit",
|
|
400
|
+
startIcon: /* @__PURE__ */ React9.createElement(import_icons2.UploadIcon, null),
|
|
401
|
+
onClick: () => open({ mode: "upload" })
|
|
299
402
|
},
|
|
300
403
|
(0, import_i18n.__)("Upload Image", "elementor")
|
|
301
|
-
)));
|
|
302
|
-
};
|
|
404
|
+
)))));
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
// src/controls/control-types/select-control.tsx
|
|
408
|
+
var React10 = __toESM(require("react"));
|
|
409
|
+
var import_ui7 = require("@elementor/ui");
|
|
410
|
+
var SelectControl = createControl(({ options: options4 }) => {
|
|
411
|
+
const { value, setValue } = useControl();
|
|
412
|
+
const handleChange = (event) => {
|
|
413
|
+
setValue(event.target.value);
|
|
414
|
+
};
|
|
415
|
+
return /* @__PURE__ */ React10.createElement(ControlActions, null, /* @__PURE__ */ React10.createElement(import_ui7.Select, { size: "tiny", value: value ?? "", onChange: handleChange }, options4.map(({ label, ...props }) => /* @__PURE__ */ React10.createElement(import_ui7.MenuItem, { key: props.value, ...props }, label))));
|
|
416
|
+
});
|
|
417
|
+
|
|
418
|
+
// src/controls/control-types/image-control.tsx
|
|
419
|
+
var ImageControl = createControl((props) => {
|
|
420
|
+
const { value, setValue } = useControl();
|
|
421
|
+
const { src, size } = value?.value || {};
|
|
422
|
+
const setImageSrc = (newValue) => {
|
|
423
|
+
setValue({
|
|
424
|
+
$$type: "image",
|
|
425
|
+
value: {
|
|
426
|
+
src: newValue,
|
|
427
|
+
size
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
};
|
|
431
|
+
const setImageSize = (newValue) => {
|
|
432
|
+
setValue({
|
|
433
|
+
$$type: "image",
|
|
434
|
+
value: {
|
|
435
|
+
src,
|
|
436
|
+
size: newValue
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
};
|
|
440
|
+
return /* @__PURE__ */ React11.createElement(import_ui8.Stack, { gap: 2 }, /* @__PURE__ */ React11.createElement(ControlContext.Provider, { value: { setValue: setImageSrc, value: src, bind: "src" } }, /* @__PURE__ */ React11.createElement(ImageMediaControl, null)), /* @__PURE__ */ React11.createElement(ControlContext.Provider, { value: { setValue: setImageSize, value: size, bind: "size" } }, /* @__PURE__ */ React11.createElement(import_ui8.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React11.createElement(import_ui8.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React11.createElement(SettingsControl.Label, null, " ", (0, import_i18n2.__)("Image Resolution", "elementor"))), /* @__PURE__ */ React11.createElement(import_ui8.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React11.createElement(SelectControl, { options: props.sizes })))));
|
|
441
|
+
});
|
|
303
442
|
|
|
304
443
|
// src/controls/control-types/text-control.tsx
|
|
305
|
-
var
|
|
306
|
-
var
|
|
307
|
-
var TextControl = ({ placeholder }) => {
|
|
444
|
+
var React12 = __toESM(require("react"));
|
|
445
|
+
var import_ui9 = require("@elementor/ui");
|
|
446
|
+
var TextControl = createControl(({ placeholder }) => {
|
|
308
447
|
const { value, setValue } = useControl("");
|
|
309
448
|
const handleChange = (event) => setValue(event.target.value);
|
|
310
|
-
return /* @__PURE__ */
|
|
311
|
-
};
|
|
449
|
+
return /* @__PURE__ */ React12.createElement(ControlActions, { fullWidth: true }, /* @__PURE__ */ React12.createElement(import_ui9.TextField, { type: "text", size: "tiny", value, onChange: handleChange, placeholder }));
|
|
450
|
+
});
|
|
312
451
|
|
|
313
452
|
// src/controls/control-types/text-area-control.tsx
|
|
314
|
-
var
|
|
315
|
-
var
|
|
316
|
-
var TextAreaControl = ({ placeholder }) => {
|
|
453
|
+
var React13 = __toESM(require("react"));
|
|
454
|
+
var import_ui10 = require("@elementor/ui");
|
|
455
|
+
var TextAreaControl = createControl(({ placeholder }) => {
|
|
317
456
|
const { value, setValue } = useControl();
|
|
318
457
|
const handleChange = (event) => {
|
|
319
458
|
setValue(event.target.value);
|
|
320
459
|
};
|
|
321
|
-
return /* @__PURE__ */
|
|
322
|
-
|
|
460
|
+
return /* @__PURE__ */ React13.createElement(ControlActions, { fullWidth: true }, /* @__PURE__ */ React13.createElement(
|
|
461
|
+
import_ui10.TextField,
|
|
323
462
|
{
|
|
324
463
|
size: "tiny",
|
|
325
464
|
multiline: true,
|
|
@@ -329,15 +468,15 @@ var TextAreaControl = ({ placeholder }) => {
|
|
|
329
468
|
onChange: handleChange,
|
|
330
469
|
placeholder
|
|
331
470
|
}
|
|
332
|
-
);
|
|
333
|
-
};
|
|
471
|
+
));
|
|
472
|
+
});
|
|
334
473
|
|
|
335
474
|
// src/controls/control-types/size-control.tsx
|
|
336
|
-
var
|
|
337
|
-
var
|
|
475
|
+
var React15 = __toESM(require("react"));
|
|
476
|
+
var import_ui12 = require("@elementor/ui");
|
|
338
477
|
|
|
339
478
|
// src/controls/hooks/use-sync-external-state.tsx
|
|
340
|
-
var
|
|
479
|
+
var import_react6 = require("react");
|
|
341
480
|
var useSyncExternalState = ({
|
|
342
481
|
external,
|
|
343
482
|
setExternal,
|
|
@@ -356,8 +495,8 @@ var useSyncExternalState = ({
|
|
|
356
495
|
}
|
|
357
496
|
return externalValue;
|
|
358
497
|
}
|
|
359
|
-
const [internal, setInternal] = (0,
|
|
360
|
-
(0,
|
|
498
|
+
const [internal, setInternal] = (0, import_react6.useState)(toInternal(external, void 0));
|
|
499
|
+
(0, import_react6.useEffect)(() => {
|
|
361
500
|
setInternal((prevInternal) => toInternal(external, prevInternal));
|
|
362
501
|
}, [external]);
|
|
363
502
|
const setInternalValue = (setter) => {
|
|
@@ -370,9 +509,9 @@ var useSyncExternalState = ({
|
|
|
370
509
|
};
|
|
371
510
|
|
|
372
511
|
// src/controls/components/text-field-inner-selection.tsx
|
|
373
|
-
var
|
|
374
|
-
var
|
|
375
|
-
var
|
|
512
|
+
var React14 = __toESM(require("react"));
|
|
513
|
+
var import_react7 = require("react");
|
|
514
|
+
var import_ui11 = require("@elementor/ui");
|
|
376
515
|
var TextFieldInnerSelection = ({
|
|
377
516
|
placeholder,
|
|
378
517
|
type,
|
|
@@ -381,8 +520,8 @@ var TextFieldInnerSelection = ({
|
|
|
381
520
|
endAdornment,
|
|
382
521
|
startAdornment
|
|
383
522
|
}) => {
|
|
384
|
-
return /* @__PURE__ */
|
|
385
|
-
|
|
523
|
+
return /* @__PURE__ */ React14.createElement(
|
|
524
|
+
import_ui11.TextField,
|
|
386
525
|
{
|
|
387
526
|
size: "tiny",
|
|
388
527
|
type,
|
|
@@ -397,33 +536,33 @@ var TextFieldInnerSelection = ({
|
|
|
397
536
|
);
|
|
398
537
|
};
|
|
399
538
|
var SelectionEndAdornment = ({
|
|
400
|
-
options:
|
|
539
|
+
options: options4,
|
|
401
540
|
onClick,
|
|
402
541
|
value
|
|
403
542
|
}) => {
|
|
404
|
-
const popupState = (0,
|
|
543
|
+
const popupState = (0, import_ui11.usePopupState)({
|
|
405
544
|
variant: "popover",
|
|
406
|
-
popupId: (0,
|
|
545
|
+
popupId: (0, import_react7.useId)()
|
|
407
546
|
});
|
|
408
547
|
const handleMenuItemClick = (index) => {
|
|
409
|
-
onClick(
|
|
548
|
+
onClick(options4[index]);
|
|
410
549
|
popupState.close();
|
|
411
550
|
};
|
|
412
|
-
return /* @__PURE__ */
|
|
413
|
-
|
|
551
|
+
return /* @__PURE__ */ React14.createElement(import_ui11.InputAdornment, { position: "end" }, /* @__PURE__ */ React14.createElement(
|
|
552
|
+
import_ui11.Button,
|
|
414
553
|
{
|
|
415
554
|
size: "small",
|
|
416
555
|
color: "inherit",
|
|
417
556
|
sx: { font: "inherit", minWidth: "initial" },
|
|
418
|
-
...(0,
|
|
557
|
+
...(0, import_ui11.bindTrigger)(popupState)
|
|
419
558
|
},
|
|
420
559
|
value.toUpperCase()
|
|
421
|
-
), /* @__PURE__ */
|
|
560
|
+
), /* @__PURE__ */ React14.createElement(import_ui11.Menu, { MenuListProps: { dense: true }, ...(0, import_ui11.bindMenu)(popupState) }, options4.map((option, index) => /* @__PURE__ */ React14.createElement(import_ui11.MenuItem, { key: option, onClick: () => handleMenuItemClick(index) }, option.toUpperCase()))));
|
|
422
561
|
};
|
|
423
562
|
|
|
424
563
|
// src/controls/control-types/size-control.tsx
|
|
425
564
|
var defaultUnits = ["px", "%", "em", "rem", "vw"];
|
|
426
|
-
var SizeControl = ({ units = defaultUnits, placeholder, startIcon }) => {
|
|
565
|
+
var SizeControl = createControl(({ units = defaultUnits, placeholder, startIcon }) => {
|
|
427
566
|
const { value, setValue } = useControl();
|
|
428
567
|
const [state, setState] = useSyncExternalState({
|
|
429
568
|
external: value,
|
|
@@ -453,39 +592,29 @@ var SizeControl = ({ units = defaultUnits, placeholder, startIcon }) => {
|
|
|
453
592
|
}
|
|
454
593
|
}));
|
|
455
594
|
};
|
|
456
|
-
return /* @__PURE__ */
|
|
595
|
+
return /* @__PURE__ */ React15.createElement(ControlActions, null, /* @__PURE__ */ React15.createElement(
|
|
457
596
|
TextFieldInnerSelection,
|
|
458
597
|
{
|
|
459
|
-
endAdornment: /* @__PURE__ */
|
|
598
|
+
endAdornment: /* @__PURE__ */ React15.createElement(SelectionEndAdornment, { options: units, onClick: handleUnitChange, value: state.value.unit }),
|
|
460
599
|
placeholder,
|
|
461
|
-
startAdornment: startIcon ?? /* @__PURE__ */
|
|
600
|
+
startAdornment: startIcon ?? /* @__PURE__ */ React15.createElement(import_ui12.InputAdornment, { position: "start" }, startIcon),
|
|
462
601
|
type: "number",
|
|
463
602
|
value: Number.isNaN(state.value.size) ? "" : state.value.size,
|
|
464
603
|
onChange: handleSizeChange
|
|
465
604
|
}
|
|
466
|
-
);
|
|
467
|
-
};
|
|
468
|
-
|
|
469
|
-
// src/controls/control-types/select-control.tsx
|
|
470
|
-
var React11 = __toESM(require("react"));
|
|
471
|
-
var import_ui9 = require("@elementor/ui");
|
|
472
|
-
var SelectControl = ({ options: options3 }) => {
|
|
473
|
-
const { value, setValue } = useControl();
|
|
474
|
-
const handleChange = (event) => {
|
|
475
|
-
setValue(event.target.value);
|
|
476
|
-
};
|
|
477
|
-
return /* @__PURE__ */ React11.createElement(import_ui9.Select, { size: "tiny", value: value ?? "", onChange: handleChange }, options3.map(({ label, ...props }) => /* @__PURE__ */ React11.createElement(import_ui9.MenuItem, { key: props.value, ...props }, label)));
|
|
478
|
-
};
|
|
605
|
+
));
|
|
606
|
+
});
|
|
479
607
|
|
|
480
608
|
// src/controls/controls-registry.tsx
|
|
481
609
|
var controlTypes = {
|
|
482
|
-
image: ImageControl,
|
|
483
|
-
text: TextControl,
|
|
484
|
-
textarea: TextAreaControl,
|
|
485
|
-
size: SizeControl,
|
|
486
|
-
select: SelectControl
|
|
610
|
+
image: { component: ImageControl, layout: "full" },
|
|
611
|
+
text: { component: TextControl, layout: "two-columns" },
|
|
612
|
+
textarea: { component: TextAreaControl, layout: "full" },
|
|
613
|
+
size: { component: SizeControl, layout: "two-columns" },
|
|
614
|
+
select: { component: SelectControl, layout: "two-columns" }
|
|
487
615
|
};
|
|
488
|
-
var getControlByType = (type) => controlTypes[type];
|
|
616
|
+
var getControlByType = (type) => controlTypes[type]?.component;
|
|
617
|
+
var getLayoutByType = (type) => controlTypes[type].layout;
|
|
489
618
|
|
|
490
619
|
// src/controls/control.tsx
|
|
491
620
|
var ControlTypeError = (0, import_utils.createError)({
|
|
@@ -493,28 +622,51 @@ var ControlTypeError = (0, import_utils.createError)({
|
|
|
493
622
|
message: `Control type not found.`
|
|
494
623
|
});
|
|
495
624
|
var Control = ({ props, type }) => {
|
|
496
|
-
const { value } = useControl();
|
|
497
625
|
const ControlByType = getControlByType(type);
|
|
498
626
|
if (!ControlByType) {
|
|
499
627
|
throw new ControlTypeError({
|
|
500
628
|
context: { type }
|
|
501
629
|
});
|
|
502
630
|
}
|
|
503
|
-
|
|
504
|
-
return /* @__PURE__ */ React12.createElement(ControlComponent, { ...props });
|
|
631
|
+
return /* @__PURE__ */ React16.createElement(ControlByType, { ...props });
|
|
505
632
|
};
|
|
506
633
|
|
|
634
|
+
// src/controls/components/control-type-container.tsx
|
|
635
|
+
var React17 = __toESM(require("react"));
|
|
636
|
+
var import_ui13 = require("@elementor/ui");
|
|
637
|
+
var ControlTypeContainer = ({
|
|
638
|
+
controlType,
|
|
639
|
+
children
|
|
640
|
+
}) => {
|
|
641
|
+
const layout = getLayoutByType(controlType);
|
|
642
|
+
return /* @__PURE__ */ React17.createElement(StyledContainer, { layout }, children);
|
|
643
|
+
};
|
|
644
|
+
var StyledContainer = (0, import_ui13.styled)(import_ui13.Box, {
|
|
645
|
+
shouldForwardProp: (prop) => !["layout"].includes(prop)
|
|
646
|
+
})(({ layout, theme }) => ({
|
|
647
|
+
display: "grid",
|
|
648
|
+
gridGap: theme.spacing(1),
|
|
649
|
+
...getGridLayout(layout)
|
|
650
|
+
}));
|
|
651
|
+
var getGridLayout = (layout) => ({
|
|
652
|
+
justifyContent: "space-between",
|
|
653
|
+
gridTemplateColumns: {
|
|
654
|
+
full: "1fr",
|
|
655
|
+
"two-columns": "repeat(2, 1fr)"
|
|
656
|
+
}[layout]
|
|
657
|
+
});
|
|
658
|
+
|
|
507
659
|
// src/components/settings-tab.tsx
|
|
508
660
|
var SettingsTab = () => {
|
|
509
|
-
const { elementType } =
|
|
510
|
-
return /* @__PURE__ */
|
|
661
|
+
const { elementType } = useElement();
|
|
662
|
+
return /* @__PURE__ */ React18.createElement(import_ui14.Stack, null, elementType.controls.map(({ type, value }, index) => {
|
|
511
663
|
if (type === "control") {
|
|
512
|
-
return /* @__PURE__ */
|
|
664
|
+
return /* @__PURE__ */ React18.createElement(Control2, { key: value.bind, control: value });
|
|
513
665
|
}
|
|
514
666
|
if (type === "section") {
|
|
515
|
-
return /* @__PURE__ */
|
|
667
|
+
return /* @__PURE__ */ React18.createElement(AccordionSection, { key: type + "." + index, title: value.label }, value.items?.map((item) => {
|
|
516
668
|
if (item.type === "control") {
|
|
517
|
-
return /* @__PURE__ */
|
|
669
|
+
return /* @__PURE__ */ React18.createElement(Control2, { key: item.value.bind, control: item.value });
|
|
518
670
|
}
|
|
519
671
|
return null;
|
|
520
672
|
}));
|
|
@@ -526,24 +678,24 @@ var Control2 = ({ control }) => {
|
|
|
526
678
|
if (!getControlByType(control.type)) {
|
|
527
679
|
return null;
|
|
528
680
|
}
|
|
529
|
-
return /* @__PURE__ */
|
|
681
|
+
return /* @__PURE__ */ React18.createElement(SettingsControl, { bind: control.bind }, /* @__PURE__ */ React18.createElement(ControlTypeContainer, { controlType: control.type }, control.label ? /* @__PURE__ */ React18.createElement(SettingsControl.Label, null, control.label) : null, /* @__PURE__ */ React18.createElement(Control, { type: control.type, props: control.props })));
|
|
530
682
|
};
|
|
531
683
|
|
|
532
684
|
// src/components/style-tab.tsx
|
|
533
|
-
var
|
|
685
|
+
var React46 = __toESM(require("react"));
|
|
534
686
|
|
|
535
687
|
// src/contexts/style-context.tsx
|
|
536
|
-
var
|
|
537
|
-
var
|
|
688
|
+
var React19 = __toESM(require("react"));
|
|
689
|
+
var import_react8 = require("react");
|
|
538
690
|
var import_editor_responsive = require("@elementor/editor-responsive");
|
|
539
|
-
var Context2 = (0,
|
|
691
|
+
var Context2 = (0, import_react8.createContext)(null);
|
|
540
692
|
function StyleContext({ children, selectedStyleDef, selectedClassesProp }) {
|
|
541
693
|
const breakpoint = (0, import_editor_responsive.useActiveBreakpoint)();
|
|
542
694
|
const selectedMeta = { breakpoint, state: null };
|
|
543
|
-
return /* @__PURE__ */
|
|
695
|
+
return /* @__PURE__ */ React19.createElement(Context2.Provider, { value: { selectedStyleDef, selectedMeta, selectedClassesProp } }, children);
|
|
544
696
|
}
|
|
545
697
|
function useStyleContext() {
|
|
546
|
-
const context = (0,
|
|
698
|
+
const context = (0, import_react8.useContext)(Context2);
|
|
547
699
|
if (!context) {
|
|
548
700
|
throw new Error("UseStyleContext must be used within a StyleContextProvider");
|
|
549
701
|
}
|
|
@@ -571,13 +723,13 @@ var useElementStyles = (elementID) => {
|
|
|
571
723
|
};
|
|
572
724
|
|
|
573
725
|
// src/components/style-tab.tsx
|
|
574
|
-
var
|
|
726
|
+
var import_ui39 = require("@elementor/ui");
|
|
575
727
|
|
|
576
728
|
// src/components/style-sections/size-section.tsx
|
|
577
|
-
var
|
|
729
|
+
var React21 = __toESM(require("react"));
|
|
578
730
|
|
|
579
731
|
// src/controls/style-control.tsx
|
|
580
|
-
var
|
|
732
|
+
var React20 = __toESM(require("react"));
|
|
581
733
|
|
|
582
734
|
// src/hooks/use-element-style-prop.ts
|
|
583
735
|
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
|
|
@@ -624,7 +776,7 @@ var updateStyle = ({ elementID, styleDefID, meta, props, bind }) => {
|
|
|
624
776
|
|
|
625
777
|
// src/controls/hooks/use-style-control.ts
|
|
626
778
|
var useStyleControl = (propName) => {
|
|
627
|
-
const { element } =
|
|
779
|
+
const { element } = useElement();
|
|
628
780
|
const { selectedStyleDef, selectedMeta, selectedClassesProp } = useStyleContext();
|
|
629
781
|
const value = useElementStyleProp({
|
|
630
782
|
elementID: element.id,
|
|
@@ -647,35 +799,35 @@ var useStyleControl = (propName) => {
|
|
|
647
799
|
// src/controls/style-control.tsx
|
|
648
800
|
var StyleControl = ({ bind, children }) => {
|
|
649
801
|
const [value, setValue] = useStyleControl(bind);
|
|
650
|
-
return /* @__PURE__ */
|
|
802
|
+
return /* @__PURE__ */ React20.createElement(ControlContext.Provider, { value: { bind, value, setValue } }, children);
|
|
651
803
|
};
|
|
652
804
|
StyleControl.Label = ControlLabel;
|
|
653
805
|
|
|
654
806
|
// src/components/style-sections/size-section.tsx
|
|
655
|
-
var
|
|
656
|
-
var
|
|
807
|
+
var import_ui15 = require("@elementor/ui");
|
|
808
|
+
var import_i18n3 = require("@wordpress/i18n");
|
|
657
809
|
var SizeSection = () => {
|
|
658
|
-
return /* @__PURE__ */
|
|
810
|
+
return /* @__PURE__ */ React21.createElement(AccordionSection, { title: (0, import_i18n3.__)("Size", "elementor") }, /* @__PURE__ */ React21.createElement(import_ui15.Stack, { gap: 1.5 }, /* @__PURE__ */ React21.createElement(import_ui15.Grid, { container: true, spacing: 2 }, /* @__PURE__ */ React21.createElement(Control3, { bind: "width", label: (0, import_i18n3.__)("Width", "elementor") }), /* @__PURE__ */ React21.createElement(Control3, { bind: "height", label: (0, import_i18n3.__)("Height", "elementor") })), /* @__PURE__ */ React21.createElement(import_ui15.Grid, { container: true, spacing: 2 }, /* @__PURE__ */ React21.createElement(Control3, { bind: "min-width", label: (0, import_i18n3.__)("Min. Width", "elementor") }), /* @__PURE__ */ React21.createElement(Control3, { bind: "min-height", label: (0, import_i18n3.__)("Min. Height", "elementor") })), /* @__PURE__ */ React21.createElement(import_ui15.Grid, { container: true, spacing: 2 }, /* @__PURE__ */ React21.createElement(Control3, { bind: "max-width", label: (0, import_i18n3.__)("Max. Width", "elementor") }), /* @__PURE__ */ React21.createElement(Control3, { bind: "max-height", label: (0, import_i18n3.__)("Max. Height", "elementor") }))));
|
|
659
811
|
};
|
|
660
812
|
var Control3 = ({ label, bind }) => {
|
|
661
|
-
return /* @__PURE__ */
|
|
813
|
+
return /* @__PURE__ */ React21.createElement(import_ui15.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React21.createElement(StyleControl, { bind }, /* @__PURE__ */ React21.createElement(import_ui15.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React21.createElement(import_ui15.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React21.createElement(StyleControl.Label, null, label)), /* @__PURE__ */ React21.createElement(import_ui15.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React21.createElement(Control, { type: "size" })))));
|
|
662
814
|
};
|
|
663
815
|
|
|
664
816
|
// src/components/style-sections/typography-section/typography-section.tsx
|
|
665
|
-
var
|
|
666
|
-
var
|
|
817
|
+
var React35 = __toESM(require("react"));
|
|
818
|
+
var import_ui28 = require("@elementor/ui");
|
|
667
819
|
|
|
668
820
|
// src/components/style-sections/typography-section/text-style-control.tsx
|
|
669
|
-
var
|
|
670
|
-
var
|
|
671
|
-
var
|
|
672
|
-
var
|
|
821
|
+
var React22 = __toESM(require("react"));
|
|
822
|
+
var import_i18n4 = require("@wordpress/i18n");
|
|
823
|
+
var import_ui16 = require("@elementor/ui");
|
|
824
|
+
var import_icons3 = require("@elementor/icons");
|
|
673
825
|
var buttonSize = "tiny";
|
|
674
826
|
var TextStyleControl = () => {
|
|
675
|
-
const [fontStyle, setFontStyle] = useStyleControl("
|
|
676
|
-
const [textDecoration, setTextDecoration] = useStyleControl("
|
|
827
|
+
const [fontStyle, setFontStyle] = useStyleControl("font-style");
|
|
828
|
+
const [textDecoration, setTextDecoration] = useStyleControl("text-decoration");
|
|
677
829
|
const formats = [fontStyle, ...(textDecoration || "").split(" ")];
|
|
678
|
-
return /* @__PURE__ */
|
|
830
|
+
return /* @__PURE__ */ React22.createElement(import_ui16.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React22.createElement(import_ui16.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React22.createElement(ControlLabel, null, (0, import_i18n4.__)("Style", "elementor"))), /* @__PURE__ */ React22.createElement(import_ui16.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React22.createElement(import_ui16.ToggleButtonGroup, { value: formats }, /* @__PURE__ */ React22.createElement(
|
|
679
831
|
ToggleButton,
|
|
680
832
|
{
|
|
681
833
|
value: "italic",
|
|
@@ -683,8 +835,8 @@ var TextStyleControl = () => {
|
|
|
683
835
|
"aria-label": "italic",
|
|
684
836
|
sx: { marginLeft: "auto" }
|
|
685
837
|
},
|
|
686
|
-
/* @__PURE__ */
|
|
687
|
-
), /* @__PURE__ */
|
|
838
|
+
/* @__PURE__ */ React22.createElement(import_icons3.ItalicIcon, { fontSize: buttonSize })
|
|
839
|
+
), /* @__PURE__ */ React22.createElement(
|
|
688
840
|
ShorthandControl,
|
|
689
841
|
{
|
|
690
842
|
value: "line-through",
|
|
@@ -692,8 +844,8 @@ var TextStyleControl = () => {
|
|
|
692
844
|
updateValues: setTextDecoration,
|
|
693
845
|
"aria-label": "line-through"
|
|
694
846
|
},
|
|
695
|
-
/* @__PURE__ */
|
|
696
|
-
), /* @__PURE__ */
|
|
847
|
+
/* @__PURE__ */ React22.createElement(import_icons3.StrikethroughIcon, { fontSize: buttonSize })
|
|
848
|
+
), /* @__PURE__ */ React22.createElement(
|
|
697
849
|
ShorthandControl,
|
|
698
850
|
{
|
|
699
851
|
value: "underline",
|
|
@@ -701,8 +853,8 @@ var TextStyleControl = () => {
|
|
|
701
853
|
updateValues: setTextDecoration,
|
|
702
854
|
"aria-label": "underline"
|
|
703
855
|
},
|
|
704
|
-
/* @__PURE__ */
|
|
705
|
-
)));
|
|
856
|
+
/* @__PURE__ */ React22.createElement(import_icons3.UnderlineIcon, { fontSize: buttonSize })
|
|
857
|
+
))));
|
|
706
858
|
};
|
|
707
859
|
var ShorthandControl = ({
|
|
708
860
|
children,
|
|
@@ -720,105 +872,108 @@ var ShorthandControl = ({
|
|
|
720
872
|
updateValues([...valuesArr, newValue].join(" "));
|
|
721
873
|
}
|
|
722
874
|
};
|
|
723
|
-
return /* @__PURE__ */
|
|
875
|
+
return /* @__PURE__ */ React22.createElement(ToggleButton, { value, onChange: toggleValue, selected, "aria-label": ariaLabel }, children);
|
|
724
876
|
};
|
|
725
877
|
var ToggleButton = ({ onChange, ...props }) => {
|
|
726
878
|
const handleChange = (_e, newValue) => {
|
|
727
879
|
onChange(newValue);
|
|
728
880
|
};
|
|
729
|
-
return /* @__PURE__ */
|
|
881
|
+
return /* @__PURE__ */ React22.createElement(import_ui16.ToggleButton, { ...props, onChange: handleChange, size: buttonSize });
|
|
730
882
|
};
|
|
731
883
|
|
|
732
884
|
// src/components/style-sections/typography-section/typography-section.tsx
|
|
733
|
-
var
|
|
885
|
+
var import_i18n14 = require("@wordpress/i18n");
|
|
734
886
|
|
|
735
887
|
// src/components/style-sections/typography-section/font-size-control.tsx
|
|
736
|
-
var
|
|
737
|
-
var
|
|
888
|
+
var React23 = __toESM(require("react"));
|
|
889
|
+
var import_i18n5 = require("@wordpress/i18n");
|
|
890
|
+
var import_ui17 = require("@elementor/ui");
|
|
738
891
|
var FontSizeControl = () => {
|
|
739
|
-
return /* @__PURE__ */
|
|
892
|
+
return /* @__PURE__ */ React23.createElement(StyleControl, { bind: "font-size" }, /* @__PURE__ */ React23.createElement(import_ui17.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React23.createElement(import_ui17.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React23.createElement(StyleControl.Label, null, (0, import_i18n5.__)("Font Size", "elementor"))), /* @__PURE__ */ React23.createElement(import_ui17.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React23.createElement(SizeControl, null))));
|
|
740
893
|
};
|
|
741
894
|
|
|
742
895
|
// src/components/style-sections/typography-section/font-weight-control.tsx
|
|
743
|
-
var
|
|
744
|
-
var
|
|
896
|
+
var React24 = __toESM(require("react"));
|
|
897
|
+
var import_i18n6 = require("@wordpress/i18n");
|
|
898
|
+
var import_ui18 = require("@elementor/ui");
|
|
745
899
|
var fontWeightOptions = [
|
|
746
|
-
{ label: (0,
|
|
747
|
-
{ label: (0,
|
|
748
|
-
{ label: (0,
|
|
749
|
-
{ label: (0,
|
|
750
|
-
{ label: (0,
|
|
900
|
+
{ label: (0, import_i18n6.__)("Light - 400", "elementor"), value: "400" },
|
|
901
|
+
{ label: (0, import_i18n6.__)("Regular - 500", "elementor"), value: "500" },
|
|
902
|
+
{ label: (0, import_i18n6.__)("Semi Bold - 600", "elementor"), value: "600" },
|
|
903
|
+
{ label: (0, import_i18n6.__)("Bold - 700", "elementor"), value: "700" },
|
|
904
|
+
{ label: (0, import_i18n6.__)("Black - 900", "elementor"), value: "900" }
|
|
751
905
|
];
|
|
752
906
|
var FontWeightControl = () => {
|
|
753
|
-
return /* @__PURE__ */
|
|
907
|
+
return /* @__PURE__ */ React24.createElement(StyleControl, { bind: "font-weight" }, /* @__PURE__ */ React24.createElement(import_ui18.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React24.createElement(import_ui18.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React24.createElement(StyleControl.Label, null, (0, import_i18n6.__)("Font Weight", "elementor"))), /* @__PURE__ */ React24.createElement(import_ui18.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React24.createElement(SelectControl, { options: fontWeightOptions }))));
|
|
754
908
|
};
|
|
755
909
|
|
|
756
910
|
// src/components/style-sections/typography-section/text-color-control.tsx
|
|
757
|
-
var
|
|
758
|
-
var
|
|
911
|
+
var React26 = __toESM(require("react"));
|
|
912
|
+
var import_i18n7 = require("@wordpress/i18n");
|
|
913
|
+
var import_ui20 = require("@elementor/ui");
|
|
759
914
|
|
|
760
915
|
// src/controls/control-types/color-control.tsx
|
|
761
|
-
var
|
|
762
|
-
var
|
|
763
|
-
var ColorControl = (
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
};
|
|
776
|
-
};
|
|
916
|
+
var React25 = __toESM(require("react"));
|
|
917
|
+
var import_ui19 = require("@elementor/ui");
|
|
918
|
+
var ColorControl = createControl(
|
|
919
|
+
(props) => {
|
|
920
|
+
const { value, setValue } = useControl();
|
|
921
|
+
const handleChange = (selectedColor) => {
|
|
922
|
+
setValue({
|
|
923
|
+
$$type: "color",
|
|
924
|
+
value: selectedColor
|
|
925
|
+
});
|
|
926
|
+
};
|
|
927
|
+
return /* @__PURE__ */ React25.createElement(ControlActions, null, /* @__PURE__ */ React25.createElement(import_ui19.UnstableColorPicker, { size: "tiny", ...props, value: value?.value, onChange: handleChange }));
|
|
928
|
+
}
|
|
929
|
+
);
|
|
777
930
|
|
|
778
931
|
// src/components/style-sections/typography-section/text-color-control.tsx
|
|
779
932
|
var TextColorControl = () => {
|
|
780
|
-
return /* @__PURE__ */
|
|
933
|
+
return /* @__PURE__ */ React26.createElement(StyleControl, { bind: "color" }, /* @__PURE__ */ React26.createElement(import_ui20.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(import_ui20.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React26.createElement(StyleControl.Label, null, (0, import_i18n7.__)("Text Color", "elementor"))), /* @__PURE__ */ React26.createElement(import_ui20.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React26.createElement(ColorControl, null))));
|
|
781
934
|
};
|
|
782
935
|
|
|
783
936
|
// src/components/style-sections/typography-section/letter-spacing-control.tsx
|
|
784
|
-
var
|
|
785
|
-
var
|
|
937
|
+
var React27 = __toESM(require("react"));
|
|
938
|
+
var import_i18n8 = require("@wordpress/i18n");
|
|
939
|
+
var import_ui21 = require("@elementor/ui");
|
|
786
940
|
var LetterSpacingControl = () => {
|
|
787
|
-
return /* @__PURE__ */
|
|
941
|
+
return /* @__PURE__ */ React27.createElement(StyleControl, { bind: "letter-spacing" }, /* @__PURE__ */ React27.createElement(import_ui21.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React27.createElement(import_ui21.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React27.createElement(StyleControl.Label, null, (0, import_i18n8.__)("Letter Spacing", "elementor"))), /* @__PURE__ */ React27.createElement(import_ui21.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React27.createElement(SizeControl, null))));
|
|
788
942
|
};
|
|
789
943
|
|
|
790
944
|
// src/components/style-sections/typography-section/word-spacing-control.tsx
|
|
791
|
-
var
|
|
792
|
-
var
|
|
945
|
+
var React28 = __toESM(require("react"));
|
|
946
|
+
var import_i18n9 = require("@wordpress/i18n");
|
|
947
|
+
var import_ui22 = require("@elementor/ui");
|
|
793
948
|
var WordSpacingControl = () => {
|
|
794
|
-
return /* @__PURE__ */
|
|
949
|
+
return /* @__PURE__ */ React28.createElement(StyleControl, { bind: "word-spacing" }, /* @__PURE__ */ React28.createElement(import_ui22.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React28.createElement(import_ui22.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React28.createElement(StyleControl.Label, null, (0, import_i18n9.__)("Word Spacing", "elementor"))), /* @__PURE__ */ React28.createElement(import_ui22.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React28.createElement(SizeControl, null))));
|
|
795
950
|
};
|
|
796
951
|
|
|
797
952
|
// src/components/collapsible-content.tsx
|
|
798
|
-
var
|
|
799
|
-
var
|
|
800
|
-
var
|
|
801
|
-
var
|
|
802
|
-
var
|
|
953
|
+
var React29 = __toESM(require("react"));
|
|
954
|
+
var import_react9 = require("react");
|
|
955
|
+
var import_icons4 = require("@elementor/icons");
|
|
956
|
+
var import_ui23 = require("@elementor/ui");
|
|
957
|
+
var import_i18n10 = require("@wordpress/i18n");
|
|
803
958
|
var CollapsibleContent = ({ children, defaultOpen = false }) => {
|
|
804
|
-
const [open, setOpen] = (0,
|
|
959
|
+
const [open, setOpen] = (0, import_react9.useState)(defaultOpen);
|
|
805
960
|
const handleToggle = () => {
|
|
806
961
|
setOpen((prevOpen) => !prevOpen);
|
|
807
962
|
};
|
|
808
|
-
return /* @__PURE__ */
|
|
809
|
-
|
|
963
|
+
return /* @__PURE__ */ React29.createElement(import_ui23.Stack, { sx: { py: 0.5 } }, /* @__PURE__ */ React29.createElement(
|
|
964
|
+
import_ui23.Button,
|
|
810
965
|
{
|
|
811
966
|
fullWidth: true,
|
|
812
967
|
size: "small",
|
|
813
968
|
color: "secondary",
|
|
814
969
|
variant: "outlined",
|
|
815
970
|
onClick: handleToggle,
|
|
816
|
-
endIcon: /* @__PURE__ */
|
|
971
|
+
endIcon: /* @__PURE__ */ React29.createElement(ChevronIcon, { open })
|
|
817
972
|
},
|
|
818
|
-
open ? (0,
|
|
819
|
-
), /* @__PURE__ */
|
|
973
|
+
open ? (0, import_i18n10.__)("Show less", "elementor") : (0, import_i18n10.__)("Show more", "elementor")
|
|
974
|
+
), /* @__PURE__ */ React29.createElement(import_ui23.Collapse, { in: open, timeout: "auto" }, children));
|
|
820
975
|
};
|
|
821
|
-
var ChevronIcon = (0,
|
|
976
|
+
var ChevronIcon = (0, import_ui23.styled)(import_icons4.ChevronDownIcon, {
|
|
822
977
|
shouldForwardProp: (prop) => prop !== "open"
|
|
823
978
|
})(({ theme, open }) => ({
|
|
824
979
|
transform: open ? "rotate(180deg)" : "rotate(0)",
|
|
@@ -828,16 +983,18 @@ var ChevronIcon = (0, import_ui14.styled)(import_icons3.ChevronDownIcon, {
|
|
|
828
983
|
}));
|
|
829
984
|
|
|
830
985
|
// src/components/style-sections/typography-section/transform-control.tsx
|
|
831
|
-
var
|
|
832
|
-
var
|
|
986
|
+
var React32 = __toESM(require("react"));
|
|
987
|
+
var import_i18n11 = require("@wordpress/i18n");
|
|
988
|
+
var import_ui25 = require("@elementor/ui");
|
|
989
|
+
var import_icons5 = require("@elementor/icons");
|
|
833
990
|
|
|
834
991
|
// src/controls/control-types/toggle-control.tsx
|
|
835
|
-
var
|
|
992
|
+
var React31 = __toESM(require("react"));
|
|
836
993
|
|
|
837
994
|
// src/controls/components/control-toggle-button-group.tsx
|
|
838
|
-
var
|
|
839
|
-
var
|
|
840
|
-
var StyledToggleButtonGroup = (0,
|
|
995
|
+
var React30 = __toESM(require("react"));
|
|
996
|
+
var import_ui24 = require("@elementor/ui");
|
|
997
|
+
var StyledToggleButtonGroup = (0, import_ui24.styled)(import_ui24.ToggleButtonGroup)`
|
|
841
998
|
${({ justify }) => `justify-content: ${justify};`}
|
|
842
999
|
`;
|
|
843
1000
|
var ControlToggleButtonGroup = ({
|
|
@@ -851,92 +1008,112 @@ var ControlToggleButtonGroup = ({
|
|
|
851
1008
|
const handleChange = (_, newValue) => {
|
|
852
1009
|
onChange(newValue);
|
|
853
1010
|
};
|
|
854
|
-
return /* @__PURE__ */
|
|
1011
|
+
return /* @__PURE__ */ React30.createElement(StyledToggleButtonGroup, { justify, value, onChange: handleChange, exclusive }, items.map(({ label, value: buttonValue, icon: Icon }) => /* @__PURE__ */ React30.createElement(import_ui24.ToggleButton, { key: buttonValue, value: buttonValue, "aria-label": label, size }, /* @__PURE__ */ React30.createElement(Icon, { fontSize: size }))));
|
|
855
1012
|
};
|
|
856
1013
|
|
|
857
1014
|
// src/controls/control-types/toggle-control.tsx
|
|
858
|
-
var ToggleControl = ({ options:
|
|
1015
|
+
var ToggleControl = createControl(({ options: options4 }) => {
|
|
859
1016
|
const { value, setValue } = useControl();
|
|
860
1017
|
const handleToggle = (option) => {
|
|
861
1018
|
setValue(option || void 0);
|
|
862
1019
|
};
|
|
863
|
-
return /* @__PURE__ */
|
|
1020
|
+
return /* @__PURE__ */ React31.createElement(
|
|
864
1021
|
ControlToggleButtonGroup,
|
|
865
1022
|
{
|
|
866
|
-
items:
|
|
1023
|
+
items: options4,
|
|
867
1024
|
value: value || null,
|
|
868
1025
|
onChange: handleToggle,
|
|
869
1026
|
exclusive: true
|
|
870
1027
|
}
|
|
871
1028
|
);
|
|
872
|
-
};
|
|
1029
|
+
});
|
|
873
1030
|
|
|
874
1031
|
// src/components/style-sections/typography-section/transform-control.tsx
|
|
875
|
-
var import_icons4 = require("@elementor/icons");
|
|
876
1032
|
var options = [
|
|
877
|
-
{ value: "capitalize", label: (0,
|
|
878
|
-
{ value: "uppercase", label: (0,
|
|
879
|
-
{ value: "lowercase", label: (0,
|
|
1033
|
+
{ value: "capitalize", label: (0, import_i18n11.__)("Capitalize", "elementor"), icon: import_icons5.LetterCaseIcon },
|
|
1034
|
+
{ value: "uppercase", label: (0, import_i18n11.__)("Uppercase", "elementor"), icon: import_icons5.LetterCaseUpperIcon },
|
|
1035
|
+
{ value: "lowercase", label: (0, import_i18n11.__)("Lowercase", "elementor"), icon: import_icons5.LetterCaseLowerIcon }
|
|
880
1036
|
];
|
|
881
|
-
var TransformControl = () => {
|
|
882
|
-
return /* @__PURE__ */ React27.createElement(ControlContainer, null, /* @__PURE__ */ React27.createElement(StyleControl.Label, null, (0, import_i18n10.__)("Transform", "elementor")), /* @__PURE__ */ React27.createElement(StyleControl, { bind: "text-transform" }, /* @__PURE__ */ React27.createElement(ToggleControl, { options })));
|
|
883
|
-
};
|
|
1037
|
+
var TransformControl = () => /* @__PURE__ */ React32.createElement(StyleControl, { bind: "text-transform" }, /* @__PURE__ */ React32.createElement(import_ui25.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React32.createElement(import_ui25.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React32.createElement(StyleControl.Label, null, (0, import_i18n11.__)("Transform", "elementor"))), /* @__PURE__ */ React32.createElement(import_ui25.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React32.createElement(ToggleControl, { options }))));
|
|
884
1038
|
|
|
885
1039
|
// src/components/style-sections/typography-section/text-alignment-control.tsx
|
|
886
|
-
var
|
|
887
|
-
var
|
|
888
|
-
var
|
|
1040
|
+
var React33 = __toESM(require("react"));
|
|
1041
|
+
var import_i18n12 = require("@wordpress/i18n");
|
|
1042
|
+
var import_ui26 = require("@elementor/ui");
|
|
1043
|
+
var import_icons6 = require("@elementor/icons");
|
|
889
1044
|
var options2 = [
|
|
890
1045
|
{
|
|
891
1046
|
value: "left",
|
|
892
|
-
label: (0,
|
|
893
|
-
icon:
|
|
1047
|
+
label: (0, import_i18n12.__)("Left", "elementor"),
|
|
1048
|
+
icon: import_icons6.AlignLeftIcon
|
|
894
1049
|
},
|
|
895
1050
|
{
|
|
896
1051
|
value: "center",
|
|
897
|
-
label: (0,
|
|
898
|
-
icon:
|
|
1052
|
+
label: (0, import_i18n12.__)("Center", "elementor"),
|
|
1053
|
+
icon: import_icons6.AlignCenterIcon
|
|
899
1054
|
},
|
|
900
1055
|
{
|
|
901
1056
|
value: "right",
|
|
902
|
-
label: (0,
|
|
903
|
-
icon:
|
|
1057
|
+
label: (0, import_i18n12.__)("Right", "elementor"),
|
|
1058
|
+
icon: import_icons6.AlignRightIcon
|
|
904
1059
|
},
|
|
905
1060
|
{
|
|
906
1061
|
value: "justify",
|
|
907
|
-
label: (0,
|
|
908
|
-
icon:
|
|
1062
|
+
label: (0, import_i18n12.__)("Justify", "elementor"),
|
|
1063
|
+
icon: import_icons6.AlignJustifiedIcon
|
|
909
1064
|
}
|
|
910
1065
|
];
|
|
911
1066
|
var TextAlignmentControl = () => {
|
|
912
|
-
return /* @__PURE__ */
|
|
1067
|
+
return /* @__PURE__ */ React33.createElement(StyleControl, { bind: "text-align" }, /* @__PURE__ */ React33.createElement(import_ui26.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React33.createElement(import_ui26.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(StyleControl.Label, null, (0, import_i18n12.__)("Alignment", "elementor"))), /* @__PURE__ */ React33.createElement(import_ui26.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React33.createElement(ToggleControl, { options: options2 }))));
|
|
1068
|
+
};
|
|
1069
|
+
|
|
1070
|
+
// src/components/style-sections/typography-section/text-direction-control.tsx
|
|
1071
|
+
var React34 = __toESM(require("react"));
|
|
1072
|
+
var import_i18n13 = require("@wordpress/i18n");
|
|
1073
|
+
var import_ui27 = require("@elementor/ui");
|
|
1074
|
+
var import_icons7 = require("@elementor/icons");
|
|
1075
|
+
var options3 = [
|
|
1076
|
+
{
|
|
1077
|
+
value: "ltr",
|
|
1078
|
+
label: (0, import_i18n13.__)("Left to Right", "elementor"),
|
|
1079
|
+
icon: import_icons7.TextDirectionLtrIcon
|
|
1080
|
+
},
|
|
1081
|
+
{
|
|
1082
|
+
value: "rtl",
|
|
1083
|
+
label: (0, import_i18n13.__)("Right to Left", "elementor"),
|
|
1084
|
+
icon: import_icons7.TextDirectionRtlIcon
|
|
1085
|
+
}
|
|
1086
|
+
];
|
|
1087
|
+
var TextDirectionControl = () => {
|
|
1088
|
+
return /* @__PURE__ */ React34.createElement(StyleControl, { bind: "direction" }, /* @__PURE__ */ React34.createElement(import_ui27.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React34.createElement(import_ui27.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(StyleControl.Label, null, (0, import_i18n13.__)("Direction", "elementor"))), /* @__PURE__ */ React34.createElement(import_ui27.Grid, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React34.createElement(ToggleControl, { options: options3 }))));
|
|
913
1089
|
};
|
|
914
1090
|
|
|
915
1091
|
// src/components/style-sections/typography-section/typography-section.tsx
|
|
916
1092
|
var TypographySection = () => {
|
|
917
|
-
return /* @__PURE__ */
|
|
1093
|
+
return /* @__PURE__ */ React35.createElement(AccordionSection, { title: (0, import_i18n14.__)("Typography", "elementor") }, /* @__PURE__ */ React35.createElement(import_ui28.Stack, { gap: 1.5 }, /* @__PURE__ */ React35.createElement(FontWeightControl, null), /* @__PURE__ */ React35.createElement(FontSizeControl, null), /* @__PURE__ */ React35.createElement(import_ui28.Divider, null), /* @__PURE__ */ React35.createElement(TextColorControl, null), /* @__PURE__ */ React35.createElement(CollapsibleContent, null, /* @__PURE__ */ React35.createElement(import_ui28.Stack, { gap: 1.5, sx: { pt: 1.5 } }, /* @__PURE__ */ React35.createElement(LetterSpacingControl, null), /* @__PURE__ */ React35.createElement(WordSpacingControl, null), /* @__PURE__ */ React35.createElement(import_ui28.Divider, null), /* @__PURE__ */ React35.createElement(TextAlignmentControl, null), /* @__PURE__ */ React35.createElement(TextStyleControl, null), /* @__PURE__ */ React35.createElement(TransformControl, null), /* @__PURE__ */ React35.createElement(TextDirectionControl, null)))));
|
|
918
1094
|
};
|
|
919
1095
|
|
|
920
1096
|
// src/components/style-sections/position-section/position-section.tsx
|
|
921
|
-
var
|
|
922
|
-
var
|
|
1097
|
+
var React38 = __toESM(require("react"));
|
|
1098
|
+
var import_ui31 = require("@elementor/ui");
|
|
923
1099
|
|
|
924
1100
|
// src/components/style-sections/position-section/z-index-control.tsx
|
|
925
|
-
var
|
|
926
|
-
var
|
|
1101
|
+
var React37 = __toESM(require("react"));
|
|
1102
|
+
var import_i18n15 = require("@wordpress/i18n");
|
|
1103
|
+
var import_ui30 = require("@elementor/ui");
|
|
927
1104
|
|
|
928
1105
|
// src/controls/control-types/number-control.tsx
|
|
929
|
-
var
|
|
930
|
-
var
|
|
1106
|
+
var React36 = __toESM(require("react"));
|
|
1107
|
+
var import_ui29 = require("@elementor/ui");
|
|
931
1108
|
var isEmptyOrNaN = (value) => value === void 0 || value === "" || Number.isNaN(Number(value));
|
|
932
|
-
var NumberControl = ({ placeholder }) => {
|
|
1109
|
+
var NumberControl = createControl(({ placeholder }) => {
|
|
933
1110
|
const { value, setValue } = useControl();
|
|
934
1111
|
const handleChange = (event) => {
|
|
935
1112
|
const eventValue = event.target.value;
|
|
936
1113
|
setValue(isEmptyOrNaN(eventValue) ? void 0 : Number(eventValue));
|
|
937
1114
|
};
|
|
938
|
-
return /* @__PURE__ */
|
|
939
|
-
|
|
1115
|
+
return /* @__PURE__ */ React36.createElement(ControlActions, null, /* @__PURE__ */ React36.createElement(
|
|
1116
|
+
import_ui29.TextField,
|
|
940
1117
|
{
|
|
941
1118
|
size: "tiny",
|
|
942
1119
|
type: "number",
|
|
@@ -944,33 +1121,33 @@ var NumberControl = ({ placeholder }) => {
|
|
|
944
1121
|
onChange: handleChange,
|
|
945
1122
|
placeholder
|
|
946
1123
|
}
|
|
947
|
-
);
|
|
948
|
-
};
|
|
1124
|
+
));
|
|
1125
|
+
});
|
|
949
1126
|
|
|
950
1127
|
// src/components/style-sections/position-section/z-index-control.tsx
|
|
951
1128
|
var ZIndexControl = () => {
|
|
952
|
-
return /* @__PURE__ */
|
|
1129
|
+
return /* @__PURE__ */ React37.createElement(StyleControl, { bind: "z-index" }, /* @__PURE__ */ React37.createElement(import_ui30.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(StyleControl.Label, null, (0, import_i18n15.__)("Z-Index", "elementor"))), /* @__PURE__ */ React37.createElement(import_ui30.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React37.createElement(NumberControl, null))));
|
|
953
1130
|
};
|
|
954
1131
|
|
|
955
1132
|
// src/components/style-sections/position-section/position-section.tsx
|
|
956
|
-
var
|
|
1133
|
+
var import_i18n16 = require("@wordpress/i18n");
|
|
957
1134
|
var PositionSection = () => {
|
|
958
|
-
return /* @__PURE__ */
|
|
1135
|
+
return /* @__PURE__ */ React38.createElement(AccordionSection, { title: (0, import_i18n16.__)("Position", "elementor") }, /* @__PURE__ */ React38.createElement(import_ui31.Stack, { gap: 1.5 }, /* @__PURE__ */ React38.createElement(ZIndexControl, null)));
|
|
959
1136
|
};
|
|
960
1137
|
|
|
961
1138
|
// src/components/style-sections/spacing-section/spacing-section.tsx
|
|
962
|
-
var
|
|
963
|
-
var
|
|
964
|
-
var
|
|
1139
|
+
var React40 = __toESM(require("react"));
|
|
1140
|
+
var import_ui33 = require("@elementor/ui");
|
|
1141
|
+
var import_i18n18 = require("@wordpress/i18n");
|
|
965
1142
|
|
|
966
1143
|
// src/components/style-sections/spacing-section/linked-dimensions-control.tsx
|
|
967
|
-
var
|
|
968
|
-
var
|
|
969
|
-
var
|
|
970
|
-
var
|
|
1144
|
+
var React39 = __toESM(require("react"));
|
|
1145
|
+
var import_i18n17 = require("@wordpress/i18n");
|
|
1146
|
+
var import_ui32 = require("@elementor/ui");
|
|
1147
|
+
var import_icons8 = require("@elementor/icons");
|
|
971
1148
|
var LinkedDimensionsControl = ({ label }) => {
|
|
972
1149
|
const { value, setValue } = useControl();
|
|
973
|
-
const { top, right, bottom, left, isLinked =
|
|
1150
|
+
const { top, right, bottom, left, isLinked = true } = value?.value || {};
|
|
974
1151
|
const setLinkedValue = (position, newValue) => {
|
|
975
1152
|
const updatedValue = {
|
|
976
1153
|
isLinked,
|
|
@@ -998,58 +1175,58 @@ var LinkedDimensionsControl = ({ label }) => {
|
|
|
998
1175
|
value: updatedValue
|
|
999
1176
|
});
|
|
1000
1177
|
};
|
|
1001
|
-
const LinkedIcon = isLinked ?
|
|
1002
|
-
return /* @__PURE__ */
|
|
1003
|
-
|
|
1178
|
+
const LinkedIcon = isLinked ? import_icons8.LinkIcon : import_icons8.DetachIcon;
|
|
1179
|
+
return /* @__PURE__ */ React39.createElement(React39.Fragment, null, /* @__PURE__ */ React39.createElement(import_ui32.Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ React39.createElement(ControlLabel, null, label), /* @__PURE__ */ React39.createElement(
|
|
1180
|
+
import_ui32.ToggleButton,
|
|
1004
1181
|
{
|
|
1005
|
-
"aria-label": (0,
|
|
1182
|
+
"aria-label": (0, import_i18n17.__)("Link Inputs", "elementor"),
|
|
1006
1183
|
size: "tiny",
|
|
1007
1184
|
value: "check",
|
|
1008
1185
|
selected: isLinked,
|
|
1009
1186
|
sx: { marginLeft: "auto" },
|
|
1010
1187
|
onChange: toggleLinked
|
|
1011
1188
|
},
|
|
1012
|
-
/* @__PURE__ */
|
|
1013
|
-
)), /* @__PURE__ */
|
|
1189
|
+
/* @__PURE__ */ React39.createElement(LinkedIcon, { fontSize: "tiny" })
|
|
1190
|
+
)), /* @__PURE__ */ React39.createElement(import_ui32.Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ React39.createElement(import_ui32.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(ControlLabel, null, (0, import_i18n17.__)("Top", "elementor"))), /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(
|
|
1014
1191
|
Control4,
|
|
1015
1192
|
{
|
|
1016
1193
|
bind: "top",
|
|
1017
1194
|
value: top,
|
|
1018
1195
|
setValue: setLinkedValue,
|
|
1019
|
-
startIcon: /* @__PURE__ */
|
|
1196
|
+
startIcon: /* @__PURE__ */ React39.createElement(import_icons8.SideTopIcon, { fontSize: "tiny" })
|
|
1020
1197
|
}
|
|
1021
|
-
)), /* @__PURE__ */
|
|
1198
|
+
))), /* @__PURE__ */ React39.createElement(import_ui32.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(ControlLabel, null, (0, import_i18n17.__)("Right", "elementor"))), /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(
|
|
1022
1199
|
Control4,
|
|
1023
1200
|
{
|
|
1024
1201
|
bind: "right",
|
|
1025
1202
|
value: right,
|
|
1026
1203
|
setValue: setLinkedValue,
|
|
1027
|
-
startIcon: /* @__PURE__ */
|
|
1204
|
+
startIcon: /* @__PURE__ */ React39.createElement(import_icons8.SideRightIcon, { fontSize: "tiny" })
|
|
1028
1205
|
}
|
|
1029
|
-
))), /* @__PURE__ */
|
|
1206
|
+
)))), /* @__PURE__ */ React39.createElement(import_ui32.Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ React39.createElement(import_ui32.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(ControlLabel, null, (0, import_i18n17.__)("Bottom", "elementor"))), /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(
|
|
1030
1207
|
Control4,
|
|
1031
1208
|
{
|
|
1032
1209
|
bind: "bottom",
|
|
1033
1210
|
value: bottom,
|
|
1034
1211
|
setValue: setLinkedValue,
|
|
1035
|
-
startIcon: /* @__PURE__ */
|
|
1212
|
+
startIcon: /* @__PURE__ */ React39.createElement(import_icons8.SideBottomIcon, { fontSize: "tiny" })
|
|
1036
1213
|
}
|
|
1037
|
-
)), /* @__PURE__ */
|
|
1214
|
+
))), /* @__PURE__ */ React39.createElement(import_ui32.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(ControlLabel, null, (0, import_i18n17.__)("Left", "elementor"))), /* @__PURE__ */ React39.createElement(import_ui32.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React39.createElement(
|
|
1038
1215
|
Control4,
|
|
1039
1216
|
{
|
|
1040
1217
|
bind: "left",
|
|
1041
1218
|
value: left,
|
|
1042
1219
|
setValue: setLinkedValue,
|
|
1043
|
-
startIcon: /* @__PURE__ */
|
|
1220
|
+
startIcon: /* @__PURE__ */ React39.createElement(import_icons8.SideLeftIcon, { fontSize: "tiny" })
|
|
1044
1221
|
}
|
|
1045
|
-
))));
|
|
1222
|
+
)))));
|
|
1046
1223
|
};
|
|
1047
1224
|
var Control4 = ({
|
|
1048
1225
|
bind,
|
|
1049
1226
|
startIcon,
|
|
1050
1227
|
value,
|
|
1051
1228
|
setValue
|
|
1052
|
-
}) => /* @__PURE__ */
|
|
1229
|
+
}) => /* @__PURE__ */ React39.createElement(
|
|
1053
1230
|
ControlContext.Provider,
|
|
1054
1231
|
{
|
|
1055
1232
|
value: {
|
|
@@ -1058,12 +1235,332 @@ var Control4 = ({
|
|
|
1058
1235
|
value
|
|
1059
1236
|
}
|
|
1060
1237
|
},
|
|
1061
|
-
/* @__PURE__ */
|
|
1238
|
+
/* @__PURE__ */ React39.createElement(SizeControl, { startIcon })
|
|
1062
1239
|
);
|
|
1063
1240
|
|
|
1064
1241
|
// src/components/style-sections/spacing-section/spacing-section.tsx
|
|
1065
1242
|
var SpacingSection = () => {
|
|
1066
|
-
return /* @__PURE__ */
|
|
1243
|
+
return /* @__PURE__ */ React40.createElement(AccordionSection, { title: (0, import_i18n18.__)("Spacing", "elementor") }, /* @__PURE__ */ React40.createElement(import_ui33.Stack, { gap: 1.5 }, /* @__PURE__ */ React40.createElement(StyleControl, { bind: "padding" }, /* @__PURE__ */ React40.createElement(LinkedDimensionsControl, { label: (0, import_i18n18.__)("Padding", "elementor") })), /* @__PURE__ */ React40.createElement(import_ui33.Divider, null), /* @__PURE__ */ React40.createElement(StyleControl, { bind: "margin" }, /* @__PURE__ */ React40.createElement(LinkedDimensionsControl, { label: (0, import_i18n18.__)("Margin", "elementor") }))));
|
|
1244
|
+
};
|
|
1245
|
+
|
|
1246
|
+
// src/components/style-sections/effects-section/effects-section.tsx
|
|
1247
|
+
var React43 = __toESM(require("react"));
|
|
1248
|
+
var import_i18n21 = require("@wordpress/i18n");
|
|
1249
|
+
var import_ui36 = require("@elementor/ui");
|
|
1250
|
+
|
|
1251
|
+
// src/components/style-sections/effects-section/box-shadow-repeater.tsx
|
|
1252
|
+
var React42 = __toESM(require("react"));
|
|
1253
|
+
var import_i18n20 = require("@wordpress/i18n");
|
|
1254
|
+
var import_ui35 = require("@elementor/ui");
|
|
1255
|
+
|
|
1256
|
+
// src/controls/components/repeater.tsx
|
|
1257
|
+
var React41 = __toESM(require("react"));
|
|
1258
|
+
var import_react10 = require("react");
|
|
1259
|
+
var import_i18n19 = require("@wordpress/i18n");
|
|
1260
|
+
var import_icons9 = require("@elementor/icons");
|
|
1261
|
+
var import_ui34 = require("@elementor/ui");
|
|
1262
|
+
var SIZE2 = "tiny";
|
|
1263
|
+
var Repeater = ({
|
|
1264
|
+
label,
|
|
1265
|
+
itemSettings,
|
|
1266
|
+
values: repeaterValues = [],
|
|
1267
|
+
setValues: setRepeaterValues
|
|
1268
|
+
}) => {
|
|
1269
|
+
const addRepeaterItem = () => {
|
|
1270
|
+
const newItem = structuredClone(itemSettings.initialValues);
|
|
1271
|
+
setRepeaterValues([...repeaterValues, newItem]);
|
|
1272
|
+
};
|
|
1273
|
+
const duplicateRepeaterItem = (index) => {
|
|
1274
|
+
setRepeaterValues([
|
|
1275
|
+
...repeaterValues.slice(0, index),
|
|
1276
|
+
structuredClone(repeaterValues[index]),
|
|
1277
|
+
...repeaterValues.slice(index)
|
|
1278
|
+
]);
|
|
1279
|
+
};
|
|
1280
|
+
const removeRepeaterItem = (index) => {
|
|
1281
|
+
setRepeaterValues(repeaterValues.filter((_, i) => i !== index));
|
|
1282
|
+
};
|
|
1283
|
+
const toggleDisableRepeaterItem = (index) => {
|
|
1284
|
+
setRepeaterValues(
|
|
1285
|
+
repeaterValues.map((value, i) => {
|
|
1286
|
+
if (i === index) {
|
|
1287
|
+
const { disabled, ...rest } = value;
|
|
1288
|
+
return { ...rest, ...disabled ? {} : { disabled: true } };
|
|
1289
|
+
}
|
|
1290
|
+
return value;
|
|
1291
|
+
})
|
|
1292
|
+
);
|
|
1293
|
+
};
|
|
1294
|
+
return /* @__PURE__ */ React41.createElement(import_ui34.Stack, null, /* @__PURE__ */ React41.createElement(import_ui34.Stack, { direction: "row", justifyContent: "space-between", sx: { py: 0.5 } }, /* @__PURE__ */ React41.createElement(import_ui34.Typography, { component: "label", variant: "caption", color: "text.secondary" }, label), /* @__PURE__ */ React41.createElement(import_ui34.IconButton, { size: SIZE2, onClick: addRepeaterItem, "aria-label": (0, import_i18n19.__)("Add item", "elementor") }, /* @__PURE__ */ React41.createElement(import_icons9.PlusIcon, { fontSize: SIZE2 }))), /* @__PURE__ */ React41.createElement(import_ui34.Stack, { gap: 1 }, repeaterValues.map((value, index) => /* @__PURE__ */ React41.createElement(
|
|
1295
|
+
RepeaterItem,
|
|
1296
|
+
{
|
|
1297
|
+
key: index,
|
|
1298
|
+
disabled: value.disabled,
|
|
1299
|
+
label: /* @__PURE__ */ React41.createElement(itemSettings.Label, { value }),
|
|
1300
|
+
startIcon: /* @__PURE__ */ React41.createElement(itemSettings.Icon, { value }),
|
|
1301
|
+
removeItem: () => removeRepeaterItem(index),
|
|
1302
|
+
duplicateItem: () => duplicateRepeaterItem(index),
|
|
1303
|
+
toggleDisableItem: () => toggleDisableRepeaterItem(index)
|
|
1304
|
+
},
|
|
1305
|
+
(props) => /* @__PURE__ */ React41.createElement(
|
|
1306
|
+
itemSettings.Content,
|
|
1307
|
+
{
|
|
1308
|
+
...props,
|
|
1309
|
+
value,
|
|
1310
|
+
setValue: (newValue) => setRepeaterValues(
|
|
1311
|
+
repeaterValues.map((item, i) => i === index ? newValue : item)
|
|
1312
|
+
)
|
|
1313
|
+
}
|
|
1314
|
+
)
|
|
1315
|
+
))));
|
|
1316
|
+
};
|
|
1317
|
+
var RepeaterItem = ({
|
|
1318
|
+
label,
|
|
1319
|
+
disabled,
|
|
1320
|
+
startIcon,
|
|
1321
|
+
children,
|
|
1322
|
+
removeItem,
|
|
1323
|
+
duplicateItem,
|
|
1324
|
+
toggleDisableItem
|
|
1325
|
+
}) => {
|
|
1326
|
+
const popupId = (0, import_react10.useId)();
|
|
1327
|
+
const tagRef = (0, import_react10.useRef)(null);
|
|
1328
|
+
const [anchorEl, setAnchorEl] = (0, import_react10.useState)(null);
|
|
1329
|
+
const popoverState = (0, import_ui34.usePopupState)({ popupId, variant: "popover" });
|
|
1330
|
+
const popoverProps = (0, import_ui34.bindPopover)(popoverState);
|
|
1331
|
+
return /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.createElement(
|
|
1332
|
+
import_ui34.UnstableTag,
|
|
1333
|
+
{
|
|
1334
|
+
ref: tagRef,
|
|
1335
|
+
label,
|
|
1336
|
+
showActionsOnHover: true,
|
|
1337
|
+
variant: "outlined",
|
|
1338
|
+
"aria-label": (0, import_i18n19.__)("Open item", "elementor"),
|
|
1339
|
+
...(0, import_ui34.bindTrigger)(popoverState),
|
|
1340
|
+
startIcon,
|
|
1341
|
+
actions: /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.createElement(
|
|
1342
|
+
import_ui34.IconButton,
|
|
1343
|
+
{
|
|
1344
|
+
size: SIZE2,
|
|
1345
|
+
onClick: duplicateItem,
|
|
1346
|
+
"aria-label": (0, import_i18n19.__)("Duplicate item", "elementor")
|
|
1347
|
+
},
|
|
1348
|
+
/* @__PURE__ */ React41.createElement(import_icons9.CopyIcon, { fontSize: SIZE2 })
|
|
1349
|
+
), /* @__PURE__ */ React41.createElement(
|
|
1350
|
+
import_ui34.IconButton,
|
|
1351
|
+
{
|
|
1352
|
+
size: SIZE2,
|
|
1353
|
+
onClick: toggleDisableItem,
|
|
1354
|
+
"aria-label": disabled ? (0, import_i18n19.__)("Enable item", "elementor") : (0, import_i18n19.__)("Disable item", "elementor")
|
|
1355
|
+
},
|
|
1356
|
+
disabled ? /* @__PURE__ */ React41.createElement(import_icons9.EyeOffIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React41.createElement(import_icons9.EyeIcon, { fontSize: SIZE2 })
|
|
1357
|
+
), /* @__PURE__ */ React41.createElement(
|
|
1358
|
+
import_ui34.IconButton,
|
|
1359
|
+
{
|
|
1360
|
+
size: SIZE2,
|
|
1361
|
+
onClick: removeItem,
|
|
1362
|
+
"aria-label": (0, import_i18n19.__)("Remove item", "elementor")
|
|
1363
|
+
},
|
|
1364
|
+
/* @__PURE__ */ React41.createElement(import_icons9.XIcon, { fontSize: SIZE2 })
|
|
1365
|
+
))
|
|
1366
|
+
}
|
|
1367
|
+
), /* @__PURE__ */ React41.createElement(
|
|
1368
|
+
import_ui34.Popover,
|
|
1369
|
+
{
|
|
1370
|
+
disablePortal: true,
|
|
1371
|
+
slotProps: {
|
|
1372
|
+
paper: { ref: setAnchorEl, sx: { width: tagRef.current?.getBoundingClientRect().width } }
|
|
1373
|
+
},
|
|
1374
|
+
anchorOrigin: { vertical: "bottom", horizontal: "left" },
|
|
1375
|
+
...popoverProps
|
|
1376
|
+
},
|
|
1377
|
+
/* @__PURE__ */ React41.createElement(import_ui34.Box, { p: 2 }, children({ anchorEl }))
|
|
1378
|
+
));
|
|
1379
|
+
};
|
|
1380
|
+
|
|
1381
|
+
// src/components/style-sections/effects-section/box-shadow-repeater.tsx
|
|
1382
|
+
var BoxShadowRepeater = () => {
|
|
1383
|
+
const { value, setValue } = useControl();
|
|
1384
|
+
const boxShadowValues = value?.value;
|
|
1385
|
+
const setBoxShadow = (newValue) => {
|
|
1386
|
+
setValue({
|
|
1387
|
+
$$type: "box-shadow",
|
|
1388
|
+
value: newValue
|
|
1389
|
+
});
|
|
1390
|
+
};
|
|
1391
|
+
return /* @__PURE__ */ React42.createElement(
|
|
1392
|
+
Repeater,
|
|
1393
|
+
{
|
|
1394
|
+
values: boxShadowValues,
|
|
1395
|
+
setValues: setBoxShadow,
|
|
1396
|
+
label: (0, import_i18n20.__)("Box shadow", "elementor"),
|
|
1397
|
+
itemSettings: {
|
|
1398
|
+
Icon: ItemIcon,
|
|
1399
|
+
Label: ItemLabel,
|
|
1400
|
+
Content: ItemContent,
|
|
1401
|
+
initialValues: initialShadow
|
|
1402
|
+
}
|
|
1403
|
+
}
|
|
1404
|
+
);
|
|
1405
|
+
};
|
|
1406
|
+
var ItemIcon = ({ value }) => /* @__PURE__ */ React42.createElement(import_ui35.UnstableColorIndicator, { size: "inherit", component: "span", value: value.value.color.value });
|
|
1407
|
+
var ItemContent = ({
|
|
1408
|
+
anchorEl,
|
|
1409
|
+
value,
|
|
1410
|
+
setValue
|
|
1411
|
+
}) => {
|
|
1412
|
+
const setShadow = (newValue) => {
|
|
1413
|
+
setValue({
|
|
1414
|
+
$$type: "shadow",
|
|
1415
|
+
value: newValue
|
|
1416
|
+
});
|
|
1417
|
+
};
|
|
1418
|
+
return /* @__PURE__ */ React42.createElement(import_ui35.Stack, { gap: 1.5 }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { container: true, spacing: 1 }, /* @__PURE__ */ React42.createElement(
|
|
1419
|
+
Control5,
|
|
1420
|
+
{
|
|
1421
|
+
bind: "color",
|
|
1422
|
+
value: value.value.color,
|
|
1423
|
+
label: (0, import_i18n20.__)("Color", "elementor"),
|
|
1424
|
+
setValue: (v) => setShadow({ ...value.value, color: v })
|
|
1425
|
+
},
|
|
1426
|
+
/* @__PURE__ */ React42.createElement(
|
|
1427
|
+
ColorControl,
|
|
1428
|
+
{
|
|
1429
|
+
anchorEl,
|
|
1430
|
+
anchorOrigin: {
|
|
1431
|
+
vertical: "top",
|
|
1432
|
+
horizontal: "right"
|
|
1433
|
+
},
|
|
1434
|
+
transformOrigin: {
|
|
1435
|
+
vertical: "top",
|
|
1436
|
+
horizontal: -10
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
)
|
|
1440
|
+
), /* @__PURE__ */ React42.createElement(
|
|
1441
|
+
Control5,
|
|
1442
|
+
{
|
|
1443
|
+
bind: "position",
|
|
1444
|
+
value: value.value.position,
|
|
1445
|
+
label: (0, import_i18n20.__)("Position", "elementor"),
|
|
1446
|
+
setValue: (v) => setShadow({ ...value.value, position: v })
|
|
1447
|
+
},
|
|
1448
|
+
/* @__PURE__ */ React42.createElement(
|
|
1449
|
+
SelectControl,
|
|
1450
|
+
{
|
|
1451
|
+
options: [
|
|
1452
|
+
{ label: "Inset", value: "inset" },
|
|
1453
|
+
{ label: "Outset", value: "outset" }
|
|
1454
|
+
]
|
|
1455
|
+
}
|
|
1456
|
+
)
|
|
1457
|
+
)), /* @__PURE__ */ React42.createElement(import_ui35.Grid, { container: true, spacing: 1 }, /* @__PURE__ */ React42.createElement(
|
|
1458
|
+
Control5,
|
|
1459
|
+
{
|
|
1460
|
+
bind: "hOffset",
|
|
1461
|
+
label: (0, import_i18n20.__)("Horizontal", "elementor"),
|
|
1462
|
+
value: value.value.hOffset,
|
|
1463
|
+
setValue: (v) => setShadow({ ...value.value, hOffset: v })
|
|
1464
|
+
},
|
|
1465
|
+
/* @__PURE__ */ React42.createElement(SizeControl, null)
|
|
1466
|
+
), /* @__PURE__ */ React42.createElement(
|
|
1467
|
+
Control5,
|
|
1468
|
+
{
|
|
1469
|
+
label: (0, import_i18n20.__)("Vertical", "elementor"),
|
|
1470
|
+
bind: "vOffset",
|
|
1471
|
+
value: value.value.vOffset,
|
|
1472
|
+
setValue: (v) => setShadow({ ...value.value, vOffset: v })
|
|
1473
|
+
},
|
|
1474
|
+
/* @__PURE__ */ React42.createElement(SizeControl, null)
|
|
1475
|
+
)), /* @__PURE__ */ React42.createElement(import_ui35.Grid, { container: true, spacing: 1 }, /* @__PURE__ */ React42.createElement(
|
|
1476
|
+
Control5,
|
|
1477
|
+
{
|
|
1478
|
+
bind: "blur",
|
|
1479
|
+
value: value.value.blur,
|
|
1480
|
+
label: (0, import_i18n20.__)("Blur", "elementor"),
|
|
1481
|
+
setValue: (v) => setShadow({ ...value.value, blur: v })
|
|
1482
|
+
},
|
|
1483
|
+
/* @__PURE__ */ React42.createElement(SizeControl, null)
|
|
1484
|
+
), /* @__PURE__ */ React42.createElement(
|
|
1485
|
+
Control5,
|
|
1486
|
+
{
|
|
1487
|
+
bind: "spread",
|
|
1488
|
+
label: (0, import_i18n20.__)("Spread", "elementor"),
|
|
1489
|
+
value: value.value.spread,
|
|
1490
|
+
setValue: (v) => setShadow({ ...value.value, spread: v })
|
|
1491
|
+
},
|
|
1492
|
+
/* @__PURE__ */ React42.createElement(SizeControl, null)
|
|
1493
|
+
)));
|
|
1494
|
+
};
|
|
1495
|
+
var Control5 = ({
|
|
1496
|
+
value,
|
|
1497
|
+
setValue,
|
|
1498
|
+
label,
|
|
1499
|
+
bind,
|
|
1500
|
+
children
|
|
1501
|
+
}) => /* @__PURE__ */ React42.createElement(ControlContext.Provider, { value: { value, setValue, bind } }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 12 }, /* @__PURE__ */ React42.createElement(ControlLabel, null, label)), /* @__PURE__ */ React42.createElement(import_ui35.Grid, { item: true, xs: 12 }, children))));
|
|
1502
|
+
var ItemLabel = ({ value }) => {
|
|
1503
|
+
const { position, hOffset, vOffset, blur, spread } = value.value;
|
|
1504
|
+
const { size: hOffsetSize, unit: hOffsetUnit } = hOffset.value;
|
|
1505
|
+
const { size: vOffsetSize, unit: vOffsetUnit } = vOffset.value;
|
|
1506
|
+
const { size: blurSize, unit: blurUnit } = blur.value;
|
|
1507
|
+
const { size: spreadSize, unit: spreadUnit } = spread.value;
|
|
1508
|
+
const sizes = [
|
|
1509
|
+
hOffsetSize + hOffsetUnit,
|
|
1510
|
+
vOffsetSize + vOffsetUnit,
|
|
1511
|
+
blurSize + blurUnit,
|
|
1512
|
+
spreadSize + spreadUnit
|
|
1513
|
+
].join(" ");
|
|
1514
|
+
return /* @__PURE__ */ React42.createElement("span", { style: { textTransform: "capitalize" } }, position, ": ", sizes);
|
|
1515
|
+
};
|
|
1516
|
+
var initialShadow = {
|
|
1517
|
+
$$type: "shadow",
|
|
1518
|
+
value: {
|
|
1519
|
+
hOffset: {
|
|
1520
|
+
$$type: "size",
|
|
1521
|
+
value: { unit: "px", size: 0 }
|
|
1522
|
+
},
|
|
1523
|
+
vOffset: {
|
|
1524
|
+
$$type: "size",
|
|
1525
|
+
value: { unit: "px", size: 0 }
|
|
1526
|
+
},
|
|
1527
|
+
blur: {
|
|
1528
|
+
$$type: "size",
|
|
1529
|
+
value: { unit: "px", size: 0 }
|
|
1530
|
+
},
|
|
1531
|
+
spread: {
|
|
1532
|
+
$$type: "size",
|
|
1533
|
+
value: { unit: "px", size: 0 }
|
|
1534
|
+
},
|
|
1535
|
+
color: {
|
|
1536
|
+
$$type: "color",
|
|
1537
|
+
value: "rgba(0, 0, 0, 0)"
|
|
1538
|
+
},
|
|
1539
|
+
position: "inset"
|
|
1540
|
+
}
|
|
1541
|
+
};
|
|
1542
|
+
|
|
1543
|
+
// src/components/style-sections/effects-section/effects-section.tsx
|
|
1544
|
+
var EffectsSection = () => {
|
|
1545
|
+
return /* @__PURE__ */ React43.createElement(AccordionSection, { title: (0, import_i18n21.__)("Effects", "elementor") }, /* @__PURE__ */ React43.createElement(import_ui36.Stack, { gap: 1.5 }, /* @__PURE__ */ React43.createElement(StyleControl, { bind: "box-shadow" }, /* @__PURE__ */ React43.createElement(BoxShadowRepeater, null))));
|
|
1546
|
+
};
|
|
1547
|
+
|
|
1548
|
+
// src/components/style-sections/background-section/background-section.tsx
|
|
1549
|
+
var React45 = __toESM(require("react"));
|
|
1550
|
+
var import_i18n23 = require("@wordpress/i18n");
|
|
1551
|
+
var import_ui38 = require("@elementor/ui");
|
|
1552
|
+
|
|
1553
|
+
// src/components/style-sections/background-section/background-color-control.tsx
|
|
1554
|
+
var React44 = __toESM(require("react"));
|
|
1555
|
+
var import_i18n22 = require("@wordpress/i18n");
|
|
1556
|
+
var import_ui37 = require("@elementor/ui");
|
|
1557
|
+
var BackgroundColorControl = () => {
|
|
1558
|
+
return /* @__PURE__ */ React44.createElement(StyleControl, { bind: "background-color" }, /* @__PURE__ */ React44.createElement(import_ui37.Grid, { container: true, spacing: 1, alignItems: "center" }, /* @__PURE__ */ React44.createElement(import_ui37.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(StyleControl.Label, null, (0, import_i18n22.__)("Color", "elementor"))), /* @__PURE__ */ React44.createElement(import_ui37.Grid, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(ColorControl, null))));
|
|
1559
|
+
};
|
|
1560
|
+
|
|
1561
|
+
// src/components/style-sections/background-section/background-section.tsx
|
|
1562
|
+
var BackgroundSection = () => {
|
|
1563
|
+
return /* @__PURE__ */ React45.createElement(AccordionSection, { title: (0, import_i18n23.__)("Background", "elementor") }, /* @__PURE__ */ React45.createElement(import_ui38.Stack, { gap: 1.5 }, /* @__PURE__ */ React45.createElement(BackgroundColorControl, null)));
|
|
1067
1564
|
};
|
|
1068
1565
|
|
|
1069
1566
|
// src/components/style-tab.tsx
|
|
@@ -1071,28 +1568,40 @@ var CLASSES_PROP_KEY = "classes";
|
|
|
1071
1568
|
var StyleTab = () => {
|
|
1072
1569
|
const styleDefinition = useStyleDefinition();
|
|
1073
1570
|
const classesProp = useClassesProp();
|
|
1074
|
-
return /* @__PURE__ */
|
|
1571
|
+
return /* @__PURE__ */ React46.createElement(StyleContext, { selectedStyleDef: styleDefinition, selectedClassesProp: classesProp }, /* @__PURE__ */ React46.createElement(import_ui39.Stack, null, /* @__PURE__ */ React46.createElement(SizeSection, null), /* @__PURE__ */ React46.createElement(PositionSection, null), /* @__PURE__ */ React46.createElement(TypographySection, null), /* @__PURE__ */ React46.createElement(BackgroundSection, null), /* @__PURE__ */ React46.createElement(SpacingSection, null), /* @__PURE__ */ React46.createElement(EffectsSection, null)));
|
|
1075
1572
|
};
|
|
1076
1573
|
function useClassesProp() {
|
|
1077
|
-
const { elementType } =
|
|
1078
|
-
const prop = Object.entries(elementType.propsSchema).find(
|
|
1574
|
+
const { elementType } = useElement();
|
|
1575
|
+
const prop = Object.entries(elementType.propsSchema).find(
|
|
1576
|
+
([, propType]) => propType.kind === "array" && propType.key === CLASSES_PROP_KEY
|
|
1577
|
+
);
|
|
1079
1578
|
if (!prop) {
|
|
1080
1579
|
throw new Error("Element does not have a classes prop");
|
|
1081
1580
|
}
|
|
1082
1581
|
return prop[0];
|
|
1083
1582
|
}
|
|
1084
1583
|
function useStyleDefinition() {
|
|
1085
|
-
const { element } =
|
|
1584
|
+
const { element } = useElement();
|
|
1086
1585
|
const elementStyles = useElementStyles(element.id);
|
|
1087
1586
|
return Object.values(elementStyles || {})[0] ?? null;
|
|
1088
1587
|
}
|
|
1089
1588
|
|
|
1090
1589
|
// src/components/editing-panel-tabs.tsx
|
|
1091
1590
|
var EditingPanelTabs = () => {
|
|
1092
|
-
const { getTabProps, getTabPanelProps, getTabsProps } = (0,
|
|
1093
|
-
return /* @__PURE__ */
|
|
1591
|
+
const { getTabProps, getTabPanelProps, getTabsProps } = (0, import_ui40.useTabs)("settings");
|
|
1592
|
+
return /* @__PURE__ */ React47.createElement(import_ui40.Stack, { direction: "column", sx: { width: "100%" } }, /* @__PURE__ */ React47.createElement(import_ui40.Tabs, { variant: "fullWidth", indicatorColor: "secondary", textColor: "inherit", ...getTabsProps() }, /* @__PURE__ */ React47.createElement(import_ui40.Tab, { label: (0, import_i18n24.__)("General", "elementor"), ...getTabProps("settings") }), /* @__PURE__ */ React47.createElement(import_ui40.Tab, { label: (0, import_i18n24.__)("Style", "elementor"), ...getTabProps("style") })), /* @__PURE__ */ React47.createElement(import_ui40.TabPanel, { ...getTabPanelProps("settings"), disablePadding: true }, /* @__PURE__ */ React47.createElement(SettingsTab, null)), /* @__PURE__ */ React47.createElement(import_ui40.TabPanel, { ...getTabPanelProps("style"), disablePadding: true }, /* @__PURE__ */ React47.createElement(StyleTab, null)));
|
|
1094
1593
|
};
|
|
1095
1594
|
|
|
1595
|
+
// src/components/editing-panel.tsx
|
|
1596
|
+
var import_ui42 = require("@elementor/ui");
|
|
1597
|
+
|
|
1598
|
+
// src/components/editing-panel-error-fallback.tsx
|
|
1599
|
+
var React48 = __toESM(require("react"));
|
|
1600
|
+
var import_ui41 = require("@elementor/ui");
|
|
1601
|
+
function EditorPanelErrorFallback() {
|
|
1602
|
+
return /* @__PURE__ */ React48.createElement(import_ui41.Box, { role: "alert", sx: { minHeight: "100%", p: 2 } }, /* @__PURE__ */ React48.createElement(import_ui41.Alert, { severity: "error", sx: { mb: 2, maxWidth: 400, textAlign: "center" } }, /* @__PURE__ */ React48.createElement("strong", null, "Something went wrong")));
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1096
1605
|
// src/components/editing-panel.tsx
|
|
1097
1606
|
var EditingPanel = () => {
|
|
1098
1607
|
const elements = useSelectedElements();
|
|
@@ -1101,8 +1610,9 @@ var EditingPanel = () => {
|
|
|
1101
1610
|
if (elements.length !== 1 || !elementType) {
|
|
1102
1611
|
return null;
|
|
1103
1612
|
}
|
|
1104
|
-
const
|
|
1105
|
-
|
|
1613
|
+
const controlReplacement = getControlReplacement();
|
|
1614
|
+
const panelTitle = (0, import_i18n25.__)("Edit %s", "elementor").replace("%s", elementType.title);
|
|
1615
|
+
return /* @__PURE__ */ React49.createElement(import_ui42.ErrorBoundary, { fallback: /* @__PURE__ */ React49.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React49.createElement(import_editor_panels.Panel, null, /* @__PURE__ */ React49.createElement(import_editor_panels.PanelHeader, null, /* @__PURE__ */ React49.createElement(import_editor_panels.PanelHeaderTitle, null, panelTitle)), /* @__PURE__ */ React49.createElement(import_editor_panels.PanelBody, null, /* @__PURE__ */ React49.createElement(ControlReplacementProvider, { ...controlReplacement }, /* @__PURE__ */ React49.createElement(ElementProvider, { element: selectedElement, elementType }, /* @__PURE__ */ React49.createElement(EditingPanelTabs, null))))));
|
|
1106
1616
|
};
|
|
1107
1617
|
|
|
1108
1618
|
// src/panel.ts
|
|
@@ -1125,11 +1635,11 @@ var shouldUseV2Panel = () => {
|
|
|
1125
1635
|
};
|
|
1126
1636
|
|
|
1127
1637
|
// src/hooks/use-open-editor-panel.ts
|
|
1128
|
-
var
|
|
1638
|
+
var import_react11 = require("react");
|
|
1129
1639
|
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
|
|
1130
1640
|
var useOpenEditorPanel = () => {
|
|
1131
1641
|
const { open } = usePanelActions();
|
|
1132
|
-
(0,
|
|
1642
|
+
(0, import_react11.useEffect)(() => {
|
|
1133
1643
|
return (0, import_editor_v1_adapters8.__privateListenTo)((0, import_editor_v1_adapters8.commandStartEvent)("panel/editor/open"), () => {
|
|
1134
1644
|
if (shouldUseV2Panel()) {
|
|
1135
1645
|
open();
|
|
@@ -1149,14 +1659,17 @@ var import_editor_panels3 = require("@elementor/editor-panels");
|
|
|
1149
1659
|
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
1150
1660
|
|
|
1151
1661
|
// src/dynamics/components/dynamic-selection-control.tsx
|
|
1152
|
-
var
|
|
1153
|
-
var
|
|
1662
|
+
var React52 = __toESM(require("react"));
|
|
1663
|
+
var import_react15 = require("react");
|
|
1154
1664
|
|
|
1155
1665
|
// src/dynamics/dynamic-control.tsx
|
|
1156
|
-
var
|
|
1666
|
+
var React50 = __toESM(require("react"));
|
|
1667
|
+
|
|
1668
|
+
// src/dynamics/hooks/use-dynamic-tag.ts
|
|
1669
|
+
var import_react13 = require("react");
|
|
1157
1670
|
|
|
1158
1671
|
// src/dynamics/hooks/use-prop-dynamic-tags.ts
|
|
1159
|
-
var
|
|
1672
|
+
var import_react12 = require("react");
|
|
1160
1673
|
|
|
1161
1674
|
// src/dynamics/sync/get-elementor-config.ts
|
|
1162
1675
|
var getElementorConfig = () => {
|
|
@@ -1176,7 +1689,7 @@ var getAtomicDynamicTags = () => {
|
|
|
1176
1689
|
};
|
|
1177
1690
|
};
|
|
1178
1691
|
|
|
1179
|
-
// src/props/is-transformable.ts
|
|
1692
|
+
// src/controls/props/is-transformable.ts
|
|
1180
1693
|
var import_schema = require("@elementor/schema");
|
|
1181
1694
|
var transformableSchema = import_schema.z.object({
|
|
1182
1695
|
$$type: import_schema.z.string(),
|
|
@@ -1187,21 +1700,29 @@ var isTransformable = (value) => {
|
|
|
1187
1700
|
};
|
|
1188
1701
|
|
|
1189
1702
|
// src/dynamics/utils.ts
|
|
1190
|
-
var
|
|
1703
|
+
var DYNAMIC_PROP_TYPE_KEY = "dynamic";
|
|
1704
|
+
var isDynamicPropType = (prop) => prop.key === DYNAMIC_PROP_TYPE_KEY;
|
|
1705
|
+
var getDynamicPropType = (propType) => {
|
|
1706
|
+
const dynamicPropType = propType.kind === "union" && propType.prop_types[DYNAMIC_PROP_TYPE_KEY];
|
|
1707
|
+
return dynamicPropType && isDynamicPropType(dynamicPropType) ? dynamicPropType : null;
|
|
1708
|
+
};
|
|
1191
1709
|
var isDynamicPropValue = (prop) => {
|
|
1192
|
-
return isTransformable(prop) && prop.$$type ===
|
|
1710
|
+
return isTransformable(prop) && prop.$$type === DYNAMIC_PROP_TYPE_KEY;
|
|
1711
|
+
};
|
|
1712
|
+
var supportsDynamic = (propType) => {
|
|
1713
|
+
return !!getDynamicPropType(propType);
|
|
1193
1714
|
};
|
|
1194
1715
|
|
|
1195
1716
|
// src/dynamics/hooks/use-prop-dynamic-tags.ts
|
|
1196
1717
|
var usePropDynamicTags = (propName) => {
|
|
1197
1718
|
let categories = [];
|
|
1198
|
-
const { elementType } =
|
|
1199
|
-
const
|
|
1200
|
-
if (
|
|
1201
|
-
const propDynamicType =
|
|
1719
|
+
const { elementType } = useElement();
|
|
1720
|
+
const propType = elementType.propsSchema?.[propName];
|
|
1721
|
+
if (propType) {
|
|
1722
|
+
const propDynamicType = getDynamicPropType(propType);
|
|
1202
1723
|
categories = propDynamicType?.settings.categories || [];
|
|
1203
1724
|
}
|
|
1204
|
-
return (0,
|
|
1725
|
+
return (0, import_react12.useMemo)(() => getDynamicTagsByCategories(categories), [categories.join()]);
|
|
1205
1726
|
};
|
|
1206
1727
|
var getDynamicTagsByCategories = (categories) => {
|
|
1207
1728
|
const dynamicTags = getAtomicDynamicTags();
|
|
@@ -1215,10 +1736,9 @@ var getDynamicTagsByCategories = (categories) => {
|
|
|
1215
1736
|
};
|
|
1216
1737
|
|
|
1217
1738
|
// src/dynamics/hooks/use-dynamic-tag.ts
|
|
1218
|
-
var import_react10 = require("react");
|
|
1219
1739
|
var useDynamicTag = (propName, tagName) => {
|
|
1220
1740
|
const dynamicTags = usePropDynamicTags(propName);
|
|
1221
|
-
return (0,
|
|
1741
|
+
return (0, import_react13.useMemo)(() => dynamicTags.find((tag) => tag.name === tagName) ?? null, [dynamicTags, tagName]);
|
|
1222
1742
|
};
|
|
1223
1743
|
|
|
1224
1744
|
// src/dynamics/dynamic-control.tsx
|
|
@@ -1229,7 +1749,7 @@ var DynamicControl = ({ bind, children }) => {
|
|
|
1229
1749
|
if (!dynamicTag) {
|
|
1230
1750
|
throw new Error(`Dynamic tag ${name} not found`);
|
|
1231
1751
|
}
|
|
1232
|
-
const defaultValue = dynamicTag.props_schema[bind]?.
|
|
1752
|
+
const defaultValue = dynamicTag.props_schema[bind]?.default;
|
|
1233
1753
|
const dynamicValue = settings?.[bind] ?? defaultValue;
|
|
1234
1754
|
const setDynamicValue = (newValue) => {
|
|
1235
1755
|
setValue({
|
|
@@ -1243,24 +1763,24 @@ var DynamicControl = ({ bind, children }) => {
|
|
|
1243
1763
|
}
|
|
1244
1764
|
});
|
|
1245
1765
|
};
|
|
1246
|
-
return /* @__PURE__ */
|
|
1766
|
+
return /* @__PURE__ */ React50.createElement(ControlContext.Provider, { value: { setValue: setDynamicValue, value: dynamicValue, bind } }, children);
|
|
1247
1767
|
};
|
|
1248
1768
|
|
|
1249
1769
|
// src/dynamics/components/dynamic-selection-control.tsx
|
|
1250
|
-
var
|
|
1770
|
+
var import_icons11 = require("@elementor/icons");
|
|
1251
1771
|
|
|
1252
1772
|
// src/dynamics/components/dynamic-selection.tsx
|
|
1253
|
-
var
|
|
1254
|
-
var
|
|
1255
|
-
var
|
|
1256
|
-
var
|
|
1257
|
-
var
|
|
1773
|
+
var React51 = __toESM(require("react"));
|
|
1774
|
+
var import_react14 = require("react");
|
|
1775
|
+
var import_icons10 = require("@elementor/icons");
|
|
1776
|
+
var import_ui43 = require("@elementor/ui");
|
|
1777
|
+
var import_i18n26 = require("@wordpress/i18n");
|
|
1258
1778
|
|
|
1259
1779
|
// src/dynamics/hooks/use-prop-value-history.ts
|
|
1260
1780
|
var PROPS_VALUES_HISTORY_KEY = "elementor/dynamic/non-dynamic-values-history";
|
|
1261
1781
|
var usePropValueHistory = (path) => {
|
|
1262
1782
|
const valuesHistory = getValues();
|
|
1263
|
-
const { element } =
|
|
1783
|
+
const { element } = useElement();
|
|
1264
1784
|
const key = `${element.id}-${path}`;
|
|
1265
1785
|
const value = valuesHistory[key] ?? null;
|
|
1266
1786
|
const setValue = (newValue) => {
|
|
@@ -1276,14 +1796,14 @@ var setValues = (values) => {
|
|
|
1276
1796
|
};
|
|
1277
1797
|
|
|
1278
1798
|
// src/dynamics/components/dynamic-selection.tsx
|
|
1279
|
-
var
|
|
1799
|
+
var SIZE3 = "tiny";
|
|
1280
1800
|
var DynamicSelection = ({ onSelect }) => {
|
|
1281
|
-
const [searchValue, setSearchValue] = (0,
|
|
1801
|
+
const [searchValue, setSearchValue] = (0, import_react14.useState)("");
|
|
1282
1802
|
const { groups: dynamicGroups } = getAtomicDynamicTags() || {};
|
|
1283
1803
|
const { bind, value: currentValue, setValue } = useControl();
|
|
1284
1804
|
const [, updatePropValueHistory] = usePropValueHistory(bind);
|
|
1285
1805
|
const isCurrentValueDynamic = isDynamicPropValue(currentValue);
|
|
1286
|
-
const
|
|
1806
|
+
const options4 = useFilteredOptions(bind, searchValue);
|
|
1287
1807
|
const handleSearch = (event) => {
|
|
1288
1808
|
setSearchValue(event.target.value);
|
|
1289
1809
|
};
|
|
@@ -1291,25 +1811,25 @@ var DynamicSelection = ({ onSelect }) => {
|
|
|
1291
1811
|
if (!isCurrentValueDynamic) {
|
|
1292
1812
|
updatePropValueHistory(currentValue);
|
|
1293
1813
|
}
|
|
1294
|
-
setValue({ $$type: "dynamic", value: { name: value } });
|
|
1814
|
+
setValue({ $$type: "dynamic", value: { name: value, settings: {} } });
|
|
1295
1815
|
onSelect?.();
|
|
1296
1816
|
};
|
|
1297
|
-
return /* @__PURE__ */
|
|
1298
|
-
|
|
1817
|
+
return /* @__PURE__ */ React51.createElement(import_ui43.Stack, null, /* @__PURE__ */ React51.createElement(import_ui43.Box, { px: 1.5, pb: 1 }, /* @__PURE__ */ React51.createElement(
|
|
1818
|
+
import_ui43.TextField,
|
|
1299
1819
|
{
|
|
1300
1820
|
fullWidth: true,
|
|
1301
|
-
size:
|
|
1821
|
+
size: SIZE3,
|
|
1302
1822
|
value: searchValue,
|
|
1303
1823
|
onChange: handleSearch,
|
|
1304
|
-
placeholder: (0,
|
|
1824
|
+
placeholder: (0, import_i18n26.__)("Search dynamic tag", "elementor"),
|
|
1305
1825
|
InputProps: {
|
|
1306
|
-
startAdornment: /* @__PURE__ */
|
|
1826
|
+
startAdornment: /* @__PURE__ */ React51.createElement(import_ui43.InputAdornment, { position: "start" }, /* @__PURE__ */ React51.createElement(import_icons10.SearchIcon, { fontSize: SIZE3 }))
|
|
1307
1827
|
}
|
|
1308
1828
|
}
|
|
1309
|
-
)), /* @__PURE__ */
|
|
1829
|
+
)), /* @__PURE__ */ React51.createElement(import_ui43.Divider, null), /* @__PURE__ */ React51.createElement(import_ui43.Box, { sx: { overflowY: "auto", height: 260, width: 220 } }, options4.length > 0 ? /* @__PURE__ */ React51.createElement(import_ui43.MenuList, { role: "listbox", tabIndex: 0 }, options4.map(([category, items], index) => /* @__PURE__ */ React51.createElement(import_react14.Fragment, { key: index }, /* @__PURE__ */ React51.createElement(import_ui43.ListSubheader, { sx: { typography: "caption", color: "text.tertiary" } }, dynamicGroups?.[category]?.title || category), items.map(({ value, label: tagLabel }) => {
|
|
1310
1830
|
const isSelected = isCurrentValueDynamic && value === currentValue?.value?.name;
|
|
1311
|
-
return /* @__PURE__ */
|
|
1312
|
-
|
|
1831
|
+
return /* @__PURE__ */ React51.createElement(
|
|
1832
|
+
import_ui43.MenuItem,
|
|
1313
1833
|
{
|
|
1314
1834
|
key: value,
|
|
1315
1835
|
selected: isSelected,
|
|
@@ -1319,20 +1839,20 @@ var DynamicSelection = ({ onSelect }) => {
|
|
|
1319
1839
|
},
|
|
1320
1840
|
tagLabel
|
|
1321
1841
|
);
|
|
1322
|
-
})))) : /* @__PURE__ */
|
|
1323
|
-
|
|
1842
|
+
})))) : /* @__PURE__ */ React51.createElement(import_ui43.Stack, { alignItems: "center", p: 2.5, gap: 1.5 }, /* @__PURE__ */ React51.createElement(import_icons10.PhotoIcon, { fontSize: "large" }), /* @__PURE__ */ React51.createElement(import_ui43.Typography, { align: "center", variant: "caption", color: "text.secondary" }, (0, import_i18n26.__)("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React51.createElement("br", null), "\u201C", searchValue, "\u201D."), /* @__PURE__ */ React51.createElement(import_ui43.Typography, { align: "center", variant: "caption", color: "text.secondary" }, /* @__PURE__ */ React51.createElement(
|
|
1843
|
+
import_ui43.Link,
|
|
1324
1844
|
{
|
|
1325
1845
|
color: "secondary",
|
|
1326
1846
|
variant: "caption",
|
|
1327
1847
|
component: "button",
|
|
1328
1848
|
onClick: () => setSearchValue("")
|
|
1329
1849
|
},
|
|
1330
|
-
(0,
|
|
1331
|
-
), "\xA0", (0,
|
|
1850
|
+
(0, import_i18n26.__)("Clear the filters", "elementor")
|
|
1851
|
+
), "\xA0", (0, import_i18n26.__)("and try again.", "elementor")))));
|
|
1332
1852
|
};
|
|
1333
1853
|
var useFilteredOptions = (bind, searchValue) => {
|
|
1334
1854
|
const dynamicTags = usePropDynamicTags(bind);
|
|
1335
|
-
const
|
|
1855
|
+
const options4 = dynamicTags.reduce((categories, { name, label, group }) => {
|
|
1336
1856
|
const isVisible = label.toLowerCase().includes(searchValue.trim().toLowerCase());
|
|
1337
1857
|
if (!isVisible) {
|
|
1338
1858
|
return categories;
|
|
@@ -1343,19 +1863,19 @@ var useFilteredOptions = (bind, searchValue) => {
|
|
|
1343
1863
|
categories.get(group)?.push({ label, value: name });
|
|
1344
1864
|
return categories;
|
|
1345
1865
|
}, /* @__PURE__ */ new Map());
|
|
1346
|
-
return [...
|
|
1866
|
+
return [...options4];
|
|
1347
1867
|
};
|
|
1348
1868
|
|
|
1349
1869
|
// src/dynamics/components/dynamic-selection-control.tsx
|
|
1350
|
-
var
|
|
1351
|
-
var
|
|
1352
|
-
var
|
|
1870
|
+
var import_ui44 = require("@elementor/ui");
|
|
1871
|
+
var import_i18n27 = require("@wordpress/i18n");
|
|
1872
|
+
var SIZE4 = "tiny";
|
|
1353
1873
|
var DynamicSelectionControl = () => {
|
|
1354
1874
|
const { bind, value, setValue } = useControl();
|
|
1355
1875
|
const [propValueFromHistory] = usePropValueHistory(bind);
|
|
1356
1876
|
const { name: tagName = "" } = value?.value || {};
|
|
1357
|
-
const selectionPopoverId = (0,
|
|
1358
|
-
const selectionPopoverState = (0,
|
|
1877
|
+
const selectionPopoverId = (0, import_react15.useId)();
|
|
1878
|
+
const selectionPopoverState = (0, import_ui44.usePopupState)({ variant: "popover", popupId: selectionPopoverId });
|
|
1359
1879
|
const dynamicTag = useDynamicTag(bind, tagName);
|
|
1360
1880
|
const removeDynamicTag = () => {
|
|
1361
1881
|
setValue(propValueFromHistory ?? null);
|
|
@@ -1363,88 +1883,110 @@ var DynamicSelectionControl = () => {
|
|
|
1363
1883
|
if (!dynamicTag) {
|
|
1364
1884
|
throw new Error(`Dynamic tag ${tagName} not found`);
|
|
1365
1885
|
}
|
|
1366
|
-
return /* @__PURE__ */
|
|
1367
|
-
|
|
1886
|
+
return /* @__PURE__ */ React52.createElement(import_ui44.Box, null, /* @__PURE__ */ React52.createElement(
|
|
1887
|
+
import_ui44.UnstableTag,
|
|
1368
1888
|
{
|
|
1369
1889
|
fullWidth: true,
|
|
1370
1890
|
showActionsOnHover: true,
|
|
1371
1891
|
label: dynamicTag.label,
|
|
1372
|
-
startIcon: /* @__PURE__ */
|
|
1373
|
-
...(0,
|
|
1374
|
-
actions: /* @__PURE__ */
|
|
1375
|
-
|
|
1892
|
+
startIcon: /* @__PURE__ */ React52.createElement(import_icons11.DatabaseIcon, { fontSize: SIZE4 }),
|
|
1893
|
+
...(0, import_ui44.bindTrigger)(selectionPopoverState),
|
|
1894
|
+
actions: /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement(DynamicSettingsPopover, { dynamicTag }), /* @__PURE__ */ React52.createElement(
|
|
1895
|
+
import_ui44.IconButton,
|
|
1376
1896
|
{
|
|
1377
|
-
size:
|
|
1897
|
+
size: SIZE4,
|
|
1378
1898
|
onClick: removeDynamicTag,
|
|
1379
|
-
"aria-label": (0,
|
|
1899
|
+
"aria-label": (0, import_i18n27.__)("Remove dynamic value", "elementor")
|
|
1380
1900
|
},
|
|
1381
|
-
/* @__PURE__ */
|
|
1901
|
+
/* @__PURE__ */ React52.createElement(import_icons11.XIcon, { fontSize: SIZE4 })
|
|
1382
1902
|
))
|
|
1383
1903
|
}
|
|
1384
|
-
), /* @__PURE__ */
|
|
1385
|
-
|
|
1904
|
+
), /* @__PURE__ */ React52.createElement(
|
|
1905
|
+
import_ui44.Popover,
|
|
1386
1906
|
{
|
|
1387
1907
|
disablePortal: true,
|
|
1388
1908
|
disableScrollLock: true,
|
|
1389
1909
|
anchorOrigin: { vertical: "bottom", horizontal: "left" },
|
|
1390
|
-
...(0,
|
|
1910
|
+
...(0, import_ui44.bindPopover)(selectionPopoverState)
|
|
1391
1911
|
},
|
|
1392
|
-
/* @__PURE__ */
|
|
1912
|
+
/* @__PURE__ */ React52.createElement(import_ui44.Stack, null, /* @__PURE__ */ React52.createElement(import_ui44.Stack, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React52.createElement(import_icons11.DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React52.createElement(import_ui44.Typography, { variant: "subtitle2" }, (0, import_i18n27.__)("Dynamic Tags", "elementor")), /* @__PURE__ */ React52.createElement(import_ui44.IconButton, { size: SIZE4, sx: { ml: "auto" }, onClick: selectionPopoverState.close }, /* @__PURE__ */ React52.createElement(import_icons11.XIcon, { fontSize: SIZE4 }))), /* @__PURE__ */ React52.createElement(DynamicSelection, { onSelect: selectionPopoverState.close }))
|
|
1393
1913
|
));
|
|
1394
1914
|
};
|
|
1395
1915
|
var DynamicSettingsPopover = ({ dynamicTag }) => {
|
|
1396
|
-
const popupId = (0,
|
|
1397
|
-
const settingsPopupState = (0,
|
|
1916
|
+
const popupId = (0, import_react15.useId)();
|
|
1917
|
+
const settingsPopupState = (0, import_ui44.usePopupState)({ variant: "popover", popupId });
|
|
1398
1918
|
const hasDynamicSettings = !!dynamicTag.atomic_controls.length;
|
|
1399
1919
|
if (!hasDynamicSettings) {
|
|
1400
1920
|
return null;
|
|
1401
1921
|
}
|
|
1402
|
-
return /* @__PURE__ */
|
|
1403
|
-
|
|
1922
|
+
return /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement(
|
|
1923
|
+
import_ui44.IconButton,
|
|
1404
1924
|
{
|
|
1405
|
-
size:
|
|
1406
|
-
...(0,
|
|
1407
|
-
"aria-label": (0,
|
|
1925
|
+
size: SIZE4,
|
|
1926
|
+
...(0, import_ui44.bindTrigger)(settingsPopupState),
|
|
1927
|
+
"aria-label": (0, import_i18n27.__)("Settings", "elementor")
|
|
1408
1928
|
},
|
|
1409
|
-
/* @__PURE__ */
|
|
1410
|
-
), /* @__PURE__ */
|
|
1411
|
-
|
|
1929
|
+
/* @__PURE__ */ React52.createElement(import_icons11.SettingsIcon, { fontSize: SIZE4 })
|
|
1930
|
+
), /* @__PURE__ */ React52.createElement(
|
|
1931
|
+
import_ui44.Popover,
|
|
1412
1932
|
{
|
|
1413
1933
|
disableScrollLock: true,
|
|
1414
1934
|
anchorOrigin: { vertical: "bottom", horizontal: "center" },
|
|
1415
|
-
...(0,
|
|
1935
|
+
...(0, import_ui44.bindPopover)(settingsPopupState)
|
|
1416
1936
|
},
|
|
1417
|
-
/* @__PURE__ */
|
|
1937
|
+
/* @__PURE__ */ React52.createElement(import_ui44.Paper, { component: import_ui44.Stack, sx: { minHeight: "300px", width: "220px" } }, /* @__PURE__ */ React52.createElement(import_ui44.Stack, { direction: "row", alignItems: "center", px: 1.5, pt: 2, pb: 1 }, /* @__PURE__ */ React52.createElement(import_icons11.DatabaseIcon, { fontSize: SIZE4, sx: { mr: 0.5 } }), /* @__PURE__ */ React52.createElement(import_ui44.Typography, { variant: "subtitle2" }, dynamicTag.label), /* @__PURE__ */ React52.createElement(import_ui44.IconButton, { sx: { ml: "auto" }, size: SIZE4, onClick: settingsPopupState.close }, /* @__PURE__ */ React52.createElement(import_icons11.XIcon, { fontSize: SIZE4 }))), /* @__PURE__ */ React52.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls }))
|
|
1418
1938
|
));
|
|
1419
1939
|
};
|
|
1420
1940
|
var DynamicSettings = ({ controls }) => {
|
|
1421
1941
|
const tabs = controls.filter(({ type }) => type === "section");
|
|
1422
|
-
const { getTabsProps, getTabProps, getTabPanelProps } = (0,
|
|
1942
|
+
const { getTabsProps, getTabProps, getTabPanelProps } = (0, import_ui44.useTabs)(0);
|
|
1423
1943
|
if (!tabs.length) {
|
|
1424
1944
|
return null;
|
|
1425
1945
|
}
|
|
1426
|
-
return /* @__PURE__ */
|
|
1427
|
-
return /* @__PURE__ */
|
|
1946
|
+
return /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement(import_ui44.Tabs, { indicatorColor: "secondary", textColor: "secondary", ...getTabsProps() }, tabs.map(({ value }, index) => /* @__PURE__ */ React52.createElement(import_ui44.Tab, { key: index, label: value.label, sx: { px: 1, py: 0.5 }, ...getTabProps(index) }))), /* @__PURE__ */ React52.createElement(import_ui44.Divider, null), tabs.map(({ value }, index) => {
|
|
1947
|
+
return /* @__PURE__ */ React52.createElement(import_ui44.TabPanel, { key: index, sx: { flexGrow: 1 }, ...getTabPanelProps(index) }, /* @__PURE__ */ React52.createElement(import_ui44.Stack, { gap: 1, px: 2 }, value.items.map((item) => {
|
|
1428
1948
|
if (item.type === "control") {
|
|
1429
|
-
return /* @__PURE__ */
|
|
1949
|
+
return /* @__PURE__ */ React52.createElement(Control6, { key: item.value.bind, control: item.value });
|
|
1430
1950
|
}
|
|
1431
1951
|
return null;
|
|
1432
1952
|
})));
|
|
1433
1953
|
}));
|
|
1434
1954
|
};
|
|
1435
|
-
var
|
|
1955
|
+
var Control6 = ({ control }) => {
|
|
1436
1956
|
if (!getControlByType(control.type)) {
|
|
1437
1957
|
return null;
|
|
1438
1958
|
}
|
|
1439
|
-
return /* @__PURE__ */
|
|
1959
|
+
return /* @__PURE__ */ React52.createElement(DynamicControl, { bind: control.bind }, control.label ? /* @__PURE__ */ React52.createElement(ControlLabel, null, control.label) : null, /* @__PURE__ */ React52.createElement(Control, { type: control.type, props: control.props }));
|
|
1960
|
+
};
|
|
1961
|
+
|
|
1962
|
+
// src/dynamics/hooks/use-prop-dynamic-action.tsx
|
|
1963
|
+
var React53 = __toESM(require("react"));
|
|
1964
|
+
var import_icons12 = require("@elementor/icons");
|
|
1965
|
+
var import_i18n28 = require("@wordpress/i18n");
|
|
1966
|
+
var usePropDynamicAction = () => {
|
|
1967
|
+
const { bind } = useControl();
|
|
1968
|
+
const { elementType } = useElement();
|
|
1969
|
+
const propType = elementType.propsSchema[bind];
|
|
1970
|
+
const visible = !!propType && supportsDynamic(propType);
|
|
1971
|
+
return {
|
|
1972
|
+
visible,
|
|
1973
|
+
icon: import_icons12.DatabaseIcon,
|
|
1974
|
+
title: (0, import_i18n28.__)("Dynamic Tags", "elementor"),
|
|
1975
|
+
popoverContent: ({ closePopover }) => /* @__PURE__ */ React53.createElement(DynamicSelection, { onSelect: closePopover })
|
|
1976
|
+
};
|
|
1440
1977
|
};
|
|
1441
1978
|
|
|
1442
1979
|
// src/dynamics/init.ts
|
|
1980
|
+
var { registerPopoverAction } = controlActionsMenu;
|
|
1443
1981
|
var init = () => {
|
|
1444
1982
|
replaceControl({
|
|
1445
1983
|
component: DynamicSelectionControl,
|
|
1446
1984
|
condition: ({ value }) => isDynamicPropValue(value)
|
|
1447
1985
|
});
|
|
1986
|
+
registerPopoverAction({
|
|
1987
|
+
id: "dynamic-tags",
|
|
1988
|
+
useProps: usePropDynamicAction
|
|
1989
|
+
});
|
|
1448
1990
|
};
|
|
1449
1991
|
|
|
1450
1992
|
// src/init.ts
|
|
@@ -1468,6 +2010,7 @@ var blockV1Panel = () => {
|
|
|
1468
2010
|
init2();
|
|
1469
2011
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1470
2012
|
0 && (module.exports = {
|
|
2013
|
+
controlActionsMenu,
|
|
1471
2014
|
replaceControl,
|
|
1472
2015
|
useControl
|
|
1473
2016
|
});
|