@elementor/editor-elements 4.0.0-530 → 4.0.0-532
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +14 -5
- package/dist/index.d.ts +14 -5
- package/dist/index.js +57 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +54 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/hooks/use-element-children.ts +23 -7
- package/src/index.ts +6 -0
- package/src/sync/get-model.ts +53 -0
package/dist/index.d.mts
CHANGED
|
@@ -74,8 +74,8 @@ type ExtendedWindow = Window & {
|
|
|
74
74
|
};
|
|
75
75
|
type V1Element = {
|
|
76
76
|
id: string;
|
|
77
|
-
model: V1Model<V1ElementModelProps>;
|
|
78
|
-
settings: V1Model<V1ElementSettingsProps>;
|
|
77
|
+
model: V1Model$1<V1ElementModelProps>;
|
|
78
|
+
settings: V1Model$1<V1ElementSettingsProps>;
|
|
79
79
|
children?: V1Element[] & {
|
|
80
80
|
findRecursive?: (predicate: (child: V1Element) => boolean) => V1Element | undefined;
|
|
81
81
|
forEachRecursive?: (callback: (child: V1Element) => void) => V1Element[];
|
|
@@ -158,7 +158,7 @@ type V1ElementModelProps = {
|
|
|
158
158
|
elType: string;
|
|
159
159
|
id: string;
|
|
160
160
|
styles?: Record<StyleDefinitionID, StyleDefinition>;
|
|
161
|
-
elements?: V1Model<V1ElementModelProps>[];
|
|
161
|
+
elements?: V1Model$1<V1ElementModelProps>[];
|
|
162
162
|
settings?: V1ElementSettingsProps;
|
|
163
163
|
editor_settings?: V1ElementEditorSettingsProps;
|
|
164
164
|
interactions?: string | ElementInteractions;
|
|
@@ -193,7 +193,7 @@ type V1ElementConfig<T = object> = {
|
|
|
193
193
|
[key: string]: string | number | boolean | null | NonNullable<V1ElementConfig['meta']>;
|
|
194
194
|
};
|
|
195
195
|
} & T;
|
|
196
|
-
type V1Model<T> = {
|
|
196
|
+
type V1Model$1<T> = {
|
|
197
197
|
get: <K extends keyof T>(key: K) => T[K];
|
|
198
198
|
set: <K extends keyof T>(key: K, value: T[K]) => void;
|
|
199
199
|
toJSON: (options?: {
|
|
@@ -204,6 +204,7 @@ type V1Model<T> = {
|
|
|
204
204
|
|
|
205
205
|
type ElementModel = {
|
|
206
206
|
id: string;
|
|
207
|
+
editorSettings: V1ElementEditorSettingsProps;
|
|
207
208
|
};
|
|
208
209
|
type ElementChildren = Record<string, ElementModel[]>;
|
|
209
210
|
declare function useElementChildren<T extends ElementChildren>(elementId: ElementID, childrenTypes: Record<string, string>): T;
|
|
@@ -332,6 +333,14 @@ declare function getElementType(type: string): ElementType | null;
|
|
|
332
333
|
|
|
333
334
|
declare function getAllDescendants(container: V1Element): V1Element[];
|
|
334
335
|
|
|
336
|
+
type V1Model = V1Element['model'];
|
|
337
|
+
type ModelResult = {
|
|
338
|
+
model: V1Model;
|
|
339
|
+
};
|
|
340
|
+
declare function getModel(id: string, parentModel?: V1Model): ModelResult | null;
|
|
341
|
+
declare function findChildRecursive(model: V1Model, predicate: (model: V1Model) => boolean): ModelResult | null;
|
|
342
|
+
declare function getElementChildren(model: V1Model, predicate?: (model: V1Model) => boolean): ModelResult[];
|
|
343
|
+
|
|
335
344
|
declare function getElements(root?: ElementID): V1Element[];
|
|
336
345
|
|
|
337
346
|
declare function getSelectedElements(): Element[];
|
|
@@ -469,4 +478,4 @@ declare const updateElementInteractions: ({ elementId, interactions, }: {
|
|
|
469
478
|
}) => void;
|
|
470
479
|
declare const playElementInteractions: (elementId: string, interactionId: string) => void;
|
|
471
480
|
|
|
472
|
-
export { type AnimationPresetPropValue, type BooleanPropValue, type ConfigPropValue, type Control, type ControlItem, type ControlLayout, type ControlsSection, type CreateElementParams, type CreateElementStyleArgs, type DropElementParams, type DuplicateElementParams, type DuplicateElementsParams, type DuplicatedElement, type DuplicatedElementsResult, ELEMENT_STYLE_CHANGE_EVENT, type Element, type ElementChildren, type ElementControl, type ElementID, type ElementInteractions, type ElementModel, type ElementType, type ExcludedBreakpointsPropValue, type ExtendedWindow, type InteractionBreakpointsPropValue, type InteractionItemPropValue, type LinkInLinkRestriction, type MoveElementParams, type MoveElementsParams, type MovedElement, type MovedElementsResult, type NumberPropValue, type StringPropValue, type TimingConfigPropValue, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementData, type V1ElementEditorSettingsProps, type V1ElementModelProps, type V1ElementSettingsProps, createElement, createElementStyle, createElements, deleteElement, deleteElementStyle, dropElement, duplicateElement, duplicateElements, generateElementId, getAllDescendants, getAnchoredAncestorId, getAnchoredDescendantId, getContainer, getCurrentDocumentContainer, getCurrentDocumentId, getElementEditorSettings, getElementInteractions, getElementLabel, getElementSetting, getElementSettings, getElementStyles, getElementType, getElements, getLinkInLinkRestriction, getSelectedElements, getWidgetsCache, isElementAnchored, moveElement, moveElements, playElementInteractions, removeElements, replaceElement, selectElement, shouldCreateNewLocalStyle, styleRerenderEvents, updateElementEditorSettings, updateElementInteractions, updateElementSettings, updateElementStyle, useElementChildren, useElementEditorSettings, useElementInteractions, useElementSetting, useElementSettings, useParentElement, useSelectedElement };
|
|
481
|
+
export { type AnimationPresetPropValue, type BooleanPropValue, type ConfigPropValue, type Control, type ControlItem, type ControlLayout, type ControlsSection, type CreateElementParams, type CreateElementStyleArgs, type DropElementParams, type DuplicateElementParams, type DuplicateElementsParams, type DuplicatedElement, type DuplicatedElementsResult, ELEMENT_STYLE_CHANGE_EVENT, type Element, type ElementChildren, type ElementControl, type ElementID, type ElementInteractions, type ElementModel, type ElementType, type ExcludedBreakpointsPropValue, type ExtendedWindow, type InteractionBreakpointsPropValue, type InteractionItemPropValue, type LinkInLinkRestriction, type ModelResult, type MoveElementParams, type MoveElementsParams, type MovedElement, type MovedElementsResult, type NumberPropValue, type StringPropValue, type TimingConfigPropValue, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementData, type V1ElementEditorSettingsProps, type V1ElementModelProps, type V1ElementSettingsProps, createElement, createElementStyle, createElements, deleteElement, deleteElementStyle, dropElement, duplicateElement, duplicateElements, findChildRecursive, generateElementId, getAllDescendants, getAnchoredAncestorId, getAnchoredDescendantId, getContainer, getCurrentDocumentContainer, getCurrentDocumentId, getElementChildren as getElementChildrenWithFallback, getElementEditorSettings, getElementInteractions, getElementLabel, getElementSetting, getElementSettings, getElementStyles, getElementType, getElements, getLinkInLinkRestriction, getModel, getSelectedElements, getWidgetsCache, isElementAnchored, moveElement, moveElements, playElementInteractions, removeElements, replaceElement, selectElement, shouldCreateNewLocalStyle, styleRerenderEvents, updateElementEditorSettings, updateElementInteractions, updateElementSettings, updateElementStyle, useElementChildren, useElementEditorSettings, useElementInteractions, useElementSetting, useElementSettings, useParentElement, useSelectedElement };
|
package/dist/index.d.ts
CHANGED
|
@@ -74,8 +74,8 @@ type ExtendedWindow = Window & {
|
|
|
74
74
|
};
|
|
75
75
|
type V1Element = {
|
|
76
76
|
id: string;
|
|
77
|
-
model: V1Model<V1ElementModelProps>;
|
|
78
|
-
settings: V1Model<V1ElementSettingsProps>;
|
|
77
|
+
model: V1Model$1<V1ElementModelProps>;
|
|
78
|
+
settings: V1Model$1<V1ElementSettingsProps>;
|
|
79
79
|
children?: V1Element[] & {
|
|
80
80
|
findRecursive?: (predicate: (child: V1Element) => boolean) => V1Element | undefined;
|
|
81
81
|
forEachRecursive?: (callback: (child: V1Element) => void) => V1Element[];
|
|
@@ -158,7 +158,7 @@ type V1ElementModelProps = {
|
|
|
158
158
|
elType: string;
|
|
159
159
|
id: string;
|
|
160
160
|
styles?: Record<StyleDefinitionID, StyleDefinition>;
|
|
161
|
-
elements?: V1Model<V1ElementModelProps>[];
|
|
161
|
+
elements?: V1Model$1<V1ElementModelProps>[];
|
|
162
162
|
settings?: V1ElementSettingsProps;
|
|
163
163
|
editor_settings?: V1ElementEditorSettingsProps;
|
|
164
164
|
interactions?: string | ElementInteractions;
|
|
@@ -193,7 +193,7 @@ type V1ElementConfig<T = object> = {
|
|
|
193
193
|
[key: string]: string | number | boolean | null | NonNullable<V1ElementConfig['meta']>;
|
|
194
194
|
};
|
|
195
195
|
} & T;
|
|
196
|
-
type V1Model<T> = {
|
|
196
|
+
type V1Model$1<T> = {
|
|
197
197
|
get: <K extends keyof T>(key: K) => T[K];
|
|
198
198
|
set: <K extends keyof T>(key: K, value: T[K]) => void;
|
|
199
199
|
toJSON: (options?: {
|
|
@@ -204,6 +204,7 @@ type V1Model<T> = {
|
|
|
204
204
|
|
|
205
205
|
type ElementModel = {
|
|
206
206
|
id: string;
|
|
207
|
+
editorSettings: V1ElementEditorSettingsProps;
|
|
207
208
|
};
|
|
208
209
|
type ElementChildren = Record<string, ElementModel[]>;
|
|
209
210
|
declare function useElementChildren<T extends ElementChildren>(elementId: ElementID, childrenTypes: Record<string, string>): T;
|
|
@@ -332,6 +333,14 @@ declare function getElementType(type: string): ElementType | null;
|
|
|
332
333
|
|
|
333
334
|
declare function getAllDescendants(container: V1Element): V1Element[];
|
|
334
335
|
|
|
336
|
+
type V1Model = V1Element['model'];
|
|
337
|
+
type ModelResult = {
|
|
338
|
+
model: V1Model;
|
|
339
|
+
};
|
|
340
|
+
declare function getModel(id: string, parentModel?: V1Model): ModelResult | null;
|
|
341
|
+
declare function findChildRecursive(model: V1Model, predicate: (model: V1Model) => boolean): ModelResult | null;
|
|
342
|
+
declare function getElementChildren(model: V1Model, predicate?: (model: V1Model) => boolean): ModelResult[];
|
|
343
|
+
|
|
335
344
|
declare function getElements(root?: ElementID): V1Element[];
|
|
336
345
|
|
|
337
346
|
declare function getSelectedElements(): Element[];
|
|
@@ -469,4 +478,4 @@ declare const updateElementInteractions: ({ elementId, interactions, }: {
|
|
|
469
478
|
}) => void;
|
|
470
479
|
declare const playElementInteractions: (elementId: string, interactionId: string) => void;
|
|
471
480
|
|
|
472
|
-
export { type AnimationPresetPropValue, type BooleanPropValue, type ConfigPropValue, type Control, type ControlItem, type ControlLayout, type ControlsSection, type CreateElementParams, type CreateElementStyleArgs, type DropElementParams, type DuplicateElementParams, type DuplicateElementsParams, type DuplicatedElement, type DuplicatedElementsResult, ELEMENT_STYLE_CHANGE_EVENT, type Element, type ElementChildren, type ElementControl, type ElementID, type ElementInteractions, type ElementModel, type ElementType, type ExcludedBreakpointsPropValue, type ExtendedWindow, type InteractionBreakpointsPropValue, type InteractionItemPropValue, type LinkInLinkRestriction, type MoveElementParams, type MoveElementsParams, type MovedElement, type MovedElementsResult, type NumberPropValue, type StringPropValue, type TimingConfigPropValue, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementData, type V1ElementEditorSettingsProps, type V1ElementModelProps, type V1ElementSettingsProps, createElement, createElementStyle, createElements, deleteElement, deleteElementStyle, dropElement, duplicateElement, duplicateElements, generateElementId, getAllDescendants, getAnchoredAncestorId, getAnchoredDescendantId, getContainer, getCurrentDocumentContainer, getCurrentDocumentId, getElementEditorSettings, getElementInteractions, getElementLabel, getElementSetting, getElementSettings, getElementStyles, getElementType, getElements, getLinkInLinkRestriction, getSelectedElements, getWidgetsCache, isElementAnchored, moveElement, moveElements, playElementInteractions, removeElements, replaceElement, selectElement, shouldCreateNewLocalStyle, styleRerenderEvents, updateElementEditorSettings, updateElementInteractions, updateElementSettings, updateElementStyle, useElementChildren, useElementEditorSettings, useElementInteractions, useElementSetting, useElementSettings, useParentElement, useSelectedElement };
|
|
481
|
+
export { type AnimationPresetPropValue, type BooleanPropValue, type ConfigPropValue, type Control, type ControlItem, type ControlLayout, type ControlsSection, type CreateElementParams, type CreateElementStyleArgs, type DropElementParams, type DuplicateElementParams, type DuplicateElementsParams, type DuplicatedElement, type DuplicatedElementsResult, ELEMENT_STYLE_CHANGE_EVENT, type Element, type ElementChildren, type ElementControl, type ElementID, type ElementInteractions, type ElementModel, type ElementType, type ExcludedBreakpointsPropValue, type ExtendedWindow, type InteractionBreakpointsPropValue, type InteractionItemPropValue, type LinkInLinkRestriction, type ModelResult, type MoveElementParams, type MoveElementsParams, type MovedElement, type MovedElementsResult, type NumberPropValue, type StringPropValue, type TimingConfigPropValue, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementData, type V1ElementEditorSettingsProps, type V1ElementModelProps, type V1ElementSettingsProps, createElement, createElementStyle, createElements, deleteElement, deleteElementStyle, dropElement, duplicateElement, duplicateElements, findChildRecursive, generateElementId, getAllDescendants, getAnchoredAncestorId, getAnchoredDescendantId, getContainer, getCurrentDocumentContainer, getCurrentDocumentId, getElementChildren as getElementChildrenWithFallback, getElementEditorSettings, getElementInteractions, getElementLabel, getElementSetting, getElementSettings, getElementStyles, getElementType, getElements, getLinkInLinkRestriction, getModel, getSelectedElements, getWidgetsCache, isElementAnchored, moveElement, moveElements, playElementInteractions, removeElements, replaceElement, selectElement, shouldCreateNewLocalStyle, styleRerenderEvents, updateElementEditorSettings, updateElementInteractions, updateElementSettings, updateElementStyle, useElementChildren, useElementEditorSettings, useElementInteractions, useElementSetting, useElementSettings, useParentElement, useSelectedElement };
|
package/dist/index.js
CHANGED
|
@@ -29,6 +29,7 @@ __export(index_exports, {
|
|
|
29
29
|
dropElement: () => dropElement,
|
|
30
30
|
duplicateElement: () => duplicateElement,
|
|
31
31
|
duplicateElements: () => duplicateElements,
|
|
32
|
+
findChildRecursive: () => findChildRecursive,
|
|
32
33
|
generateElementId: () => generateElementId,
|
|
33
34
|
getAllDescendants: () => getAllDescendants,
|
|
34
35
|
getAnchoredAncestorId: () => getAnchoredAncestorId,
|
|
@@ -36,6 +37,7 @@ __export(index_exports, {
|
|
|
36
37
|
getContainer: () => getContainer,
|
|
37
38
|
getCurrentDocumentContainer: () => getCurrentDocumentContainer,
|
|
38
39
|
getCurrentDocumentId: () => getCurrentDocumentId,
|
|
40
|
+
getElementChildrenWithFallback: () => getElementChildren,
|
|
39
41
|
getElementEditorSettings: () => getElementEditorSettings,
|
|
40
42
|
getElementInteractions: () => getElementInteractions,
|
|
41
43
|
getElementLabel: () => getElementLabel,
|
|
@@ -45,6 +47,7 @@ __export(index_exports, {
|
|
|
45
47
|
getElementType: () => getElementType,
|
|
46
48
|
getElements: () => getElements,
|
|
47
49
|
getLinkInLinkRestriction: () => getLinkInLinkRestriction,
|
|
50
|
+
getModel: () => getModel,
|
|
48
51
|
getSelectedElements: () => getSelectedElements,
|
|
49
52
|
getWidgetsCache: () => getWidgetsCache,
|
|
50
53
|
isElementAnchored: () => isElementAnchored,
|
|
@@ -88,7 +91,47 @@ var selectElement = (elementId) => {
|
|
|
88
91
|
}
|
|
89
92
|
};
|
|
90
93
|
|
|
94
|
+
// src/sync/get-model.ts
|
|
95
|
+
function getModel(id, parentModel) {
|
|
96
|
+
const extendedWindow = window;
|
|
97
|
+
const container = extendedWindow.elementor?.getContainer?.(id) ?? null;
|
|
98
|
+
if (container) {
|
|
99
|
+
return { model: container.model };
|
|
100
|
+
}
|
|
101
|
+
if (parentModel) {
|
|
102
|
+
const childModels = parentModel.get("elements") ?? [];
|
|
103
|
+
const model = childModels.find((m) => m.get("id") === id);
|
|
104
|
+
if (model) {
|
|
105
|
+
return { model };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
function findChildRecursive(model, predicate) {
|
|
111
|
+
const childModels = model.get("elements") ?? [];
|
|
112
|
+
for (const childModel of childModels) {
|
|
113
|
+
if (predicate(childModel)) {
|
|
114
|
+
return { model: childModel };
|
|
115
|
+
}
|
|
116
|
+
const found = findChildRecursive(childModel, predicate);
|
|
117
|
+
if (found) {
|
|
118
|
+
return found;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
function getElementChildren(model, predicate) {
|
|
124
|
+
const childModels = model.get("elements") ?? [];
|
|
125
|
+
return childModels.filter((childModel) => !predicate || predicate(childModel)).map((childModel) => ({ model: childModel }));
|
|
126
|
+
}
|
|
127
|
+
|
|
91
128
|
// src/hooks/use-element-children.ts
|
|
129
|
+
function toElementModel({ model }) {
|
|
130
|
+
return {
|
|
131
|
+
id: model.get("id"),
|
|
132
|
+
editorSettings: model.get("editor_settings") ?? {}
|
|
133
|
+
};
|
|
134
|
+
}
|
|
92
135
|
function useElementChildren(elementId, childrenTypes) {
|
|
93
136
|
return (0, import_editor_v1_adapters2.__privateUseListenTo)(
|
|
94
137
|
[
|
|
@@ -100,12 +143,18 @@ function useElementChildren(elementId, childrenTypes) {
|
|
|
100
143
|
],
|
|
101
144
|
() => {
|
|
102
145
|
const container = getContainer(elementId);
|
|
146
|
+
const model = container?.model;
|
|
147
|
+
if (!model) {
|
|
148
|
+
return {};
|
|
149
|
+
}
|
|
103
150
|
const elementChildren = Object.entries(childrenTypes).reduce((acc, [parentType, childType]) => {
|
|
104
|
-
const parent =
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
151
|
+
const parent = findChildRecursive(model, (m) => m.get("elType") === parentType);
|
|
152
|
+
if (!parent) {
|
|
153
|
+
acc[childType] = [];
|
|
154
|
+
return acc;
|
|
155
|
+
}
|
|
156
|
+
const children = getElementChildren(parent.model, (m) => m.get("elType") === childType);
|
|
157
|
+
acc[childType] = children.map(toElementModel);
|
|
109
158
|
return acc;
|
|
110
159
|
}, {});
|
|
111
160
|
return elementChildren;
|
|
@@ -1113,6 +1162,7 @@ function setDocumentModifiedStatus2(status) {
|
|
|
1113
1162
|
dropElement,
|
|
1114
1163
|
duplicateElement,
|
|
1115
1164
|
duplicateElements,
|
|
1165
|
+
findChildRecursive,
|
|
1116
1166
|
generateElementId,
|
|
1117
1167
|
getAllDescendants,
|
|
1118
1168
|
getAnchoredAncestorId,
|
|
@@ -1120,6 +1170,7 @@ function setDocumentModifiedStatus2(status) {
|
|
|
1120
1170
|
getContainer,
|
|
1121
1171
|
getCurrentDocumentContainer,
|
|
1122
1172
|
getCurrentDocumentId,
|
|
1173
|
+
getElementChildrenWithFallback,
|
|
1123
1174
|
getElementEditorSettings,
|
|
1124
1175
|
getElementInteractions,
|
|
1125
1176
|
getElementLabel,
|
|
@@ -1129,6 +1180,7 @@ function setDocumentModifiedStatus2(status) {
|
|
|
1129
1180
|
getElementType,
|
|
1130
1181
|
getElements,
|
|
1131
1182
|
getLinkInLinkRestriction,
|
|
1183
|
+
getModel,
|
|
1132
1184
|
getSelectedElements,
|
|
1133
1185
|
getWidgetsCache,
|
|
1134
1186
|
isElementAnchored,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/hooks/use-element-children.ts","../src/sync/get-container.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/get-element-editor-settings.ts","../src/hooks/use-element-setting.ts","../src/sync/get-element-setting.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-selected-element.ts","../src/sync/get-widgets-cache.ts","../src/sync/get-element-type.ts","../src/sync/get-selected-elements.ts","../src/sync/create-element.ts","../src/sync/create-elements.ts","../src/sync/delete-element.ts","../src/sync/drop-element.ts","../src/sync/duplicate-element.ts","../src/sync/duplicate-elements.ts","../src/sync/generate-element-id.ts","../src/sync/get-current-document-container.ts","../src/sync/get-current-document-id.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-element-styles.ts","../src/sync/get-all-descendants.ts","../src/sync/get-elements.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/remove-elements.ts","../src/sync/replace-element.ts","../src/sync/update-element-editor-settings.ts","../src/sync/update-element-settings.ts","../src/link-restriction.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/delete-element-style.ts","../src/styles/update-element-style.ts","../src/hooks/use-element-interactions.ts","../src/sync/get-element-interactions.ts","../src/sync/update-element-interactions.ts"],"sourcesContent":["// types\nexport * from './types';\nexport type * from './sync/types';\n\n// hooks\nexport { useElementChildren, type ElementChildren, type ElementModel } from './hooks/use-element-children';\nexport { useElementEditorSettings } from './hooks/use-element-editor-settings';\nexport { useElementSetting, useElementSettings } from './hooks/use-element-setting';\nexport { useParentElement } from './hooks/use-parent-element';\nexport { useSelectedElement } from './hooks/use-selected-element';\n\n// utils\nexport { createElement, type CreateElementParams } from './sync/create-element';\nexport { createElements } from './sync/create-elements';\nexport { deleteElement } from './sync/delete-element';\nexport { dropElement, type DropElementParams } from './sync/drop-element';\nexport { duplicateElement, type DuplicateElementParams } from './sync/duplicate-element';\nexport {\n\tduplicateElements,\n\ttype DuplicatedElement,\n\ttype DuplicatedElementsResult,\n\ttype DuplicateElementsParams,\n} from './sync/duplicate-elements';\nexport { generateElementId } from './sync/generate-element-id';\nexport { getContainer, selectElement } from './sync/get-container';\nexport { getCurrentDocumentContainer } from './sync/get-current-document-container';\nexport { getCurrentDocumentId } from './sync/get-current-document-id';\nexport { getElementEditorSettings } from './sync/get-element-editor-settings';\nexport { getElementLabel } from './sync/get-element-label';\nexport { getElementSetting, getElementSettings } from './sync/get-element-setting';\nexport { getElementStyles } from './sync/get-element-styles';\nexport { getElementType } from './sync/get-element-type';\nexport { getAllDescendants } from './sync/get-all-descendants';\nexport { getElements } from './sync/get-elements';\nexport { getSelectedElements } from './sync/get-selected-elements';\nexport { getWidgetsCache } from './sync/get-widgets-cache';\nexport { moveElement, type MoveElementParams } from './sync/move-element';\nexport {\n\tmoveElements,\n\ttype MovedElement,\n\ttype MovedElementsResult,\n\ttype MoveElementsParams,\n} from './sync/move-elements';\nexport { removeElements } from './sync/remove-elements';\nexport { replaceElement } from './sync/replace-element';\nexport { updateElementEditorSettings } from './sync/update-element-editor-settings';\nexport { updateElementSettings, type UpdateElementSettingsArgs } from './sync/update-element-settings';\n\nexport {\n\tgetAnchoredAncestorId,\n\tgetAnchoredDescendantId,\n\tgetLinkInLinkRestriction,\n\tisElementAnchored,\n\ttype LinkInLinkRestriction,\n} from './link-restriction';\nexport { ELEMENT_STYLE_CHANGE_EVENT, styleRerenderEvents } from './styles/consts';\nexport {\n\tcreateElementStyle,\n\tshouldCreateNewLocalStyle,\n\ttype CreateElementStyleArgs,\n} from './styles/create-element-style';\nexport { deleteElementStyle } from './styles/delete-element-style';\nexport { updateElementStyle, type UpdateElementStyleArgs } from './styles/update-element-style';\n\nexport { useElementInteractions } from './hooks/use-element-interactions';\nexport { getElementInteractions } from './sync/get-element-interactions';\nexport { playElementInteractions, updateElementInteractions } from './sync/update-element-interactions';\n","import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: Record< string, string >\n): T {\n\treturn useListenTo(\n\t\t[\n\t\t\tv1ReadyEvent(),\n\t\t\tcommandEndEvent( 'document/elements/create' ),\n\t\t\tcommandEndEvent( 'document/elements/delete' ),\n\t\t\tcommandEndEvent( 'document/elements/update' ),\n\t\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst container = getContainer( elementId );\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = container?.children?.findRecursive?.(\n\t\t\t\t\t( { model } ) => model.get( 'elType' ) === parentType\n\t\t\t\t);\n\n\t\t\t\tconst children = parent?.children ?? [];\n\n\t\t\t\tacc[ childType ] = children\n\t\t\t\t\t.filter( ( { model } ) => model.get( 'elType' ) === childType )\n\t\t\t\t\t.map( ( { id } ) => ( { id } ) );\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow, type V1Element } from './types';\n\nexport function getContainer( id: string ): V1Element | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n\nexport const selectElement = ( elementId: string ) => {\n\ttry {\n\t\tconst container = getContainer( elementId );\n\n\t\trunCommand( 'document/elements/select', { container } );\n\t} catch {}\n};\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementEditorSettings } from '../sync/get-element-editor-settings';\nimport { type ElementID } from '../types';\n\nexport const useElementEditorSettings = ( elementId: ElementID ) => {\n\treturn useListenTo(\n\t\twindowEvent( 'elementor/element/update_editor_settings' ),\n\t\t() => getElementEditorSettings( elementId ),\n\t\t[ elementId ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport function getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { type ElementID } from '../types';\n\nexport const useElementSetting = < TValue >( elementId: ElementID, settingKey: string ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() => getElementSetting< TValue >( elementId, settingKey ),\n\t\t[ elementId, settingKey ]\n\t);\n};\n\nexport const useElementSettings = < TValue >( elementId: ElementID, settingKeys: string[] ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() =>\n\t\t\tsettingKeys.reduce< Record< string, TValue > >( ( settings, key ) => {\n\t\t\t\tconst value = getElementSetting< TValue >( elementId, key );\n\n\t\t\t\tif ( value !== null ) {\n\t\t\t\t\tsettings[ key ] = value;\n\t\t\t\t}\n\n\t\t\t\treturn settings;\n\t\t\t}, {} ),\n\t\t[ elementId, settingKeys.join( ',' ) ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementSetting = < TValue >( elementId: ElementID, settingKey: string ): TValue | null => {\n\tconst container = getContainer( elementId );\n\n\treturn ( container?.settings?.get( settingKey ) as TValue ) ?? null;\n};\n\nexport const getElementSettings = < TValue >(\n\telementId: ElementID,\n\tsettingKey: string[]\n): Record< string, TValue | null > => {\n\treturn Object.fromEntries( settingKey.map( ( key ) => [ key, getElementSetting( elementId, key ) ] ) );\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useParentElement( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/create' ) ],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow = window as unknown as ExtendedWindow;\n\t\t\tconst element = extendedWindow?.elementor?.getContainer?.( elementId );\n\t\t\tif ( ! element ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn element.parent;\n\t\t},\n\t\t[ elementId ]\n\t);\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementType } from '../sync/get-element-type';\nimport { getSelectedElements } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\tconst elements = useListenTo(\n\t\t[\n\t\t\tcommandEndEvent( 'document/elements/select' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect' ),\n\t\t\tcommandEndEvent( 'document/elements/select-all' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect-all' ),\n\t\t],\n\t\tgetSelectedElements\n\t);\n\n\tconst [ element ] = elements;\n\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type ExtendedWindow, type V1ElementConfig } from '../sync/types.js';\ntype WidgetsCache< T > = Record< string, T >;\n\nexport function getWidgetsCache< T extends V1ElementConfig >(): WidgetsCache< T > | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn ( extendedWindow?.elementor?.widgetsCache as WidgetsCache< T > ) || null;\n}\n","import { type ElementType } from '../types';\nimport { getWidgetsCache } from './get-widgets-cache';\n\nexport function getElementType( type: string ): ElementType | null {\n\tif ( ! type ) {\n\t\treturn null;\n\t}\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\tif ( ! elementType?.atomic_controls ) {\n\t\treturn null;\n\t}\n\n\tif ( ! elementType?.atomic_props_schema ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tkey: type,\n\t\tcontrols: elementType.atomic_controls,\n\t\tpropsSchema: elementType.atomic_props_schema,\n\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\ttitle: elementType.title,\n\t\tstyleStates: elementType.atomic_style_states ?? [],\n\t};\n}\n","import { type Element } from '../types';\nimport { type ExtendedWindow } from './types';\n\nexport function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type CreateElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function createElement( { containerId, model, options }: CreateElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'document/elements/create', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions: { edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement, type CreateElementParams } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype CreateNestedElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tcreateParams: CreateElementParams;\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateNestedElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateNestedElementsParams ): CreatedElementsResult => {\n\tconst undoableCreate = undoable(\n\t\t{\n\t\t\tdo: ( { elements: elementsParam }: { elements: CreateElementParams[] } ): CreatedElementsResult => {\n\t\t\t\tconst createdElements: CreatedElement[] = [];\n\n\t\t\t\telementsParam.forEach( ( createParams ) => {\n\t\t\t\t\tconst { options, ...elementParams } = createParams;\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\t...elementParams,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tcreatedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\tcreateParams: {\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements };\n\t\t\t},\n\t\t\tundo: ( _: { elements: CreateElementParams[] }, { createdElements }: CreatedElementsResult ) => {\n\t\t\t\t// Delete elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...createdElements ].reverse().forEach( ( { elementId } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elements: CreateElementParams[] },\n\t\t\t\t{ createdElements }: CreatedElementsResult\n\t\t\t): CreatedElementsResult => {\n\t\t\t\tconst newElements: CreatedElement[] = [];\n\n\t\t\t\tcreatedElements.forEach( ( { createParams, model } ) => {\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainerId: createParams.containerId,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...createParams.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tcreateParams,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements: newElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableCreate( { elements } );\n};\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\nexport function deleteElement( {\n\telementId,\n\toptions = {},\n}: {\n\telementId: string;\n\toptions?: Options;\n} ): Promise< void > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\treturn runCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tscrollIntoView: boolean;\n};\n\nexport type DropElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function dropElement( { containerId, model, options }: DropElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'preview/drop', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telementId: string;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { elementId, options = {} }: DuplicateElementParams ): V1Element {\n\tconst elementToDuplicate = getContainer( elementId );\n\n\tif ( ! elementToDuplicate ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\t// Get the position after the original element (only when cloning)\n\tconst currentIndex = elementToDuplicate.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: elementToDuplicate,\n\t\toptions: { at: insertPosition, edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { duplicateElement } from './duplicate-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype DuplicateElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonDuplicateElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype DuplicatedElement = {\n\tid: string;\n\tmodel: V1ElementModelProps;\n\toriginalElementId: string;\n\tmodelToRestore?: V1ElementModelProps;\n\tparentContainerId?: string;\n\tat?: number;\n};\n\ntype DuplicatedElementsResult = {\n\tduplicatedElements: DuplicatedElement[];\n};\n\nexport type { DuplicateElementsParams, DuplicatedElement, DuplicatedElementsResult };\n\nexport const duplicateElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item duplicated', 'elementor' ),\n\tonDuplicateElements,\n\tonRestoreElements,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\n\t\t\t\t// Call onCreate before duplicating elements to avoid conflicts between commands\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = elementIdsToDuplicate.reduce( ( acc, elementId ) => {\n\t\t\t\t\tconst originalContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( originalContainer?.parent ) {\n\t\t\t\t\t\tconst duplicatedElement = duplicateElement( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: duplicatedElement.id,\n\t\t\t\t\t\t\tmodel: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: elementId,\n\t\t\t\t\t\t\tmodelToRestore: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\tparentContainerId: duplicatedElement.parent?.id,\n\t\t\t\t\t\t\tat: duplicatedElement.view?._index,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\t\t\t\t// Delete duplicated elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...duplicatedElements ].reverse().forEach( ( { id } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId: id,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ duplicatedElements: previousElements }: DuplicatedElementsResult\n\t\t\t): DuplicatedElementsResult => {\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = previousElements.reduce( ( acc, previousElement ) => {\n\t\t\t\t\tif ( previousElement.modelToRestore && previousElement.parentContainerId ) {\n\t\t\t\t\t\tconst createdElement = createElement( {\n\t\t\t\t\t\t\tcontainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tmodel: previousElement.modelToRestore,\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\t\tclone: false,\n\t\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: createdElement.id,\n\t\t\t\t\t\t\tmodel: createdElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: previousElement.originalElementId,\n\t\t\t\t\t\t\tmodelToRestore: previousElement.modelToRestore,\n\t\t\t\t\t\t\tparentContainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableDuplicate( { elementIds } );\n};\n","import { type ExtendedWindow } from './types';\n\nexport const generateElementId = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn (\n\t\textendedWindow.elementorCommon?.helpers?.getUniqueId?.() ??\n\t\t`el-${ Date.now() }-${ Math.random().toString( 36 ).substring( 2, 9 ) }`\n\t);\n};\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentContainer() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrent?.()?.container ?? null;\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentId() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;\n}\n","import { createError } from '@elementor/utils';\n\nexport const ElementNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_not_found',\n\tmessage: 'Element not found.',\n} );\n\nexport const StyleNotFoundError = createError< { styleId: string } >( {\n\tcode: 'style_not_found',\n\tmessage: 'Style not found.',\n} );\n\nexport const ElementTypeNotExistsError = createError< { elementId: string } >( {\n\tcode: 'element_type_not_exists',\n\tmessage: 'Element type does not exist.',\n} );\n\nexport const ElementLabelNotExistsError = createError< { elementType: string } >( {\n\tcode: 'element_label_not_exists',\n\tmessage: 'Element label does not exist.',\n} );\n\nexport const ElementParentNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_parent_not_found',\n\tmessage: 'Element parent not found.',\n} );\n\nexport const ElementIndexNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_index_not_found',\n\tmessage: 'Element index not found.',\n} );\n","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\nimport { getSelectedElements } from './get-selected-elements';\n\nexport function getElementLabel( elementId?: ElementID ) {\n\tif ( ! elementId ) {\n\t\telementId = getSelectedElements()?.[ 0 ]?.id;\n\t}\n\n\tconst container = getContainer( elementId );\n\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tif ( ! type ) {\n\t\tthrow new ElementTypeNotExistsError( { context: { elementId } } );\n\t}\n\n\tconst label = getWidgetsCache()?.[ type ]?.title;\n\n\tif ( ! label ) {\n\t\tthrow new ElementLabelNotExistsError( { context: { elementType: type } } );\n\t}\n\n\treturn label;\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementStyles = ( elementID: ElementID ): Record< string, StyleDefinition > | null => {\n\tconst container = getContainer( elementID );\n\n\treturn container?.model.get( 'styles' ) || null;\n};\n","import { type V1Element } from './types';\n\nexport function getAllDescendants( container: V1Element ): V1Element[] {\n\tconst children = ( container.children ?? [] ).flatMap( ( child ) => getAllDescendants( child as V1Element ) );\n\n\treturn [ container, ...children ];\n}\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { getCurrentDocumentContainer } from './get-current-document-container';\nimport { type V1Element } from './types';\n\nexport function getElements( root?: ElementID ): V1Element[] {\n\tconst container = root ? getContainer( root ) : getCurrentDocumentContainer();\n\n\tif ( ! container ) {\n\t\treturn [];\n\t}\n\n\tconst children = [ ...( container.model.get( 'elements' ) ?? [] ) ].flatMap( ( childModel ) =>\n\t\tgetElements( childModel.get( 'id' ) )\n\t);\n\n\treturn [ container, ...children ];\n}\n","import { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tedit?: boolean;\n};\n\nexport type MoveElementParams = {\n\telementId: string;\n\ttargetContainerId: string;\n\toptions?: Options;\n};\n\nexport function moveElement( { elementId, targetContainerId, options = {} }: MoveElementParams ) {\n\tconst container = getContainer( elementId );\n\tconst target = getContainer( targetContainerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tif ( ! target ) {\n\t\tthrow new Error( `Target container with ID \"${ targetContainerId }\" not found` );\n\t}\n\n\tconst modelToRecreate = container.model.toJSON();\n\n\tdeleteElement( {\n\t\telementId,\n\t\t// prevent inner history from being created\n\t\toptions: { ...options, useHistory: false },\n\t} );\n\n\tconst newContainer = createElement( {\n\t\tcontainerId: targetContainerId,\n\t\tmodel: modelToRecreate,\n\t\t// prevent inner history from being created\n\t\toptions: { edit: false, ...options, useHistory: false },\n\t} );\n\n\treturn newContainer;\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getContainer } from './get-container';\nimport { moveElement, type MoveElementParams } from './move-element';\nimport { type V1Element } from './types';\n\ntype MoveElementsParams = {\n\tmoves: MoveElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonMoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype OriginalPosition = {\n\telementId: string;\n\toriginalContainerId: string;\n\toriginalIndex: number;\n};\n\ntype MovedElement = {\n\telementId: string;\n\toriginalPosition: OriginalPosition;\n\tmove: MoveElementParams;\n\telement: V1Element;\n};\n\ntype MovedElementsResult = {\n\tmovedElements: MovedElement[];\n};\n\nexport type { MoveElementsParams, MovedElement, MovedElementsResult };\n\nexport const moveElements = ( {\n\tmoves: movesToMake,\n\ttitle,\n\tsubtitle = __( 'Elements moved', 'elementor' ),\n\tonMoveElements,\n\tonRestoreElements,\n}: MoveElementsParams ): MovedElementsResult => {\n\tconst undoableMove = undoable(\n\t\t{\n\t\t\tdo: ( { moves }: { moves: MoveElementParams[] } ): MovedElementsResult => {\n\t\t\t\tconst movedElements: MovedElement[] = [];\n\t\t\t\t// Call onMoveElements before moving element to avoid conflicts between commands\n\t\t\t\tonMoveElements?.();\n\t\t\t\tmoves.forEach( ( move ) => {\n\t\t\t\t\tconst { elementId } = move;\n\t\t\t\t\tconst sourceContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( ! sourceContainer ) {\n\t\t\t\t\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalContainerId = sourceContainer.parent?.id || '';\n\t\t\t\t\tconst originalIndex = sourceContainer.parent?.children?.indexOf( sourceContainer ) ?? -1;\n\n\t\t\t\t\tconst originalPosition: OriginalPosition = {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalContainerId,\n\t\t\t\t\t\toriginalIndex,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tmovedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements };\n\t\t\t},\n\t\t\tundo: ( _: { moves: MoveElementParams[] }, { movedElements }: MovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t[ ...movedElements ].reverse().forEach( ( { originalPosition } ) => {\n\t\t\t\t\tconst { elementId, originalContainerId, originalIndex } = originalPosition;\n\n\t\t\t\t\tmoveElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\ttargetContainerId: originalContainerId,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\tat: originalIndex >= 0 ? originalIndex : undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { moves: MoveElementParams[] },\n\t\t\t\t{ movedElements }: MovedElementsResult\n\t\t\t): MovedElementsResult => {\n\t\t\t\tconst newMovedElements: MovedElement[] = [];\n\t\t\t\tonMoveElements?.();\n\n\t\t\t\tmovedElements.forEach( ( { move, originalPosition } ) => {\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewMovedElements.push( {\n\t\t\t\t\t\telementId: move.elementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements: newMovedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableMove( { moves: movesToMake } );\n};\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps } from './types';\n\ntype RemoveNestedElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonRemoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype RemovedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tparent: V1Element | null;\n\tat: number;\n};\n\ntype RemovedElementsResult = {\n\telementIds: string[];\n\tremovedElements: RemovedElement[];\n};\n\nexport type { RemoveNestedElementsParams, RemovedElement, RemovedElementsResult };\n\nexport const removeElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item removed', 'elementor' ),\n\tonRemoveElements,\n\tonRestoreElements,\n}: RemoveNestedElementsParams ): RemovedElementsResult => {\n\tconst undoableRemove = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsParam }: { elementIds: string[] } ): RemovedElementsResult => {\n\t\t\t\tconst removedElements: RemovedElement[] = [];\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tconst model = container.model.toJSON();\n\t\t\t\t\t\tconst parent = container.parent;\n\n\t\t\t\t\t\tconst at = container.view?._index ?? 0;\n\n\t\t\t\t\t\tremovedElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tparent: parent ?? null,\n\t\t\t\t\t\t\tat,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\t// Call onRemoveElements before deleting elements to avoid conflicts between commands\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: elementIdsParam, removedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { removedElements }: RemovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t// Restore elements in reverse order to maintain proper hierarchy\n\t\t\t\t[ ...removedElements ].reverse().forEach( ( { model, parent, at } ) => {\n\t\t\t\t\tif ( parent && model ) {\n\t\t\t\t\t\tcreateElement( {\n\t\t\t\t\t\t\tcontainerId: parent.id,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\toptions: { useHistory: false, at },\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ elementIds: originalElementIds, removedElements }: RemovedElementsResult\n\t\t\t): RemovedElementsResult => {\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\toriginalElementIds.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: originalElementIds, removedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableRemove( { elementIds } );\n};\n","import { ElementIndexNotFoundError, ElementNotFoundError, ElementParentNotFoundError } from '../errors';\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementData, type V1ElementModelProps } from './types';\n\ntype ElementLocation = {\n\tcontainerId: string;\n\tindex: number;\n};\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1ElementData;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = async ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst { containerId, index } = getNewElementContainer( currentElement, newElement );\n\n\tconst newElementInstance = createElement( {\n\t\tcontainerId,\n\t\tmodel: newElement,\n\t\toptions: { at: index, useHistory: withHistory },\n\t} );\n\n\tawait deleteElement( { elementId: currentElement.id, options: { useHistory: withHistory } } );\n\n\treturn newElementInstance;\n};\n\nfunction getNewElementContainer(\n\tcurrentElement: V1ElementData,\n\tnewElement: Omit< V1ElementModelProps, 'id' >\n): ElementLocation {\n\tconst currentElementContainer = getContainer( currentElement.id );\n\n\tif ( ! currentElementContainer ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst { parent } = currentElementContainer;\n\n\tif ( ! parent ) {\n\t\tthrow new ElementParentNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst elementIndex = currentElementContainer.view?._index ?? 0;\n\n\tif ( elementIndex === -1 ) {\n\t\tthrow new ElementIndexNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tlet container = { containerId: parent.id, index: elementIndex };\n\n\t// If the element is at document top level and is a widget, wrap it with an empty container\n\tif ( parent.id === 'document' && newElement.elType === 'widget' ) {\n\t\tcontainer = createWrapperForWidget( parent.id, elementIndex );\n\t}\n\n\treturn container;\n}\n\nconst DEFAULT_CONTAINER_TYPE = 'e-flexbox';\n\nfunction createWrapperForWidget( parentId: string, elementIndex: number ): ElementLocation {\n\tconst container = createElement( {\n\t\tcontainerId: parentId,\n\t\tmodel: { elType: DEFAULT_CONTAINER_TYPE },\n\t\toptions: { at: elementIndex, useHistory: false },\n\t} );\n\n\treturn { containerId: container.id, index: 0 };\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementEditorSettings = ( {\n\telementId,\n\tsettings,\n}: {\n\telementId: string;\n\tsettings: V1ElementModelProps[ 'editor_settings' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\tconst editorSettings = element.model.get( 'editor_settings' ) ?? {};\n\n\telement.model.set( 'editor_settings', { ...editorSettings, ...settings } );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n","import { type Props } from '@elementor/editor-props';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport type UpdateElementSettingsArgs = {\n\tid: ElementID;\n\tprops: Props;\n\twithHistory?: boolean;\n};\n\nexport const updateElementSettings = ( { id, props, withHistory = true }: UpdateElementSettingsArgs ) => {\n\tconst container = getContainer( id );\n\n\tconst args = {\n\t\tcontainer,\n\t\tsettings: { ...props },\n\t};\n\n\tif ( withHistory ) {\n\t\trunCommandSync( 'document/elements/settings', args );\n\t} else {\n\t\trunCommandSync( 'document/elements/set-settings', args, { internal: true } );\n\t}\n};\n","import { type LinkPropValue } from '@elementor/editor-props';\n\nimport { getContainer } from './sync/get-container';\nimport { getElementSetting } from './sync/get-element-setting';\n\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\n\ntype LinkValue = LinkPropValue[ 'value' ];\n\nexport type LinkInLinkRestriction =\n\t| {\n\t\t\tshouldRestrict: true;\n\t\t\treason: 'ancestor' | 'descendant';\n\t\t\telementId: string | null;\n\t }\n\t| {\n\t\t\tshouldRestrict: false;\n\t\t\treason?: never;\n\t\t\telementId?: never;\n\t };\n\nexport function getLinkInLinkRestriction( elementId: string, resolvedValue?: LinkValue ): LinkInLinkRestriction {\n\tconst anchoredDescendantId = getAnchoredDescendantId( elementId );\n\n\tif ( anchoredDescendantId ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId: anchoredDescendantId,\n\t\t};\n\t}\n\n\tconst hasInlineLink = checkForInlineLink( elementId, resolvedValue );\n\n\tif ( hasInlineLink ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId,\n\t\t};\n\t}\n\n\tconst ancestor = getAnchoredAncestorId( elementId );\n\n\tif ( ancestor ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'ancestor',\n\t\t\telementId: ancestor,\n\t\t};\n\t}\n\n\treturn {\n\t\tshouldRestrict: false,\n\t};\n}\n\nexport function getAnchoredDescendantId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn null;\n\t}\n\n\tfor ( const childAnchorElement of Array.from( element.querySelectorAll( ANCHOR_SELECTOR ) ) ) {\n\t\t// Ensure the child is not in the current element's scope\n\t\tconst childElementId = findElementIdOf( childAnchorElement );\n\n\t\tif ( childElementId !== elementId ) {\n\t\t\treturn childElementId;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getAnchoredAncestorId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element || element.parentElement === null ) {\n\t\treturn null;\n\t}\n\n\tconst parentAnchor = element.parentElement.closest( ANCHOR_SELECTOR );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId ) as HTMLElement;\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of Array.from( element.children ) as HTMLElement[] ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( child.matches( ANCHOR_SELECTOR ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( doesElementContainAnchor( child ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findElementIdOf( element: Element ): string | null {\n\treturn element.closest< HTMLElement >( '[data-id]' )?.dataset.id || null;\n}\n\nfunction checkForInlineLink( elementId: string, resolvedValue?: LinkValue ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn false;\n\t}\n\n\tconst linkSetting = resolvedValue ?? getElementSetting< LinkPropValue >( elementId, 'link' )?.value;\n\n\tif ( linkSetting?.destination ) {\n\t\treturn false;\n\t}\n\n\treturn element.querySelector( ANCHOR_SELECTOR ) !== null;\n}\n\nfunction getElementDOM( id: string ) {\n\ttry {\n\t\treturn getContainer( id )?.view?.el || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n","import { commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport const ELEMENT_STYLE_CHANGE_EVENT = 'elementor/editor-v2/editor-elements/style';\n\nexport const styleRerenderEvents = [\n\tcommandEndEvent( 'document/elements/create' ),\n\tcommandEndEvent( 'document/elements/duplicate' ),\n\tcommandEndEvent( 'document/elements/import' ),\n\tcommandEndEvent( 'document/elements/paste' ),\n\twindowEvent( ELEMENT_STYLE_CHANGE_EVENT ),\n];\n","import { classesPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tgenerateId,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type CreateElementStyleArgs = {\n\tstyleId?: StyleDefinitionID;\n\telementId: ElementID;\n\tclassesProp: string;\n\tlabel: string;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n\tadditionalVariants?: StyleDefinitionVariant[];\n};\n\nexport function createElementStyle( {\n\tstyleId,\n\telementId,\n\tclassesProp,\n\tlabel,\n\tmeta,\n\tprops,\n\tcustom_css: customCss = null,\n\tadditionalVariants = [],\n}: CreateElementStyleArgs ): string {\n\tlet id = styleId;\n\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\tid ??= generateId( `e-${ elementId }-`, Object.keys( styles ) );\n\n\t\tconst variants = [ { meta, props, custom_css: customCss }, ...additionalVariants ];\n\n\t\tstyles[ id ] = {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} satisfies StyleDefinition;\n\n\t\taddStyleToClassesProp( elementId, classesProp, id );\n\n\t\treturn styles;\n\t} );\n\n\treturn id as string;\n}\n\nfunction addStyleToClassesProp( elementId: ElementID, classesProp: string, styleId: string ) {\n\tconst base = getElementSetting( elementId, classesProp );\n\n\tconst classesPropValue = classesPropTypeUtil.create(\n\t\t( prev ) => {\n\t\t\treturn [ ...( prev ?? [] ), styleId ];\n\t\t},\n\t\t{ base }\n\t);\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\t[ classesProp ]: classesPropValue,\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n\nexport function shouldCreateNewLocalStyle< T >(\n\tpayload: { styleId: StyleDefinition[ 'id' ] | null; provider: T | null } | null\n) {\n\treturn ! payload?.styleId && ! payload?.provider;\n}\n","import { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionsMap } from '@elementor/editor-styles';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { ElementNotFoundError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { type V1Element } from '../sync/types';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { ELEMENT_STYLE_CHANGE_EVENT } from './consts';\n\ntype Mutator = ( styles: StyleDefinitionsMap ) => StyleDefinitionsMap;\n\nexport function mutateElementStyles( elementId: ElementID, mutator: Mutator ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId } } );\n\t}\n\n\tconst oldIds = Object.keys( container.model.get( 'styles' ) ?? {} );\n\n\tconst styles = mutateStyles( container, mutator );\n\n\tconst newIds = Object.keys( styles );\n\n\tclearRemovedClasses( container, {\n\t\toldIds,\n\t\tnewIds,\n\t} );\n\n\tnotifyChanges();\n\n\treturn styles;\n}\n\nfunction mutateStyles( container: V1Element, mutator: Mutator ) {\n\tconst styles: StyleDefinitionsMap = structuredClone( container.model.get( 'styles' ) ) ?? {};\n\n\tconst entries = Object.entries( mutator( styles ) )\n\t\t.map( ( [ styleId, style ] ) => {\n\t\t\tstyle.variants = removeEmptyVariants( style );\n\n\t\t\treturn [ styleId, style ] as const;\n\t\t} )\n\t\t.filter( ( [ , style ] ) => {\n\t\t\treturn ! isStyleEmpty( style );\n\t\t} );\n\n\tconst mutatedStyles = Object.fromEntries( entries );\n\n\tcontainer.model.set( 'styles', mutatedStyles );\n\n\treturn mutatedStyles;\n}\n\nfunction removeEmptyVariants( style: StyleDefinition ) {\n\treturn style.variants.filter(\n\t\t( { props, custom_css: customCss } ) => Object.keys( props ).length > 0 || customCss?.raw\n\t);\n}\n\nfunction isStyleEmpty( style: StyleDefinition ) {\n\treturn style.variants.length === 0;\n}\n\nfunction clearRemovedClasses( container: V1Element, { oldIds, newIds }: { oldIds: string[]; newIds: string[] } ) {\n\tconst removedIds = oldIds.filter( ( id ) => ! newIds.includes( id ) );\n\tconst classesProps = structuredClone( getClassesProps( container ) );\n\n\tclassesProps.forEach( ( [ , prop ] ) => {\n\t\tprop.value = prop.value.filter( ( value ) => ! removedIds.includes( value ) );\n\t} );\n\n\tupdateElementSettings( {\n\t\tid: container.id,\n\t\tprops: Object.fromEntries( classesProps ),\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getClassesProps( container: V1Element ) {\n\treturn Object.entries( container.settings.toJSON() ).filter( ( prop ): prop is [ string, ClassesPropValue ] => {\n\t\tconst [ , value ] = prop;\n\n\t\treturn classesPropTypeUtil.isValid( value );\n\t} );\n}\n\nfunction notifyChanges() {\n\tdispatchChangeEvent();\n\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n}\n\nfunction dispatchChangeEvent() {\n\twindow.dispatchEvent( new CustomEvent( ELEMENT_STYLE_CHANGE_EVENT ) );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport function deleteElementStyle( elementId: ElementID, styleId: StyleDefinitionID ) {\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\t// The object is deep cloned so mutating it is fine.\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete styles[ styleId ];\n\n\t\treturn styles;\n\t} );\n}\n","import { mergeProps } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { StyleNotFoundError } from '../errors';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type UpdateElementStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n};\n\nexport function updateElementStyle( args: UpdateElementStyleArgs ) {\n\tmutateElementStyles( args.elementId, ( styles ) => {\n\t\tconst style = styles[ args.styleId ];\n\n\t\tif ( ! style ) {\n\t\t\tthrow new StyleNotFoundError( { context: { styleId: args.styleId } } );\n\t\t}\n\n\t\tconst variant = getVariantByMeta( style, args.meta );\n\t\tconst customCss = ( 'custom_css' in args ? args.custom_css : variant?.custom_css ) ?? null;\n\n\t\tif ( variant ) {\n\t\t\tvariant.props = mergeProps( variant.props, args.props );\n\t\t\tvariant.custom_css = customCss?.raw ? customCss : null;\n\t\t} else {\n\t\t\tstyle.variants.push( { meta: args.meta, props: args.props, custom_css: customCss } );\n\t\t}\n\n\t\treturn styles;\n\t} );\n}\n","import { useState } from 'react';\nimport { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementInteractions } from '../sync/get-element-interactions';\nimport { type ElementInteractions } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport const useElementInteractions = ( elementId: ElementID ) => {\n\tconst [ interactions, setInteractions ] = useState< ElementInteractions >( () => {\n\t\tconst initial = getElementInteractions( elementId );\n\n\t\treturn initial ?? { version: 1, items: [] };\n\t} );\n\n\tuseListenTo(\n\t\twindowEvent( 'elementor/element/update_interactions' ),\n\t\t() => {\n\t\t\tconst newInteractions = getElementInteractions( elementId );\n\t\t\tsetInteractions( newInteractions ?? { version: 1, items: [] } );\n\t\t},\n\t\t[ elementId ]\n\t);\n\n\treturn interactions;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { type ElementInteractions } from './types';\n\nexport function getElementInteractions( elementId: ElementID ): ElementInteractions | undefined {\n\tconst container = getContainer( elementId );\n\n\tconst interactions = container?.model?.get( 'interactions' );\n\n\tif ( typeof interactions === 'string' ) {\n\t\treturn JSON.parse( interactions ) as ElementInteractions;\n\t}\n\n\treturn interactions;\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementInteractions = ( {\n\telementId,\n\tinteractions,\n}: {\n\telementId: string;\n\tinteractions: V1ElementModelProps[ 'interactions' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\telement.model.set( 'interactions', interactions );\n\n\twindow.dispatchEvent( new CustomEvent( 'elementor/element/update_interactions' ) );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nexport const playElementInteractions = ( elementId: string, interactionId: string ) => {\n\twindow.top?.dispatchEvent(\n\t\tnew CustomEvent( 'atomic/play_interactions', { detail: { elementId, interactionId } } )\n\t);\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n"],"mappings":"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","names":["import_editor_v1_adapters","runCommand","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_v1_adapters","runCommand","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_props","import_editor_v1_adapters","runCommandSync","import_editor_props","import_editor_styles","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","setDocumentModifiedStatus","runCommandSync"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hooks/use-element-children.ts","../src/sync/get-container.ts","../src/sync/get-model.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/get-element-editor-settings.ts","../src/hooks/use-element-setting.ts","../src/sync/get-element-setting.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-selected-element.ts","../src/sync/get-widgets-cache.ts","../src/sync/get-element-type.ts","../src/sync/get-selected-elements.ts","../src/sync/create-element.ts","../src/sync/create-elements.ts","../src/sync/delete-element.ts","../src/sync/drop-element.ts","../src/sync/duplicate-element.ts","../src/sync/duplicate-elements.ts","../src/sync/generate-element-id.ts","../src/sync/get-current-document-container.ts","../src/sync/get-current-document-id.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-element-styles.ts","../src/sync/get-all-descendants.ts","../src/sync/get-elements.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/remove-elements.ts","../src/sync/replace-element.ts","../src/sync/update-element-editor-settings.ts","../src/sync/update-element-settings.ts","../src/link-restriction.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/delete-element-style.ts","../src/styles/update-element-style.ts","../src/hooks/use-element-interactions.ts","../src/sync/get-element-interactions.ts","../src/sync/update-element-interactions.ts"],"sourcesContent":["// types\nexport * from './types';\nexport type * from './sync/types';\n\n// hooks\nexport { useElementChildren, type ElementChildren, type ElementModel } from './hooks/use-element-children';\nexport { useElementEditorSettings } from './hooks/use-element-editor-settings';\nexport { useElementSetting, useElementSettings } from './hooks/use-element-setting';\nexport { useParentElement } from './hooks/use-parent-element';\nexport { useSelectedElement } from './hooks/use-selected-element';\n\n// utils\nexport { createElement, type CreateElementParams } from './sync/create-element';\nexport { createElements } from './sync/create-elements';\nexport { deleteElement } from './sync/delete-element';\nexport { dropElement, type DropElementParams } from './sync/drop-element';\nexport { duplicateElement, type DuplicateElementParams } from './sync/duplicate-element';\nexport {\n\tduplicateElements,\n\ttype DuplicatedElement,\n\ttype DuplicatedElementsResult,\n\ttype DuplicateElementsParams,\n} from './sync/duplicate-elements';\nexport { generateElementId } from './sync/generate-element-id';\nexport { getContainer, selectElement } from './sync/get-container';\nexport { getCurrentDocumentContainer } from './sync/get-current-document-container';\nexport { getCurrentDocumentId } from './sync/get-current-document-id';\nexport { getElementEditorSettings } from './sync/get-element-editor-settings';\nexport { getElementLabel } from './sync/get-element-label';\nexport { getElementSetting, getElementSettings } from './sync/get-element-setting';\nexport { getElementStyles } from './sync/get-element-styles';\nexport { getElementType } from './sync/get-element-type';\nexport { getAllDescendants } from './sync/get-all-descendants';\nexport {\n\tgetModel,\n\tfindChildRecursive,\n\tgetElementChildren as getElementChildrenWithFallback,\n\ttype ModelResult,\n} from './sync/get-model';\nexport { getElements } from './sync/get-elements';\nexport { getSelectedElements } from './sync/get-selected-elements';\nexport { getWidgetsCache } from './sync/get-widgets-cache';\nexport { moveElement, type MoveElementParams } from './sync/move-element';\nexport {\n\tmoveElements,\n\ttype MovedElement,\n\ttype MovedElementsResult,\n\ttype MoveElementsParams,\n} from './sync/move-elements';\nexport { removeElements } from './sync/remove-elements';\nexport { replaceElement } from './sync/replace-element';\nexport { updateElementEditorSettings } from './sync/update-element-editor-settings';\nexport { updateElementSettings, type UpdateElementSettingsArgs } from './sync/update-element-settings';\n\nexport {\n\tgetAnchoredAncestorId,\n\tgetAnchoredDescendantId,\n\tgetLinkInLinkRestriction,\n\tisElementAnchored,\n\ttype LinkInLinkRestriction,\n} from './link-restriction';\nexport { ELEMENT_STYLE_CHANGE_EVENT, styleRerenderEvents } from './styles/consts';\nexport {\n\tcreateElementStyle,\n\tshouldCreateNewLocalStyle,\n\ttype CreateElementStyleArgs,\n} from './styles/create-element-style';\nexport { deleteElementStyle } from './styles/delete-element-style';\nexport { updateElementStyle, type UpdateElementStyleArgs } from './styles/update-element-style';\n\nexport { useElementInteractions } from './hooks/use-element-interactions';\nexport { getElementInteractions } from './sync/get-element-interactions';\nexport { playElementInteractions, updateElementInteractions } from './sync/update-element-interactions';\n","import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { findChildRecursive, getElementChildren, type ModelResult } from '../sync/get-model';\nimport { type V1ElementEditorSettingsProps } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n\teditorSettings: V1ElementEditorSettingsProps;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nfunction toElementModel( { model }: ModelResult ): ElementModel {\n\treturn {\n\t\tid: model.get( 'id' ) as string,\n\t\teditorSettings: model.get( 'editor_settings' ) ?? {},\n\t};\n}\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: Record< string, string >\n): T {\n\treturn useListenTo(\n\t\t[\n\t\t\tv1ReadyEvent(),\n\t\t\tcommandEndEvent( 'document/elements/create' ),\n\t\t\tcommandEndEvent( 'document/elements/delete' ),\n\t\t\tcommandEndEvent( 'document/elements/update' ),\n\t\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst container = getContainer( elementId );\n\t\t\tconst model = container?.model;\n\n\t\t\tif ( ! model ) {\n\t\t\t\treturn {} as ElementChildren;\n\t\t\t}\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = findChildRecursive( model, ( m ) => m.get( 'elType' ) === parentType );\n\n\t\t\t\tif ( ! parent ) {\n\t\t\t\t\tacc[ childType ] = [];\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tconst children = getElementChildren( parent.model, ( m ) => m.get( 'elType' ) === childType );\n\n\t\t\t\tacc[ childType ] = children.map( toElementModel );\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow, type V1Element } from './types';\n\nexport function getContainer( id: string ): V1Element | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n\nexport const selectElement = ( elementId: string ) => {\n\ttry {\n\t\tconst container = getContainer( elementId );\n\n\t\trunCommand( 'document/elements/select', { container } );\n\t} catch {}\n};\n","import { type ExtendedWindow, type V1Element } from './types';\n\ntype V1Model = V1Element[ 'model' ];\n\nexport type ModelResult = {\n\tmodel: V1Model;\n};\n\nexport function getModel( id: string, parentModel?: V1Model ): ModelResult | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id ) ?? null;\n\n\tif ( container ) {\n\t\treturn { model: container.model };\n\t}\n\n\tif ( parentModel ) {\n\t\tconst childModels = parentModel.get( 'elements' ) ?? [];\n\t\tconst model = childModels.find( ( m ) => m.get( 'id' ) === id );\n\n\t\tif ( model ) {\n\t\t\treturn { model };\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function findChildRecursive( model: V1Model, predicate: ( model: V1Model ) => boolean ): ModelResult | null {\n\tconst childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];\n\n\tfor ( const childModel of childModels ) {\n\t\tif ( predicate( childModel ) ) {\n\t\t\treturn { model: childModel };\n\t\t}\n\n\t\tconst found = findChildRecursive( childModel, predicate );\n\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getElementChildren( model: V1Model, predicate?: ( model: V1Model ) => boolean ): ModelResult[] {\n\tconst childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];\n\n\treturn childModels\n\t\t.filter( ( childModel ) => ! predicate || predicate( childModel ) )\n\t\t.map( ( childModel ) => ( { model: childModel } ) );\n}\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementEditorSettings } from '../sync/get-element-editor-settings';\nimport { type ElementID } from '../types';\n\nexport const useElementEditorSettings = ( elementId: ElementID ) => {\n\treturn useListenTo(\n\t\twindowEvent( 'elementor/element/update_editor_settings' ),\n\t\t() => getElementEditorSettings( elementId ),\n\t\t[ elementId ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport function getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { type ElementID } from '../types';\n\nexport const useElementSetting = < TValue >( elementId: ElementID, settingKey: string ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() => getElementSetting< TValue >( elementId, settingKey ),\n\t\t[ elementId, settingKey ]\n\t);\n};\n\nexport const useElementSettings = < TValue >( elementId: ElementID, settingKeys: string[] ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() =>\n\t\t\tsettingKeys.reduce< Record< string, TValue > >( ( settings, key ) => {\n\t\t\t\tconst value = getElementSetting< TValue >( elementId, key );\n\n\t\t\t\tif ( value !== null ) {\n\t\t\t\t\tsettings[ key ] = value;\n\t\t\t\t}\n\n\t\t\t\treturn settings;\n\t\t\t}, {} ),\n\t\t[ elementId, settingKeys.join( ',' ) ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementSetting = < TValue >( elementId: ElementID, settingKey: string ): TValue | null => {\n\tconst container = getContainer( elementId );\n\n\treturn ( container?.settings?.get( settingKey ) as TValue ) ?? null;\n};\n\nexport const getElementSettings = < TValue >(\n\telementId: ElementID,\n\tsettingKey: string[]\n): Record< string, TValue | null > => {\n\treturn Object.fromEntries( settingKey.map( ( key ) => [ key, getElementSetting( elementId, key ) ] ) );\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useParentElement( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/create' ) ],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow = window as unknown as ExtendedWindow;\n\t\t\tconst element = extendedWindow?.elementor?.getContainer?.( elementId );\n\t\t\tif ( ! element ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn element.parent;\n\t\t},\n\t\t[ elementId ]\n\t);\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementType } from '../sync/get-element-type';\nimport { getSelectedElements } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\tconst elements = useListenTo(\n\t\t[\n\t\t\tcommandEndEvent( 'document/elements/select' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect' ),\n\t\t\tcommandEndEvent( 'document/elements/select-all' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect-all' ),\n\t\t],\n\t\tgetSelectedElements\n\t);\n\n\tconst [ element ] = elements;\n\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type ExtendedWindow, type V1ElementConfig } from '../sync/types.js';\ntype WidgetsCache< T > = Record< string, T >;\n\nexport function getWidgetsCache< T extends V1ElementConfig >(): WidgetsCache< T > | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn ( extendedWindow?.elementor?.widgetsCache as WidgetsCache< T > ) || null;\n}\n","import { type ElementType } from '../types';\nimport { getWidgetsCache } from './get-widgets-cache';\n\nexport function getElementType( type: string ): ElementType | null {\n\tif ( ! type ) {\n\t\treturn null;\n\t}\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\tif ( ! elementType?.atomic_controls ) {\n\t\treturn null;\n\t}\n\n\tif ( ! elementType?.atomic_props_schema ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tkey: type,\n\t\tcontrols: elementType.atomic_controls,\n\t\tpropsSchema: elementType.atomic_props_schema,\n\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\ttitle: elementType.title,\n\t\tstyleStates: elementType.atomic_style_states ?? [],\n\t};\n}\n","import { type Element } from '../types';\nimport { type ExtendedWindow } from './types';\n\nexport function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type CreateElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function createElement( { containerId, model, options }: CreateElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'document/elements/create', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions: { edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement, type CreateElementParams } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype CreateNestedElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tcreateParams: CreateElementParams;\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateNestedElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateNestedElementsParams ): CreatedElementsResult => {\n\tconst undoableCreate = undoable(\n\t\t{\n\t\t\tdo: ( { elements: elementsParam }: { elements: CreateElementParams[] } ): CreatedElementsResult => {\n\t\t\t\tconst createdElements: CreatedElement[] = [];\n\n\t\t\t\telementsParam.forEach( ( createParams ) => {\n\t\t\t\t\tconst { options, ...elementParams } = createParams;\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\t...elementParams,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tcreatedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\tcreateParams: {\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements };\n\t\t\t},\n\t\t\tundo: ( _: { elements: CreateElementParams[] }, { createdElements }: CreatedElementsResult ) => {\n\t\t\t\t// Delete elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...createdElements ].reverse().forEach( ( { elementId } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elements: CreateElementParams[] },\n\t\t\t\t{ createdElements }: CreatedElementsResult\n\t\t\t): CreatedElementsResult => {\n\t\t\t\tconst newElements: CreatedElement[] = [];\n\n\t\t\t\tcreatedElements.forEach( ( { createParams, model } ) => {\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainerId: createParams.containerId,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...createParams.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tcreateParams,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements: newElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableCreate( { elements } );\n};\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\nexport function deleteElement( {\n\telementId,\n\toptions = {},\n}: {\n\telementId: string;\n\toptions?: Options;\n} ): Promise< void > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\treturn runCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tscrollIntoView: boolean;\n};\n\nexport type DropElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function dropElement( { containerId, model, options }: DropElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'preview/drop', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telementId: string;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { elementId, options = {} }: DuplicateElementParams ): V1Element {\n\tconst elementToDuplicate = getContainer( elementId );\n\n\tif ( ! elementToDuplicate ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\t// Get the position after the original element (only when cloning)\n\tconst currentIndex = elementToDuplicate.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: elementToDuplicate,\n\t\toptions: { at: insertPosition, edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { duplicateElement } from './duplicate-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype DuplicateElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonDuplicateElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype DuplicatedElement = {\n\tid: string;\n\tmodel: V1ElementModelProps;\n\toriginalElementId: string;\n\tmodelToRestore?: V1ElementModelProps;\n\tparentContainerId?: string;\n\tat?: number;\n};\n\ntype DuplicatedElementsResult = {\n\tduplicatedElements: DuplicatedElement[];\n};\n\nexport type { DuplicateElementsParams, DuplicatedElement, DuplicatedElementsResult };\n\nexport const duplicateElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item duplicated', 'elementor' ),\n\tonDuplicateElements,\n\tonRestoreElements,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\n\t\t\t\t// Call onCreate before duplicating elements to avoid conflicts between commands\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = elementIdsToDuplicate.reduce( ( acc, elementId ) => {\n\t\t\t\t\tconst originalContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( originalContainer?.parent ) {\n\t\t\t\t\t\tconst duplicatedElement = duplicateElement( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: duplicatedElement.id,\n\t\t\t\t\t\t\tmodel: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: elementId,\n\t\t\t\t\t\t\tmodelToRestore: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\tparentContainerId: duplicatedElement.parent?.id,\n\t\t\t\t\t\t\tat: duplicatedElement.view?._index,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\t\t\t\t// Delete duplicated elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...duplicatedElements ].reverse().forEach( ( { id } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId: id,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ duplicatedElements: previousElements }: DuplicatedElementsResult\n\t\t\t): DuplicatedElementsResult => {\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = previousElements.reduce( ( acc, previousElement ) => {\n\t\t\t\t\tif ( previousElement.modelToRestore && previousElement.parentContainerId ) {\n\t\t\t\t\t\tconst createdElement = createElement( {\n\t\t\t\t\t\t\tcontainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tmodel: previousElement.modelToRestore,\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\t\tclone: false,\n\t\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: createdElement.id,\n\t\t\t\t\t\t\tmodel: createdElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: previousElement.originalElementId,\n\t\t\t\t\t\t\tmodelToRestore: previousElement.modelToRestore,\n\t\t\t\t\t\t\tparentContainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableDuplicate( { elementIds } );\n};\n","import { type ExtendedWindow } from './types';\n\nexport const generateElementId = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn (\n\t\textendedWindow.elementorCommon?.helpers?.getUniqueId?.() ??\n\t\t`el-${ Date.now() }-${ Math.random().toString( 36 ).substring( 2, 9 ) }`\n\t);\n};\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentContainer() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrent?.()?.container ?? null;\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentId() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;\n}\n","import { createError } from '@elementor/utils';\n\nexport const ElementNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_not_found',\n\tmessage: 'Element not found.',\n} );\n\nexport const StyleNotFoundError = createError< { styleId: string } >( {\n\tcode: 'style_not_found',\n\tmessage: 'Style not found.',\n} );\n\nexport const ElementTypeNotExistsError = createError< { elementId: string } >( {\n\tcode: 'element_type_not_exists',\n\tmessage: 'Element type does not exist.',\n} );\n\nexport const ElementLabelNotExistsError = createError< { elementType: string } >( {\n\tcode: 'element_label_not_exists',\n\tmessage: 'Element label does not exist.',\n} );\n\nexport const ElementParentNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_parent_not_found',\n\tmessage: 'Element parent not found.',\n} );\n\nexport const ElementIndexNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_index_not_found',\n\tmessage: 'Element index not found.',\n} );\n","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\nimport { getSelectedElements } from './get-selected-elements';\n\nexport function getElementLabel( elementId?: ElementID ) {\n\tif ( ! elementId ) {\n\t\telementId = getSelectedElements()?.[ 0 ]?.id;\n\t}\n\n\tconst container = getContainer( elementId );\n\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tif ( ! type ) {\n\t\tthrow new ElementTypeNotExistsError( { context: { elementId } } );\n\t}\n\n\tconst label = getWidgetsCache()?.[ type ]?.title;\n\n\tif ( ! label ) {\n\t\tthrow new ElementLabelNotExistsError( { context: { elementType: type } } );\n\t}\n\n\treturn label;\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementStyles = ( elementID: ElementID ): Record< string, StyleDefinition > | null => {\n\tconst container = getContainer( elementID );\n\n\treturn container?.model.get( 'styles' ) || null;\n};\n","import { type V1Element } from './types';\n\nexport function getAllDescendants( container: V1Element ): V1Element[] {\n\tconst children = ( container.children ?? [] ).flatMap( ( child ) => getAllDescendants( child as V1Element ) );\n\n\treturn [ container, ...children ];\n}\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { getCurrentDocumentContainer } from './get-current-document-container';\nimport { type V1Element } from './types';\n\nexport function getElements( root?: ElementID ): V1Element[] {\n\tconst container = root ? getContainer( root ) : getCurrentDocumentContainer();\n\n\tif ( ! container ) {\n\t\treturn [];\n\t}\n\n\tconst children = [ ...( container.model.get( 'elements' ) ?? [] ) ].flatMap( ( childModel ) =>\n\t\tgetElements( childModel.get( 'id' ) )\n\t);\n\n\treturn [ container, ...children ];\n}\n","import { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tedit?: boolean;\n};\n\nexport type MoveElementParams = {\n\telementId: string;\n\ttargetContainerId: string;\n\toptions?: Options;\n};\n\nexport function moveElement( { elementId, targetContainerId, options = {} }: MoveElementParams ) {\n\tconst container = getContainer( elementId );\n\tconst target = getContainer( targetContainerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tif ( ! target ) {\n\t\tthrow new Error( `Target container with ID \"${ targetContainerId }\" not found` );\n\t}\n\n\tconst modelToRecreate = container.model.toJSON();\n\n\tdeleteElement( {\n\t\telementId,\n\t\t// prevent inner history from being created\n\t\toptions: { ...options, useHistory: false },\n\t} );\n\n\tconst newContainer = createElement( {\n\t\tcontainerId: targetContainerId,\n\t\tmodel: modelToRecreate,\n\t\t// prevent inner history from being created\n\t\toptions: { edit: false, ...options, useHistory: false },\n\t} );\n\n\treturn newContainer;\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getContainer } from './get-container';\nimport { moveElement, type MoveElementParams } from './move-element';\nimport { type V1Element } from './types';\n\ntype MoveElementsParams = {\n\tmoves: MoveElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonMoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype OriginalPosition = {\n\telementId: string;\n\toriginalContainerId: string;\n\toriginalIndex: number;\n};\n\ntype MovedElement = {\n\telementId: string;\n\toriginalPosition: OriginalPosition;\n\tmove: MoveElementParams;\n\telement: V1Element;\n};\n\ntype MovedElementsResult = {\n\tmovedElements: MovedElement[];\n};\n\nexport type { MoveElementsParams, MovedElement, MovedElementsResult };\n\nexport const moveElements = ( {\n\tmoves: movesToMake,\n\ttitle,\n\tsubtitle = __( 'Elements moved', 'elementor' ),\n\tonMoveElements,\n\tonRestoreElements,\n}: MoveElementsParams ): MovedElementsResult => {\n\tconst undoableMove = undoable(\n\t\t{\n\t\t\tdo: ( { moves }: { moves: MoveElementParams[] } ): MovedElementsResult => {\n\t\t\t\tconst movedElements: MovedElement[] = [];\n\t\t\t\t// Call onMoveElements before moving element to avoid conflicts between commands\n\t\t\t\tonMoveElements?.();\n\t\t\t\tmoves.forEach( ( move ) => {\n\t\t\t\t\tconst { elementId } = move;\n\t\t\t\t\tconst sourceContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( ! sourceContainer ) {\n\t\t\t\t\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalContainerId = sourceContainer.parent?.id || '';\n\t\t\t\t\tconst originalIndex = sourceContainer.parent?.children?.indexOf( sourceContainer ) ?? -1;\n\n\t\t\t\t\tconst originalPosition: OriginalPosition = {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalContainerId,\n\t\t\t\t\t\toriginalIndex,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tmovedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements };\n\t\t\t},\n\t\t\tundo: ( _: { moves: MoveElementParams[] }, { movedElements }: MovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t[ ...movedElements ].reverse().forEach( ( { originalPosition } ) => {\n\t\t\t\t\tconst { elementId, originalContainerId, originalIndex } = originalPosition;\n\n\t\t\t\t\tmoveElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\ttargetContainerId: originalContainerId,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\tat: originalIndex >= 0 ? originalIndex : undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { moves: MoveElementParams[] },\n\t\t\t\t{ movedElements }: MovedElementsResult\n\t\t\t): MovedElementsResult => {\n\t\t\t\tconst newMovedElements: MovedElement[] = [];\n\t\t\t\tonMoveElements?.();\n\n\t\t\t\tmovedElements.forEach( ( { move, originalPosition } ) => {\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewMovedElements.push( {\n\t\t\t\t\t\telementId: move.elementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements: newMovedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableMove( { moves: movesToMake } );\n};\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps } from './types';\n\ntype RemoveNestedElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonRemoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype RemovedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tparent: V1Element | null;\n\tat: number;\n};\n\ntype RemovedElementsResult = {\n\telementIds: string[];\n\tremovedElements: RemovedElement[];\n};\n\nexport type { RemoveNestedElementsParams, RemovedElement, RemovedElementsResult };\n\nexport const removeElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item removed', 'elementor' ),\n\tonRemoveElements,\n\tonRestoreElements,\n}: RemoveNestedElementsParams ): RemovedElementsResult => {\n\tconst undoableRemove = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsParam }: { elementIds: string[] } ): RemovedElementsResult => {\n\t\t\t\tconst removedElements: RemovedElement[] = [];\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tconst model = container.model.toJSON();\n\t\t\t\t\t\tconst parent = container.parent;\n\n\t\t\t\t\t\tconst at = container.view?._index ?? 0;\n\n\t\t\t\t\t\tremovedElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tparent: parent ?? null,\n\t\t\t\t\t\t\tat,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\t// Call onRemoveElements before deleting elements to avoid conflicts between commands\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: elementIdsParam, removedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { removedElements }: RemovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t// Restore elements in reverse order to maintain proper hierarchy\n\t\t\t\t[ ...removedElements ].reverse().forEach( ( { model, parent, at } ) => {\n\t\t\t\t\tif ( parent && model ) {\n\t\t\t\t\t\tcreateElement( {\n\t\t\t\t\t\t\tcontainerId: parent.id,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\toptions: { useHistory: false, at },\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ elementIds: originalElementIds, removedElements }: RemovedElementsResult\n\t\t\t): RemovedElementsResult => {\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\toriginalElementIds.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: originalElementIds, removedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableRemove( { elementIds } );\n};\n","import { ElementIndexNotFoundError, ElementNotFoundError, ElementParentNotFoundError } from '../errors';\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementData, type V1ElementModelProps } from './types';\n\ntype ElementLocation = {\n\tcontainerId: string;\n\tindex: number;\n};\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1ElementData;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = async ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst { containerId, index } = getNewElementContainer( currentElement, newElement );\n\n\tconst newElementInstance = createElement( {\n\t\tcontainerId,\n\t\tmodel: newElement,\n\t\toptions: { at: index, useHistory: withHistory },\n\t} );\n\n\tawait deleteElement( { elementId: currentElement.id, options: { useHistory: withHistory } } );\n\n\treturn newElementInstance;\n};\n\nfunction getNewElementContainer(\n\tcurrentElement: V1ElementData,\n\tnewElement: Omit< V1ElementModelProps, 'id' >\n): ElementLocation {\n\tconst currentElementContainer = getContainer( currentElement.id );\n\n\tif ( ! currentElementContainer ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst { parent } = currentElementContainer;\n\n\tif ( ! parent ) {\n\t\tthrow new ElementParentNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst elementIndex = currentElementContainer.view?._index ?? 0;\n\n\tif ( elementIndex === -1 ) {\n\t\tthrow new ElementIndexNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tlet container = { containerId: parent.id, index: elementIndex };\n\n\t// If the element is at document top level and is a widget, wrap it with an empty container\n\tif ( parent.id === 'document' && newElement.elType === 'widget' ) {\n\t\tcontainer = createWrapperForWidget( parent.id, elementIndex );\n\t}\n\n\treturn container;\n}\n\nconst DEFAULT_CONTAINER_TYPE = 'e-flexbox';\n\nfunction createWrapperForWidget( parentId: string, elementIndex: number ): ElementLocation {\n\tconst container = createElement( {\n\t\tcontainerId: parentId,\n\t\tmodel: { elType: DEFAULT_CONTAINER_TYPE },\n\t\toptions: { at: elementIndex, useHistory: false },\n\t} );\n\n\treturn { containerId: container.id, index: 0 };\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementEditorSettings = ( {\n\telementId,\n\tsettings,\n}: {\n\telementId: string;\n\tsettings: V1ElementModelProps[ 'editor_settings' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\tconst editorSettings = element.model.get( 'editor_settings' ) ?? {};\n\n\telement.model.set( 'editor_settings', { ...editorSettings, ...settings } );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n","import { type Props } from '@elementor/editor-props';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport type UpdateElementSettingsArgs = {\n\tid: ElementID;\n\tprops: Props;\n\twithHistory?: boolean;\n};\n\nexport const updateElementSettings = ( { id, props, withHistory = true }: UpdateElementSettingsArgs ) => {\n\tconst container = getContainer( id );\n\n\tconst args = {\n\t\tcontainer,\n\t\tsettings: { ...props },\n\t};\n\n\tif ( withHistory ) {\n\t\trunCommandSync( 'document/elements/settings', args );\n\t} else {\n\t\trunCommandSync( 'document/elements/set-settings', args, { internal: true } );\n\t}\n};\n","import { type LinkPropValue } from '@elementor/editor-props';\n\nimport { getContainer } from './sync/get-container';\nimport { getElementSetting } from './sync/get-element-setting';\n\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\n\ntype LinkValue = LinkPropValue[ 'value' ];\n\nexport type LinkInLinkRestriction =\n\t| {\n\t\t\tshouldRestrict: true;\n\t\t\treason: 'ancestor' | 'descendant';\n\t\t\telementId: string | null;\n\t }\n\t| {\n\t\t\tshouldRestrict: false;\n\t\t\treason?: never;\n\t\t\telementId?: never;\n\t };\n\nexport function getLinkInLinkRestriction( elementId: string, resolvedValue?: LinkValue ): LinkInLinkRestriction {\n\tconst anchoredDescendantId = getAnchoredDescendantId( elementId );\n\n\tif ( anchoredDescendantId ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId: anchoredDescendantId,\n\t\t};\n\t}\n\n\tconst hasInlineLink = checkForInlineLink( elementId, resolvedValue );\n\n\tif ( hasInlineLink ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId,\n\t\t};\n\t}\n\n\tconst ancestor = getAnchoredAncestorId( elementId );\n\n\tif ( ancestor ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'ancestor',\n\t\t\telementId: ancestor,\n\t\t};\n\t}\n\n\treturn {\n\t\tshouldRestrict: false,\n\t};\n}\n\nexport function getAnchoredDescendantId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn null;\n\t}\n\n\tfor ( const childAnchorElement of Array.from( element.querySelectorAll( ANCHOR_SELECTOR ) ) ) {\n\t\t// Ensure the child is not in the current element's scope\n\t\tconst childElementId = findElementIdOf( childAnchorElement );\n\n\t\tif ( childElementId !== elementId ) {\n\t\t\treturn childElementId;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getAnchoredAncestorId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element || element.parentElement === null ) {\n\t\treturn null;\n\t}\n\n\tconst parentAnchor = element.parentElement.closest( ANCHOR_SELECTOR );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId ) as HTMLElement;\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of Array.from( element.children ) as HTMLElement[] ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( child.matches( ANCHOR_SELECTOR ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( doesElementContainAnchor( child ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findElementIdOf( element: Element ): string | null {\n\treturn element.closest< HTMLElement >( '[data-id]' )?.dataset.id || null;\n}\n\nfunction checkForInlineLink( elementId: string, resolvedValue?: LinkValue ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn false;\n\t}\n\n\tconst linkSetting = resolvedValue ?? getElementSetting< LinkPropValue >( elementId, 'link' )?.value;\n\n\tif ( linkSetting?.destination ) {\n\t\treturn false;\n\t}\n\n\treturn element.querySelector( ANCHOR_SELECTOR ) !== null;\n}\n\nfunction getElementDOM( id: string ) {\n\ttry {\n\t\treturn getContainer( id )?.view?.el || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n","import { commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport const ELEMENT_STYLE_CHANGE_EVENT = 'elementor/editor-v2/editor-elements/style';\n\nexport const styleRerenderEvents = [\n\tcommandEndEvent( 'document/elements/create' ),\n\tcommandEndEvent( 'document/elements/duplicate' ),\n\tcommandEndEvent( 'document/elements/import' ),\n\tcommandEndEvent( 'document/elements/paste' ),\n\twindowEvent( ELEMENT_STYLE_CHANGE_EVENT ),\n];\n","import { classesPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tgenerateId,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type CreateElementStyleArgs = {\n\tstyleId?: StyleDefinitionID;\n\telementId: ElementID;\n\tclassesProp: string;\n\tlabel: string;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n\tadditionalVariants?: StyleDefinitionVariant[];\n};\n\nexport function createElementStyle( {\n\tstyleId,\n\telementId,\n\tclassesProp,\n\tlabel,\n\tmeta,\n\tprops,\n\tcustom_css: customCss = null,\n\tadditionalVariants = [],\n}: CreateElementStyleArgs ): string {\n\tlet id = styleId;\n\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\tid ??= generateId( `e-${ elementId }-`, Object.keys( styles ) );\n\n\t\tconst variants = [ { meta, props, custom_css: customCss }, ...additionalVariants ];\n\n\t\tstyles[ id ] = {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} satisfies StyleDefinition;\n\n\t\taddStyleToClassesProp( elementId, classesProp, id );\n\n\t\treturn styles;\n\t} );\n\n\treturn id as string;\n}\n\nfunction addStyleToClassesProp( elementId: ElementID, classesProp: string, styleId: string ) {\n\tconst base = getElementSetting( elementId, classesProp );\n\n\tconst classesPropValue = classesPropTypeUtil.create(\n\t\t( prev ) => {\n\t\t\treturn [ ...( prev ?? [] ), styleId ];\n\t\t},\n\t\t{ base }\n\t);\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\t[ classesProp ]: classesPropValue,\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n\nexport function shouldCreateNewLocalStyle< T >(\n\tpayload: { styleId: StyleDefinition[ 'id' ] | null; provider: T | null } | null\n) {\n\treturn ! payload?.styleId && ! payload?.provider;\n}\n","import { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionsMap } from '@elementor/editor-styles';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { ElementNotFoundError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { type V1Element } from '../sync/types';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { ELEMENT_STYLE_CHANGE_EVENT } from './consts';\n\ntype Mutator = ( styles: StyleDefinitionsMap ) => StyleDefinitionsMap;\n\nexport function mutateElementStyles( elementId: ElementID, mutator: Mutator ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId } } );\n\t}\n\n\tconst oldIds = Object.keys( container.model.get( 'styles' ) ?? {} );\n\n\tconst styles = mutateStyles( container, mutator );\n\n\tconst newIds = Object.keys( styles );\n\n\tclearRemovedClasses( container, {\n\t\toldIds,\n\t\tnewIds,\n\t} );\n\n\tnotifyChanges();\n\n\treturn styles;\n}\n\nfunction mutateStyles( container: V1Element, mutator: Mutator ) {\n\tconst styles: StyleDefinitionsMap = structuredClone( container.model.get( 'styles' ) ) ?? {};\n\n\tconst entries = Object.entries( mutator( styles ) )\n\t\t.map( ( [ styleId, style ] ) => {\n\t\t\tstyle.variants = removeEmptyVariants( style );\n\n\t\t\treturn [ styleId, style ] as const;\n\t\t} )\n\t\t.filter( ( [ , style ] ) => {\n\t\t\treturn ! isStyleEmpty( style );\n\t\t} );\n\n\tconst mutatedStyles = Object.fromEntries( entries );\n\n\tcontainer.model.set( 'styles', mutatedStyles );\n\n\treturn mutatedStyles;\n}\n\nfunction removeEmptyVariants( style: StyleDefinition ) {\n\treturn style.variants.filter(\n\t\t( { props, custom_css: customCss } ) => Object.keys( props ).length > 0 || customCss?.raw\n\t);\n}\n\nfunction isStyleEmpty( style: StyleDefinition ) {\n\treturn style.variants.length === 0;\n}\n\nfunction clearRemovedClasses( container: V1Element, { oldIds, newIds }: { oldIds: string[]; newIds: string[] } ) {\n\tconst removedIds = oldIds.filter( ( id ) => ! newIds.includes( id ) );\n\tconst classesProps = structuredClone( getClassesProps( container ) );\n\n\tclassesProps.forEach( ( [ , prop ] ) => {\n\t\tprop.value = prop.value.filter( ( value ) => ! removedIds.includes( value ) );\n\t} );\n\n\tupdateElementSettings( {\n\t\tid: container.id,\n\t\tprops: Object.fromEntries( classesProps ),\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getClassesProps( container: V1Element ) {\n\treturn Object.entries( container.settings.toJSON() ).filter( ( prop ): prop is [ string, ClassesPropValue ] => {\n\t\tconst [ , value ] = prop;\n\n\t\treturn classesPropTypeUtil.isValid( value );\n\t} );\n}\n\nfunction notifyChanges() {\n\tdispatchChangeEvent();\n\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n}\n\nfunction dispatchChangeEvent() {\n\twindow.dispatchEvent( new CustomEvent( ELEMENT_STYLE_CHANGE_EVENT ) );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport function deleteElementStyle( elementId: ElementID, styleId: StyleDefinitionID ) {\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\t// The object is deep cloned so mutating it is fine.\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete styles[ styleId ];\n\n\t\treturn styles;\n\t} );\n}\n","import { mergeProps } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { StyleNotFoundError } from '../errors';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type UpdateElementStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n};\n\nexport function updateElementStyle( args: UpdateElementStyleArgs ) {\n\tmutateElementStyles( args.elementId, ( styles ) => {\n\t\tconst style = styles[ args.styleId ];\n\n\t\tif ( ! style ) {\n\t\t\tthrow new StyleNotFoundError( { context: { styleId: args.styleId } } );\n\t\t}\n\n\t\tconst variant = getVariantByMeta( style, args.meta );\n\t\tconst customCss = ( 'custom_css' in args ? args.custom_css : variant?.custom_css ) ?? null;\n\n\t\tif ( variant ) {\n\t\t\tvariant.props = mergeProps( variant.props, args.props );\n\t\t\tvariant.custom_css = customCss?.raw ? customCss : null;\n\t\t} else {\n\t\t\tstyle.variants.push( { meta: args.meta, props: args.props, custom_css: customCss } );\n\t\t}\n\n\t\treturn styles;\n\t} );\n}\n","import { useState } from 'react';\nimport { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementInteractions } from '../sync/get-element-interactions';\nimport { type ElementInteractions } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport const useElementInteractions = ( elementId: ElementID ) => {\n\tconst [ interactions, setInteractions ] = useState< ElementInteractions >( () => {\n\t\tconst initial = getElementInteractions( elementId );\n\n\t\treturn initial ?? { version: 1, items: [] };\n\t} );\n\n\tuseListenTo(\n\t\twindowEvent( 'elementor/element/update_interactions' ),\n\t\t() => {\n\t\t\tconst newInteractions = getElementInteractions( elementId );\n\t\t\tsetInteractions( newInteractions ?? { version: 1, items: [] } );\n\t\t},\n\t\t[ elementId ]\n\t);\n\n\treturn interactions;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { type ElementInteractions } from './types';\n\nexport function getElementInteractions( elementId: ElementID ): ElementInteractions | undefined {\n\tconst container = getContainer( elementId );\n\n\tconst interactions = container?.model?.get( 'interactions' );\n\n\tif ( typeof interactions === 'string' ) {\n\t\treturn JSON.parse( interactions ) as ElementInteractions;\n\t}\n\n\treturn interactions;\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementInteractions = ( {\n\telementId,\n\tinteractions,\n}: {\n\telementId: string;\n\tinteractions: V1ElementModelProps[ 'interactions' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\telement.model.set( 'interactions', interactions );\n\n\twindow.dispatchEvent( new CustomEvent( 'elementor/element/update_interactions' ) );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nexport const playElementInteractions = ( elementId: string, interactionId: string ) => {\n\twindow.top?.dispatchEvent(\n\t\tnew CustomEvent( 'atomic/play_interactions', { detail: { elementId, interactionId } } )\n\t);\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n"],"mappings":"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","names":["import_editor_v1_adapters","runCommand","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_v1_adapters","runCommand","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_props","import_editor_v1_adapters","runCommandSync","import_editor_props","import_editor_styles","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","setDocumentModifiedStatus","runCommandSync"]}
|
package/dist/index.mjs
CHANGED
|
@@ -16,7 +16,47 @@ var selectElement = (elementId) => {
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
+
// src/sync/get-model.ts
|
|
20
|
+
function getModel(id, parentModel) {
|
|
21
|
+
const extendedWindow = window;
|
|
22
|
+
const container = extendedWindow.elementor?.getContainer?.(id) ?? null;
|
|
23
|
+
if (container) {
|
|
24
|
+
return { model: container.model };
|
|
25
|
+
}
|
|
26
|
+
if (parentModel) {
|
|
27
|
+
const childModels = parentModel.get("elements") ?? [];
|
|
28
|
+
const model = childModels.find((m) => m.get("id") === id);
|
|
29
|
+
if (model) {
|
|
30
|
+
return { model };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
function findChildRecursive(model, predicate) {
|
|
36
|
+
const childModels = model.get("elements") ?? [];
|
|
37
|
+
for (const childModel of childModels) {
|
|
38
|
+
if (predicate(childModel)) {
|
|
39
|
+
return { model: childModel };
|
|
40
|
+
}
|
|
41
|
+
const found = findChildRecursive(childModel, predicate);
|
|
42
|
+
if (found) {
|
|
43
|
+
return found;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
function getElementChildren(model, predicate) {
|
|
49
|
+
const childModels = model.get("elements") ?? [];
|
|
50
|
+
return childModels.filter((childModel) => !predicate || predicate(childModel)).map((childModel) => ({ model: childModel }));
|
|
51
|
+
}
|
|
52
|
+
|
|
19
53
|
// src/hooks/use-element-children.ts
|
|
54
|
+
function toElementModel({ model }) {
|
|
55
|
+
return {
|
|
56
|
+
id: model.get("id"),
|
|
57
|
+
editorSettings: model.get("editor_settings") ?? {}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
20
60
|
function useElementChildren(elementId, childrenTypes) {
|
|
21
61
|
return useListenTo(
|
|
22
62
|
[
|
|
@@ -28,12 +68,18 @@ function useElementChildren(elementId, childrenTypes) {
|
|
|
28
68
|
],
|
|
29
69
|
() => {
|
|
30
70
|
const container = getContainer(elementId);
|
|
71
|
+
const model = container?.model;
|
|
72
|
+
if (!model) {
|
|
73
|
+
return {};
|
|
74
|
+
}
|
|
31
75
|
const elementChildren = Object.entries(childrenTypes).reduce((acc, [parentType, childType]) => {
|
|
32
|
-
const parent =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
76
|
+
const parent = findChildRecursive(model, (m) => m.get("elType") === parentType);
|
|
77
|
+
if (!parent) {
|
|
78
|
+
acc[childType] = [];
|
|
79
|
+
return acc;
|
|
80
|
+
}
|
|
81
|
+
const children = getElementChildren(parent.model, (m) => m.get("elType") === childType);
|
|
82
|
+
acc[childType] = children.map(toElementModel);
|
|
37
83
|
return acc;
|
|
38
84
|
}, {});
|
|
39
85
|
return elementChildren;
|
|
@@ -1042,6 +1088,7 @@ export {
|
|
|
1042
1088
|
dropElement,
|
|
1043
1089
|
duplicateElement,
|
|
1044
1090
|
duplicateElements,
|
|
1091
|
+
findChildRecursive,
|
|
1045
1092
|
generateElementId,
|
|
1046
1093
|
getAllDescendants,
|
|
1047
1094
|
getAnchoredAncestorId,
|
|
@@ -1049,6 +1096,7 @@ export {
|
|
|
1049
1096
|
getContainer,
|
|
1050
1097
|
getCurrentDocumentContainer,
|
|
1051
1098
|
getCurrentDocumentId,
|
|
1099
|
+
getElementChildren as getElementChildrenWithFallback,
|
|
1052
1100
|
getElementEditorSettings,
|
|
1053
1101
|
getElementInteractions,
|
|
1054
1102
|
getElementLabel,
|
|
@@ -1058,6 +1106,7 @@ export {
|
|
|
1058
1106
|
getElementType,
|
|
1059
1107
|
getElements,
|
|
1060
1108
|
getLinkInLinkRestriction,
|
|
1109
|
+
getModel,
|
|
1061
1110
|
getSelectedElements,
|
|
1062
1111
|
getWidgetsCache,
|
|
1063
1112
|
isElementAnchored,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-element-children.ts","../src/sync/get-container.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/get-element-editor-settings.ts","../src/hooks/use-element-setting.ts","../src/sync/get-element-setting.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-selected-element.ts","../src/sync/get-widgets-cache.ts","../src/sync/get-element-type.ts","../src/sync/get-selected-elements.ts","../src/sync/create-element.ts","../src/sync/create-elements.ts","../src/sync/delete-element.ts","../src/sync/drop-element.ts","../src/sync/duplicate-element.ts","../src/sync/duplicate-elements.ts","../src/sync/generate-element-id.ts","../src/sync/get-current-document-container.ts","../src/sync/get-current-document-id.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-element-styles.ts","../src/sync/get-all-descendants.ts","../src/sync/get-elements.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/remove-elements.ts","../src/sync/replace-element.ts","../src/sync/update-element-editor-settings.ts","../src/sync/update-element-settings.ts","../src/link-restriction.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/delete-element-style.ts","../src/styles/update-element-style.ts","../src/hooks/use-element-interactions.ts","../src/sync/get-element-interactions.ts","../src/sync/update-element-interactions.ts"],"sourcesContent":["import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: Record< string, string >\n): T {\n\treturn useListenTo(\n\t\t[\n\t\t\tv1ReadyEvent(),\n\t\t\tcommandEndEvent( 'document/elements/create' ),\n\t\t\tcommandEndEvent( 'document/elements/delete' ),\n\t\t\tcommandEndEvent( 'document/elements/update' ),\n\t\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst container = getContainer( elementId );\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = container?.children?.findRecursive?.(\n\t\t\t\t\t( { model } ) => model.get( 'elType' ) === parentType\n\t\t\t\t);\n\n\t\t\t\tconst children = parent?.children ?? [];\n\n\t\t\t\tacc[ childType ] = children\n\t\t\t\t\t.filter( ( { model } ) => model.get( 'elType' ) === childType )\n\t\t\t\t\t.map( ( { id } ) => ( { id } ) );\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow, type V1Element } from './types';\n\nexport function getContainer( id: string ): V1Element | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n\nexport const selectElement = ( elementId: string ) => {\n\ttry {\n\t\tconst container = getContainer( elementId );\n\n\t\trunCommand( 'document/elements/select', { container } );\n\t} catch {}\n};\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementEditorSettings } from '../sync/get-element-editor-settings';\nimport { type ElementID } from '../types';\n\nexport const useElementEditorSettings = ( elementId: ElementID ) => {\n\treturn useListenTo(\n\t\twindowEvent( 'elementor/element/update_editor_settings' ),\n\t\t() => getElementEditorSettings( elementId ),\n\t\t[ elementId ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport function getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { type ElementID } from '../types';\n\nexport const useElementSetting = < TValue >( elementId: ElementID, settingKey: string ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() => getElementSetting< TValue >( elementId, settingKey ),\n\t\t[ elementId, settingKey ]\n\t);\n};\n\nexport const useElementSettings = < TValue >( elementId: ElementID, settingKeys: string[] ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() =>\n\t\t\tsettingKeys.reduce< Record< string, TValue > >( ( settings, key ) => {\n\t\t\t\tconst value = getElementSetting< TValue >( elementId, key );\n\n\t\t\t\tif ( value !== null ) {\n\t\t\t\t\tsettings[ key ] = value;\n\t\t\t\t}\n\n\t\t\t\treturn settings;\n\t\t\t}, {} ),\n\t\t[ elementId, settingKeys.join( ',' ) ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementSetting = < TValue >( elementId: ElementID, settingKey: string ): TValue | null => {\n\tconst container = getContainer( elementId );\n\n\treturn ( container?.settings?.get( settingKey ) as TValue ) ?? null;\n};\n\nexport const getElementSettings = < TValue >(\n\telementId: ElementID,\n\tsettingKey: string[]\n): Record< string, TValue | null > => {\n\treturn Object.fromEntries( settingKey.map( ( key ) => [ key, getElementSetting( elementId, key ) ] ) );\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useParentElement( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/create' ) ],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow = window as unknown as ExtendedWindow;\n\t\t\tconst element = extendedWindow?.elementor?.getContainer?.( elementId );\n\t\t\tif ( ! element ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn element.parent;\n\t\t},\n\t\t[ elementId ]\n\t);\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementType } from '../sync/get-element-type';\nimport { getSelectedElements } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\tconst elements = useListenTo(\n\t\t[\n\t\t\tcommandEndEvent( 'document/elements/select' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect' ),\n\t\t\tcommandEndEvent( 'document/elements/select-all' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect-all' ),\n\t\t],\n\t\tgetSelectedElements\n\t);\n\n\tconst [ element ] = elements;\n\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type ExtendedWindow, type V1ElementConfig } from '../sync/types.js';\ntype WidgetsCache< T > = Record< string, T >;\n\nexport function getWidgetsCache< T extends V1ElementConfig >(): WidgetsCache< T > | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn ( extendedWindow?.elementor?.widgetsCache as WidgetsCache< T > ) || null;\n}\n","import { type ElementType } from '../types';\nimport { getWidgetsCache } from './get-widgets-cache';\n\nexport function getElementType( type: string ): ElementType | null {\n\tif ( ! type ) {\n\t\treturn null;\n\t}\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\tif ( ! elementType?.atomic_controls ) {\n\t\treturn null;\n\t}\n\n\tif ( ! elementType?.atomic_props_schema ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tkey: type,\n\t\tcontrols: elementType.atomic_controls,\n\t\tpropsSchema: elementType.atomic_props_schema,\n\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\ttitle: elementType.title,\n\t\tstyleStates: elementType.atomic_style_states ?? [],\n\t};\n}\n","import { type Element } from '../types';\nimport { type ExtendedWindow } from './types';\n\nexport function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type CreateElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function createElement( { containerId, model, options }: CreateElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'document/elements/create', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions: { edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement, type CreateElementParams } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype CreateNestedElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tcreateParams: CreateElementParams;\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateNestedElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateNestedElementsParams ): CreatedElementsResult => {\n\tconst undoableCreate = undoable(\n\t\t{\n\t\t\tdo: ( { elements: elementsParam }: { elements: CreateElementParams[] } ): CreatedElementsResult => {\n\t\t\t\tconst createdElements: CreatedElement[] = [];\n\n\t\t\t\telementsParam.forEach( ( createParams ) => {\n\t\t\t\t\tconst { options, ...elementParams } = createParams;\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\t...elementParams,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tcreatedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\tcreateParams: {\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements };\n\t\t\t},\n\t\t\tundo: ( _: { elements: CreateElementParams[] }, { createdElements }: CreatedElementsResult ) => {\n\t\t\t\t// Delete elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...createdElements ].reverse().forEach( ( { elementId } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elements: CreateElementParams[] },\n\t\t\t\t{ createdElements }: CreatedElementsResult\n\t\t\t): CreatedElementsResult => {\n\t\t\t\tconst newElements: CreatedElement[] = [];\n\n\t\t\t\tcreatedElements.forEach( ( { createParams, model } ) => {\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainerId: createParams.containerId,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...createParams.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tcreateParams,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements: newElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableCreate( { elements } );\n};\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\nexport function deleteElement( {\n\telementId,\n\toptions = {},\n}: {\n\telementId: string;\n\toptions?: Options;\n} ): Promise< void > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\treturn runCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tscrollIntoView: boolean;\n};\n\nexport type DropElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function dropElement( { containerId, model, options }: DropElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'preview/drop', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telementId: string;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { elementId, options = {} }: DuplicateElementParams ): V1Element {\n\tconst elementToDuplicate = getContainer( elementId );\n\n\tif ( ! elementToDuplicate ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\t// Get the position after the original element (only when cloning)\n\tconst currentIndex = elementToDuplicate.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: elementToDuplicate,\n\t\toptions: { at: insertPosition, edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { duplicateElement } from './duplicate-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype DuplicateElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonDuplicateElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype DuplicatedElement = {\n\tid: string;\n\tmodel: V1ElementModelProps;\n\toriginalElementId: string;\n\tmodelToRestore?: V1ElementModelProps;\n\tparentContainerId?: string;\n\tat?: number;\n};\n\ntype DuplicatedElementsResult = {\n\tduplicatedElements: DuplicatedElement[];\n};\n\nexport type { DuplicateElementsParams, DuplicatedElement, DuplicatedElementsResult };\n\nexport const duplicateElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item duplicated', 'elementor' ),\n\tonDuplicateElements,\n\tonRestoreElements,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\n\t\t\t\t// Call onCreate before duplicating elements to avoid conflicts between commands\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = elementIdsToDuplicate.reduce( ( acc, elementId ) => {\n\t\t\t\t\tconst originalContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( originalContainer?.parent ) {\n\t\t\t\t\t\tconst duplicatedElement = duplicateElement( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: duplicatedElement.id,\n\t\t\t\t\t\t\tmodel: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: elementId,\n\t\t\t\t\t\t\tmodelToRestore: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\tparentContainerId: duplicatedElement.parent?.id,\n\t\t\t\t\t\t\tat: duplicatedElement.view?._index,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\t\t\t\t// Delete duplicated elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...duplicatedElements ].reverse().forEach( ( { id } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId: id,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ duplicatedElements: previousElements }: DuplicatedElementsResult\n\t\t\t): DuplicatedElementsResult => {\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = previousElements.reduce( ( acc, previousElement ) => {\n\t\t\t\t\tif ( previousElement.modelToRestore && previousElement.parentContainerId ) {\n\t\t\t\t\t\tconst createdElement = createElement( {\n\t\t\t\t\t\t\tcontainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tmodel: previousElement.modelToRestore,\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\t\tclone: false,\n\t\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: createdElement.id,\n\t\t\t\t\t\t\tmodel: createdElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: previousElement.originalElementId,\n\t\t\t\t\t\t\tmodelToRestore: previousElement.modelToRestore,\n\t\t\t\t\t\t\tparentContainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableDuplicate( { elementIds } );\n};\n","import { type ExtendedWindow } from './types';\n\nexport const generateElementId = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn (\n\t\textendedWindow.elementorCommon?.helpers?.getUniqueId?.() ??\n\t\t`el-${ Date.now() }-${ Math.random().toString( 36 ).substring( 2, 9 ) }`\n\t);\n};\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentContainer() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrent?.()?.container ?? null;\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentId() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;\n}\n","import { createError } from '@elementor/utils';\n\nexport const ElementNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_not_found',\n\tmessage: 'Element not found.',\n} );\n\nexport const StyleNotFoundError = createError< { styleId: string } >( {\n\tcode: 'style_not_found',\n\tmessage: 'Style not found.',\n} );\n\nexport const ElementTypeNotExistsError = createError< { elementId: string } >( {\n\tcode: 'element_type_not_exists',\n\tmessage: 'Element type does not exist.',\n} );\n\nexport const ElementLabelNotExistsError = createError< { elementType: string } >( {\n\tcode: 'element_label_not_exists',\n\tmessage: 'Element label does not exist.',\n} );\n\nexport const ElementParentNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_parent_not_found',\n\tmessage: 'Element parent not found.',\n} );\n\nexport const ElementIndexNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_index_not_found',\n\tmessage: 'Element index not found.',\n} );\n","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\nimport { getSelectedElements } from './get-selected-elements';\n\nexport function getElementLabel( elementId?: ElementID ) {\n\tif ( ! elementId ) {\n\t\telementId = getSelectedElements()?.[ 0 ]?.id;\n\t}\n\n\tconst container = getContainer( elementId );\n\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tif ( ! type ) {\n\t\tthrow new ElementTypeNotExistsError( { context: { elementId } } );\n\t}\n\n\tconst label = getWidgetsCache()?.[ type ]?.title;\n\n\tif ( ! label ) {\n\t\tthrow new ElementLabelNotExistsError( { context: { elementType: type } } );\n\t}\n\n\treturn label;\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementStyles = ( elementID: ElementID ): Record< string, StyleDefinition > | null => {\n\tconst container = getContainer( elementID );\n\n\treturn container?.model.get( 'styles' ) || null;\n};\n","import { type V1Element } from './types';\n\nexport function getAllDescendants( container: V1Element ): V1Element[] {\n\tconst children = ( container.children ?? [] ).flatMap( ( child ) => getAllDescendants( child as V1Element ) );\n\n\treturn [ container, ...children ];\n}\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { getCurrentDocumentContainer } from './get-current-document-container';\nimport { type V1Element } from './types';\n\nexport function getElements( root?: ElementID ): V1Element[] {\n\tconst container = root ? getContainer( root ) : getCurrentDocumentContainer();\n\n\tif ( ! container ) {\n\t\treturn [];\n\t}\n\n\tconst children = [ ...( container.model.get( 'elements' ) ?? [] ) ].flatMap( ( childModel ) =>\n\t\tgetElements( childModel.get( 'id' ) )\n\t);\n\n\treturn [ container, ...children ];\n}\n","import { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tedit?: boolean;\n};\n\nexport type MoveElementParams = {\n\telementId: string;\n\ttargetContainerId: string;\n\toptions?: Options;\n};\n\nexport function moveElement( { elementId, targetContainerId, options = {} }: MoveElementParams ) {\n\tconst container = getContainer( elementId );\n\tconst target = getContainer( targetContainerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tif ( ! target ) {\n\t\tthrow new Error( `Target container with ID \"${ targetContainerId }\" not found` );\n\t}\n\n\tconst modelToRecreate = container.model.toJSON();\n\n\tdeleteElement( {\n\t\telementId,\n\t\t// prevent inner history from being created\n\t\toptions: { ...options, useHistory: false },\n\t} );\n\n\tconst newContainer = createElement( {\n\t\tcontainerId: targetContainerId,\n\t\tmodel: modelToRecreate,\n\t\t// prevent inner history from being created\n\t\toptions: { edit: false, ...options, useHistory: false },\n\t} );\n\n\treturn newContainer;\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getContainer } from './get-container';\nimport { moveElement, type MoveElementParams } from './move-element';\nimport { type V1Element } from './types';\n\ntype MoveElementsParams = {\n\tmoves: MoveElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonMoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype OriginalPosition = {\n\telementId: string;\n\toriginalContainerId: string;\n\toriginalIndex: number;\n};\n\ntype MovedElement = {\n\telementId: string;\n\toriginalPosition: OriginalPosition;\n\tmove: MoveElementParams;\n\telement: V1Element;\n};\n\ntype MovedElementsResult = {\n\tmovedElements: MovedElement[];\n};\n\nexport type { MoveElementsParams, MovedElement, MovedElementsResult };\n\nexport const moveElements = ( {\n\tmoves: movesToMake,\n\ttitle,\n\tsubtitle = __( 'Elements moved', 'elementor' ),\n\tonMoveElements,\n\tonRestoreElements,\n}: MoveElementsParams ): MovedElementsResult => {\n\tconst undoableMove = undoable(\n\t\t{\n\t\t\tdo: ( { moves }: { moves: MoveElementParams[] } ): MovedElementsResult => {\n\t\t\t\tconst movedElements: MovedElement[] = [];\n\t\t\t\t// Call onMoveElements before moving element to avoid conflicts between commands\n\t\t\t\tonMoveElements?.();\n\t\t\t\tmoves.forEach( ( move ) => {\n\t\t\t\t\tconst { elementId } = move;\n\t\t\t\t\tconst sourceContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( ! sourceContainer ) {\n\t\t\t\t\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalContainerId = sourceContainer.parent?.id || '';\n\t\t\t\t\tconst originalIndex = sourceContainer.parent?.children?.indexOf( sourceContainer ) ?? -1;\n\n\t\t\t\t\tconst originalPosition: OriginalPosition = {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalContainerId,\n\t\t\t\t\t\toriginalIndex,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tmovedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements };\n\t\t\t},\n\t\t\tundo: ( _: { moves: MoveElementParams[] }, { movedElements }: MovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t[ ...movedElements ].reverse().forEach( ( { originalPosition } ) => {\n\t\t\t\t\tconst { elementId, originalContainerId, originalIndex } = originalPosition;\n\n\t\t\t\t\tmoveElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\ttargetContainerId: originalContainerId,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\tat: originalIndex >= 0 ? originalIndex : undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { moves: MoveElementParams[] },\n\t\t\t\t{ movedElements }: MovedElementsResult\n\t\t\t): MovedElementsResult => {\n\t\t\t\tconst newMovedElements: MovedElement[] = [];\n\t\t\t\tonMoveElements?.();\n\n\t\t\t\tmovedElements.forEach( ( { move, originalPosition } ) => {\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewMovedElements.push( {\n\t\t\t\t\t\telementId: move.elementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements: newMovedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableMove( { moves: movesToMake } );\n};\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps } from './types';\n\ntype RemoveNestedElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonRemoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype RemovedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tparent: V1Element | null;\n\tat: number;\n};\n\ntype RemovedElementsResult = {\n\telementIds: string[];\n\tremovedElements: RemovedElement[];\n};\n\nexport type { RemoveNestedElementsParams, RemovedElement, RemovedElementsResult };\n\nexport const removeElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item removed', 'elementor' ),\n\tonRemoveElements,\n\tonRestoreElements,\n}: RemoveNestedElementsParams ): RemovedElementsResult => {\n\tconst undoableRemove = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsParam }: { elementIds: string[] } ): RemovedElementsResult => {\n\t\t\t\tconst removedElements: RemovedElement[] = [];\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tconst model = container.model.toJSON();\n\t\t\t\t\t\tconst parent = container.parent;\n\n\t\t\t\t\t\tconst at = container.view?._index ?? 0;\n\n\t\t\t\t\t\tremovedElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tparent: parent ?? null,\n\t\t\t\t\t\t\tat,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\t// Call onRemoveElements before deleting elements to avoid conflicts between commands\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: elementIdsParam, removedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { removedElements }: RemovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t// Restore elements in reverse order to maintain proper hierarchy\n\t\t\t\t[ ...removedElements ].reverse().forEach( ( { model, parent, at } ) => {\n\t\t\t\t\tif ( parent && model ) {\n\t\t\t\t\t\tcreateElement( {\n\t\t\t\t\t\t\tcontainerId: parent.id,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\toptions: { useHistory: false, at },\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ elementIds: originalElementIds, removedElements }: RemovedElementsResult\n\t\t\t): RemovedElementsResult => {\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\toriginalElementIds.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: originalElementIds, removedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableRemove( { elementIds } );\n};\n","import { ElementIndexNotFoundError, ElementNotFoundError, ElementParentNotFoundError } from '../errors';\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementData, type V1ElementModelProps } from './types';\n\ntype ElementLocation = {\n\tcontainerId: string;\n\tindex: number;\n};\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1ElementData;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = async ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst { containerId, index } = getNewElementContainer( currentElement, newElement );\n\n\tconst newElementInstance = createElement( {\n\t\tcontainerId,\n\t\tmodel: newElement,\n\t\toptions: { at: index, useHistory: withHistory },\n\t} );\n\n\tawait deleteElement( { elementId: currentElement.id, options: { useHistory: withHistory } } );\n\n\treturn newElementInstance;\n};\n\nfunction getNewElementContainer(\n\tcurrentElement: V1ElementData,\n\tnewElement: Omit< V1ElementModelProps, 'id' >\n): ElementLocation {\n\tconst currentElementContainer = getContainer( currentElement.id );\n\n\tif ( ! currentElementContainer ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst { parent } = currentElementContainer;\n\n\tif ( ! parent ) {\n\t\tthrow new ElementParentNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst elementIndex = currentElementContainer.view?._index ?? 0;\n\n\tif ( elementIndex === -1 ) {\n\t\tthrow new ElementIndexNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tlet container = { containerId: parent.id, index: elementIndex };\n\n\t// If the element is at document top level and is a widget, wrap it with an empty container\n\tif ( parent.id === 'document' && newElement.elType === 'widget' ) {\n\t\tcontainer = createWrapperForWidget( parent.id, elementIndex );\n\t}\n\n\treturn container;\n}\n\nconst DEFAULT_CONTAINER_TYPE = 'e-flexbox';\n\nfunction createWrapperForWidget( parentId: string, elementIndex: number ): ElementLocation {\n\tconst container = createElement( {\n\t\tcontainerId: parentId,\n\t\tmodel: { elType: DEFAULT_CONTAINER_TYPE },\n\t\toptions: { at: elementIndex, useHistory: false },\n\t} );\n\n\treturn { containerId: container.id, index: 0 };\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementEditorSettings = ( {\n\telementId,\n\tsettings,\n}: {\n\telementId: string;\n\tsettings: V1ElementModelProps[ 'editor_settings' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\tconst editorSettings = element.model.get( 'editor_settings' ) ?? {};\n\n\telement.model.set( 'editor_settings', { ...editorSettings, ...settings } );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n","import { type Props } from '@elementor/editor-props';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport type UpdateElementSettingsArgs = {\n\tid: ElementID;\n\tprops: Props;\n\twithHistory?: boolean;\n};\n\nexport const updateElementSettings = ( { id, props, withHistory = true }: UpdateElementSettingsArgs ) => {\n\tconst container = getContainer( id );\n\n\tconst args = {\n\t\tcontainer,\n\t\tsettings: { ...props },\n\t};\n\n\tif ( withHistory ) {\n\t\trunCommandSync( 'document/elements/settings', args );\n\t} else {\n\t\trunCommandSync( 'document/elements/set-settings', args, { internal: true } );\n\t}\n};\n","import { type LinkPropValue } from '@elementor/editor-props';\n\nimport { getContainer } from './sync/get-container';\nimport { getElementSetting } from './sync/get-element-setting';\n\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\n\ntype LinkValue = LinkPropValue[ 'value' ];\n\nexport type LinkInLinkRestriction =\n\t| {\n\t\t\tshouldRestrict: true;\n\t\t\treason: 'ancestor' | 'descendant';\n\t\t\telementId: string | null;\n\t }\n\t| {\n\t\t\tshouldRestrict: false;\n\t\t\treason?: never;\n\t\t\telementId?: never;\n\t };\n\nexport function getLinkInLinkRestriction( elementId: string, resolvedValue?: LinkValue ): LinkInLinkRestriction {\n\tconst anchoredDescendantId = getAnchoredDescendantId( elementId );\n\n\tif ( anchoredDescendantId ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId: anchoredDescendantId,\n\t\t};\n\t}\n\n\tconst hasInlineLink = checkForInlineLink( elementId, resolvedValue );\n\n\tif ( hasInlineLink ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId,\n\t\t};\n\t}\n\n\tconst ancestor = getAnchoredAncestorId( elementId );\n\n\tif ( ancestor ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'ancestor',\n\t\t\telementId: ancestor,\n\t\t};\n\t}\n\n\treturn {\n\t\tshouldRestrict: false,\n\t};\n}\n\nexport function getAnchoredDescendantId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn null;\n\t}\n\n\tfor ( const childAnchorElement of Array.from( element.querySelectorAll( ANCHOR_SELECTOR ) ) ) {\n\t\t// Ensure the child is not in the current element's scope\n\t\tconst childElementId = findElementIdOf( childAnchorElement );\n\n\t\tif ( childElementId !== elementId ) {\n\t\t\treturn childElementId;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getAnchoredAncestorId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element || element.parentElement === null ) {\n\t\treturn null;\n\t}\n\n\tconst parentAnchor = element.parentElement.closest( ANCHOR_SELECTOR );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId ) as HTMLElement;\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of Array.from( element.children ) as HTMLElement[] ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( child.matches( ANCHOR_SELECTOR ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( doesElementContainAnchor( child ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findElementIdOf( element: Element ): string | null {\n\treturn element.closest< HTMLElement >( '[data-id]' )?.dataset.id || null;\n}\n\nfunction checkForInlineLink( elementId: string, resolvedValue?: LinkValue ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn false;\n\t}\n\n\tconst linkSetting = resolvedValue ?? getElementSetting< LinkPropValue >( elementId, 'link' )?.value;\n\n\tif ( linkSetting?.destination ) {\n\t\treturn false;\n\t}\n\n\treturn element.querySelector( ANCHOR_SELECTOR ) !== null;\n}\n\nfunction getElementDOM( id: string ) {\n\ttry {\n\t\treturn getContainer( id )?.view?.el || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n","import { commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport const ELEMENT_STYLE_CHANGE_EVENT = 'elementor/editor-v2/editor-elements/style';\n\nexport const styleRerenderEvents = [\n\tcommandEndEvent( 'document/elements/create' ),\n\tcommandEndEvent( 'document/elements/duplicate' ),\n\tcommandEndEvent( 'document/elements/import' ),\n\tcommandEndEvent( 'document/elements/paste' ),\n\twindowEvent( ELEMENT_STYLE_CHANGE_EVENT ),\n];\n","import { classesPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tgenerateId,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type CreateElementStyleArgs = {\n\tstyleId?: StyleDefinitionID;\n\telementId: ElementID;\n\tclassesProp: string;\n\tlabel: string;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n\tadditionalVariants?: StyleDefinitionVariant[];\n};\n\nexport function createElementStyle( {\n\tstyleId,\n\telementId,\n\tclassesProp,\n\tlabel,\n\tmeta,\n\tprops,\n\tcustom_css: customCss = null,\n\tadditionalVariants = [],\n}: CreateElementStyleArgs ): string {\n\tlet id = styleId;\n\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\tid ??= generateId( `e-${ elementId }-`, Object.keys( styles ) );\n\n\t\tconst variants = [ { meta, props, custom_css: customCss }, ...additionalVariants ];\n\n\t\tstyles[ id ] = {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} satisfies StyleDefinition;\n\n\t\taddStyleToClassesProp( elementId, classesProp, id );\n\n\t\treturn styles;\n\t} );\n\n\treturn id as string;\n}\n\nfunction addStyleToClassesProp( elementId: ElementID, classesProp: string, styleId: string ) {\n\tconst base = getElementSetting( elementId, classesProp );\n\n\tconst classesPropValue = classesPropTypeUtil.create(\n\t\t( prev ) => {\n\t\t\treturn [ ...( prev ?? [] ), styleId ];\n\t\t},\n\t\t{ base }\n\t);\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\t[ classesProp ]: classesPropValue,\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n\nexport function shouldCreateNewLocalStyle< T >(\n\tpayload: { styleId: StyleDefinition[ 'id' ] | null; provider: T | null } | null\n) {\n\treturn ! payload?.styleId && ! payload?.provider;\n}\n","import { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionsMap } from '@elementor/editor-styles';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { ElementNotFoundError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { type V1Element } from '../sync/types';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { ELEMENT_STYLE_CHANGE_EVENT } from './consts';\n\ntype Mutator = ( styles: StyleDefinitionsMap ) => StyleDefinitionsMap;\n\nexport function mutateElementStyles( elementId: ElementID, mutator: Mutator ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId } } );\n\t}\n\n\tconst oldIds = Object.keys( container.model.get( 'styles' ) ?? {} );\n\n\tconst styles = mutateStyles( container, mutator );\n\n\tconst newIds = Object.keys( styles );\n\n\tclearRemovedClasses( container, {\n\t\toldIds,\n\t\tnewIds,\n\t} );\n\n\tnotifyChanges();\n\n\treturn styles;\n}\n\nfunction mutateStyles( container: V1Element, mutator: Mutator ) {\n\tconst styles: StyleDefinitionsMap = structuredClone( container.model.get( 'styles' ) ) ?? {};\n\n\tconst entries = Object.entries( mutator( styles ) )\n\t\t.map( ( [ styleId, style ] ) => {\n\t\t\tstyle.variants = removeEmptyVariants( style );\n\n\t\t\treturn [ styleId, style ] as const;\n\t\t} )\n\t\t.filter( ( [ , style ] ) => {\n\t\t\treturn ! isStyleEmpty( style );\n\t\t} );\n\n\tconst mutatedStyles = Object.fromEntries( entries );\n\n\tcontainer.model.set( 'styles', mutatedStyles );\n\n\treturn mutatedStyles;\n}\n\nfunction removeEmptyVariants( style: StyleDefinition ) {\n\treturn style.variants.filter(\n\t\t( { props, custom_css: customCss } ) => Object.keys( props ).length > 0 || customCss?.raw\n\t);\n}\n\nfunction isStyleEmpty( style: StyleDefinition ) {\n\treturn style.variants.length === 0;\n}\n\nfunction clearRemovedClasses( container: V1Element, { oldIds, newIds }: { oldIds: string[]; newIds: string[] } ) {\n\tconst removedIds = oldIds.filter( ( id ) => ! newIds.includes( id ) );\n\tconst classesProps = structuredClone( getClassesProps( container ) );\n\n\tclassesProps.forEach( ( [ , prop ] ) => {\n\t\tprop.value = prop.value.filter( ( value ) => ! removedIds.includes( value ) );\n\t} );\n\n\tupdateElementSettings( {\n\t\tid: container.id,\n\t\tprops: Object.fromEntries( classesProps ),\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getClassesProps( container: V1Element ) {\n\treturn Object.entries( container.settings.toJSON() ).filter( ( prop ): prop is [ string, ClassesPropValue ] => {\n\t\tconst [ , value ] = prop;\n\n\t\treturn classesPropTypeUtil.isValid( value );\n\t} );\n}\n\nfunction notifyChanges() {\n\tdispatchChangeEvent();\n\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n}\n\nfunction dispatchChangeEvent() {\n\twindow.dispatchEvent( new CustomEvent( ELEMENT_STYLE_CHANGE_EVENT ) );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport function deleteElementStyle( elementId: ElementID, styleId: StyleDefinitionID ) {\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\t// The object is deep cloned so mutating it is fine.\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete styles[ styleId ];\n\n\t\treturn styles;\n\t} );\n}\n","import { mergeProps } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { StyleNotFoundError } from '../errors';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type UpdateElementStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n};\n\nexport function updateElementStyle( args: UpdateElementStyleArgs ) {\n\tmutateElementStyles( args.elementId, ( styles ) => {\n\t\tconst style = styles[ args.styleId ];\n\n\t\tif ( ! style ) {\n\t\t\tthrow new StyleNotFoundError( { context: { styleId: args.styleId } } );\n\t\t}\n\n\t\tconst variant = getVariantByMeta( style, args.meta );\n\t\tconst customCss = ( 'custom_css' in args ? args.custom_css : variant?.custom_css ) ?? null;\n\n\t\tif ( variant ) {\n\t\t\tvariant.props = mergeProps( variant.props, args.props );\n\t\t\tvariant.custom_css = customCss?.raw ? customCss : null;\n\t\t} else {\n\t\t\tstyle.variants.push( { meta: args.meta, props: args.props, custom_css: customCss } );\n\t\t}\n\n\t\treturn styles;\n\t} );\n}\n","import { useState } from 'react';\nimport { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementInteractions } from '../sync/get-element-interactions';\nimport { type ElementInteractions } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport const useElementInteractions = ( elementId: ElementID ) => {\n\tconst [ interactions, setInteractions ] = useState< ElementInteractions >( () => {\n\t\tconst initial = getElementInteractions( elementId );\n\n\t\treturn initial ?? { version: 1, items: [] };\n\t} );\n\n\tuseListenTo(\n\t\twindowEvent( 'elementor/element/update_interactions' ),\n\t\t() => {\n\t\t\tconst newInteractions = getElementInteractions( elementId );\n\t\t\tsetInteractions( newInteractions ?? { version: 1, items: [] } );\n\t\t},\n\t\t[ elementId ]\n\t);\n\n\treturn interactions;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { type ElementInteractions } from './types';\n\nexport function getElementInteractions( elementId: ElementID ): ElementInteractions | undefined {\n\tconst container = getContainer( elementId );\n\n\tconst interactions = container?.model?.get( 'interactions' );\n\n\tif ( typeof interactions === 'string' ) {\n\t\treturn JSON.parse( interactions ) as ElementInteractions;\n\t}\n\n\treturn interactions;\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementInteractions = ( {\n\telementId,\n\tinteractions,\n}: {\n\telementId: string;\n\tinteractions: V1ElementModelProps[ 'interactions' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\telement.model.set( 'interactions', interactions );\n\n\twindow.dispatchEvent( new CustomEvent( 'elementor/element/update_interactions' ) );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nexport const playElementInteractions = ( elementId: string, interactionId: string ) => {\n\twindow.top?.dispatchEvent(\n\t\tnew CustomEvent( 'atomic/play_interactions', { detail: { elementId, interactionId } } )\n\t);\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n"],"mappings":"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","names":["useListenTo","useListenTo","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","runCommand","runCommand","runCommandSync","runCommandSync","runCommandSync","runCommandSync","undoable","__","__","undoable","undoable","__","__","undoable","undoable","__","__","undoable","runCommandSync","runCommandSync","runCommandSync","runCommandSync","commandEndEvent","windowEvent","classesPropTypeUtil","runCommandSync","runCommandSync","classesPropTypeUtil","useListenTo","windowEvent","useListenTo","windowEvent","runCommandSync","setDocumentModifiedStatus","runCommandSync"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-element-children.ts","../src/sync/get-container.ts","../src/sync/get-model.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/get-element-editor-settings.ts","../src/hooks/use-element-setting.ts","../src/sync/get-element-setting.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-selected-element.ts","../src/sync/get-widgets-cache.ts","../src/sync/get-element-type.ts","../src/sync/get-selected-elements.ts","../src/sync/create-element.ts","../src/sync/create-elements.ts","../src/sync/delete-element.ts","../src/sync/drop-element.ts","../src/sync/duplicate-element.ts","../src/sync/duplicate-elements.ts","../src/sync/generate-element-id.ts","../src/sync/get-current-document-container.ts","../src/sync/get-current-document-id.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-element-styles.ts","../src/sync/get-all-descendants.ts","../src/sync/get-elements.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/remove-elements.ts","../src/sync/replace-element.ts","../src/sync/update-element-editor-settings.ts","../src/sync/update-element-settings.ts","../src/link-restriction.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/delete-element-style.ts","../src/styles/update-element-style.ts","../src/hooks/use-element-interactions.ts","../src/sync/get-element-interactions.ts","../src/sync/update-element-interactions.ts"],"sourcesContent":["import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { findChildRecursive, getElementChildren, type ModelResult } from '../sync/get-model';\nimport { type V1ElementEditorSettingsProps } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n\teditorSettings: V1ElementEditorSettingsProps;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nfunction toElementModel( { model }: ModelResult ): ElementModel {\n\treturn {\n\t\tid: model.get( 'id' ) as string,\n\t\teditorSettings: model.get( 'editor_settings' ) ?? {},\n\t};\n}\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: Record< string, string >\n): T {\n\treturn useListenTo(\n\t\t[\n\t\t\tv1ReadyEvent(),\n\t\t\tcommandEndEvent( 'document/elements/create' ),\n\t\t\tcommandEndEvent( 'document/elements/delete' ),\n\t\t\tcommandEndEvent( 'document/elements/update' ),\n\t\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst container = getContainer( elementId );\n\t\t\tconst model = container?.model;\n\n\t\t\tif ( ! model ) {\n\t\t\t\treturn {} as ElementChildren;\n\t\t\t}\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = findChildRecursive( model, ( m ) => m.get( 'elType' ) === parentType );\n\n\t\t\t\tif ( ! parent ) {\n\t\t\t\t\tacc[ childType ] = [];\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tconst children = getElementChildren( parent.model, ( m ) => m.get( 'elType' ) === childType );\n\n\t\t\t\tacc[ childType ] = children.map( toElementModel );\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow, type V1Element } from './types';\n\nexport function getContainer( id: string ): V1Element | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n\nexport const selectElement = ( elementId: string ) => {\n\ttry {\n\t\tconst container = getContainer( elementId );\n\n\t\trunCommand( 'document/elements/select', { container } );\n\t} catch {}\n};\n","import { type ExtendedWindow, type V1Element } from './types';\n\ntype V1Model = V1Element[ 'model' ];\n\nexport type ModelResult = {\n\tmodel: V1Model;\n};\n\nexport function getModel( id: string, parentModel?: V1Model ): ModelResult | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id ) ?? null;\n\n\tif ( container ) {\n\t\treturn { model: container.model };\n\t}\n\n\tif ( parentModel ) {\n\t\tconst childModels = parentModel.get( 'elements' ) ?? [];\n\t\tconst model = childModels.find( ( m ) => m.get( 'id' ) === id );\n\n\t\tif ( model ) {\n\t\t\treturn { model };\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function findChildRecursive( model: V1Model, predicate: ( model: V1Model ) => boolean ): ModelResult | null {\n\tconst childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];\n\n\tfor ( const childModel of childModels ) {\n\t\tif ( predicate( childModel ) ) {\n\t\t\treturn { model: childModel };\n\t\t}\n\n\t\tconst found = findChildRecursive( childModel, predicate );\n\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getElementChildren( model: V1Model, predicate?: ( model: V1Model ) => boolean ): ModelResult[] {\n\tconst childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];\n\n\treturn childModels\n\t\t.filter( ( childModel ) => ! predicate || predicate( childModel ) )\n\t\t.map( ( childModel ) => ( { model: childModel } ) );\n}\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementEditorSettings } from '../sync/get-element-editor-settings';\nimport { type ElementID } from '../types';\n\nexport const useElementEditorSettings = ( elementId: ElementID ) => {\n\treturn useListenTo(\n\t\twindowEvent( 'elementor/element/update_editor_settings' ),\n\t\t() => getElementEditorSettings( elementId ),\n\t\t[ elementId ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport function getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { type ElementID } from '../types';\n\nexport const useElementSetting = < TValue >( elementId: ElementID, settingKey: string ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() => getElementSetting< TValue >( elementId, settingKey ),\n\t\t[ elementId, settingKey ]\n\t);\n};\n\nexport const useElementSettings = < TValue >( elementId: ElementID, settingKeys: string[] ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() =>\n\t\t\tsettingKeys.reduce< Record< string, TValue > >( ( settings, key ) => {\n\t\t\t\tconst value = getElementSetting< TValue >( elementId, key );\n\n\t\t\t\tif ( value !== null ) {\n\t\t\t\t\tsettings[ key ] = value;\n\t\t\t\t}\n\n\t\t\t\treturn settings;\n\t\t\t}, {} ),\n\t\t[ elementId, settingKeys.join( ',' ) ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementSetting = < TValue >( elementId: ElementID, settingKey: string ): TValue | null => {\n\tconst container = getContainer( elementId );\n\n\treturn ( container?.settings?.get( settingKey ) as TValue ) ?? null;\n};\n\nexport const getElementSettings = < TValue >(\n\telementId: ElementID,\n\tsettingKey: string[]\n): Record< string, TValue | null > => {\n\treturn Object.fromEntries( settingKey.map( ( key ) => [ key, getElementSetting( elementId, key ) ] ) );\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useParentElement( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/create' ) ],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow = window as unknown as ExtendedWindow;\n\t\t\tconst element = extendedWindow?.elementor?.getContainer?.( elementId );\n\t\t\tif ( ! element ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn element.parent;\n\t\t},\n\t\t[ elementId ]\n\t);\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementType } from '../sync/get-element-type';\nimport { getSelectedElements } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\tconst elements = useListenTo(\n\t\t[\n\t\t\tcommandEndEvent( 'document/elements/select' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect' ),\n\t\t\tcommandEndEvent( 'document/elements/select-all' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect-all' ),\n\t\t],\n\t\tgetSelectedElements\n\t);\n\n\tconst [ element ] = elements;\n\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type ExtendedWindow, type V1ElementConfig } from '../sync/types.js';\ntype WidgetsCache< T > = Record< string, T >;\n\nexport function getWidgetsCache< T extends V1ElementConfig >(): WidgetsCache< T > | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn ( extendedWindow?.elementor?.widgetsCache as WidgetsCache< T > ) || null;\n}\n","import { type ElementType } from '../types';\nimport { getWidgetsCache } from './get-widgets-cache';\n\nexport function getElementType( type: string ): ElementType | null {\n\tif ( ! type ) {\n\t\treturn null;\n\t}\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\tif ( ! elementType?.atomic_controls ) {\n\t\treturn null;\n\t}\n\n\tif ( ! elementType?.atomic_props_schema ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tkey: type,\n\t\tcontrols: elementType.atomic_controls,\n\t\tpropsSchema: elementType.atomic_props_schema,\n\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\ttitle: elementType.title,\n\t\tstyleStates: elementType.atomic_style_states ?? [],\n\t};\n}\n","import { type Element } from '../types';\nimport { type ExtendedWindow } from './types';\n\nexport function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type CreateElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function createElement( { containerId, model, options }: CreateElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'document/elements/create', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions: { edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement, type CreateElementParams } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype CreateNestedElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tcreateParams: CreateElementParams;\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateNestedElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateNestedElementsParams ): CreatedElementsResult => {\n\tconst undoableCreate = undoable(\n\t\t{\n\t\t\tdo: ( { elements: elementsParam }: { elements: CreateElementParams[] } ): CreatedElementsResult => {\n\t\t\t\tconst createdElements: CreatedElement[] = [];\n\n\t\t\t\telementsParam.forEach( ( createParams ) => {\n\t\t\t\t\tconst { options, ...elementParams } = createParams;\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\t...elementParams,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tcreatedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\tcreateParams: {\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements };\n\t\t\t},\n\t\t\tundo: ( _: { elements: CreateElementParams[] }, { createdElements }: CreatedElementsResult ) => {\n\t\t\t\t// Delete elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...createdElements ].reverse().forEach( ( { elementId } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elements: CreateElementParams[] },\n\t\t\t\t{ createdElements }: CreatedElementsResult\n\t\t\t): CreatedElementsResult => {\n\t\t\t\tconst newElements: CreatedElement[] = [];\n\n\t\t\t\tcreatedElements.forEach( ( { createParams, model } ) => {\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainerId: createParams.containerId,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...createParams.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tcreateParams,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements: newElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableCreate( { elements } );\n};\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\nexport function deleteElement( {\n\telementId,\n\toptions = {},\n}: {\n\telementId: string;\n\toptions?: Options;\n} ): Promise< void > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\treturn runCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tscrollIntoView: boolean;\n};\n\nexport type DropElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function dropElement( { containerId, model, options }: DropElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'preview/drop', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telementId: string;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { elementId, options = {} }: DuplicateElementParams ): V1Element {\n\tconst elementToDuplicate = getContainer( elementId );\n\n\tif ( ! elementToDuplicate ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\t// Get the position after the original element (only when cloning)\n\tconst currentIndex = elementToDuplicate.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: elementToDuplicate,\n\t\toptions: { at: insertPosition, edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { duplicateElement } from './duplicate-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype DuplicateElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonDuplicateElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype DuplicatedElement = {\n\tid: string;\n\tmodel: V1ElementModelProps;\n\toriginalElementId: string;\n\tmodelToRestore?: V1ElementModelProps;\n\tparentContainerId?: string;\n\tat?: number;\n};\n\ntype DuplicatedElementsResult = {\n\tduplicatedElements: DuplicatedElement[];\n};\n\nexport type { DuplicateElementsParams, DuplicatedElement, DuplicatedElementsResult };\n\nexport const duplicateElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item duplicated', 'elementor' ),\n\tonDuplicateElements,\n\tonRestoreElements,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\n\t\t\t\t// Call onCreate before duplicating elements to avoid conflicts between commands\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = elementIdsToDuplicate.reduce( ( acc, elementId ) => {\n\t\t\t\t\tconst originalContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( originalContainer?.parent ) {\n\t\t\t\t\t\tconst duplicatedElement = duplicateElement( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: duplicatedElement.id,\n\t\t\t\t\t\t\tmodel: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: elementId,\n\t\t\t\t\t\t\tmodelToRestore: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\tparentContainerId: duplicatedElement.parent?.id,\n\t\t\t\t\t\t\tat: duplicatedElement.view?._index,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\t\t\t\t// Delete duplicated elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...duplicatedElements ].reverse().forEach( ( { id } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId: id,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ duplicatedElements: previousElements }: DuplicatedElementsResult\n\t\t\t): DuplicatedElementsResult => {\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = previousElements.reduce( ( acc, previousElement ) => {\n\t\t\t\t\tif ( previousElement.modelToRestore && previousElement.parentContainerId ) {\n\t\t\t\t\t\tconst createdElement = createElement( {\n\t\t\t\t\t\t\tcontainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tmodel: previousElement.modelToRestore,\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\t\tclone: false,\n\t\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: createdElement.id,\n\t\t\t\t\t\t\tmodel: createdElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: previousElement.originalElementId,\n\t\t\t\t\t\t\tmodelToRestore: previousElement.modelToRestore,\n\t\t\t\t\t\t\tparentContainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableDuplicate( { elementIds } );\n};\n","import { type ExtendedWindow } from './types';\n\nexport const generateElementId = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn (\n\t\textendedWindow.elementorCommon?.helpers?.getUniqueId?.() ??\n\t\t`el-${ Date.now() }-${ Math.random().toString( 36 ).substring( 2, 9 ) }`\n\t);\n};\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentContainer() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrent?.()?.container ?? null;\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentId() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;\n}\n","import { createError } from '@elementor/utils';\n\nexport const ElementNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_not_found',\n\tmessage: 'Element not found.',\n} );\n\nexport const StyleNotFoundError = createError< { styleId: string } >( {\n\tcode: 'style_not_found',\n\tmessage: 'Style not found.',\n} );\n\nexport const ElementTypeNotExistsError = createError< { elementId: string } >( {\n\tcode: 'element_type_not_exists',\n\tmessage: 'Element type does not exist.',\n} );\n\nexport const ElementLabelNotExistsError = createError< { elementType: string } >( {\n\tcode: 'element_label_not_exists',\n\tmessage: 'Element label does not exist.',\n} );\n\nexport const ElementParentNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_parent_not_found',\n\tmessage: 'Element parent not found.',\n} );\n\nexport const ElementIndexNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_index_not_found',\n\tmessage: 'Element index not found.',\n} );\n","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\nimport { getSelectedElements } from './get-selected-elements';\n\nexport function getElementLabel( elementId?: ElementID ) {\n\tif ( ! elementId ) {\n\t\telementId = getSelectedElements()?.[ 0 ]?.id;\n\t}\n\n\tconst container = getContainer( elementId );\n\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tif ( ! type ) {\n\t\tthrow new ElementTypeNotExistsError( { context: { elementId } } );\n\t}\n\n\tconst label = getWidgetsCache()?.[ type ]?.title;\n\n\tif ( ! label ) {\n\t\tthrow new ElementLabelNotExistsError( { context: { elementType: type } } );\n\t}\n\n\treturn label;\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementStyles = ( elementID: ElementID ): Record< string, StyleDefinition > | null => {\n\tconst container = getContainer( elementID );\n\n\treturn container?.model.get( 'styles' ) || null;\n};\n","import { type V1Element } from './types';\n\nexport function getAllDescendants( container: V1Element ): V1Element[] {\n\tconst children = ( container.children ?? [] ).flatMap( ( child ) => getAllDescendants( child as V1Element ) );\n\n\treturn [ container, ...children ];\n}\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { getCurrentDocumentContainer } from './get-current-document-container';\nimport { type V1Element } from './types';\n\nexport function getElements( root?: ElementID ): V1Element[] {\n\tconst container = root ? getContainer( root ) : getCurrentDocumentContainer();\n\n\tif ( ! container ) {\n\t\treturn [];\n\t}\n\n\tconst children = [ ...( container.model.get( 'elements' ) ?? [] ) ].flatMap( ( childModel ) =>\n\t\tgetElements( childModel.get( 'id' ) )\n\t);\n\n\treturn [ container, ...children ];\n}\n","import { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tedit?: boolean;\n};\n\nexport type MoveElementParams = {\n\telementId: string;\n\ttargetContainerId: string;\n\toptions?: Options;\n};\n\nexport function moveElement( { elementId, targetContainerId, options = {} }: MoveElementParams ) {\n\tconst container = getContainer( elementId );\n\tconst target = getContainer( targetContainerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tif ( ! target ) {\n\t\tthrow new Error( `Target container with ID \"${ targetContainerId }\" not found` );\n\t}\n\n\tconst modelToRecreate = container.model.toJSON();\n\n\tdeleteElement( {\n\t\telementId,\n\t\t// prevent inner history from being created\n\t\toptions: { ...options, useHistory: false },\n\t} );\n\n\tconst newContainer = createElement( {\n\t\tcontainerId: targetContainerId,\n\t\tmodel: modelToRecreate,\n\t\t// prevent inner history from being created\n\t\toptions: { edit: false, ...options, useHistory: false },\n\t} );\n\n\treturn newContainer;\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getContainer } from './get-container';\nimport { moveElement, type MoveElementParams } from './move-element';\nimport { type V1Element } from './types';\n\ntype MoveElementsParams = {\n\tmoves: MoveElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonMoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype OriginalPosition = {\n\telementId: string;\n\toriginalContainerId: string;\n\toriginalIndex: number;\n};\n\ntype MovedElement = {\n\telementId: string;\n\toriginalPosition: OriginalPosition;\n\tmove: MoveElementParams;\n\telement: V1Element;\n};\n\ntype MovedElementsResult = {\n\tmovedElements: MovedElement[];\n};\n\nexport type { MoveElementsParams, MovedElement, MovedElementsResult };\n\nexport const moveElements = ( {\n\tmoves: movesToMake,\n\ttitle,\n\tsubtitle = __( 'Elements moved', 'elementor' ),\n\tonMoveElements,\n\tonRestoreElements,\n}: MoveElementsParams ): MovedElementsResult => {\n\tconst undoableMove = undoable(\n\t\t{\n\t\t\tdo: ( { moves }: { moves: MoveElementParams[] } ): MovedElementsResult => {\n\t\t\t\tconst movedElements: MovedElement[] = [];\n\t\t\t\t// Call onMoveElements before moving element to avoid conflicts between commands\n\t\t\t\tonMoveElements?.();\n\t\t\t\tmoves.forEach( ( move ) => {\n\t\t\t\t\tconst { elementId } = move;\n\t\t\t\t\tconst sourceContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( ! sourceContainer ) {\n\t\t\t\t\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalContainerId = sourceContainer.parent?.id || '';\n\t\t\t\t\tconst originalIndex = sourceContainer.parent?.children?.indexOf( sourceContainer ) ?? -1;\n\n\t\t\t\t\tconst originalPosition: OriginalPosition = {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalContainerId,\n\t\t\t\t\t\toriginalIndex,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tmovedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements };\n\t\t\t},\n\t\t\tundo: ( _: { moves: MoveElementParams[] }, { movedElements }: MovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t[ ...movedElements ].reverse().forEach( ( { originalPosition } ) => {\n\t\t\t\t\tconst { elementId, originalContainerId, originalIndex } = originalPosition;\n\n\t\t\t\t\tmoveElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\ttargetContainerId: originalContainerId,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\tat: originalIndex >= 0 ? originalIndex : undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { moves: MoveElementParams[] },\n\t\t\t\t{ movedElements }: MovedElementsResult\n\t\t\t): MovedElementsResult => {\n\t\t\t\tconst newMovedElements: MovedElement[] = [];\n\t\t\t\tonMoveElements?.();\n\n\t\t\t\tmovedElements.forEach( ( { move, originalPosition } ) => {\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewMovedElements.push( {\n\t\t\t\t\t\telementId: move.elementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements: newMovedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableMove( { moves: movesToMake } );\n};\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps } from './types';\n\ntype RemoveNestedElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonRemoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype RemovedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tparent: V1Element | null;\n\tat: number;\n};\n\ntype RemovedElementsResult = {\n\telementIds: string[];\n\tremovedElements: RemovedElement[];\n};\n\nexport type { RemoveNestedElementsParams, RemovedElement, RemovedElementsResult };\n\nexport const removeElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item removed', 'elementor' ),\n\tonRemoveElements,\n\tonRestoreElements,\n}: RemoveNestedElementsParams ): RemovedElementsResult => {\n\tconst undoableRemove = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsParam }: { elementIds: string[] } ): RemovedElementsResult => {\n\t\t\t\tconst removedElements: RemovedElement[] = [];\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tconst model = container.model.toJSON();\n\t\t\t\t\t\tconst parent = container.parent;\n\n\t\t\t\t\t\tconst at = container.view?._index ?? 0;\n\n\t\t\t\t\t\tremovedElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tparent: parent ?? null,\n\t\t\t\t\t\t\tat,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\t// Call onRemoveElements before deleting elements to avoid conflicts between commands\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: elementIdsParam, removedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { removedElements }: RemovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t// Restore elements in reverse order to maintain proper hierarchy\n\t\t\t\t[ ...removedElements ].reverse().forEach( ( { model, parent, at } ) => {\n\t\t\t\t\tif ( parent && model ) {\n\t\t\t\t\t\tcreateElement( {\n\t\t\t\t\t\t\tcontainerId: parent.id,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\toptions: { useHistory: false, at },\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ elementIds: originalElementIds, removedElements }: RemovedElementsResult\n\t\t\t): RemovedElementsResult => {\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\toriginalElementIds.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: originalElementIds, removedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableRemove( { elementIds } );\n};\n","import { ElementIndexNotFoundError, ElementNotFoundError, ElementParentNotFoundError } from '../errors';\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementData, type V1ElementModelProps } from './types';\n\ntype ElementLocation = {\n\tcontainerId: string;\n\tindex: number;\n};\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1ElementData;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = async ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst { containerId, index } = getNewElementContainer( currentElement, newElement );\n\n\tconst newElementInstance = createElement( {\n\t\tcontainerId,\n\t\tmodel: newElement,\n\t\toptions: { at: index, useHistory: withHistory },\n\t} );\n\n\tawait deleteElement( { elementId: currentElement.id, options: { useHistory: withHistory } } );\n\n\treturn newElementInstance;\n};\n\nfunction getNewElementContainer(\n\tcurrentElement: V1ElementData,\n\tnewElement: Omit< V1ElementModelProps, 'id' >\n): ElementLocation {\n\tconst currentElementContainer = getContainer( currentElement.id );\n\n\tif ( ! currentElementContainer ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst { parent } = currentElementContainer;\n\n\tif ( ! parent ) {\n\t\tthrow new ElementParentNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst elementIndex = currentElementContainer.view?._index ?? 0;\n\n\tif ( elementIndex === -1 ) {\n\t\tthrow new ElementIndexNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tlet container = { containerId: parent.id, index: elementIndex };\n\n\t// If the element is at document top level and is a widget, wrap it with an empty container\n\tif ( parent.id === 'document' && newElement.elType === 'widget' ) {\n\t\tcontainer = createWrapperForWidget( parent.id, elementIndex );\n\t}\n\n\treturn container;\n}\n\nconst DEFAULT_CONTAINER_TYPE = 'e-flexbox';\n\nfunction createWrapperForWidget( parentId: string, elementIndex: number ): ElementLocation {\n\tconst container = createElement( {\n\t\tcontainerId: parentId,\n\t\tmodel: { elType: DEFAULT_CONTAINER_TYPE },\n\t\toptions: { at: elementIndex, useHistory: false },\n\t} );\n\n\treturn { containerId: container.id, index: 0 };\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementEditorSettings = ( {\n\telementId,\n\tsettings,\n}: {\n\telementId: string;\n\tsettings: V1ElementModelProps[ 'editor_settings' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\tconst editorSettings = element.model.get( 'editor_settings' ) ?? {};\n\n\telement.model.set( 'editor_settings', { ...editorSettings, ...settings } );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n","import { type Props } from '@elementor/editor-props';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport type UpdateElementSettingsArgs = {\n\tid: ElementID;\n\tprops: Props;\n\twithHistory?: boolean;\n};\n\nexport const updateElementSettings = ( { id, props, withHistory = true }: UpdateElementSettingsArgs ) => {\n\tconst container = getContainer( id );\n\n\tconst args = {\n\t\tcontainer,\n\t\tsettings: { ...props },\n\t};\n\n\tif ( withHistory ) {\n\t\trunCommandSync( 'document/elements/settings', args );\n\t} else {\n\t\trunCommandSync( 'document/elements/set-settings', args, { internal: true } );\n\t}\n};\n","import { type LinkPropValue } from '@elementor/editor-props';\n\nimport { getContainer } from './sync/get-container';\nimport { getElementSetting } from './sync/get-element-setting';\n\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\n\ntype LinkValue = LinkPropValue[ 'value' ];\n\nexport type LinkInLinkRestriction =\n\t| {\n\t\t\tshouldRestrict: true;\n\t\t\treason: 'ancestor' | 'descendant';\n\t\t\telementId: string | null;\n\t }\n\t| {\n\t\t\tshouldRestrict: false;\n\t\t\treason?: never;\n\t\t\telementId?: never;\n\t };\n\nexport function getLinkInLinkRestriction( elementId: string, resolvedValue?: LinkValue ): LinkInLinkRestriction {\n\tconst anchoredDescendantId = getAnchoredDescendantId( elementId );\n\n\tif ( anchoredDescendantId ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId: anchoredDescendantId,\n\t\t};\n\t}\n\n\tconst hasInlineLink = checkForInlineLink( elementId, resolvedValue );\n\n\tif ( hasInlineLink ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId,\n\t\t};\n\t}\n\n\tconst ancestor = getAnchoredAncestorId( elementId );\n\n\tif ( ancestor ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'ancestor',\n\t\t\telementId: ancestor,\n\t\t};\n\t}\n\n\treturn {\n\t\tshouldRestrict: false,\n\t};\n}\n\nexport function getAnchoredDescendantId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn null;\n\t}\n\n\tfor ( const childAnchorElement of Array.from( element.querySelectorAll( ANCHOR_SELECTOR ) ) ) {\n\t\t// Ensure the child is not in the current element's scope\n\t\tconst childElementId = findElementIdOf( childAnchorElement );\n\n\t\tif ( childElementId !== elementId ) {\n\t\t\treturn childElementId;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getAnchoredAncestorId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element || element.parentElement === null ) {\n\t\treturn null;\n\t}\n\n\tconst parentAnchor = element.parentElement.closest( ANCHOR_SELECTOR );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId ) as HTMLElement;\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of Array.from( element.children ) as HTMLElement[] ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( child.matches( ANCHOR_SELECTOR ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( doesElementContainAnchor( child ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findElementIdOf( element: Element ): string | null {\n\treturn element.closest< HTMLElement >( '[data-id]' )?.dataset.id || null;\n}\n\nfunction checkForInlineLink( elementId: string, resolvedValue?: LinkValue ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn false;\n\t}\n\n\tconst linkSetting = resolvedValue ?? getElementSetting< LinkPropValue >( elementId, 'link' )?.value;\n\n\tif ( linkSetting?.destination ) {\n\t\treturn false;\n\t}\n\n\treturn element.querySelector( ANCHOR_SELECTOR ) !== null;\n}\n\nfunction getElementDOM( id: string ) {\n\ttry {\n\t\treturn getContainer( id )?.view?.el || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n","import { commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport const ELEMENT_STYLE_CHANGE_EVENT = 'elementor/editor-v2/editor-elements/style';\n\nexport const styleRerenderEvents = [\n\tcommandEndEvent( 'document/elements/create' ),\n\tcommandEndEvent( 'document/elements/duplicate' ),\n\tcommandEndEvent( 'document/elements/import' ),\n\tcommandEndEvent( 'document/elements/paste' ),\n\twindowEvent( ELEMENT_STYLE_CHANGE_EVENT ),\n];\n","import { classesPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tgenerateId,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type CreateElementStyleArgs = {\n\tstyleId?: StyleDefinitionID;\n\telementId: ElementID;\n\tclassesProp: string;\n\tlabel: string;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n\tadditionalVariants?: StyleDefinitionVariant[];\n};\n\nexport function createElementStyle( {\n\tstyleId,\n\telementId,\n\tclassesProp,\n\tlabel,\n\tmeta,\n\tprops,\n\tcustom_css: customCss = null,\n\tadditionalVariants = [],\n}: CreateElementStyleArgs ): string {\n\tlet id = styleId;\n\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\tid ??= generateId( `e-${ elementId }-`, Object.keys( styles ) );\n\n\t\tconst variants = [ { meta, props, custom_css: customCss }, ...additionalVariants ];\n\n\t\tstyles[ id ] = {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} satisfies StyleDefinition;\n\n\t\taddStyleToClassesProp( elementId, classesProp, id );\n\n\t\treturn styles;\n\t} );\n\n\treturn id as string;\n}\n\nfunction addStyleToClassesProp( elementId: ElementID, classesProp: string, styleId: string ) {\n\tconst base = getElementSetting( elementId, classesProp );\n\n\tconst classesPropValue = classesPropTypeUtil.create(\n\t\t( prev ) => {\n\t\t\treturn [ ...( prev ?? [] ), styleId ];\n\t\t},\n\t\t{ base }\n\t);\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\t[ classesProp ]: classesPropValue,\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n\nexport function shouldCreateNewLocalStyle< T >(\n\tpayload: { styleId: StyleDefinition[ 'id' ] | null; provider: T | null } | null\n) {\n\treturn ! payload?.styleId && ! payload?.provider;\n}\n","import { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionsMap } from '@elementor/editor-styles';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { ElementNotFoundError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { type V1Element } from '../sync/types';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { ELEMENT_STYLE_CHANGE_EVENT } from './consts';\n\ntype Mutator = ( styles: StyleDefinitionsMap ) => StyleDefinitionsMap;\n\nexport function mutateElementStyles( elementId: ElementID, mutator: Mutator ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId } } );\n\t}\n\n\tconst oldIds = Object.keys( container.model.get( 'styles' ) ?? {} );\n\n\tconst styles = mutateStyles( container, mutator );\n\n\tconst newIds = Object.keys( styles );\n\n\tclearRemovedClasses( container, {\n\t\toldIds,\n\t\tnewIds,\n\t} );\n\n\tnotifyChanges();\n\n\treturn styles;\n}\n\nfunction mutateStyles( container: V1Element, mutator: Mutator ) {\n\tconst styles: StyleDefinitionsMap = structuredClone( container.model.get( 'styles' ) ) ?? {};\n\n\tconst entries = Object.entries( mutator( styles ) )\n\t\t.map( ( [ styleId, style ] ) => {\n\t\t\tstyle.variants = removeEmptyVariants( style );\n\n\t\t\treturn [ styleId, style ] as const;\n\t\t} )\n\t\t.filter( ( [ , style ] ) => {\n\t\t\treturn ! isStyleEmpty( style );\n\t\t} );\n\n\tconst mutatedStyles = Object.fromEntries( entries );\n\n\tcontainer.model.set( 'styles', mutatedStyles );\n\n\treturn mutatedStyles;\n}\n\nfunction removeEmptyVariants( style: StyleDefinition ) {\n\treturn style.variants.filter(\n\t\t( { props, custom_css: customCss } ) => Object.keys( props ).length > 0 || customCss?.raw\n\t);\n}\n\nfunction isStyleEmpty( style: StyleDefinition ) {\n\treturn style.variants.length === 0;\n}\n\nfunction clearRemovedClasses( container: V1Element, { oldIds, newIds }: { oldIds: string[]; newIds: string[] } ) {\n\tconst removedIds = oldIds.filter( ( id ) => ! newIds.includes( id ) );\n\tconst classesProps = structuredClone( getClassesProps( container ) );\n\n\tclassesProps.forEach( ( [ , prop ] ) => {\n\t\tprop.value = prop.value.filter( ( value ) => ! removedIds.includes( value ) );\n\t} );\n\n\tupdateElementSettings( {\n\t\tid: container.id,\n\t\tprops: Object.fromEntries( classesProps ),\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getClassesProps( container: V1Element ) {\n\treturn Object.entries( container.settings.toJSON() ).filter( ( prop ): prop is [ string, ClassesPropValue ] => {\n\t\tconst [ , value ] = prop;\n\n\t\treturn classesPropTypeUtil.isValid( value );\n\t} );\n}\n\nfunction notifyChanges() {\n\tdispatchChangeEvent();\n\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n}\n\nfunction dispatchChangeEvent() {\n\twindow.dispatchEvent( new CustomEvent( ELEMENT_STYLE_CHANGE_EVENT ) );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport function deleteElementStyle( elementId: ElementID, styleId: StyleDefinitionID ) {\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\t// The object is deep cloned so mutating it is fine.\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete styles[ styleId ];\n\n\t\treturn styles;\n\t} );\n}\n","import { mergeProps } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { StyleNotFoundError } from '../errors';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type UpdateElementStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n};\n\nexport function updateElementStyle( args: UpdateElementStyleArgs ) {\n\tmutateElementStyles( args.elementId, ( styles ) => {\n\t\tconst style = styles[ args.styleId ];\n\n\t\tif ( ! style ) {\n\t\t\tthrow new StyleNotFoundError( { context: { styleId: args.styleId } } );\n\t\t}\n\n\t\tconst variant = getVariantByMeta( style, args.meta );\n\t\tconst customCss = ( 'custom_css' in args ? args.custom_css : variant?.custom_css ) ?? null;\n\n\t\tif ( variant ) {\n\t\t\tvariant.props = mergeProps( variant.props, args.props );\n\t\t\tvariant.custom_css = customCss?.raw ? customCss : null;\n\t\t} else {\n\t\t\tstyle.variants.push( { meta: args.meta, props: args.props, custom_css: customCss } );\n\t\t}\n\n\t\treturn styles;\n\t} );\n}\n","import { useState } from 'react';\nimport { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementInteractions } from '../sync/get-element-interactions';\nimport { type ElementInteractions } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport const useElementInteractions = ( elementId: ElementID ) => {\n\tconst [ interactions, setInteractions ] = useState< ElementInteractions >( () => {\n\t\tconst initial = getElementInteractions( elementId );\n\n\t\treturn initial ?? { version: 1, items: [] };\n\t} );\n\n\tuseListenTo(\n\t\twindowEvent( 'elementor/element/update_interactions' ),\n\t\t() => {\n\t\t\tconst newInteractions = getElementInteractions( elementId );\n\t\t\tsetInteractions( newInteractions ?? { version: 1, items: [] } );\n\t\t},\n\t\t[ elementId ]\n\t);\n\n\treturn interactions;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { type ElementInteractions } from './types';\n\nexport function getElementInteractions( elementId: ElementID ): ElementInteractions | undefined {\n\tconst container = getContainer( elementId );\n\n\tconst interactions = container?.model?.get( 'interactions' );\n\n\tif ( typeof interactions === 'string' ) {\n\t\treturn JSON.parse( interactions ) as ElementInteractions;\n\t}\n\n\treturn interactions;\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementInteractions = ( {\n\telementId,\n\tinteractions,\n}: {\n\telementId: string;\n\tinteractions: V1ElementModelProps[ 'interactions' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\telement.model.set( 'interactions', interactions );\n\n\twindow.dispatchEvent( new CustomEvent( 'elementor/element/update_interactions' ) );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nexport const playElementInteractions = ( elementId: string, interactionId: string ) => {\n\twindow.top?.dispatchEvent(\n\t\tnew CustomEvent( 'atomic/play_interactions', { detail: { elementId, interactionId } } )\n\t);\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n"],"mappings":"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","names":["useListenTo","useListenTo","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","runCommand","runCommand","runCommandSync","runCommandSync","runCommandSync","runCommandSync","undoable","__","__","undoable","undoable","__","__","undoable","undoable","__","__","undoable","runCommandSync","runCommandSync","runCommandSync","runCommandSync","commandEndEvent","windowEvent","classesPropTypeUtil","runCommandSync","runCommandSync","classesPropTypeUtil","useListenTo","windowEvent","useListenTo","windowEvent","runCommandSync","setDocumentModifiedStatus","runCommandSync"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-elements",
|
|
3
3
|
"description": "This package contains the elements model for the Elementor editor",
|
|
4
|
-
"version": "4.0.0-
|
|
4
|
+
"version": "4.0.0-532",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Elementor Team",
|
|
7
7
|
"homepage": "https://elementor.com/",
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
"dev": "tsup --config=../../tsup.dev.ts"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@elementor/editor-mcp": "4.0.0-
|
|
44
|
-
"@elementor/editor-props": "4.0.0-
|
|
45
|
-
"@elementor/editor-styles": "4.0.0-
|
|
46
|
-
"@elementor/editor-v1-adapters": "4.0.0-
|
|
47
|
-
"@elementor/schema": "4.0.0-
|
|
48
|
-
"@elementor/utils": "4.0.0-
|
|
43
|
+
"@elementor/editor-mcp": "4.0.0-532",
|
|
44
|
+
"@elementor/editor-props": "4.0.0-532",
|
|
45
|
+
"@elementor/editor-styles": "4.0.0-532",
|
|
46
|
+
"@elementor/editor-v1-adapters": "4.0.0-532",
|
|
47
|
+
"@elementor/schema": "4.0.0-532",
|
|
48
|
+
"@elementor/utils": "4.0.0-532",
|
|
49
49
|
"@wordpress/i18n": "^3.1.0"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';
|
|
2
2
|
|
|
3
3
|
import { getContainer } from '../sync/get-container';
|
|
4
|
+
import { findChildRecursive, getElementChildren, type ModelResult } from '../sync/get-model';
|
|
5
|
+
import { type V1ElementEditorSettingsProps } from '../sync/types';
|
|
4
6
|
import { type ElementID } from '../types';
|
|
5
7
|
|
|
6
8
|
export type ElementModel = {
|
|
7
9
|
id: string;
|
|
10
|
+
editorSettings: V1ElementEditorSettingsProps;
|
|
8
11
|
};
|
|
9
12
|
|
|
10
13
|
export type ElementChildren = Record< string, ElementModel[] >;
|
|
11
14
|
|
|
15
|
+
function toElementModel( { model }: ModelResult ): ElementModel {
|
|
16
|
+
return {
|
|
17
|
+
id: model.get( 'id' ) as string,
|
|
18
|
+
editorSettings: model.get( 'editor_settings' ) ?? {},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
12
22
|
export function useElementChildren< T extends ElementChildren >(
|
|
13
23
|
elementId: ElementID,
|
|
14
24
|
childrenTypes: Record< string, string >
|
|
@@ -23,17 +33,23 @@ export function useElementChildren< T extends ElementChildren >(
|
|
|
23
33
|
],
|
|
24
34
|
() => {
|
|
25
35
|
const container = getContainer( elementId );
|
|
36
|
+
const model = container?.model;
|
|
37
|
+
|
|
38
|
+
if ( ! model ) {
|
|
39
|
+
return {} as ElementChildren;
|
|
40
|
+
}
|
|
26
41
|
|
|
27
42
|
const elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {
|
|
28
|
-
const parent =
|
|
29
|
-
|
|
30
|
-
)
|
|
43
|
+
const parent = findChildRecursive( model, ( m ) => m.get( 'elType' ) === parentType );
|
|
44
|
+
|
|
45
|
+
if ( ! parent ) {
|
|
46
|
+
acc[ childType ] = [];
|
|
47
|
+
return acc;
|
|
48
|
+
}
|
|
31
49
|
|
|
32
|
-
const children = parent
|
|
50
|
+
const children = getElementChildren( parent.model, ( m ) => m.get( 'elType' ) === childType );
|
|
33
51
|
|
|
34
|
-
acc[ childType ] = children
|
|
35
|
-
.filter( ( { model } ) => model.get( 'elType' ) === childType )
|
|
36
|
-
.map( ( { id } ) => ( { id } ) );
|
|
52
|
+
acc[ childType ] = children.map( toElementModel );
|
|
37
53
|
|
|
38
54
|
return acc;
|
|
39
55
|
}, {} as ElementChildren );
|
package/src/index.ts
CHANGED
|
@@ -31,6 +31,12 @@ export { getElementSetting, getElementSettings } from './sync/get-element-settin
|
|
|
31
31
|
export { getElementStyles } from './sync/get-element-styles';
|
|
32
32
|
export { getElementType } from './sync/get-element-type';
|
|
33
33
|
export { getAllDescendants } from './sync/get-all-descendants';
|
|
34
|
+
export {
|
|
35
|
+
getModel,
|
|
36
|
+
findChildRecursive,
|
|
37
|
+
getElementChildren as getElementChildrenWithFallback,
|
|
38
|
+
type ModelResult,
|
|
39
|
+
} from './sync/get-model';
|
|
34
40
|
export { getElements } from './sync/get-elements';
|
|
35
41
|
export { getSelectedElements } from './sync/get-selected-elements';
|
|
36
42
|
export { getWidgetsCache } from './sync/get-widgets-cache';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type ExtendedWindow, type V1Element } from './types';
|
|
2
|
+
|
|
3
|
+
type V1Model = V1Element[ 'model' ];
|
|
4
|
+
|
|
5
|
+
export type ModelResult = {
|
|
6
|
+
model: V1Model;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export function getModel( id: string, parentModel?: V1Model ): ModelResult | null {
|
|
10
|
+
const extendedWindow = window as unknown as ExtendedWindow;
|
|
11
|
+
const container = extendedWindow.elementor?.getContainer?.( id ) ?? null;
|
|
12
|
+
|
|
13
|
+
if ( container ) {
|
|
14
|
+
return { model: container.model };
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if ( parentModel ) {
|
|
18
|
+
const childModels = parentModel.get( 'elements' ) ?? [];
|
|
19
|
+
const model = childModels.find( ( m ) => m.get( 'id' ) === id );
|
|
20
|
+
|
|
21
|
+
if ( model ) {
|
|
22
|
+
return { model };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function findChildRecursive( model: V1Model, predicate: ( model: V1Model ) => boolean ): ModelResult | null {
|
|
30
|
+
const childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];
|
|
31
|
+
|
|
32
|
+
for ( const childModel of childModels ) {
|
|
33
|
+
if ( predicate( childModel ) ) {
|
|
34
|
+
return { model: childModel };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const found = findChildRecursive( childModel, predicate );
|
|
38
|
+
|
|
39
|
+
if ( found ) {
|
|
40
|
+
return found;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function getElementChildren( model: V1Model, predicate?: ( model: V1Model ) => boolean ): ModelResult[] {
|
|
48
|
+
const childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];
|
|
49
|
+
|
|
50
|
+
return childModels
|
|
51
|
+
.filter( ( childModel ) => ! predicate || predicate( childModel ) )
|
|
52
|
+
.map( ( childModel ) => ( { model: childModel } ) );
|
|
53
|
+
}
|