@elementor/editor-elements 3.33.0-271 → 3.33.0-272
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 +123 -122
- package/dist/index.d.ts +123 -122
- package/dist/index.js +487 -481
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +476 -470
- 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/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,12 +283,266 @@ 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", {
|
|
287
|
+
container,
|
|
288
|
+
options
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// src/sync/create-elements.ts
|
|
293
|
+
var createElements = ({
|
|
294
|
+
elements,
|
|
295
|
+
title,
|
|
296
|
+
subtitle = (0, import_i18n.__)("Item added", "elementor")
|
|
297
|
+
}) => {
|
|
298
|
+
const undoableCreate = (0, import_editor_v1_adapters9.undoable)(
|
|
299
|
+
{
|
|
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 }
|
|
307
|
+
});
|
|
308
|
+
const elementId = element.id;
|
|
309
|
+
createdElements.push({
|
|
310
|
+
elementId,
|
|
311
|
+
model: element.model?.toJSON() || {},
|
|
312
|
+
createParams: {
|
|
313
|
+
...createParams
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
return { createdElements };
|
|
318
|
+
},
|
|
319
|
+
undo: (_, { createdElements }) => {
|
|
320
|
+
[...createdElements].reverse().forEach(({ elementId }) => {
|
|
321
|
+
deleteElement({
|
|
322
|
+
elementId,
|
|
323
|
+
options: { useHistory: false }
|
|
324
|
+
});
|
|
325
|
+
});
|
|
326
|
+
},
|
|
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 }
|
|
334
|
+
});
|
|
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
|
+
{
|
|
349
|
+
title,
|
|
350
|
+
subtitle
|
|
351
|
+
}
|
|
352
|
+
);
|
|
353
|
+
return undoableCreate({ elements });
|
|
354
|
+
};
|
|
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", {
|
|
299
364
|
container,
|
|
365
|
+
model,
|
|
300
366
|
options
|
|
301
367
|
});
|
|
302
368
|
}
|
|
303
369
|
|
|
370
|
+
// src/sync/duplicate-element.ts
|
|
371
|
+
function duplicateElement({ elementId, options = {} }) {
|
|
372
|
+
const elementToDuplicate = getContainer(elementId);
|
|
373
|
+
if (!elementToDuplicate) {
|
|
374
|
+
throw new Error(`Element with ID "${elementId}" not found`);
|
|
375
|
+
}
|
|
376
|
+
if (!elementToDuplicate.parent) {
|
|
377
|
+
throw new Error(`Element with ID "${elementId}" has no parent container`);
|
|
378
|
+
}
|
|
379
|
+
const parentContainer = elementToDuplicate.parent;
|
|
380
|
+
const elementModel = elementToDuplicate.model.toJSON();
|
|
381
|
+
const currentIndex = elementToDuplicate.view?._index ?? 0;
|
|
382
|
+
const insertPosition = options.clone !== false ? currentIndex + 1 : void 0;
|
|
383
|
+
return createElement({
|
|
384
|
+
containerId: parentContainer.id,
|
|
385
|
+
model: elementModel,
|
|
386
|
+
options: {
|
|
387
|
+
at: insertPosition,
|
|
388
|
+
...options
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// src/sync/duplicate-elements.ts
|
|
394
|
+
var import_editor_v1_adapters11 = require("@elementor/editor-v1-adapters");
|
|
395
|
+
var import_i18n2 = require("@wordpress/i18n");
|
|
396
|
+
var duplicateElements = ({
|
|
397
|
+
elementIds,
|
|
398
|
+
title,
|
|
399
|
+
subtitle = (0, import_i18n2.__)("Item duplicated", "elementor")
|
|
400
|
+
}) => {
|
|
401
|
+
const undoableDuplicate = (0, import_editor_v1_adapters11.undoable)(
|
|
402
|
+
{
|
|
403
|
+
do: ({ elementIds: elementIdsToDuplicate }) => {
|
|
404
|
+
const duplicatedElements = elementIdsToDuplicate.reduce((acc, elementId) => {
|
|
405
|
+
const originalContainer = getContainer(elementId);
|
|
406
|
+
if (originalContainer?.parent) {
|
|
407
|
+
const duplicatedElement = duplicateElement({
|
|
408
|
+
elementId,
|
|
409
|
+
options: { useHistory: false, clone: true }
|
|
410
|
+
});
|
|
411
|
+
acc.push({
|
|
412
|
+
id: duplicatedElement.id,
|
|
413
|
+
model: duplicatedElement.model.toJSON(),
|
|
414
|
+
originalElementId: elementId,
|
|
415
|
+
modelToRestore: duplicatedElement.model.toJSON(),
|
|
416
|
+
parentContainerId: duplicatedElement.parent?.id,
|
|
417
|
+
at: duplicatedElement.view?._index
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
return acc;
|
|
421
|
+
}, []);
|
|
422
|
+
return { duplicatedElements };
|
|
423
|
+
},
|
|
424
|
+
undo: (_, { duplicatedElements }) => {
|
|
425
|
+
[...duplicatedElements].reverse().forEach(({ id }) => {
|
|
426
|
+
deleteElement({
|
|
427
|
+
elementId: id,
|
|
428
|
+
options: { useHistory: false }
|
|
429
|
+
});
|
|
430
|
+
});
|
|
431
|
+
},
|
|
432
|
+
redo: (_, { duplicatedElements: previousElements }) => {
|
|
433
|
+
const duplicatedElements = previousElements.reduce((acc, previousElement) => {
|
|
434
|
+
if (previousElement.modelToRestore && previousElement.parentContainerId) {
|
|
435
|
+
const createdElement = createElement({
|
|
436
|
+
containerId: previousElement.parentContainerId,
|
|
437
|
+
model: previousElement.modelToRestore,
|
|
438
|
+
options: {
|
|
439
|
+
useHistory: false,
|
|
440
|
+
clone: false,
|
|
441
|
+
at: previousElement.at
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
acc.push({
|
|
445
|
+
id: createdElement.id,
|
|
446
|
+
model: createdElement.model.toJSON(),
|
|
447
|
+
originalElementId: previousElement.originalElementId,
|
|
448
|
+
modelToRestore: previousElement.modelToRestore,
|
|
449
|
+
parentContainerId: previousElement.parentContainerId,
|
|
450
|
+
at: previousElement.at
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
return acc;
|
|
454
|
+
}, []);
|
|
455
|
+
return { duplicatedElements };
|
|
456
|
+
}
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
title,
|
|
460
|
+
subtitle
|
|
461
|
+
}
|
|
462
|
+
);
|
|
463
|
+
return undoableDuplicate({ elementIds });
|
|
464
|
+
};
|
|
465
|
+
|
|
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)}`;
|
|
470
|
+
};
|
|
471
|
+
|
|
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
|
+
}
|
|
483
|
+
|
|
484
|
+
// src/errors.ts
|
|
485
|
+
var import_utils = require("@elementor/utils");
|
|
486
|
+
var ElementNotFoundError = (0, import_utils.createError)({
|
|
487
|
+
code: "element_not_found",
|
|
488
|
+
message: "Element not found."
|
|
489
|
+
});
|
|
490
|
+
var StyleNotFoundError = (0, import_utils.createError)({
|
|
491
|
+
code: "style_not_found",
|
|
492
|
+
message: "Style not found."
|
|
493
|
+
});
|
|
494
|
+
var ElementTypeNotExistsError = (0, import_utils.createError)({
|
|
495
|
+
code: "element_type_not_exists",
|
|
496
|
+
message: "Element type does not exist."
|
|
497
|
+
});
|
|
498
|
+
var ElementLabelNotExistsError = (0, import_utils.createError)({
|
|
499
|
+
code: "element_label_not_exists",
|
|
500
|
+
message: "Element label does not exist."
|
|
501
|
+
});
|
|
502
|
+
var ElementParentNotFoundError = (0, import_utils.createError)({
|
|
503
|
+
code: "element_parent_not_found",
|
|
504
|
+
message: "Element parent not found."
|
|
505
|
+
});
|
|
506
|
+
var ElementIndexNotFoundError = (0, import_utils.createError)({
|
|
507
|
+
code: "element_index_not_found",
|
|
508
|
+
message: "Element index not found."
|
|
509
|
+
});
|
|
510
|
+
|
|
511
|
+
// src/sync/get-element-label.ts
|
|
512
|
+
function getElementLabel(elementId) {
|
|
513
|
+
if (!elementId) {
|
|
514
|
+
elementId = getSelectedElements()?.[0]?.id;
|
|
515
|
+
}
|
|
516
|
+
const container = getContainer(elementId);
|
|
517
|
+
const type = container?.model.get("widgetType") || container?.model.get("elType");
|
|
518
|
+
if (!type) {
|
|
519
|
+
throw new ElementTypeNotExistsError({ context: { elementId } });
|
|
520
|
+
}
|
|
521
|
+
const label = getWidgetsCache()?.[type]?.title;
|
|
522
|
+
if (!label) {
|
|
523
|
+
throw new ElementLabelNotExistsError({ context: { elementType: type } });
|
|
524
|
+
}
|
|
525
|
+
return label;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// src/sync/get-element-styles.ts
|
|
529
|
+
var getElementStyles = (elementID) => {
|
|
530
|
+
const container = getContainer(elementID);
|
|
531
|
+
return container?.model.get("styles") || null;
|
|
532
|
+
};
|
|
533
|
+
|
|
534
|
+
// src/sync/get-elements.ts
|
|
535
|
+
function getElements(root) {
|
|
536
|
+
const container = root ? getContainer(root) : getCurrentDocumentContainer();
|
|
537
|
+
if (!container) {
|
|
538
|
+
return [];
|
|
539
|
+
}
|
|
540
|
+
const children = [...container.model.get("elements") ?? []].flatMap(
|
|
541
|
+
(childModel) => getElements(childModel.get("id"))
|
|
542
|
+
);
|
|
543
|
+
return [container, ...children];
|
|
544
|
+
}
|
|
545
|
+
|
|
304
546
|
// src/sync/move-element.ts
|
|
305
547
|
function moveElement({ elementId, targetContainerId, options = {} }) {
|
|
306
548
|
const container = getContainer(elementId);
|
|
@@ -327,14 +569,14 @@ function moveElement({ elementId, targetContainerId, options = {} }) {
|
|
|
327
569
|
}
|
|
328
570
|
|
|
329
571
|
// src/sync/move-elements.ts
|
|
330
|
-
var
|
|
331
|
-
var
|
|
572
|
+
var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
|
|
573
|
+
var import_i18n3 = require("@wordpress/i18n");
|
|
332
574
|
var moveElements = ({
|
|
333
575
|
moves: movesToMake,
|
|
334
576
|
title,
|
|
335
|
-
subtitle = (0,
|
|
577
|
+
subtitle = (0, import_i18n3.__)("Elements moved", "elementor")
|
|
336
578
|
}) => {
|
|
337
|
-
const undoableMove = (0,
|
|
579
|
+
const undoableMove = (0, import_editor_v1_adapters12.undoable)(
|
|
338
580
|
{
|
|
339
581
|
do: ({ moves }) => {
|
|
340
582
|
const movedElements = [];
|
|
@@ -402,168 +644,6 @@ var moveElements = ({
|
|
|
402
644
|
return undoableMove({ moves: movesToMake });
|
|
403
645
|
};
|
|
404
646
|
|
|
405
|
-
// src/sync/duplicate-element.ts
|
|
406
|
-
function duplicateElement({ elementId, options = {} }) {
|
|
407
|
-
const elementToDuplicate = getContainer(elementId);
|
|
408
|
-
if (!elementToDuplicate) {
|
|
409
|
-
throw new Error(`Element with ID "${elementId}" not found`);
|
|
410
|
-
}
|
|
411
|
-
if (!elementToDuplicate.parent) {
|
|
412
|
-
throw new Error(`Element with ID "${elementId}" has no parent container`);
|
|
413
|
-
}
|
|
414
|
-
const parentContainer = elementToDuplicate.parent;
|
|
415
|
-
const elementModel = elementToDuplicate.model.toJSON();
|
|
416
|
-
const currentIndex = elementToDuplicate.view?._index ?? 0;
|
|
417
|
-
const insertPosition = options.clone !== false ? currentIndex + 1 : void 0;
|
|
418
|
-
return createElement({
|
|
419
|
-
containerId: parentContainer.id,
|
|
420
|
-
model: elementModel,
|
|
421
|
-
options: {
|
|
422
|
-
at: insertPosition,
|
|
423
|
-
...options
|
|
424
|
-
}
|
|
425
|
-
});
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
// src/sync/create-elements.ts
|
|
429
|
-
var import_editor_v1_adapters11 = require("@elementor/editor-v1-adapters");
|
|
430
|
-
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
|
-
var duplicateElements = ({
|
|
498
|
-
elementIds,
|
|
499
|
-
title,
|
|
500
|
-
subtitle = (0, import_i18n3.__)("Item duplicated", "elementor")
|
|
501
|
-
}) => {
|
|
502
|
-
const undoableDuplicate = (0, import_editor_v1_adapters12.undoable)(
|
|
503
|
-
{
|
|
504
|
-
do: ({ elementIds: elementIdsToDuplicate }) => {
|
|
505
|
-
const duplicatedElements = elementIdsToDuplicate.reduce((acc, elementId) => {
|
|
506
|
-
const originalContainer = getContainer(elementId);
|
|
507
|
-
if (originalContainer?.parent) {
|
|
508
|
-
const duplicatedElement = duplicateElement({
|
|
509
|
-
elementId,
|
|
510
|
-
options: { useHistory: false, clone: true }
|
|
511
|
-
});
|
|
512
|
-
acc.push({
|
|
513
|
-
id: duplicatedElement.id,
|
|
514
|
-
model: duplicatedElement.model.toJSON(),
|
|
515
|
-
originalElementId: elementId,
|
|
516
|
-
modelToRestore: duplicatedElement.model.toJSON(),
|
|
517
|
-
parentContainerId: duplicatedElement.parent?.id,
|
|
518
|
-
at: duplicatedElement.view?._index
|
|
519
|
-
});
|
|
520
|
-
}
|
|
521
|
-
return acc;
|
|
522
|
-
}, []);
|
|
523
|
-
return { duplicatedElements };
|
|
524
|
-
},
|
|
525
|
-
undo: (_, { duplicatedElements }) => {
|
|
526
|
-
[...duplicatedElements].reverse().forEach(({ id }) => {
|
|
527
|
-
deleteElement({
|
|
528
|
-
elementId: id,
|
|
529
|
-
options: { useHistory: false }
|
|
530
|
-
});
|
|
531
|
-
});
|
|
532
|
-
},
|
|
533
|
-
redo: (_, { duplicatedElements: previousElements }) => {
|
|
534
|
-
const duplicatedElements = previousElements.reduce((acc, previousElement) => {
|
|
535
|
-
if (previousElement.modelToRestore && previousElement.parentContainerId) {
|
|
536
|
-
const createdElement = createElement({
|
|
537
|
-
containerId: previousElement.parentContainerId,
|
|
538
|
-
model: previousElement.modelToRestore,
|
|
539
|
-
options: {
|
|
540
|
-
useHistory: false,
|
|
541
|
-
clone: false,
|
|
542
|
-
at: previousElement.at
|
|
543
|
-
}
|
|
544
|
-
});
|
|
545
|
-
acc.push({
|
|
546
|
-
id: createdElement.id,
|
|
547
|
-
model: createdElement.model.toJSON(),
|
|
548
|
-
originalElementId: previousElement.originalElementId,
|
|
549
|
-
modelToRestore: previousElement.modelToRestore,
|
|
550
|
-
parentContainerId: previousElement.parentContainerId,
|
|
551
|
-
at: previousElement.at
|
|
552
|
-
});
|
|
553
|
-
}
|
|
554
|
-
return acc;
|
|
555
|
-
}, []);
|
|
556
|
-
return { duplicatedElements };
|
|
557
|
-
}
|
|
558
|
-
},
|
|
559
|
-
{
|
|
560
|
-
title,
|
|
561
|
-
subtitle
|
|
562
|
-
}
|
|
563
|
-
);
|
|
564
|
-
return undoableDuplicate({ elementIds });
|
|
565
|
-
};
|
|
566
|
-
|
|
567
647
|
// src/sync/remove-elements.ts
|
|
568
648
|
var import_editor_v1_adapters13 = require("@elementor/editor-v1-adapters");
|
|
569
649
|
var import_i18n4 = require("@wordpress/i18n");
|
|
@@ -631,102 +711,7 @@ var removeElements = ({
|
|
|
631
711
|
subtitle
|
|
632
712
|
}
|
|
633
713
|
);
|
|
634
|
-
return undoableRemove({ elementIds });
|
|
635
|
-
};
|
|
636
|
-
|
|
637
|
-
// src/sync/get-element-styles.ts
|
|
638
|
-
var getElementStyles = (elementID) => {
|
|
639
|
-
const container = getContainer(elementID);
|
|
640
|
-
return container?.model.get("styles") || null;
|
|
641
|
-
};
|
|
642
|
-
|
|
643
|
-
// src/errors.ts
|
|
644
|
-
var import_utils = require("@elementor/utils");
|
|
645
|
-
var ElementNotFoundError = (0, import_utils.createError)({
|
|
646
|
-
code: "element_not_found",
|
|
647
|
-
message: "Element not found."
|
|
648
|
-
});
|
|
649
|
-
var StyleNotFoundError = (0, import_utils.createError)({
|
|
650
|
-
code: "style_not_found",
|
|
651
|
-
message: "Style not found."
|
|
652
|
-
});
|
|
653
|
-
var ElementTypeNotExistsError = (0, import_utils.createError)({
|
|
654
|
-
code: "element_type_not_exists",
|
|
655
|
-
message: "Element type does not exist."
|
|
656
|
-
});
|
|
657
|
-
var ElementLabelNotExistsError = (0, import_utils.createError)({
|
|
658
|
-
code: "element_label_not_exists",
|
|
659
|
-
message: "Element label does not exist."
|
|
660
|
-
});
|
|
661
|
-
var ElementParentNotFoundError = (0, import_utils.createError)({
|
|
662
|
-
code: "element_parent_not_found",
|
|
663
|
-
message: "Element parent not found."
|
|
664
|
-
});
|
|
665
|
-
var ElementIndexNotFoundError = (0, import_utils.createError)({
|
|
666
|
-
code: "element_index_not_found",
|
|
667
|
-
message: "Element index not found."
|
|
668
|
-
});
|
|
669
|
-
|
|
670
|
-
// src/sync/get-element-label.ts
|
|
671
|
-
function getElementLabel(elementId) {
|
|
672
|
-
if (!elementId) {
|
|
673
|
-
elementId = getSelectedElements()?.[0]?.id;
|
|
674
|
-
}
|
|
675
|
-
const container = getContainer(elementId);
|
|
676
|
-
const type = container?.model.get("widgetType") || container?.model.get("elType");
|
|
677
|
-
if (!type) {
|
|
678
|
-
throw new ElementTypeNotExistsError({ context: { elementId } });
|
|
679
|
-
}
|
|
680
|
-
const label = getWidgetsCache()?.[type]?.title;
|
|
681
|
-
if (!label) {
|
|
682
|
-
throw new ElementLabelNotExistsError({ context: { elementType: type } });
|
|
683
|
-
}
|
|
684
|
-
return label;
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
// src/sync/get-current-document-container.ts
|
|
688
|
-
function getCurrentDocumentContainer() {
|
|
689
|
-
const extendedWindow = window;
|
|
690
|
-
return extendedWindow.elementor?.documents?.getCurrent?.()?.container ?? null;
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
// src/sync/get-elements.ts
|
|
694
|
-
function getElements(root) {
|
|
695
|
-
const container = root ? getContainer(root) : getCurrentDocumentContainer();
|
|
696
|
-
if (!container) {
|
|
697
|
-
return [];
|
|
698
|
-
}
|
|
699
|
-
const children = [...container.model.get("elements") ?? []].flatMap(
|
|
700
|
-
(childModel) => getElements(childModel.get("id"))
|
|
701
|
-
);
|
|
702
|
-
return [container, ...children];
|
|
703
|
-
}
|
|
704
|
-
|
|
705
|
-
// src/sync/get-current-document-id.ts
|
|
706
|
-
function getCurrentDocumentId() {
|
|
707
|
-
const extendedWindow = window;
|
|
708
|
-
return extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;
|
|
709
|
-
}
|
|
710
|
-
|
|
711
|
-
// src/sync/update-element-settings.ts
|
|
712
|
-
var import_editor_v1_adapters14 = require("@elementor/editor-v1-adapters");
|
|
713
|
-
var updateElementSettings = ({ id, props, withHistory = true }) => {
|
|
714
|
-
const container = getContainer(id);
|
|
715
|
-
const args = {
|
|
716
|
-
container,
|
|
717
|
-
settings: { ...props }
|
|
718
|
-
};
|
|
719
|
-
if (withHistory) {
|
|
720
|
-
(0, import_editor_v1_adapters14.__privateRunCommandSync)("document/elements/settings", args);
|
|
721
|
-
} else {
|
|
722
|
-
(0, import_editor_v1_adapters14.__privateRunCommandSync)("document/elements/set-settings", args, { internal: true });
|
|
723
|
-
}
|
|
724
|
-
};
|
|
725
|
-
|
|
726
|
-
// src/sync/generate-element-id.ts
|
|
727
|
-
var generateElementId = () => {
|
|
728
|
-
const extendedWindow = window;
|
|
729
|
-
return extendedWindow.elementorCommon?.helpers?.getUniqueId?.() ?? `el-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
714
|
+
return undoableRemove({ elementIds });
|
|
730
715
|
};
|
|
731
716
|
|
|
732
717
|
// src/sync/replace-element.ts
|
|
@@ -768,18 +753,121 @@ function createWrapperForWidget(parentId, elementIndex) {
|
|
|
768
753
|
return { containerId: container.id, index: 0 };
|
|
769
754
|
}
|
|
770
755
|
|
|
771
|
-
// src/sync/
|
|
772
|
-
var
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
756
|
+
// src/sync/update-element-editor-settings.ts
|
|
757
|
+
var import_editor_v1_adapters14 = require("@elementor/editor-v1-adapters");
|
|
758
|
+
var updateElementEditorSettings = ({
|
|
759
|
+
elementId,
|
|
760
|
+
settings
|
|
761
|
+
}) => {
|
|
762
|
+
const element = getContainer(elementId);
|
|
763
|
+
if (!element) {
|
|
764
|
+
throw new Error(`Element with id ${elementId} not found`);
|
|
777
765
|
}
|
|
778
|
-
|
|
766
|
+
const editorSettings = element.model.get("editor_settings") ?? {};
|
|
767
|
+
element.model.set("editor_settings", { ...editorSettings, ...settings });
|
|
768
|
+
setDocumentModifiedStatus(true);
|
|
769
|
+
};
|
|
770
|
+
function setDocumentModifiedStatus(status) {
|
|
771
|
+
(0, import_editor_v1_adapters14.__privateRunCommandSync)("document/save/set-is-modified", { status }, { internal: true });
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
// src/sync/update-element-settings.ts
|
|
775
|
+
var import_editor_v1_adapters15 = require("@elementor/editor-v1-adapters");
|
|
776
|
+
var updateElementSettings = ({ id, props, withHistory = true }) => {
|
|
777
|
+
const container = getContainer(id);
|
|
778
|
+
const args = {
|
|
779
779
|
container,
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
780
|
+
settings: { ...props }
|
|
781
|
+
};
|
|
782
|
+
if (withHistory) {
|
|
783
|
+
(0, import_editor_v1_adapters15.__privateRunCommandSync)("document/elements/settings", args);
|
|
784
|
+
} else {
|
|
785
|
+
(0, import_editor_v1_adapters15.__privateRunCommandSync)("document/elements/set-settings", args, { internal: true });
|
|
786
|
+
}
|
|
787
|
+
};
|
|
788
|
+
|
|
789
|
+
// src/link-restriction.ts
|
|
790
|
+
function getLinkInLinkRestriction(elementId) {
|
|
791
|
+
const anchoredDescendantId = getAnchoredDescendantId(elementId);
|
|
792
|
+
if (anchoredDescendantId) {
|
|
793
|
+
return {
|
|
794
|
+
shouldRestrict: true,
|
|
795
|
+
reason: "descendant",
|
|
796
|
+
elementId: anchoredDescendantId
|
|
797
|
+
};
|
|
798
|
+
}
|
|
799
|
+
const ancestor = getAnchoredAncestorId(elementId);
|
|
800
|
+
if (ancestor) {
|
|
801
|
+
return {
|
|
802
|
+
shouldRestrict: true,
|
|
803
|
+
reason: "ancestor",
|
|
804
|
+
elementId: ancestor
|
|
805
|
+
};
|
|
806
|
+
}
|
|
807
|
+
return {
|
|
808
|
+
shouldRestrict: false
|
|
809
|
+
};
|
|
810
|
+
}
|
|
811
|
+
function getAnchoredDescendantId(elementId) {
|
|
812
|
+
const element = getElementDOM(elementId);
|
|
813
|
+
if (!element) {
|
|
814
|
+
return null;
|
|
815
|
+
}
|
|
816
|
+
for (const childAnchorElement of Array.from(element.querySelectorAll("a"))) {
|
|
817
|
+
const childElementId = findElementIdOf(childAnchorElement);
|
|
818
|
+
if (childElementId !== elementId) {
|
|
819
|
+
return childElementId;
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
return null;
|
|
823
|
+
}
|
|
824
|
+
function getAnchoredAncestorId(elementId) {
|
|
825
|
+
const element = getElementDOM(elementId);
|
|
826
|
+
if (!element || element.parentElement === null) {
|
|
827
|
+
return null;
|
|
828
|
+
}
|
|
829
|
+
const parentAnchor = element.parentElement.closest("a");
|
|
830
|
+
return parentAnchor ? findElementIdOf(parentAnchor) : null;
|
|
831
|
+
}
|
|
832
|
+
function isElementAnchored(elementId) {
|
|
833
|
+
const element = getElementDOM(elementId);
|
|
834
|
+
if (!element) {
|
|
835
|
+
return false;
|
|
836
|
+
}
|
|
837
|
+
if (isAnchorTag(element.tagName)) {
|
|
838
|
+
return true;
|
|
839
|
+
}
|
|
840
|
+
return doesElementContainAnchor(element);
|
|
841
|
+
}
|
|
842
|
+
function doesElementContainAnchor(element) {
|
|
843
|
+
for (const child of element.children) {
|
|
844
|
+
if (isElementorElement(child)) {
|
|
845
|
+
continue;
|
|
846
|
+
}
|
|
847
|
+
if (isAnchorTag(child.tagName)) {
|
|
848
|
+
return true;
|
|
849
|
+
}
|
|
850
|
+
if (doesElementContainAnchor(child)) {
|
|
851
|
+
return true;
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
return false;
|
|
855
|
+
}
|
|
856
|
+
function findElementIdOf(element) {
|
|
857
|
+
return element.closest("[data-id]")?.dataset.id || null;
|
|
858
|
+
}
|
|
859
|
+
function getElementDOM(id) {
|
|
860
|
+
try {
|
|
861
|
+
return getContainer(id)?.view?.el || null;
|
|
862
|
+
} catch {
|
|
863
|
+
return null;
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
function isAnchorTag(tagName) {
|
|
867
|
+
return tagName.toLowerCase() === "a";
|
|
868
|
+
}
|
|
869
|
+
function isElementorElement(element) {
|
|
870
|
+
return element.hasAttribute("data-id");
|
|
783
871
|
}
|
|
784
872
|
|
|
785
873
|
// src/styles/consts.ts
|
|
@@ -907,6 +995,14 @@ function shouldCreateNewLocalStyle(payload) {
|
|
|
907
995
|
return !payload?.styleId && !payload?.provider;
|
|
908
996
|
}
|
|
909
997
|
|
|
998
|
+
// src/styles/delete-element-style.ts
|
|
999
|
+
function deleteElementStyle(elementId, styleId) {
|
|
1000
|
+
mutateElementStyles(elementId, (styles) => {
|
|
1001
|
+
delete styles[styleId];
|
|
1002
|
+
return styles;
|
|
1003
|
+
});
|
|
1004
|
+
}
|
|
1005
|
+
|
|
910
1006
|
// src/styles/update-element-style.ts
|
|
911
1007
|
var import_editor_props3 = require("@elementor/editor-props");
|
|
912
1008
|
var import_editor_styles2 = require("@elementor/editor-styles");
|
|
@@ -928,97 +1024,9 @@ function updateElementStyle(args) {
|
|
|
928
1024
|
});
|
|
929
1025
|
}
|
|
930
1026
|
|
|
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
|
-
}
|
|
1027
|
+
// src/hooks/use-element-interactions.ts
|
|
1028
|
+
var import_react = require("react");
|
|
1029
|
+
var import_editor_v1_adapters18 = require("@elementor/editor-v1-adapters");
|
|
1022
1030
|
|
|
1023
1031
|
// src/sync/get-element-interactions.ts
|
|
1024
1032
|
function getElementInteractions(elementId) {
|
|
@@ -1030,8 +1038,25 @@ function getElementInteractions(elementId) {
|
|
|
1030
1038
|
return JSON.stringify(interactions);
|
|
1031
1039
|
}
|
|
1032
1040
|
|
|
1041
|
+
// src/hooks/use-element-interactions.ts
|
|
1042
|
+
var useElementInteractions = (elementId) => {
|
|
1043
|
+
const [interactions, setInteractions] = (0, import_react.useState)(() => {
|
|
1044
|
+
const initial = getElementInteractions(elementId);
|
|
1045
|
+
return initial;
|
|
1046
|
+
});
|
|
1047
|
+
(0, import_editor_v1_adapters18.__privateUseListenTo)(
|
|
1048
|
+
(0, import_editor_v1_adapters18.windowEvent)("elementor/element/update_interactions"),
|
|
1049
|
+
() => {
|
|
1050
|
+
const newInteractions = getElementInteractions(elementId);
|
|
1051
|
+
setInteractions(newInteractions);
|
|
1052
|
+
},
|
|
1053
|
+
[elementId]
|
|
1054
|
+
);
|
|
1055
|
+
return interactions;
|
|
1056
|
+
};
|
|
1057
|
+
|
|
1033
1058
|
// src/sync/update-element-interactions.ts
|
|
1034
|
-
var
|
|
1059
|
+
var import_editor_v1_adapters19 = require("@elementor/editor-v1-adapters");
|
|
1035
1060
|
var updateElementInteractions = ({
|
|
1036
1061
|
elementId,
|
|
1037
1062
|
interactions
|
|
@@ -1048,28 +1073,9 @@ var playElementInteractions = (elementId) => {
|
|
|
1048
1073
|
window.top?.dispatchEvent(new CustomEvent("atomic/play_interactions", { detail: { elementId } }));
|
|
1049
1074
|
};
|
|
1050
1075
|
function setDocumentModifiedStatus2(status) {
|
|
1051
|
-
(0,
|
|
1076
|
+
(0, import_editor_v1_adapters19.__privateRunCommandSync)("document/save/set-is-modified", { status }, { internal: true });
|
|
1052
1077
|
}
|
|
1053
1078
|
|
|
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
1079
|
// src/mcp/index.ts
|
|
1074
1080
|
var import_editor_mcp2 = require("@elementor/editor-mcp");
|
|
1075
1081
|
|