@elementor/editor-elements 3.33.0-98 → 3.35.0-324

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.
Files changed (51) hide show
  1. package/dist/index.d.mts +204 -69
  2. package/dist/index.d.ts +204 -69
  3. package/dist/index.js +1163 -293
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +1149 -291
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +7 -5
  8. package/src/errors.ts +10 -0
  9. package/src/hooks/use-element-children.ts +12 -12
  10. package/src/hooks/use-element-editor-settings.ts +12 -0
  11. package/src/hooks/use-element-interactions.ts +25 -0
  12. package/src/hooks/use-element-setting.ts +1 -1
  13. package/src/hooks/use-selected-element.ts +2 -2
  14. package/src/index.ts +38 -20
  15. package/src/mcp/elements-tool.ts +345 -0
  16. package/src/mcp/handlers/common-style-utils.ts +23 -0
  17. package/src/mcp/handlers/create-element.ts +96 -0
  18. package/src/mcp/handlers/create-style.ts +42 -0
  19. package/src/mcp/handlers/delete-element.ts +17 -0
  20. package/src/mcp/handlers/delete-style.ts +22 -0
  21. package/src/mcp/handlers/deselect-element.ts +21 -0
  22. package/src/mcp/handlers/duplicate-element.ts +22 -0
  23. package/src/mcp/handlers/get-element-props.ts +28 -0
  24. package/src/mcp/handlers/get-element-schema.ts +17 -0
  25. package/src/mcp/handlers/get-selected.ts +5 -0
  26. package/src/mcp/handlers/get-styles.ts +26 -0
  27. package/src/mcp/handlers/list-available-types.ts +27 -0
  28. package/src/mcp/handlers/move-element.ts +30 -0
  29. package/src/mcp/handlers/select-element.ts +25 -0
  30. package/src/mcp/handlers/update-props.ts +22 -0
  31. package/src/mcp/handlers/update-styles.ts +45 -0
  32. package/src/mcp/index.ts +9 -0
  33. package/src/sync/delete-element.ts +8 -2
  34. package/src/sync/drop-element.ts +30 -0
  35. package/src/sync/duplicate-elements.ts +3 -4
  36. package/src/sync/get-current-document-container.ts +1 -1
  37. package/src/sync/get-element-editor-settings.ts +8 -0
  38. package/src/sync/get-element-interactions.ts +15 -0
  39. package/src/sync/get-element-label.ts +6 -1
  40. package/src/sync/get-element-type.ts +28 -0
  41. package/src/sync/get-elements.ts +1 -1
  42. package/src/sync/get-widgets-cache.ts +4 -3
  43. package/src/sync/move-element.ts +45 -0
  44. package/src/sync/move-elements.ts +127 -0
  45. package/src/sync/remove-elements.ts +11 -0
  46. package/src/sync/replace-element.ts +50 -12
  47. package/src/sync/types.ts +32 -3
  48. package/src/sync/update-element-editor-settings.ts +28 -0
  49. package/src/sync/update-element-interactions.ts +32 -0
  50. package/src/types.ts +16 -1
  51. package/src/hooks/use-element-type.ts +0 -35
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/duplicate-element.ts","../src/sync/create-elements.ts","../src/sync/delete-element.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/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 { 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';\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 { 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 { __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 { 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 default 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 { 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","import_editor_v1_adapters","runCommand","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","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-children.ts","../src/sync/get-container.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/get-element-editor-settings.ts","../src/hooks/use-element-setting.ts","../src/sync/get-element-setting.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-selected-element.ts","../src/sync/get-widgets-cache.ts","../src/sync/get-element-type.ts","../src/sync/get-selected-elements.ts","../src/sync/create-element.ts","../src/sync/create-elements.ts","../src/sync/delete-element.ts","../src/sync/drop-element.ts","../src/sync/duplicate-element.ts","../src/sync/duplicate-elements.ts","../src/sync/generate-element-id.ts","../src/sync/get-current-document-container.ts","../src/sync/get-current-document-id.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-element-styles.ts","../src/sync/get-elements.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/remove-elements.ts","../src/sync/replace-element.ts","../src/sync/update-element-editor-settings.ts","../src/sync/update-element-settings.ts","../src/link-restriction.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/delete-element-style.ts","../src/styles/update-element-style.ts","../src/hooks/use-element-interactions.ts","../src/sync/get-element-interactions.ts","../src/sync/update-element-interactions.ts","../src/mcp/index.ts","../src/mcp/elements-tool.ts","../src/mcp/handlers/create-element.ts","../src/mcp/handlers/common-style-utils.ts","../src/mcp/handlers/create-style.ts","../src/mcp/handlers/delete-element.ts","../src/mcp/handlers/delete-style.ts","../src/mcp/handlers/deselect-element.ts","../src/mcp/handlers/duplicate-element.ts","../src/mcp/handlers/get-element-props.ts","../src/mcp/handlers/get-element-schema.ts","../src/mcp/handlers/get-selected.ts","../src/mcp/handlers/get-styles.ts","../src/mcp/handlers/list-available-types.ts","../src/mcp/handlers/move-element.ts","../src/mcp/handlers/select-element.ts","../src/mcp/handlers/update-props.ts","../src/mcp/handlers/update-styles.ts"],"sourcesContent":["// types\nexport * from './types';\nexport type * from './sync/types';\n\n// hooks\nexport { useElementChildren, type ElementChildren, type ElementModel } from './hooks/use-element-children';\nexport { useElementEditorSettings } from './hooks/use-element-editor-settings';\nexport { useElementSetting, useElementSettings } from './hooks/use-element-setting';\nexport { useParentElement } from './hooks/use-parent-element';\nexport { useSelectedElement } from './hooks/use-selected-element';\n\n// utils\nexport { createElement, type CreateElementParams } from './sync/create-element';\nexport { createElements } from './sync/create-elements';\nexport { deleteElement } from './sync/delete-element';\nexport { dropElement, type DropElementParams } from './sync/drop-element';\nexport { duplicateElement, type DuplicateElementParams } from './sync/duplicate-element';\nexport {\n\tduplicateElements,\n\ttype DuplicatedElement,\n\ttype DuplicatedElementsResult,\n\ttype DuplicateElementsParams,\n} from './sync/duplicate-elements';\nexport { generateElementId } from './sync/generate-element-id';\nexport { getContainer, selectElement } from './sync/get-container';\nexport { getCurrentDocumentContainer } from './sync/get-current-document-container';\nexport { getCurrentDocumentId } from './sync/get-current-document-id';\nexport { getElementEditorSettings } from './sync/get-element-editor-settings';\nexport { getElementLabel } from './sync/get-element-label';\nexport { getElementSetting, getElementSettings } from './sync/get-element-setting';\nexport { getElementStyles } from './sync/get-element-styles';\nexport { getElementType } from './sync/get-element-type';\nexport { getElements } from './sync/get-elements';\nexport { getSelectedElements } from './sync/get-selected-elements';\nexport { getWidgetsCache } from './sync/get-widgets-cache';\nexport { moveElement, type MoveElementParams } from './sync/move-element';\nexport {\n\tmoveElements,\n\ttype MovedElement,\n\ttype MovedElementsResult,\n\ttype MoveElementsParams,\n} from './sync/move-elements';\nexport { removeElements } from './sync/remove-elements';\nexport { replaceElement } from './sync/replace-element';\nexport { updateElementEditorSettings } from './sync/update-element-editor-settings';\nexport { updateElementSettings, type UpdateElementSettingsArgs } from './sync/update-element-settings';\n\nexport {\n\tgetAnchoredAncestorId,\n\tgetAnchoredDescendantId,\n\tgetLinkInLinkRestriction,\n\tisElementAnchored,\n\ttype LinkInLinkRestriction,\n} from './link-restriction';\nexport { ELEMENT_STYLE_CHANGE_EVENT, styleRerenderEvents } from './styles/consts';\nexport {\n\tcreateElementStyle,\n\tshouldCreateNewLocalStyle,\n\ttype CreateElementStyleArgs,\n} from './styles/create-element-style';\nexport { deleteElementStyle } from './styles/delete-element-style';\nexport { updateElementStyle, type UpdateElementStyleArgs } from './styles/update-element-style';\n\nexport { useElementInteractions } from './hooks/use-element-interactions';\nexport { getElementInteractions } from './sync/get-element-interactions';\nexport { playElementInteractions, updateElementInteractions } from './sync/update-element-interactions';\n\nexport { initMcp as initElementsMcp } from './mcp';\n","import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: Record< string, string >\n): T {\n\treturn useListenTo(\n\t\t[\n\t\t\tv1ReadyEvent(),\n\t\t\tcommandEndEvent( 'document/elements/create' ),\n\t\t\tcommandEndEvent( 'document/elements/delete' ),\n\t\t\tcommandEndEvent( 'document/elements/update' ),\n\t\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst container = getContainer( elementId );\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = container?.children?.findRecursive?.(\n\t\t\t\t\t( { model } ) => model.get( 'elType' ) === parentType\n\t\t\t\t);\n\n\t\t\t\tconst children = parent?.children ?? [];\n\n\t\t\t\tacc[ childType ] = children\n\t\t\t\t\t.filter( ( { model } ) => model.get( 'elType' ) === childType )\n\t\t\t\t\t.map( ( { id } ) => ( { id } ) );\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow, type V1Element } from './types';\n\nexport function getContainer( id: string ): V1Element | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n\nexport const selectElement = ( elementId: string ) => {\n\ttry {\n\t\tconst container = getContainer( elementId );\n\n\t\trunCommand( 'document/elements/select', { container } );\n\t} catch {}\n};\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementEditorSettings } from '../sync/get-element-editor-settings';\nimport { type ElementID } from '../types';\n\nexport const useElementEditorSettings = ( elementId: ElementID ) => {\n\treturn useListenTo(\n\t\twindowEvent( 'elementor/element/update_editor_settings' ),\n\t\t() => getElementEditorSettings( elementId ),\n\t\t[ elementId ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport function getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { type ElementID } from '../types';\n\nexport const useElementSetting = < TValue >( elementId: ElementID, settingKey: string ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() => getElementSetting< TValue >( elementId, settingKey ),\n\t\t[ elementId, settingKey ]\n\t);\n};\n\nexport const useElementSettings = < TValue >( elementId: ElementID, settingKeys: string[] ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() =>\n\t\t\tsettingKeys.reduce< Record< string, TValue > >( ( settings, key ) => {\n\t\t\t\tconst value = getElementSetting< TValue >( elementId, key );\n\n\t\t\t\tif ( value !== null ) {\n\t\t\t\t\tsettings[ key ] = value;\n\t\t\t\t}\n\n\t\t\t\treturn settings;\n\t\t\t}, {} ),\n\t\t[ elementId, settingKeys.join( ',' ) ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementSetting = < TValue >( elementId: ElementID, settingKey: string ): TValue | null => {\n\tconst container = getContainer( elementId );\n\n\treturn ( container?.settings?.get( settingKey ) as TValue ) ?? null;\n};\n\nexport const getElementSettings = < TValue >(\n\telementId: ElementID,\n\tsettingKey: string[]\n): Record< string, TValue | null > => {\n\treturn Object.fromEntries( settingKey.map( ( key ) => [ key, getElementSetting( elementId, key ) ] ) );\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useParentElement( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/create' ) ],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow = window as unknown as ExtendedWindow;\n\t\t\tconst element = extendedWindow?.elementor?.getContainer?.( elementId );\n\t\t\tif ( ! element ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn element.parent;\n\t\t},\n\t\t[ elementId ]\n\t);\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementType } from '../sync/get-element-type';\nimport { getSelectedElements } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\tconst elements = useListenTo(\n\t\t[\n\t\t\tcommandEndEvent( 'document/elements/select' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect' ),\n\t\t\tcommandEndEvent( 'document/elements/select-all' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect-all' ),\n\t\t],\n\t\tgetSelectedElements\n\t);\n\n\tconst [ element ] = elements;\n\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type ExtendedWindow, type V1ElementConfig } from '../sync/types.js';\ntype WidgetsCache< T > = Record< string, T >;\n\nexport function getWidgetsCache< T extends V1ElementConfig >(): WidgetsCache< T > | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn ( extendedWindow?.elementor?.widgetsCache as WidgetsCache< T > ) || null;\n}\n","import { type ElementType } from '../types';\nimport { getWidgetsCache } from './get-widgets-cache';\n\nexport function getElementType( type: string ): ElementType | null {\n\tif ( ! type ) {\n\t\treturn null;\n\t}\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\tif ( ! elementType?.atomic_controls ) {\n\t\treturn null;\n\t}\n\n\tif ( ! elementType?.atomic_props_schema ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tkey: type,\n\t\tcontrols: elementType.atomic_controls,\n\t\tpropsSchema: elementType.atomic_props_schema,\n\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\ttitle: elementType.title,\n\t\tstyleStates: elementType.atomic_style_states ?? [],\n\t};\n}\n","import { type Element } from '../types';\nimport { type ExtendedWindow } from './types';\n\nexport function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type CreateElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function createElement( { containerId, model, options }: CreateElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'document/elements/create', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions: { edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement, type CreateElementParams } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype CreateNestedElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tcreateParams: CreateElementParams;\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateNestedElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateNestedElementsParams ): CreatedElementsResult => {\n\tconst undoableCreate = undoable(\n\t\t{\n\t\t\tdo: ( { elements: elementsParam }: { elements: CreateElementParams[] } ): CreatedElementsResult => {\n\t\t\t\tconst createdElements: CreatedElement[] = [];\n\n\t\t\t\telementsParam.forEach( ( createParams ) => {\n\t\t\t\t\tconst { options, ...elementParams } = createParams;\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\t...elementParams,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tcreatedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\tcreateParams: {\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements };\n\t\t\t},\n\t\t\tundo: ( _: { elements: CreateElementParams[] }, { createdElements }: CreatedElementsResult ) => {\n\t\t\t\t// Delete elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...createdElements ].reverse().forEach( ( { elementId } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elements: CreateElementParams[] },\n\t\t\t\t{ createdElements }: CreatedElementsResult\n\t\t\t): CreatedElementsResult => {\n\t\t\t\tconst newElements: CreatedElement[] = [];\n\n\t\t\t\tcreatedElements.forEach( ( { createParams, model } ) => {\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainerId: createParams.containerId,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...createParams.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tcreateParams,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements: newElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableCreate( { elements } );\n};\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\nexport function deleteElement( {\n\telementId,\n\toptions = {},\n}: {\n\telementId: string;\n\toptions?: Options;\n} ): Promise< void > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\treturn runCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tscrollIntoView: boolean;\n};\n\nexport type DropElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function dropElement( { containerId, model, options }: DropElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'preview/drop', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions,\n\t} );\n}\n","import { 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 } 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[] ) => void;\n};\n\ntype DuplicatedElement = {\n\tid: string;\n\tmodel: V1ElementModelProps;\n\toriginalElementId: string;\n\tmodelToRestore?: V1ElementModelProps;\n\tparentContainerId?: string;\n\tat?: number;\n};\n\ntype DuplicatedElementsResult = {\n\tduplicatedElements: DuplicatedElement[];\n};\n\nexport type { DuplicateElementsParams, DuplicatedElement, DuplicatedElementsResult };\n\nexport const duplicateElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item duplicated', 'elementor' ),\n}: 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 };\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 };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableDuplicate( { elementIds } );\n};\n","import { type ExtendedWindow } from './types';\n\nexport const generateElementId = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn (\n\t\textendedWindow.elementorCommon?.helpers?.getUniqueId?.() ??\n\t\t`el-${ Date.now() }-${ Math.random().toString( 36 ).substring( 2, 9 ) }`\n\t);\n};\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentContainer() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrent?.()?.container ?? null;\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentId() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;\n}\n","import { createError } from '@elementor/utils';\n\nexport const ElementNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_not_found',\n\tmessage: 'Element not found.',\n} );\n\nexport const StyleNotFoundError = createError< { styleId: string } >( {\n\tcode: 'style_not_found',\n\tmessage: 'Style not found.',\n} );\n\nexport const ElementTypeNotExistsError = createError< { elementId: string } >( {\n\tcode: 'element_type_not_exists',\n\tmessage: 'Element type does not exist.',\n} );\n\nexport const ElementLabelNotExistsError = createError< { elementType: string } >( {\n\tcode: 'element_label_not_exists',\n\tmessage: 'Element label does not exist.',\n} );\n\nexport const ElementParentNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_parent_not_found',\n\tmessage: 'Element parent not found.',\n} );\n\nexport const ElementIndexNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_index_not_found',\n\tmessage: 'Element index not found.',\n} );\n","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\nimport { getSelectedElements } from './get-selected-elements';\n\nexport function getElementLabel( elementId?: ElementID ) {\n\tif ( ! elementId ) {\n\t\telementId = getSelectedElements()?.[ 0 ]?.id;\n\t}\n\n\tconst container = getContainer( elementId );\n\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tif ( ! type ) {\n\t\tthrow new ElementTypeNotExistsError( { context: { elementId } } );\n\t}\n\n\tconst label = getWidgetsCache()?.[ type ]?.title;\n\n\tif ( ! label ) {\n\t\tthrow new ElementLabelNotExistsError( { context: { elementType: type } } );\n\t}\n\n\treturn label;\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementStyles = ( elementID: ElementID ): Record< string, StyleDefinition > | null => {\n\tconst container = getContainer( elementID );\n\n\treturn container?.model.get( 'styles' ) || null;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { getCurrentDocumentContainer } from './get-current-document-container';\nimport { type V1Element } from './types';\n\nexport function getElements( root?: ElementID ): V1Element[] {\n\tconst container = root ? getContainer( root ) : getCurrentDocumentContainer();\n\n\tif ( ! container ) {\n\t\treturn [];\n\t}\n\n\tconst children = [ ...( container.model.get( 'elements' ) ?? [] ) ].flatMap( ( childModel ) =>\n\t\tgetElements( childModel.get( 'id' ) )\n\t);\n\n\treturn [ container, ...children ];\n}\n","import { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tedit?: boolean;\n};\n\nexport type MoveElementParams = {\n\telementId: string;\n\ttargetContainerId: string;\n\toptions?: Options;\n};\n\nexport function moveElement( { elementId, targetContainerId, options = {} }: MoveElementParams ) {\n\tconst container = getContainer( elementId );\n\tconst target = getContainer( targetContainerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tif ( ! target ) {\n\t\tthrow new Error( `Target container with ID \"${ targetContainerId }\" not found` );\n\t}\n\n\tconst modelToRecreate = container.model.toJSON();\n\n\tdeleteElement( {\n\t\telementId,\n\t\t// prevent inner history from being created\n\t\toptions: { ...options, useHistory: false },\n\t} );\n\n\tconst newContainer = createElement( {\n\t\tcontainerId: targetContainerId,\n\t\tmodel: modelToRecreate,\n\t\t// prevent inner history from being created\n\t\toptions: { edit: false, ...options, useHistory: false },\n\t} );\n\n\treturn newContainer;\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getContainer } from './get-container';\nimport { moveElement, type MoveElementParams } from './move-element';\nimport { type V1Element } from './types';\n\ntype MoveElementsParams = {\n\tmoves: MoveElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonMoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype OriginalPosition = {\n\telementId: string;\n\toriginalContainerId: string;\n\toriginalIndex: number;\n};\n\ntype MovedElement = {\n\telementId: string;\n\toriginalPosition: OriginalPosition;\n\tmove: MoveElementParams;\n\telement: V1Element;\n};\n\ntype MovedElementsResult = {\n\tmovedElements: MovedElement[];\n};\n\nexport type { MoveElementsParams, MovedElement, MovedElementsResult };\n\nexport const moveElements = ( {\n\tmoves: movesToMake,\n\ttitle,\n\tsubtitle = __( 'Elements moved', 'elementor' ),\n\tonMoveElements,\n\tonRestoreElements,\n}: MoveElementsParams ): MovedElementsResult => {\n\tconst undoableMove = undoable(\n\t\t{\n\t\t\tdo: ( { moves }: { moves: MoveElementParams[] } ): MovedElementsResult => {\n\t\t\t\tconst movedElements: MovedElement[] = [];\n\t\t\t\t// Call onMoveElements before moving element to avoid conflicts between commands\n\t\t\t\tonMoveElements?.();\n\t\t\t\tmoves.forEach( ( move ) => {\n\t\t\t\t\tconst { elementId } = move;\n\t\t\t\t\tconst sourceContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( ! sourceContainer ) {\n\t\t\t\t\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalContainerId = sourceContainer.parent?.id || '';\n\t\t\t\t\tconst originalIndex = sourceContainer.parent?.children?.indexOf( sourceContainer ) ?? -1;\n\n\t\t\t\t\tconst originalPosition: OriginalPosition = {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalContainerId,\n\t\t\t\t\t\toriginalIndex,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tmovedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements };\n\t\t\t},\n\t\t\tundo: ( _: { moves: MoveElementParams[] }, { movedElements }: MovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t[ ...movedElements ].reverse().forEach( ( { originalPosition } ) => {\n\t\t\t\t\tconst { elementId, originalContainerId, originalIndex } = originalPosition;\n\n\t\t\t\t\tmoveElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\ttargetContainerId: originalContainerId,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\tat: originalIndex >= 0 ? originalIndex : undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { moves: MoveElementParams[] },\n\t\t\t\t{ movedElements }: MovedElementsResult\n\t\t\t): MovedElementsResult => {\n\t\t\t\tconst newMovedElements: MovedElement[] = [];\n\t\t\t\tonMoveElements?.();\n\n\t\t\t\tmovedElements.forEach( ( { move, originalPosition } ) => {\n\t\t\t\t\tconst element = moveElement( {\n\t\t\t\t\t\t...move,\n\t\t\t\t\t\toptions: { ...move.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewMovedElements.push( {\n\t\t\t\t\t\telementId: move.elementId,\n\t\t\t\t\t\toriginalPosition,\n\t\t\t\t\t\tmove,\n\t\t\t\t\t\telement,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { movedElements: newMovedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableMove( { moves: movesToMake } );\n};\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps } from './types';\n\ntype RemoveNestedElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonRemoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype RemovedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tparent: V1Element | null;\n\tat: number;\n};\n\ntype RemovedElementsResult = {\n\telementIds: string[];\n\tremovedElements: RemovedElement[];\n};\n\nexport type { RemoveNestedElementsParams, RemovedElement, RemovedElementsResult };\n\nexport const removeElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item removed', 'elementor' ),\n\tonRemoveElements,\n\tonRestoreElements,\n}: RemoveNestedElementsParams ): RemovedElementsResult => {\n\tconst undoableRemove = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsParam }: { elementIds: string[] } ): RemovedElementsResult => {\n\t\t\t\tconst removedElements: RemovedElement[] = [];\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tconst model = container.model.toJSON();\n\t\t\t\t\t\tconst parent = container.parent;\n\n\t\t\t\t\t\tconst at = container.view?._index ?? 0;\n\n\t\t\t\t\t\tremovedElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tparent: parent ?? null,\n\t\t\t\t\t\t\tat,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\t// Call onRemoveElements before deleting elements to avoid conflicts between commands\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\telementIdsParam.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: elementIdsParam, removedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { removedElements }: RemovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t// Restore elements in reverse order to maintain proper hierarchy\n\t\t\t\t[ ...removedElements ].reverse().forEach( ( { model, parent, at } ) => {\n\t\t\t\t\tif ( parent && model ) {\n\t\t\t\t\t\tcreateElement( {\n\t\t\t\t\t\t\tcontainerId: parent.id,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\toptions: { useHistory: false, at },\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ elementIds: originalElementIds, removedElements }: RemovedElementsResult\n\t\t\t): RemovedElementsResult => {\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\toriginalElementIds.forEach( ( elementId ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { elementIds: originalElementIds, removedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableRemove( { elementIds } );\n};\n","import { ElementIndexNotFoundError, ElementNotFoundError, ElementParentNotFoundError } from '../errors';\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementData, type V1ElementModelProps } from './types';\n\ntype ElementLocation = {\n\tcontainerId: string;\n\tindex: number;\n};\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1ElementData;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst { containerId, index } = getNewElementLocation( currentElement, newElement );\n\n\tcreateElement( {\n\t\tcontainerId,\n\t\tmodel: newElement,\n\t\toptions: { at: index, useHistory: withHistory },\n\t} );\n\n\tdeleteElement( { elementId: currentElement.id, options: { useHistory: withHistory } } );\n};\n\nfunction getNewElementLocation(\n\tcurrentElement: V1ElementData,\n\tnewElement: Omit< V1ElementModelProps, 'id' >\n): ElementLocation {\n\tlet location: ElementLocation;\n\n\tconst currentElementContainer = getContainer( currentElement.id );\n\tif ( ! currentElementContainer ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst parent = currentElementContainer.parent;\n\tif ( ! parent ) {\n\t\tthrow new ElementParentNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst elementIndex = currentElementContainer.view?._index ?? 0;\n\tif ( elementIndex === undefined || elementIndex === -1 ) {\n\t\tthrow new ElementIndexNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tlocation = { containerId: parent.id, index: elementIndex };\n\n\t// If the element is at document top level and is a widget, wrap it with an empty container\n\tif ( parent.id === 'document' && newElement.elType === 'widget' ) {\n\t\tlocation = createWrapperForWidget( parent.id, elementIndex );\n\t}\n\n\treturn location;\n}\n\nfunction createWrapperForWidget( parentId: string, elementIndex: number ): ElementLocation {\n\tconst container = createElement( {\n\t\tcontainerId: parentId,\n\t\tmodel: { elType: 'container' },\n\t\toptions: { at: elementIndex, useHistory: false },\n\t} );\n\n\treturn { containerId: container.id, index: 0 };\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementEditorSettings = ( {\n\telementId,\n\tsettings,\n}: {\n\telementId: string;\n\tsettings: V1ElementModelProps[ 'editor_settings' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\tconst editorSettings = element.model.get( 'editor_settings' ) ?? {};\n\n\telement.model.set( 'editor_settings', { ...editorSettings, ...settings } );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n","import { type Props } from '@elementor/editor-props';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport type UpdateElementSettingsArgs = {\n\tid: ElementID;\n\tprops: Props;\n\twithHistory?: boolean;\n};\n\nexport const updateElementSettings = ( { id, props, withHistory = true }: UpdateElementSettingsArgs ) => {\n\tconst container = getContainer( id );\n\n\tconst args = {\n\t\tcontainer,\n\t\tsettings: { ...props },\n\t};\n\n\tif ( withHistory ) {\n\t\trunCommandSync( 'document/elements/settings', args );\n\t} else {\n\t\trunCommandSync( 'document/elements/set-settings', args, { internal: true } );\n\t}\n};\n","import { 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","import { commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport const ELEMENT_STYLE_CHANGE_EVENT = 'elementor/editor-v2/editor-elements/style';\n\nexport const styleRerenderEvents = [\n\tcommandEndEvent( 'document/elements/create' ),\n\tcommandEndEvent( 'document/elements/duplicate' ),\n\tcommandEndEvent( 'document/elements/import' ),\n\tcommandEndEvent( 'document/elements/paste' ),\n\twindowEvent( ELEMENT_STYLE_CHANGE_EVENT ),\n];\n","import { classesPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tgenerateId,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type CreateElementStyleArgs = {\n\tstyleId?: StyleDefinitionID;\n\telementId: ElementID;\n\tclassesProp: string;\n\tlabel: string;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n\tadditionalVariants?: StyleDefinitionVariant[];\n};\n\nexport function createElementStyle( {\n\tstyleId,\n\telementId,\n\tclassesProp,\n\tlabel,\n\tmeta,\n\tprops,\n\tcustom_css: customCss = null,\n\tadditionalVariants = [],\n}: CreateElementStyleArgs ): string {\n\tlet id = styleId;\n\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\tid ??= generateId( `e-${ elementId }-`, Object.keys( styles ) );\n\n\t\tconst variants = [ { meta, props, custom_css: customCss }, ...additionalVariants ];\n\n\t\tstyles[ id ] = {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} satisfies StyleDefinition;\n\n\t\taddStyleToClassesProp( elementId, classesProp, id );\n\n\t\treturn styles;\n\t} );\n\n\treturn id as string;\n}\n\nfunction addStyleToClassesProp( elementId: ElementID, classesProp: string, styleId: string ) {\n\tconst base = getElementSetting( elementId, classesProp );\n\n\tconst classesPropValue = classesPropTypeUtil.create(\n\t\t( prev ) => {\n\t\t\treturn [ ...( prev ?? [] ), styleId ];\n\t\t},\n\t\t{ base }\n\t);\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\t[ classesProp ]: classesPropValue,\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n\nexport function shouldCreateNewLocalStyle< T >(\n\tpayload: { styleId: StyleDefinition[ 'id' ] | null; provider: T | null } | null\n) {\n\treturn ! payload?.styleId && ! payload?.provider;\n}\n","import { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionsMap } from '@elementor/editor-styles';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { ElementNotFoundError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { type V1Element } from '../sync/types';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { ELEMENT_STYLE_CHANGE_EVENT } from './consts';\n\ntype Mutator = ( styles: StyleDefinitionsMap ) => StyleDefinitionsMap;\n\nexport function mutateElementStyles( elementId: ElementID, mutator: Mutator ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId } } );\n\t}\n\n\tconst oldIds = Object.keys( container.model.get( 'styles' ) ?? {} );\n\n\tconst styles = mutateStyles( container, mutator );\n\n\tconst newIds = Object.keys( styles );\n\n\tclearRemovedClasses( container, {\n\t\toldIds,\n\t\tnewIds,\n\t} );\n\n\tnotifyChanges();\n\n\treturn styles;\n}\n\nfunction mutateStyles( container: V1Element, mutator: Mutator ) {\n\tconst styles: StyleDefinitionsMap = structuredClone( container.model.get( 'styles' ) ) ?? {};\n\n\tconst entries = Object.entries( mutator( styles ) )\n\t\t.map( ( [ styleId, style ] ) => {\n\t\t\tstyle.variants = removeEmptyVariants( style );\n\n\t\t\treturn [ styleId, style ] as const;\n\t\t} )\n\t\t.filter( ( [ , style ] ) => {\n\t\t\treturn ! isStyleEmpty( style );\n\t\t} );\n\n\tconst mutatedStyles = Object.fromEntries( entries );\n\n\tcontainer.model.set( 'styles', mutatedStyles );\n\n\treturn mutatedStyles;\n}\n\nfunction removeEmptyVariants( style: StyleDefinition ) {\n\treturn style.variants.filter(\n\t\t( { props, custom_css: customCss } ) => Object.keys( props ).length > 0 || customCss?.raw\n\t);\n}\n\nfunction isStyleEmpty( style: StyleDefinition ) {\n\treturn style.variants.length === 0;\n}\n\nfunction clearRemovedClasses( container: V1Element, { oldIds, newIds }: { oldIds: string[]; newIds: string[] } ) {\n\tconst removedIds = oldIds.filter( ( id ) => ! newIds.includes( id ) );\n\tconst classesProps = structuredClone( getClassesProps( container ) );\n\n\tclassesProps.forEach( ( [ , prop ] ) => {\n\t\tprop.value = prop.value.filter( ( value ) => ! removedIds.includes( value ) );\n\t} );\n\n\tupdateElementSettings( {\n\t\tid: container.id,\n\t\tprops: Object.fromEntries( classesProps ),\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getClassesProps( container: V1Element ) {\n\treturn Object.entries( container.settings.toJSON() ).filter( ( prop ): prop is [ string, ClassesPropValue ] => {\n\t\tconst [ , value ] = prop;\n\n\t\treturn classesPropTypeUtil.isValid( value );\n\t} );\n}\n\nfunction notifyChanges() {\n\tdispatchChangeEvent();\n\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n}\n\nfunction dispatchChangeEvent() {\n\twindow.dispatchEvent( new CustomEvent( ELEMENT_STYLE_CHANGE_EVENT ) );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport function deleteElementStyle( elementId: ElementID, styleId: StyleDefinitionID ) {\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\t// The object is deep cloned so mutating it is fine.\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete styles[ styleId ];\n\n\t\treturn styles;\n\t} );\n}\n","import { mergeProps } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { StyleNotFoundError } from '../errors';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type UpdateElementStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n};\n\nexport function updateElementStyle( args: UpdateElementStyleArgs ) {\n\tmutateElementStyles( args.elementId, ( styles ) => {\n\t\tconst style = styles[ args.styleId ];\n\n\t\tif ( ! style ) {\n\t\t\tthrow new StyleNotFoundError( { context: { styleId: args.styleId } } );\n\t\t}\n\n\t\tconst variant = getVariantByMeta( style, args.meta );\n\t\tconst customCss = ( 'custom_css' in args ? args.custom_css : variant?.custom_css ) ?? null;\n\n\t\tif ( variant ) {\n\t\t\tvariant.props = mergeProps( variant.props, args.props );\n\t\t\tvariant.custom_css = customCss?.raw ? customCss : null;\n\t\t} else {\n\t\t\tstyle.variants.push( { meta: args.meta, props: args.props, custom_css: customCss } );\n\t\t}\n\n\t\treturn styles;\n\t} );\n}\n","import { useState } from 'react';\nimport { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementInteractions } from '../sync/get-element-interactions';\nimport { type ElementInteractions } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport const useElementInteractions = ( elementId: ElementID ) => {\n\tconst [ interactions, setInteractions ] = useState< ElementInteractions >( () => {\n\t\tconst initial = getElementInteractions( elementId );\n\n\t\treturn initial ?? { version: 1, items: [] };\n\t} );\n\n\tuseListenTo(\n\t\twindowEvent( 'elementor/element/update_interactions' ),\n\t\t() => {\n\t\t\tconst newInteractions = getElementInteractions( elementId );\n\t\t\tsetInteractions( newInteractions ?? { version: 1, items: [] } );\n\t\t},\n\t\t[ elementId ]\n\t);\n\n\treturn interactions;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { type ElementInteractions } from './types';\n\nexport function getElementInteractions( elementId: ElementID ): ElementInteractions | undefined {\n\tconst container = getContainer( elementId );\n\n\tconst interactions = container?.model?.get( 'interactions' );\n\n\tif ( typeof interactions === 'string' ) {\n\t\treturn JSON.parse( interactions ) as ElementInteractions;\n\t}\n\n\treturn interactions;\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementInteractions = ( {\n\telementId,\n\tinteractions,\n}: {\n\telementId: string;\n\tinteractions: V1ElementModelProps[ 'interactions' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\telement.model.set( 'interactions', interactions );\n\n\twindow.dispatchEvent( new CustomEvent( 'elementor/element/update_interactions' ) );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nexport const playElementInteractions = ( elementId: string, animationId: string ) => {\n\twindow.top?.dispatchEvent( new CustomEvent( 'atomic/play_interactions', { detail: { elementId, animationId } } ) );\n};\n\nfunction setDocumentModifiedStatus( status: boolean ) {\n\trunCommandSync( 'document/save/set-is-modified', { status }, { internal: true } );\n}\n","import { getMCPByDomain } from '@elementor/editor-mcp';\n\nimport { initElementsTool } from './elements-tool';\n\nexport function initMcp() {\n\tconst { setMCPDescription } = getMCPByDomain( 'elements' );\n\tsetMCPDescription( 'Tools for managing atomic elements in Elementor v4 editor' );\n\tinitElementsTool();\n}\n","import { getMCPByDomain } from '@elementor/editor-mcp';\nimport { type Props, type TransformablePropValue } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { handleCreateElement } from './handlers/create-element';\nimport { handleCreateStyle } from './handlers/create-style';\nimport { handleDeleteElement } from './handlers/delete-element';\nimport { handleDeleteStyle } from './handlers/delete-style';\nimport { handleDeselectAllElements, handleDeselectElement } from './handlers/deselect-element';\nimport { handleDuplicateElement } from './handlers/duplicate-element';\nimport { handleGetElementProps } from './handlers/get-element-props';\nimport { handleGetElementSchema } from './handlers/get-element-schema';\nimport { handleGetSelected } from './handlers/get-selected';\nimport { handleGetStyles } from './handlers/get-styles';\nimport { handleListAvailableTypes } from './handlers/list-available-types';\nimport { handleMoveElement } from './handlers/move-element';\nimport { handleSelectElement, handleSelectMultipleElements } from './handlers/select-element';\nimport { handleUpdateProps } from './handlers/update-props';\nimport { handleUpdateStyles } from './handlers/update-styles';\n\nconst actionEnum = z.enum( [\n\t'get-element-schema',\n\t'get-element-props',\n\t'create-element',\n\t'update-props',\n\t'create-style',\n\t'get-styles',\n\t'update-styles',\n\t'delete-style',\n\t'delete',\n\t'duplicate',\n\t'move',\n\t'select',\n\t'deselect',\n\t'deselect-all',\n\t'get-selected',\n\t'list-available-types',\n] );\n\ntype Action = z.infer< typeof actionEnum >;\n\nconst schema = {\n\taction: actionEnum.describe( 'The element operation to perform.' ),\n\telementId: z.string().optional().describe( 'The ID of the target element' ),\n\telementIds: z.array( z.string() ).optional().describe( 'Array of element IDs for multi-element operations' ),\n\telementType: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe(\n\t\t\t'The type of element to create. Must be an atomic element type (required for create-element and get-element-schema actions)'\n\t\t),\n\tprops: z\n\t\t.record( z.any() )\n\t\t.optional()\n\t\t.describe( \"Props object for creating or updating an element. Must match the element type's propsSchema.\" ),\n\tcontainerId: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe(\n\t\t\t'Parent container ID for element creation or move operations. Use \"document\" if parent is the document root.'\n\t\t),\n\ttargetContainerId: z.string().optional().describe( 'Target container ID for move operations' ),\n\tstyles: z\n\t\t.record( z.any() )\n\t\t.optional()\n\t\t.describe(\n\t\t\t\"Styles object for creating or updating element styles. Must match the element type's stylesSchema.\"\n\t\t),\n\tstyleId: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe(\n\t\t\t'Style definition ID for style operations. If not provided, the first available style will be used (for update/delete).'\n\t\t),\n\tbreakpoint: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe( 'Breakpoint for style operations (e.g., \"desktop\", \"tablet\", \"mobile\"). Defaults to \"desktop\".' ),\n\tstate: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe( 'State for style operations (e.g., \"hover\", \"active\", or null). Defaults to null.' ),\n\tclassesProp: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe( 'Classes property name for create-style action. Defaults to \"classes\".' ),\n\tlabel: z.string().optional().describe( 'Label for create-style action. Defaults to \"local\".' ),\n\tcustom_css: z\n\t\t.object( { raw: z.string() } )\n\t\t.optional()\n\t\t.describe( 'Custom CSS object with raw CSS string for create-style action.' ),\n};\n\ntype ToolParams = {\n\taction: Action;\n\telementId?: string;\n\telementIds?: string[];\n\telementType?: string;\n\tprops?: Record< string, TransformablePropValue< string > >;\n\tcontainerId?: string;\n\ttargetContainerId?: string;\n\tstyles?: Props;\n\tstyleId?: string;\n\tbreakpoint?: string;\n\tstate?: string | null;\n\tclassesProp?: string;\n\tlabel?: string;\n\tcustom_css?: { raw: string } | null;\n};\n\nfunction routeAction( params: ToolParams ) {\n\ttry {\n\t\tswitch ( params.action ) {\n\t\t\tcase 'get-element-schema':\n\t\t\t\tif ( ! params.elementType ) {\n\t\t\t\t\tthrow new Error( 'elementType is required for get-element-schema action' );\n\t\t\t\t}\n\t\t\t\treturn handleGetElementSchema( params.elementType );\n\n\t\t\tcase 'get-element-props':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for get-element-props action' );\n\t\t\t\t}\n\t\t\t\treturn handleGetElementProps( params.elementId );\n\n\t\t\tcase 'create-element':\n\t\t\t\tif ( ! params.elementType ) {\n\t\t\t\t\tthrow new Error( 'elementType is required for create-element action' );\n\t\t\t\t}\n\t\t\t\tif ( ! params.containerId ) {\n\t\t\t\t\tthrow new Error( 'containerId is required for create-element action' );\n\t\t\t\t}\n\t\t\t\treturn handleCreateElement( {\n\t\t\t\t\telementType: params.elementType,\n\t\t\t\t\tcontainerId: params.containerId,\n\t\t\t\t\tprops: params.props,\n\t\t\t\t\tstyles: params.styles,\n\t\t\t\t} );\n\n\t\t\tcase 'update-props':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for update-props action' );\n\t\t\t\t}\n\t\t\t\tif ( ! params.props ) {\n\t\t\t\t\tthrow new Error( 'props is required for update-props action' );\n\t\t\t\t}\n\t\t\t\treturn handleUpdateProps( {\n\t\t\t\t\telementId: params.elementId,\n\t\t\t\t\tprops: params.props,\n\t\t\t\t} );\n\n\t\t\tcase 'create-style':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for create-style action' );\n\t\t\t\t}\n\t\t\t\tif ( ! params.styles ) {\n\t\t\t\t\tthrow new Error( 'styles is required for create-style action' );\n\t\t\t\t}\n\t\t\t\treturn handleCreateStyle( {\n\t\t\t\t\telementId: params.elementId,\n\t\t\t\t\tstyleId: params.styleId,\n\t\t\t\t\tclassesProp: params.classesProp,\n\t\t\t\t\tlabel: params.label,\n\t\t\t\t\tstyles: params.styles,\n\t\t\t\t\tbreakpoint: params.breakpoint,\n\t\t\t\t\tstate: params.state,\n\t\t\t\t\tcustomCss: params.custom_css,\n\t\t\t\t} );\n\n\t\t\tcase 'get-styles':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for get-styles action' );\n\t\t\t\t}\n\t\t\t\treturn handleGetStyles( params.elementId );\n\n\t\t\tcase 'update-styles':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for update-styles action' );\n\t\t\t\t}\n\t\t\t\tif ( ! params.styles ) {\n\t\t\t\t\tthrow new Error( 'styles is required for update-styles action' );\n\t\t\t\t}\n\t\t\t\treturn handleUpdateStyles( {\n\t\t\t\t\telementId: params.elementId,\n\t\t\t\t\tstyleId: params.styleId,\n\t\t\t\t\tstyles: params.styles,\n\t\t\t\t\tbreakpoint: params.breakpoint,\n\t\t\t\t\tstate: params.state,\n\t\t\t\t} );\n\n\t\t\tcase 'delete-style':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for delete-style action' );\n\t\t\t\t}\n\t\t\t\treturn handleDeleteStyle( {\n\t\t\t\t\telementId: params.elementId,\n\t\t\t\t\tstyleId: params.styleId,\n\t\t\t\t} );\n\n\t\t\tcase 'delete':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for delete action' );\n\t\t\t\t}\n\t\t\t\treturn handleDeleteElement( params.elementId );\n\n\t\t\tcase 'duplicate':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for duplicate action' );\n\t\t\t\t}\n\t\t\t\treturn handleDuplicateElement( params.elementId );\n\n\t\t\tcase 'move':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for move action' );\n\t\t\t\t}\n\t\t\t\tif ( ! params.targetContainerId ) {\n\t\t\t\t\tthrow new Error( 'targetContainerId is required for move action' );\n\t\t\t\t}\n\t\t\t\treturn handleMoveElement( {\n\t\t\t\t\telementId: params.elementId,\n\t\t\t\t\ttargetContainerId: params.targetContainerId,\n\t\t\t\t} );\n\n\t\t\tcase 'select':\n\t\t\t\tif ( params.elementIds && params.elementIds.length > 0 ) {\n\t\t\t\t\treturn handleSelectMultipleElements( params.elementIds );\n\t\t\t\t}\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId or elementIds is required for select action' );\n\t\t\t\t}\n\t\t\t\treturn handleSelectElement( params.elementId );\n\n\t\t\tcase 'deselect':\n\t\t\t\tif ( ! params.elementId ) {\n\t\t\t\t\tthrow new Error( 'elementId is required for deselect action' );\n\t\t\t\t}\n\t\t\t\treturn handleDeselectElement( params.elementId );\n\n\t\t\tcase 'deselect-all':\n\t\t\t\treturn handleDeselectAllElements();\n\n\t\t\tcase 'get-selected':\n\t\t\t\treturn handleGetSelected();\n\n\t\t\tcase 'list-available-types':\n\t\t\t\treturn handleListAvailableTypes();\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( `Unknown action: ${ params.action }` );\n\t\t}\n\t} catch ( error ) {\n\t\tconst errorMessage = error instanceof Error ? error.message : String( error );\n\t\tthrow new Error( `Failed to execute action \"${ params.action }\": ${ errorMessage }` );\n\t}\n}\n\nexport function initElementsTool() {\n\tgetMCPByDomain( 'elements' ).addTool( {\n\t\tname: 'elements',\n\t\tschema,\n\t\tdescription: `This tool manages individual Elementor atomic elements (v4).\n\n**When to use this tool:**\n\nUse this tool to create, update, delete, duplicate, move, and select individual atomic elements, as well as retrieve their schemas and current props.\n\n**Available actions:**\n\n- \\`list-available-types\\`: List all available atomic element types.\n- \\`get-element-schema\\`: Get the propsSchema and controls for an element type. Required before creating elements of a new type.\n- \\`get-element-props\\`: Get the current prop values for an existing element.\n- \\`create-element\\`: Create a new atomic element with specified props and styles (Important to match props and styles by the schema, use get-element-schema to get the schema first).\n- \\`update-props\\`: Update props for an existing element.\n- \\`create-style\\`: Create a new style definition for an element.\n- \\`get-styles\\`: Get all style definitions for an element.\n- \\`update-styles\\`: Update styles for an existing element's style variant.\n- \\`delete-style\\`: Delete a style definition from an element.\n- \\`delete\\`: Delete an element.\n- \\`duplicate\\`: Duplicate an existing element.\n- \\`move\\`: Move an element to a different container.\n- \\`select\\`: Select one or more elements.\n- \\`deselect\\`: Deselect a specific element.\n- \\`deselect-all\\`: Deselect all selected elements.\n- \\`get-selected\\`: Get currently selected elements.\n\n**Constraints:**\n\n- Before creating an element of a certain type for the first time, you MUST call \\`get-element-schema\\` to retrieve its schema.\n- You can only update props for existing elements.\n- All props must match the element type's propsSchema keys.\n- Element types must be atomic (have atomic_controls and atomic_props_schema).\n- Container IDs must exist and be valid before create/move operations.\n\n** Must do with every operation **\nAs of the user can ask in multiple ways the creation of the element, you need to first get the list of available types with \"list-available-types\" action.\nAfter getting it, convert to the most relevant type that the user requested and if this is not clear, request for user input.\nAfter finding out the proper type, get the schema for it with \"get-element-schema\" action.\n\n** Styles and Settings propUtils **\nGetting the schema is important as it introduces the propUtils for the styles and settings.\nYou can use the propUtils to create, update, delete, and get the values of the styles and settings.\nSettings exists in the result of the get-element-schema action -> propsSchema.\nStyles exists in the result of the get-element-schema action -> stylesSchema.\n\n**Examples:**\n\nGet schema for heading element:\n\\`\\`\\`json\n{ \"action\": \"get-element-schema\", \"elementType\": \"e-heading\" }\n\\`\\`\\`\n\nCreate a heading element:\n\\`\\`\\`json\n{ \"action\": \"create-element\", \"elementType\": \"e-heading\", \"containerId\": \"document\", \"props\": { \"title\": { $$type: \"string\", \"value\": \"Hello World\" } } }\n\\`\\`\\`\n\nUpdate element props:\n\\`\\`\\`json\n{ \"action\": \"update-props\", \"elementId\": \"abc123\", \"props\": { \"title\": \"Updated Title\" } }\n\\`\\`\\`\n\nCreate element style:\n\\`\\`\\`json\n{ \"action\": \"create-style\", \"elementId\": \"abc123\", \"styles\": { \"padding\": \"20px\", \"margin\": \"10px\" } }\n\\`\\`\\`\n\nGet element styles:\n\\`\\`\\`json\n{ \"action\": \"get-styles\", \"elementId\": \"abc123\" }\n\\`\\`\\`\n\nUpdate element styles:\n\\`\\`\\`json\n{ \"action\": \"update-styles\", \"elementId\": \"abc123\", \"styles\": { \"padding\": \"20px\", \"margin\": \"10px\" } }\n\\`\\`\\`\n\nDelete element style:\n\\`\\`\\`json\n{ \"action\": \"delete-style\", \"elementId\": \"abc123\", \"styleId\": \"style-id-123\" }\n\\`\\`\\``,\n\t\thandler: async ( params: ToolParams ) => {\n\t\t\treturn routeAction( params ) as unknown as string;\n\t\t},\n\t} );\n}\n","import { type Props, type TransformablePropValue } from '@elementor/editor-props';\n\nimport { createElementStyle } from '../../styles/create-element-style';\nimport { createElement } from '../../sync/create-element';\nimport { getContainer } from '../../sync/get-container';\nimport { getCurrentDocumentContainer } from '../../sync/get-current-document-container';\nimport { getElementType } from '../../sync/get-element-type';\n\nexport function handleCreateElement( {\n\telementType,\n\tcontainerId,\n\tprops = {},\n\tstyles,\n}: {\n\telementType: string;\n\tcontainerId: string;\n\tprops?: Record< string, TransformablePropValue< string > >;\n\tstyles?: Props;\n} ): { elementId: string; type: string } {\n\tlet container = containerId === 'document' ? getCurrentDocumentContainer() : getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tif ( containerId === 'document' ) {\n\t\t\tthrow new Error( 'Document container not found. Please ensure the editor is initialized.' );\n\t\t}\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\tconst containerElType = container.model.get( 'elType' );\n\tconst isDocument = container.id === 'document' || containerElType === 'document';\n\n\tif ( isDocument ) {\n\t\tconst containerModel = {\n\t\t\telType: 'e-div-block',\n\t\t};\n\n\t\tconst createdContainer = createElement( {\n\t\t\tcontainerId: container.id,\n\t\t\tmodel: containerModel,\n\t\t\toptions: { useHistory: true },\n\t\t} );\n\n\t\tcreateElementStyle( {\n\t\t\telementId: createdContainer.id,\n\t\t\tclassesProp: 'classes',\n\t\t\tlabel: 'local',\n\t\t\tmeta: { breakpoint: 'desktop', state: null },\n\t\t\tprops: {\n\t\t\t\tdisplay: { $$type: 'string', value: 'flex' },\n\t\t\t\t'flex-direction': { $$type: 'string', value: 'row' },\n\t\t\t\t'flex-wrap': { $$type: 'string', value: 'wrap' },\n\t\t\t},\n\t\t} );\n\n\t\tcontainer = getContainer( createdContainer.id );\n\n\t\tif ( ! container ) {\n\t\t\tthrow new Error( 'Failed to create container for widget. Cannot create widgets directly in the document.' );\n\t\t}\n\t}\n\n\tconst actualContainerId = container.id;\n\n\tconst elementTypeData = getElementType( elementType );\n\n\tif ( ! elementTypeData ) {\n\t\tthrow new Error( `Element type \"${ elementType }\" not found or is not atomic` );\n\t}\n\n\tconst model = {\n\t\twidgetType: elementType,\n\t\telType: 'widget',\n\t\tsettings: props,\n\t};\n\n\tconst createdElement = createElement( {\n\t\tcontainerId: actualContainerId,\n\t\tmodel,\n\t\toptions: { useHistory: true },\n\t} );\n\n\tif ( styles ) {\n\t\tcreateElementStyle( {\n\t\t\telementId: createdElement.id,\n\t\t\tclassesProp: 'classes',\n\t\t\tlabel: 'local',\n\t\t\tmeta: { breakpoint: 'desktop', state: null },\n\t\t\tprops: styles,\n\t\t} );\n\t}\n\n\treturn {\n\t\telementId: createdElement.id,\n\t\ttype: elementType,\n\t};\n}\n","import { type BreakpointId } from '@elementor/editor-responsive';\n\nconst VALID_BREAKPOINTS: BreakpointId[] = [\n\t'widescreen',\n\t'desktop',\n\t'laptop',\n\t'tablet_extra',\n\t'tablet',\n\t'mobile_extra',\n\t'mobile',\n];\n\nexport function resolveBreakpointId( breakpoint: string | null ): BreakpointId | null {\n\tif ( breakpoint === null ) {\n\t\treturn null;\n\t}\n\n\tif ( VALID_BREAKPOINTS.includes( breakpoint as BreakpointId ) ) {\n\t\treturn breakpoint as BreakpointId;\n\t}\n\n\treturn 'desktop';\n}\n","import { type Props } from '@elementor/editor-props';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\n\nimport { createElementStyle } from '../../styles/create-element-style';\nimport { resolveBreakpointId } from './common-style-utils';\n\nexport function handleCreateStyle( {\n\telementId,\n\tstyleId,\n\tclassesProp = 'classes',\n\tlabel = 'local',\n\tstyles,\n\tbreakpoint = 'desktop',\n\tstate = null,\n\tcustomCss = null,\n}: {\n\telementId: string;\n\tstyleId?: string;\n\tclassesProp?: string;\n\tlabel?: string;\n\tstyles: Props;\n\tbreakpoint?: string | null;\n\tstate?: string | null;\n\tcustomCss?: { raw: string } | null;\n} ): { styleId: string } {\n\tconst resolvedBreakpoint = resolveBreakpointId( breakpoint );\n\n\tconst resolvedState: StyleDefinitionState =\n\t\tstate === null || state === undefined ? null : ( state as StyleDefinitionState );\n\n\tconst createdStyleId = createElementStyle( {\n\t\tstyleId: styleId as string | undefined,\n\t\telementId,\n\t\tclassesProp,\n\t\tlabel,\n\t\tmeta: { breakpoint: resolvedBreakpoint, state: resolvedState },\n\t\tprops: styles,\n\t\tcustom_css: customCss,\n\t} );\n\n\treturn { styleId: createdStyleId };\n}\n","import { deleteElement } from '../../sync/delete-element';\nimport { getContainer } from '../../sync/get-container';\n\nexport function handleDeleteElement( elementId: string ): { success: boolean } {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tdeleteElement( {\n\t\telementId,\n\t\toptions: { useHistory: true },\n\t} );\n\n\treturn { success: true };\n}\n","import { deleteElementStyle } from '../../styles/delete-element-style';\nimport { getElementStyles } from '../../sync/get-element-styles';\n\nexport function handleDeleteStyle( { elementId, styleId }: { elementId: string; styleId?: string } ): {\n\tsuccess: boolean;\n} {\n\tconst elementStyles = getElementStyles( elementId );\n\n\tif ( ! elementStyles ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" has no styles.` );\n\t}\n\n\tconst resolvedStyleId = styleId || Object.keys( elementStyles )[ 0 ];\n\n\tif ( ! resolvedStyleId ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" has no styles to delete.` );\n\t}\n\n\tdeleteElementStyle( elementId, resolvedStyleId );\n\n\treturn { success: true };\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../../sync/get-container';\n\nexport function handleDeselectElement( elementId: string ): { success: boolean } {\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/deselect', { container } );\n\n\treturn { success: true };\n}\n\nexport function handleDeselectAllElements(): { success: boolean } {\n\trunCommand( 'document/elements/deselect-all', {} );\n\n\treturn { success: true };\n}\n","import { duplicateElement } from '../../sync/duplicate-element';\nimport { getContainer } from '../../sync/get-container';\n\nexport function handleDuplicateElement( elementId: string ): { elementId: string; type: string } {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tconst duplicatedElement = duplicateElement( {\n\t\telementId,\n\t\toptions: { useHistory: true },\n\t} );\n\n\tconst type = duplicatedElement.model.get( 'widgetType' ) || duplicatedElement.model.get( 'elType' ) || '';\n\n\treturn {\n\t\telementId: duplicatedElement.id,\n\t\ttype,\n\t};\n}\n","import { getContainer } from '../../sync/get-container';\nimport { getElementSettings } from '../../sync/get-element-setting';\nimport { getElementType } from '../../sync/get-element-type';\n\nexport function handleGetElementProps( elementId: string ): Record< string, unknown > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tconst type = container.model.get( 'widgetType' ) || container.model.get( 'elType' );\n\n\tif ( ! type ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" has no type` );\n\t}\n\n\tconst elementType = getElementType( type );\n\n\tif ( ! elementType ) {\n\t\tthrow new Error( `Element type \"${ type }\" is not atomic` );\n\t}\n\n\tconst propsSchema = elementType.propsSchema;\n\tconst propKeys = Object.keys( propsSchema );\n\n\treturn getElementSettings( elementId, propKeys );\n}\n","import { type PropType } from '@elementor/editor-props';\nimport { getStylesSchema } from '@elementor/editor-styles';\n\nimport { getElementType } from '../../sync/get-element-type';\nimport type { ElementType } from '../../types';\n\nexport function handleGetElementSchema(\n\telementType: string\n): ElementType & { stylesSchema: Record< string, PropType > } {\n\tconst elementTypeData = getElementType( elementType );\n\n\tif ( ! elementTypeData ) {\n\t\tthrow new Error( `Element type \"${ elementType }\" not found or is not atomic` );\n\t}\n\n\treturn { ...elementTypeData, stylesSchema: getStylesSchema() };\n}\n","import { getSelectedElements } from '../../sync/get-selected-elements';\n\nexport function handleGetSelected(): Array< { id: string; type: string } > {\n\treturn getSelectedElements();\n}\n","import { getElementStyles } from '../../sync/get-element-styles';\n\nexport function handleGetStyles( elementId: string ): Record< string, unknown > | null {\n\tconst styles = getElementStyles( elementId );\n\n\tif ( ! styles ) {\n\t\treturn null;\n\t}\n\n\t// Convert to plain object for JSON serialization\n\treturn Object.fromEntries(\n\t\tObject.entries( styles ).map( ( [ id, style ] ) => [\n\t\t\tid,\n\t\t\t{\n\t\t\t\tid: style.id,\n\t\t\t\tlabel: style.label,\n\t\t\t\ttype: style.type,\n\t\t\t\tvariants: style.variants.map( ( variant ) => ( {\n\t\t\t\t\tmeta: variant.meta,\n\t\t\t\t\tprops: variant.props,\n\t\t\t\t\tcustom_css: variant.custom_css,\n\t\t\t\t} ) ),\n\t\t\t},\n\t\t] )\n\t);\n}\n","import { getWidgetsCache } from '../../sync/get-widgets-cache';\n\nexport type AvailableElementType = {\n\ttype: string;\n\ttitle: string;\n};\n\nexport function handleListAvailableTypes(): AvailableElementType[] {\n\tconst widgetsCache = getWidgetsCache();\n\n\tif ( ! widgetsCache ) {\n\t\treturn [];\n\t}\n\n\tconst availableTypes: AvailableElementType[] = [];\n\n\tObject.entries( widgetsCache ).forEach( ( [ type, config ] ) => {\n\t\tif ( config?.atomic_controls && config?.atomic_props_schema ) {\n\t\t\tavailableTypes.push( {\n\t\t\t\ttype,\n\t\t\t\ttitle: config.title || type,\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn availableTypes;\n}\n","import { getContainer } from '../../sync/get-container';\nimport { moveElement } from '../../sync/move-element';\n\nexport function handleMoveElement( {\n\telementId,\n\ttargetContainerId,\n}: {\n\telementId: string;\n\ttargetContainerId: string;\n} ): { success: boolean } {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tconst targetContainer = getContainer( targetContainerId );\n\n\tif ( ! targetContainer ) {\n\t\tthrow new Error( `Target container with ID \"${ targetContainerId }\" not found` );\n\t}\n\n\tmoveElement( {\n\t\telementId,\n\t\ttargetContainerId,\n\t\toptions: { useHistory: true },\n\t} );\n\n\treturn { success: true };\n}\n","import { getContainer, selectElement } from '../../sync/get-container';\n\nexport function handleSelectElement( elementId: string ): { success: boolean } {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tselectElement( elementId );\n\n\treturn { success: true };\n}\n\nexport function handleSelectMultipleElements( elementIds: string[] ): { success: boolean } {\n\telementIds.forEach( ( elementId ) => {\n\t\tconst container = getContainer( elementId );\n\n\t\tif ( container ) {\n\t\t\tselectElement( elementId );\n\t\t}\n\t} );\n\n\treturn { success: true };\n}\n","import { type Props } from '@elementor/editor-props';\n\nimport { getContainer } from '../../sync/get-container';\nimport { updateElementSettings } from '../../sync/update-element-settings';\n\nexport function handleUpdateProps( { elementId, props }: { elementId: string; props: Record< string, unknown > } ): {\n\tsuccess: boolean;\n} {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: props as Props,\n\t\twithHistory: true,\n\t} );\n\n\treturn { success: true };\n}\n","import { type Props } from '@elementor/editor-props';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\n\nimport { updateElementStyle } from '../../styles/update-element-style';\nimport { getElementStyles } from '../../sync/get-element-styles';\nimport { resolveBreakpointId } from './common-style-utils';\n\nexport function handleUpdateStyles( {\n\telementId,\n\tstyleId,\n\tstyles,\n\tbreakpoint = 'desktop',\n\tstate = null,\n}: {\n\telementId: string;\n\tstyleId?: string;\n\tstyles: Props;\n\tbreakpoint?: string | null;\n\tstate?: string | null;\n} ): { success: boolean } {\n\tconst resolvedBreakpoint = resolveBreakpointId( breakpoint );\n\n\tconst resolvedState: StyleDefinitionState =\n\t\tstate === null || state === undefined ? null : ( state as StyleDefinitionState );\n\tconst elementStyles = getElementStyles( elementId );\n\n\tif ( ! elementStyles ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" has no styles. Create a style first.` );\n\t}\n\n\tconst resolvedStyleId = styleId || Object.keys( elementStyles )[ 0 ];\n\n\tif ( ! resolvedStyleId ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" has no styles. Create a style first.` );\n\t}\n\n\tupdateElementStyle( {\n\t\telementId,\n\t\tstyleId: resolvedStyleId,\n\t\tmeta: { breakpoint: resolvedBreakpoint, state: resolvedState },\n\t\tprops: styles,\n\t} );\n\n\treturn { success: true };\n}\n"],"mappings":"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","names":["import_editor_v1_adapters","runCommand","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_v1_adapters","runCommand","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_props","import_editor_v1_adapters","runCommandSync","import_editor_props","import_editor_styles","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","setDocumentModifiedStatus","runCommandSync","import_editor_mcp","import_editor_v1_adapters","runCommand","import_editor_styles"]}