PluginProbe
Elementor Website Builder – more than just a page builder / 3.34.0-beta1
Elementor Website Builder – more than just a page builder v3.34.0-beta1
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 All 457 releases
← All changes | assets/js/packages/editor-elements/editor-elements.js +2 -1319 4.3.0-beta1 → 3.34.0-beta1 View file →
@@ -1,1320 +1,3 @@
1 -(function(_elementor_editor_v1_adapters, _elementor_session, _elementor_editor_props, _wordpress_i18n, _elementor_utils, _elementor_editor_styles) {
2 -
3 -//#region \0rolldown/runtime.js
4 - var __defProp = Object.defineProperty;
5 - var __name = (target, value) => __defProp(target, "name", {
6 - value,
7 - configurable: true
8 - });
9 - var __exportAll = (all, no_symbols) => {
10 - let target = {};
11 - for (var name in all) {
12 - __defProp(target, name, {
13 - get: all[name],
14 - enumerable: true
15 - });
16 - }
17 - if (!no_symbols) {
18 - __defProp(target, Symbol.toStringTag, { value: "Module" });
19 - }
20 - return target;
21 - };
22 -
23 -//#endregion
24 -
25 -//#region packages/packages/libs/editor-elements/src/sync/get-container.ts
26 - function getContainer(id) {
27 - return window.elementor?.getContainer?.(id) ?? null;
28 - }
29 - var selectElement = (elementId) => {
30 - try {
31 - (0, _elementor_editor_v1_adapters.__privateRunCommand)("document/elements/select", { container: getContainer(elementId) });
32 - } catch {}
33 - };
34 -
35 -//#endregion
36 -//#region packages/packages/libs/editor-elements/src/sync/resolve-element.ts
37 - function isConnected(container) {
38 - if (!container) return false;
39 - if (!container.view?.el) return true;
40 - return container.view.el.isConnected;
41 - }
42 - function resolveContainer(container, id) {
43 - const looked = container.lookup?.();
44 - if (isConnected(looked)) return looked;
45 - const byId = getContainer(id);
46 - if (isConnected(byId)) return byId;
47 - return null;
48 - }
49 - function getDocumentUtils() {
50 - return window.$e?.components?.get?.("document")?.utils;
51 - }
52 - function findModelInDocument(id) {
53 - return getDocumentUtils()?.findModelById?.(id) ?? null;
54 - }
55 - function addModelToParent(parentId, childData, options) {
56 - return getDocumentUtils()?.addModelToParent?.(parentId, childData, options) ?? false;
57 - }
58 - function removeModelFromParent(parentId, childId) {
59 - return getDocumentUtils()?.removeModelFromParent?.(parentId, childId) ?? false;
60 - }
61 -
62 -//#endregion
63 -//#region packages/packages/libs/editor-elements/src/sync/resolve-insert-index.ts
64 - function resolveInsertIndex(position, elements) {
65 - const lastIndex = elements.length;
66 - switch (position.kind) {
67 - case "first": return 0;
68 - case "last": return lastIndex;
69 - case "index": {
70 - const index = typeof position.value === "number" ? position.value : lastIndex;
71 - return Math.max(0, Math.min(index, lastIndex));
72 - }
73 - case "after_type": {
74 - const anchor = elements.findIndex((element) => element.elType === position.value);
75 - return anchor >= 0 ? anchor + 1 : lastIndex;
76 - }
77 - case "before_type": {
78 - const anchor = elements.findIndex((element) => element.elType === position.value);
79 - return anchor >= 0 ? anchor : lastIndex;
80 - }
81 - default: return lastIndex;
82 - }
83 - }
84 -
85 -//#endregion
86 -//#region packages/packages/libs/editor-elements/src/children-dependencies/stash.ts
87 - var STASH_KEY_PREFIX = "elementor/editor-state";
88 - var STASH_KEY_SEGMENT = "children-deps";
89 - function createChildrenStash() {
90 - return {
91 - get(elementId, childType) {
92 - return (0, _elementor_session.getSessionStorageItem)(buildStashKey(elementId, childType));
93 - },
94 - save(elementId, childType, data) {
95 - (0, _elementor_session.setSessionStorageItem)(buildStashKey(elementId, childType), data);
96 - },
97 - clear(elementId, childType) {
98 - (0, _elementor_session.removeSessionStorageItem)(buildStashKey(elementId, childType));
99 - },
100 - clearAllForElement(elementId) {
101 - const prefix = buildElementStashPrefix(elementId);
102 - for (let index = sessionStorage.length - 1; index >= 0; index--) {
103 - const key = sessionStorage.key(index);
104 - if (key?.startsWith(prefix)) (0, _elementor_session.removeSessionStorageItem)(key);
105 - }
106 - }
107 - };
108 - }
109 - function buildStashKey(elementId, childType) {
110 - return `${STASH_KEY_PREFIX}/${elementId}/${STASH_KEY_SEGMENT}/${childType}`;
111 - }
112 - function buildElementStashPrefix(elementId) {
113 - return `${STASH_KEY_PREFIX}/${elementId}/${STASH_KEY_SEGMENT}/`;
114 - }
115 -
116 -//#endregion
117 -//#region packages/packages/libs/editor-elements/src/sync/generate-element-id.ts
118 - var generateElementId = () => {
119 - return window.elementorCommon?.helpers?.getUniqueId?.() ?? `el-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
120 - };
121 -
122 -//#endregion
123 -//#region packages/packages/libs/editor-elements/src/children-dependencies/utils.ts
124 - function evaluateWhen(when, settings) {
125 - return (0, _elementor_editor_props.isDependencyMet)(when, settings).isMet;
126 - }
127 - function ensureModelId(model) {
128 - const { skipDefaultChildren: _skipDefaultChildren, ...rest } = model;
129 - return rest.id ? rest : {
130 - ...rest,
131 - id: generateElementId()
132 - };
133 - }
134 - function resolveChildModelData(elementId, rule, stash) {
135 - const stashed = rule.stash ? stash.get(elementId, rule.child_type) : void 0;
136 - return {
137 - modelData: ensureModelId(stashed ?? rule.default_model ?? { elType: rule.child_type }),
138 - wasStashed: Boolean(stashed)
139 - };
140 - }
141 -
142 -//#endregion
143 -//#region packages/packages/libs/editor-elements/src/children-dependencies/bind-settings-reconcile.ts
144 - function bindSettingsReconcile({ model, elementConfig }) {
145 - const stash = createChildrenStash();
146 - const rules = elementConfig?.children_dependencies;
147 - if (!rules?.length) return () => {};
148 - const settingsModel = model.get("settings");
149 - const elementId = model.get("id");
150 - if (!settingsModel?.on || !settingsModel?.off || !elementId) return () => {};
151 - const lastMet = /* @__PURE__ */ new Map();
152 - rules.forEach((rule) => {
153 - lastMet.set(rule.child_type, evaluateWhen(rule.when, settingsModel.toJSON()));
154 - });
155 - const onChange = () => {
156 - const currentSettings = settingsModel.toJSON();
157 - rules.forEach((rule) => {
158 - const previous = lastMet.get(rule.child_type) ?? false;
159 - const current = evaluateWhen(rule.when, currentSettings);
160 - if (previous === current) return;
161 - lastMet.set(rule.child_type, current);
162 - if (current) attachChildFromRule(elementId, rule, stash);
163 - else detachChildFromRule(elementId, rule, stash);
164 - });
165 - };
166 - settingsModel.on("change", onChange);
167 - return () => {
168 - settingsModel.off?.("change", onChange);
169 - stash.clearAllForElement(elementId);
170 - };
171 - }
172 - function attachChildFromRule(parentId, rule, stash) {
173 - const currentChildren = getDirectChildData(getContainer(parentId) ?? void 0);
174 - if (currentChildren.some((child) => child.elType === rule.child_type)) return;
175 - const { modelData, wasStashed } = resolveChildModelData(parentId, rule, stash);
176 - if (!addModelToParent(parentId, modelData, { at: resolveInsertIndex(rule.position, currentChildren) })) return;
177 - if (wasStashed) stash.clear(parentId, rule.child_type);
178 - requestNavigatorRefresh(parentId);
179 - }
180 - function detachChildFromRule(parentId, rule, stash) {
181 - const child = (getContainer(parentId) ?? void 0)?.children?.find((candidate) => candidate.model.get("elType") === rule.child_type);
182 - if (!child) return;
183 - const childSnapshot = child.model.toJSON();
184 - if (!removeModelFromParent(parentId, child.id)) return;
185 - if (rule.stash) stash.save(parentId, rule.child_type, childSnapshot);
186 - requestNavigatorRefresh(parentId);
187 - }
188 - function requestNavigatorRefresh(parentId) {
189 - if (typeof window === "undefined" || typeof window.dispatchEvent !== "function") return;
190 - window.dispatchEvent(new CustomEvent("elementor/navigator/refresh-children", { detail: { elementId: parentId } }));
191 - }
192 - function getDirectChildData(parent) {
193 - return (parent?.children ?? []).map((child) => child.model.toJSON());
194 - }
195 -
196 -//#endregion
197 -//#region packages/packages/libs/editor-elements/src/children-dependencies/reconcile-initial-children.ts
198 - function reconcileInitialChildren({ elementId, elementConfig, attributes }) {
199 - const stash = createChildrenStash();
200 - const rules = elementConfig?.children_dependencies;
201 - if (!rules?.length) return;
202 - const elements = [...attributes.elements ?? []];
203 - const settings = attributes.settings ?? {};
204 - rules.forEach((rule) => {
205 - const isMet = evaluateWhen(rule.when, settings);
206 - const existingIndex = elements.findIndex((element) => element.elType === rule.child_type);
207 - const isPresent = existingIndex >= 0;
208 - if (isMet && !isPresent) {
209 - const { modelData, wasStashed } = resolveChildModelData(elementId, rule, stash);
210 - const insertAt = resolveInsertIndex(rule.position, elements);
211 - elements.splice(insertAt, 0, modelData);
212 - if (wasStashed) stash.clear(elementId, rule.child_type);
213 - return;
214 - }
215 - if (!isMet && isPresent) {
216 - const [removed] = elements.splice(existingIndex, 1);
217 - if (rule.stash && removed) stash.save(elementId, rule.child_type, removed);
218 - }
219 - });
220 - attributes.elements = elements;
221 - }
222 -
223 -//#endregion
224 -//#region packages/packages/libs/editor-elements/src/sync/model-utils.ts
225 - function findChildRecursive(model, predicate) {
226 - const childModels = model.get("elements") ?? [];
227 - for (const childModel of childModels) {
228 - if (predicate(childModel)) return { model: childModel };
229 - const found = findChildRecursive(childModel, predicate);
230 - if (found) return found;
231 - }
232 - return null;
233 - }
234 - function getElementChildren(model, predicate) {
235 - return (model.get("elements") ?? []).filter((childModel) => !predicate || predicate(childModel)).map((childModel) => ({ model: childModel }));
236 - }
237 -
238 -//#endregion
239 -//#region packages/packages/libs/editor-elements/src/hooks/use-element-children.ts
240 - function toElementModel({ model }) {
241 - return {
242 - id: model.get("id"),
243 - editorSettings: model.get("editor_settings") ?? {}
244 - };
245 - }
246 - function useElementChildren(elementId, childrenTypes, { includeSelfAsParent = false } = {}) {
247 - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)([
248 - (0, _elementor_editor_v1_adapters.v1ReadyEvent)(),
249 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/create"),
250 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/delete"),
251 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/update"),
252 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/set-settings")
253 - ], () => {
254 - const model = getContainer(elementId)?.model;
255 - if (!model) return {};
256 - return Object.entries(childrenTypes).reduce((acc, [parentType, childType]) => {
257 - const parent = includeSelfAsParent && model.get("elType") === parentType ? { model } : findChildRecursive(model, (m) => m.get("elType") === parentType);
258 - if (!parent) {
259 - acc[childType] = [];
260 - return acc;
261 - }
262 - acc[childType] = getElementChildren(parent.model, (m) => m.get("elType") === childType).map(toElementModel);
263 - return acc;
264 - }, {});
265 - }, [elementId]);
266 - }
267 -
268 -//#endregion
269 -//#region packages/packages/libs/editor-elements/src/sync/get-element-editor-settings.ts
270 - function getElementEditorSettings(elementId) {
271 - return getContainer(elementId)?.model.get("editor_settings") ?? {};
272 - }
273 -
274 -//#endregion
275 -//#region packages/packages/libs/editor-elements/src/hooks/use-element-editor-settings.ts
276 - var useElementEditorSettings = (elementId) => {
277 - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)((0, _elementor_editor_v1_adapters.windowEvent)("elementor/element/update_editor_settings"), () => getElementEditorSettings(elementId), [elementId]);
278 - };
279 -
280 -//#endregion
281 -//#region packages/packages/libs/editor-elements/src/hooks/use-parent-element.ts
282 - function useParentElement(elementId) {
283 - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)([(0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/create")], () => {
284 - if (!elementId) return null;
285 - const element = window?.elementor?.getContainer?.(elementId);
286 - if (!element) return null;
287 - return element.parent;
288 - }, [elementId]);
289 - }
290 -
291 -//#endregion
292 -//#region packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts
293 - function getWidgetsCache() {
294 - return window?.elementor?.widgetsCache || null;
295 - }
296 -
297 -//#endregion
298 -//#region packages/packages/libs/editor-elements/src/sync/get-element-type.ts
299 - function getElementType(type) {
300 - if (!type) return null;
301 - const elementType = getWidgetsCache()?.[type];
302 - if (!elementType?.atomic_controls) return null;
303 - if (!elementType?.atomic_props_schema) return null;
304 - return {
305 - key: type,
306 - controls: elementType.atomic_controls,
307 - propsSchema: elementType.atomic_props_schema,
308 - dependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},
309 - title: elementType.title,
310 - styleStates: elementType.atomic_style_states ?? [],
311 - pseudoStates: elementType.atomic_pseudo_states ?? []
312 - };
313 - }
314 -
315 -//#endregion
316 -//#region packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts
317 - function getSelectedElements() {
318 - return (window.elementor?.selection?.getElements?.() ?? []).reduce((acc, el) => {
319 - const type = el.model.get("widgetType") || el.model.get("elType");
320 - if (type) acc.push({
321 - id: el.model.get("id"),
322 - type
323 - });
324 - return acc;
325 - }, []);
326 - }
327 - function getSelectedElement() {
328 - const elements = getSelectedElements();
329 - const [element] = elements;
330 - const elementType = getElementType(element?.type);
331 - if (elements.length !== 1 || !elementType || !element) return {
332 - element: null,
333 - elementType: null
334 - };
335 - return {
336 - element,
337 - elementType
338 - };
339 - }
340 -
341 -//#endregion
342 -//#region packages/packages/libs/editor-elements/src/hooks/use-selected-element.ts
343 - function useSelectedElement() {
344 - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)([
345 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/select"),
346 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/deselect"),
347 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/select-all"),
348 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/deselect-all")
349 - ], getSelectedElement);
350 - }
351 -
352 -//#endregion
353 -//#region packages/packages/libs/editor-elements/src/sync/get-element-setting.ts
354 - var getElementSetting = (elementId, settingKey) => {
355 - return getContainer(elementId)?.settings?.get(settingKey) ?? null;
356 - };
357 - var getElementSettings = (elementId, settingKey) => {
358 - return Object.fromEntries(settingKey.map((key) => [key, getElementSetting(elementId, key)]));
359 - };
360 -
361 -//#endregion
362 -//#region packages/packages/libs/editor-elements/src/hooks/use-selected-element-settings.ts
363 - function useSelectedElementSettings() {
364 - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)([
365 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/select"),
366 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/deselect"),
367 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/select-all"),
368 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/deselect-all"),
369 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/set-settings")
370 - ], () => {
371 - const { element, elementType } = getSelectedElement();
372 - if (!element || !elementType) return {
373 - element: null,
374 - elementType: null,
375 - settings: null
376 - };
377 - return {
378 - element,
379 - elementType,
380 - settings: getElementSettings(element.id, Object.keys(elementType.propsSchema))
381 - };
382 - });
383 - }
384 -
385 -//#endregion
386 -//#region packages/packages/libs/editor-elements/src/sync/create-element.ts
387 - function createElement({ container, model, options }) {
388 - return (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/create", {
389 - container,
390 - model,
391 - options: {
392 - edit: false,
393 - ...options
394 - }
395 - });
396 - }
397 -
398 -//#endregion
399 -//#region packages/packages/libs/editor-elements/src/sync/delete-element.ts
400 - function deleteElement({ container, options = {} }) {
401 - (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/delete", {
402 - container,
403 - options
404 - });
405 - }
406 -
407 -//#endregion
408 -//#region packages/packages/libs/editor-elements/src/sync/create-elements.ts
409 - var createElements = ({ elements, title, subtitle = (0, _wordpress_i18n.__)("Item added", "elementor") }) => {
410 - return (0, _elementor_editor_v1_adapters.undoable)({
411 - do: ({ elements: elementsParam }) => {
412 - const createdElements = [];
413 - elementsParam.forEach(({ container, options, ...elementParams }) => {
414 - const parentContainer = container.lookup?.() ?? container;
415 - if (!parentContainer) throw new Error("Parent container not found");
416 - const element = createElement({
417 - container: parentContainer,
418 - ...elementParams,
419 - options: {
420 - ...options,
421 - useHistory: false
422 - }
423 - });
424 - createdElements.push({
425 - container: element,
426 - parentContainer,
427 - model: element.model?.toJSON() || {},
428 - options,
429 - containerId: element.id,
430 - parentContainerId: parentContainer.id
431 - });
432 - });
433 - return { createdElements };
434 - },
435 - undo: (_, { createdElements }) => {
436 - [...createdElements].reverse().forEach(({ container, containerId, parentContainerId }) => {
437 - const freshContainer = resolveContainer(container, containerId);
438 - if (freshContainer) {
439 - deleteElement({
440 - container: freshContainer,
441 - options: { useHistory: false }
442 - });
443 - return;
444 - }
445 - removeModelFromParent(parentContainerId, containerId);
446 - });
447 - },
448 - redo: (_, { createdElements }) => {
449 - const newElements = [];
450 - createdElements.forEach(({ parentContainer, parentContainerId, model, options }) => {
451 - const freshParent = resolveContainer(parentContainer, parentContainerId);
452 - if (freshParent) {
453 - const element = createElement({
454 - container: freshParent,
455 - model,
456 - options: {
457 - ...options,
458 - useHistory: false
459 - }
460 - });
461 - newElements.push({
462 - container: element,
463 - parentContainer: freshParent,
464 - model: element.model.toJSON(),
465 - options,
466 - containerId: element.id,
467 - parentContainerId: freshParent.id
468 - });
469 - return;
470 - }
471 - addModelToParent(parentContainerId, model);
472 - newElements.push({
473 - container: parentContainer,
474 - parentContainer,
475 - model,
476 - options,
477 - containerId: model.id ?? "",
478 - parentContainerId
479 - });
480 - });
481 - return { createdElements: newElements };
482 - }
483 - }, {
484 - title,
485 - subtitle
486 - })({ elements });
487 - };
488 -
489 -//#endregion
490 -//#region packages/packages/libs/editor-elements/src/sync/drop-element.ts
491 - function dropElement({ containerId, model, options }) {
492 - const container = getContainer(containerId);
493 - if (!container) throw new Error(`Container with ID "${containerId}" not found`);
494 - return (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("preview/drop", {
495 - container,
496 - model,
497 - options
498 - });
499 - }
500 -
501 -//#endregion
502 -//#region packages/packages/libs/editor-elements/src/sync/duplicate-element.ts
503 - function duplicateElement({ element, options = {} }) {
504 - const currentIndex = element.view?._index ?? 0;
505 - return (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/duplicate", {
506 - container: element,
507 - options: {
508 - at: options.clone !== false ? currentIndex + 1 : void 0,
509 - edit: false,
510 - ...options
511 - }
512 - });
513 - }
514 -
515 -//#endregion
516 -//#region packages/packages/libs/editor-elements/src/sync/duplicate-elements.ts
517 - var duplicateElements = ({ elementIds, title, subtitle = (0, _wordpress_i18n.__)("Item duplicated", "elementor"), onDuplicateElements, onRestoreElements }) => {
518 - return (0, _elementor_editor_v1_adapters.undoable)({
519 - do: ({ elementIds: elementIdsToDuplicate }) => {
520 - onDuplicateElements?.();
521 - const duplicatedElements = [];
522 - elementIdsToDuplicate.forEach((elementId) => {
523 - const originalContainer = getContainer(elementId);
524 - if (!originalContainer?.parent) return;
525 - const duplicatedElement = duplicateElement({
526 - element: originalContainer,
527 - options: { useHistory: false }
528 - });
529 - if (!duplicatedElement.parent) return;
530 - duplicatedElements.push({
531 - container: duplicatedElement,
532 - parentContainer: duplicatedElement.parent,
533 - model: duplicatedElement.model.toJSON(),
534 - at: duplicatedElement.view?._index,
535 - containerId: duplicatedElement.id,
536 - parentContainerId: duplicatedElement.parent.id
537 - });
538 - });
539 - return { duplicatedElements };
540 - },
541 - undo: (_, { duplicatedElements }) => {
542 - onRestoreElements?.();
543 - [...duplicatedElements].reverse().forEach(({ container, containerId, parentContainerId }) => {
544 - const freshContainer = resolveContainer(container, containerId);
545 - if (freshContainer) {
546 - deleteElement({
547 - container: freshContainer,
548 - options: { useHistory: false }
549 - });
550 - return;
551 - }
552 - removeModelFromParent(parentContainerId, containerId);
553 - });
554 - },
555 - redo: (_, { duplicatedElements: previousElements }) => {
556 - onDuplicateElements?.();
557 - const duplicatedElements = [];
558 - previousElements.forEach(({ parentContainer, parentContainerId, model, at }) => {
559 - const freshParent = resolveContainer(parentContainer, parentContainerId);
560 - if (freshParent) {
561 - const createdElement = createElement({
562 - container: freshParent,
563 - model,
564 - options: {
565 - useHistory: false,
566 - clone: false,
567 - at
568 - }
569 - });
570 - duplicatedElements.push({
571 - container: createdElement,
572 - parentContainer: freshParent,
573 - model,
574 - at,
575 - containerId: createdElement.id,
576 - parentContainerId: freshParent.id
577 - });
578 - return;
579 - }
580 - addModelToParent(parentContainerId, model, { at });
581 - duplicatedElements.push({
582 - container: parentContainer,
583 - parentContainer,
584 - model,
585 - at,
586 - containerId: model.id ?? "",
587 - parentContainerId
588 - });
589 - });
590 - return { duplicatedElements };
591 - }
592 - }, {
593 - title,
594 - subtitle
595 - })({ elementIds });
596 - };
597 -
598 -//#endregion
599 -//#region packages/packages/libs/editor-elements/src/sync/get-preview-element-dom.ts
600 - function getPreviewElementDOM(id) {
601 - try {
602 - const fromContainer = getContainer(id)?.view?.el;
603 - if (fromContainer) return fromContainer;
604 - return queryPreviewDOMByElementId(id);
605 - } catch {
606 - return null;
607 - }
608 - }
609 - function queryPreviewDOMByElementId(id) {
610 - const previewDocument = window.elementor?.getPreviewContainer?.()?.view?.el?.ownerDocument;
611 - if (!previewDocument) return null;
612 - return previewDocument.querySelector(`[data-id="${id}"]`);
613 - }
614 -
615 -//#endregion
616 -//#region packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts
617 - function getCurrentDocumentContainer() {
618 - return window.elementor?.documents?.getCurrent?.()?.container ?? null;
619 - }
620 -
621 -//#endregion
622 -//#region packages/packages/libs/editor-elements/src/sync/get-current-document-id.ts
623 - function getCurrentDocumentId() {
624 - const extendedWindow = window;
625 - try {
626 - return extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;
627 - } catch {
628 - return null;
629 - }
630 - }
631 -
632 -//#endregion
633 -//#region packages/packages/libs/editor-elements/src/sync/get-element-icon.ts
634 - function getElementIcon(elementId) {
635 - const container = getContainer(elementId);
636 - const type = container?.model.get("widgetType") || container?.model.get("elType");
637 - if (!type) return null;
638 - return getWidgetsCache()?.[type]?.icon ?? null;
639 - }
640 -
641 -//#endregion
642 -//#region packages/packages/libs/editor-elements/src/errors.ts
643 - var ElementNotFoundError = (0, _elementor_utils.createError)({
644 - code: "element_not_found",
645 - message: "Element not found."
646 - });
647 - var StyleNotFoundError = (0, _elementor_utils.createError)({
648 - code: "style_not_found",
649 - message: "Style not found."
650 - });
651 - var ElementTypeNotExistsError = (0, _elementor_utils.createError)({
652 - code: "element_type_not_exists",
653 - message: "Element type does not exist."
654 - });
655 - var ElementLabelNotExistsError = (0, _elementor_utils.createError)({
656 - code: "element_label_not_exists",
657 - message: "Element label does not exist."
658 - });
659 - var ElementParentNotFoundError = (0, _elementor_utils.createError)({
660 - code: "element_parent_not_found",
661 - message: "Element parent not found."
662 - });
663 - var ElementIndexNotFoundError = (0, _elementor_utils.createError)({
664 - code: "element_index_not_found",
665 - message: "Element index not found."
666 - });
667 -
668 -//#endregion
669 -//#region packages/packages/libs/editor-elements/src/sync/get-element-label.ts
670 - function getElementLabel(elementId) {
671 - if (!elementId) elementId = getSelectedElements()?.[0]?.id;
672 - const container = getContainer(elementId);
673 - const type = container?.model.get("widgetType") || container?.model.get("elType");
674 - if (!type) throw new ElementTypeNotExistsError({ context: { elementId } });
675 - const label = getWidgetsCache()?.[type]?.title;
676 - if (!label) throw new ElementLabelNotExistsError({ context: { elementType: type } });
677 - return label;
678 - }
679 -
680 -//#endregion
681 -//#region packages/packages/libs/editor-elements/src/sync/get-element-title.ts
682 - function extractString(value) {
683 - if (typeof value === "string") return value || null;
684 - if (value && typeof value === "object" && "value" in value && typeof value.value === "string") return value.value || null;
685 - return null;
686 - }
687 - function getElementTitle(elementId) {
688 - const editorTitle = extractString(getElementEditorSettings(elementId)?.title);
689 - if (editorTitle) return editorTitle;
690 - const legacyTitle = extractString(getElementSetting(elementId, "_title"));
691 - if (legacyTitle) return legacyTitle;
692 - const presetTitle = extractString(getElementSetting(elementId, "presetTitle"));
693 - if (presetTitle) return presetTitle;
694 - try {
695 - return getElementLabel(elementId);
696 - } catch {
697 - return null;
698 - }
699 - }
700 -
701 -//#endregion
702 -//#region packages/packages/libs/editor-elements/src/sync/get-element-styles.ts
703 - var getElementStyles = (elementID) => {
704 - return getContainer(elementID)?.model.get("styles") || null;
705 - };
706 -
707 -//#endregion
708 -//#region packages/packages/libs/editor-elements/src/sync/get-all-descendants.ts
709 - function getAllDescendants(container) {
710 - return [container, ...(container.children ?? []).flatMap((child) => getAllDescendants(child))];
711 - }
712 -
713 -//#endregion
714 -//#region packages/packages/libs/editor-elements/src/sync/get-elements.ts
715 - function getElements(root) {
716 - const container = root ? getContainer(root) : getCurrentDocumentContainer();
717 - if (!container) return [];
718 - return [container, ...[...container.model.get("elements") ?? []].flatMap((childModel) => getElements(childModel.get("id")))];
719 - }
720 -
721 -//#endregion
722 -//#region packages/packages/libs/editor-elements/src/sync/move-element.ts
723 - function moveElement({ element, targetContainer, options = {} }) {
724 - const resolvedElement = element.lookup?.();
725 - const resolvedTarget = targetContainer.lookup?.();
726 - if (!resolvedElement) throw new Error(`Element not found: ${element.id}`);
727 - if (!resolvedTarget) throw new Error(`Target container not found: ${targetContainer.id}`);
728 - const modelToRecreate = resolvedElement.model.toJSON();
729 - deleteElement({
730 - container: resolvedElement,
731 - options: {
732 - ...options,
733 - useHistory: false
734 - }
735 - });
736 - return createElement({
737 - container: resolvedTarget,
738 - model: modelToRecreate,
739 - options: {
740 - edit: false,
741 - ...options,
742 - useHistory: false
743 - }
744 - });
745 - }
746 -
747 -//#endregion
748 -//#region packages/packages/libs/editor-elements/src/sync/move-elements.ts
749 - var moveElements = ({ moves: movesToMake, title, subtitle = (0, _wordpress_i18n.__)("Elements moved", "elementor"), onMoveElements, onRestoreElements }) => {
750 - return (0, _elementor_editor_v1_adapters.undoable)({
751 - do: ({ moves }) => {
752 - const movedElements = [];
753 - onMoveElements?.();
754 - moves.forEach(({ element, targetContainer, options }) => {
755 - const sourceElement = element.lookup?.() ?? element;
756 - const target = targetContainer.lookup?.() ?? targetContainer;
757 - if (!sourceElement) throw new Error("Element not found");
758 - if (!target) throw new Error("Target container not found");
759 - if (!sourceElement.parent) throw new Error("Element has no parent container");
760 - const originalContainer = sourceElement.parent;
761 - const originalIndex = originalContainer.children?.indexOf(sourceElement) ?? -1;
762 - const newElement = moveElement({
763 - element: sourceElement,
764 - targetContainer: target,
765 - options: {
766 - ...options,
767 - useHistory: false
768 - }
769 - });
770 - movedElements.push({
771 - element: newElement,
772 - originalContainer,
773 - originalIndex,
774 - targetContainer: target,
775 - options,
776 - elementId: newElement.id,
777 - originalContainerId: originalContainer.id,
778 - targetContainerId: target.id
779 - });
780 - });
781 - return { movedElements };
782 - },
783 - undo: (_, { movedElements }) => {
784 - onRestoreElements?.();
785 - [...movedElements].reverse().forEach(({ element, elementId, originalContainer, originalContainerId, originalIndex }) => {
786 - const freshElement = resolveContainer(element, elementId);
787 - const freshOriginalContainer = resolveContainer(originalContainer, originalContainerId);
788 - if (!freshElement || !freshOriginalContainer) return;
789 - moveElement({
790 - element: freshElement,
791 - targetContainer: freshOriginalContainer,
792 - options: {
793 - useHistory: false,
794 - at: originalIndex >= 0 ? originalIndex : void 0
795 - }
796 - });
797 - });
798 - },
799 - redo: (_, { movedElements }) => {
800 - const newMovedElements = [];
801 - onMoveElements?.();
802 - movedElements.forEach(({ element, elementId, originalContainer, originalContainerId, originalIndex, targetContainer, targetContainerId, options }) => {
803 - const freshElement = resolveContainer(element, elementId);
804 - const freshOriginalContainer = resolveContainer(originalContainer, originalContainerId);
805 - const freshTarget = resolveContainer(targetContainer, targetContainerId);
806 - if (!freshElement || !freshOriginalContainer || !freshTarget) return;
807 - const newElement = moveElement({
808 - element: freshElement,
809 - targetContainer: freshTarget,
810 - options: {
811 - ...options,
812 - useHistory: false
813 - }
814 - });
815 - newMovedElements.push({
816 - element: newElement,
817 - originalContainer: freshOriginalContainer,
818 - originalIndex,
819 - targetContainer: freshTarget,
820 - options,
821 - elementId: newElement.id,
822 - originalContainerId: freshOriginalContainer.id,
823 - targetContainerId: freshTarget.id
824 - });
825 - });
826 - return { movedElements: newMovedElements };
827 - }
828 - }, {
829 - title,
830 - subtitle
831 - })({ moves: movesToMake });
832 - };
833 -
834 -//#endregion
835 -//#region packages/packages/libs/editor-elements/src/sync/remove-elements.ts
836 - var removeElements = ({ elementIds, title, subtitle = (0, _wordpress_i18n.__)("Item removed", "elementor"), onRemoveElements, onRestoreElements }) => {
837 - return (0, _elementor_editor_v1_adapters.undoable)({
838 - do: ({ elementIds: elementIdsParam }) => {
839 - const removedElements = [];
840 - elementIdsParam.forEach((elementId) => {
841 - const container = getContainer(elementId);
842 - if (container?.parent) removedElements.push({
843 - container,
844 - parent: container.parent,
845 - model: container.model.toJSON(),
846 - at: container.view?._index ?? 0,
847 - containerId: container.id,
848 - parentId: container.parent.id
849 - });
850 - });
851 - onRemoveElements?.();
852 - removedElements.forEach(({ container }) => {
853 - deleteElement({
854 - container,
855 - options: { useHistory: false }
856 - });
857 - });
858 - return { removedElements };
859 - },
860 - undo: (_, { removedElements }) => {
861 - onRestoreElements?.();
862 - [...removedElements].reverse().forEach(({ parent, parentId, model, at }) => {
863 - const freshParent = resolveContainer(parent, parentId);
864 - if (freshParent) {
865 - createElement({
866 - container: freshParent,
867 - model,
868 - options: {
869 - useHistory: false,
870 - at
871 - }
872 - });
873 - return;
874 - }
875 - addModelToParent(parentId, model, { at });
876 - });
877 - },
878 - redo: (_, { removedElements }) => {
879 - onRemoveElements?.();
880 - const newRemovedElements = [];
881 - removedElements.forEach(({ container, parent, model, at, containerId, parentId }) => {
882 - const freshContainer = resolveContainer(container, containerId);
883 - const freshParent = resolveContainer(parent, parentId);
884 - if (freshContainer && freshParent) {
885 - deleteElement({
886 - container: freshContainer,
887 - options: { useHistory: false }
888 - });
889 - newRemovedElements.push({
890 - container: freshContainer,
891 - parent: freshParent,
892 - model,
893 - at,
894 - containerId,
895 - parentId
896 - });
897 - return;
898 - }
899 - removeModelFromParent(parentId, containerId);
900 - newRemovedElements.push({
901 - container,
902 - parent,
903 - model,
904 - at,
905 - containerId,
906 - parentId
907 - });
908 - });
909 - return { removedElements: newRemovedElements };
910 - }
911 - }, {
912 - title,
913 - subtitle
914 - })({ elementIds });
915 - };
916 -
917 -//#endregion
918 -//#region packages/packages/libs/editor-elements/src/sync/replace-element.ts
919 - var replaceElement = ({ currentElementId, newElement, withHistory = true }) => {
920 - const currentElementContainer = getContainer(currentElementId);
921 - if (!currentElementContainer) throw new ElementNotFoundError({ context: { elementId: currentElementId } });
922 - const { container, index } = getNewElementContainer(currentElementContainer, newElement);
923 - const newElementInstance = createElement({
924 - container,
925 - model: newElement,
926 - options: {
927 - at: index,
928 - useHistory: withHistory
929 - }
930 - });
931 - deleteElement({
932 - container: currentElementContainer,
933 - options: { useHistory: withHistory }
934 - });
935 - return newElementInstance;
936 - };
937 - function getNewElementContainer(currentElementContainer, newElement) {
938 - const { parent } = currentElementContainer;
939 - if (!parent) throw new ElementParentNotFoundError({ context: { elementId: currentElementContainer.id } });
940 - const elementIndex = currentElementContainer.view?._index ?? 0;
941 - if (elementIndex === -1) throw new ElementIndexNotFoundError({ context: { elementId: currentElementContainer.id } });
942 - let location = {
943 - container: parent,
944 - index: elementIndex
945 - };
946 - if (parent.id === "document" && newElement.elType === "widget") location = createWrapperForWidget(parent, elementIndex);
947 - return location;
948 - }
949 - var DEFAULT_CONTAINER_TYPE = "e-flexbox";
950 - function createWrapperForWidget(parent, elementIndex) {
951 - return {
952 - container: createElement({
953 - container: parent,
954 - model: { elType: DEFAULT_CONTAINER_TYPE },
955 - options: {
956 - at: elementIndex,
957 - useHistory: false
958 - }
959 - }),
960 - index: 0
961 - };
962 - }
963 -
964 -//#endregion
965 -//#region packages/packages/libs/editor-elements/src/sync/update-element-editor-settings.ts
966 - var updateElementEditorSettings = ({ elementId, settings }) => {
967 - const element = getContainer(elementId);
968 - if (!element) throw new Error(`Element with id ${elementId} not found`);
969 - const editorSettings = element.model.get("editor_settings") ?? {};
970 - element.model.set("editor_settings", {
971 - ...editorSettings,
972 - ...settings
973 - });
974 - (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true });
975 - };
976 -
977 -//#endregion
978 -//#region packages/packages/libs/editor-elements/src/sync/update-element-settings.ts
979 - var updateElementSettings = ({ id, props, withHistory = true }) => {
980 - const container = getContainer(id);
981 - if (!container) return;
982 - const args = {
983 - container,
984 - settings: { ...props }
985 - };
986 - if (withHistory) (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/settings", args);
987 - else (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/set-settings", args, { internal: true });
988 - };
989 -
990 -//#endregion
991 -//#region packages/packages/libs/editor-elements/src/link-restriction.ts
992 - var ANCHOR_SELECTOR = "a, [data-action-link]";
993 - function getLinkInLinkRestriction(elementId, resolvedValue) {
994 - const anchoredDescendantId = getAnchoredDescendantId(elementId);
995 - if (anchoredDescendantId) return {
996 - shouldRestrict: true,
997 - reason: "descendant",
998 - elementId: anchoredDescendantId
999 - };
1000 - if (checkForInlineLink(elementId, resolvedValue)) return {
1001 - shouldRestrict: true,
1002 - reason: "descendant",
1003 - elementId
1004 - };
1005 - const ancestor = getAnchoredAncestorId(elementId);
1006 - if (ancestor) return {
1007 - shouldRestrict: true,
1008 - reason: "ancestor",
1009 - elementId: ancestor
1010 - };
1011 - return { shouldRestrict: false };
1012 - }
1013 - function getAnchoredDescendantId(elementId) {
1014 - const element = getElementDOM(elementId);
1015 - if (!element) return null;
1016 - for (const childAnchorElement of Array.from(element.querySelectorAll(ANCHOR_SELECTOR))) {
1017 - const childElementId = findElementIdOf(childAnchorElement);
1018 - if (childElementId !== elementId) return childElementId;
1019 - }
1020 - return null;
1021 - }
1022 - function getAnchoredAncestorId(elementId) {
1023 - const element = getElementDOM(elementId);
1024 - if (!element || element.parentElement === null) return null;
1025 - const parentAnchor = element.parentElement.closest(ANCHOR_SELECTOR);
1026 - return parentAnchor ? findElementIdOf(parentAnchor) : null;
1027 - }
1028 - function isElementAnchored(elementId) {
1029 - const element = getElementDOM(elementId);
1030 - if (!element) return false;
1031 - if (element.matches(ANCHOR_SELECTOR)) return true;
1032 - return doesElementContainAnchor(element);
1033 - }
1034 - function doesElementContainAnchor(element) {
1035 - for (const child of Array.from(element.children)) {
1036 - if (isElementorElement(child)) continue;
1037 - if (child.matches(ANCHOR_SELECTOR)) return true;
1038 - if (doesElementContainAnchor(child)) return true;
1039 - }
1040 - return false;
1041 - }
1042 - function findElementIdOf(element) {
1043 - return element.closest("[data-id]")?.dataset.id || null;
1044 - }
1045 - function checkForInlineLink(elementId, resolvedValue) {
1046 - const element = getElementDOM(elementId);
1047 - if (!element) return false;
1048 - if (element.matches(ANCHOR_SELECTOR)) return false;
1049 - if ((resolvedValue ?? getElementSetting(elementId, "link")?.value)?.destination) return false;
1050 - return element.querySelector(ANCHOR_SELECTOR) !== null;
1051 - }
1052 - function getElementDOM(id) {
1053 - return getPreviewElementDOM(id);
1054 - }
1055 - function isElementorElement(element) {
1056 - return element.hasAttribute("data-id");
1057 - }
1058 -
1059 -//#endregion
1060 -//#region packages/packages/libs/editor-elements/src/styles/consts.ts
1061 - var ELEMENT_STYLE_CHANGE_EVENT = "elementor/editor-v2/editor-elements/style";
1062 - var styleRerenderEvents = [
1063 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/create"),
1064 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/duplicate"),
1065 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/import"),
1066 - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/paste"),
1067 - (0, _elementor_editor_v1_adapters.windowEvent)(ELEMENT_STYLE_CHANGE_EVENT)
1068 - ];
1069 -
1070 -//#endregion
1071 -//#region packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts
1072 - function mutateElementStyles(elementId, mutator) {
1073 - const container = getContainer(elementId);
1074 - if (!container) throw new ElementNotFoundError({ context: { elementId } });
1075 - const oldIds = Object.keys(container.model.get("styles") ?? {});
1076 - const styles = mutateStyles(container, mutator);
1077 - clearRemovedClasses(container, {
1078 - oldIds,
1079 - newIds: Object.keys(styles)
1080 - });
1081 - notifyChanges();
1082 - return styles;
1083 - }
1084 - function mutateStyles(container, mutator) {
1085 - const styles = structuredClone(container.model.get("styles")) ?? {};
1086 - const entries = Object.entries(mutator(styles)).map(([styleId, style]) => {
1087 - style.variants = removeEmptyVariants(style);
1088 - return [styleId, style];
1089 - }).filter(([, style]) => {
1090 - return !isStyleEmpty(style);
1091 - });
1092 - const mutatedStyles = Object.fromEntries(entries);
1093 - container.model.set("styles", mutatedStyles);
1094 - return mutatedStyles;
1095 - }
1096 - function removeEmptyVariants(style) {
1097 - return style.variants.filter(({ props, custom_css: customCss }) => Object.keys(props).length > 0 || customCss?.raw);
1098 - }
1099 - function isStyleEmpty(style) {
1100 - return style.variants.length === 0;
1101 - }
1102 - function clearRemovedClasses(container, { oldIds, newIds }) {
1103 - const removedIds = oldIds.filter((id) => !newIds.includes(id));
1104 - const classesProps = structuredClone(getClassesProps(container));
1105 - classesProps.forEach(([, prop]) => {
1106 - prop.value = prop.value.filter((value) => !removedIds.includes(value));
1107 - });
1108 - updateElementSettings({
1109 - id: container.id,
1110 - props: Object.fromEntries(classesProps),
1111 - withHistory: false
1112 - });
1113 - }
1114 - function getClassesProps(container) {
1115 - return Object.entries(container.settings.toJSON()).filter((prop) => {
1116 - const [, value] = prop;
1117 - return _elementor_editor_props.classesPropTypeUtil.isValid(value);
1118 - });
1119 - }
1120 - function notifyChanges() {
1121 - dispatchChangeEvent();
1122 - (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true });
1123 - }
1124 - function dispatchChangeEvent() {
1125 - window.dispatchEvent(new CustomEvent(ELEMENT_STYLE_CHANGE_EVENT));
1126 - }
1127 -
1128 -//#endregion
1129 -//#region packages/packages/libs/editor-elements/src/styles/create-element-style.ts
1130 - function createElementStyle({ styleId, elementId, classesProp, label, meta, props, custom_css: customCss = null, additionalVariants = [] }) {
1131 - let id = styleId;
1132 - mutateElementStyles(elementId, (styles) => {
1133 - id ?? (id = (0, _elementor_editor_styles.generateId)(`e-${elementId}-`, Object.keys(styles)));
1134 - const variants = [{
1135 - meta,
1136 - props,
1137 - custom_css: customCss
1138 - }, ...additionalVariants];
1139 - styles[id] = {
1140 - id,
1141 - label,
1142 - type: "class",
1143 - variants
1144 - };
1145 - addStyleToClassesProp(elementId, classesProp, id);
1146 - return styles;
1147 - });
1148 - return id;
1149 - }
1150 - function addStyleToClassesProp(elementId, classesProp, styleId) {
1151 - const base = getElementSetting(elementId, classesProp);
1152 - const classesPropValue = _elementor_editor_props.classesPropTypeUtil.create((prev) => {
1153 - return [...prev ?? [], styleId];
1154 - }, { base });
1155 - updateElementSettings({
1156 - id: elementId,
1157 - props: { [classesProp]: classesPropValue },
1158 - withHistory: false
1159 - });
1160 - }
1161 - function shouldCreateNewLocalStyle(payload) {
1162 - return !payload?.styleId && !payload?.provider;
1163 - }
1164 -
1165 -//#endregion
1166 -//#region packages/packages/libs/editor-elements/src/styles/delete-element-style.ts
1167 - function deleteElementStyle(elementId, styleId) {
1168 - mutateElementStyles(elementId, (styles) => {
1169 - delete styles[styleId];
1170 - return styles;
1171 - });
1172 - }
1173 -
1174 -//#endregion
1175 -//#region packages/packages/libs/editor-elements/src/styles/update-element-style.ts
1176 - function updateElementStyle(args) {
1177 - mutateElementStyles(args.elementId, (styles) => {
1178 - const style = styles[args.styleId];
1179 - if (!style) throw new StyleNotFoundError({ context: { styleId: args.styleId } });
1180 - const variant = (0, _elementor_editor_styles.getVariantByMeta)(style, args.meta);
1181 - const customCss = ("custom_css" in args ? args.custom_css : variant?.custom_css) ?? null;
1182 - if (variant) {
1183 - variant.props = (0, _elementor_editor_props.mergeProps)(variant.props, args.props);
1184 - variant.custom_css = customCss?.raw ? customCss : null;
1185 - } else style.variants.push({
1186 - meta: args.meta,
1187 - props: args.props,
1188 - custom_css: customCss
1189 - });
1190 - return styles;
1191 - });
1192 - }
1193 -
1194 -//#endregion
1195 -//#region packages/packages/libs/editor-elements/src/sync/get-element-interactions.ts
1196 - function getElementInteractions(elementId) {
1197 - const interactions = getContainer(elementId)?.model?.get("interactions");
1198 - if (typeof interactions === "string") return JSON.parse(interactions);
1199 - return interactions;
1200 - }
1201 -
1202 -//#endregion
1203 -//#region packages/packages/libs/editor-elements/src/utils/get-default-style-tag-from-preview.ts
1204 - var DEFAULT_STYLE_CLASS_PREFIX = "e-default-";
1205 - function parseDefaultStyleTagFromClassList(classList) {
1206 - for (const className of classList) if (className.startsWith("e-default-")) return className.slice(10);
1207 - return null;
1208 - }
1209 - function getDefaultStyleTagFromPreviewElement(elementId) {
1210 - const renderRoot = getAtomicElementRenderRoot(elementId);
1211 - if (!renderRoot) return null;
1212 - return parseDefaultStyleTagFromClassList(renderRoot.classList);
1213 - }
1214 - function getAtomicElementRenderRoot(elementId) {
1215 - const view = getContainerView(elementId);
1216 - if (view?.getDomElement) {
1217 - const domElement = view.getDomElement().get?.(0);
1218 - if (domElement) return domElement;
1219 - }
1220 - const wrapper = view?.el ?? getPreviewElementDOM(elementId);
1221 - if (!wrapper) return null;
1222 - if (wrapper.hasAttribute("data-id")) return wrapper;
1223 - const firstChild = wrapper.firstElementChild;
1224 - if (firstChild instanceof HTMLElement) return firstChild;
1225 - return wrapper;
1226 - }
1227 - function getContainerView(elementId) {
1228 - return getContainer(elementId)?.view ?? null;
1229 - }
1230 -
1231 -//#endregion
1232 -//#region packages/packages/libs/editor-elements/src/sync/update-element-interactions.ts
1233 - var updateElementInteractions = ({ elementId, interactions }) => {
1234 - const element = getContainer(elementId);
1235 - if (!element) throw new Error(`Element with id ${elementId} not found`);
1236 - element.model.set("interactions", interactions);
1237 - window.dispatchEvent(new CustomEvent("elementor/element/update_interactions"));
1238 - (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true });
1239 - };
1240 - var playElementInteractions = (elementId, interactionId) => {
1241 - window.top?.dispatchEvent(new CustomEvent("atomic/play_interactions", { detail: {
1242 - elementId,
1243 - interactionId
1244 - } }));
1245 - };
1246 -
1247 -//#endregion
1248 -//#region packages/packages/libs/editor-elements/src/index.ts
1249 - var src_exports = /* @__PURE__ */ __exportAll({
1250 - DEFAULT_STYLE_CLASS_PREFIX: () => DEFAULT_STYLE_CLASS_PREFIX,
1251 - ELEMENT_STYLE_CHANGE_EVENT: () => ELEMENT_STYLE_CHANGE_EVENT,
1252 - addModelToParent: () => addModelToParent,
1253 - bindSettingsReconcile: () => bindSettingsReconcile,
1254 - createElement: () => createElement,
1255 - createElementStyle: () => createElementStyle,
1256 - createElements: () => createElements,
1257 - deleteElement: () => deleteElement,
1258 - deleteElementStyle: () => deleteElementStyle,
1259 - dropElement: () => dropElement,
1260 - duplicateElement: () => duplicateElement,
1261 - duplicateElements: () => duplicateElements,
1262 - evaluateWhen: () => evaluateWhen,
1263 - findChildRecursive: () => findChildRecursive,
1264 - findModelInDocument: () => findModelInDocument,
1265 - generateElementId: () => generateElementId,
1266 - getAllDescendants: () => getAllDescendants,
1267 - getAnchoredAncestorId: () => getAnchoredAncestorId,
1268 - getAnchoredDescendantId: () => getAnchoredDescendantId,
1269 - getContainer: () => getContainer,
1270 - getCurrentDocumentContainer: () => getCurrentDocumentContainer,
1271 - getCurrentDocumentId: () => getCurrentDocumentId,
1272 - getDefaultStyleTagFromPreviewElement: () => getDefaultStyleTagFromPreviewElement,
1273 - getElementChildrenWithFallback: () => getElementChildren,
1274 - getElementEditorSettings: () => getElementEditorSettings,
1275 - getElementIcon: () => getElementIcon,
1276 - getElementInteractions: () => getElementInteractions,
1277 - getElementLabel: () => getElementLabel,
1278 - getElementSetting: () => getElementSetting,
1279 - getElementSettings: () => getElementSettings,
1280 - getElementStyles: () => getElementStyles,
1281 - getElementTitle: () => getElementTitle,
1282 - getElementType: () => getElementType,
1283 - getElements: () => getElements,
1284 - getLinkInLinkRestriction: () => getLinkInLinkRestriction,
1285 - getPreviewElementDOM: () => getPreviewElementDOM,
1286 - getSelectedElements: () => getSelectedElements,
1287 - getWidgetsCache: () => getWidgetsCache,
1288 - isElementAnchored: () => isElementAnchored,
1289 - moveElement: () => moveElement,
1290 - moveElements: () => moveElements,
1291 - parseDefaultStyleTagFromClassList: () => parseDefaultStyleTagFromClassList,
1292 - playElementInteractions: () => playElementInteractions,
1293 - reconcileInitialChildren: () => reconcileInitialChildren,
1294 - removeElements: () => removeElements,
1295 - removeModelFromParent: () => removeModelFromParent,
1296 - replaceElement: () => replaceElement,
1297 - resolveContainer: () => resolveContainer,
1298 - resolveInsertIndex: () => resolveInsertIndex,
1299 - selectElement: () => selectElement,
1300 - shouldCreateNewLocalStyle: () => shouldCreateNewLocalStyle,
1301 - styleRerenderEvents: () => styleRerenderEvents,
1302 - updateElementEditorSettings: () => updateElementEditorSettings,
1303 - updateElementInteractions: () => updateElementInteractions,
1304 - updateElementSettings: () => updateElementSettings,
1305 - updateElementStyle: () => updateElementStyle,
1306 - useElementChildren: () => useElementChildren,
1307 - useElementEditorSettings: () => useElementEditorSettings,
1308 - useParentElement: () => useParentElement,
1309 - useSelectedElement: () => useSelectedElement,
1310 - useSelectedElementSettings: () => useSelectedElementSettings
1311 - });
1312 -
1313 -//#endregion
1314 -//#region \0elementor-package-library-entry
1315 - (window.elementorV2 = window.elementorV2 || {}).editorElements = src_exports;
1316 -
1317 -//#endregion
1318 -})(elementorV2.editorV1Adapters, elementorV2.session, elementorV2.editorProps, wp.i18n, elementorV2.utils, elementorV2.editorStyles);
1319 -window.elementorV2.editorElements?.init?.();
1 +/*! For license information please see editor-elements.js.LICENSE.txt */
2 +!function(){"use strict";var e={"./packages/packages/libs/editor-elements/src/errors.ts":function(e,t,n){n.r(t),n.d(t,{ElementIndexNotFoundError:function(){return i},ElementLabelNotExistsError:function(){return o},ElementNotFoundError:function(){return r},ElementParentNotFoundError:function(){return c},ElementTypeNotExistsError:function(){return l},StyleNotFoundError:function(){return a}});var s=n("@elementor/utils");const r=(0,s.createError)({code:"element_not_found",message:"Element not found."}),a=(0,s.createError)({code:"style_not_found",message:"Style not found."}),l=(0,s.createError)({code:"element_type_not_exists",message:"Element type does not exist."}),o=(0,s.createError)({code:"element_label_not_exists",message:"Element label does not exist."}),c=(0,s.createError)({code:"element_parent_not_found",message:"Element parent not found."}),i=(0,s.createError)({code:"element_index_not_found",message:"Element index not found."})},"./packages/packages/libs/editor-elements/src/hooks/use-element-children.ts":function(e,t,n){n.r(t),n.d(t,{useElementChildren:function(){return useElementChildren}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function useElementChildren(e,t){return(0,s.__privateUseListenTo)([(0,s.v1ReadyEvent)(),(0,s.commandEndEvent)("document/elements/create"),(0,s.commandEndEvent)("document/elements/delete"),(0,s.commandEndEvent)("document/elements/update"),(0,s.commandEndEvent)("document/elements/set-settings")],()=>{const n=(0,r.getContainer)(e);return Object.entries(t).reduce((e,[t,s])=>{const r=n?.children?.findRecursive?.(({model:e})=>e.get("elType")===t),a=r?.children??[];return e[s]=a.filter(({model:e})=>e.get("elType")===s).map(({id:e})=>({id:e})),e},{})},[e])}},"./packages/packages/libs/editor-elements/src/hooks/use-element-editor-settings.ts":function(e,t,n){n.r(t),n.d(t,{useElementEditorSettings:function(){return useElementEditorSettings}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-editor-settings.ts");const useElementEditorSettings=e=>(0,s.__privateUseListenTo)((0,s.windowEvent)("elementor/element/update_editor_settings"),()=>(0,r.getElementEditorSettings)(e),[e])},"./packages/packages/libs/editor-elements/src/hooks/use-element-interactions.ts":function(e,t,n){n.r(t),n.d(t,{useElementInteractions:function(){return useElementInteractions}});var s=n("react"),r=n("@elementor/editor-v1-adapters"),a=n("./packages/packages/libs/editor-elements/src/sync/get-element-interactions.ts");const useElementInteractions=e=>{const[t,n]=(0,s.useState)(()=>(0,a.getElementInteractions)(e)??{version:1,items:[]});return(0,r.__privateUseListenTo)((0,r.windowEvent)("elementor/element/update_interactions"),()=>{const t=(0,a.getElementInteractions)(e);n(t??{version:1,items:[]})},[e]),t}},"./packages/packages/libs/editor-elements/src/hooks/use-element-setting.ts":function(e,t,n){n.r(t),n.d(t,{useElementSetting:function(){return useElementSetting},useElementSettings:function(){return useElementSettings}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts");const useElementSetting=(e,t)=>(0,s.__privateUseListenTo)((0,s.commandEndEvent)("document/elements/set-settings"),()=>(0,r.getElementSetting)(e,t),[e,t]),useElementSettings=(e,t)=>(0,s.__privateUseListenTo)((0,s.commandEndEvent)("document/elements/set-settings"),()=>t.reduce((t,n)=>{const s=(0,r.getElementSetting)(e,n);return null!==s&&(t[n]=s),t},{}),[e,t.join(",")])},"./packages/packages/libs/editor-elements/src/hooks/use-parent-element.ts":function(e,t,n){n.r(t),n.d(t,{useParentElement:function(){return useParentElement}});var s=n("@elementor/editor-v1-adapters");function useParentElement(e){return(0,s.__privateUseListenTo)([(0,s.commandEndEvent)("document/elements/create")],()=>{if(!e)return null;const t=window,n=t?.elementor?.getContainer?.(e);return n?n.parent:null},[e])}},"./packages/packages/libs/editor-elements/src/hooks/use-selected-element.ts":function(e,t,n){n.r(t),n.d(t,{useSelectedElement:function(){return useSelectedElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts");function useSelectedElement(){const e=(0,s.__privateUseListenTo)([(0,s.commandEndEvent)("document/elements/select"),(0,s.commandEndEvent)("document/elements/deselect"),(0,s.commandEndEvent)("document/elements/select-all"),(0,s.commandEndEvent)("document/elements/deselect-all")],a.getSelectedElements),[t]=e,n=(0,r.getElementType)(t?.type);return 1===e.length&&n?{element:t,elementType:n}:{element:null,elementType:null}}},"./packages/packages/libs/editor-elements/src/link-restriction.ts":function(e,t,n){n.r(t),n.d(t,{getAnchoredAncestorId:function(){return getAnchoredAncestorId},getAnchoredDescendantId:function(){return getAnchoredDescendantId},getLinkInLinkRestriction:function(){return getLinkInLinkRestriction},isElementAnchored:function(){return isElementAnchored}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function getLinkInLinkRestriction(e){const t=getAnchoredDescendantId(e);if(t)return{shouldRestrict:!0,reason:"descendant",elementId:t};const n=getAnchoredAncestorId(e);return n?{shouldRestrict:!0,reason:"ancestor",elementId:n}:{shouldRestrict:!1}}function getAnchoredDescendantId(e){const t=getElementDOM(e);if(!t)return null;for(const n of Array.from(t.querySelectorAll("a"))){const t=findElementIdOf(n);if(t!==e)return t}return null}function getAnchoredAncestorId(e){const t=getElementDOM(e);if(!t||null===t.parentElement)return null;const n=t.parentElement.closest("a");return n?findElementIdOf(n):null}function isElementAnchored(e){const t=getElementDOM(e);return!!t&&(!!isAnchorTag(t.tagName)||doesElementContainAnchor(t))}function doesElementContainAnchor(e){for(const t of e.children)if(!isElementorElement(t)){if(isAnchorTag(t.tagName))return!0;if(doesElementContainAnchor(t))return!0}return!1}function findElementIdOf(e){return e.closest("[data-id]")?.dataset.id||null}function getElementDOM(e){try{return(0,s.getContainer)(e)?.view?.el||null}catch{return null}}function isAnchorTag(e){return"a"===e.toLowerCase()}function isElementorElement(e){return e.hasAttribute("data-id")}},"./packages/packages/libs/editor-elements/src/mcp/elements-tool.ts":function(e,t,n){n.r(t),n.d(t,{initElementsTool:function(){return initElementsTool}});var s=n("@elementor/editor-mcp"),r=n("@elementor/schema"),a=n("./packages/packages/libs/editor-elements/src/mcp/handlers/create-element.ts"),l=n("./packages/packages/libs/editor-elements/src/mcp/handlers/create-style.ts"),o=n("./packages/packages/libs/editor-elements/src/mcp/handlers/delete-element.ts"),c=n("./packages/packages/libs/editor-elements/src/mcp/handlers/delete-style.ts"),i=n("./packages/packages/libs/editor-elements/src/mcp/handlers/deselect-element.ts"),d=n("./packages/packages/libs/editor-elements/src/mcp/handlers/duplicate-element.ts"),m=n("./packages/packages/libs/editor-elements/src/mcp/handlers/get-element-props.ts"),p=n("./packages/packages/libs/editor-elements/src/mcp/handlers/get-element-schema.ts"),u=n("./packages/packages/libs/editor-elements/src/mcp/handlers/get-selected.ts"),g=n("./packages/packages/libs/editor-elements/src/mcp/handlers/get-styles.ts"),y=n("./packages/packages/libs/editor-elements/src/mcp/handlers/list-available-types.ts"),E=n("./packages/packages/libs/editor-elements/src/mcp/handlers/move-element.ts"),k=n("./packages/packages/libs/editor-elements/src/mcp/handlers/select-element.ts"),f=n("./packages/packages/libs/editor-elements/src/mcp/handlers/update-props.ts"),h=n("./packages/packages/libs/editor-elements/src/mcp/handlers/update-styles.ts");const b={action:r.z.enum(["get-element-schema","get-element-props","create-element","update-props","create-style","get-styles","update-styles","delete-style","delete","duplicate","move","select","deselect","deselect-all","get-selected","list-available-types"]).describe("The element operation to perform."),elementId:r.z.string().optional().describe("The ID of the target element"),elementIds:r.z.array(r.z.string()).optional().describe("Array of element IDs for multi-element operations"),elementType:r.z.string().optional().describe("The type of element to create. Must be an atomic element type (required for create-element and get-element-schema actions)"),props:r.z.record(r.z.any()).optional().describe("Props object for creating or updating an element. Must match the element type's propsSchema."),containerId:r.z.string().optional().describe('Parent container ID for element creation or move operations. Use "document" if parent is the document root.'),targetContainerId:r.z.string().optional().describe("Target container ID for move operations"),styles:r.z.record(r.z.any()).optional().describe("Styles object for creating or updating element styles. Must match the element type's stylesSchema."),styleId:r.z.string().optional().describe("Style definition ID for style operations. If not provided, the first available style will be used (for update/delete)."),breakpoint:r.z.string().optional().describe('Breakpoint for style operations (e.g., "desktop", "tablet", "mobile"). Defaults to "desktop".'),state:r.z.string().optional().describe('State for style operations (e.g., "hover", "active", or null). Defaults to null.'),classesProp:r.z.string().optional().describe('Classes property name for create-style action. Defaults to "classes".'),label:r.z.string().optional().describe('Label for create-style action. Defaults to "local".'),custom_css:r.z.object({raw:r.z.string()}).optional().describe("Custom CSS object with raw CSS string for create-style action.")};function initElementsTool(){(0,s.getMCPByDomain)("elements").addTool({name:"elements",schema:b,description:'This tool manages individual Elementor atomic elements (v4).\n\n**When to use this tool:**\n\nUse this tool to create, update, delete, duplicate, move, and select individual atomic elements, as well as retrieve their schemas and current props.\n\n**Available actions:**\n\n- `list-available-types`: List all available atomic element types.\n- `get-element-schema`: Get the propsSchema and controls for an element type. Required before creating elements of a new type.\n- `get-element-props`: Get the current prop values for an existing element.\n- `create-element`: Create a new atomic element with specified props and styles (Important to match props and styles by the schema, use get-element-schema to get the schema first).\n- `update-props`: Update props for an existing element.\n- `create-style`: Create a new style definition for an element.\n- `get-styles`: Get all style definitions for an element.\n- `update-styles`: Update styles for an existing element\'s style variant.\n- `delete-style`: Delete a style definition from an element.\n- `delete`: Delete an element.\n- `duplicate`: Duplicate an existing element.\n- `move`: Move an element to a different container.\n- `select`: Select one or more elements.\n- `deselect`: Deselect a specific element.\n- `deselect-all`: Deselect all selected elements.\n- `get-selected`: Get currently selected elements.\n\n**Constraints:**\n\n- Before creating an element of a certain type for the first time, you MUST call `get-element-schema` to retrieve its schema.\n- You can only update props for existing elements.\n- All props must match the element type\'s propsSchema keys.\n- Element types must be atomic (have atomic_controls and atomic_props_schema).\n- Container IDs must exist and be valid before create/move operations.\n\n** Must do with every operation **\nAs of the user can ask in multiple ways the creation of the element, you need to first get the list of available types with "list-available-types" action.\nAfter getting it, convert to the most relevant type that the user requested and if this is not clear, request for user input.\nAfter finding out the proper type, get the schema for it with "get-element-schema" action.\n\n** Styles and Settings propUtils **\nGetting the schema is important as it introduces the propUtils for the styles and settings.\nYou can use the propUtils to create, update, delete, and get the values of the styles and settings.\nSettings exists in the result of the get-element-schema action -> propsSchema.\nStyles exists in the result of the get-element-schema action -> stylesSchema.\n\n**Examples:**\n\nGet schema for heading element:\n```json\n{ "action": "get-element-schema", "elementType": "e-heading" }\n```\n\nCreate a heading element:\n```json\n{ "action": "create-element", "elementType": "e-heading", "containerId": "document", "props": { "title": { $$type: "string", "value": "Hello World" } } }\n```\n\nUpdate element props:\n```json\n{ "action": "update-props", "elementId": "abc123", "props": { "title": "Updated Title" } }\n```\n\nCreate element style:\n```json\n{ "action": "create-style", "elementId": "abc123", "styles": { "padding": "20px", "margin": "10px" } }\n```\n\nGet element styles:\n```json\n{ "action": "get-styles", "elementId": "abc123" }\n```\n\nUpdate element styles:\n```json\n{ "action": "update-styles", "elementId": "abc123", "styles": { "padding": "20px", "margin": "10px" } }\n```\n\nDelete element style:\n```json\n{ "action": "delete-style", "elementId": "abc123", "styleId": "style-id-123" }\n```',handler:async e=>function routeAction(e){try{switch(e.action){case"get-element-schema":if(!e.elementType)throw new Error("elementType is required for get-element-schema action");return(0,p.handleGetElementSchema)(e.elementType);case"get-element-props":if(!e.elementId)throw new Error("elementId is required for get-element-props action");return(0,m.handleGetElementProps)(e.elementId);case"create-element":if(!e.elementType)throw new Error("elementType is required for create-element action");if(!e.containerId)throw new Error("containerId is required for create-element action");return(0,a.handleCreateElement)({elementType:e.elementType,containerId:e.containerId,props:e.props,styles:e.styles});case"update-props":if(!e.elementId)throw new Error("elementId is required for update-props action");if(!e.props)throw new Error("props is required for update-props action");return(0,f.handleUpdateProps)({elementId:e.elementId,props:e.props});case"create-style":if(!e.elementId)throw new Error("elementId is required for create-style action");if(!e.styles)throw new Error("styles is required for create-style action");return(0,l.handleCreateStyle)({elementId:e.elementId,styleId:e.styleId,classesProp:e.classesProp,label:e.label,styles:e.styles,breakpoint:e.breakpoint,state:e.state,customCss:e.custom_css});case"get-styles":if(!e.elementId)throw new Error("elementId is required for get-styles action");return(0,g.handleGetStyles)(e.elementId);case"update-styles":if(!e.elementId)throw new Error("elementId is required for update-styles action");if(!e.styles)throw new Error("styles is required for update-styles action");return(0,h.handleUpdateStyles)({elementId:e.elementId,styleId:e.styleId,styles:e.styles,breakpoint:e.breakpoint,state:e.state});case"delete-style":if(!e.elementId)throw new Error("elementId is required for delete-style action");return(0,c.handleDeleteStyle)({elementId:e.elementId,styleId:e.styleId});case"delete":if(!e.elementId)throw new Error("elementId is required for delete action");return(0,o.handleDeleteElement)(e.elementId);case"duplicate":if(!e.elementId)throw new Error("elementId is required for duplicate action");return(0,d.handleDuplicateElement)(e.elementId);case"move":if(!e.elementId)throw new Error("elementId is required for move action");if(!e.targetContainerId)throw new Error("targetContainerId is required for move action");return(0,E.handleMoveElement)({elementId:e.elementId,targetContainerId:e.targetContainerId});case"select":if(e.elementIds&&e.elementIds.length>0)return(0,k.handleSelectMultipleElements)(e.elementIds);if(!e.elementId)throw new Error("elementId or elementIds is required for select action");return(0,k.handleSelectElement)(e.elementId);case"deselect":if(!e.elementId)throw new Error("elementId is required for deselect action");return(0,i.handleDeselectElement)(e.elementId);case"deselect-all":return(0,i.handleDeselectAllElements)();case"get-selected":return(0,u.handleGetSelected)();case"list-available-types":return(0,y.handleListAvailableTypes)();default:throw new Error(`Unknown action: ${e.action}`)}}catch(t){const n=t instanceof Error?t.message:String(t);throw new Error(`Failed to execute action "${e.action}": ${n}`)}}(e)})}},"./packages/packages/libs/editor-elements/src/mcp/handlers/common-style-utils.ts":function(e,t,n){n.r(t),n.d(t,{resolveBreakpointId:function(){return resolveBreakpointId}});const s=["widescreen","desktop","laptop","tablet_extra","tablet","mobile_extra","mobile"];function resolveBreakpointId(e){return null===e?null:s.includes(e)?e:"desktop"}},"./packages/packages/libs/editor-elements/src/mcp/handlers/create-element.ts":function(e,t,n){n.r(t),n.d(t,{handleCreateElement:function(){return handleCreateElement}});var s=n("./packages/packages/libs/editor-elements/src/styles/create-element-style.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts");function handleCreateElement({elementType:e,containerId:t,props:n={},styles:c}){let i="document"===t?(0,l.getCurrentDocumentContainer)():(0,a.getContainer)(t);if(!i){if("document"===t)throw new Error("Document container not found. Please ensure the editor is initialized.");throw new Error(`Container with ID "${t}" not found`)}const d=i.model.get("elType");if("document"===i.id||"document"===d){const e={elType:"e-div-block"},t=(0,r.createElement)({containerId:i.id,model:e,options:{useHistory:!0}});if((0,s.createElementStyle)({elementId:t.id,classesProp:"classes",label:"local",meta:{breakpoint:"desktop",state:null},props:{display:{$$type:"string",value:"flex"},"flex-direction":{$$type:"string",value:"row"},"flex-wrap":{$$type:"string",value:"wrap"}}}),i=(0,a.getContainer)(t.id),!i)throw new Error("Failed to create container for widget. Cannot create widgets directly in the document.")}const m=i.id;if(!(0,o.getElementType)(e))throw new Error(`Element type "${e}" not found or is not atomic`);const p={widgetType:e,elType:"widget",settings:n},u=(0,r.createElement)({containerId:m,model:p,options:{useHistory:!0}});return c&&(0,s.createElementStyle)({elementId:u.id,classesProp:"classes",label:"local",meta:{breakpoint:"desktop",state:null},props:c}),{elementId:u.id,type:e}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/create-style.ts":function(e,t,n){n.r(t),n.d(t,{handleCreateStyle:function(){return handleCreateStyle}});var s=n("./packages/packages/libs/editor-elements/src/styles/create-element-style.ts"),r=n("./packages/packages/libs/editor-elements/src/mcp/handlers/common-style-utils.ts");function handleCreateStyle({elementId:e,styleId:t,classesProp:n="classes",label:a="local",styles:l,breakpoint:o="desktop",state:c=null,customCss:i=null}){const d=(0,r.resolveBreakpointId)(o),m=null==c?null:c;return{styleId:(0,s.createElementStyle)({styleId:t,elementId:e,classesProp:n,label:a,meta:{breakpoint:d,state:m},props:l,custom_css:i})}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/delete-element.ts":function(e,t,n){n.r(t),n.d(t,{handleDeleteElement:function(){return handleDeleteElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function handleDeleteElement(e){if(!(0,r.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);return(0,s.deleteElement)({elementId:e,options:{useHistory:!0}}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/delete-style.ts":function(e,t,n){n.r(t),n.d(t,{handleDeleteStyle:function(){return handleDeleteStyle}});var s=n("./packages/packages/libs/editor-elements/src/styles/delete-element-style.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts");function handleDeleteStyle({elementId:e,styleId:t}){const n=(0,r.getElementStyles)(e);if(!n)throw new Error(`Element with ID "${e}" has no styles.`);const a=t||Object.keys(n)[0];if(!a)throw new Error(`Element with ID "${e}" has no styles to delete.`);return(0,s.deleteElementStyle)(e,a),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/deselect-element.ts":function(e,t,n){n.r(t),n.d(t,{handleDeselectAllElements:function(){return handleDeselectAllElements},handleDeselectElement:function(){return handleDeselectElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function handleDeselectElement(e){const t=(0,r.getContainer)(e);if(!t)throw new Error(`Element with ID "${e}" not found`);return(0,s.__privateRunCommand)("document/elements/deselect",{container:t}),{success:!0}}function handleDeselectAllElements(){return(0,s.__privateRunCommand)("document/elements/deselect-all",{}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/duplicate-element.ts":function(e,t,n){n.r(t),n.d(t,{handleDuplicateElement:function(){return handleDuplicateElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/duplicate-element.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function handleDuplicateElement(e){if(!(0,r.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);const t=(0,s.duplicateElement)({elementId:e,options:{useHistory:!0}}),n=t.model.get("widgetType")||t.model.get("elType")||"";return{elementId:t.id,type:n}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/get-element-props.ts":function(e,t,n){n.r(t),n.d(t,{handleGetElementProps:function(){return handleGetElementProps}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts");function handleGetElementProps(e){const t=(0,s.getContainer)(e);if(!t)throw new Error(`Element with ID "${e}" not found`);const n=t.model.get("widgetType")||t.model.get("elType");if(!n)throw new Error(`Element with ID "${e}" has no type`);const l=(0,a.getElementType)(n);if(!l)throw new Error(`Element type "${n}" is not atomic`);const o=l.propsSchema,c=Object.keys(o);return(0,r.getElementSettings)(e,c)}},"./packages/packages/libs/editor-elements/src/mcp/handlers/get-element-schema.ts":function(e,t,n){n.r(t),n.d(t,{handleGetElementSchema:function(){return handleGetElementSchema}});var s=n("@elementor/editor-styles"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts");function handleGetElementSchema(e){const t=(0,r.getElementType)(e);if(!t)throw new Error(`Element type "${e}" not found or is not atomic`);return{...t,stylesSchema:(0,s.getStylesSchema)()}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/get-selected.ts":function(e,t,n){n.r(t),n.d(t,{handleGetSelected:function(){return handleGetSelected}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts");function handleGetSelected(){return(0,s.getSelectedElements)()}},"./packages/packages/libs/editor-elements/src/mcp/handlers/get-styles.ts":function(e,t,n){n.r(t),n.d(t,{handleGetStyles:function(){return handleGetStyles}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts");function handleGetStyles(e){const t=(0,s.getElementStyles)(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,{id:t.id,label:t.label,type:t.type,variants:t.variants.map(e=>({meta:e.meta,props:e.props,custom_css:e.custom_css}))}])):null}},"./packages/packages/libs/editor-elements/src/mcp/handlers/list-available-types.ts":function(e,t,n){n.r(t),n.d(t,{handleListAvailableTypes:function(){return handleListAvailableTypes}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts");function handleListAvailableTypes(){const e=(0,s.getWidgetsCache)();if(!e)return[];const t=[];return Object.entries(e).forEach(([e,n])=>{n?.atomic_controls&&n?.atomic_props_schema&&t.push({type:e,title:n.title||e})}),t}},"./packages/packages/libs/editor-elements/src/mcp/handlers/move-element.ts":function(e,t,n){n.r(t),n.d(t,{handleMoveElement:function(){return handleMoveElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/move-element.ts");function handleMoveElement({elementId:e,targetContainerId:t}){if(!(0,s.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);if(!(0,s.getContainer)(t))throw new Error(`Target container with ID "${t}" not found`);return(0,r.moveElement)({elementId:e,targetContainerId:t,options:{useHistory:!0}}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/select-element.ts":function(e,t,n){n.r(t),n.d(t,{handleSelectElement:function(){return handleSelectElement},handleSelectMultipleElements:function(){return handleSelectMultipleElements}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function handleSelectElement(e){if(!(0,s.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);return(0,s.selectElement)(e),{success:!0}}function handleSelectMultipleElements(e){return e.forEach(e=>{(0,s.getContainer)(e)&&(0,s.selectElement)(e)}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/update-props.ts":function(e,t,n){n.r(t),n.d(t,{handleUpdateProps:function(){return handleUpdateProps}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts");function handleUpdateProps({elementId:e,props:t}){if(!(0,s.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);return(0,r.updateElementSettings)({id:e,props:t,withHistory:!0}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/update-styles.ts":function(e,t,n){n.r(t),n.d(t,{handleUpdateStyles:function(){return handleUpdateStyles}});var s=n("./packages/packages/libs/editor-elements/src/styles/update-element-style.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts"),a=n("./packages/packages/libs/editor-elements/src/mcp/handlers/common-style-utils.ts");function handleUpdateStyles({elementId:e,styleId:t,styles:n,breakpoint:l="desktop",state:o=null}){const c=(0,a.resolveBreakpointId)(l),i=null==o?null:o,d=(0,r.getElementStyles)(e);if(!d)throw new Error(`Element with ID "${e}" has no styles. Create a style first.`);const m=t||Object.keys(d)[0];if(!m)throw new Error(`Element with ID "${e}" has no styles. Create a style first.`);return(0,s.updateElementStyle)({elementId:e,styleId:m,meta:{breakpoint:c,state:i},props:n}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/index.ts":function(e,t,n){n.r(t),n.d(t,{initMcp:function(){return initMcp}});var s=n("@elementor/editor-mcp"),r=n("./packages/packages/libs/editor-elements/src/mcp/elements-tool.ts");function initMcp(){const{setMCPDescription:e}=(0,s.getMCPByDomain)("elements");e("Tools for managing atomic elements in Elementor v4 editor"),(0,r.initElementsTool)()}},"./packages/packages/libs/editor-elements/src/styles/consts.ts":function(e,t,n){n.r(t),n.d(t,{ELEMENT_STYLE_CHANGE_EVENT:function(){return r},styleRerenderEvents:function(){return a}});var s=n("@elementor/editor-v1-adapters");const r="elementor/editor-v2/editor-elements/style",a=[(0,s.commandEndEvent)("document/elements/create"),(0,s.commandEndEvent)("document/elements/duplicate"),(0,s.commandEndEvent)("document/elements/import"),(0,s.commandEndEvent)("document/elements/paste"),(0,s.windowEvent)(r)]},"./packages/packages/libs/editor-elements/src/styles/create-element-style.ts":function(e,t,n){n.r(t),n.d(t,{createElementStyle:function(){return createElementStyle},shouldCreateNewLocalStyle:function(){return shouldCreateNewLocalStyle}});var s=n("@elementor/editor-props"),r=n("@elementor/editor-styles"),a=n("./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts"),o=n("./packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts");function createElementStyle({styleId:e,elementId:t,classesProp:n,label:c,meta:i,props:d,custom_css:m=null,additionalVariants:p=[]}){let u=e;return(0,o.mutateElementStyles)(t,e=>{u??=(0,r.generateId)(`e-${t}-`,Object.keys(e));const o=[{meta:i,props:d,custom_css:m},...p];return e[u]={id:u,label:c,type:"class",variants:o},function addStyleToClassesProp(e,t,n){const r=(0,a.getElementSetting)(e,t),o=s.classesPropTypeUtil.create(e=>[...e??[],n],{base:r});(0,l.updateElementSettings)({id:e,props:{[t]:o},withHistory:!1})}(t,n,u),e}),u}function shouldCreateNewLocalStyle(e){return!e?.styleId&&!e?.provider}},"./packages/packages/libs/editor-elements/src/styles/delete-element-style.ts":function(e,t,n){n.r(t),n.d(t,{deleteElementStyle:function(){return deleteElementStyle}});var s=n("./packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts");function deleteElementStyle(e,t){(0,s.mutateElementStyles)(e,e=>(delete e[t],e))}},"./packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts":function(e,t,n){n.r(t),n.d(t,{mutateElementStyles:function(){return mutateElementStyles}});var s=n("@elementor/editor-props"),r=n("@elementor/editor-v1-adapters"),a=n("./packages/packages/libs/editor-elements/src/errors.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts"),c=n("./packages/packages/libs/editor-elements/src/styles/consts.ts");function mutateElementStyles(e,t){const n=(0,l.getContainer)(e);if(!n)throw new a.ElementNotFoundError({context:{elementId:e}});const i=Object.keys(n.model.get("styles")??{}),d=function mutateStyles(e,t){const n=structuredClone(e.model.get("styles"))??{},s=Object.entries(t(n)).map(([e,t])=>(t.variants=function removeEmptyVariants(e){return e.variants.filter(({props:e,custom_css:t})=>Object.keys(e).length>0||t?.raw)}(t),[e,t])).filter(([,e])=>!function isStyleEmpty(e){return 0===e.variants.length}(e)),r=Object.fromEntries(s);return e.model.set("styles",r),r}(n,t);return function clearRemovedClasses(e,{oldIds:t,newIds:n}){const r=t.filter(e=>!n.includes(e)),a=structuredClone(function getClassesProps(e){return Object.entries(e.settings.toJSON()).filter(e=>{const[,t]=e;return s.classesPropTypeUtil.isValid(t)})}(e));a.forEach(([,e])=>{e.value=e.value.filter(e=>!r.includes(e))}),(0,o.updateElementSettings)({id:e.id,props:Object.fromEntries(a),withHistory:!1})}(n,{oldIds:i,newIds:Object.keys(d)}),function notifyChanges(){(function dispatchChangeEvent(){window.dispatchEvent(new CustomEvent(c.ELEMENT_STYLE_CHANGE_EVENT))})(),(0,r.__privateRunCommandSync)("document/save/set-is-modified",{status:!0},{internal:!0})}(),d}},"./packages/packages/libs/editor-elements/src/styles/update-element-style.ts":function(e,t,n){n.r(t),n.d(t,{updateElementStyle:function(){return updateElementStyle}});var s=n("@elementor/editor-props"),r=n("@elementor/editor-styles"),a=n("./packages/packages/libs/editor-elements/src/errors.ts"),l=n("./packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts");function updateElementStyle(e){(0,l.mutateElementStyles)(e.elementId,t=>{const n=t[e.styleId];if(!n)throw new a.StyleNotFoundError({context:{styleId:e.styleId}});const l=(0,r.getVariantByMeta)(n,e.meta),o=("custom_css"in e?e.custom_css:l?.custom_css)??null;return l?(l.props=(0,s.mergeProps)(l.props,e.props),l.custom_css=o?.raw?o:null):n.variants.push({meta:e.meta,props:e.props,custom_css:o}),t})}},"./packages/packages/libs/editor-elements/src/sync/create-element.ts":function(e,t,n){n.r(t),n.d(t,{createElement:function(){return createElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function createElement({containerId:e,model:t,options:n}){const a=(0,r.getContainer)(e);if(!a)throw new Error(`Container with ID "${e}" not found`);return(0,s.__privateRunCommandSync)("document/elements/create",{container:a,model:t,options:{edit:!1,...n}})}},"./packages/packages/libs/editor-elements/src/sync/create-elements.ts":function(e,t,n){n.r(t),n.d(t,{createElements:function(){return createElements}});var s=n("@elementor/editor-v1-adapters"),r=n("@wordpress/i18n"),a=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const createElements=({elements:e,title:t,subtitle:n=(0,r.__)("Item added","elementor")})=>(0,s.undoable)({do:({elements:e})=>{const t=[];return e.forEach(e=>{const{options:n,...s}=e,r=(0,a.createElement)({...s,options:{...n,useHistory:!1}}),l=r.id;t.push({elementId:l,model:r.model?.toJSON()||{},createParams:{...e}})}),{createdElements:t}},undo:(e,{createdElements:t})=>{[...t].reverse().forEach(({elementId:e})=>{(0,l.deleteElement)({elementId:e,options:{useHistory:!1}})})},redo:(e,{createdElements:t})=>{const n=[];return t.forEach(({createParams:e,model:t})=>{const s=(0,a.createElement)({containerId:e.containerId,model:t,options:{...e.options,useHistory:!1}}).id,r=(0,o.getContainer)(s);r&&n.push({elementId:s,model:r.model.toJSON(),createParams:e})}),{createdElements:n}}},{title:t,subtitle:n})({elements:e})},"./packages/packages/libs/editor-elements/src/sync/delete-element.ts":function(e,t,n){n.r(t),n.d(t,{deleteElement:function(){return deleteElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function deleteElement({elementId:e,options:t={}}){const n=(0,r.getContainer)(e);if(!n)throw new Error(`Element with ID "${e}" not found`);return(0,s.__privateRunCommand)("document/elements/delete",{container:n,options:t})}},"./packages/packages/libs/editor-elements/src/sync/drop-element.ts":function(e,t,n){n.r(t),n.d(t,{dropElement:function(){return dropElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function dropElement({containerId:e,model:t,options:n}){const a=(0,r.getContainer)(e);if(!a)throw new Error(`Container with ID "${e}" not found`);return(0,s.__privateRunCommandSync)("preview/drop",{container:a,model:t,options:n})}},"./packages/packages/libs/editor-elements/src/sync/duplicate-element.ts":function(e,t,n){n.r(t),n.d(t,{duplicateElement:function(){return duplicateElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function duplicateElement({elementId:e,options:t={}}){const n=(0,r.getContainer)(e);if(!n)throw new Error(`Element with ID "${e}" not found`);if(!n.parent)throw new Error(`Element with ID "${e}" has no parent container`);const a=n.parent,l=n.model.toJSON(),o=n.view?._index??0,c=!1!==t.clone?o+1:void 0;return(0,s.createElement)({containerId:a.id,model:l,options:{at:c,...t}})}},"./packages/packages/libs/editor-elements/src/sync/duplicate-elements.ts":function(e,t,n){n.r(t),n.d(t,{duplicateElements:function(){return duplicateElements}});var s=n("@elementor/editor-v1-adapters"),r=n("@wordpress/i18n"),a=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/duplicate-element.ts"),c=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const duplicateElements=({elementIds:e,title:t,subtitle:n=(0,r.__)("Item duplicated","elementor")})=>(0,s.undoable)({do:({elementIds:e})=>({duplicatedElements:e.reduce((e,t)=>{const n=(0,c.getContainer)(t);if(n?.parent){const n=(0,o.duplicateElement)({elementId:t,options:{useHistory:!1,clone:!0}});e.push({id:n.id,model:n.model.toJSON(),originalElementId:t,modelToRestore:n.model.toJSON(),parentContainerId:n.parent?.id,at:n.view?._index})}return e},[])}),undo:(e,{duplicatedElements:t})=>{[...t].reverse().forEach(({id:e})=>{(0,l.deleteElement)({elementId:e,options:{useHistory:!1}})})},redo:(e,{duplicatedElements:t})=>({duplicatedElements:t.reduce((e,t)=>{if(t.modelToRestore&&t.parentContainerId){const n=(0,a.createElement)({containerId:t.parentContainerId,model:t.modelToRestore,options:{useHistory:!1,clone:!1,at:t.at}});e.push({id:n.id,model:n.model.toJSON(),originalElementId:t.originalElementId,modelToRestore:t.modelToRestore,parentContainerId:t.parentContainerId,at:t.at})}return e},[])})},{title:t,subtitle:n})({elementIds:e})},"./packages/packages/libs/editor-elements/src/sync/generate-element-id.ts":function(e,t,n){n.r(t),n.d(t,{generateElementId:function(){return generateElementId}});const generateElementId=()=>{const e=window;return e.elementorCommon?.helpers?.getUniqueId?.()??`el-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}},"./packages/packages/libs/editor-elements/src/sync/get-container.ts":function(e,t,n){n.r(t),n.d(t,{getContainer:function(){return getContainer},selectElement:function(){return selectElement}});var s=n("@elementor/editor-v1-adapters");function getContainer(e){const t=window,n=t.elementor?.getContainer?.(e);return n??null}const selectElement=e=>{try{const t=getContainer(e);(0,s.__privateRunCommand)("document/elements/select",{container:t})}catch{}}},"./packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts":function(e,t,n){function getCurrentDocumentContainer(){const e=window;return e.elementor?.documents?.getCurrent?.()?.container??null}n.r(t),n.d(t,{getCurrentDocumentContainer:function(){return getCurrentDocumentContainer}})},"./packages/packages/libs/editor-elements/src/sync/get-current-document-id.ts":function(e,t,n){function getCurrentDocumentId(){const e=window;return e.elementor?.documents?.getCurrentId?.()??null}n.r(t),n.d(t,{getCurrentDocumentId:function(){return getCurrentDocumentId}})},"./packages/packages/libs/editor-elements/src/sync/get-element-editor-settings.ts":function(e,t,n){n.r(t),n.d(t,{getElementEditorSettings:function(){return getElementEditorSettings}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function getElementEditorSettings(e){const t=(0,s.getContainer)(e);return t?.model.get("editor_settings")??{}}},"./packages/packages/libs/editor-elements/src/sync/get-element-interactions.ts":function(e,t,n){n.r(t),n.d(t,{getElementInteractions:function(){return getElementInteractions}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function getElementInteractions(e){const t=(0,s.getContainer)(e),n=t?.model?.get("interactions");return"string"==typeof n?JSON.parse(n):n}},"./packages/packages/libs/editor-elements/src/sync/get-element-label.ts":function(e,t,n){n.r(t),n.d(t,{getElementLabel:function(){return getElementLabel}});var s=n("./packages/packages/libs/editor-elements/src/errors.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts");function getElementLabel(e){e||(e=(0,l.getSelectedElements)()?.[0]?.id);const t=(0,r.getContainer)(e),n=t?.model.get("widgetType")||t?.model.get("elType");if(!n)throw new s.ElementTypeNotExistsError({context:{elementId:e}});const o=(0,a.getWidgetsCache)()?.[n]?.title;if(!o)throw new s.ElementLabelNotExistsError({context:{elementType:n}});return o}},"./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts":function(e,t,n){n.r(t),n.d(t,{getElementSetting:function(){return getElementSetting},getElementSettings:function(){return getElementSettings}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const getElementSetting=(e,t)=>{const n=(0,s.getContainer)(e);return n?.settings?.get(t)??null},getElementSettings=(e,t)=>Object.fromEntries(t.map(t=>[t,getElementSetting(e,t)]))},"./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts":function(e,t,n){n.r(t),n.d(t,{getElementStyles:function(){return getElementStyles}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const getElementStyles=e=>{const t=(0,s.getContainer)(e);return t?.model.get("styles")||null}},"./packages/packages/libs/editor-elements/src/sync/get-element-type.ts":function(e,t,n){n.r(t),n.d(t,{getElementType:function(){return getElementType}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts");function getElementType(e){if(!e)return null;const t=(0,s.getWidgetsCache)(),n=t?.[e];return n?.atomic_controls&&n?.atomic_props_schema?{key:e,controls:n.atomic_controls,propsSchema:n.atomic_props_schema,dependenciesPerTargetMapping:n.dependencies_per_target_mapping??{},title:n.title,styleStates:n.atomic_style_states??[]}:null}},"./packages/packages/libs/editor-elements/src/sync/get-elements.ts":function(e,t,n){n.r(t),n.d(t,{getElements:function(){return getElements}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts");function getElements(e){const t=e?(0,s.getContainer)(e):(0,r.getCurrentDocumentContainer)();if(!t)return[];const n=[...t.model.get("elements")??[]].flatMap(e=>getElements(e.get("id")));return[t,...n]}},"./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts":function(e,t,n){function getSelectedElements(){const e=window;return(e.elementor?.selection?.getElements?.()??[]).reduce((e,t)=>{const n=t.model.get("widgetType")||t.model.get("elType");return n&&e.push({id:t.model.get("id"),type:n}),e},[])}n.r(t),n.d(t,{getSelectedElements:function(){return getSelectedElements}})},"./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts":function(e,t,n){function getWidgetsCache(){const e=window;return e?.elementor?.widgetsCache||null}n.r(t),n.d(t,{getWidgetsCache:function(){return getWidgetsCache}})},"./packages/packages/libs/editor-elements/src/sync/move-element.ts":function(e,t,n){n.r(t),n.d(t,{moveElement:function(){return moveElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function moveElement({elementId:e,targetContainerId:t,options:n={}}){const l=(0,a.getContainer)(e),o=(0,a.getContainer)(t);if(!l)throw new Error(`Element with ID "${e}" not found`);if(!o)throw new Error(`Target container with ID "${t}" not found`);const c=l.model.toJSON();(0,r.deleteElement)({elementId:e,options:{...n,useHistory:!1}});return(0,s.createElement)({containerId:t,model:c,options:{edit:!1,...n,useHistory:!1}})}},"./packages/packages/libs/editor-elements/src/sync/move-elements.ts":function(e,t,n){n.r(t),n.d(t,{moveElements:function(){return moveElements}});var s=n("@elementor/editor-v1-adapters"),r=n("@wordpress/i18n"),a=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/move-element.ts");const moveElements=({moves:e,title:t,subtitle:n=(0,r.__)("Elements moved","elementor"),onMoveElements:o,onRestoreElements:c})=>(0,s.undoable)({do:({moves:e})=>{const t=[];return o?.(),e.forEach(e=>{const{elementId:n}=e,s=(0,a.getContainer)(n);if(!s)throw new Error(`Element with ID "${n}" not found`);const r={elementId:n,originalContainerId:s.parent?.id||"",originalIndex:s.parent?.children?.indexOf(s)??-1},o=(0,l.moveElement)({...e,options:{...e.options,useHistory:!1}});t.push({elementId:n,originalPosition:r,move:e,element:o})}),{movedElements:t}},undo:(e,{movedElements:t})=>{c?.(),[...t].reverse().forEach(({originalPosition:e})=>{const{elementId:t,originalContainerId:n,originalIndex:s}=e;(0,l.moveElement)({elementId:t,targetContainerId:n,options:{useHistory:!1,at:s>=0?s:void 0}})})},redo:(e,{movedElements:t})=>{const n=[];return o?.(),t.forEach(({move:e,originalPosition:t})=>{const s=(0,l.moveElement)({...e,options:{...e.options,useHistory:!1}});n.push({elementId:e.elementId,originalPosition:t,move:e,element:s})}),{movedElements:n}}},{title:t,subtitle:n})({moves:e})},"./packages/packages/libs/editor-elements/src/sync/remove-elements.ts":function(e,t,n){n.r(t),n.d(t,{removeElements:function(){return removeElements}});var s=n("@elementor/editor-v1-adapters"),r=n("@wordpress/i18n"),a=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const removeElements=({elementIds:e,title:t,subtitle:n=(0,r.__)("Item removed","elementor"),onRemoveElements:c,onRestoreElements:i})=>(0,s.undoable)({do:({elementIds:e})=>{const t=[];return e.forEach(e=>{const n=(0,o.getContainer)(e);if(n){const s=n.model.toJSON(),r=n.parent,a=n.view?._index??0;t.push({elementId:e,model:s,parent:r??null,at:a})}}),c?.(),e.forEach(e=>{(0,l.deleteElement)({elementId:e,options:{useHistory:!1}})}),{elementIds:e,removedElements:t}},undo:(e,{removedElements:t})=>{i?.(),[...t].reverse().forEach(({model:e,parent:t,at:n})=>{t&&e&&(0,a.createElement)({containerId:t.id,model:e,options:{useHistory:!1,at:n}})})},redo:(e,{elementIds:t,removedElements:n})=>(c?.(),t.forEach(e=>{(0,l.deleteElement)({elementId:e,options:{useHistory:!1}})}),{elementIds:t,removedElements:n})},{title:t,subtitle:n})({elementIds:e})},"./packages/packages/libs/editor-elements/src/sync/replace-element.ts":function(e,t,n){n.r(t),n.d(t,{replaceElement:function(){return replaceElement}});var s=n("./packages/packages/libs/editor-elements/src/errors.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const replaceElement=({currentElement:e,newElement:t,withHistory:n=!0})=>{const{containerId:o,index:c}=function getNewElementLocation(e,t){let n;const a=(0,l.getContainer)(e.id);if(!a)throw new s.ElementNotFoundError({context:{elementId:e.id}});const o=a.parent;if(!o)throw new s.ElementParentNotFoundError({context:{elementId:e.id}});const c=a.view?._index??0;if(void 0===c||-1===c)throw new s.ElementIndexNotFoundError({context:{elementId:e.id}});n={containerId:o.id,index:c},"document"===o.id&&"widget"===t.elType&&(n=function createWrapperForWidget(e,t){const n=(0,r.createElement)({containerId:e,model:{elType:"container"},options:{at:t,useHistory:!1}});return{containerId:n.id,index:0}}(o.id,c));return n}(e,t);(0,r.createElement)({containerId:o,model:t,options:{at:c,useHistory:n}}),(0,a.deleteElement)({elementId:e.id,options:{useHistory:n}})}},"./packages/packages/libs/editor-elements/src/sync/update-element-editor-settings.ts":function(e,t,n){n.r(t),n.d(t,{updateElementEditorSettings:function(){return updateElementEditorSettings}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const updateElementEditorSettings=({elementId:e,settings:t})=>{const n=(0,r.getContainer)(e);if(!n)throw new Error(`Element with id ${e} not found`);const a=n.model.get("editor_settings")??{};n.model.set("editor_settings",{...a,...t}),function setDocumentModifiedStatus(e){(0,s.__privateRunCommandSync)("document/save/set-is-modified",{status:e},{internal:!0})}(!0)}},"./packages/packages/libs/editor-elements/src/sync/update-element-interactions.ts":function(e,t,n){n.r(t),n.d(t,{playElementInteractions:function(){return playElementInteractions},updateElementInteractions:function(){return updateElementInteractions}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const updateElementInteractions=({elementId:e,interactions:t})=>{const n=(0,r.getContainer)(e);if(!n)throw new Error(`Element with id ${e} not found`);n.model.set("interactions",t),window.dispatchEvent(new CustomEvent("elementor/element/update_interactions")),function setDocumentModifiedStatus(e){(0,s.__privateRunCommandSync)("document/save/set-is-modified",{status:e},{internal:!0})}(!0)},playElementInteractions=(e,t)=>{window.top?.dispatchEvent(new CustomEvent("atomic/play_interactions",{detail:{elementId:e,animationId:t}}))}},"./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts":function(e,t,n){n.r(t),n.d(t,{updateElementSettings:function(){return updateElementSettings}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const updateElementSettings=({id:e,props:t,withHistory:n=!0})=>{const a={container:(0,r.getContainer)(e),settings:{...t}};n?(0,s.__privateRunCommandSync)("document/elements/settings",a):(0,s.__privateRunCommandSync)("document/elements/set-settings",a,{internal:!0})}},"./packages/packages/libs/editor-elements/src/types.ts":function(e,t,n){n.r(t)},"@elementor/editor-mcp":function(e){e.exports=window.elementorV2.editorMcp},"@elementor/editor-props":function(e){e.exports=window.elementorV2.editorProps},"@elementor/editor-styles":function(e){e.exports=window.elementorV2.editorStyles},"@elementor/editor-v1-adapters":function(e){e.exports=window.elementorV2.editorV1Adapters},"@elementor/schema":function(e){e.exports=window.elementorV2.schema},"@elementor/utils":function(e){e.exports=window.elementorV2.utils},"@wordpress/i18n":function(e){e.exports=window.wp.i18n},react:function(e){e.exports=window.React}},t={};function __webpack_require__(n){var s=t[n];if(void 0!==s)return s.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};!function(){__webpack_require__.r(n),__webpack_require__.d(n,{ELEMENT_STYLE_CHANGE_EVENT:function(){return A.ELEMENT_STYLE_CHANGE_EVENT},createElement:function(){return l.createElement},createElementStyle:function(){return P.createElementStyle},createElements:function(){return o.createElements},deleteElement:function(){return c.deleteElement},deleteElementStyle:function(){return L.deleteElementStyle},dropElement:function(){return i.dropElement},duplicateElement:function(){return d.duplicateElement},duplicateElements:function(){return m.duplicateElements},generateElementId:function(){return p.generateElementId},getAnchoredAncestorId:function(){return x.getAnchoredAncestorId},getAnchoredDescendantId:function(){return x.getAnchoredDescendantId},getContainer:function(){return u.getContainer},getCurrentDocumentContainer:function(){return g.getCurrentDocumentContainer},getCurrentDocumentId:function(){return y.getCurrentDocumentId},getElementEditorSettings:function(){return E.getElementEditorSettings},getElementInteractions:function(){return $.getElementInteractions},getElementLabel:function(){return k.getElementLabel},getElementSetting:function(){return f.getElementSetting},getElementSettings:function(){return f.getElementSettings},getElementStyles:function(){return h.getElementStyles},getElementType:function(){return b.getElementType},getElements:function(){return _.getElements},getLinkInLinkRestriction:function(){return x.getLinkInLinkRestriction},getSelectedElements:function(){return w.getSelectedElements},getWidgetsCache:function(){return v.getWidgetsCache},initElementsMcp:function(){return R.initMcp},isElementAnchored:function(){return x.isElementAnchored},moveElement:function(){return I.moveElement},moveElements:function(){return S.moveElements},playElementInteractions:function(){return O.playElementInteractions},removeElements:function(){return C.removeElements},replaceElement:function(){return T.replaceElement},selectElement:function(){return u.selectElement},shouldCreateNewLocalStyle:function(){return P.shouldCreateNewLocalStyle},styleRerenderEvents:function(){return A.styleRerenderEvents},updateElementEditorSettings:function(){return D.updateElementEditorSettings},updateElementInteractions:function(){return O.updateElementInteractions},updateElementSettings:function(){return q.updateElementSettings},updateElementStyle:function(){return N.updateElementStyle},useElementChildren:function(){return e.useElementChildren},useElementEditorSettings:function(){return t.useElementEditorSettings},useElementInteractions:function(){return M.useElementInteractions},useElementSetting:function(){return s.useElementSetting},useElementSettings:function(){return s.useElementSettings},useParentElement:function(){return r.useParentElement},useSelectedElement:function(){return a.useSelectedElement}});__webpack_require__("./packages/packages/libs/editor-elements/src/types.ts");var e=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-element-children.ts"),t=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-element-editor-settings.ts"),s=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-element-setting.ts"),r=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-parent-element.ts"),a=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-selected-element.ts"),l=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),o=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/create-elements.ts"),c=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),i=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/drop-element.ts"),d=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/duplicate-element.ts"),m=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/duplicate-elements.ts"),p=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/generate-element-id.ts"),u=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),g=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts"),y=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-current-document-id.ts"),E=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-editor-settings.ts"),k=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-label.ts"),f=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts"),h=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts"),b=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts"),_=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-elements.ts"),w=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts"),v=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts"),I=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/move-element.ts"),S=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/move-elements.ts"),C=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/remove-elements.ts"),T=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/replace-element.ts"),D=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/update-element-editor-settings.ts"),q=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts"),x=__webpack_require__("./packages/packages/libs/editor-elements/src/link-restriction.ts"),A=__webpack_require__("./packages/packages/libs/editor-elements/src/styles/consts.ts"),P=__webpack_require__("./packages/packages/libs/editor-elements/src/styles/create-element-style.ts"),L=__webpack_require__("./packages/packages/libs/editor-elements/src/styles/delete-element-style.ts"),N=__webpack_require__("./packages/packages/libs/editor-elements/src/styles/update-element-style.ts"),M=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-element-interactions.ts"),$=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-interactions.ts"),O=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/update-element-interactions.ts"),R=__webpack_require__("./packages/packages/libs/editor-elements/src/mcp/index.ts")}(),(window.elementorV2=window.elementorV2||{}).editorElements=n}(),window.elementorV2.editorElements?.init?.();
1320 3 //# sourceMappingURL=editor-elements.js.map