@elementor/editor-elements 3.33.0-271 → 3.33.0-273
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 +125 -122
- package/dist/index.d.ts +125 -122
- package/dist/index.js +478 -469
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +486 -477
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +35 -35
- package/src/sync/get-widgets-cache.ts +4 -3
- package/src/sync/move-elements.ts +11 -0
- package/src/sync/remove-elements.ts +9 -9
- package/src/sync/types.ts +2 -2
package/dist/index.js
CHANGED
|
@@ -70,7 +70,7 @@ __export(index_exports, {
|
|
|
70
70
|
});
|
|
71
71
|
module.exports = __toCommonJS(index_exports);
|
|
72
72
|
|
|
73
|
-
// src/hooks/use-element-
|
|
73
|
+
// src/hooks/use-element-children.ts
|
|
74
74
|
var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
|
|
75
75
|
|
|
76
76
|
// src/sync/get-container.ts
|
|
@@ -88,6 +88,55 @@ var selectElement = (elementId) => {
|
|
|
88
88
|
}
|
|
89
89
|
};
|
|
90
90
|
|
|
91
|
+
// src/hooks/use-element-children.ts
|
|
92
|
+
function useElementChildren(elementId, childrenTypes) {
|
|
93
|
+
return (0, import_editor_v1_adapters2.__privateUseListenTo)(
|
|
94
|
+
[
|
|
95
|
+
(0, import_editor_v1_adapters2.v1ReadyEvent)(),
|
|
96
|
+
(0, import_editor_v1_adapters2.commandEndEvent)("document/elements/create"),
|
|
97
|
+
(0, import_editor_v1_adapters2.commandEndEvent)("document/elements/delete"),
|
|
98
|
+
(0, import_editor_v1_adapters2.commandEndEvent)("document/elements/update"),
|
|
99
|
+
(0, import_editor_v1_adapters2.commandEndEvent)("document/elements/set-settings")
|
|
100
|
+
],
|
|
101
|
+
() => {
|
|
102
|
+
const container = getContainer(elementId);
|
|
103
|
+
const elementChildren = childrenTypes.reduce((acc, type) => {
|
|
104
|
+
acc[type] = [];
|
|
105
|
+
return acc;
|
|
106
|
+
}, {});
|
|
107
|
+
container?.children?.forEachRecursive?.(({ model, id }) => {
|
|
108
|
+
const elType = model.get("elType");
|
|
109
|
+
if (elType && elType in elementChildren) {
|
|
110
|
+
elementChildren[elType].push({ id });
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
return elementChildren;
|
|
114
|
+
},
|
|
115
|
+
[elementId]
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// src/hooks/use-element-editor-settings.ts
|
|
120
|
+
var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
|
|
121
|
+
|
|
122
|
+
// src/sync/get-element-editor-settings.ts
|
|
123
|
+
function getElementEditorSettings(elementId) {
|
|
124
|
+
const container = getContainer(elementId);
|
|
125
|
+
return container?.model.get("editor_settings") ?? {};
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// src/hooks/use-element-editor-settings.ts
|
|
129
|
+
var useElementEditorSettings = (elementId) => {
|
|
130
|
+
return (0, import_editor_v1_adapters3.__privateUseListenTo)(
|
|
131
|
+
(0, import_editor_v1_adapters3.windowEvent)("elementor/element/update_editor_settings"),
|
|
132
|
+
() => getElementEditorSettings(elementId),
|
|
133
|
+
[elementId]
|
|
134
|
+
);
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
// src/hooks/use-element-setting.ts
|
|
138
|
+
var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
|
|
139
|
+
|
|
91
140
|
// src/sync/get-element-setting.ts
|
|
92
141
|
var getElementSetting = (elementId, settingKey) => {
|
|
93
142
|
const container = getContainer(elementId);
|
|
@@ -99,15 +148,15 @@ var getElementSettings = (elementId, settingKey) => {
|
|
|
99
148
|
|
|
100
149
|
// src/hooks/use-element-setting.ts
|
|
101
150
|
var useElementSetting = (elementId, settingKey) => {
|
|
102
|
-
return (0,
|
|
103
|
-
(0,
|
|
151
|
+
return (0, import_editor_v1_adapters4.__privateUseListenTo)(
|
|
152
|
+
(0, import_editor_v1_adapters4.commandEndEvent)("document/elements/set-settings"),
|
|
104
153
|
() => getElementSetting(elementId, settingKey),
|
|
105
154
|
[elementId, settingKey]
|
|
106
155
|
);
|
|
107
156
|
};
|
|
108
157
|
var useElementSettings = (elementId, settingKeys) => {
|
|
109
|
-
return (0,
|
|
110
|
-
(0,
|
|
158
|
+
return (0, import_editor_v1_adapters4.__privateUseListenTo)(
|
|
159
|
+
(0, import_editor_v1_adapters4.commandEndEvent)("document/elements/set-settings"),
|
|
111
160
|
() => settingKeys.reduce((settings, key) => {
|
|
112
161
|
const value = getElementSetting(elementId, key);
|
|
113
162
|
if (value !== null) {
|
|
@@ -119,8 +168,28 @@ var useElementSettings = (elementId, settingKeys) => {
|
|
|
119
168
|
);
|
|
120
169
|
};
|
|
121
170
|
|
|
171
|
+
// src/hooks/use-parent-element.ts
|
|
172
|
+
var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
|
|
173
|
+
function useParentElement(elementId) {
|
|
174
|
+
return (0, import_editor_v1_adapters5.__privateUseListenTo)(
|
|
175
|
+
[(0, import_editor_v1_adapters5.commandEndEvent)("document/elements/create")],
|
|
176
|
+
() => {
|
|
177
|
+
if (!elementId) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
const extendedWindow = window;
|
|
181
|
+
const element = extendedWindow?.elementor?.getContainer?.(elementId);
|
|
182
|
+
if (!element) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
return element.parent;
|
|
186
|
+
},
|
|
187
|
+
[elementId]
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
|
|
122
191
|
// src/hooks/use-selected-element.ts
|
|
123
|
-
var
|
|
192
|
+
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
|
|
124
193
|
|
|
125
194
|
// src/sync/get-widgets-cache.ts
|
|
126
195
|
function getWidgetsCache() {
|
|
@@ -169,12 +238,12 @@ function getSelectedElements() {
|
|
|
169
238
|
|
|
170
239
|
// src/hooks/use-selected-element.ts
|
|
171
240
|
function useSelectedElement() {
|
|
172
|
-
const elements = (0,
|
|
241
|
+
const elements = (0, import_editor_v1_adapters6.__privateUseListenTo)(
|
|
173
242
|
[
|
|
174
|
-
(0,
|
|
175
|
-
(0,
|
|
176
|
-
(0,
|
|
177
|
-
(0,
|
|
243
|
+
(0, import_editor_v1_adapters6.commandEndEvent)("document/elements/select"),
|
|
244
|
+
(0, import_editor_v1_adapters6.commandEndEvent)("document/elements/deselect"),
|
|
245
|
+
(0, import_editor_v1_adapters6.commandEndEvent)("document/elements/select-all"),
|
|
246
|
+
(0, import_editor_v1_adapters6.commandEndEvent)("document/elements/deselect-all")
|
|
178
247
|
],
|
|
179
248
|
getSelectedElements
|
|
180
249
|
);
|
|
@@ -186,73 +255,6 @@ function useSelectedElement() {
|
|
|
186
255
|
return { element, elementType };
|
|
187
256
|
}
|
|
188
257
|
|
|
189
|
-
// src/hooks/use-parent-element.ts
|
|
190
|
-
var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
|
|
191
|
-
function useParentElement(elementId) {
|
|
192
|
-
return (0, import_editor_v1_adapters4.__privateUseListenTo)(
|
|
193
|
-
[(0, import_editor_v1_adapters4.commandEndEvent)("document/elements/create")],
|
|
194
|
-
() => {
|
|
195
|
-
if (!elementId) {
|
|
196
|
-
return null;
|
|
197
|
-
}
|
|
198
|
-
const extendedWindow = window;
|
|
199
|
-
const element = extendedWindow?.elementor?.getContainer?.(elementId);
|
|
200
|
-
if (!element) {
|
|
201
|
-
return null;
|
|
202
|
-
}
|
|
203
|
-
return element.parent;
|
|
204
|
-
},
|
|
205
|
-
[elementId]
|
|
206
|
-
);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// src/hooks/use-element-children.ts
|
|
210
|
-
var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
|
|
211
|
-
function useElementChildren(elementId, childrenTypes) {
|
|
212
|
-
return (0, import_editor_v1_adapters5.__privateUseListenTo)(
|
|
213
|
-
[
|
|
214
|
-
(0, import_editor_v1_adapters5.v1ReadyEvent)(),
|
|
215
|
-
(0, import_editor_v1_adapters5.commandEndEvent)("document/elements/create"),
|
|
216
|
-
(0, import_editor_v1_adapters5.commandEndEvent)("document/elements/delete"),
|
|
217
|
-
(0, import_editor_v1_adapters5.commandEndEvent)("document/elements/update"),
|
|
218
|
-
(0, import_editor_v1_adapters5.commandEndEvent)("document/elements/set-settings")
|
|
219
|
-
],
|
|
220
|
-
() => {
|
|
221
|
-
const container = getContainer(elementId);
|
|
222
|
-
const elementChildren = childrenTypes.reduce((acc, type) => {
|
|
223
|
-
acc[type] = [];
|
|
224
|
-
return acc;
|
|
225
|
-
}, {});
|
|
226
|
-
container?.children?.forEachRecursive?.(({ model, id }) => {
|
|
227
|
-
const elType = model.get("elType");
|
|
228
|
-
if (elType && elType in elementChildren) {
|
|
229
|
-
elementChildren[elType].push({ id });
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
return elementChildren;
|
|
233
|
-
},
|
|
234
|
-
[elementId]
|
|
235
|
-
);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// src/hooks/use-element-editor-settings.ts
|
|
239
|
-
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
|
|
240
|
-
|
|
241
|
-
// src/sync/get-element-editor-settings.ts
|
|
242
|
-
function getElementEditorSettings(elementId) {
|
|
243
|
-
const container = getContainer(elementId);
|
|
244
|
-
return container?.model.get("editor_settings") ?? {};
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// src/hooks/use-element-editor-settings.ts
|
|
248
|
-
var useElementEditorSettings = (elementId) => {
|
|
249
|
-
return (0, import_editor_v1_adapters6.__privateUseListenTo)(
|
|
250
|
-
(0, import_editor_v1_adapters6.windowEvent)("elementor/element/update_editor_settings"),
|
|
251
|
-
() => getElementEditorSettings(elementId),
|
|
252
|
-
[elementId]
|
|
253
|
-
);
|
|
254
|
-
};
|
|
255
|
-
|
|
256
258
|
// src/sync/create-element.ts
|
|
257
259
|
var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
|
|
258
260
|
function createElement({ containerId, model, options }) {
|
|
@@ -267,26 +269,12 @@ function createElement({ containerId, model, options }) {
|
|
|
267
269
|
});
|
|
268
270
|
}
|
|
269
271
|
|
|
270
|
-
// src/sync/
|
|
271
|
-
var
|
|
272
|
-
var
|
|
273
|
-
elementId,
|
|
274
|
-
settings
|
|
275
|
-
}) => {
|
|
276
|
-
const element = getContainer(elementId);
|
|
277
|
-
if (!element) {
|
|
278
|
-
throw new Error(`Element with id ${elementId} not found`);
|
|
279
|
-
}
|
|
280
|
-
const editorSettings = element.model.get("editor_settings") ?? {};
|
|
281
|
-
element.model.set("editor_settings", { ...editorSettings, ...settings });
|
|
282
|
-
setDocumentModifiedStatus(true);
|
|
283
|
-
};
|
|
284
|
-
function setDocumentModifiedStatus(status) {
|
|
285
|
-
(0, import_editor_v1_adapters8.__privateRunCommandSync)("document/save/set-is-modified", { status }, { internal: true });
|
|
286
|
-
}
|
|
272
|
+
// src/sync/create-elements.ts
|
|
273
|
+
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
274
|
+
var import_i18n = require("@wordpress/i18n");
|
|
287
275
|
|
|
288
276
|
// src/sync/delete-element.ts
|
|
289
|
-
var
|
|
277
|
+
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
|
|
290
278
|
function deleteElement({
|
|
291
279
|
elementId,
|
|
292
280
|
options = {}
|
|
@@ -295,113 +283,90 @@ function deleteElement({
|
|
|
295
283
|
if (!container) {
|
|
296
284
|
throw new Error(`Element with ID "${elementId}" not found`);
|
|
297
285
|
}
|
|
298
|
-
return (0,
|
|
286
|
+
return (0, import_editor_v1_adapters8.__privateRunCommand)("document/elements/delete", {
|
|
299
287
|
container,
|
|
300
288
|
options
|
|
301
289
|
});
|
|
302
290
|
}
|
|
303
291
|
|
|
304
|
-
// src/sync/
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
const target = getContainer(targetContainerId);
|
|
308
|
-
if (!container) {
|
|
309
|
-
throw new Error(`Element with ID "${elementId}" not found`);
|
|
310
|
-
}
|
|
311
|
-
if (!target) {
|
|
312
|
-
throw new Error(`Target container with ID "${targetContainerId}" not found`);
|
|
313
|
-
}
|
|
314
|
-
const modelToRecreate = container.model.toJSON();
|
|
315
|
-
deleteElement({
|
|
316
|
-
elementId,
|
|
317
|
-
// prevent inner history from being created
|
|
318
|
-
options: { ...options, useHistory: false }
|
|
319
|
-
});
|
|
320
|
-
const newContainer = createElement({
|
|
321
|
-
containerId: targetContainerId,
|
|
322
|
-
model: modelToRecreate,
|
|
323
|
-
// prevent inner history from being created
|
|
324
|
-
options: { edit: false, ...options, useHistory: false }
|
|
325
|
-
});
|
|
326
|
-
return newContainer;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
// src/sync/move-elements.ts
|
|
330
|
-
var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
|
|
331
|
-
var import_i18n = require("@wordpress/i18n");
|
|
332
|
-
var moveElements = ({
|
|
333
|
-
moves: movesToMake,
|
|
292
|
+
// src/sync/create-elements.ts
|
|
293
|
+
var createElements = ({
|
|
294
|
+
elements,
|
|
334
295
|
title,
|
|
335
|
-
subtitle = (0, import_i18n.__)("
|
|
296
|
+
subtitle = (0, import_i18n.__)("Item added", "elementor")
|
|
336
297
|
}) => {
|
|
337
|
-
const
|
|
298
|
+
const undoableCreate = (0, import_editor_v1_adapters9.undoable)(
|
|
338
299
|
{
|
|
339
|
-
do: ({
|
|
340
|
-
const
|
|
341
|
-
|
|
342
|
-
const {
|
|
343
|
-
const
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
}
|
|
347
|
-
const originalContainerId = sourceContainer.parent?.id || "";
|
|
348
|
-
const originalIndex = sourceContainer.parent?.children?.indexOf(sourceContainer) ?? -1;
|
|
349
|
-
const originalPosition = {
|
|
350
|
-
elementId,
|
|
351
|
-
originalContainerId,
|
|
352
|
-
originalIndex
|
|
353
|
-
};
|
|
354
|
-
const element = moveElement({
|
|
355
|
-
...move,
|
|
356
|
-
options: { ...move.options, useHistory: false }
|
|
300
|
+
do: ({ elements: elementsParam }) => {
|
|
301
|
+
const createdElements = [];
|
|
302
|
+
elementsParam.forEach((createParams) => {
|
|
303
|
+
const { options, ...elementParams } = createParams;
|
|
304
|
+
const element = createElement({
|
|
305
|
+
...elementParams,
|
|
306
|
+
options: { ...options, useHistory: false }
|
|
357
307
|
});
|
|
358
|
-
|
|
308
|
+
const elementId = element.id;
|
|
309
|
+
createdElements.push({
|
|
359
310
|
elementId,
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
311
|
+
model: element.model?.toJSON() || {},
|
|
312
|
+
createParams: {
|
|
313
|
+
...createParams
|
|
314
|
+
}
|
|
363
315
|
});
|
|
364
316
|
});
|
|
365
|
-
return {
|
|
317
|
+
return { createdElements };
|
|
366
318
|
},
|
|
367
|
-
undo: (_, {
|
|
368
|
-
[...
|
|
369
|
-
|
|
370
|
-
moveElement({
|
|
319
|
+
undo: (_, { createdElements }) => {
|
|
320
|
+
[...createdElements].reverse().forEach(({ elementId }) => {
|
|
321
|
+
deleteElement({
|
|
371
322
|
elementId,
|
|
372
|
-
|
|
373
|
-
options: {
|
|
374
|
-
useHistory: false,
|
|
375
|
-
at: originalIndex >= 0 ? originalIndex : void 0
|
|
376
|
-
}
|
|
323
|
+
options: { useHistory: false }
|
|
377
324
|
});
|
|
378
325
|
});
|
|
379
326
|
},
|
|
380
|
-
redo: (_, {
|
|
381
|
-
const
|
|
382
|
-
|
|
383
|
-
const element =
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
newMovedElements.push({
|
|
388
|
-
elementId: move.elementId,
|
|
389
|
-
originalPosition,
|
|
390
|
-
move,
|
|
391
|
-
element
|
|
327
|
+
redo: (_, { createdElements }) => {
|
|
328
|
+
const newElements = [];
|
|
329
|
+
createdElements.forEach(({ createParams, model }) => {
|
|
330
|
+
const element = createElement({
|
|
331
|
+
containerId: createParams.containerId,
|
|
332
|
+
model,
|
|
333
|
+
options: { ...createParams.options, useHistory: false }
|
|
392
334
|
});
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
335
|
+
const elementId = element.id;
|
|
336
|
+
const container = getContainer(elementId);
|
|
337
|
+
if (container) {
|
|
338
|
+
newElements.push({
|
|
339
|
+
elementId,
|
|
340
|
+
model: container.model.toJSON(),
|
|
341
|
+
createParams
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
return { createdElements: newElements };
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
{
|
|
398
349
|
title,
|
|
399
350
|
subtitle
|
|
400
351
|
}
|
|
401
352
|
);
|
|
402
|
-
return
|
|
353
|
+
return undoableCreate({ elements });
|
|
403
354
|
};
|
|
404
355
|
|
|
356
|
+
// src/sync/drop-element.ts
|
|
357
|
+
var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
|
|
358
|
+
function dropElement({ containerId, model, options }) {
|
|
359
|
+
const container = getContainer(containerId);
|
|
360
|
+
if (!container) {
|
|
361
|
+
throw new Error(`Container with ID "${containerId}" not found`);
|
|
362
|
+
}
|
|
363
|
+
return (0, import_editor_v1_adapters10.__privateRunCommandSync)("preview/drop", {
|
|
364
|
+
container,
|
|
365
|
+
model,
|
|
366
|
+
options
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
|
|
405
370
|
// src/sync/duplicate-element.ts
|
|
406
371
|
function duplicateElement({ elementId, options = {} }) {
|
|
407
372
|
const elementToDuplicate = getContainer(elementId);
|
|
@@ -425,81 +390,15 @@ function duplicateElement({ elementId, options = {} }) {
|
|
|
425
390
|
});
|
|
426
391
|
}
|
|
427
392
|
|
|
428
|
-
// src/sync/
|
|
393
|
+
// src/sync/duplicate-elements.ts
|
|
429
394
|
var import_editor_v1_adapters11 = require("@elementor/editor-v1-adapters");
|
|
430
395
|
var import_i18n2 = require("@wordpress/i18n");
|
|
431
|
-
var createElements = ({
|
|
432
|
-
elements,
|
|
433
|
-
title,
|
|
434
|
-
subtitle = (0, import_i18n2.__)("Item added", "elementor")
|
|
435
|
-
}) => {
|
|
436
|
-
const undoableCreate = (0, import_editor_v1_adapters11.undoable)(
|
|
437
|
-
{
|
|
438
|
-
do: ({ elements: elementsParam }) => {
|
|
439
|
-
const createdElements = [];
|
|
440
|
-
elementsParam.forEach((createParams) => {
|
|
441
|
-
const { options, ...elementParams } = createParams;
|
|
442
|
-
const element = createElement({
|
|
443
|
-
...elementParams,
|
|
444
|
-
options: { ...options, useHistory: false }
|
|
445
|
-
});
|
|
446
|
-
const elementId = element.id;
|
|
447
|
-
createdElements.push({
|
|
448
|
-
elementId,
|
|
449
|
-
model: element.model?.toJSON() || {},
|
|
450
|
-
createParams: {
|
|
451
|
-
...createParams
|
|
452
|
-
}
|
|
453
|
-
});
|
|
454
|
-
});
|
|
455
|
-
return { createdElements };
|
|
456
|
-
},
|
|
457
|
-
undo: (_, { createdElements }) => {
|
|
458
|
-
[...createdElements].reverse().forEach(({ elementId }) => {
|
|
459
|
-
deleteElement({
|
|
460
|
-
elementId,
|
|
461
|
-
options: { useHistory: false }
|
|
462
|
-
});
|
|
463
|
-
});
|
|
464
|
-
},
|
|
465
|
-
redo: (_, { createdElements }) => {
|
|
466
|
-
const newElements = [];
|
|
467
|
-
createdElements.forEach(({ createParams, model }) => {
|
|
468
|
-
const element = createElement({
|
|
469
|
-
containerId: createParams.containerId,
|
|
470
|
-
model,
|
|
471
|
-
options: { ...createParams.options, useHistory: false }
|
|
472
|
-
});
|
|
473
|
-
const elementId = element.id;
|
|
474
|
-
const container = getContainer(elementId);
|
|
475
|
-
if (container) {
|
|
476
|
-
newElements.push({
|
|
477
|
-
elementId,
|
|
478
|
-
model: container.model.toJSON(),
|
|
479
|
-
createParams
|
|
480
|
-
});
|
|
481
|
-
}
|
|
482
|
-
});
|
|
483
|
-
return { createdElements: newElements };
|
|
484
|
-
}
|
|
485
|
-
},
|
|
486
|
-
{
|
|
487
|
-
title,
|
|
488
|
-
subtitle
|
|
489
|
-
}
|
|
490
|
-
);
|
|
491
|
-
return undoableCreate({ elements });
|
|
492
|
-
};
|
|
493
|
-
|
|
494
|
-
// src/sync/duplicate-elements.ts
|
|
495
|
-
var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
|
|
496
|
-
var import_i18n3 = require("@wordpress/i18n");
|
|
497
396
|
var duplicateElements = ({
|
|
498
397
|
elementIds,
|
|
499
398
|
title,
|
|
500
|
-
subtitle = (0,
|
|
399
|
+
subtitle = (0, import_i18n2.__)("Item duplicated", "elementor")
|
|
501
400
|
}) => {
|
|
502
|
-
const undoableDuplicate = (0,
|
|
401
|
+
const undoableDuplicate = (0, import_editor_v1_adapters11.undoable)(
|
|
503
402
|
{
|
|
504
403
|
do: ({ elementIds: elementIdsToDuplicate }) => {
|
|
505
404
|
const duplicatedElements = elementIdsToDuplicate.reduce((acc, elementId) => {
|
|
@@ -564,81 +463,23 @@ var duplicateElements = ({
|
|
|
564
463
|
return undoableDuplicate({ elementIds });
|
|
565
464
|
};
|
|
566
465
|
|
|
567
|
-
// src/sync/
|
|
568
|
-
var
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
elementIds,
|
|
572
|
-
title,
|
|
573
|
-
subtitle = (0, import_i18n4.__)("Item removed", "elementor"),
|
|
574
|
-
onRemoveElements,
|
|
575
|
-
onRestoreElements
|
|
576
|
-
}) => {
|
|
577
|
-
const undoableRemove = (0, import_editor_v1_adapters13.undoable)(
|
|
578
|
-
{
|
|
579
|
-
do: ({ elementIds: elementIdsParam }) => {
|
|
580
|
-
const removedElements = [];
|
|
581
|
-
elementIdsParam.forEach((elementId) => {
|
|
582
|
-
const container = getContainer(elementId);
|
|
583
|
-
if (container) {
|
|
584
|
-
const model = container.model.toJSON();
|
|
585
|
-
const parent = container.parent;
|
|
586
|
-
const at = container.view?._index ?? 0;
|
|
587
|
-
removedElements.push({
|
|
588
|
-
elementId,
|
|
589
|
-
model,
|
|
590
|
-
parent: parent ?? null,
|
|
591
|
-
at
|
|
592
|
-
});
|
|
593
|
-
}
|
|
594
|
-
});
|
|
595
|
-
const results = elementIdsParam.map((elementId) => {
|
|
596
|
-
return deleteElement({
|
|
597
|
-
elementId,
|
|
598
|
-
options: { useHistory: false }
|
|
599
|
-
});
|
|
600
|
-
});
|
|
601
|
-
Promise.all(results).then(() => {
|
|
602
|
-
onRemoveElements?.();
|
|
603
|
-
});
|
|
604
|
-
return { elementIds: elementIdsParam, removedElements };
|
|
605
|
-
},
|
|
606
|
-
undo: (_, { removedElements }) => {
|
|
607
|
-
[...removedElements].reverse().forEach(({ model, parent, at }) => {
|
|
608
|
-
if (parent && model) {
|
|
609
|
-
createElement({
|
|
610
|
-
containerId: parent.id,
|
|
611
|
-
model,
|
|
612
|
-
options: { useHistory: false, at }
|
|
613
|
-
});
|
|
614
|
-
}
|
|
615
|
-
});
|
|
616
|
-
onRestoreElements?.();
|
|
617
|
-
},
|
|
618
|
-
redo: (_, { elementIds: originalElementIds, removedElements }) => {
|
|
619
|
-
originalElementIds.forEach((elementId) => {
|
|
620
|
-
deleteElement({
|
|
621
|
-
elementId,
|
|
622
|
-
options: { useHistory: false }
|
|
623
|
-
});
|
|
624
|
-
});
|
|
625
|
-
onRemoveElements?.();
|
|
626
|
-
return { elementIds: originalElementIds, removedElements };
|
|
627
|
-
}
|
|
628
|
-
},
|
|
629
|
-
{
|
|
630
|
-
title,
|
|
631
|
-
subtitle
|
|
632
|
-
}
|
|
633
|
-
);
|
|
634
|
-
return undoableRemove({ elementIds });
|
|
466
|
+
// src/sync/generate-element-id.ts
|
|
467
|
+
var generateElementId = () => {
|
|
468
|
+
const extendedWindow = window;
|
|
469
|
+
return extendedWindow.elementorCommon?.helpers?.getUniqueId?.() ?? `el-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
635
470
|
};
|
|
636
471
|
|
|
637
|
-
// src/sync/get-
|
|
638
|
-
|
|
639
|
-
const
|
|
640
|
-
return
|
|
641
|
-
}
|
|
472
|
+
// src/sync/get-current-document-container.ts
|
|
473
|
+
function getCurrentDocumentContainer() {
|
|
474
|
+
const extendedWindow = window;
|
|
475
|
+
return extendedWindow.elementor?.documents?.getCurrent?.()?.container ?? null;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
// src/sync/get-current-document-id.ts
|
|
479
|
+
function getCurrentDocumentId() {
|
|
480
|
+
const extendedWindow = window;
|
|
481
|
+
return extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;
|
|
482
|
+
}
|
|
642
483
|
|
|
643
484
|
// src/errors.ts
|
|
644
485
|
var import_utils = require("@elementor/utils");
|
|
@@ -684,11 +525,11 @@ function getElementLabel(elementId) {
|
|
|
684
525
|
return label;
|
|
685
526
|
}
|
|
686
527
|
|
|
687
|
-
// src/sync/get-
|
|
688
|
-
|
|
689
|
-
const
|
|
690
|
-
return
|
|
691
|
-
}
|
|
528
|
+
// src/sync/get-element-styles.ts
|
|
529
|
+
var getElementStyles = (elementID) => {
|
|
530
|
+
const container = getContainer(elementID);
|
|
531
|
+
return container?.model.get("styles") || null;
|
|
532
|
+
};
|
|
692
533
|
|
|
693
534
|
// src/sync/get-elements.ts
|
|
694
535
|
function getElements(root) {
|
|
@@ -702,31 +543,178 @@ function getElements(root) {
|
|
|
702
543
|
return [container, ...children];
|
|
703
544
|
}
|
|
704
545
|
|
|
705
|
-
// src/sync/
|
|
706
|
-
function
|
|
707
|
-
const
|
|
708
|
-
|
|
546
|
+
// src/sync/move-element.ts
|
|
547
|
+
function moveElement({ elementId, targetContainerId, options = {} }) {
|
|
548
|
+
const container = getContainer(elementId);
|
|
549
|
+
const target = getContainer(targetContainerId);
|
|
550
|
+
if (!container) {
|
|
551
|
+
throw new Error(`Element with ID "${elementId}" not found`);
|
|
552
|
+
}
|
|
553
|
+
if (!target) {
|
|
554
|
+
throw new Error(`Target container with ID "${targetContainerId}" not found`);
|
|
555
|
+
}
|
|
556
|
+
const modelToRecreate = container.model.toJSON();
|
|
557
|
+
deleteElement({
|
|
558
|
+
elementId,
|
|
559
|
+
// prevent inner history from being created
|
|
560
|
+
options: { ...options, useHistory: false }
|
|
561
|
+
});
|
|
562
|
+
const newContainer = createElement({
|
|
563
|
+
containerId: targetContainerId,
|
|
564
|
+
model: modelToRecreate,
|
|
565
|
+
// prevent inner history from being created
|
|
566
|
+
options: { edit: false, ...options, useHistory: false }
|
|
567
|
+
});
|
|
568
|
+
return newContainer;
|
|
709
569
|
}
|
|
710
570
|
|
|
711
|
-
// src/sync/
|
|
712
|
-
var
|
|
713
|
-
var
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
571
|
+
// src/sync/move-elements.ts
|
|
572
|
+
var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
|
|
573
|
+
var import_i18n3 = require("@wordpress/i18n");
|
|
574
|
+
var moveElements = ({
|
|
575
|
+
moves: movesToMake,
|
|
576
|
+
title,
|
|
577
|
+
subtitle = (0, import_i18n3.__)("Elements moved", "elementor"),
|
|
578
|
+
onMoveElements,
|
|
579
|
+
onRestoreElements
|
|
580
|
+
}) => {
|
|
581
|
+
const undoableMove = (0, import_editor_v1_adapters12.undoable)(
|
|
582
|
+
{
|
|
583
|
+
do: ({ moves }) => {
|
|
584
|
+
const movedElements = [];
|
|
585
|
+
moves.forEach((move) => {
|
|
586
|
+
const { elementId } = move;
|
|
587
|
+
const sourceContainer = getContainer(elementId);
|
|
588
|
+
if (!sourceContainer) {
|
|
589
|
+
throw new Error(`Element with ID "${elementId}" not found`);
|
|
590
|
+
}
|
|
591
|
+
const originalContainerId = sourceContainer.parent?.id || "";
|
|
592
|
+
const originalIndex = sourceContainer.parent?.children?.indexOf(sourceContainer) ?? -1;
|
|
593
|
+
const originalPosition = {
|
|
594
|
+
elementId,
|
|
595
|
+
originalContainerId,
|
|
596
|
+
originalIndex
|
|
597
|
+
};
|
|
598
|
+
const element = moveElement({
|
|
599
|
+
...move,
|
|
600
|
+
options: { ...move.options, useHistory: false }
|
|
601
|
+
});
|
|
602
|
+
onMoveElements?.();
|
|
603
|
+
movedElements.push({
|
|
604
|
+
elementId,
|
|
605
|
+
originalPosition,
|
|
606
|
+
move,
|
|
607
|
+
element
|
|
608
|
+
});
|
|
609
|
+
});
|
|
610
|
+
return { movedElements };
|
|
611
|
+
},
|
|
612
|
+
undo: (_, { movedElements }) => {
|
|
613
|
+
[...movedElements].reverse().forEach(({ originalPosition }) => {
|
|
614
|
+
const { elementId, originalContainerId, originalIndex } = originalPosition;
|
|
615
|
+
onRestoreElements?.();
|
|
616
|
+
moveElement({
|
|
617
|
+
elementId,
|
|
618
|
+
targetContainerId: originalContainerId,
|
|
619
|
+
options: {
|
|
620
|
+
useHistory: false,
|
|
621
|
+
at: originalIndex >= 0 ? originalIndex : void 0
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
});
|
|
625
|
+
},
|
|
626
|
+
redo: (_, { movedElements }) => {
|
|
627
|
+
const newMovedElements = [];
|
|
628
|
+
movedElements.forEach(({ move, originalPosition }) => {
|
|
629
|
+
const element = moveElement({
|
|
630
|
+
...move,
|
|
631
|
+
options: { ...move.options, useHistory: false }
|
|
632
|
+
});
|
|
633
|
+
onMoveElements?.();
|
|
634
|
+
newMovedElements.push({
|
|
635
|
+
elementId: move.elementId,
|
|
636
|
+
originalPosition,
|
|
637
|
+
move,
|
|
638
|
+
element
|
|
639
|
+
});
|
|
640
|
+
});
|
|
641
|
+
return { movedElements: newMovedElements };
|
|
642
|
+
}
|
|
643
|
+
},
|
|
644
|
+
{
|
|
645
|
+
title,
|
|
646
|
+
subtitle
|
|
647
|
+
}
|
|
648
|
+
);
|
|
649
|
+
return undoableMove({ moves: movesToMake });
|
|
724
650
|
};
|
|
725
651
|
|
|
726
|
-
// src/sync/
|
|
727
|
-
var
|
|
728
|
-
|
|
729
|
-
|
|
652
|
+
// src/sync/remove-elements.ts
|
|
653
|
+
var import_editor_v1_adapters13 = require("@elementor/editor-v1-adapters");
|
|
654
|
+
var import_i18n4 = require("@wordpress/i18n");
|
|
655
|
+
var removeElements = ({
|
|
656
|
+
elementIds,
|
|
657
|
+
title,
|
|
658
|
+
subtitle = (0, import_i18n4.__)("Item removed", "elementor"),
|
|
659
|
+
onRemoveElements,
|
|
660
|
+
onRestoreElements
|
|
661
|
+
}) => {
|
|
662
|
+
const undoableRemove = (0, import_editor_v1_adapters13.undoable)(
|
|
663
|
+
{
|
|
664
|
+
do: ({ elementIds: elementIdsParam }) => {
|
|
665
|
+
const removedElements = [];
|
|
666
|
+
elementIdsParam.forEach((elementId) => {
|
|
667
|
+
const container = getContainer(elementId);
|
|
668
|
+
if (container) {
|
|
669
|
+
const model = container.model.toJSON();
|
|
670
|
+
const parent = container.parent;
|
|
671
|
+
const at = container.view?._index ?? 0;
|
|
672
|
+
removedElements.push({
|
|
673
|
+
elementId,
|
|
674
|
+
model,
|
|
675
|
+
parent: parent ?? null,
|
|
676
|
+
at
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
});
|
|
680
|
+
onRemoveElements?.();
|
|
681
|
+
elementIdsParam.forEach((elementId) => {
|
|
682
|
+
deleteElement({
|
|
683
|
+
elementId,
|
|
684
|
+
options: { useHistory: false }
|
|
685
|
+
});
|
|
686
|
+
});
|
|
687
|
+
return { elementIds: elementIdsParam, removedElements };
|
|
688
|
+
},
|
|
689
|
+
undo: (_, { removedElements }) => {
|
|
690
|
+
onRestoreElements?.();
|
|
691
|
+
[...removedElements].reverse().forEach(({ model, parent, at }) => {
|
|
692
|
+
if (parent && model) {
|
|
693
|
+
createElement({
|
|
694
|
+
containerId: parent.id,
|
|
695
|
+
model,
|
|
696
|
+
options: { useHistory: false, at }
|
|
697
|
+
});
|
|
698
|
+
}
|
|
699
|
+
});
|
|
700
|
+
},
|
|
701
|
+
redo: (_, { elementIds: originalElementIds, removedElements }) => {
|
|
702
|
+
onRemoveElements?.();
|
|
703
|
+
originalElementIds.forEach((elementId) => {
|
|
704
|
+
deleteElement({
|
|
705
|
+
elementId,
|
|
706
|
+
options: { useHistory: false }
|
|
707
|
+
});
|
|
708
|
+
});
|
|
709
|
+
return { elementIds: originalElementIds, removedElements };
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
title,
|
|
714
|
+
subtitle
|
|
715
|
+
}
|
|
716
|
+
);
|
|
717
|
+
return undoableRemove({ elementIds });
|
|
730
718
|
};
|
|
731
719
|
|
|
732
720
|
// src/sync/replace-element.ts
|
|
@@ -768,18 +756,121 @@ function createWrapperForWidget(parentId, elementIndex) {
|
|
|
768
756
|
return { containerId: container.id, index: 0 };
|
|
769
757
|
}
|
|
770
758
|
|
|
771
|
-
// src/sync/
|
|
772
|
-
var
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
759
|
+
// src/sync/update-element-editor-settings.ts
|
|
760
|
+
var import_editor_v1_adapters14 = require("@elementor/editor-v1-adapters");
|
|
761
|
+
var updateElementEditorSettings = ({
|
|
762
|
+
elementId,
|
|
763
|
+
settings
|
|
764
|
+
}) => {
|
|
765
|
+
const element = getContainer(elementId);
|
|
766
|
+
if (!element) {
|
|
767
|
+
throw new Error(`Element with id ${elementId} not found`);
|
|
777
768
|
}
|
|
778
|
-
|
|
769
|
+
const editorSettings = element.model.get("editor_settings") ?? {};
|
|
770
|
+
element.model.set("editor_settings", { ...editorSettings, ...settings });
|
|
771
|
+
setDocumentModifiedStatus(true);
|
|
772
|
+
};
|
|
773
|
+
function setDocumentModifiedStatus(status) {
|
|
774
|
+
(0, import_editor_v1_adapters14.__privateRunCommandSync)("document/save/set-is-modified", { status }, { internal: true });
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
// src/sync/update-element-settings.ts
|
|
778
|
+
var import_editor_v1_adapters15 = require("@elementor/editor-v1-adapters");
|
|
779
|
+
var updateElementSettings = ({ id, props, withHistory = true }) => {
|
|
780
|
+
const container = getContainer(id);
|
|
781
|
+
const args = {
|
|
779
782
|
container,
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
+
settings: { ...props }
|
|
784
|
+
};
|
|
785
|
+
if (withHistory) {
|
|
786
|
+
(0, import_editor_v1_adapters15.__privateRunCommandSync)("document/elements/settings", args);
|
|
787
|
+
} else {
|
|
788
|
+
(0, import_editor_v1_adapters15.__privateRunCommandSync)("document/elements/set-settings", args, { internal: true });
|
|
789
|
+
}
|
|
790
|
+
};
|
|
791
|
+
|
|
792
|
+
// src/link-restriction.ts
|
|
793
|
+
function getLinkInLinkRestriction(elementId) {
|
|
794
|
+
const anchoredDescendantId = getAnchoredDescendantId(elementId);
|
|
795
|
+
if (anchoredDescendantId) {
|
|
796
|
+
return {
|
|
797
|
+
shouldRestrict: true,
|
|
798
|
+
reason: "descendant",
|
|
799
|
+
elementId: anchoredDescendantId
|
|
800
|
+
};
|
|
801
|
+
}
|
|
802
|
+
const ancestor = getAnchoredAncestorId(elementId);
|
|
803
|
+
if (ancestor) {
|
|
804
|
+
return {
|
|
805
|
+
shouldRestrict: true,
|
|
806
|
+
reason: "ancestor",
|
|
807
|
+
elementId: ancestor
|
|
808
|
+
};
|
|
809
|
+
}
|
|
810
|
+
return {
|
|
811
|
+
shouldRestrict: false
|
|
812
|
+
};
|
|
813
|
+
}
|
|
814
|
+
function getAnchoredDescendantId(elementId) {
|
|
815
|
+
const element = getElementDOM(elementId);
|
|
816
|
+
if (!element) {
|
|
817
|
+
return null;
|
|
818
|
+
}
|
|
819
|
+
for (const childAnchorElement of Array.from(element.querySelectorAll("a"))) {
|
|
820
|
+
const childElementId = findElementIdOf(childAnchorElement);
|
|
821
|
+
if (childElementId !== elementId) {
|
|
822
|
+
return childElementId;
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
return null;
|
|
826
|
+
}
|
|
827
|
+
function getAnchoredAncestorId(elementId) {
|
|
828
|
+
const element = getElementDOM(elementId);
|
|
829
|
+
if (!element || element.parentElement === null) {
|
|
830
|
+
return null;
|
|
831
|
+
}
|
|
832
|
+
const parentAnchor = element.parentElement.closest("a");
|
|
833
|
+
return parentAnchor ? findElementIdOf(parentAnchor) : null;
|
|
834
|
+
}
|
|
835
|
+
function isElementAnchored(elementId) {
|
|
836
|
+
const element = getElementDOM(elementId);
|
|
837
|
+
if (!element) {
|
|
838
|
+
return false;
|
|
839
|
+
}
|
|
840
|
+
if (isAnchorTag(element.tagName)) {
|
|
841
|
+
return true;
|
|
842
|
+
}
|
|
843
|
+
return doesElementContainAnchor(element);
|
|
844
|
+
}
|
|
845
|
+
function doesElementContainAnchor(element) {
|
|
846
|
+
for (const child of element.children) {
|
|
847
|
+
if (isElementorElement(child)) {
|
|
848
|
+
continue;
|
|
849
|
+
}
|
|
850
|
+
if (isAnchorTag(child.tagName)) {
|
|
851
|
+
return true;
|
|
852
|
+
}
|
|
853
|
+
if (doesElementContainAnchor(child)) {
|
|
854
|
+
return true;
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
return false;
|
|
858
|
+
}
|
|
859
|
+
function findElementIdOf(element) {
|
|
860
|
+
return element.closest("[data-id]")?.dataset.id || null;
|
|
861
|
+
}
|
|
862
|
+
function getElementDOM(id) {
|
|
863
|
+
try {
|
|
864
|
+
return getContainer(id)?.view?.el || null;
|
|
865
|
+
} catch {
|
|
866
|
+
return null;
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
function isAnchorTag(tagName) {
|
|
870
|
+
return tagName.toLowerCase() === "a";
|
|
871
|
+
}
|
|
872
|
+
function isElementorElement(element) {
|
|
873
|
+
return element.hasAttribute("data-id");
|
|
783
874
|
}
|
|
784
875
|
|
|
785
876
|
// src/styles/consts.ts
|
|
@@ -907,6 +998,14 @@ function shouldCreateNewLocalStyle(payload) {
|
|
|
907
998
|
return !payload?.styleId && !payload?.provider;
|
|
908
999
|
}
|
|
909
1000
|
|
|
1001
|
+
// src/styles/delete-element-style.ts
|
|
1002
|
+
function deleteElementStyle(elementId, styleId) {
|
|
1003
|
+
mutateElementStyles(elementId, (styles) => {
|
|
1004
|
+
delete styles[styleId];
|
|
1005
|
+
return styles;
|
|
1006
|
+
});
|
|
1007
|
+
}
|
|
1008
|
+
|
|
910
1009
|
// src/styles/update-element-style.ts
|
|
911
1010
|
var import_editor_props3 = require("@elementor/editor-props");
|
|
912
1011
|
var import_editor_styles2 = require("@elementor/editor-styles");
|
|
@@ -928,97 +1027,9 @@ function updateElementStyle(args) {
|
|
|
928
1027
|
});
|
|
929
1028
|
}
|
|
930
1029
|
|
|
931
|
-
// src/
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
delete styles[styleId];
|
|
935
|
-
return styles;
|
|
936
|
-
});
|
|
937
|
-
}
|
|
938
|
-
|
|
939
|
-
// src/link-restriction.ts
|
|
940
|
-
function getLinkInLinkRestriction(elementId) {
|
|
941
|
-
const anchoredDescendantId = getAnchoredDescendantId(elementId);
|
|
942
|
-
if (anchoredDescendantId) {
|
|
943
|
-
return {
|
|
944
|
-
shouldRestrict: true,
|
|
945
|
-
reason: "descendant",
|
|
946
|
-
elementId: anchoredDescendantId
|
|
947
|
-
};
|
|
948
|
-
}
|
|
949
|
-
const ancestor = getAnchoredAncestorId(elementId);
|
|
950
|
-
if (ancestor) {
|
|
951
|
-
return {
|
|
952
|
-
shouldRestrict: true,
|
|
953
|
-
reason: "ancestor",
|
|
954
|
-
elementId: ancestor
|
|
955
|
-
};
|
|
956
|
-
}
|
|
957
|
-
return {
|
|
958
|
-
shouldRestrict: false
|
|
959
|
-
};
|
|
960
|
-
}
|
|
961
|
-
function getAnchoredDescendantId(elementId) {
|
|
962
|
-
const element = getElementDOM(elementId);
|
|
963
|
-
if (!element) {
|
|
964
|
-
return null;
|
|
965
|
-
}
|
|
966
|
-
for (const childAnchorElement of Array.from(element.querySelectorAll("a"))) {
|
|
967
|
-
const childElementId = findElementIdOf(childAnchorElement);
|
|
968
|
-
if (childElementId !== elementId) {
|
|
969
|
-
return childElementId;
|
|
970
|
-
}
|
|
971
|
-
}
|
|
972
|
-
return null;
|
|
973
|
-
}
|
|
974
|
-
function getAnchoredAncestorId(elementId) {
|
|
975
|
-
const element = getElementDOM(elementId);
|
|
976
|
-
if (!element || element.parentElement === null) {
|
|
977
|
-
return null;
|
|
978
|
-
}
|
|
979
|
-
const parentAnchor = element.parentElement.closest("a");
|
|
980
|
-
return parentAnchor ? findElementIdOf(parentAnchor) : null;
|
|
981
|
-
}
|
|
982
|
-
function isElementAnchored(elementId) {
|
|
983
|
-
const element = getElementDOM(elementId);
|
|
984
|
-
if (!element) {
|
|
985
|
-
return false;
|
|
986
|
-
}
|
|
987
|
-
if (isAnchorTag(element.tagName)) {
|
|
988
|
-
return true;
|
|
989
|
-
}
|
|
990
|
-
return doesElementContainAnchor(element);
|
|
991
|
-
}
|
|
992
|
-
function doesElementContainAnchor(element) {
|
|
993
|
-
for (const child of element.children) {
|
|
994
|
-
if (isElementorElement(child)) {
|
|
995
|
-
continue;
|
|
996
|
-
}
|
|
997
|
-
if (isAnchorTag(child.tagName)) {
|
|
998
|
-
return true;
|
|
999
|
-
}
|
|
1000
|
-
if (doesElementContainAnchor(child)) {
|
|
1001
|
-
return true;
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
return false;
|
|
1005
|
-
}
|
|
1006
|
-
function findElementIdOf(element) {
|
|
1007
|
-
return element.closest("[data-id]")?.dataset.id || null;
|
|
1008
|
-
}
|
|
1009
|
-
function getElementDOM(id) {
|
|
1010
|
-
try {
|
|
1011
|
-
return getContainer(id)?.view?.el || null;
|
|
1012
|
-
} catch {
|
|
1013
|
-
return null;
|
|
1014
|
-
}
|
|
1015
|
-
}
|
|
1016
|
-
function isAnchorTag(tagName) {
|
|
1017
|
-
return tagName.toLowerCase() === "a";
|
|
1018
|
-
}
|
|
1019
|
-
function isElementorElement(element) {
|
|
1020
|
-
return element.hasAttribute("data-id");
|
|
1021
|
-
}
|
|
1030
|
+
// src/hooks/use-element-interactions.ts
|
|
1031
|
+
var import_react = require("react");
|
|
1032
|
+
var import_editor_v1_adapters18 = require("@elementor/editor-v1-adapters");
|
|
1022
1033
|
|
|
1023
1034
|
// src/sync/get-element-interactions.ts
|
|
1024
1035
|
function getElementInteractions(elementId) {
|
|
@@ -1030,8 +1041,25 @@ function getElementInteractions(elementId) {
|
|
|
1030
1041
|
return JSON.stringify(interactions);
|
|
1031
1042
|
}
|
|
1032
1043
|
|
|
1044
|
+
// src/hooks/use-element-interactions.ts
|
|
1045
|
+
var useElementInteractions = (elementId) => {
|
|
1046
|
+
const [interactions, setInteractions] = (0, import_react.useState)(() => {
|
|
1047
|
+
const initial = getElementInteractions(elementId);
|
|
1048
|
+
return initial;
|
|
1049
|
+
});
|
|
1050
|
+
(0, import_editor_v1_adapters18.__privateUseListenTo)(
|
|
1051
|
+
(0, import_editor_v1_adapters18.windowEvent)("elementor/element/update_interactions"),
|
|
1052
|
+
() => {
|
|
1053
|
+
const newInteractions = getElementInteractions(elementId);
|
|
1054
|
+
setInteractions(newInteractions);
|
|
1055
|
+
},
|
|
1056
|
+
[elementId]
|
|
1057
|
+
);
|
|
1058
|
+
return interactions;
|
|
1059
|
+
};
|
|
1060
|
+
|
|
1033
1061
|
// src/sync/update-element-interactions.ts
|
|
1034
|
-
var
|
|
1062
|
+
var import_editor_v1_adapters19 = require("@elementor/editor-v1-adapters");
|
|
1035
1063
|
var updateElementInteractions = ({
|
|
1036
1064
|
elementId,
|
|
1037
1065
|
interactions
|
|
@@ -1048,28 +1076,9 @@ var playElementInteractions = (elementId) => {
|
|
|
1048
1076
|
window.top?.dispatchEvent(new CustomEvent("atomic/play_interactions", { detail: { elementId } }));
|
|
1049
1077
|
};
|
|
1050
1078
|
function setDocumentModifiedStatus2(status) {
|
|
1051
|
-
(0,
|
|
1079
|
+
(0, import_editor_v1_adapters19.__privateRunCommandSync)("document/save/set-is-modified", { status }, { internal: true });
|
|
1052
1080
|
}
|
|
1053
1081
|
|
|
1054
|
-
// src/hooks/use-element-interactions.ts
|
|
1055
|
-
var import_react = require("react");
|
|
1056
|
-
var import_editor_v1_adapters19 = require("@elementor/editor-v1-adapters");
|
|
1057
|
-
var useElementInteractions = (elementId) => {
|
|
1058
|
-
const [interactions, setInteractions] = (0, import_react.useState)(() => {
|
|
1059
|
-
const initial = getElementInteractions(elementId);
|
|
1060
|
-
return initial;
|
|
1061
|
-
});
|
|
1062
|
-
(0, import_editor_v1_adapters19.__privateUseListenTo)(
|
|
1063
|
-
(0, import_editor_v1_adapters19.windowEvent)("elementor/element/update_interactions"),
|
|
1064
|
-
() => {
|
|
1065
|
-
const newInteractions = getElementInteractions(elementId);
|
|
1066
|
-
setInteractions(newInteractions);
|
|
1067
|
-
},
|
|
1068
|
-
[elementId]
|
|
1069
|
-
);
|
|
1070
|
-
return interactions;
|
|
1071
|
-
};
|
|
1072
|
-
|
|
1073
1082
|
// src/mcp/index.ts
|
|
1074
1083
|
var import_editor_mcp2 = require("@elementor/editor-mcp");
|
|
1075
1084
|
|