@elementor/editor-editing-panel 1.8.0 → 1.9.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 +62 -0
- package/dist/index.d.mts +15 -3
- package/dist/index.d.ts +15 -3
- package/dist/index.js +392 -369
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +378 -358
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -13
- package/src/components/css-class-menu.tsx +2 -2
- package/src/components/css-class-selector.tsx +13 -5
- package/src/components/editable-field.tsx +10 -2
- package/src/components/style-sections/layout-section/flex-size-field.tsx +3 -2
- package/src/components/style-tab.tsx +2 -2
- package/src/contexts/css-class-item-context.tsx +2 -2
- package/src/contexts/style-context.tsx +3 -3
- package/src/controls-registry/settings-field.tsx +2 -2
- package/src/css-classes.ts +2 -2
- package/src/hooks/use-styles-fields.ts +18 -8
- package/src/hooks/use-unapply-class.ts +3 -3
- package/src/index.ts +2 -0
package/dist/index.js
CHANGED
|
@@ -30,10 +30,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var index_exports = {};
|
|
32
32
|
__export(index_exports, {
|
|
33
|
+
injectIntoClassSelectorActions: () => injectIntoClassSelectorActions,
|
|
33
34
|
registerGlobalClassMenuItem: () => registerGlobalClassMenuItem,
|
|
34
35
|
registerStateMenuItem: () => registerStateMenuItem,
|
|
35
36
|
replaceControl: () => replaceControl,
|
|
36
|
-
useBoundProp: () => import_editor_controls47.useBoundProp
|
|
37
|
+
useBoundProp: () => import_editor_controls47.useBoundProp,
|
|
38
|
+
usePanelActions: () => usePanelActions,
|
|
39
|
+
usePanelStatus: () => usePanelStatus
|
|
37
40
|
});
|
|
38
41
|
module.exports = __toCommonJS(index_exports);
|
|
39
42
|
var import_editor_controls47 = require("@elementor/editor-controls");
|
|
@@ -61,7 +64,7 @@ function CssClassItemProvider({ styleId, isGlobal, isActive, children }) {
|
|
|
61
64
|
return /* @__PURE__ */ React.createElement(ClassItemContext.Provider, { value: { styleId, isGlobal, isActive } }, children);
|
|
62
65
|
}
|
|
63
66
|
function useCssClassItem() {
|
|
64
|
-
const context =
|
|
67
|
+
const context = (0, import_react.useContext)(ClassItemContext);
|
|
65
68
|
if (!context) {
|
|
66
69
|
throw new Error("useCssClassItem must be used within a CssClassItemProvider");
|
|
67
70
|
}
|
|
@@ -151,307 +154,55 @@ var StyledMenuItem = (0, import_ui.styled)(import_ui.MenuItem)({
|
|
|
151
154
|
}
|
|
152
155
|
});
|
|
153
156
|
|
|
154
|
-
// src/
|
|
155
|
-
var
|
|
156
|
-
var
|
|
157
|
-
var
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
var
|
|
161
|
-
var
|
|
162
|
-
var
|
|
163
|
-
|
|
164
|
-
// src/panel.ts
|
|
165
|
-
var import_editor_panels2 = require("@elementor/editor-panels");
|
|
166
|
-
|
|
167
|
-
// src/components/editing-panel.tsx
|
|
168
|
-
var React62 = __toESM(require("react"));
|
|
169
|
-
var import_editor_controls41 = require("@elementor/editor-controls");
|
|
170
|
-
var import_editor_elements6 = require("@elementor/editor-elements");
|
|
171
|
-
var import_editor_panels = require("@elementor/editor-panels");
|
|
172
|
-
var import_session3 = require("@elementor/session");
|
|
173
|
-
var import_ui51 = require("@elementor/ui");
|
|
174
|
-
var import_i18n40 = require("@wordpress/i18n");
|
|
157
|
+
// src/components/css-class-selector.tsx
|
|
158
|
+
var React9 = __toESM(require("react"));
|
|
159
|
+
var import_react8 = require("react");
|
|
160
|
+
var import_editor_elements = require("@elementor/editor-elements");
|
|
161
|
+
var import_editor_props = require("@elementor/editor-props");
|
|
162
|
+
var import_editor_styles_repository = require("@elementor/editor-styles-repository");
|
|
163
|
+
var import_icons2 = require("@elementor/icons");
|
|
164
|
+
var import_locations = require("@elementor/locations");
|
|
165
|
+
var import_ui5 = require("@elementor/ui");
|
|
166
|
+
var import_i18n2 = require("@wordpress/i18n");
|
|
175
167
|
|
|
176
|
-
// src/contexts/
|
|
168
|
+
// src/contexts/classes-prop-context.tsx
|
|
177
169
|
var React4 = __toESM(require("react"));
|
|
178
170
|
var import_react3 = require("react");
|
|
179
171
|
var Context2 = (0, import_react3.createContext)(null);
|
|
180
|
-
function
|
|
181
|
-
return /* @__PURE__ */ React4.createElement(Context2.Provider, { value: {
|
|
172
|
+
function ClassesPropProvider({ children, prop }) {
|
|
173
|
+
return /* @__PURE__ */ React4.createElement(Context2.Provider, { value: { prop } }, children);
|
|
182
174
|
}
|
|
183
|
-
function
|
|
175
|
+
function useClassesProp() {
|
|
184
176
|
const context = (0, import_react3.useContext)(Context2);
|
|
185
177
|
if (!context) {
|
|
186
|
-
throw new Error("
|
|
178
|
+
throw new Error("useClassesProp must be used within a ClassesPropProvider");
|
|
187
179
|
}
|
|
188
|
-
return context;
|
|
180
|
+
return context.prop;
|
|
189
181
|
}
|
|
190
182
|
|
|
191
|
-
// src/
|
|
192
|
-
var import_menus2 = require("@elementor/menus");
|
|
193
|
-
|
|
194
|
-
// src/popover-action.tsx
|
|
183
|
+
// src/contexts/element-context.tsx
|
|
195
184
|
var React5 = __toESM(require("react"));
|
|
196
185
|
var import_react4 = require("react");
|
|
197
|
-
var
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
function PopoverAction({
|
|
201
|
-
title,
|
|
202
|
-
visible = true,
|
|
203
|
-
icon: Icon,
|
|
204
|
-
popoverContent: PopoverContent
|
|
205
|
-
}) {
|
|
206
|
-
const id = (0, import_react4.useId)();
|
|
207
|
-
const popupState = (0, import_ui2.usePopupState)({
|
|
208
|
-
variant: "popover",
|
|
209
|
-
popupId: `elementor-popover-action-${id}`
|
|
210
|
-
});
|
|
211
|
-
if (!visible) {
|
|
212
|
-
return null;
|
|
213
|
-
}
|
|
214
|
-
return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(import_ui2.Tooltip, { placement: "top", title }, /* @__PURE__ */ React5.createElement(import_ui2.IconButton, { "aria-label": title, key: id, size: SIZE, ...(0, import_ui2.bindToggle)(popupState) }, /* @__PURE__ */ React5.createElement(Icon, { fontSize: SIZE }))), /* @__PURE__ */ React5.createElement(
|
|
215
|
-
import_ui2.Popover,
|
|
216
|
-
{
|
|
217
|
-
disablePortal: true,
|
|
218
|
-
disableScrollLock: true,
|
|
219
|
-
anchorOrigin: {
|
|
220
|
-
vertical: "bottom",
|
|
221
|
-
horizontal: "center"
|
|
222
|
-
},
|
|
223
|
-
...(0, import_ui2.bindPopover)(popupState)
|
|
224
|
-
},
|
|
225
|
-
/* @__PURE__ */ React5.createElement(import_ui2.Stack, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React5.createElement(Icon, { fontSize: SIZE, sx: { mr: 0.5 } }), /* @__PURE__ */ React5.createElement(import_ui2.Typography, { variant: "subtitle2" }, title), /* @__PURE__ */ React5.createElement(import_ui2.IconButton, { sx: { ml: "auto" }, size: SIZE, onClick: popupState.close }, /* @__PURE__ */ React5.createElement(import_icons2.XIcon, { fontSize: SIZE }))),
|
|
226
|
-
/* @__PURE__ */ React5.createElement(PopoverContent, { closePopover: popupState.close })
|
|
227
|
-
));
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// src/controls-actions.ts
|
|
231
|
-
var controlActionsMenu = (0, import_menus2.createMenu)({
|
|
232
|
-
components: {
|
|
233
|
-
PopoverAction
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
// src/components/editing-panel-error-fallback.tsx
|
|
238
|
-
var React6 = __toESM(require("react"));
|
|
239
|
-
var import_ui3 = require("@elementor/ui");
|
|
240
|
-
function EditorPanelErrorFallback() {
|
|
241
|
-
return /* @__PURE__ */ React6.createElement(import_ui3.Box, { role: "alert", sx: { minHeight: "100%", p: 2 } }, /* @__PURE__ */ React6.createElement(import_ui3.Alert, { severity: "error", sx: { mb: 2, maxWidth: 400, textAlign: "center" } }, /* @__PURE__ */ React6.createElement("strong", null, "Something went wrong")));
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// src/components/editing-panel-tabs.tsx
|
|
245
|
-
var React61 = __toESM(require("react"));
|
|
246
|
-
var import_react16 = require("react");
|
|
247
|
-
var import_ui50 = require("@elementor/ui");
|
|
248
|
-
var import_i18n39 = require("@wordpress/i18n");
|
|
249
|
-
|
|
250
|
-
// src/components/settings-tab.tsx
|
|
251
|
-
var React12 = __toESM(require("react"));
|
|
252
|
-
var import_editor_controls4 = require("@elementor/editor-controls");
|
|
253
|
-
var import_session = require("@elementor/session");
|
|
254
|
-
|
|
255
|
-
// src/controls-registry/control.tsx
|
|
256
|
-
var React7 = __toESM(require("react"));
|
|
257
|
-
var import_utils = require("@elementor/utils");
|
|
258
|
-
|
|
259
|
-
// src/controls-registry/controls-registry.tsx
|
|
260
|
-
var import_editor_controls2 = require("@elementor/editor-controls");
|
|
261
|
-
var controlTypes = {
|
|
262
|
-
image: { component: import_editor_controls2.ImageControl, layout: "full" },
|
|
263
|
-
text: { component: import_editor_controls2.TextControl, layout: "two-columns" },
|
|
264
|
-
textarea: { component: import_editor_controls2.TextAreaControl, layout: "full" },
|
|
265
|
-
size: { component: import_editor_controls2.SizeControl, layout: "two-columns" },
|
|
266
|
-
select: { component: import_editor_controls2.SelectControl, layout: "two-columns" },
|
|
267
|
-
link: { component: import_editor_controls2.LinkControl, layout: "full" },
|
|
268
|
-
url: { component: import_editor_controls2.UrlControl, layout: "full" }
|
|
269
|
-
};
|
|
270
|
-
var getControlByType = (type) => controlTypes[type]?.component;
|
|
271
|
-
var getLayoutByType = (type) => controlTypes[type].layout;
|
|
272
|
-
|
|
273
|
-
// src/controls-registry/control.tsx
|
|
274
|
-
var ControlTypeError = (0, import_utils.createError)({
|
|
275
|
-
code: "CONTROL_TYPE_NOT_FOUND",
|
|
276
|
-
message: `Control type not found.`
|
|
277
|
-
});
|
|
278
|
-
var Control = ({ props, type }) => {
|
|
279
|
-
const ControlByType = getControlByType(type);
|
|
280
|
-
if (!ControlByType) {
|
|
281
|
-
throw new ControlTypeError({
|
|
282
|
-
context: { type }
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
return /* @__PURE__ */ React7.createElement(ControlByType, { ...props });
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
// src/controls-registry/control-type-container.tsx
|
|
289
|
-
var React8 = __toESM(require("react"));
|
|
290
|
-
var import_ui4 = require("@elementor/ui");
|
|
291
|
-
var ControlTypeContainer = ({
|
|
292
|
-
controlType,
|
|
293
|
-
children
|
|
294
|
-
}) => {
|
|
295
|
-
const layout = getLayoutByType(controlType);
|
|
296
|
-
return /* @__PURE__ */ React8.createElement(StyledContainer, { layout }, children);
|
|
297
|
-
};
|
|
298
|
-
var StyledContainer = (0, import_ui4.styled)(import_ui4.Box, {
|
|
299
|
-
shouldForwardProp: (prop) => !["layout"].includes(prop)
|
|
300
|
-
})(({ layout, theme }) => ({
|
|
301
|
-
display: "grid",
|
|
302
|
-
gridGap: theme.spacing(1),
|
|
303
|
-
...getGridLayout(layout)
|
|
304
|
-
}));
|
|
305
|
-
var getGridLayout = (layout) => ({
|
|
306
|
-
justifyContent: "space-between",
|
|
307
|
-
gridTemplateColumns: {
|
|
308
|
-
full: "1fr",
|
|
309
|
-
"two-columns": "repeat(2, 1fr)"
|
|
310
|
-
}[layout]
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
// src/controls-registry/settings-field.tsx
|
|
314
|
-
var React9 = __toESM(require("react"));
|
|
315
|
-
var import_editor_controls3 = require("@elementor/editor-controls");
|
|
316
|
-
var import_editor_elements = require("@elementor/editor-elements");
|
|
317
|
-
|
|
318
|
-
// src/controls-registry/create-top-level-object-type.ts
|
|
319
|
-
var createTopLevelOjectType = ({ schema }) => {
|
|
320
|
-
const schemaPropType = {
|
|
321
|
-
key: "",
|
|
322
|
-
kind: "object",
|
|
323
|
-
meta: {},
|
|
324
|
-
settings: {},
|
|
325
|
-
default: null,
|
|
326
|
-
shape: schema
|
|
327
|
-
};
|
|
328
|
-
return schemaPropType;
|
|
329
|
-
};
|
|
330
|
-
|
|
331
|
-
// src/controls-registry/settings-field.tsx
|
|
332
|
-
var SettingsField = ({ bind, children }) => {
|
|
333
|
-
const { element, elementType } = useElement();
|
|
334
|
-
const settingsValue = (0, import_editor_elements.useElementSetting)(element.id, bind);
|
|
335
|
-
const value = { [bind]: settingsValue };
|
|
336
|
-
const propType = createTopLevelOjectType({ schema: elementType.propsSchema });
|
|
337
|
-
const setValue = (newValue) => {
|
|
338
|
-
(0, import_editor_elements.updateSettings)({
|
|
339
|
-
id: element.id,
|
|
340
|
-
props: { ...newValue }
|
|
341
|
-
});
|
|
342
|
-
};
|
|
343
|
-
return /* @__PURE__ */ React9.createElement(import_editor_controls3.PropProvider, { propType, value, setValue }, /* @__PURE__ */ React9.createElement(import_editor_controls3.PropKeyProvider, { bind }, children));
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
// src/components/section.tsx
|
|
347
|
-
var React10 = __toESM(require("react"));
|
|
348
|
-
var import_react5 = require("react");
|
|
349
|
-
var import_ui6 = require("@elementor/ui");
|
|
350
|
-
|
|
351
|
-
// src/components/collapse-icon.tsx
|
|
352
|
-
var import_icons3 = require("@elementor/icons");
|
|
353
|
-
var import_ui5 = require("@elementor/ui");
|
|
354
|
-
var CollapseIcon = (0, import_ui5.styled)(import_icons3.ChevronDownIcon, {
|
|
355
|
-
shouldForwardProp: (prop) => prop !== "open"
|
|
356
|
-
})(({ theme, open }) => ({
|
|
357
|
-
transform: open ? "rotate(180deg)" : "rotate(0deg)",
|
|
358
|
-
transition: theme.transitions.create("transform", {
|
|
359
|
-
duration: theme.transitions.duration.standard
|
|
360
|
-
})
|
|
361
|
-
}));
|
|
362
|
-
|
|
363
|
-
// src/components/section.tsx
|
|
364
|
-
function Section({ title, children, defaultExpanded = false }) {
|
|
365
|
-
const [isOpen, setIsOpen] = (0, import_react5.useState)(!!defaultExpanded);
|
|
366
|
-
const id = (0, import_react5.useId)();
|
|
367
|
-
const labelId = `label-${id}`;
|
|
368
|
-
const contentId = `content-${id}`;
|
|
369
|
-
return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(
|
|
370
|
-
import_ui6.ListItemButton,
|
|
371
|
-
{
|
|
372
|
-
id: labelId,
|
|
373
|
-
"aria-controls": contentId,
|
|
374
|
-
onClick: () => setIsOpen((prev) => !prev)
|
|
375
|
-
},
|
|
376
|
-
/* @__PURE__ */ React10.createElement(import_ui6.ListItemText, { secondary: title }),
|
|
377
|
-
/* @__PURE__ */ React10.createElement(CollapseIcon, { open: isOpen, color: "secondary" })
|
|
378
|
-
), /* @__PURE__ */ React10.createElement(import_ui6.Collapse, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React10.createElement(import_ui6.Stack, { gap: 2.5, p: 2 }, children)), /* @__PURE__ */ React10.createElement(import_ui6.Divider, null));
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
// src/components/sections-list.tsx
|
|
382
|
-
var React11 = __toESM(require("react"));
|
|
383
|
-
var import_ui7 = require("@elementor/ui");
|
|
384
|
-
function SectionsList(props) {
|
|
385
|
-
return /* @__PURE__ */ React11.createElement(import_ui7.List, { disablePadding: true, component: "div", ...props });
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
// src/components/settings-tab.tsx
|
|
389
|
-
var SettingsTab = () => {
|
|
390
|
-
const { elementType, element } = useElement();
|
|
391
|
-
return /* @__PURE__ */ React12.createElement(import_session.SessionStorageProvider, { prefix: element.id }, /* @__PURE__ */ React12.createElement(SectionsList, null, elementType.controls.map(({ type, value }, index) => {
|
|
392
|
-
if (type === "control") {
|
|
393
|
-
return /* @__PURE__ */ React12.createElement(Control2, { key: value.bind, control: value });
|
|
394
|
-
}
|
|
395
|
-
if (type === "section") {
|
|
396
|
-
return /* @__PURE__ */ React12.createElement(Section, { title: value.label, key: type + "." + index, defaultExpanded: true }, value.items?.map((item) => {
|
|
397
|
-
if (item.type === "control") {
|
|
398
|
-
return /* @__PURE__ */ React12.createElement(Control2, { key: item.value.bind, control: item.value });
|
|
399
|
-
}
|
|
400
|
-
return null;
|
|
401
|
-
}));
|
|
402
|
-
}
|
|
403
|
-
return null;
|
|
404
|
-
})));
|
|
405
|
-
};
|
|
406
|
-
var Control2 = ({ control }) => {
|
|
407
|
-
if (!getControlByType(control.type)) {
|
|
408
|
-
return null;
|
|
409
|
-
}
|
|
410
|
-
return /* @__PURE__ */ React12.createElement(SettingsField, { bind: control.bind }, /* @__PURE__ */ React12.createElement(ControlTypeContainer, { controlType: control.type }, control.label ? /* @__PURE__ */ React12.createElement(import_editor_controls4.ControlLabel, null, control.label) : null, /* @__PURE__ */ React12.createElement(Control, { type: control.type, props: control.props })));
|
|
411
|
-
};
|
|
412
|
-
|
|
413
|
-
// src/components/style-tab.tsx
|
|
414
|
-
var React60 = __toESM(require("react"));
|
|
415
|
-
var import_react15 = require("react");
|
|
416
|
-
var import_editor_elements5 = require("@elementor/editor-elements");
|
|
417
|
-
var import_editor_responsive = require("@elementor/editor-responsive");
|
|
418
|
-
var import_session2 = require("@elementor/session");
|
|
419
|
-
var import_ui49 = require("@elementor/ui");
|
|
420
|
-
var import_i18n38 = require("@wordpress/i18n");
|
|
421
|
-
|
|
422
|
-
// src/contexts/classes-prop-context.tsx
|
|
423
|
-
var React13 = __toESM(require("react"));
|
|
424
|
-
var import_react6 = require("react");
|
|
425
|
-
var Context3 = (0, import_react6.createContext)(null);
|
|
426
|
-
function ClassesPropProvider({ children, prop }) {
|
|
427
|
-
return /* @__PURE__ */ React13.createElement(Context3.Provider, { value: { prop } }, children);
|
|
186
|
+
var Context3 = (0, import_react4.createContext)(null);
|
|
187
|
+
function ElementProvider({ children, element, elementType }) {
|
|
188
|
+
return /* @__PURE__ */ React5.createElement(Context3.Provider, { value: { element, elementType } }, children);
|
|
428
189
|
}
|
|
429
|
-
function
|
|
430
|
-
const context = (0,
|
|
190
|
+
function useElement() {
|
|
191
|
+
const context = (0, import_react4.useContext)(Context3);
|
|
431
192
|
if (!context) {
|
|
432
|
-
throw new Error("
|
|
193
|
+
throw new Error("useElement must be used within a ElementProvider");
|
|
433
194
|
}
|
|
434
|
-
return context
|
|
195
|
+
return context;
|
|
435
196
|
}
|
|
436
197
|
|
|
437
|
-
// src/components/css-class-selector.tsx
|
|
438
|
-
var React17 = __toESM(require("react"));
|
|
439
|
-
var import_react10 = require("react");
|
|
440
|
-
var import_editor_elements2 = require("@elementor/editor-elements");
|
|
441
|
-
var import_editor_props = require("@elementor/editor-props");
|
|
442
|
-
var import_editor_styles_repository = require("@elementor/editor-styles-repository");
|
|
443
|
-
var import_icons4 = require("@elementor/icons");
|
|
444
|
-
var import_ui11 = require("@elementor/ui");
|
|
445
|
-
var import_i18n2 = require("@wordpress/i18n");
|
|
446
|
-
|
|
447
198
|
// src/components/conditional-tooltip-wrapper.tsx
|
|
448
|
-
var
|
|
449
|
-
var
|
|
450
|
-
var
|
|
199
|
+
var import_react5 = require("react");
|
|
200
|
+
var React6 = __toESM(require("react"));
|
|
201
|
+
var import_ui2 = require("@elementor/ui");
|
|
451
202
|
var ConditionalTooltipWrapper = ({ maxWidth, title }) => {
|
|
452
|
-
const elRef = (0,
|
|
453
|
-
const [isOverflown, setIsOverflown] = (0,
|
|
454
|
-
(0,
|
|
203
|
+
const elRef = (0, import_react5.useRef)(null);
|
|
204
|
+
const [isOverflown, setIsOverflown] = (0, import_react5.useState)(false);
|
|
205
|
+
(0, import_react5.useEffect)(() => {
|
|
455
206
|
const onResize = () => {
|
|
456
207
|
const element = elRef.current;
|
|
457
208
|
if (element) {
|
|
@@ -465,12 +216,12 @@ var ConditionalTooltipWrapper = ({ maxWidth, title }) => {
|
|
|
465
216
|
};
|
|
466
217
|
}, []);
|
|
467
218
|
if (isOverflown) {
|
|
468
|
-
return /* @__PURE__ */
|
|
219
|
+
return /* @__PURE__ */ React6.createElement(import_ui2.Tooltip, { title, placement: "top" }, /* @__PURE__ */ React6.createElement(Content, { maxWidth, ref: elRef }, title));
|
|
469
220
|
}
|
|
470
|
-
return /* @__PURE__ */
|
|
221
|
+
return /* @__PURE__ */ React6.createElement(Content, { maxWidth, ref: elRef }, title);
|
|
471
222
|
};
|
|
472
|
-
var Content =
|
|
473
|
-
|
|
223
|
+
var Content = React6.forwardRef(({ maxWidth, ...tooltipProps }, ref) => /* @__PURE__ */ React6.createElement(
|
|
224
|
+
import_ui2.Box,
|
|
474
225
|
{
|
|
475
226
|
ref,
|
|
476
227
|
position: "relative",
|
|
@@ -478,12 +229,12 @@ var Content = React14.forwardRef(({ maxWidth, ...tooltipProps }, ref) => /* @__P
|
|
|
478
229
|
...tooltipProps
|
|
479
230
|
}
|
|
480
231
|
));
|
|
481
|
-
|
|
482
|
-
// src/components/editable-field.tsx
|
|
483
|
-
var
|
|
484
|
-
var
|
|
485
|
-
var
|
|
486
|
-
var Context4 = (0,
|
|
232
|
+
|
|
233
|
+
// src/components/editable-field.tsx
|
|
234
|
+
var React7 = __toESM(require("react"));
|
|
235
|
+
var import_react6 = require("react");
|
|
236
|
+
var import_ui3 = require("@elementor/ui");
|
|
237
|
+
var Context4 = (0, import_react6.createContext)(null);
|
|
487
238
|
var EditableFieldProvider = ({
|
|
488
239
|
children,
|
|
489
240
|
value,
|
|
@@ -491,9 +242,9 @@ var EditableFieldProvider = ({
|
|
|
491
242
|
validation,
|
|
492
243
|
editable
|
|
493
244
|
}) => {
|
|
494
|
-
const [isEditing, setIsEditing] = (0,
|
|
495
|
-
const [submitting, setSubmitting] = (0,
|
|
496
|
-
const [error, setError] = (0,
|
|
245
|
+
const [isEditing, setIsEditing] = (0, import_react6.useState)(false);
|
|
246
|
+
const [submitting, setSubmitting] = (0, import_react6.useState)(false);
|
|
247
|
+
const [error, setError] = (0, import_react6.useState)(null);
|
|
497
248
|
const openEditMode = () => {
|
|
498
249
|
setIsEditing(true);
|
|
499
250
|
};
|
|
@@ -518,7 +269,7 @@ var EditableFieldProvider = ({
|
|
|
518
269
|
setError(validation(newValue));
|
|
519
270
|
}
|
|
520
271
|
};
|
|
521
|
-
return /* @__PURE__ */
|
|
272
|
+
return /* @__PURE__ */ React7.createElement(
|
|
522
273
|
Context4.Provider,
|
|
523
274
|
{
|
|
524
275
|
value: {
|
|
@@ -536,10 +287,10 @@ var EditableFieldProvider = ({
|
|
|
536
287
|
children
|
|
537
288
|
);
|
|
538
289
|
};
|
|
539
|
-
var EditableField = ({ children, ...props }) => {
|
|
540
|
-
const ref = (0,
|
|
290
|
+
var EditableField = ({ children, onClick, ...props }) => {
|
|
291
|
+
const ref = (0, import_react6.useRef)(null);
|
|
541
292
|
const { isEditing, closeEditMode, value, onChange, error, submit, editable } = useEditableField();
|
|
542
|
-
(0,
|
|
293
|
+
(0, import_react6.useEffect)(() => {
|
|
543
294
|
if (isEditing) {
|
|
544
295
|
ref.current?.focus();
|
|
545
296
|
selectAll();
|
|
@@ -555,6 +306,12 @@ var EditableField = ({ children, ...props }) => {
|
|
|
555
306
|
return submit(event.target.innerText);
|
|
556
307
|
}
|
|
557
308
|
};
|
|
309
|
+
const handleClick = (event) => {
|
|
310
|
+
if (isEditing) {
|
|
311
|
+
event.stopPropagation();
|
|
312
|
+
}
|
|
313
|
+
onClick?.(event);
|
|
314
|
+
};
|
|
558
315
|
const selectAll = () => {
|
|
559
316
|
const selection = getSelection();
|
|
560
317
|
if (!selection || !ref.current) {
|
|
@@ -568,7 +325,7 @@ var EditableField = ({ children, ...props }) => {
|
|
|
568
325
|
if (!editable) {
|
|
569
326
|
return children;
|
|
570
327
|
}
|
|
571
|
-
return /* @__PURE__ */
|
|
328
|
+
return /* @__PURE__ */ React7.createElement(import_ui3.Tooltip, { open: !!error, title: error, placement: "top" }, /* @__PURE__ */ React7.createElement("div", { onKeyDown: handleKeyDown, onClick: handleClick, ...props }, /* @__PURE__ */ React7.createElement(
|
|
572
329
|
"span",
|
|
573
330
|
{
|
|
574
331
|
ref,
|
|
@@ -582,7 +339,7 @@ var EditableField = ({ children, ...props }) => {
|
|
|
582
339
|
)));
|
|
583
340
|
};
|
|
584
341
|
var useEditableField = () => {
|
|
585
|
-
const contextValue = (0,
|
|
342
|
+
const contextValue = (0, import_react6.useContext)(Context4);
|
|
586
343
|
if (!contextValue) {
|
|
587
344
|
throw new Error("useEditableField must be used within a EditableFieldProvider");
|
|
588
345
|
}
|
|
@@ -590,9 +347,9 @@ var useEditableField = () => {
|
|
|
590
347
|
};
|
|
591
348
|
|
|
592
349
|
// src/components/multi-combobox.tsx
|
|
593
|
-
var
|
|
594
|
-
var
|
|
595
|
-
var
|
|
350
|
+
var React8 = __toESM(require("react"));
|
|
351
|
+
var import_react7 = require("react");
|
|
352
|
+
var import_ui4 = require("@elementor/ui");
|
|
596
353
|
function MultiCombobox({
|
|
597
354
|
actions = [],
|
|
598
355
|
selected,
|
|
@@ -602,8 +359,8 @@ function MultiCombobox({
|
|
|
602
359
|
}) {
|
|
603
360
|
const filter = useFilterOptions();
|
|
604
361
|
const { run, loading } = useActionRunner();
|
|
605
|
-
return /* @__PURE__ */
|
|
606
|
-
|
|
362
|
+
return /* @__PURE__ */ React8.createElement(
|
|
363
|
+
import_ui4.Autocomplete,
|
|
607
364
|
{
|
|
608
365
|
...props,
|
|
609
366
|
freeSolo: true,
|
|
@@ -615,8 +372,8 @@ function MultiCombobox({
|
|
|
615
372
|
disabled: loading,
|
|
616
373
|
value: selected,
|
|
617
374
|
options: options10,
|
|
618
|
-
renderGroup: (params) => /* @__PURE__ */
|
|
619
|
-
renderInput: (params) => /* @__PURE__ */
|
|
375
|
+
renderGroup: (params) => /* @__PURE__ */ React8.createElement(Group, { ...params }),
|
|
376
|
+
renderInput: (params) => /* @__PURE__ */ React8.createElement(import_ui4.TextField, { ...params }),
|
|
620
377
|
onChange: (_, selectedOrInputValue, reason) => {
|
|
621
378
|
const inputValue = selectedOrInputValue.find((option) => typeof option === "string");
|
|
622
379
|
const optionsAndActions = selectedOrInputValue.filter((option) => typeof option !== "string");
|
|
@@ -655,28 +412,28 @@ function MultiCombobox({
|
|
|
655
412
|
);
|
|
656
413
|
}
|
|
657
414
|
var Group = (params) => {
|
|
658
|
-
const id = `combobox-group-${(0,
|
|
659
|
-
return /* @__PURE__ */
|
|
415
|
+
const id = `combobox-group-${(0, import_react7.useId)().replace(/:/g, "_")}`;
|
|
416
|
+
return /* @__PURE__ */ React8.createElement(StyledGroup, { role: "group", "aria-labelledby": id }, /* @__PURE__ */ React8.createElement(StyledGroupHeader, { id }, " ", params.group), /* @__PURE__ */ React8.createElement(StyledGroupItems, { role: "listbox" }, params.children));
|
|
660
417
|
};
|
|
661
|
-
var StyledGroup = (0,
|
|
418
|
+
var StyledGroup = (0, import_ui4.styled)("li")`
|
|
662
419
|
&:not( :last-of-type ) {
|
|
663
420
|
border-bottom: 1px solid ${({ theme }) => theme.palette.divider};
|
|
664
421
|
}
|
|
665
422
|
`;
|
|
666
|
-
var StyledGroupHeader = (0,
|
|
423
|
+
var StyledGroupHeader = (0, import_ui4.styled)(import_ui4.Box)(({ theme }) => ({
|
|
667
424
|
position: "sticky",
|
|
668
425
|
top: "-8px",
|
|
669
426
|
padding: theme.spacing(1, 2),
|
|
670
427
|
color: theme.palette.text.tertiary
|
|
671
428
|
}));
|
|
672
|
-
var StyledGroupItems = (0,
|
|
429
|
+
var StyledGroupItems = (0, import_ui4.styled)("ul")`
|
|
673
430
|
padding: 0;
|
|
674
431
|
`;
|
|
675
432
|
function useFilterOptions() {
|
|
676
|
-
return (0,
|
|
433
|
+
return (0, import_react7.useState)(() => (0, import_ui4.createFilterOptions)())[0];
|
|
677
434
|
}
|
|
678
435
|
function useActionRunner() {
|
|
679
|
-
const [loading, setLoading] = (0,
|
|
436
|
+
const [loading, setLoading] = (0, import_react7.useState)(false);
|
|
680
437
|
const run = async (apply, value) => {
|
|
681
438
|
setLoading(true);
|
|
682
439
|
try {
|
|
@@ -711,6 +468,7 @@ var EMPTY_OPTION = {
|
|
|
711
468
|
color: "primary",
|
|
712
469
|
provider: import_editor_styles_repository.ELEMENTS_STYLES_PROVIDER_KEY
|
|
713
470
|
};
|
|
471
|
+
var { Slot: ClassSelectorActionsSlot, inject: injectIntoClassSelectorActions } = (0, import_locations.createLocation)();
|
|
714
472
|
function CssClassSelector() {
|
|
715
473
|
const options10 = useOptions();
|
|
716
474
|
const { value: appliedIds, setValue: setAppliedIds, pushValue: pushAppliedId } = useAppliedClassesIds();
|
|
@@ -720,7 +478,7 @@ function CssClassSelector() {
|
|
|
720
478
|
const handleActivate = ({ value }) => setActiveId(value);
|
|
721
479
|
const applied = useAppliedOptions(options10, appliedIds);
|
|
722
480
|
const active = applied.find((option) => option.value === activeId) ?? EMPTY_OPTION;
|
|
723
|
-
return /* @__PURE__ */
|
|
481
|
+
return /* @__PURE__ */ React9.createElement(import_ui5.Stack, { gap: 1, p: 2 }, /* @__PURE__ */ React9.createElement(import_ui5.Stack, { direction: "row", gap: 1, alignItems: "baseline", justifyContent: "space-between" }, /* @__PURE__ */ React9.createElement(import_ui5.Typography, { component: "label", variant: "caption", htmlFor: ID }, (0, import_i18n2.__)("CSS Classes", "elementor")), /* @__PURE__ */ React9.createElement(import_ui5.Stack, { direction: "row", gap: 1 }, /* @__PURE__ */ React9.createElement(ClassSelectorActionsSlot, null))), /* @__PURE__ */ React9.createElement(
|
|
724
482
|
MultiCombobox,
|
|
725
483
|
{
|
|
726
484
|
id: ID,
|
|
@@ -730,14 +488,14 @@ function CssClassSelector() {
|
|
|
730
488
|
onSelect: handleApply,
|
|
731
489
|
limitTags: TAGS_LIMIT,
|
|
732
490
|
actions,
|
|
733
|
-
getLimitTagsText: (more) => /* @__PURE__ */
|
|
491
|
+
getLimitTagsText: (more) => /* @__PURE__ */ React9.createElement(import_ui5.Chip, { size: "tiny", variant: "standard", label: `+${more}`, clickable: true }),
|
|
734
492
|
renderTags: (values, getTagProps) => values.map((value, index) => {
|
|
735
493
|
const chipProps = getTagProps({ index });
|
|
736
494
|
const isActive = value.value === active?.value;
|
|
737
495
|
const renameLabel = (newLabel) => {
|
|
738
496
|
return updateClassByProvider(value.provider, { label: newLabel, id: value.value });
|
|
739
497
|
};
|
|
740
|
-
return /* @__PURE__ */
|
|
498
|
+
return /* @__PURE__ */ React9.createElement(
|
|
741
499
|
EditableFieldProvider,
|
|
742
500
|
{
|
|
743
501
|
key: chipProps.key,
|
|
@@ -749,7 +507,7 @@ function CssClassSelector() {
|
|
|
749
507
|
options10.filter((option) => option.value !== value.value)
|
|
750
508
|
)
|
|
751
509
|
},
|
|
752
|
-
/* @__PURE__ */
|
|
510
|
+
/* @__PURE__ */ React9.createElement(
|
|
753
511
|
CssClassItem,
|
|
754
512
|
{
|
|
755
513
|
label: value.label,
|
|
@@ -777,18 +535,18 @@ function CssClassItem({
|
|
|
777
535
|
onClickActive
|
|
778
536
|
}) {
|
|
779
537
|
const { meta } = useStyle();
|
|
780
|
-
const popupId = (0,
|
|
781
|
-
const popupState = (0,
|
|
782
|
-
const chipRef = (0,
|
|
538
|
+
const popupId = (0, import_react8.useId)().replace(/:/g, "_");
|
|
539
|
+
const popupState = (0, import_ui5.usePopupState)({ variant: "popover", popupId });
|
|
540
|
+
const chipRef = (0, import_react8.useRef)(null);
|
|
783
541
|
const { onDelete, ...chipGroupProps } = chipProps;
|
|
784
542
|
const { isEditing, openEditMode, error, submitting } = useEditableField();
|
|
785
543
|
const color = error ? "error" : colorProp;
|
|
786
|
-
return /* @__PURE__ */
|
|
787
|
-
|
|
544
|
+
return /* @__PURE__ */ React9.createElement(CssClassItemProvider, { styleId: id, isActive, isGlobal }, /* @__PURE__ */ React9.createElement(import_ui5.UnstableChipGroup, { ref: chipRef, ...chipGroupProps, "aria-label": `Edit ${label}`, role: "group" }, /* @__PURE__ */ React9.createElement(
|
|
545
|
+
import_ui5.Chip,
|
|
788
546
|
{
|
|
789
547
|
disabled: submitting,
|
|
790
548
|
size: CHIP_SIZE,
|
|
791
|
-
label: /* @__PURE__ */
|
|
549
|
+
label: /* @__PURE__ */ React9.createElement(
|
|
792
550
|
EditableField,
|
|
793
551
|
{
|
|
794
552
|
onDoubleClick: () => {
|
|
@@ -802,7 +560,7 @@ function CssClassItem({
|
|
|
802
560
|
}
|
|
803
561
|
}
|
|
804
562
|
},
|
|
805
|
-
/* @__PURE__ */
|
|
563
|
+
/* @__PURE__ */ React9.createElement(ConditionalTooltipWrapper, { maxWidth: "10ch", title: label })
|
|
806
564
|
),
|
|
807
565
|
variant: isActive && !meta.state ? "filled" : "standard",
|
|
808
566
|
color,
|
|
@@ -814,18 +572,18 @@ function CssClassItem({
|
|
|
814
572
|
}
|
|
815
573
|
}
|
|
816
574
|
}
|
|
817
|
-
), !isEditing && /* @__PURE__ */
|
|
818
|
-
|
|
575
|
+
), !isEditing && /* @__PURE__ */ React9.createElement(
|
|
576
|
+
import_ui5.Chip,
|
|
819
577
|
{
|
|
820
578
|
disabled: submitting,
|
|
821
579
|
size: CHIP_SIZE,
|
|
822
|
-
label: /* @__PURE__ */
|
|
580
|
+
label: /* @__PURE__ */ React9.createElement(import_ui5.Stack, { direction: "row", gap: 0.5, alignItems: "center" }, isActive && meta.state && /* @__PURE__ */ React9.createElement(import_ui5.Typography, { variant: "inherit" }, meta.state), /* @__PURE__ */ React9.createElement(import_icons2.DotsVerticalIcon, { fontSize: "inherit" })),
|
|
823
581
|
variant: "filled",
|
|
824
582
|
color,
|
|
825
|
-
...(0,
|
|
583
|
+
...(0, import_ui5.bindTrigger)(popupState),
|
|
826
584
|
"aria-label": (0, import_i18n2.__)("Open CSS Class Menu", "elementor")
|
|
827
585
|
}
|
|
828
|
-
)), /* @__PURE__ */
|
|
586
|
+
)), /* @__PURE__ */ React9.createElement(CssClassMenu, { popupState, containerRef: chipRef }));
|
|
829
587
|
}
|
|
830
588
|
var updateClassByProvider = (provider, data) => {
|
|
831
589
|
const providerInstance = import_editor_styles_repository.stylesRepository.getProviderByKey(provider);
|
|
@@ -911,9 +669,9 @@ function useAppliedOptions(options10, appliedIds) {
|
|
|
911
669
|
function useAppliedClassesIds() {
|
|
912
670
|
const { element } = useElement();
|
|
913
671
|
const currentClassesProp = useClassesProp();
|
|
914
|
-
const value = (0,
|
|
672
|
+
const value = (0, import_editor_elements.useElementSetting)(element.id, currentClassesProp)?.value || [];
|
|
915
673
|
const setValue = (ids) => {
|
|
916
|
-
(0,
|
|
674
|
+
(0, import_editor_elements.updateElementSettings)({
|
|
917
675
|
id: element.id,
|
|
918
676
|
props: {
|
|
919
677
|
[currentClassesProp]: import_editor_props.classesPropTypeUtil.create(ids)
|
|
@@ -921,7 +679,7 @@ function useAppliedClassesIds() {
|
|
|
921
679
|
});
|
|
922
680
|
};
|
|
923
681
|
const pushValue = (id) => {
|
|
924
|
-
const ids = (0,
|
|
682
|
+
const ids = (0, import_editor_elements.getElementSetting)(element.id, currentClassesProp)?.value || [];
|
|
925
683
|
setValue([...ids, id]);
|
|
926
684
|
};
|
|
927
685
|
return {
|
|
@@ -951,6 +709,249 @@ function useHandleApply(appliedIds, setAppliedIds) {
|
|
|
951
709
|
};
|
|
952
710
|
}
|
|
953
711
|
|
|
712
|
+
// src/panel.ts
|
|
713
|
+
var import_editor_panels2 = require("@elementor/editor-panels");
|
|
714
|
+
|
|
715
|
+
// src/components/editing-panel.tsx
|
|
716
|
+
var React62 = __toESM(require("react"));
|
|
717
|
+
var import_editor_controls41 = require("@elementor/editor-controls");
|
|
718
|
+
var import_editor_elements6 = require("@elementor/editor-elements");
|
|
719
|
+
var import_editor_panels = require("@elementor/editor-panels");
|
|
720
|
+
var import_session3 = require("@elementor/session");
|
|
721
|
+
var import_ui51 = require("@elementor/ui");
|
|
722
|
+
var import_i18n40 = require("@wordpress/i18n");
|
|
723
|
+
|
|
724
|
+
// src/controls-actions.ts
|
|
725
|
+
var import_menus2 = require("@elementor/menus");
|
|
726
|
+
|
|
727
|
+
// src/popover-action.tsx
|
|
728
|
+
var React10 = __toESM(require("react"));
|
|
729
|
+
var import_react9 = require("react");
|
|
730
|
+
var import_icons3 = require("@elementor/icons");
|
|
731
|
+
var import_ui6 = require("@elementor/ui");
|
|
732
|
+
var SIZE = "tiny";
|
|
733
|
+
function PopoverAction({
|
|
734
|
+
title,
|
|
735
|
+
visible = true,
|
|
736
|
+
icon: Icon,
|
|
737
|
+
popoverContent: PopoverContent
|
|
738
|
+
}) {
|
|
739
|
+
const id = (0, import_react9.useId)();
|
|
740
|
+
const popupState = (0, import_ui6.usePopupState)({
|
|
741
|
+
variant: "popover",
|
|
742
|
+
popupId: `elementor-popover-action-${id}`
|
|
743
|
+
});
|
|
744
|
+
if (!visible) {
|
|
745
|
+
return null;
|
|
746
|
+
}
|
|
747
|
+
return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(import_ui6.Tooltip, { placement: "top", title }, /* @__PURE__ */ React10.createElement(import_ui6.IconButton, { "aria-label": title, key: id, size: SIZE, ...(0, import_ui6.bindToggle)(popupState) }, /* @__PURE__ */ React10.createElement(Icon, { fontSize: SIZE }))), /* @__PURE__ */ React10.createElement(
|
|
748
|
+
import_ui6.Popover,
|
|
749
|
+
{
|
|
750
|
+
disablePortal: true,
|
|
751
|
+
disableScrollLock: true,
|
|
752
|
+
anchorOrigin: {
|
|
753
|
+
vertical: "bottom",
|
|
754
|
+
horizontal: "center"
|
|
755
|
+
},
|
|
756
|
+
...(0, import_ui6.bindPopover)(popupState)
|
|
757
|
+
},
|
|
758
|
+
/* @__PURE__ */ React10.createElement(import_ui6.Stack, { direction: "row", alignItems: "center", pl: 1.5, pr: 0.5, py: 1.5 }, /* @__PURE__ */ React10.createElement(Icon, { fontSize: SIZE, sx: { mr: 0.5 } }), /* @__PURE__ */ React10.createElement(import_ui6.Typography, { variant: "subtitle2" }, title), /* @__PURE__ */ React10.createElement(import_ui6.IconButton, { sx: { ml: "auto" }, size: SIZE, onClick: popupState.close }, /* @__PURE__ */ React10.createElement(import_icons3.XIcon, { fontSize: SIZE }))),
|
|
759
|
+
/* @__PURE__ */ React10.createElement(PopoverContent, { closePopover: popupState.close })
|
|
760
|
+
));
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
// src/controls-actions.ts
|
|
764
|
+
var controlActionsMenu = (0, import_menus2.createMenu)({
|
|
765
|
+
components: {
|
|
766
|
+
PopoverAction
|
|
767
|
+
}
|
|
768
|
+
});
|
|
769
|
+
|
|
770
|
+
// src/components/editing-panel-error-fallback.tsx
|
|
771
|
+
var React11 = __toESM(require("react"));
|
|
772
|
+
var import_ui7 = require("@elementor/ui");
|
|
773
|
+
function EditorPanelErrorFallback() {
|
|
774
|
+
return /* @__PURE__ */ React11.createElement(import_ui7.Box, { role: "alert", sx: { minHeight: "100%", p: 2 } }, /* @__PURE__ */ React11.createElement(import_ui7.Alert, { severity: "error", sx: { mb: 2, maxWidth: 400, textAlign: "center" } }, /* @__PURE__ */ React11.createElement("strong", null, "Something went wrong")));
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
// src/components/editing-panel-tabs.tsx
|
|
778
|
+
var React61 = __toESM(require("react"));
|
|
779
|
+
var import_react17 = require("react");
|
|
780
|
+
var import_ui50 = require("@elementor/ui");
|
|
781
|
+
var import_i18n39 = require("@wordpress/i18n");
|
|
782
|
+
|
|
783
|
+
// src/components/settings-tab.tsx
|
|
784
|
+
var React17 = __toESM(require("react"));
|
|
785
|
+
var import_editor_controls4 = require("@elementor/editor-controls");
|
|
786
|
+
var import_session = require("@elementor/session");
|
|
787
|
+
|
|
788
|
+
// src/controls-registry/control.tsx
|
|
789
|
+
var React12 = __toESM(require("react"));
|
|
790
|
+
var import_utils = require("@elementor/utils");
|
|
791
|
+
|
|
792
|
+
// src/controls-registry/controls-registry.tsx
|
|
793
|
+
var import_editor_controls2 = require("@elementor/editor-controls");
|
|
794
|
+
var controlTypes = {
|
|
795
|
+
image: { component: import_editor_controls2.ImageControl, layout: "full" },
|
|
796
|
+
text: { component: import_editor_controls2.TextControl, layout: "two-columns" },
|
|
797
|
+
textarea: { component: import_editor_controls2.TextAreaControl, layout: "full" },
|
|
798
|
+
size: { component: import_editor_controls2.SizeControl, layout: "two-columns" },
|
|
799
|
+
select: { component: import_editor_controls2.SelectControl, layout: "two-columns" },
|
|
800
|
+
link: { component: import_editor_controls2.LinkControl, layout: "full" },
|
|
801
|
+
url: { component: import_editor_controls2.UrlControl, layout: "full" }
|
|
802
|
+
};
|
|
803
|
+
var getControlByType = (type) => controlTypes[type]?.component;
|
|
804
|
+
var getLayoutByType = (type) => controlTypes[type].layout;
|
|
805
|
+
|
|
806
|
+
// src/controls-registry/control.tsx
|
|
807
|
+
var ControlTypeError = (0, import_utils.createError)({
|
|
808
|
+
code: "CONTROL_TYPE_NOT_FOUND",
|
|
809
|
+
message: `Control type not found.`
|
|
810
|
+
});
|
|
811
|
+
var Control = ({ props, type }) => {
|
|
812
|
+
const ControlByType = getControlByType(type);
|
|
813
|
+
if (!ControlByType) {
|
|
814
|
+
throw new ControlTypeError({
|
|
815
|
+
context: { type }
|
|
816
|
+
});
|
|
817
|
+
}
|
|
818
|
+
return /* @__PURE__ */ React12.createElement(ControlByType, { ...props });
|
|
819
|
+
};
|
|
820
|
+
|
|
821
|
+
// src/controls-registry/control-type-container.tsx
|
|
822
|
+
var React13 = __toESM(require("react"));
|
|
823
|
+
var import_ui8 = require("@elementor/ui");
|
|
824
|
+
var ControlTypeContainer = ({
|
|
825
|
+
controlType,
|
|
826
|
+
children
|
|
827
|
+
}) => {
|
|
828
|
+
const layout = getLayoutByType(controlType);
|
|
829
|
+
return /* @__PURE__ */ React13.createElement(StyledContainer, { layout }, children);
|
|
830
|
+
};
|
|
831
|
+
var StyledContainer = (0, import_ui8.styled)(import_ui8.Box, {
|
|
832
|
+
shouldForwardProp: (prop) => !["layout"].includes(prop)
|
|
833
|
+
})(({ layout, theme }) => ({
|
|
834
|
+
display: "grid",
|
|
835
|
+
gridGap: theme.spacing(1),
|
|
836
|
+
...getGridLayout(layout)
|
|
837
|
+
}));
|
|
838
|
+
var getGridLayout = (layout) => ({
|
|
839
|
+
justifyContent: "space-between",
|
|
840
|
+
gridTemplateColumns: {
|
|
841
|
+
full: "1fr",
|
|
842
|
+
"two-columns": "repeat(2, 1fr)"
|
|
843
|
+
}[layout]
|
|
844
|
+
});
|
|
845
|
+
|
|
846
|
+
// src/controls-registry/settings-field.tsx
|
|
847
|
+
var React14 = __toESM(require("react"));
|
|
848
|
+
var import_editor_controls3 = require("@elementor/editor-controls");
|
|
849
|
+
var import_editor_elements2 = require("@elementor/editor-elements");
|
|
850
|
+
|
|
851
|
+
// src/controls-registry/create-top-level-object-type.ts
|
|
852
|
+
var createTopLevelOjectType = ({ schema }) => {
|
|
853
|
+
const schemaPropType = {
|
|
854
|
+
key: "",
|
|
855
|
+
kind: "object",
|
|
856
|
+
meta: {},
|
|
857
|
+
settings: {},
|
|
858
|
+
default: null,
|
|
859
|
+
shape: schema
|
|
860
|
+
};
|
|
861
|
+
return schemaPropType;
|
|
862
|
+
};
|
|
863
|
+
|
|
864
|
+
// src/controls-registry/settings-field.tsx
|
|
865
|
+
var SettingsField = ({ bind, children }) => {
|
|
866
|
+
const { element, elementType } = useElement();
|
|
867
|
+
const settingsValue = (0, import_editor_elements2.useElementSetting)(element.id, bind);
|
|
868
|
+
const value = { [bind]: settingsValue };
|
|
869
|
+
const propType = createTopLevelOjectType({ schema: elementType.propsSchema });
|
|
870
|
+
const setValue = (newValue) => {
|
|
871
|
+
(0, import_editor_elements2.updateElementSettings)({
|
|
872
|
+
id: element.id,
|
|
873
|
+
props: { ...newValue }
|
|
874
|
+
});
|
|
875
|
+
};
|
|
876
|
+
return /* @__PURE__ */ React14.createElement(import_editor_controls3.PropProvider, { propType, value, setValue }, /* @__PURE__ */ React14.createElement(import_editor_controls3.PropKeyProvider, { bind }, children));
|
|
877
|
+
};
|
|
878
|
+
|
|
879
|
+
// src/components/section.tsx
|
|
880
|
+
var React15 = __toESM(require("react"));
|
|
881
|
+
var import_react10 = require("react");
|
|
882
|
+
var import_ui10 = require("@elementor/ui");
|
|
883
|
+
|
|
884
|
+
// src/components/collapse-icon.tsx
|
|
885
|
+
var import_icons4 = require("@elementor/icons");
|
|
886
|
+
var import_ui9 = require("@elementor/ui");
|
|
887
|
+
var CollapseIcon = (0, import_ui9.styled)(import_icons4.ChevronDownIcon, {
|
|
888
|
+
shouldForwardProp: (prop) => prop !== "open"
|
|
889
|
+
})(({ theme, open }) => ({
|
|
890
|
+
transform: open ? "rotate(180deg)" : "rotate(0deg)",
|
|
891
|
+
transition: theme.transitions.create("transform", {
|
|
892
|
+
duration: theme.transitions.duration.standard
|
|
893
|
+
})
|
|
894
|
+
}));
|
|
895
|
+
|
|
896
|
+
// src/components/section.tsx
|
|
897
|
+
function Section({ title, children, defaultExpanded = false }) {
|
|
898
|
+
const [isOpen, setIsOpen] = (0, import_react10.useState)(!!defaultExpanded);
|
|
899
|
+
const id = (0, import_react10.useId)();
|
|
900
|
+
const labelId = `label-${id}`;
|
|
901
|
+
const contentId = `content-${id}`;
|
|
902
|
+
return /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(
|
|
903
|
+
import_ui10.ListItemButton,
|
|
904
|
+
{
|
|
905
|
+
id: labelId,
|
|
906
|
+
"aria-controls": contentId,
|
|
907
|
+
onClick: () => setIsOpen((prev) => !prev)
|
|
908
|
+
},
|
|
909
|
+
/* @__PURE__ */ React15.createElement(import_ui10.ListItemText, { secondary: title }),
|
|
910
|
+
/* @__PURE__ */ React15.createElement(CollapseIcon, { open: isOpen, color: "secondary" })
|
|
911
|
+
), /* @__PURE__ */ React15.createElement(import_ui10.Collapse, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React15.createElement(import_ui10.Stack, { gap: 2.5, p: 2 }, children)), /* @__PURE__ */ React15.createElement(import_ui10.Divider, null));
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
// src/components/sections-list.tsx
|
|
915
|
+
var React16 = __toESM(require("react"));
|
|
916
|
+
var import_ui11 = require("@elementor/ui");
|
|
917
|
+
function SectionsList(props) {
|
|
918
|
+
return /* @__PURE__ */ React16.createElement(import_ui11.List, { disablePadding: true, component: "div", ...props });
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
// src/components/settings-tab.tsx
|
|
922
|
+
var SettingsTab = () => {
|
|
923
|
+
const { elementType, element } = useElement();
|
|
924
|
+
return /* @__PURE__ */ React17.createElement(import_session.SessionStorageProvider, { prefix: element.id }, /* @__PURE__ */ React17.createElement(SectionsList, null, elementType.controls.map(({ type, value }, index) => {
|
|
925
|
+
if (type === "control") {
|
|
926
|
+
return /* @__PURE__ */ React17.createElement(Control2, { key: value.bind, control: value });
|
|
927
|
+
}
|
|
928
|
+
if (type === "section") {
|
|
929
|
+
return /* @__PURE__ */ React17.createElement(Section, { title: value.label, key: type + "." + index, defaultExpanded: true }, value.items?.map((item) => {
|
|
930
|
+
if (item.type === "control") {
|
|
931
|
+
return /* @__PURE__ */ React17.createElement(Control2, { key: item.value.bind, control: item.value });
|
|
932
|
+
}
|
|
933
|
+
return null;
|
|
934
|
+
}));
|
|
935
|
+
}
|
|
936
|
+
return null;
|
|
937
|
+
})));
|
|
938
|
+
};
|
|
939
|
+
var Control2 = ({ control }) => {
|
|
940
|
+
if (!getControlByType(control.type)) {
|
|
941
|
+
return null;
|
|
942
|
+
}
|
|
943
|
+
return /* @__PURE__ */ React17.createElement(SettingsField, { bind: control.bind }, /* @__PURE__ */ React17.createElement(ControlTypeContainer, { controlType: control.type }, control.label ? /* @__PURE__ */ React17.createElement(import_editor_controls4.ControlLabel, null, control.label) : null, /* @__PURE__ */ React17.createElement(Control, { type: control.type, props: control.props })));
|
|
944
|
+
};
|
|
945
|
+
|
|
946
|
+
// src/components/style-tab.tsx
|
|
947
|
+
var React60 = __toESM(require("react"));
|
|
948
|
+
var import_react16 = require("react");
|
|
949
|
+
var import_editor_elements5 = require("@elementor/editor-elements");
|
|
950
|
+
var import_editor_responsive = require("@elementor/editor-responsive");
|
|
951
|
+
var import_session2 = require("@elementor/session");
|
|
952
|
+
var import_ui49 = require("@elementor/ui");
|
|
953
|
+
var import_i18n38 = require("@wordpress/i18n");
|
|
954
|
+
|
|
954
955
|
// src/components/style-sections/background-section/background-section.tsx
|
|
955
956
|
var React19 = __toESM(require("react"));
|
|
956
957
|
var import_editor_controls6 = require("@elementor/editor-controls");
|
|
@@ -973,14 +974,22 @@ function useStylesFields(propNames) {
|
|
|
973
974
|
meta,
|
|
974
975
|
propNames
|
|
975
976
|
});
|
|
976
|
-
const setValue = (
|
|
977
|
-
(
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
977
|
+
const setValue = (props) => {
|
|
978
|
+
if (id === null) {
|
|
979
|
+
(0, import_editor_elements3.createElementStyle)({
|
|
980
|
+
elementId: element.id,
|
|
981
|
+
classesProp,
|
|
982
|
+
meta,
|
|
983
|
+
props,
|
|
984
|
+
label: (0, import_i18n3.__)("local", "elementor")
|
|
985
|
+
});
|
|
986
|
+
return;
|
|
987
|
+
}
|
|
988
|
+
(0, import_editor_elements3.updateElementStyle)({
|
|
989
|
+
elementId: element.id,
|
|
990
|
+
styleId: id,
|
|
991
|
+
props,
|
|
992
|
+
meta
|
|
984
993
|
});
|
|
985
994
|
};
|
|
986
995
|
return [value, setValue];
|
|
@@ -1498,6 +1507,7 @@ var getGroupControlValue = (order) => {
|
|
|
1498
1507
|
|
|
1499
1508
|
// src/components/style-sections/layout-section/flex-size-field.tsx
|
|
1500
1509
|
var React34 = __toESM(require("react"));
|
|
1510
|
+
var import_react13 = require("react");
|
|
1501
1511
|
var import_editor_controls18 = require("@elementor/editor-controls");
|
|
1502
1512
|
var import_icons12 = require("@elementor/icons");
|
|
1503
1513
|
var import_ui24 = require("@elementor/ui");
|
|
@@ -1526,7 +1536,7 @@ var items2 = [
|
|
|
1526
1536
|
var FlexSizeField = () => {
|
|
1527
1537
|
const { isSiteRtl } = useDirection(), [growField, setGrowField] = useStylesField("flex-grow"), [shrinkField, setShrinkField] = useStylesField("flex-shrink"), [basisField, setBasisField] = useStylesField("flex-basis");
|
|
1528
1538
|
const grow = growField?.value || null, shrink = shrinkField?.value || null, basis = basisField?.value || null;
|
|
1529
|
-
const currentGroup =
|
|
1539
|
+
const currentGroup = (0, import_react13.useMemo)(() => getActiveGroup({ grow, shrink, basis }), [grow, shrink, basis]), [activeGroup, setActiveGroup] = (0, import_react13.useState)(currentGroup);
|
|
1530
1540
|
const onChangeGroup = (group = null) => {
|
|
1531
1541
|
setActiveGroup(group);
|
|
1532
1542
|
setBasisField(null);
|
|
@@ -1685,12 +1695,12 @@ var React42 = __toESM(require("react"));
|
|
|
1685
1695
|
var import_ui32 = require("@elementor/ui");
|
|
1686
1696
|
|
|
1687
1697
|
// src/hooks/use-session-storage.ts
|
|
1688
|
-
var
|
|
1698
|
+
var import_react14 = require("react");
|
|
1689
1699
|
var import_utils2 = require("@elementor/utils");
|
|
1690
1700
|
var useSessionStorage = (key) => {
|
|
1691
1701
|
const prefixedKey = `elementor/${key}`;
|
|
1692
|
-
const [value, setValue] = (0,
|
|
1693
|
-
(0,
|
|
1702
|
+
const [value, setValue] = (0, import_react14.useState)();
|
|
1703
|
+
(0, import_react14.useEffect)(() => {
|
|
1694
1704
|
return subscribeToSessionStorage(prefixedKey, (newValue) => {
|
|
1695
1705
|
setValue(newValue ?? null);
|
|
1696
1706
|
});
|
|
@@ -1862,11 +1872,11 @@ var import_ui48 = require("@elementor/ui");
|
|
|
1862
1872
|
|
|
1863
1873
|
// src/components/collapsible-content.tsx
|
|
1864
1874
|
var React46 = __toESM(require("react"));
|
|
1865
|
-
var
|
|
1875
|
+
var import_react15 = require("react");
|
|
1866
1876
|
var import_ui36 = require("@elementor/ui");
|
|
1867
1877
|
var import_i18n25 = require("@wordpress/i18n");
|
|
1868
1878
|
var CollapsibleContent = ({ children, defaultOpen = false }) => {
|
|
1869
|
-
const [open, setOpen] = (0,
|
|
1879
|
+
const [open, setOpen] = (0, import_react15.useState)(defaultOpen);
|
|
1870
1880
|
const handleToggle = () => {
|
|
1871
1881
|
setOpen((prevOpen) => !prevOpen);
|
|
1872
1882
|
};
|
|
@@ -2187,7 +2197,7 @@ var CLASSES_PROP_KEY = "classes";
|
|
|
2187
2197
|
var StyleTab = () => {
|
|
2188
2198
|
const currentClassesProp = useCurrentClassesProp();
|
|
2189
2199
|
const [activeStyleDefId, setActiveStyleDefId] = useActiveStyleDefId(currentClassesProp);
|
|
2190
|
-
const [activeStyleState, setActiveStyleState] = (0,
|
|
2200
|
+
const [activeStyleState, setActiveStyleState] = (0, import_react16.useState)(null);
|
|
2191
2201
|
const breakpoint = (0, import_editor_responsive.useActiveBreakpoint)();
|
|
2192
2202
|
return /* @__PURE__ */ React60.createElement(ClassesPropProvider, { prop: currentClassesProp }, /* @__PURE__ */ React60.createElement(
|
|
2193
2203
|
StyleProvider,
|
|
@@ -2204,7 +2214,7 @@ var StyleTab = () => {
|
|
|
2204
2214
|
));
|
|
2205
2215
|
};
|
|
2206
2216
|
function useActiveStyleDefId(currentClassesProp) {
|
|
2207
|
-
const [activeStyledDefId, setActiveStyledDefId] = (0,
|
|
2217
|
+
const [activeStyledDefId, setActiveStyledDefId] = (0, import_react16.useState)(null);
|
|
2208
2218
|
const fallback = useFirstElementStyleDef(currentClassesProp);
|
|
2209
2219
|
return [activeStyledDefId || fallback?.id || null, setActiveStyledDefId];
|
|
2210
2220
|
}
|
|
@@ -2232,7 +2242,7 @@ var EditingPanelTabs = () => {
|
|
|
2232
2242
|
return (
|
|
2233
2243
|
// When switching between elements, the local states should be reset. We are using key to rerender the tabs.
|
|
2234
2244
|
// Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key
|
|
2235
|
-
/* @__PURE__ */ React61.createElement(
|
|
2245
|
+
/* @__PURE__ */ React61.createElement(import_react17.Fragment, { key: element.id }, /* @__PURE__ */ React61.createElement(import_ui50.Stack, { direction: "column", sx: { width: "100%" } }, /* @__PURE__ */ React61.createElement(import_ui50.Tabs, { variant: "fullWidth", indicatorColor: "secondary", textColor: "inherit", ...getTabsProps() }, /* @__PURE__ */ React61.createElement(import_ui50.Tab, { label: (0, import_i18n39.__)("General", "elementor"), ...getTabProps("settings") }), /* @__PURE__ */ React61.createElement(import_ui50.Tab, { label: (0, import_i18n39.__)("Style", "elementor"), ...getTabProps("style") })), /* @__PURE__ */ React61.createElement(import_ui50.Divider, null), /* @__PURE__ */ React61.createElement(import_ui50.TabPanel, { ...getTabPanelProps("settings"), disablePadding: true }, /* @__PURE__ */ React61.createElement(SettingsTab, null)), /* @__PURE__ */ React61.createElement(import_ui50.TabPanel, { ...getTabPanelProps("style"), disablePadding: true }, /* @__PURE__ */ React61.createElement(StyleTab, null))))
|
|
2236
2246
|
);
|
|
2237
2247
|
};
|
|
2238
2248
|
|
|
@@ -2255,6 +2265,16 @@ var { panel, usePanelActions, usePanelStatus } = (0, import_editor_panels2.__cre
|
|
|
2255
2265
|
component: EditingPanel
|
|
2256
2266
|
});
|
|
2257
2267
|
|
|
2268
|
+
// src/init.ts
|
|
2269
|
+
var import_editor = require("@elementor/editor");
|
|
2270
|
+
var import_editor_panels3 = require("@elementor/editor-panels");
|
|
2271
|
+
var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
|
|
2272
|
+
|
|
2273
|
+
// src/hooks/use-close-editor-panel.ts
|
|
2274
|
+
var import_react18 = require("react");
|
|
2275
|
+
var import_editor_elements8 = require("@elementor/editor-elements");
|
|
2276
|
+
var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
|
|
2277
|
+
|
|
2258
2278
|
// src/sync/is-atomic-widget-selected.ts
|
|
2259
2279
|
var import_editor_elements7 = require("@elementor/editor-elements");
|
|
2260
2280
|
var isAtomicWidgetSelected = () => {
|
|
@@ -2269,7 +2289,7 @@ var isAtomicWidgetSelected = () => {
|
|
|
2269
2289
|
// src/hooks/use-close-editor-panel.ts
|
|
2270
2290
|
var useCloseEditorPanel = () => {
|
|
2271
2291
|
const { close } = usePanelActions();
|
|
2272
|
-
return (0,
|
|
2292
|
+
return (0, import_react18.useEffect)(() => {
|
|
2273
2293
|
return (0, import_editor_v1_adapters2.__privateListenTo)((0, import_editor_v1_adapters2.commandStartEvent)("document/elements/delete"), (e) => {
|
|
2274
2294
|
const selectedElement = (0, import_editor_elements8.getSelectedElements)()[0];
|
|
2275
2295
|
const { container: deletedContainer } = e?.args;
|
|
@@ -2282,11 +2302,11 @@ var useCloseEditorPanel = () => {
|
|
|
2282
2302
|
};
|
|
2283
2303
|
|
|
2284
2304
|
// src/hooks/use-open-editor-panel.ts
|
|
2285
|
-
var
|
|
2305
|
+
var import_react19 = require("react");
|
|
2286
2306
|
var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
|
|
2287
2307
|
var useOpenEditorPanel = () => {
|
|
2288
2308
|
const { open } = usePanelActions();
|
|
2289
|
-
(0,
|
|
2309
|
+
(0, import_react19.useEffect)(() => {
|
|
2290
2310
|
return (0, import_editor_v1_adapters3.__privateListenTo)((0, import_editor_v1_adapters3.commandStartEvent)("panel/editor/open"), () => {
|
|
2291
2311
|
if (isAtomicWidgetSelected()) {
|
|
2292
2312
|
open();
|
|
@@ -2308,9 +2328,9 @@ var useUnapplyClass = (classId) => {
|
|
|
2308
2328
|
const { element } = useElement();
|
|
2309
2329
|
const classesProp = useClassesProp();
|
|
2310
2330
|
const classes = (0, import_editor_elements9.useElementSetting)(element.id, classesProp);
|
|
2311
|
-
const filteredClasses = classes?.value.filter((className) => className !== classId);
|
|
2331
|
+
const filteredClasses = classes?.value.filter((className) => className !== classId) ?? [];
|
|
2312
2332
|
return () => {
|
|
2313
|
-
(0, import_editor_elements9.
|
|
2333
|
+
(0, import_editor_elements9.updateElementSettings)({
|
|
2314
2334
|
id: element.id,
|
|
2315
2335
|
props: {
|
|
2316
2336
|
[classesProp]: {
|
|
@@ -2360,7 +2380,7 @@ function registerGlobalClassItems() {
|
|
|
2360
2380
|
|
|
2361
2381
|
// src/dynamics/components/dynamic-selection-control.tsx
|
|
2362
2382
|
var React65 = __toESM(require("react"));
|
|
2363
|
-
var
|
|
2383
|
+
var import_react23 = require("react");
|
|
2364
2384
|
var import_editor_controls45 = require("@elementor/editor-controls");
|
|
2365
2385
|
var import_icons22 = require("@elementor/icons");
|
|
2366
2386
|
var import_ui53 = require("@elementor/ui");
|
|
@@ -2378,10 +2398,10 @@ var React63 = __toESM(require("react"));
|
|
|
2378
2398
|
var import_editor_controls43 = require("@elementor/editor-controls");
|
|
2379
2399
|
|
|
2380
2400
|
// src/dynamics/hooks/use-dynamic-tag.ts
|
|
2381
|
-
var
|
|
2401
|
+
var import_react21 = require("react");
|
|
2382
2402
|
|
|
2383
2403
|
// src/dynamics/hooks/use-prop-dynamic-tags.ts
|
|
2384
|
-
var
|
|
2404
|
+
var import_react20 = require("react");
|
|
2385
2405
|
var import_editor_controls42 = require("@elementor/editor-controls");
|
|
2386
2406
|
|
|
2387
2407
|
// src/dynamics/sync/get-elementor-config.ts
|
|
@@ -2433,7 +2453,7 @@ var usePropDynamicTags = () => {
|
|
|
2433
2453
|
const propDynamicType = getDynamicPropType(propType);
|
|
2434
2454
|
categories = propDynamicType?.settings.categories || [];
|
|
2435
2455
|
}
|
|
2436
|
-
return (0,
|
|
2456
|
+
return (0, import_react20.useMemo)(() => getDynamicTagsByCategories(categories), [categories.join()]);
|
|
2437
2457
|
};
|
|
2438
2458
|
var getDynamicTagsByCategories = (categories) => {
|
|
2439
2459
|
const dynamicTags = getAtomicDynamicTags();
|
|
@@ -2449,7 +2469,7 @@ var getDynamicTagsByCategories = (categories) => {
|
|
|
2449
2469
|
// src/dynamics/hooks/use-dynamic-tag.ts
|
|
2450
2470
|
var useDynamicTag = (tagName) => {
|
|
2451
2471
|
const dynamicTags = usePropDynamicTags();
|
|
2452
|
-
return (0,
|
|
2472
|
+
return (0, import_react21.useMemo)(() => dynamicTags.find((tag) => tag.name === tagName) ?? null, [dynamicTags, tagName]);
|
|
2453
2473
|
};
|
|
2454
2474
|
|
|
2455
2475
|
// src/dynamics/dynamic-control.tsx
|
|
@@ -2478,14 +2498,14 @@ var DynamicControl = ({ bind, children }) => {
|
|
|
2478
2498
|
|
|
2479
2499
|
// src/dynamics/components/dynamic-selection.tsx
|
|
2480
2500
|
var React64 = __toESM(require("react"));
|
|
2481
|
-
var
|
|
2501
|
+
var import_react22 = require("react");
|
|
2482
2502
|
var import_editor_controls44 = require("@elementor/editor-controls");
|
|
2483
2503
|
var import_icons21 = require("@elementor/icons");
|
|
2484
2504
|
var import_ui52 = require("@elementor/ui");
|
|
2485
2505
|
var import_i18n41 = require("@wordpress/i18n");
|
|
2486
2506
|
var SIZE3 = "tiny";
|
|
2487
2507
|
var DynamicSelection = ({ onSelect }) => {
|
|
2488
|
-
const [searchValue, setSearchValue] = (0,
|
|
2508
|
+
const [searchValue, setSearchValue] = (0, import_react22.useState)("");
|
|
2489
2509
|
const { groups: dynamicGroups } = getAtomicDynamicTags() || {};
|
|
2490
2510
|
const { value: anyValue } = (0, import_editor_controls44.useBoundProp)();
|
|
2491
2511
|
const { bind, value: dynamicValue, setValue } = (0, import_editor_controls44.useBoundProp)(dynamicPropTypeUtil);
|
|
@@ -2514,7 +2534,7 @@ var DynamicSelection = ({ onSelect }) => {
|
|
|
2514
2534
|
startAdornment: /* @__PURE__ */ React64.createElement(import_ui52.InputAdornment, { position: "start" }, /* @__PURE__ */ React64.createElement(import_icons21.SearchIcon, { fontSize: SIZE3 }))
|
|
2515
2535
|
}
|
|
2516
2536
|
}
|
|
2517
|
-
)), /* @__PURE__ */ React64.createElement(import_ui52.Divider, null), /* @__PURE__ */ React64.createElement(import_ui52.Box, { sx: { overflowY: "auto", height: 260, width: 220 } }, options10.length > 0 ? /* @__PURE__ */ React64.createElement(import_ui52.MenuList, { role: "listbox", tabIndex: 0 }, options10.map(([category, items3], index) => /* @__PURE__ */ React64.createElement(
|
|
2537
|
+
)), /* @__PURE__ */ React64.createElement(import_ui52.Divider, null), /* @__PURE__ */ React64.createElement(import_ui52.Box, { sx: { overflowY: "auto", height: 260, width: 220 } }, options10.length > 0 ? /* @__PURE__ */ React64.createElement(import_ui52.MenuList, { role: "listbox", tabIndex: 0 }, options10.map(([category, items3], index) => /* @__PURE__ */ React64.createElement(import_react22.Fragment, { key: index }, /* @__PURE__ */ React64.createElement(import_ui52.ListSubheader, { sx: { typography: "caption", color: "text.tertiary" } }, dynamicGroups?.[category]?.title || category), items3.map(({ value, label: tagLabel }) => {
|
|
2518
2538
|
const isSelected = isCurrentValueDynamic && value === dynamicValue?.name;
|
|
2519
2539
|
return /* @__PURE__ */ React64.createElement(
|
|
2520
2540
|
import_ui52.MenuItem,
|
|
@@ -2561,7 +2581,7 @@ var DynamicSelectionControl = () => {
|
|
|
2561
2581
|
const { bind, value } = (0, import_editor_controls45.useBoundProp)(dynamicPropTypeUtil);
|
|
2562
2582
|
const [propValueFromHistory] = usePersistDynamicValue(bind);
|
|
2563
2583
|
const { name: tagName = "" } = value;
|
|
2564
|
-
const selectionPopoverId = (0,
|
|
2584
|
+
const selectionPopoverId = (0, import_react23.useId)();
|
|
2565
2585
|
const selectionPopoverState = (0, import_ui53.usePopupState)({ variant: "popover", popupId: selectionPopoverId });
|
|
2566
2586
|
const dynamicTag = useDynamicTag(tagName);
|
|
2567
2587
|
const removeDynamicTag = () => {
|
|
@@ -2600,7 +2620,7 @@ var DynamicSelectionControl = () => {
|
|
|
2600
2620
|
));
|
|
2601
2621
|
};
|
|
2602
2622
|
var DynamicSettingsPopover = ({ dynamicTag }) => {
|
|
2603
|
-
const popupId = (0,
|
|
2623
|
+
const popupId = (0, import_react23.useId)();
|
|
2604
2624
|
const settingsPopupState = (0, import_ui53.usePopupState)({ variant: "popover", popupId });
|
|
2605
2625
|
const hasDynamicSettings = !!dynamicTag.atomic_controls.length;
|
|
2606
2626
|
if (!hasDynamicSettings) {
|
|
@@ -2697,9 +2717,12 @@ var blockV1Panel = () => {
|
|
|
2697
2717
|
init2();
|
|
2698
2718
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2699
2719
|
0 && (module.exports = {
|
|
2720
|
+
injectIntoClassSelectorActions,
|
|
2700
2721
|
registerGlobalClassMenuItem,
|
|
2701
2722
|
registerStateMenuItem,
|
|
2702
2723
|
replaceControl,
|
|
2703
|
-
useBoundProp
|
|
2724
|
+
useBoundProp,
|
|
2725
|
+
usePanelActions,
|
|
2726
|
+
usePanelStatus
|
|
2704
2727
|
});
|
|
2705
2728
|
//# sourceMappingURL=index.js.map
|