@elementor/editor-elements 3.33.0-111 → 3.33.0-113

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 CHANGED
@@ -63,6 +63,10 @@ type V1ElementModelProps = {
63
63
  styles?: Record<StyleDefinitionID, StyleDefinition>;
64
64
  elements?: V1Model<V1ElementModelProps>[];
65
65
  settings?: V1ElementSettingsProps;
66
+ editor_settings?: V1ElementEditorSettingsProps;
67
+ };
68
+ type V1ElementEditorSettingsProps = {
69
+ title?: string;
66
70
  };
67
71
  type V1ElementSettingsProps = Record<string, PropValue>;
68
72
  type V1ElementConfig = {
@@ -106,6 +110,8 @@ type ElementModel = {
106
110
  type ElementChildren = Record<string, ElementModel[]>;
107
111
  declare function useElementChildren<T extends ElementChildren>(elementId: ElementID, childrenTypes: (keyof T & string)[]): T;
108
112
 
113
+ declare const useElementEditorSettings: (elementId: ElementID) => V1ElementEditorSettingsProps;
114
+
109
115
  type Options$4 = {
110
116
  useHistory?: boolean;
111
117
  at?: number;
@@ -121,6 +127,11 @@ type CreateElementParams = {
121
127
  };
122
128
  declare function createElement({ containerId, model, options }: CreateElementParams): V1Element;
123
129
 
130
+ declare const updateElementEditorSettings: ({ elementId, settings, }: {
131
+ elementId: string;
132
+ settings: V1ElementModelProps["editor_settings"];
133
+ }) => void;
134
+
124
135
  type Options$3 = {
125
136
  useHistory?: boolean;
126
137
  at?: number;
@@ -324,4 +335,4 @@ declare function getAnchoredDescendantId(elementId: string): string | null;
324
335
  declare function getAnchoredAncestorId(elementId: string): string | null;
325
336
  declare function isElementAnchored(elementId: string): boolean;
326
337
 
327
- export { 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 ElementID, type ElementType, type LinkInLinkRestriction, type MoveElementParams, type MoveElementsParams, type MovedElement, type MovedElementsResult, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementModelProps, type V1ElementSettingsProps, createElement, createElementStyle, createElements, deleteElement, deleteElementStyle, dropElement, duplicateElement, duplicateElements, generateElementId, getAnchoredAncestorId, getAnchoredDescendantId, getContainer, getCurrentDocumentContainer, getCurrentDocumentId, getElementLabel, getElementSetting, getElementSettings, getElementStyles, getElements, getLinkInLinkRestriction, getSelectedElements, getWidgetsCache, isElementAnchored, moveElement, moveElements, removeElements, replaceElement, selectElement, shouldCreateNewLocalStyle, styleRerenderEvents, updateElementSettings, updateElementStyle, useElementChildren, useElementSetting, useElementSettings, useElementType, useParentElement, useSelectedElement };
338
+ export { 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 ElementID, type ElementType, type LinkInLinkRestriction, type MoveElementParams, type MoveElementsParams, type MovedElement, type MovedElementsResult, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementModelProps, type V1ElementSettingsProps, createElement, createElementStyle, createElements, deleteElement, deleteElementStyle, dropElement, duplicateElement, duplicateElements, generateElementId, getAnchoredAncestorId, getAnchoredDescendantId, getContainer, getCurrentDocumentContainer, getCurrentDocumentId, getElementLabel, getElementSetting, getElementSettings, getElementStyles, getElements, getLinkInLinkRestriction, getSelectedElements, getWidgetsCache, isElementAnchored, moveElement, moveElements, removeElements, replaceElement, selectElement, shouldCreateNewLocalStyle, styleRerenderEvents, updateElementEditorSettings, updateElementSettings, updateElementStyle, useElementChildren, useElementEditorSettings, useElementSetting, useElementSettings, useElementType, useParentElement, useSelectedElement };
package/dist/index.d.ts CHANGED
@@ -63,6 +63,10 @@ type V1ElementModelProps = {
63
63
  styles?: Record<StyleDefinitionID, StyleDefinition>;
64
64
  elements?: V1Model<V1ElementModelProps>[];
65
65
  settings?: V1ElementSettingsProps;
66
+ editor_settings?: V1ElementEditorSettingsProps;
67
+ };
68
+ type V1ElementEditorSettingsProps = {
69
+ title?: string;
66
70
  };
67
71
  type V1ElementSettingsProps = Record<string, PropValue>;
68
72
  type V1ElementConfig = {
@@ -106,6 +110,8 @@ type ElementModel = {
106
110
  type ElementChildren = Record<string, ElementModel[]>;
107
111
  declare function useElementChildren<T extends ElementChildren>(elementId: ElementID, childrenTypes: (keyof T & string)[]): T;
108
112
 
113
+ declare const useElementEditorSettings: (elementId: ElementID) => V1ElementEditorSettingsProps;
114
+
109
115
  type Options$4 = {
110
116
  useHistory?: boolean;
111
117
  at?: number;
@@ -121,6 +127,11 @@ type CreateElementParams = {
121
127
  };
122
128
  declare function createElement({ containerId, model, options }: CreateElementParams): V1Element;
123
129
 
130
+ declare const updateElementEditorSettings: ({ elementId, settings, }: {
131
+ elementId: string;
132
+ settings: V1ElementModelProps["editor_settings"];
133
+ }) => void;
134
+
124
135
  type Options$3 = {
125
136
  useHistory?: boolean;
126
137
  at?: number;
@@ -324,4 +335,4 @@ declare function getAnchoredDescendantId(elementId: string): string | null;
324
335
  declare function getAnchoredAncestorId(elementId: string): string | null;
325
336
  declare function isElementAnchored(elementId: string): boolean;
326
337
 
327
- export { 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 ElementID, type ElementType, type LinkInLinkRestriction, type MoveElementParams, type MoveElementsParams, type MovedElement, type MovedElementsResult, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementModelProps, type V1ElementSettingsProps, createElement, createElementStyle, createElements, deleteElement, deleteElementStyle, dropElement, duplicateElement, duplicateElements, generateElementId, getAnchoredAncestorId, getAnchoredDescendantId, getContainer, getCurrentDocumentContainer, getCurrentDocumentId, getElementLabel, getElementSetting, getElementSettings, getElementStyles, getElements, getLinkInLinkRestriction, getSelectedElements, getWidgetsCache, isElementAnchored, moveElement, moveElements, removeElements, replaceElement, selectElement, shouldCreateNewLocalStyle, styleRerenderEvents, updateElementSettings, updateElementStyle, useElementChildren, useElementSetting, useElementSettings, useElementType, useParentElement, useSelectedElement };
338
+ export { 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 ElementID, type ElementType, type LinkInLinkRestriction, type MoveElementParams, type MoveElementsParams, type MovedElement, type MovedElementsResult, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementModelProps, type V1ElementSettingsProps, createElement, createElementStyle, createElements, deleteElement, deleteElementStyle, dropElement, duplicateElement, duplicateElements, generateElementId, getAnchoredAncestorId, getAnchoredDescendantId, getContainer, getCurrentDocumentContainer, getCurrentDocumentId, getElementLabel, getElementSetting, getElementSettings, getElementStyles, getElements, getLinkInLinkRestriction, getSelectedElements, getWidgetsCache, isElementAnchored, moveElement, moveElements, removeElements, replaceElement, selectElement, shouldCreateNewLocalStyle, styleRerenderEvents, updateElementEditorSettings, updateElementSettings, updateElementStyle, useElementChildren, useElementEditorSettings, useElementSetting, useElementSettings, useElementType, useParentElement, useSelectedElement };
package/dist/index.js CHANGED
@@ -51,9 +51,11 @@ __export(index_exports, {
51
51
  selectElement: () => selectElement,
52
52
  shouldCreateNewLocalStyle: () => shouldCreateNewLocalStyle,
53
53
  styleRerenderEvents: () => styleRerenderEvents,
54
+ updateElementEditorSettings: () => updateElementEditorSettings,
54
55
  updateElementSettings: () => updateElementSettings,
55
56
  updateElementStyle: () => updateElementStyle,
56
57
  useElementChildren: () => useElementChildren,
58
+ useElementEditorSettings: () => useElementEditorSettings,
57
59
  useElementSetting: () => useElementSetting,
58
60
  useElementSettings: () => useElementSettings,
59
61
  useElementType: () => useElementType,
@@ -107,7 +109,7 @@ var useElementSettings = (elementId, settingKeys) => {
107
109
  }
108
110
  return settings;
109
111
  }, {}),
110
- [elementId, ...settingKeys]
112
+ [elementId, settingKeys.join(",")]
111
113
  );
112
114
  };
113
115
 
@@ -235,28 +237,60 @@ function useElementChildren(elementId, childrenTypes) {
235
237
  );
236
238
  }
237
239
 
238
- // src/sync/create-element.ts
240
+ // src/hooks/use-element-editor-settings.ts
239
241
  var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
242
+ var useElementEditorSettings = (elementId) => {
243
+ return (0, import_editor_v1_adapters7.__privateUseListenTo)(
244
+ (0, import_editor_v1_adapters7.windowEvent)("elementor/element/update_editor_settings"),
245
+ () => getElementEditorSettings(elementId),
246
+ [elementId]
247
+ );
248
+ };
249
+ function getElementEditorSettings(elementId) {
250
+ const container = getContainer(elementId);
251
+ return container?.model.get("editor_settings") ?? {};
252
+ }
253
+
254
+ // src/sync/create-element.ts
255
+ var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
240
256
  function createElement({ containerId, model, options }) {
241
257
  const container = getContainer(containerId);
242
258
  if (!container) {
243
259
  throw new Error(`Container with ID "${containerId}" not found`);
244
260
  }
245
- return (0, import_editor_v1_adapters7.__privateRunCommandSync)("document/elements/create", {
261
+ return (0, import_editor_v1_adapters8.__privateRunCommandSync)("document/elements/create", {
246
262
  container,
247
263
  model,
248
264
  options: { edit: false, ...options }
249
265
  });
250
266
  }
251
267
 
268
+ // src/sync/update-element-editor-settings.ts
269
+ var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
270
+ var updateElementEditorSettings = ({
271
+ elementId,
272
+ settings
273
+ }) => {
274
+ const element = getContainer(elementId);
275
+ if (!element) {
276
+ throw new Error(`Element with id ${elementId} not found`);
277
+ }
278
+ const editorSettings = element.model.get("editor_settings") ?? {};
279
+ element.model.set("editor_settings", { ...editorSettings, ...settings });
280
+ setDocumentModifiedStatus(true);
281
+ };
282
+ function setDocumentModifiedStatus(status) {
283
+ (0, import_editor_v1_adapters9.__privateRunCommandSync)("document/save/set-is-modified", { status }, { internal: true });
284
+ }
285
+
252
286
  // src/sync/delete-element.ts
253
- var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
287
+ var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
254
288
  function deleteElement({ elementId, options = {} }) {
255
289
  const container = getContainer(elementId);
256
290
  if (!container) {
257
291
  throw new Error(`Element with ID "${elementId}" not found`);
258
292
  }
259
- (0, import_editor_v1_adapters8.__privateRunCommand)("document/elements/delete", {
293
+ (0, import_editor_v1_adapters10.__privateRunCommand)("document/elements/delete", {
260
294
  container,
261
295
  options
262
296
  });
@@ -288,14 +322,14 @@ function moveElement({ elementId, targetContainerId, options = {} }) {
288
322
  }
289
323
 
290
324
  // src/sync/move-elements.ts
291
- var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
325
+ var import_editor_v1_adapters11 = require("@elementor/editor-v1-adapters");
292
326
  var import_i18n = require("@wordpress/i18n");
293
327
  var moveElements = ({
294
328
  moves: movesToMake,
295
329
  title,
296
330
  subtitle = (0, import_i18n.__)("Elements moved", "elementor")
297
331
  }) => {
298
- const undoableMove = (0, import_editor_v1_adapters9.undoable)(
332
+ const undoableMove = (0, import_editor_v1_adapters11.undoable)(
299
333
  {
300
334
  do: ({ moves }) => {
301
335
  const movedElements = [];
@@ -387,14 +421,14 @@ function duplicateElement({ elementId, options = {} }) {
387
421
  }
388
422
 
389
423
  // src/sync/create-elements.ts
390
- var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
424
+ var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
391
425
  var import_i18n2 = require("@wordpress/i18n");
392
426
  var createElements = ({
393
427
  elements,
394
428
  title,
395
429
  subtitle = (0, import_i18n2.__)("Item added", "elementor")
396
430
  }) => {
397
- const undoableCreate = (0, import_editor_v1_adapters10.undoable)(
431
+ const undoableCreate = (0, import_editor_v1_adapters12.undoable)(
398
432
  {
399
433
  do: ({ elements: elementsParam }) => {
400
434
  const createdElements = [];
@@ -453,7 +487,7 @@ var createElements = ({
453
487
  };
454
488
 
455
489
  // src/sync/duplicate-elements.ts
456
- var import_editor_v1_adapters11 = require("@elementor/editor-v1-adapters");
490
+ var import_editor_v1_adapters13 = require("@elementor/editor-v1-adapters");
457
491
  var import_i18n3 = require("@wordpress/i18n");
458
492
  var duplicateElements = ({
459
493
  elementIds,
@@ -461,7 +495,7 @@ var duplicateElements = ({
461
495
  subtitle = (0, import_i18n3.__)("Item duplicated", "elementor"),
462
496
  onCreate
463
497
  }) => {
464
- const undoableDuplicate = (0, import_editor_v1_adapters11.undoable)(
498
+ const undoableDuplicate = (0, import_editor_v1_adapters13.undoable)(
465
499
  {
466
500
  do: ({ elementIds: elementIdsToDuplicate }) => {
467
501
  const duplicatedElements = elementIdsToDuplicate.reduce((acc, elementId) => {
@@ -527,14 +561,14 @@ var duplicateElements = ({
527
561
  };
528
562
 
529
563
  // src/sync/remove-elements.ts
530
- var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
564
+ var import_editor_v1_adapters14 = require("@elementor/editor-v1-adapters");
531
565
  var import_i18n4 = require("@wordpress/i18n");
532
566
  var removeElements = ({
533
567
  elementIds,
534
568
  title,
535
569
  subtitle = (0, import_i18n4.__)("Item removed", "elementor")
536
570
  }) => {
537
- const undoableRemove = (0, import_editor_v1_adapters12.undoable)(
571
+ const undoableRemove = (0, import_editor_v1_adapters14.undoable)(
538
572
  {
539
573
  do: ({ elementIds: elementIdsParam }) => {
540
574
  const removedElements = [];
@@ -653,7 +687,7 @@ function getCurrentDocumentId() {
653
687
  }
654
688
 
655
689
  // src/sync/update-element-settings.ts
656
- var import_editor_v1_adapters13 = require("@elementor/editor-v1-adapters");
690
+ var import_editor_v1_adapters15 = require("@elementor/editor-v1-adapters");
657
691
  var updateElementSettings = ({ id, props, withHistory = true }) => {
658
692
  const container = getContainer(id);
659
693
  const args = {
@@ -661,9 +695,9 @@ var updateElementSettings = ({ id, props, withHistory = true }) => {
661
695
  settings: { ...props }
662
696
  };
663
697
  if (withHistory) {
664
- (0, import_editor_v1_adapters13.__privateRunCommandSync)("document/elements/settings", args);
698
+ (0, import_editor_v1_adapters15.__privateRunCommandSync)("document/elements/settings", args);
665
699
  } else {
666
- (0, import_editor_v1_adapters13.__privateRunCommandSync)("document/elements/set-settings", args, { internal: true });
700
+ (0, import_editor_v1_adapters15.__privateRunCommandSync)("document/elements/set-settings", args, { internal: true });
667
701
  }
668
702
  };
669
703
 
@@ -692,13 +726,13 @@ var replaceElement = ({ currentElement, newElement, withHistory = true }) => {
692
726
  };
693
727
 
694
728
  // src/sync/drop-element.ts
695
- var import_editor_v1_adapters14 = require("@elementor/editor-v1-adapters");
729
+ var import_editor_v1_adapters16 = require("@elementor/editor-v1-adapters");
696
730
  function dropElement({ containerId, model, options }) {
697
731
  const container = getContainer(containerId);
698
732
  if (!container) {
699
733
  throw new Error(`Container with ID "${containerId}" not found`);
700
734
  }
701
- return (0, import_editor_v1_adapters14.__privateRunCommandSync)("preview/drop", {
735
+ return (0, import_editor_v1_adapters16.__privateRunCommandSync)("preview/drop", {
702
736
  container,
703
737
  model,
704
738
  options
@@ -706,14 +740,14 @@ function dropElement({ containerId, model, options }) {
706
740
  }
707
741
 
708
742
  // src/styles/consts.ts
709
- var import_editor_v1_adapters15 = require("@elementor/editor-v1-adapters");
743
+ var import_editor_v1_adapters17 = require("@elementor/editor-v1-adapters");
710
744
  var ELEMENT_STYLE_CHANGE_EVENT = "elementor/editor-v2/editor-elements/style";
711
745
  var styleRerenderEvents = [
712
- (0, import_editor_v1_adapters15.commandEndEvent)("document/elements/create"),
713
- (0, import_editor_v1_adapters15.commandEndEvent)("document/elements/duplicate"),
714
- (0, import_editor_v1_adapters15.commandEndEvent)("document/elements/import"),
715
- (0, import_editor_v1_adapters15.commandEndEvent)("document/elements/paste"),
716
- (0, import_editor_v1_adapters15.windowEvent)(ELEMENT_STYLE_CHANGE_EVENT)
746
+ (0, import_editor_v1_adapters17.commandEndEvent)("document/elements/create"),
747
+ (0, import_editor_v1_adapters17.commandEndEvent)("document/elements/duplicate"),
748
+ (0, import_editor_v1_adapters17.commandEndEvent)("document/elements/import"),
749
+ (0, import_editor_v1_adapters17.commandEndEvent)("document/elements/paste"),
750
+ (0, import_editor_v1_adapters17.windowEvent)(ELEMENT_STYLE_CHANGE_EVENT)
717
751
  ];
718
752
 
719
753
  // src/styles/create-element-style.ts
@@ -722,7 +756,7 @@ var import_editor_styles = require("@elementor/editor-styles");
722
756
 
723
757
  // src/styles/mutate-element-styles.ts
724
758
  var import_editor_props = require("@elementor/editor-props");
725
- var import_editor_v1_adapters16 = require("@elementor/editor-v1-adapters");
759
+ var import_editor_v1_adapters18 = require("@elementor/editor-v1-adapters");
726
760
  function mutateElementStyles(elementId, mutator) {
727
761
  const container = getContainer(elementId);
728
762
  if (!container) {
@@ -778,7 +812,7 @@ function getClassesProps(container) {
778
812
  }
779
813
  function notifyChanges() {
780
814
  dispatchChangeEvent();
781
- (0, import_editor_v1_adapters16.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true });
815
+ (0, import_editor_v1_adapters18.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true });
782
816
  }
783
817
  function dispatchChangeEvent() {
784
818
  window.dispatchEvent(new CustomEvent(ELEMENT_STYLE_CHANGE_EVENT));
@@ -975,9 +1009,11 @@ function isElementorElement(element) {
975
1009
  selectElement,
976
1010
  shouldCreateNewLocalStyle,
977
1011
  styleRerenderEvents,
1012
+ updateElementEditorSettings,
978
1013
  updateElementSettings,
979
1014
  updateElementStyle,
980
1015
  useElementChildren,
1016
+ useElementEditorSettings,
981
1017
  useElementSetting,
982
1018
  useElementSettings,
983
1019
  useElementType,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/hooks/use-element-setting.ts","../src/sync/get-container.ts","../src/sync/get-element-setting.ts","../src/hooks/use-element-type.ts","../src/sync/get-widgets-cache.ts","../src/hooks/use-selected-element.ts","../src/sync/get-selected-elements.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-element-children.ts","../src/sync/create-element.ts","../src/sync/delete-element.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/duplicate-element.ts","../src/sync/create-elements.ts","../src/sync/duplicate-elements.ts","../src/sync/remove-elements.ts","../src/sync/get-element-styles.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-current-document-container.ts","../src/sync/get-elements.ts","../src/sync/get-current-document-id.ts","../src/sync/update-element-settings.ts","../src/sync/generate-element-id.ts","../src/sync/replace-element.ts","../src/sync/drop-element.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/update-element-style.ts","../src/styles/delete-element-style.ts","../src/link-restriction.ts"],"sourcesContent":["// types\nexport * from './types';\nexport type { V1Element, V1ElementModelProps, V1ElementSettingsProps, V1ElementConfig } from './sync/types';\n\n// hooks\nexport { useElementSetting, useElementSettings } from './hooks/use-element-setting';\nexport { useElementType } from './hooks/use-element-type';\nexport { useSelectedElement } from './hooks/use-selected-element';\nexport { useParentElement } from './hooks/use-parent-element';\nexport { useElementChildren, type ElementChildren } from './hooks/use-element-children';\n\n// utils\nexport { createElement, type CreateElementParams } from './sync/create-element';\nexport { moveElement, type MoveElementParams } from './sync/move-element';\nexport {\n\tmoveElements,\n\ttype MoveElementsParams,\n\ttype MovedElement,\n\ttype MovedElementsResult,\n} from './sync/move-elements';\nexport { duplicateElement, type DuplicateElementParams } from './sync/duplicate-element';\nexport { createElements } from './sync/create-elements';\nexport {\n\tduplicateElements,\n\ttype DuplicateElementsParams,\n\ttype DuplicatedElement,\n\ttype DuplicatedElementsResult,\n} from './sync/duplicate-elements';\nexport { deleteElement } from './sync/delete-element';\nexport { removeElements } from './sync/remove-elements';\nexport { getContainer, selectElement } from './sync/get-container';\nexport { getElementSetting, getElementSettings } from './sync/get-element-setting';\nexport { getElementStyles } from './sync/get-element-styles';\nexport { getElementLabel } from './sync/get-element-label';\nexport { getElements } from './sync/get-elements';\nexport { getCurrentDocumentId } from './sync/get-current-document-id';\nexport { getSelectedElements } from './sync/get-selected-elements';\nexport { getWidgetsCache } from './sync/get-widgets-cache';\nexport { updateElementSettings, type UpdateElementSettingsArgs } from './sync/update-element-settings';\nexport { generateElementId } from './sync/generate-element-id';\nexport { replaceElement } from './sync/replace-element';\nexport { getCurrentDocumentContainer } from './sync/get-current-document-container';\nexport { dropElement, type DropElementParams } from './sync/drop-element';\n\nexport { ELEMENT_STYLE_CHANGE_EVENT, styleRerenderEvents } from './styles/consts';\nexport {\n\tcreateElementStyle,\n\tshouldCreateNewLocalStyle,\n\ttype CreateElementStyleArgs,\n} from './styles/create-element-style';\nexport { updateElementStyle, type UpdateElementStyleArgs } from './styles/update-element-style';\nexport { deleteElementStyle } from './styles/delete-element-style';\nexport {\n\tisElementAnchored,\n\tgetAnchoredDescendantId,\n\tgetAnchoredAncestorId,\n\tgetLinkInLinkRestriction,\n\ttype LinkInLinkRestriction,\n} from './link-restriction';\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 ]\n\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 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 { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementType } from '../types';\n\nexport function useElementType( type?: string ) {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'editor/documents/load' ),\n\t\t(): ElementType | null => {\n\t\t\tif ( ! type ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst widgetsCache = getWidgetsCache();\n\t\t\tconst elementType = widgetsCache?.[ type ];\n\n\t\t\tif ( ! elementType?.atomic_controls ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( ! elementType?.atomic_props_schema ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tkey: type,\n\t\t\t\tcontrols: elementType.atomic_controls,\n\t\t\t\tpropsSchema: elementType.atomic_props_schema,\n\t\t\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\t\t\ttitle: elementType.title,\n\t\t\t};\n\t\t},\n\t\t[ type ]\n\t);\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getWidgetsCache() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow?.elementor?.widgetsCache || null;\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getSelectedElements } from '../sync/get-selected-elements';\nimport { useElementType } from './use-element-type';\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 = useElementType( 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 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 { __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, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\ntype ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: ( keyof T & 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 = childrenTypes.reduce( ( acc, type ) => {\n\t\t\t\tacc[ type ] = [];\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\tcontainer?.children?.forEachRecursive?.( ( { model, id } ) => {\n\t\t\t\tconst elType = model.get( 'elType' );\n\n\t\t\t\tif ( elType && elType in elementChildren ) {\n\t\t\t\t\telementChildren[ elType ].push( { id } );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as 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 { __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( { elementId, options = {} }: { elementId: string; options?: Options } ): 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\trunCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\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};\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}: 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\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\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\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 { createElement } from './create-element';\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\tif ( ! elementToDuplicate.parent ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" has no parent container` );\n\t}\n\n\tconst parentContainer = elementToDuplicate.parent;\n\tconst elementModel = elementToDuplicate.model.toJSON();\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 createElement( {\n\t\tcontainerId: parentContainer.id,\n\t\tmodel: elementModel,\n\t\toptions: {\n\t\t\tat: insertPosition,\n\t\t\t...options,\n\t\t},\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 { 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\tonCreate?: ( duplicatedElements: DuplicatedElement[] ) => DuplicatedElement[];\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\tonCreate,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\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, clone: true },\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: onCreate?.( duplicatedElements ) ?? duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\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\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: onCreate?.( duplicatedElements ) ?? 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 { 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};\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}: 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\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\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\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 { 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 { 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","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\n\nexport function getElementLabel( elementId: ElementID ) {\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 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 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 { 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 { 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 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 { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps } from './types';\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1Element;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst parent = getContainer( currentElement.id )?.parent;\n\n\tif ( ! parent ) {\n\t\tthrow new Error( `Parent not found for element ${ currentElement.id }. Cannot replace element.` );\n\t}\n\n\tconst elementIndex = parent.children?.findIndex( ( child ) => child.id === currentElement.id );\n\tif ( elementIndex === undefined || elementIndex === -1 ) {\n\t\tthrow new Error( `Element ${ currentElement.id } not found in parent container. Cannot replace element.` );\n\t}\n\n\tcreateElement( {\n\t\tcontainerId: parent.id,\n\t\tmodel: newElement,\n\t\toptions: { at: elementIndex, useHistory: withHistory },\n\t} );\n\n\tdeleteElement( { elementId: currentElement.id, options: { useHistory: withHistory } } );\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 { 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 { 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 { 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 { getContainer } from './sync/get-container';\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 ): 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 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( 'a' ) ) ) {\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( 'a' );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( isAnchorTag( element.tagName ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of element.children ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( isAnchorTag( child.tagName ) ) {\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 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 isAnchorTag( tagName: string ): boolean {\n\treturn tagName.toLowerCase() === 'a';\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\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","runCommand","import_editor_v1_adapters","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"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/hooks/use-element-setting.ts","../src/sync/get-container.ts","../src/sync/get-element-setting.ts","../src/hooks/use-element-type.ts","../src/sync/get-widgets-cache.ts","../src/hooks/use-selected-element.ts","../src/sync/get-selected-elements.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-element-children.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/create-element.ts","../src/sync/update-element-editor-settings.ts","../src/sync/delete-element.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/duplicate-element.ts","../src/sync/create-elements.ts","../src/sync/duplicate-elements.ts","../src/sync/remove-elements.ts","../src/sync/get-element-styles.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-current-document-container.ts","../src/sync/get-elements.ts","../src/sync/get-current-document-id.ts","../src/sync/update-element-settings.ts","../src/sync/generate-element-id.ts","../src/sync/replace-element.ts","../src/sync/drop-element.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/update-element-style.ts","../src/styles/delete-element-style.ts","../src/link-restriction.ts"],"sourcesContent":["// types\nexport * from './types';\nexport type { V1Element, V1ElementModelProps, V1ElementSettingsProps, V1ElementConfig } from './sync/types';\n\n// hooks\nexport { useElementSetting, useElementSettings } from './hooks/use-element-setting';\nexport { useElementType } from './hooks/use-element-type';\nexport { useSelectedElement } from './hooks/use-selected-element';\nexport { useParentElement } from './hooks/use-parent-element';\nexport { useElementChildren, type ElementChildren } from './hooks/use-element-children';\nexport { useElementEditorSettings } from './hooks/use-element-editor-settings';\n\n// utils\nexport { createElement, type CreateElementParams } from './sync/create-element';\nexport { updateElementEditorSettings } from './sync/update-element-editor-settings';\nexport { moveElement, type MoveElementParams } from './sync/move-element';\nexport {\n\tmoveElements,\n\ttype MoveElementsParams,\n\ttype MovedElement,\n\ttype MovedElementsResult,\n} from './sync/move-elements';\nexport { duplicateElement, type DuplicateElementParams } from './sync/duplicate-element';\nexport { createElements } from './sync/create-elements';\nexport {\n\tduplicateElements,\n\ttype DuplicateElementsParams,\n\ttype DuplicatedElement,\n\ttype DuplicatedElementsResult,\n} from './sync/duplicate-elements';\nexport { deleteElement } from './sync/delete-element';\nexport { removeElements } from './sync/remove-elements';\nexport { getContainer, selectElement } from './sync/get-container';\nexport { getElementSetting, getElementSettings } from './sync/get-element-setting';\nexport { getElementStyles } from './sync/get-element-styles';\nexport { getElementLabel } from './sync/get-element-label';\nexport { getElements } from './sync/get-elements';\nexport { getCurrentDocumentId } from './sync/get-current-document-id';\nexport { getSelectedElements } from './sync/get-selected-elements';\nexport { getWidgetsCache } from './sync/get-widgets-cache';\nexport { updateElementSettings, type UpdateElementSettingsArgs } from './sync/update-element-settings';\nexport { generateElementId } from './sync/generate-element-id';\nexport { replaceElement } from './sync/replace-element';\nexport { getCurrentDocumentContainer } from './sync/get-current-document-container';\nexport { dropElement, type DropElementParams } from './sync/drop-element';\n\nexport { ELEMENT_STYLE_CHANGE_EVENT, styleRerenderEvents } from './styles/consts';\nexport {\n\tcreateElementStyle,\n\tshouldCreateNewLocalStyle,\n\ttype CreateElementStyleArgs,\n} from './styles/create-element-style';\nexport { updateElementStyle, type UpdateElementStyleArgs } from './styles/update-element-style';\nexport { deleteElementStyle } from './styles/delete-element-style';\nexport {\n\tisElementAnchored,\n\tgetAnchoredDescendantId,\n\tgetAnchoredAncestorId,\n\tgetLinkInLinkRestriction,\n\ttype LinkInLinkRestriction,\n} from './link-restriction';\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 { __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 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 { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementType } from '../types';\n\nexport function useElementType( type?: string ) {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'editor/documents/load' ),\n\t\t(): ElementType | null => {\n\t\t\tif ( ! type ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst widgetsCache = getWidgetsCache();\n\t\t\tconst elementType = widgetsCache?.[ type ];\n\n\t\t\tif ( ! elementType?.atomic_controls ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( ! elementType?.atomic_props_schema ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tkey: type,\n\t\t\t\tcontrols: elementType.atomic_controls,\n\t\t\t\tpropsSchema: elementType.atomic_props_schema,\n\t\t\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\t\t\ttitle: elementType.title,\n\t\t\t};\n\t\t},\n\t\t[ type ]\n\t);\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getWidgetsCache() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow?.elementor?.widgetsCache || null;\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getSelectedElements } from '../sync/get-selected-elements';\nimport { useElementType } from './use-element-type';\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 = useElementType( 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 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 { __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, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\ntype ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: ( keyof T & 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 = childrenTypes.reduce( ( acc, type ) => {\n\t\t\t\tacc[ type ] = [];\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\tcontainer?.children?.forEachRecursive?.( ( { model, id } ) => {\n\t\t\t\tconst elType = model.get( 'elType' );\n\n\t\t\t\tif ( elType && elType in elementChildren ) {\n\t\t\t\t\telementChildren[ elType ].push( { id } );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\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\nfunction getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\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 { __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 { __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( { elementId, options = {} }: { elementId: string; options?: Options } ): 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\trunCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\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};\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}: 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\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\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\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 { createElement } from './create-element';\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\tif ( ! elementToDuplicate.parent ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" has no parent container` );\n\t}\n\n\tconst parentContainer = elementToDuplicate.parent;\n\tconst elementModel = elementToDuplicate.model.toJSON();\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 createElement( {\n\t\tcontainerId: parentContainer.id,\n\t\tmodel: elementModel,\n\t\toptions: {\n\t\t\tat: insertPosition,\n\t\t\t...options,\n\t\t},\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 { 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\tonCreate?: ( duplicatedElements: DuplicatedElement[] ) => DuplicatedElement[];\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\tonCreate,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\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, clone: true },\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: onCreate?.( duplicatedElements ) ?? duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\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\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: onCreate?.( duplicatedElements ) ?? 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 { 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};\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}: 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\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\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\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 { 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 { 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","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\n\nexport function getElementLabel( elementId: ElementID ) {\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 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 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 { 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 { 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 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 { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps } from './types';\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1Element;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst parent = getContainer( currentElement.id )?.parent;\n\n\tif ( ! parent ) {\n\t\tthrow new Error( `Parent not found for element ${ currentElement.id }. Cannot replace element.` );\n\t}\n\n\tconst elementIndex = parent.children?.findIndex( ( child ) => child.id === currentElement.id );\n\tif ( elementIndex === undefined || elementIndex === -1 ) {\n\t\tthrow new Error( `Element ${ currentElement.id } not found in parent container. Cannot replace element.` );\n\t}\n\n\tcreateElement( {\n\t\tcontainerId: parent.id,\n\t\tmodel: newElement,\n\t\toptions: { at: elementIndex, useHistory: withHistory },\n\t} );\n\n\tdeleteElement( { elementId: currentElement.id, options: { useHistory: withHistory } } );\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 { 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 { 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 { 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 { getContainer } from './sync/get-container';\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 ): 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 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( 'a' ) ) ) {\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( 'a' );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( isAnchorTag( element.tagName ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of element.children ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( isAnchorTag( child.tagName ) ) {\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 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 isAnchorTag( tagName: string ): boolean {\n\treturn tagName.toLowerCase() === 'a';\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\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","useListenTo","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommand","import_editor_v1_adapters","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"]}
package/dist/index.mjs CHANGED
@@ -43,7 +43,7 @@ var useElementSettings = (elementId, settingKeys) => {
43
43
  }
44
44
  return settings;
45
45
  }, {}),
46
- [elementId, ...settingKeys]
46
+ [elementId, settingKeys.join(",")]
47
47
  );
48
48
  };
49
49
 
@@ -171,6 +171,20 @@ function useElementChildren(elementId, childrenTypes) {
171
171
  );
172
172
  }
173
173
 
174
+ // src/hooks/use-element-editor-settings.ts
175
+ import { __privateUseListenTo as useListenTo6, windowEvent } from "@elementor/editor-v1-adapters";
176
+ var useElementEditorSettings = (elementId) => {
177
+ return useListenTo6(
178
+ windowEvent("elementor/element/update_editor_settings"),
179
+ () => getElementEditorSettings(elementId),
180
+ [elementId]
181
+ );
182
+ };
183
+ function getElementEditorSettings(elementId) {
184
+ const container = getContainer(elementId);
185
+ return container?.model.get("editor_settings") ?? {};
186
+ }
187
+
174
188
  // src/sync/create-element.ts
175
189
  import { __privateRunCommandSync as runCommandSync } from "@elementor/editor-v1-adapters";
176
190
  function createElement({ containerId, model, options }) {
@@ -185,6 +199,24 @@ function createElement({ containerId, model, options }) {
185
199
  });
186
200
  }
187
201
 
202
+ // src/sync/update-element-editor-settings.ts
203
+ import { __privateRunCommandSync as runCommandSync2 } from "@elementor/editor-v1-adapters";
204
+ var updateElementEditorSettings = ({
205
+ elementId,
206
+ settings
207
+ }) => {
208
+ const element = getContainer(elementId);
209
+ if (!element) {
210
+ throw new Error(`Element with id ${elementId} not found`);
211
+ }
212
+ const editorSettings = element.model.get("editor_settings") ?? {};
213
+ element.model.set("editor_settings", { ...editorSettings, ...settings });
214
+ setDocumentModifiedStatus(true);
215
+ };
216
+ function setDocumentModifiedStatus(status) {
217
+ runCommandSync2("document/save/set-is-modified", { status }, { internal: true });
218
+ }
219
+
188
220
  // src/sync/delete-element.ts
189
221
  import { __privateRunCommand as runCommand2 } from "@elementor/editor-v1-adapters";
190
222
  function deleteElement({ elementId, options = {} }) {
@@ -589,7 +621,7 @@ function getCurrentDocumentId() {
589
621
  }
590
622
 
591
623
  // src/sync/update-element-settings.ts
592
- import { __privateRunCommandSync as runCommandSync2 } from "@elementor/editor-v1-adapters";
624
+ import { __privateRunCommandSync as runCommandSync3 } from "@elementor/editor-v1-adapters";
593
625
  var updateElementSettings = ({ id, props, withHistory = true }) => {
594
626
  const container = getContainer(id);
595
627
  const args = {
@@ -597,9 +629,9 @@ var updateElementSettings = ({ id, props, withHistory = true }) => {
597
629
  settings: { ...props }
598
630
  };
599
631
  if (withHistory) {
600
- runCommandSync2("document/elements/settings", args);
632
+ runCommandSync3("document/elements/settings", args);
601
633
  } else {
602
- runCommandSync2("document/elements/set-settings", args, { internal: true });
634
+ runCommandSync3("document/elements/set-settings", args, { internal: true });
603
635
  }
604
636
  };
605
637
 
@@ -628,13 +660,13 @@ var replaceElement = ({ currentElement, newElement, withHistory = true }) => {
628
660
  };
629
661
 
630
662
  // src/sync/drop-element.ts
631
- import { __privateRunCommandSync as runCommandSync3 } from "@elementor/editor-v1-adapters";
663
+ import { __privateRunCommandSync as runCommandSync4 } from "@elementor/editor-v1-adapters";
632
664
  function dropElement({ containerId, model, options }) {
633
665
  const container = getContainer(containerId);
634
666
  if (!container) {
635
667
  throw new Error(`Container with ID "${containerId}" not found`);
636
668
  }
637
- return runCommandSync3("preview/drop", {
669
+ return runCommandSync4("preview/drop", {
638
670
  container,
639
671
  model,
640
672
  options
@@ -642,14 +674,14 @@ function dropElement({ containerId, model, options }) {
642
674
  }
643
675
 
644
676
  // src/styles/consts.ts
645
- import { commandEndEvent as commandEndEvent6, windowEvent } from "@elementor/editor-v1-adapters";
677
+ import { commandEndEvent as commandEndEvent6, windowEvent as windowEvent2 } from "@elementor/editor-v1-adapters";
646
678
  var ELEMENT_STYLE_CHANGE_EVENT = "elementor/editor-v2/editor-elements/style";
647
679
  var styleRerenderEvents = [
648
680
  commandEndEvent6("document/elements/create"),
649
681
  commandEndEvent6("document/elements/duplicate"),
650
682
  commandEndEvent6("document/elements/import"),
651
683
  commandEndEvent6("document/elements/paste"),
652
- windowEvent(ELEMENT_STYLE_CHANGE_EVENT)
684
+ windowEvent2(ELEMENT_STYLE_CHANGE_EVENT)
653
685
  ];
654
686
 
655
687
  // src/styles/create-element-style.ts
@@ -660,7 +692,7 @@ import {
660
692
 
661
693
  // src/styles/mutate-element-styles.ts
662
694
  import { classesPropTypeUtil } from "@elementor/editor-props";
663
- import { __privateRunCommandSync as runCommandSync4 } from "@elementor/editor-v1-adapters";
695
+ import { __privateRunCommandSync as runCommandSync5 } from "@elementor/editor-v1-adapters";
664
696
  function mutateElementStyles(elementId, mutator) {
665
697
  const container = getContainer(elementId);
666
698
  if (!container) {
@@ -716,7 +748,7 @@ function getClassesProps(container) {
716
748
  }
717
749
  function notifyChanges() {
718
750
  dispatchChangeEvent();
719
- runCommandSync4("document/save/set-is-modified", { status: true }, { internal: true });
751
+ runCommandSync5("document/save/set-is-modified", { status: true }, { internal: true });
720
752
  }
721
753
  function dispatchChangeEvent() {
722
754
  window.dispatchEvent(new CustomEvent(ELEMENT_STYLE_CHANGE_EVENT));
@@ -912,9 +944,11 @@ export {
912
944
  selectElement,
913
945
  shouldCreateNewLocalStyle,
914
946
  styleRerenderEvents,
947
+ updateElementEditorSettings,
915
948
  updateElementSettings,
916
949
  updateElementStyle,
917
950
  useElementChildren,
951
+ useElementEditorSettings,
918
952
  useElementSetting,
919
953
  useElementSettings,
920
954
  useElementType,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/use-element-setting.ts","../src/sync/get-container.ts","../src/sync/get-element-setting.ts","../src/hooks/use-element-type.ts","../src/sync/get-widgets-cache.ts","../src/hooks/use-selected-element.ts","../src/sync/get-selected-elements.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-element-children.ts","../src/sync/create-element.ts","../src/sync/delete-element.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/duplicate-element.ts","../src/sync/create-elements.ts","../src/sync/duplicate-elements.ts","../src/sync/remove-elements.ts","../src/sync/get-element-styles.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-current-document-container.ts","../src/sync/get-elements.ts","../src/sync/get-current-document-id.ts","../src/sync/update-element-settings.ts","../src/sync/generate-element-id.ts","../src/sync/replace-element.ts","../src/sync/drop-element.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/update-element-style.ts","../src/styles/delete-element-style.ts","../src/link-restriction.ts"],"sourcesContent":["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 ]\n\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 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 { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementType } from '../types';\n\nexport function useElementType( type?: string ) {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'editor/documents/load' ),\n\t\t(): ElementType | null => {\n\t\t\tif ( ! type ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst widgetsCache = getWidgetsCache();\n\t\t\tconst elementType = widgetsCache?.[ type ];\n\n\t\t\tif ( ! elementType?.atomic_controls ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( ! elementType?.atomic_props_schema ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tkey: type,\n\t\t\t\tcontrols: elementType.atomic_controls,\n\t\t\t\tpropsSchema: elementType.atomic_props_schema,\n\t\t\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\t\t\ttitle: elementType.title,\n\t\t\t};\n\t\t},\n\t\t[ type ]\n\t);\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getWidgetsCache() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow?.elementor?.widgetsCache || null;\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getSelectedElements } from '../sync/get-selected-elements';\nimport { useElementType } from './use-element-type';\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 = useElementType( 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 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 { __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, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\ntype ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: ( keyof T & 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 = childrenTypes.reduce( ( acc, type ) => {\n\t\t\t\tacc[ type ] = [];\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\tcontainer?.children?.forEachRecursive?.( ( { model, id } ) => {\n\t\t\t\tconst elType = model.get( 'elType' );\n\n\t\t\t\tif ( elType && elType in elementChildren ) {\n\t\t\t\t\telementChildren[ elType ].push( { id } );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as 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 { __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( { elementId, options = {} }: { elementId: string; options?: Options } ): 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\trunCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\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};\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}: 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\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\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\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 { createElement } from './create-element';\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\tif ( ! elementToDuplicate.parent ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" has no parent container` );\n\t}\n\n\tconst parentContainer = elementToDuplicate.parent;\n\tconst elementModel = elementToDuplicate.model.toJSON();\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 createElement( {\n\t\tcontainerId: parentContainer.id,\n\t\tmodel: elementModel,\n\t\toptions: {\n\t\t\tat: insertPosition,\n\t\t\t...options,\n\t\t},\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 { 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\tonCreate?: ( duplicatedElements: DuplicatedElement[] ) => DuplicatedElement[];\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\tonCreate,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\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, clone: true },\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: onCreate?.( duplicatedElements ) ?? duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\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\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: onCreate?.( duplicatedElements ) ?? 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 { 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};\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}: 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\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\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\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 { 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 { 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","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\n\nexport function getElementLabel( elementId: ElementID ) {\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 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 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 { 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 { 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 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 { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps } from './types';\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1Element;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst parent = getContainer( currentElement.id )?.parent;\n\n\tif ( ! parent ) {\n\t\tthrow new Error( `Parent not found for element ${ currentElement.id }. Cannot replace element.` );\n\t}\n\n\tconst elementIndex = parent.children?.findIndex( ( child ) => child.id === currentElement.id );\n\tif ( elementIndex === undefined || elementIndex === -1 ) {\n\t\tthrow new Error( `Element ${ currentElement.id } not found in parent container. Cannot replace element.` );\n\t}\n\n\tcreateElement( {\n\t\tcontainerId: parent.id,\n\t\tmodel: newElement,\n\t\toptions: { at: elementIndex, useHistory: withHistory },\n\t} );\n\n\tdeleteElement( { elementId: currentElement.id, options: { useHistory: withHistory } } );\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 { 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 { 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 { 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 { getContainer } from './sync/get-container';\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 ): 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 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( 'a' ) ) ) {\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( 'a' );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( isAnchorTag( element.tagName ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of element.children ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( isAnchorTag( child.tagName ) ) {\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 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 isAnchorTag( tagName: string ): boolean {\n\treturn tagName.toLowerCase() === 'a';\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n"],"mappings":"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","names":["useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","runCommand","runCommand","undoable","__","__","undoable","undoable","__","__","undoable","undoable","__","__","undoable","runCommandSync","runCommandSync","runCommandSync","runCommandSync","commandEndEvent","classesPropTypeUtil","runCommandSync","runCommandSync","classesPropTypeUtil"]}
1
+ {"version":3,"sources":["../src/hooks/use-element-setting.ts","../src/sync/get-container.ts","../src/sync/get-element-setting.ts","../src/hooks/use-element-type.ts","../src/sync/get-widgets-cache.ts","../src/hooks/use-selected-element.ts","../src/sync/get-selected-elements.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-element-children.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/create-element.ts","../src/sync/update-element-editor-settings.ts","../src/sync/delete-element.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/duplicate-element.ts","../src/sync/create-elements.ts","../src/sync/duplicate-elements.ts","../src/sync/remove-elements.ts","../src/sync/get-element-styles.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-current-document-container.ts","../src/sync/get-elements.ts","../src/sync/get-current-document-id.ts","../src/sync/update-element-settings.ts","../src/sync/generate-element-id.ts","../src/sync/replace-element.ts","../src/sync/drop-element.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/update-element-style.ts","../src/styles/delete-element-style.ts","../src/link-restriction.ts"],"sourcesContent":["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 { __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 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 { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementType } from '../types';\n\nexport function useElementType( type?: string ) {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'editor/documents/load' ),\n\t\t(): ElementType | null => {\n\t\t\tif ( ! type ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst widgetsCache = getWidgetsCache();\n\t\t\tconst elementType = widgetsCache?.[ type ];\n\n\t\t\tif ( ! elementType?.atomic_controls ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( ! elementType?.atomic_props_schema ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tkey: type,\n\t\t\t\tcontrols: elementType.atomic_controls,\n\t\t\t\tpropsSchema: elementType.atomic_props_schema,\n\t\t\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\t\t\ttitle: elementType.title,\n\t\t\t};\n\t\t},\n\t\t[ type ]\n\t);\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getWidgetsCache() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow?.elementor?.widgetsCache || null;\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getSelectedElements } from '../sync/get-selected-elements';\nimport { useElementType } from './use-element-type';\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 = useElementType( 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 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 { __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, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\ntype ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: ( keyof T & 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 = childrenTypes.reduce( ( acc, type ) => {\n\t\t\t\tacc[ type ] = [];\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\tcontainer?.children?.forEachRecursive?.( ( { model, id } ) => {\n\t\t\t\tconst elType = model.get( 'elType' );\n\n\t\t\t\tif ( elType && elType in elementChildren ) {\n\t\t\t\t\telementChildren[ elType ].push( { id } );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\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\nfunction getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\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 { __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 { __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( { elementId, options = {} }: { elementId: string; options?: Options } ): 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\trunCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\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};\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}: 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\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\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\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 { createElement } from './create-element';\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\tif ( ! elementToDuplicate.parent ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" has no parent container` );\n\t}\n\n\tconst parentContainer = elementToDuplicate.parent;\n\tconst elementModel = elementToDuplicate.model.toJSON();\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 createElement( {\n\t\tcontainerId: parentContainer.id,\n\t\tmodel: elementModel,\n\t\toptions: {\n\t\t\tat: insertPosition,\n\t\t\t...options,\n\t\t},\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 { 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\tonCreate?: ( duplicatedElements: DuplicatedElement[] ) => DuplicatedElement[];\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\tonCreate,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\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, clone: true },\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: onCreate?.( duplicatedElements ) ?? duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\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\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: onCreate?.( duplicatedElements ) ?? 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 { 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};\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}: 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\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\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\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 { 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 { 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","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\n\nexport function getElementLabel( elementId: ElementID ) {\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 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 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 { 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 { 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 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 { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps } from './types';\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1Element;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst parent = getContainer( currentElement.id )?.parent;\n\n\tif ( ! parent ) {\n\t\tthrow new Error( `Parent not found for element ${ currentElement.id }. Cannot replace element.` );\n\t}\n\n\tconst elementIndex = parent.children?.findIndex( ( child ) => child.id === currentElement.id );\n\tif ( elementIndex === undefined || elementIndex === -1 ) {\n\t\tthrow new Error( `Element ${ currentElement.id } not found in parent container. Cannot replace element.` );\n\t}\n\n\tcreateElement( {\n\t\tcontainerId: parent.id,\n\t\tmodel: newElement,\n\t\toptions: { at: elementIndex, useHistory: withHistory },\n\t} );\n\n\tdeleteElement( { elementId: currentElement.id, options: { useHistory: withHistory } } );\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 { 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 { 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 { 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 { getContainer } from './sync/get-container';\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 ): 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 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( 'a' ) ) ) {\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( 'a' );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( isAnchorTag( element.tagName ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of element.children ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( isAnchorTag( child.tagName ) ) {\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 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 isAnchorTag( tagName: string ): boolean {\n\treturn tagName.toLowerCase() === 'a';\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n"],"mappings":"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","names":["useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","useListenTo","runCommandSync","runCommandSync","runCommand","runCommand","undoable","__","__","undoable","undoable","__","__","undoable","undoable","__","__","undoable","runCommandSync","runCommandSync","runCommandSync","runCommandSync","commandEndEvent","windowEvent","classesPropTypeUtil","runCommandSync","runCommandSync","classesPropTypeUtil"]}
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": "3.33.0-111",
4
+ "version": "3.33.0-113",
5
5
  "private": false,
6
6
  "author": "Elementor Team",
7
7
  "homepage": "https://elementor.com/",
@@ -40,10 +40,10 @@
40
40
  "dev": "tsup --config=../../tsup.dev.ts"
41
41
  },
42
42
  "dependencies": {
43
- "@elementor/editor-props": "3.33.0-111",
44
- "@elementor/editor-styles": "3.33.0-111",
45
- "@elementor/editor-v1-adapters": "3.33.0-111",
46
- "@elementor/utils": "3.33.0-111",
43
+ "@elementor/editor-props": "3.33.0-113",
44
+ "@elementor/editor-styles": "3.33.0-113",
45
+ "@elementor/editor-v1-adapters": "3.33.0-113",
46
+ "@elementor/utils": "3.33.0-113",
47
47
  "@wordpress/i18n": "^3.1.0"
48
48
  },
49
49
  "peerDependencies": {
@@ -0,0 +1,18 @@
1
+ import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';
2
+
3
+ import { getContainer } from '../sync/get-container';
4
+ import { type ElementID } from '../types';
5
+
6
+ export const useElementEditorSettings = ( elementId: ElementID ) => {
7
+ return useListenTo(
8
+ windowEvent( 'elementor/element/update_editor_settings' ),
9
+ () => getElementEditorSettings( elementId ),
10
+ [ elementId ]
11
+ );
12
+ };
13
+
14
+ function getElementEditorSettings( elementId: ElementID ) {
15
+ const container = getContainer( elementId );
16
+
17
+ return container?.model.get( 'editor_settings' ) ?? {};
18
+ }
@@ -24,6 +24,6 @@ export const useElementSettings = < TValue >( elementId: ElementID, settingKeys:
24
24
 
25
25
  return settings;
26
26
  }, {} ),
27
- [ elementId, ...settingKeys ]
27
+ [ elementId, settingKeys.join( ',' ) ]
28
28
  );
29
29
  };
package/src/index.ts CHANGED
@@ -8,9 +8,11 @@ export { useElementType } from './hooks/use-element-type';
8
8
  export { useSelectedElement } from './hooks/use-selected-element';
9
9
  export { useParentElement } from './hooks/use-parent-element';
10
10
  export { useElementChildren, type ElementChildren } from './hooks/use-element-children';
11
+ export { useElementEditorSettings } from './hooks/use-element-editor-settings';
11
12
 
12
13
  // utils
13
14
  export { createElement, type CreateElementParams } from './sync/create-element';
15
+ export { updateElementEditorSettings } from './sync/update-element-editor-settings';
14
16
  export { moveElement, type MoveElementParams } from './sync/move-element';
15
17
  export {
16
18
  moveElements,
package/src/sync/types.ts CHANGED
@@ -51,6 +51,11 @@ export type V1ElementModelProps = {
51
51
  styles?: Record< StyleDefinitionID, StyleDefinition >;
52
52
  elements?: V1Model< V1ElementModelProps >[];
53
53
  settings?: V1ElementSettingsProps;
54
+ editor_settings?: V1ElementEditorSettingsProps;
55
+ };
56
+
57
+ export type V1ElementEditorSettingsProps = {
58
+ title?: string;
54
59
  };
55
60
 
56
61
  export type V1ElementSettingsProps = Record< string, PropValue >;
@@ -0,0 +1,28 @@
1
+ import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';
2
+
3
+ import { type V1ElementModelProps } from '..';
4
+ import { getContainer } from './get-container';
5
+
6
+ export const updateElementEditorSettings = ( {
7
+ elementId,
8
+ settings,
9
+ }: {
10
+ elementId: string;
11
+ settings: V1ElementModelProps[ 'editor_settings' ];
12
+ } ) => {
13
+ const element = getContainer( elementId );
14
+
15
+ if ( ! element ) {
16
+ throw new Error( `Element with id ${ elementId } not found` );
17
+ }
18
+
19
+ const editorSettings = element.model.get( 'editor_settings' ) ?? {};
20
+
21
+ element.model.set( 'editor_settings', { ...editorSettings, ...settings } );
22
+
23
+ setDocumentModifiedStatus( true );
24
+ };
25
+
26
+ function setDocumentModifiedStatus( status: boolean ) {
27
+ runCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );
28
+ }