@elementor/editor-elements 3.35.0-346 → 3.35.0-348
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +7 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/sync/duplicate-elements.ts +9 -2
package/dist/index.d.mts
CHANGED
|
@@ -234,7 +234,8 @@ type DuplicateElementsParams = {
|
|
|
234
234
|
elementIds: string[];
|
|
235
235
|
title: string;
|
|
236
236
|
subtitle?: string;
|
|
237
|
-
|
|
237
|
+
onDuplicateElements?: () => void;
|
|
238
|
+
onRestoreElements?: () => void;
|
|
238
239
|
};
|
|
239
240
|
type DuplicatedElement = {
|
|
240
241
|
id: string;
|
|
@@ -248,7 +249,7 @@ type DuplicatedElementsResult = {
|
|
|
248
249
|
duplicatedElements: DuplicatedElement[];
|
|
249
250
|
};
|
|
250
251
|
|
|
251
|
-
declare const duplicateElements: ({ elementIds, title, subtitle, }: DuplicateElementsParams) => DuplicatedElementsResult;
|
|
252
|
+
declare const duplicateElements: ({ elementIds, title, subtitle, onDuplicateElements, onRestoreElements, }: DuplicateElementsParams) => DuplicatedElementsResult;
|
|
252
253
|
|
|
253
254
|
declare const generateElementId: () => string;
|
|
254
255
|
|
package/dist/index.d.ts
CHANGED
|
@@ -234,7 +234,8 @@ type DuplicateElementsParams = {
|
|
|
234
234
|
elementIds: string[];
|
|
235
235
|
title: string;
|
|
236
236
|
subtitle?: string;
|
|
237
|
-
|
|
237
|
+
onDuplicateElements?: () => void;
|
|
238
|
+
onRestoreElements?: () => void;
|
|
238
239
|
};
|
|
239
240
|
type DuplicatedElement = {
|
|
240
241
|
id: string;
|
|
@@ -248,7 +249,7 @@ type DuplicatedElementsResult = {
|
|
|
248
249
|
duplicatedElements: DuplicatedElement[];
|
|
249
250
|
};
|
|
250
251
|
|
|
251
|
-
declare const duplicateElements: ({ elementIds, title, subtitle, }: DuplicateElementsParams) => DuplicatedElementsResult;
|
|
252
|
+
declare const duplicateElements: ({ elementIds, title, subtitle, onDuplicateElements, onRestoreElements, }: DuplicateElementsParams) => DuplicatedElementsResult;
|
|
252
253
|
|
|
253
254
|
declare const generateElementId: () => string;
|
|
254
255
|
|
package/dist/index.js
CHANGED
|
@@ -385,17 +385,20 @@ var import_i18n2 = require("@wordpress/i18n");
|
|
|
385
385
|
var duplicateElements = ({
|
|
386
386
|
elementIds,
|
|
387
387
|
title,
|
|
388
|
-
subtitle = (0, import_i18n2.__)("Item duplicated", "elementor")
|
|
388
|
+
subtitle = (0, import_i18n2.__)("Item duplicated", "elementor"),
|
|
389
|
+
onDuplicateElements,
|
|
390
|
+
onRestoreElements
|
|
389
391
|
}) => {
|
|
390
392
|
const undoableDuplicate = (0, import_editor_v1_adapters12.undoable)(
|
|
391
393
|
{
|
|
392
394
|
do: ({ elementIds: elementIdsToDuplicate }) => {
|
|
395
|
+
onDuplicateElements?.();
|
|
393
396
|
const duplicatedElements = elementIdsToDuplicate.reduce((acc, elementId) => {
|
|
394
397
|
const originalContainer = getContainer(elementId);
|
|
395
398
|
if (originalContainer?.parent) {
|
|
396
399
|
const duplicatedElement = duplicateElement({
|
|
397
400
|
elementId,
|
|
398
|
-
options: { useHistory: false
|
|
401
|
+
options: { useHistory: false }
|
|
399
402
|
});
|
|
400
403
|
acc.push({
|
|
401
404
|
id: duplicatedElement.id,
|
|
@@ -411,6 +414,7 @@ var duplicateElements = ({
|
|
|
411
414
|
return { duplicatedElements };
|
|
412
415
|
},
|
|
413
416
|
undo: (_, { duplicatedElements }) => {
|
|
417
|
+
onRestoreElements?.();
|
|
414
418
|
[...duplicatedElements].reverse().forEach(({ id }) => {
|
|
415
419
|
deleteElement({
|
|
416
420
|
elementId: id,
|
|
@@ -419,6 +423,7 @@ var duplicateElements = ({
|
|
|
419
423
|
});
|
|
420
424
|
},
|
|
421
425
|
redo: (_, { duplicatedElements: previousElements }) => {
|
|
426
|
+
onDuplicateElements?.();
|
|
422
427
|
const duplicatedElements = previousElements.reduce((acc, previousElement) => {
|
|
423
428
|
if (previousElement.modelToRestore && previousElement.parentContainerId) {
|
|
424
429
|
const createdElement = createElement({
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/hooks/use-element-children.ts","../src/sync/get-container.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/get-element-editor-settings.ts","../src/hooks/use-element-setting.ts","../src/sync/get-element-setting.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-selected-element.ts","../src/sync/get-widgets-cache.ts","../src/sync/get-element-type.ts","../src/sync/get-selected-elements.ts","../src/sync/create-element.ts","../src/sync/create-elements.ts","../src/sync/delete-element.ts","../src/sync/drop-element.ts","../src/sync/duplicate-element.ts","../src/sync/duplicate-elements.ts","../src/sync/generate-element-id.ts","../src/sync/get-current-document-container.ts","../src/sync/get-current-document-id.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-element-styles.ts","../src/sync/get-elements.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/remove-elements.ts","../src/sync/replace-element.ts","../src/sync/update-element-editor-settings.ts","../src/sync/update-element-settings.ts","../src/link-restriction.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/delete-element-style.ts","../src/styles/update-element-style.ts","../src/hooks/use-element-interactions.ts","../src/sync/get-element-interactions.ts","../src/sync/update-element-interactions.ts"],"sourcesContent":["// types\nexport * from './types';\nexport type * from './sync/types';\n\n// hooks\nexport { useElementChildren, type ElementChildren, type ElementModel } from './hooks/use-element-children';\nexport { useElementEditorSettings } from './hooks/use-element-editor-settings';\nexport { useElementSetting, useElementSettings } from './hooks/use-element-setting';\nexport { useParentElement } from './hooks/use-parent-element';\nexport { useSelectedElement } from './hooks/use-selected-element';\n\n// utils\nexport { createElement, type CreateElementParams } from './sync/create-element';\nexport { createElements } from './sync/create-elements';\nexport { deleteElement } from './sync/delete-element';\nexport { dropElement, type DropElementParams } from './sync/drop-element';\nexport { duplicateElement, type DuplicateElementParams } from './sync/duplicate-element';\nexport {\n\tduplicateElements,\n\ttype DuplicatedElement,\n\ttype DuplicatedElementsResult,\n\ttype DuplicateElementsParams,\n} from './sync/duplicate-elements';\nexport { generateElementId } from './sync/generate-element-id';\nexport { getContainer, selectElement } from './sync/get-container';\nexport { getCurrentDocumentContainer } from './sync/get-current-document-container';\nexport { getCurrentDocumentId } from './sync/get-current-document-id';\nexport { getElementEditorSettings } from './sync/get-element-editor-settings';\nexport { getElementLabel } from './sync/get-element-label';\nexport { getElementSetting, getElementSettings } from './sync/get-element-setting';\nexport { getElementStyles } from './sync/get-element-styles';\nexport { getElementType } from './sync/get-element-type';\nexport { getElements } from './sync/get-elements';\nexport { getSelectedElements } from './sync/get-selected-elements';\nexport { getWidgetsCache } from './sync/get-widgets-cache';\nexport { moveElement, type MoveElementParams } from './sync/move-element';\nexport {\n\tmoveElements,\n\ttype MovedElement,\n\ttype MovedElementsResult,\n\ttype MoveElementsParams,\n} from './sync/move-elements';\nexport { removeElements } from './sync/remove-elements';\nexport { replaceElement } from './sync/replace-element';\nexport { updateElementEditorSettings } from './sync/update-element-editor-settings';\nexport { updateElementSettings, type UpdateElementSettingsArgs } from './sync/update-element-settings';\n\nexport {\n\tgetAnchoredAncestorId,\n\tgetAnchoredDescendantId,\n\tgetLinkInLinkRestriction,\n\tisElementAnchored,\n\ttype LinkInLinkRestriction,\n} from './link-restriction';\nexport { ELEMENT_STYLE_CHANGE_EVENT, styleRerenderEvents } from './styles/consts';\nexport {\n\tcreateElementStyle,\n\tshouldCreateNewLocalStyle,\n\ttype CreateElementStyleArgs,\n} from './styles/create-element-style';\nexport { deleteElementStyle } from './styles/delete-element-style';\nexport { updateElementStyle, type UpdateElementStyleArgs } from './styles/update-element-style';\n\nexport { useElementInteractions } from './hooks/use-element-interactions';\nexport { getElementInteractions } from './sync/get-element-interactions';\nexport { playElementInteractions, updateElementInteractions } from './sync/update-element-interactions';\n","import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: Record< string, string >\n): T {\n\treturn useListenTo(\n\t\t[\n\t\t\tv1ReadyEvent(),\n\t\t\tcommandEndEvent( 'document/elements/create' ),\n\t\t\tcommandEndEvent( 'document/elements/delete' ),\n\t\t\tcommandEndEvent( 'document/elements/update' ),\n\t\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst container = getContainer( elementId );\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = container?.children?.findRecursive?.(\n\t\t\t\t\t( { model } ) => model.get( 'elType' ) === parentType\n\t\t\t\t);\n\n\t\t\t\tconst children = parent?.children ?? [];\n\n\t\t\t\tacc[ childType ] = children\n\t\t\t\t\t.filter( ( { model } ) => model.get( 'elType' ) === childType )\n\t\t\t\t\t.map( ( { id } ) => ( { id } ) );\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow, type V1Element } from './types';\n\nexport function getContainer( id: string ): V1Element | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n\nexport const selectElement = ( elementId: string ) => {\n\ttry {\n\t\tconst container = getContainer( elementId );\n\n\t\trunCommand( 'document/elements/select', { container } );\n\t} catch {}\n};\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementEditorSettings } from '../sync/get-element-editor-settings';\nimport { type ElementID } from '../types';\n\nexport const useElementEditorSettings = ( elementId: ElementID ) => {\n\treturn useListenTo(\n\t\twindowEvent( 'elementor/element/update_editor_settings' ),\n\t\t() => getElementEditorSettings( elementId ),\n\t\t[ elementId ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport function getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { type ElementID } from '../types';\n\nexport const useElementSetting = < TValue >( elementId: ElementID, settingKey: string ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() => getElementSetting< TValue >( elementId, settingKey ),\n\t\t[ elementId, settingKey ]\n\t);\n};\n\nexport const useElementSettings = < TValue >( elementId: ElementID, settingKeys: string[] ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() =>\n\t\t\tsettingKeys.reduce< Record< string, TValue > >( ( settings, key ) => {\n\t\t\t\tconst value = getElementSetting< TValue >( elementId, key );\n\n\t\t\t\tif ( value !== null ) {\n\t\t\t\t\tsettings[ key ] = value;\n\t\t\t\t}\n\n\t\t\t\treturn settings;\n\t\t\t}, {} ),\n\t\t[ elementId, settingKeys.join( ',' ) ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementSetting = < TValue >( elementId: ElementID, settingKey: string ): TValue | null => {\n\tconst container = getContainer( elementId );\n\n\treturn ( container?.settings?.get( settingKey ) as TValue ) ?? null;\n};\n\nexport const getElementSettings = < TValue >(\n\telementId: ElementID,\n\tsettingKey: string[]\n): Record< string, TValue | null > => {\n\treturn Object.fromEntries( settingKey.map( ( key ) => [ key, getElementSetting( elementId, key ) ] ) );\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useParentElement( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/create' ) ],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow = window as unknown as ExtendedWindow;\n\t\t\tconst element = extendedWindow?.elementor?.getContainer?.( elementId );\n\t\t\tif ( ! element ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn element.parent;\n\t\t},\n\t\t[ elementId ]\n\t);\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementType } from '../sync/get-element-type';\nimport { getSelectedElements } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\tconst elements = useListenTo(\n\t\t[\n\t\t\tcommandEndEvent( 'document/elements/select' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect' ),\n\t\t\tcommandEndEvent( 'document/elements/select-all' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect-all' ),\n\t\t],\n\t\tgetSelectedElements\n\t);\n\n\tconst [ element ] = elements;\n\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type ExtendedWindow, type V1ElementConfig } from '../sync/types.js';\ntype WidgetsCache< T > = Record< string, T >;\n\nexport function getWidgetsCache< T extends V1ElementConfig >(): WidgetsCache< T > | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn ( extendedWindow?.elementor?.widgetsCache as WidgetsCache< T > ) || null;\n}\n","import { type ElementType } from '../types';\nimport { getWidgetsCache } from './get-widgets-cache';\n\nexport function getElementType( type: string ): ElementType | null {\n\tif ( ! type ) {\n\t\treturn null;\n\t}\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\tif ( ! elementType?.atomic_controls ) {\n\t\treturn null;\n\t}\n\n\tif ( ! elementType?.atomic_props_schema ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tkey: type,\n\t\tcontrols: elementType.atomic_controls,\n\t\tpropsSchema: elementType.atomic_props_schema,\n\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\ttitle: elementType.title,\n\t\tstyleStates: elementType.atomic_style_states ?? [],\n\t};\n}\n","import { type Element } from '../types';\nimport { type ExtendedWindow } from './types';\n\nexport function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type CreateElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function createElement( { containerId, model, options }: CreateElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'document/elements/create', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions: { edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement, type CreateElementParams } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype CreateNestedElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tcreateParams: CreateElementParams;\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateNestedElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateNestedElementsParams ): CreatedElementsResult => {\n\tconst undoableCreate = undoable(\n\t\t{\n\t\t\tdo: ( { elements: elementsParam }: { elements: CreateElementParams[] } ): CreatedElementsResult => {\n\t\t\t\tconst createdElements: CreatedElement[] = [];\n\n\t\t\t\telementsParam.forEach( ( createParams ) => {\n\t\t\t\t\tconst { options, ...elementParams } = createParams;\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\t...elementParams,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tcreatedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\tcreateParams: {\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements };\n\t\t\t},\n\t\t\tundo: ( _: { elements: CreateElementParams[] }, { createdElements }: CreatedElementsResult ) => {\n\t\t\t\t// Delete elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...createdElements ].reverse().forEach( ( { elementId } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elements: CreateElementParams[] },\n\t\t\t\t{ createdElements }: CreatedElementsResult\n\t\t\t): CreatedElementsResult => {\n\t\t\t\tconst newElements: CreatedElement[] = [];\n\n\t\t\t\tcreatedElements.forEach( ( { createParams, model } ) => {\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainerId: createParams.containerId,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...createParams.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tcreateParams,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements: newElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableCreate( { elements } );\n};\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\nexport function deleteElement( {\n\telementId,\n\toptions = {},\n}: {\n\telementId: string;\n\toptions?: Options;\n} ): Promise< void > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\treturn runCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tscrollIntoView: boolean;\n};\n\nexport type DropElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function dropElement( { containerId, model, options }: DropElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'preview/drop', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telementId: string;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { elementId, options = {} }: DuplicateElementParams ): V1Element {\n\tconst elementToDuplicate = getContainer( elementId );\n\n\tif ( ! elementToDuplicate ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\t// Get the position after the original element (only when cloning)\n\tconst currentIndex = elementToDuplicate.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: elementToDuplicate,\n\t\toptions: { at: insertPosition, edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { duplicateElement } from './duplicate-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype DuplicateElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\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\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\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( ANCHOR_SELECTOR ) ) ) {\n\t\t// Ensure the child is not in the current element's scope\n\t\tconst childElementId = findElementIdOf( childAnchorElement );\n\n\t\tif ( childElementId !== elementId ) {\n\t\t\treturn childElementId;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getAnchoredAncestorId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element || element.parentElement === null ) {\n\t\treturn null;\n\t}\n\n\tconst parentAnchor = element.parentElement.closest( ANCHOR_SELECTOR );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId ) as HTMLElement;\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of Array.from( element.children ) as HTMLElement[] ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( child.matches( ANCHOR_SELECTOR ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( doesElementContainAnchor( child ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findElementIdOf( element: Element ): string | null {\n\treturn element.closest< HTMLElement >( '[data-id]' )?.dataset.id || null;\n}\n\nfunction getElementDOM( id: string ) {\n\ttry {\n\t\treturn getContainer( id )?.view?.el || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n","import { commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport const ELEMENT_STYLE_CHANGE_EVENT = 'elementor/editor-v2/editor-elements/style';\n\nexport const styleRerenderEvents = [\n\tcommandEndEvent( 'document/elements/create' ),\n\tcommandEndEvent( 'document/elements/duplicate' ),\n\tcommandEndEvent( 'document/elements/import' ),\n\tcommandEndEvent( 'document/elements/paste' ),\n\twindowEvent( ELEMENT_STYLE_CHANGE_EVENT ),\n];\n","import { classesPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tgenerateId,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type CreateElementStyleArgs = {\n\tstyleId?: StyleDefinitionID;\n\telementId: ElementID;\n\tclassesProp: string;\n\tlabel: string;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n\tadditionalVariants?: StyleDefinitionVariant[];\n};\n\nexport function createElementStyle( {\n\tstyleId,\n\telementId,\n\tclassesProp,\n\tlabel,\n\tmeta,\n\tprops,\n\tcustom_css: customCss = null,\n\tadditionalVariants = [],\n}: CreateElementStyleArgs ): string {\n\tlet id = styleId;\n\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\tid ??= generateId( `e-${ elementId }-`, Object.keys( styles ) );\n\n\t\tconst variants = [ { meta, props, custom_css: customCss }, ...additionalVariants ];\n\n\t\tstyles[ id ] = {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} satisfies StyleDefinition;\n\n\t\taddStyleToClassesProp( elementId, classesProp, id );\n\n\t\treturn styles;\n\t} );\n\n\treturn id as string;\n}\n\nfunction addStyleToClassesProp( elementId: ElementID, classesProp: string, styleId: string ) {\n\tconst base = getElementSetting( elementId, classesProp );\n\n\tconst classesPropValue = classesPropTypeUtil.create(\n\t\t( prev ) => {\n\t\t\treturn [ ...( prev ?? [] ), styleId ];\n\t\t},\n\t\t{ base }\n\t);\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\t[ classesProp ]: classesPropValue,\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n\nexport function shouldCreateNewLocalStyle< T >(\n\tpayload: { styleId: StyleDefinition[ 'id' ] | null; provider: T | null } | null\n) {\n\treturn ! payload?.styleId && ! payload?.provider;\n}\n","import { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionsMap } from '@elementor/editor-styles';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { ElementNotFoundError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { type V1Element } from '../sync/types';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { ELEMENT_STYLE_CHANGE_EVENT } from './consts';\n\ntype Mutator = ( styles: StyleDefinitionsMap ) => StyleDefinitionsMap;\n\nexport function mutateElementStyles( elementId: ElementID, mutator: Mutator ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId } } );\n\t}\n\n\tconst oldIds = Object.keys( container.model.get( 'styles' ) ?? {} );\n\n\tconst styles = mutateStyles( container, mutator );\n\n\tconst newIds = Object.keys( styles );\n\n\tclearRemovedClasses( container, {\n\t\toldIds,\n\t\tnewIds,\n\t} );\n\n\tnotifyChanges();\n\n\treturn styles;\n}\n\nfunction mutateStyles( container: V1Element, mutator: Mutator ) {\n\tconst styles: StyleDefinitionsMap = structuredClone( container.model.get( 'styles' ) ) ?? {};\n\n\tconst entries = Object.entries( mutator( styles ) )\n\t\t.map( ( [ styleId, style ] ) => {\n\t\t\tstyle.variants = removeEmptyVariants( style );\n\n\t\t\treturn [ styleId, style ] as const;\n\t\t} )\n\t\t.filter( ( [ , style ] ) => {\n\t\t\treturn ! isStyleEmpty( style );\n\t\t} );\n\n\tconst mutatedStyles = Object.fromEntries( entries );\n\n\tcontainer.model.set( 'styles', mutatedStyles );\n\n\treturn mutatedStyles;\n}\n\nfunction removeEmptyVariants( style: StyleDefinition ) {\n\treturn style.variants.filter(\n\t\t( { props, custom_css: customCss } ) => Object.keys( props ).length > 0 || customCss?.raw\n\t);\n}\n\nfunction isStyleEmpty( style: StyleDefinition ) {\n\treturn style.variants.length === 0;\n}\n\nfunction clearRemovedClasses( container: V1Element, { oldIds, newIds }: { oldIds: string[]; newIds: string[] } ) {\n\tconst removedIds = oldIds.filter( ( id ) => ! newIds.includes( id ) );\n\tconst classesProps = structuredClone( getClassesProps( container ) );\n\n\tclassesProps.forEach( ( [ , prop ] ) => {\n\t\tprop.value = prop.value.filter( ( value ) => ! removedIds.includes( value ) );\n\t} );\n\n\tupdateElementSettings( {\n\t\tid: container.id,\n\t\tprops: Object.fromEntries( classesProps ),\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getClassesProps( container: V1Element ) {\n\treturn Object.entries( container.settings.toJSON() ).filter( ( prop ): prop is [ string, ClassesPropValue ] => {\n\t\tconst [ , value ] = prop;\n\n\t\treturn classesPropTypeUtil.isValid( value );\n\t} );\n}\n\nfunction notifyChanges() {\n\tdispatchChangeEvent();\n\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n}\n\nfunction dispatchChangeEvent() {\n\twindow.dispatchEvent( new CustomEvent( ELEMENT_STYLE_CHANGE_EVENT ) );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport function deleteElementStyle( elementId: ElementID, styleId: StyleDefinitionID ) {\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\t// The object is deep cloned so mutating it is fine.\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete styles[ styleId ];\n\n\t\treturn styles;\n\t} );\n}\n","import { mergeProps } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { StyleNotFoundError } from '../errors';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type UpdateElementStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n};\n\nexport function updateElementStyle( args: UpdateElementStyleArgs ) {\n\tmutateElementStyles( args.elementId, ( styles ) => {\n\t\tconst style = styles[ args.styleId ];\n\n\t\tif ( ! style ) {\n\t\t\tthrow new StyleNotFoundError( { context: { styleId: args.styleId } } );\n\t\t}\n\n\t\tconst variant = getVariantByMeta( style, args.meta );\n\t\tconst customCss = ( 'custom_css' in args ? args.custom_css : variant?.custom_css ) ?? null;\n\n\t\tif ( variant ) {\n\t\t\tvariant.props = mergeProps( variant.props, args.props );\n\t\t\tvariant.custom_css = customCss?.raw ? customCss : null;\n\t\t} else {\n\t\t\tstyle.variants.push( { meta: args.meta, props: args.props, custom_css: customCss } );\n\t\t}\n\n\t\treturn styles;\n\t} );\n}\n","import { useState } from 'react';\nimport { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementInteractions } from '../sync/get-element-interactions';\nimport { type ElementInteractions } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport const useElementInteractions = ( elementId: ElementID ) => {\n\tconst [ interactions, setInteractions ] = useState< ElementInteractions >( () => {\n\t\tconst initial = getElementInteractions( elementId );\n\n\t\treturn initial ?? { version: 1, items: [] };\n\t} );\n\n\tuseListenTo(\n\t\twindowEvent( 'elementor/element/update_interactions' ),\n\t\t() => {\n\t\t\tconst newInteractions = getElementInteractions( elementId );\n\t\t\tsetInteractions( newInteractions ?? { version: 1, items: [] } );\n\t\t},\n\t\t[ elementId ]\n\t);\n\n\treturn interactions;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { type ElementInteractions } from './types';\n\nexport function getElementInteractions( elementId: ElementID ): ElementInteractions | undefined {\n\tconst container = getContainer( elementId );\n\n\tconst interactions = container?.model?.get( 'interactions' );\n\n\tif ( typeof interactions === 'string' ) {\n\t\treturn JSON.parse( interactions ) as ElementInteractions;\n\t}\n\n\treturn interactions;\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementInteractions = ( {\n\telementId,\n\tinteractions,\n}: {\n\telementId: string;\n\tinteractions: V1ElementModelProps[ 'interactions' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\telement.model.set( 'interactions', interactions );\n\n\twindow.dispatchEvent( new CustomEvent( 'elementor/element/update_interactions' ) );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nexport const playElementInteractions = ( elementId: string, 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"],"mappings":"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","names":["import_editor_v1_adapters","runCommand","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_v1_adapters","runCommand","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_props","import_editor_v1_adapters","runCommandSync","import_editor_props","import_editor_styles","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","setDocumentModifiedStatus","runCommandSync"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hooks/use-element-children.ts","../src/sync/get-container.ts","../src/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"],"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","import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: Record< string, string >\n): T {\n\treturn useListenTo(\n\t\t[\n\t\t\tv1ReadyEvent(),\n\t\t\tcommandEndEvent( 'document/elements/create' ),\n\t\t\tcommandEndEvent( 'document/elements/delete' ),\n\t\t\tcommandEndEvent( 'document/elements/update' ),\n\t\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst container = getContainer( elementId );\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = container?.children?.findRecursive?.(\n\t\t\t\t\t( { model } ) => model.get( 'elType' ) === parentType\n\t\t\t\t);\n\n\t\t\t\tconst children = parent?.children ?? [];\n\n\t\t\t\tacc[ childType ] = children\n\t\t\t\t\t.filter( ( { model } ) => model.get( 'elType' ) === childType )\n\t\t\t\t\t.map( ( { id } ) => ( { id } ) );\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow, type V1Element } from './types';\n\nexport function getContainer( id: string ): V1Element | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n\nexport const selectElement = ( elementId: string ) => {\n\ttry {\n\t\tconst container = getContainer( elementId );\n\n\t\trunCommand( 'document/elements/select', { container } );\n\t} catch {}\n};\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementEditorSettings } from '../sync/get-element-editor-settings';\nimport { type ElementID } from '../types';\n\nexport const useElementEditorSettings = ( elementId: ElementID ) => {\n\treturn useListenTo(\n\t\twindowEvent( 'elementor/element/update_editor_settings' ),\n\t\t() => getElementEditorSettings( elementId ),\n\t\t[ elementId ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport function getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { type ElementID } from '../types';\n\nexport const useElementSetting = < TValue >( elementId: ElementID, settingKey: string ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() => getElementSetting< TValue >( elementId, settingKey ),\n\t\t[ elementId, settingKey ]\n\t);\n};\n\nexport const useElementSettings = < TValue >( elementId: ElementID, settingKeys: string[] ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() =>\n\t\t\tsettingKeys.reduce< Record< string, TValue > >( ( settings, key ) => {\n\t\t\t\tconst value = getElementSetting< TValue >( elementId, key );\n\n\t\t\t\tif ( value !== null ) {\n\t\t\t\t\tsettings[ key ] = value;\n\t\t\t\t}\n\n\t\t\t\treturn settings;\n\t\t\t}, {} ),\n\t\t[ elementId, settingKeys.join( ',' ) ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementSetting = < TValue >( elementId: ElementID, settingKey: string ): TValue | null => {\n\tconst container = getContainer( elementId );\n\n\treturn ( container?.settings?.get( settingKey ) as TValue ) ?? null;\n};\n\nexport const getElementSettings = < TValue >(\n\telementId: ElementID,\n\tsettingKey: string[]\n): Record< string, TValue | null > => {\n\treturn Object.fromEntries( settingKey.map( ( key ) => [ key, getElementSetting( elementId, key ) ] ) );\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useParentElement( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/create' ) ],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow = window as unknown as ExtendedWindow;\n\t\t\tconst element = extendedWindow?.elementor?.getContainer?.( elementId );\n\t\t\tif ( ! element ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn element.parent;\n\t\t},\n\t\t[ elementId ]\n\t);\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementType } from '../sync/get-element-type';\nimport { getSelectedElements } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\tconst elements = useListenTo(\n\t\t[\n\t\t\tcommandEndEvent( 'document/elements/select' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect' ),\n\t\t\tcommandEndEvent( 'document/elements/select-all' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect-all' ),\n\t\t],\n\t\tgetSelectedElements\n\t);\n\n\tconst [ element ] = elements;\n\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type ExtendedWindow, type V1ElementConfig } from '../sync/types.js';\ntype WidgetsCache< T > = Record< string, T >;\n\nexport function getWidgetsCache< T extends V1ElementConfig >(): WidgetsCache< T > | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn ( extendedWindow?.elementor?.widgetsCache as WidgetsCache< T > ) || null;\n}\n","import { type ElementType } from '../types';\nimport { getWidgetsCache } from './get-widgets-cache';\n\nexport function getElementType( type: string ): ElementType | null {\n\tif ( ! type ) {\n\t\treturn null;\n\t}\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\tif ( ! elementType?.atomic_controls ) {\n\t\treturn null;\n\t}\n\n\tif ( ! elementType?.atomic_props_schema ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tkey: type,\n\t\tcontrols: elementType.atomic_controls,\n\t\tpropsSchema: elementType.atomic_props_schema,\n\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\ttitle: elementType.title,\n\t\tstyleStates: elementType.atomic_style_states ?? [],\n\t};\n}\n","import { type Element } from '../types';\nimport { type ExtendedWindow } from './types';\n\nexport function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type CreateElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function createElement( { containerId, model, options }: CreateElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'document/elements/create', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions: { edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement, type CreateElementParams } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype CreateNestedElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tcreateParams: CreateElementParams;\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateNestedElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateNestedElementsParams ): CreatedElementsResult => {\n\tconst undoableCreate = undoable(\n\t\t{\n\t\t\tdo: ( { elements: elementsParam }: { elements: CreateElementParams[] } ): CreatedElementsResult => {\n\t\t\t\tconst createdElements: CreatedElement[] = [];\n\n\t\t\t\telementsParam.forEach( ( createParams ) => {\n\t\t\t\t\tconst { options, ...elementParams } = createParams;\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\t...elementParams,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tcreatedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\tcreateParams: {\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements };\n\t\t\t},\n\t\t\tundo: ( _: { elements: CreateElementParams[] }, { createdElements }: CreatedElementsResult ) => {\n\t\t\t\t// Delete elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...createdElements ].reverse().forEach( ( { elementId } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elements: CreateElementParams[] },\n\t\t\t\t{ createdElements }: CreatedElementsResult\n\t\t\t): CreatedElementsResult => {\n\t\t\t\tconst newElements: CreatedElement[] = [];\n\n\t\t\t\tcreatedElements.forEach( ( { createParams, model } ) => {\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainerId: createParams.containerId,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...createParams.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tcreateParams,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements: newElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableCreate( { elements } );\n};\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\nexport function deleteElement( {\n\telementId,\n\toptions = {},\n}: {\n\telementId: string;\n\toptions?: Options;\n} ): Promise< void > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\treturn runCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tscrollIntoView: boolean;\n};\n\nexport type DropElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function dropElement( { containerId, model, options }: DropElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'preview/drop', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telementId: string;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { elementId, options = {} }: DuplicateElementParams ): V1Element {\n\tconst elementToDuplicate = getContainer( elementId );\n\n\tif ( ! elementToDuplicate ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\t// Get the position after the original element (only when cloning)\n\tconst currentIndex = elementToDuplicate.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: elementToDuplicate,\n\t\toptions: { at: insertPosition, edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { duplicateElement } from './duplicate-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype DuplicateElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonDuplicateElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype DuplicatedElement = {\n\tid: string;\n\tmodel: V1ElementModelProps;\n\toriginalElementId: string;\n\tmodelToRestore?: V1ElementModelProps;\n\tparentContainerId?: string;\n\tat?: number;\n};\n\ntype DuplicatedElementsResult = {\n\tduplicatedElements: DuplicatedElement[];\n};\n\nexport type { DuplicateElementsParams, DuplicatedElement, DuplicatedElementsResult };\n\nexport const duplicateElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item duplicated', 'elementor' ),\n\tonDuplicateElements,\n\tonRestoreElements,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\n\t\t\t\t// Call onCreate before duplicating elements to avoid conflicts between commands\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = elementIdsToDuplicate.reduce( ( acc, elementId ) => {\n\t\t\t\t\tconst originalContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( originalContainer?.parent ) {\n\t\t\t\t\t\tconst duplicatedElement = duplicateElement( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: duplicatedElement.id,\n\t\t\t\t\t\t\tmodel: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: elementId,\n\t\t\t\t\t\t\tmodelToRestore: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\tparentContainerId: duplicatedElement.parent?.id,\n\t\t\t\t\t\t\tat: duplicatedElement.view?._index,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\t\t\t\t// Delete duplicated elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...duplicatedElements ].reverse().forEach( ( { id } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId: id,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ duplicatedElements: previousElements }: DuplicatedElementsResult\n\t\t\t): DuplicatedElementsResult => {\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = previousElements.reduce( ( acc, previousElement ) => {\n\t\t\t\t\tif ( previousElement.modelToRestore && previousElement.parentContainerId ) {\n\t\t\t\t\t\tconst createdElement = createElement( {\n\t\t\t\t\t\t\tcontainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tmodel: previousElement.modelToRestore,\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\t\tclone: false,\n\t\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: createdElement.id,\n\t\t\t\t\t\t\tmodel: createdElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: previousElement.originalElementId,\n\t\t\t\t\t\t\tmodelToRestore: previousElement.modelToRestore,\n\t\t\t\t\t\t\tparentContainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableDuplicate( { elementIds } );\n};\n","import { type ExtendedWindow } from './types';\n\nexport const generateElementId = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn (\n\t\textendedWindow.elementorCommon?.helpers?.getUniqueId?.() ??\n\t\t`el-${ Date.now() }-${ Math.random().toString( 36 ).substring( 2, 9 ) }`\n\t);\n};\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentContainer() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrent?.()?.container ?? null;\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentId() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;\n}\n","import { createError } from '@elementor/utils';\n\nexport const ElementNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_not_found',\n\tmessage: 'Element not found.',\n} );\n\nexport const StyleNotFoundError = createError< { styleId: string } >( {\n\tcode: 'style_not_found',\n\tmessage: 'Style not found.',\n} );\n\nexport const ElementTypeNotExistsError = createError< { elementId: string } >( {\n\tcode: 'element_type_not_exists',\n\tmessage: 'Element type does not exist.',\n} );\n\nexport const ElementLabelNotExistsError = createError< { elementType: string } >( {\n\tcode: 'element_label_not_exists',\n\tmessage: 'Element label does not exist.',\n} );\n\nexport const ElementParentNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_parent_not_found',\n\tmessage: 'Element parent not found.',\n} );\n\nexport const ElementIndexNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_index_not_found',\n\tmessage: 'Element index not found.',\n} );\n","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\nimport { getSelectedElements } from './get-selected-elements';\n\nexport function getElementLabel( elementId?: ElementID ) {\n\tif ( ! elementId ) {\n\t\telementId = getSelectedElements()?.[ 0 ]?.id;\n\t}\n\n\tconst container = getContainer( elementId );\n\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tif ( ! type ) {\n\t\tthrow new ElementTypeNotExistsError( { context: { elementId } } );\n\t}\n\n\tconst label = getWidgetsCache()?.[ type ]?.title;\n\n\tif ( ! label ) {\n\t\tthrow new ElementLabelNotExistsError( { context: { elementType: type } } );\n\t}\n\n\treturn label;\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementStyles = ( elementID: ElementID ): Record< string, StyleDefinition > | null => {\n\tconst container = getContainer( elementID );\n\n\treturn container?.model.get( 'styles' ) || null;\n};\n","import { type 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\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\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( ANCHOR_SELECTOR ) ) ) {\n\t\t// Ensure the child is not in the current element's scope\n\t\tconst childElementId = findElementIdOf( childAnchorElement );\n\n\t\tif ( childElementId !== elementId ) {\n\t\t\treturn childElementId;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getAnchoredAncestorId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element || element.parentElement === null ) {\n\t\treturn null;\n\t}\n\n\tconst parentAnchor = element.parentElement.closest( ANCHOR_SELECTOR );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId ) as HTMLElement;\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of Array.from( element.children ) as HTMLElement[] ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( child.matches( ANCHOR_SELECTOR ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( doesElementContainAnchor( child ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findElementIdOf( element: Element ): string | null {\n\treturn element.closest< HTMLElement >( '[data-id]' )?.dataset.id || null;\n}\n\nfunction getElementDOM( id: string ) {\n\ttry {\n\t\treturn getContainer( id )?.view?.el || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n","import { commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport const ELEMENT_STYLE_CHANGE_EVENT = 'elementor/editor-v2/editor-elements/style';\n\nexport const styleRerenderEvents = [\n\tcommandEndEvent( 'document/elements/create' ),\n\tcommandEndEvent( 'document/elements/duplicate' ),\n\tcommandEndEvent( 'document/elements/import' ),\n\tcommandEndEvent( 'document/elements/paste' ),\n\twindowEvent( ELEMENT_STYLE_CHANGE_EVENT ),\n];\n","import { classesPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tgenerateId,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type CreateElementStyleArgs = {\n\tstyleId?: StyleDefinitionID;\n\telementId: ElementID;\n\tclassesProp: string;\n\tlabel: string;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n\tadditionalVariants?: StyleDefinitionVariant[];\n};\n\nexport function createElementStyle( {\n\tstyleId,\n\telementId,\n\tclassesProp,\n\tlabel,\n\tmeta,\n\tprops,\n\tcustom_css: customCss = null,\n\tadditionalVariants = [],\n}: CreateElementStyleArgs ): string {\n\tlet id = styleId;\n\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\tid ??= generateId( `e-${ elementId }-`, Object.keys( styles ) );\n\n\t\tconst variants = [ { meta, props, custom_css: customCss }, ...additionalVariants ];\n\n\t\tstyles[ id ] = {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} satisfies StyleDefinition;\n\n\t\taddStyleToClassesProp( elementId, classesProp, id );\n\n\t\treturn styles;\n\t} );\n\n\treturn id as string;\n}\n\nfunction addStyleToClassesProp( elementId: ElementID, classesProp: string, styleId: string ) {\n\tconst base = getElementSetting( elementId, classesProp );\n\n\tconst classesPropValue = classesPropTypeUtil.create(\n\t\t( prev ) => {\n\t\t\treturn [ ...( prev ?? [] ), styleId ];\n\t\t},\n\t\t{ base }\n\t);\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\t[ classesProp ]: classesPropValue,\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n\nexport function shouldCreateNewLocalStyle< T >(\n\tpayload: { styleId: StyleDefinition[ 'id' ] | null; provider: T | null } | null\n) {\n\treturn ! payload?.styleId && ! payload?.provider;\n}\n","import { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionsMap } from '@elementor/editor-styles';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { ElementNotFoundError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { type V1Element } from '../sync/types';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { ELEMENT_STYLE_CHANGE_EVENT } from './consts';\n\ntype Mutator = ( styles: StyleDefinitionsMap ) => StyleDefinitionsMap;\n\nexport function mutateElementStyles( elementId: ElementID, mutator: Mutator ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId } } );\n\t}\n\n\tconst oldIds = Object.keys( container.model.get( 'styles' ) ?? {} );\n\n\tconst styles = mutateStyles( container, mutator );\n\n\tconst newIds = Object.keys( styles );\n\n\tclearRemovedClasses( container, {\n\t\toldIds,\n\t\tnewIds,\n\t} );\n\n\tnotifyChanges();\n\n\treturn styles;\n}\n\nfunction mutateStyles( container: V1Element, mutator: Mutator ) {\n\tconst styles: StyleDefinitionsMap = structuredClone( container.model.get( 'styles' ) ) ?? {};\n\n\tconst entries = Object.entries( mutator( styles ) )\n\t\t.map( ( [ styleId, style ] ) => {\n\t\t\tstyle.variants = removeEmptyVariants( style );\n\n\t\t\treturn [ styleId, style ] as const;\n\t\t} )\n\t\t.filter( ( [ , style ] ) => {\n\t\t\treturn ! isStyleEmpty( style );\n\t\t} );\n\n\tconst mutatedStyles = Object.fromEntries( entries );\n\n\tcontainer.model.set( 'styles', mutatedStyles );\n\n\treturn mutatedStyles;\n}\n\nfunction removeEmptyVariants( style: StyleDefinition ) {\n\treturn style.variants.filter(\n\t\t( { props, custom_css: customCss } ) => Object.keys( props ).length > 0 || customCss?.raw\n\t);\n}\n\nfunction isStyleEmpty( style: StyleDefinition ) {\n\treturn style.variants.length === 0;\n}\n\nfunction clearRemovedClasses( container: V1Element, { oldIds, newIds }: { oldIds: string[]; newIds: string[] } ) {\n\tconst removedIds = oldIds.filter( ( id ) => ! newIds.includes( id ) );\n\tconst classesProps = structuredClone( getClassesProps( container ) );\n\n\tclassesProps.forEach( ( [ , prop ] ) => {\n\t\tprop.value = prop.value.filter( ( value ) => ! removedIds.includes( value ) );\n\t} );\n\n\tupdateElementSettings( {\n\t\tid: container.id,\n\t\tprops: Object.fromEntries( classesProps ),\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getClassesProps( container: V1Element ) {\n\treturn Object.entries( container.settings.toJSON() ).filter( ( prop ): prop is [ string, ClassesPropValue ] => {\n\t\tconst [ , value ] = prop;\n\n\t\treturn classesPropTypeUtil.isValid( value );\n\t} );\n}\n\nfunction notifyChanges() {\n\tdispatchChangeEvent();\n\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n}\n\nfunction dispatchChangeEvent() {\n\twindow.dispatchEvent( new CustomEvent( ELEMENT_STYLE_CHANGE_EVENT ) );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport function deleteElementStyle( elementId: ElementID, styleId: StyleDefinitionID ) {\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\t// The object is deep cloned so mutating it is fine.\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete styles[ styleId ];\n\n\t\treturn styles;\n\t} );\n}\n","import { mergeProps } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { StyleNotFoundError } from '../errors';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type UpdateElementStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n};\n\nexport function updateElementStyle( args: UpdateElementStyleArgs ) {\n\tmutateElementStyles( args.elementId, ( styles ) => {\n\t\tconst style = styles[ args.styleId ];\n\n\t\tif ( ! style ) {\n\t\t\tthrow new StyleNotFoundError( { context: { styleId: args.styleId } } );\n\t\t}\n\n\t\tconst variant = getVariantByMeta( style, args.meta );\n\t\tconst customCss = ( 'custom_css' in args ? args.custom_css : variant?.custom_css ) ?? null;\n\n\t\tif ( variant ) {\n\t\t\tvariant.props = mergeProps( variant.props, args.props );\n\t\t\tvariant.custom_css = customCss?.raw ? customCss : null;\n\t\t} else {\n\t\t\tstyle.variants.push( { meta: args.meta, props: args.props, custom_css: customCss } );\n\t\t}\n\n\t\treturn styles;\n\t} );\n}\n","import { useState } from 'react';\nimport { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementInteractions } from '../sync/get-element-interactions';\nimport { type ElementInteractions } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport const useElementInteractions = ( elementId: ElementID ) => {\n\tconst [ interactions, setInteractions ] = useState< ElementInteractions >( () => {\n\t\tconst initial = getElementInteractions( elementId );\n\n\t\treturn initial ?? { version: 1, items: [] };\n\t} );\n\n\tuseListenTo(\n\t\twindowEvent( 'elementor/element/update_interactions' ),\n\t\t() => {\n\t\t\tconst newInteractions = getElementInteractions( elementId );\n\t\t\tsetInteractions( newInteractions ?? { version: 1, items: [] } );\n\t\t},\n\t\t[ elementId ]\n\t);\n\n\treturn interactions;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { type ElementInteractions } from './types';\n\nexport function getElementInteractions( elementId: ElementID ): ElementInteractions | undefined {\n\tconst container = getContainer( elementId );\n\n\tconst interactions = container?.model?.get( 'interactions' );\n\n\tif ( typeof interactions === 'string' ) {\n\t\treturn JSON.parse( interactions ) as ElementInteractions;\n\t}\n\n\treturn interactions;\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementInteractions = ( {\n\telementId,\n\tinteractions,\n}: {\n\telementId: string;\n\tinteractions: V1ElementModelProps[ 'interactions' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\telement.model.set( 'interactions', interactions );\n\n\twindow.dispatchEvent( new CustomEvent( 'elementor/element/update_interactions' ) );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nexport const playElementInteractions = ( elementId: string, 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"],"mappings":"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","names":["import_editor_v1_adapters","runCommand","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_v1_adapters","runCommand","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","import_i18n","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","runCommandSync","import_editor_v1_adapters","import_editor_props","import_editor_v1_adapters","runCommandSync","import_editor_props","import_editor_styles","import_editor_v1_adapters","useListenTo","import_editor_v1_adapters","setDocumentModifiedStatus","runCommandSync"]}
|
package/dist/index.mjs
CHANGED
|
@@ -314,17 +314,20 @@ import { __ as __2 } from "@wordpress/i18n";
|
|
|
314
314
|
var duplicateElements = ({
|
|
315
315
|
elementIds,
|
|
316
316
|
title,
|
|
317
|
-
subtitle = __2("Item duplicated", "elementor")
|
|
317
|
+
subtitle = __2("Item duplicated", "elementor"),
|
|
318
|
+
onDuplicateElements,
|
|
319
|
+
onRestoreElements
|
|
318
320
|
}) => {
|
|
319
321
|
const undoableDuplicate = undoable2(
|
|
320
322
|
{
|
|
321
323
|
do: ({ elementIds: elementIdsToDuplicate }) => {
|
|
324
|
+
onDuplicateElements?.();
|
|
322
325
|
const duplicatedElements = elementIdsToDuplicate.reduce((acc, elementId) => {
|
|
323
326
|
const originalContainer = getContainer(elementId);
|
|
324
327
|
if (originalContainer?.parent) {
|
|
325
328
|
const duplicatedElement = duplicateElement({
|
|
326
329
|
elementId,
|
|
327
|
-
options: { useHistory: false
|
|
330
|
+
options: { useHistory: false }
|
|
328
331
|
});
|
|
329
332
|
acc.push({
|
|
330
333
|
id: duplicatedElement.id,
|
|
@@ -340,6 +343,7 @@ var duplicateElements = ({
|
|
|
340
343
|
return { duplicatedElements };
|
|
341
344
|
},
|
|
342
345
|
undo: (_, { duplicatedElements }) => {
|
|
346
|
+
onRestoreElements?.();
|
|
343
347
|
[...duplicatedElements].reverse().forEach(({ id }) => {
|
|
344
348
|
deleteElement({
|
|
345
349
|
elementId: id,
|
|
@@ -348,6 +352,7 @@ var duplicateElements = ({
|
|
|
348
352
|
});
|
|
349
353
|
},
|
|
350
354
|
redo: (_, { duplicatedElements: previousElements }) => {
|
|
355
|
+
onDuplicateElements?.();
|
|
351
356
|
const duplicatedElements = previousElements.reduce((acc, previousElement) => {
|
|
352
357
|
if (previousElement.modelToRestore && previousElement.parentContainerId) {
|
|
353
358
|
const createdElement = createElement({
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-element-children.ts","../src/sync/get-container.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/get-element-editor-settings.ts","../src/hooks/use-element-setting.ts","../src/sync/get-element-setting.ts","../src/hooks/use-parent-element.ts","../src/hooks/use-selected-element.ts","../src/sync/get-widgets-cache.ts","../src/sync/get-element-type.ts","../src/sync/get-selected-elements.ts","../src/sync/create-element.ts","../src/sync/create-elements.ts","../src/sync/delete-element.ts","../src/sync/drop-element.ts","../src/sync/duplicate-element.ts","../src/sync/duplicate-elements.ts","../src/sync/generate-element-id.ts","../src/sync/get-current-document-container.ts","../src/sync/get-current-document-id.ts","../src/errors.ts","../src/sync/get-element-label.ts","../src/sync/get-element-styles.ts","../src/sync/get-elements.ts","../src/sync/move-element.ts","../src/sync/move-elements.ts","../src/sync/remove-elements.ts","../src/sync/replace-element.ts","../src/sync/update-element-editor-settings.ts","../src/sync/update-element-settings.ts","../src/link-restriction.ts","../src/styles/consts.ts","../src/styles/create-element-style.ts","../src/styles/mutate-element-styles.ts","../src/styles/delete-element-style.ts","../src/styles/update-element-style.ts","../src/hooks/use-element-interactions.ts","../src/sync/get-element-interactions.ts","../src/sync/update-element-interactions.ts"],"sourcesContent":["import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: Record< string, string >\n): T {\n\treturn useListenTo(\n\t\t[\n\t\t\tv1ReadyEvent(),\n\t\t\tcommandEndEvent( 'document/elements/create' ),\n\t\t\tcommandEndEvent( 'document/elements/delete' ),\n\t\t\tcommandEndEvent( 'document/elements/update' ),\n\t\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst container = getContainer( elementId );\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = container?.children?.findRecursive?.(\n\t\t\t\t\t( { model } ) => model.get( 'elType' ) === parentType\n\t\t\t\t);\n\n\t\t\t\tconst children = parent?.children ?? [];\n\n\t\t\t\tacc[ childType ] = children\n\t\t\t\t\t.filter( ( { model } ) => model.get( 'elType' ) === childType )\n\t\t\t\t\t.map( ( { id } ) => ( { id } ) );\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow, type V1Element } from './types';\n\nexport function getContainer( id: string ): V1Element | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n\nexport const selectElement = ( elementId: string ) => {\n\ttry {\n\t\tconst container = getContainer( elementId );\n\n\t\trunCommand( 'document/elements/select', { container } );\n\t} catch {}\n};\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementEditorSettings } from '../sync/get-element-editor-settings';\nimport { type ElementID } from '../types';\n\nexport const useElementEditorSettings = ( elementId: ElementID ) => {\n\treturn useListenTo(\n\t\twindowEvent( 'elementor/element/update_editor_settings' ),\n\t\t() => getElementEditorSettings( elementId ),\n\t\t[ elementId ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport function getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { type ElementID } from '../types';\n\nexport const useElementSetting = < TValue >( elementId: ElementID, settingKey: string ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() => getElementSetting< TValue >( elementId, settingKey ),\n\t\t[ elementId, settingKey ]\n\t);\n};\n\nexport const useElementSettings = < TValue >( elementId: ElementID, settingKeys: string[] ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() =>\n\t\t\tsettingKeys.reduce< Record< string, TValue > >( ( settings, key ) => {\n\t\t\t\tconst value = getElementSetting< TValue >( elementId, key );\n\n\t\t\t\tif ( value !== null ) {\n\t\t\t\t\tsettings[ key ] = value;\n\t\t\t\t}\n\n\t\t\t\treturn settings;\n\t\t\t}, {} ),\n\t\t[ elementId, settingKeys.join( ',' ) ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementSetting = < TValue >( elementId: ElementID, settingKey: string ): TValue | null => {\n\tconst container = getContainer( elementId );\n\n\treturn ( container?.settings?.get( settingKey ) as TValue ) ?? null;\n};\n\nexport const getElementSettings = < TValue >(\n\telementId: ElementID,\n\tsettingKey: string[]\n): Record< string, TValue | null > => {\n\treturn Object.fromEntries( settingKey.map( ( key ) => [ key, getElementSetting( elementId, key ) ] ) );\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useParentElement( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/create' ) ],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow = window as unknown as ExtendedWindow;\n\t\t\tconst element = extendedWindow?.elementor?.getContainer?.( elementId );\n\t\t\tif ( ! element ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn element.parent;\n\t\t},\n\t\t[ elementId ]\n\t);\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementType } from '../sync/get-element-type';\nimport { getSelectedElements } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\tconst elements = useListenTo(\n\t\t[\n\t\t\tcommandEndEvent( 'document/elements/select' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect' ),\n\t\t\tcommandEndEvent( 'document/elements/select-all' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect-all' ),\n\t\t],\n\t\tgetSelectedElements\n\t);\n\n\tconst [ element ] = elements;\n\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type ExtendedWindow, type V1ElementConfig } from '../sync/types.js';\ntype WidgetsCache< T > = Record< string, T >;\n\nexport function getWidgetsCache< T extends V1ElementConfig >(): WidgetsCache< T > | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn ( extendedWindow?.elementor?.widgetsCache as WidgetsCache< T > ) || null;\n}\n","import { type ElementType } from '../types';\nimport { getWidgetsCache } from './get-widgets-cache';\n\nexport function getElementType( type: string ): ElementType | null {\n\tif ( ! type ) {\n\t\treturn null;\n\t}\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\tif ( ! elementType?.atomic_controls ) {\n\t\treturn null;\n\t}\n\n\tif ( ! elementType?.atomic_props_schema ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tkey: type,\n\t\tcontrols: elementType.atomic_controls,\n\t\tpropsSchema: elementType.atomic_props_schema,\n\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\ttitle: elementType.title,\n\t\tstyleStates: elementType.atomic_style_states ?? [],\n\t};\n}\n","import { type Element } from '../types';\nimport { type ExtendedWindow } from './types';\n\nexport function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type CreateElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function createElement( { containerId, model, options }: CreateElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'document/elements/create', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions: { edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement, type CreateElementParams } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype CreateNestedElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tcreateParams: CreateElementParams;\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateNestedElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateNestedElementsParams ): CreatedElementsResult => {\n\tconst undoableCreate = undoable(\n\t\t{\n\t\t\tdo: ( { elements: elementsParam }: { elements: CreateElementParams[] } ): CreatedElementsResult => {\n\t\t\t\tconst createdElements: CreatedElement[] = [];\n\n\t\t\t\telementsParam.forEach( ( createParams ) => {\n\t\t\t\t\tconst { options, ...elementParams } = createParams;\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\t...elementParams,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tcreatedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\tcreateParams: {\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements };\n\t\t\t},\n\t\t\tundo: ( _: { elements: CreateElementParams[] }, { createdElements }: CreatedElementsResult ) => {\n\t\t\t\t// Delete elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...createdElements ].reverse().forEach( ( { elementId } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elements: CreateElementParams[] },\n\t\t\t\t{ createdElements }: CreatedElementsResult\n\t\t\t): CreatedElementsResult => {\n\t\t\t\tconst newElements: CreatedElement[] = [];\n\n\t\t\t\tcreatedElements.forEach( ( { createParams, model } ) => {\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainerId: createParams.containerId,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...createParams.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tcreateParams,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements: newElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableCreate( { elements } );\n};\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\nexport function deleteElement( {\n\telementId,\n\toptions = {},\n}: {\n\telementId: string;\n\toptions?: Options;\n} ): Promise< void > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\treturn runCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tscrollIntoView: boolean;\n};\n\nexport type DropElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function dropElement( { containerId, model, options }: DropElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'preview/drop', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telementId: string;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { elementId, options = {} }: DuplicateElementParams ): V1Element {\n\tconst elementToDuplicate = getContainer( elementId );\n\n\tif ( ! elementToDuplicate ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\t// Get the position after the original element (only when cloning)\n\tconst currentIndex = elementToDuplicate.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: elementToDuplicate,\n\t\toptions: { at: insertPosition, edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { duplicateElement } from './duplicate-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype DuplicateElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\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\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\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( ANCHOR_SELECTOR ) ) ) {\n\t\t// Ensure the child is not in the current element's scope\n\t\tconst childElementId = findElementIdOf( childAnchorElement );\n\n\t\tif ( childElementId !== elementId ) {\n\t\t\treturn childElementId;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getAnchoredAncestorId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element || element.parentElement === null ) {\n\t\treturn null;\n\t}\n\n\tconst parentAnchor = element.parentElement.closest( ANCHOR_SELECTOR );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId ) as HTMLElement;\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of Array.from( element.children ) as HTMLElement[] ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( child.matches( ANCHOR_SELECTOR ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( doesElementContainAnchor( child ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findElementIdOf( element: Element ): string | null {\n\treturn element.closest< HTMLElement >( '[data-id]' )?.dataset.id || null;\n}\n\nfunction getElementDOM( id: string ) {\n\ttry {\n\t\treturn getContainer( id )?.view?.el || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n","import { commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport const ELEMENT_STYLE_CHANGE_EVENT = 'elementor/editor-v2/editor-elements/style';\n\nexport const styleRerenderEvents = [\n\tcommandEndEvent( 'document/elements/create' ),\n\tcommandEndEvent( 'document/elements/duplicate' ),\n\tcommandEndEvent( 'document/elements/import' ),\n\tcommandEndEvent( 'document/elements/paste' ),\n\twindowEvent( ELEMENT_STYLE_CHANGE_EVENT ),\n];\n","import { classesPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tgenerateId,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type CreateElementStyleArgs = {\n\tstyleId?: StyleDefinitionID;\n\telementId: ElementID;\n\tclassesProp: string;\n\tlabel: string;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n\tadditionalVariants?: StyleDefinitionVariant[];\n};\n\nexport function createElementStyle( {\n\tstyleId,\n\telementId,\n\tclassesProp,\n\tlabel,\n\tmeta,\n\tprops,\n\tcustom_css: customCss = null,\n\tadditionalVariants = [],\n}: CreateElementStyleArgs ): string {\n\tlet id = styleId;\n\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\tid ??= generateId( `e-${ elementId }-`, Object.keys( styles ) );\n\n\t\tconst variants = [ { meta, props, custom_css: customCss }, ...additionalVariants ];\n\n\t\tstyles[ id ] = {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} satisfies StyleDefinition;\n\n\t\taddStyleToClassesProp( elementId, classesProp, id );\n\n\t\treturn styles;\n\t} );\n\n\treturn id as string;\n}\n\nfunction addStyleToClassesProp( elementId: ElementID, classesProp: string, styleId: string ) {\n\tconst base = getElementSetting( elementId, classesProp );\n\n\tconst classesPropValue = classesPropTypeUtil.create(\n\t\t( prev ) => {\n\t\t\treturn [ ...( prev ?? [] ), styleId ];\n\t\t},\n\t\t{ base }\n\t);\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\t[ classesProp ]: classesPropValue,\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n\nexport function shouldCreateNewLocalStyle< T >(\n\tpayload: { styleId: StyleDefinition[ 'id' ] | null; provider: T | null } | null\n) {\n\treturn ! payload?.styleId && ! payload?.provider;\n}\n","import { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionsMap } from '@elementor/editor-styles';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { ElementNotFoundError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { type V1Element } from '../sync/types';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { ELEMENT_STYLE_CHANGE_EVENT } from './consts';\n\ntype Mutator = ( styles: StyleDefinitionsMap ) => StyleDefinitionsMap;\n\nexport function mutateElementStyles( elementId: ElementID, mutator: Mutator ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId } } );\n\t}\n\n\tconst oldIds = Object.keys( container.model.get( 'styles' ) ?? {} );\n\n\tconst styles = mutateStyles( container, mutator );\n\n\tconst newIds = Object.keys( styles );\n\n\tclearRemovedClasses( container, {\n\t\toldIds,\n\t\tnewIds,\n\t} );\n\n\tnotifyChanges();\n\n\treturn styles;\n}\n\nfunction mutateStyles( container: V1Element, mutator: Mutator ) {\n\tconst styles: StyleDefinitionsMap = structuredClone( container.model.get( 'styles' ) ) ?? {};\n\n\tconst entries = Object.entries( mutator( styles ) )\n\t\t.map( ( [ styleId, style ] ) => {\n\t\t\tstyle.variants = removeEmptyVariants( style );\n\n\t\t\treturn [ styleId, style ] as const;\n\t\t} )\n\t\t.filter( ( [ , style ] ) => {\n\t\t\treturn ! isStyleEmpty( style );\n\t\t} );\n\n\tconst mutatedStyles = Object.fromEntries( entries );\n\n\tcontainer.model.set( 'styles', mutatedStyles );\n\n\treturn mutatedStyles;\n}\n\nfunction removeEmptyVariants( style: StyleDefinition ) {\n\treturn style.variants.filter(\n\t\t( { props, custom_css: customCss } ) => Object.keys( props ).length > 0 || customCss?.raw\n\t);\n}\n\nfunction isStyleEmpty( style: StyleDefinition ) {\n\treturn style.variants.length === 0;\n}\n\nfunction clearRemovedClasses( container: V1Element, { oldIds, newIds }: { oldIds: string[]; newIds: string[] } ) {\n\tconst removedIds = oldIds.filter( ( id ) => ! newIds.includes( id ) );\n\tconst classesProps = structuredClone( getClassesProps( container ) );\n\n\tclassesProps.forEach( ( [ , prop ] ) => {\n\t\tprop.value = prop.value.filter( ( value ) => ! removedIds.includes( value ) );\n\t} );\n\n\tupdateElementSettings( {\n\t\tid: container.id,\n\t\tprops: Object.fromEntries( classesProps ),\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getClassesProps( container: V1Element ) {\n\treturn Object.entries( container.settings.toJSON() ).filter( ( prop ): prop is [ string, ClassesPropValue ] => {\n\t\tconst [ , value ] = prop;\n\n\t\treturn classesPropTypeUtil.isValid( value );\n\t} );\n}\n\nfunction notifyChanges() {\n\tdispatchChangeEvent();\n\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n}\n\nfunction dispatchChangeEvent() {\n\twindow.dispatchEvent( new CustomEvent( ELEMENT_STYLE_CHANGE_EVENT ) );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport function deleteElementStyle( elementId: ElementID, styleId: StyleDefinitionID ) {\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\t// The object is deep cloned so mutating it is fine.\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete styles[ styleId ];\n\n\t\treturn styles;\n\t} );\n}\n","import { mergeProps } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { StyleNotFoundError } from '../errors';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type UpdateElementStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n};\n\nexport function updateElementStyle( args: UpdateElementStyleArgs ) {\n\tmutateElementStyles( args.elementId, ( styles ) => {\n\t\tconst style = styles[ args.styleId ];\n\n\t\tif ( ! style ) {\n\t\t\tthrow new StyleNotFoundError( { context: { styleId: args.styleId } } );\n\t\t}\n\n\t\tconst variant = getVariantByMeta( style, args.meta );\n\t\tconst customCss = ( 'custom_css' in args ? args.custom_css : variant?.custom_css ) ?? null;\n\n\t\tif ( variant ) {\n\t\t\tvariant.props = mergeProps( variant.props, args.props );\n\t\t\tvariant.custom_css = customCss?.raw ? customCss : null;\n\t\t} else {\n\t\t\tstyle.variants.push( { meta: args.meta, props: args.props, custom_css: customCss } );\n\t\t}\n\n\t\treturn styles;\n\t} );\n}\n","import { useState } from 'react';\nimport { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementInteractions } from '../sync/get-element-interactions';\nimport { type ElementInteractions } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport const useElementInteractions = ( elementId: ElementID ) => {\n\tconst [ interactions, setInteractions ] = useState< ElementInteractions >( () => {\n\t\tconst initial = getElementInteractions( elementId );\n\n\t\treturn initial ?? { version: 1, items: [] };\n\t} );\n\n\tuseListenTo(\n\t\twindowEvent( 'elementor/element/update_interactions' ),\n\t\t() => {\n\t\t\tconst newInteractions = getElementInteractions( elementId );\n\t\t\tsetInteractions( newInteractions ?? { version: 1, items: [] } );\n\t\t},\n\t\t[ elementId ]\n\t);\n\n\treturn interactions;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { type ElementInteractions } from './types';\n\nexport function getElementInteractions( elementId: ElementID ): ElementInteractions | undefined {\n\tconst container = getContainer( elementId );\n\n\tconst interactions = container?.model?.get( 'interactions' );\n\n\tif ( typeof interactions === 'string' ) {\n\t\treturn JSON.parse( interactions ) as ElementInteractions;\n\t}\n\n\treturn interactions;\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementInteractions = ( {\n\telementId,\n\tinteractions,\n}: {\n\telementId: string;\n\tinteractions: V1ElementModelProps[ 'interactions' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\telement.model.set( 'interactions', interactions );\n\n\twindow.dispatchEvent( new CustomEvent( 'elementor/element/update_interactions' ) );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nexport const playElementInteractions = ( elementId: string, 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"],"mappings":"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","names":["useListenTo","useListenTo","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","runCommand","runCommand","runCommandSync","runCommandSync","runCommandSync","runCommandSync","undoable","__","__","undoable","undoable","__","__","undoable","undoable","__","__","undoable","runCommandSync","runCommandSync","runCommandSync","runCommandSync","commandEndEvent","windowEvent","classesPropTypeUtil","runCommandSync","runCommandSync","classesPropTypeUtil","useListenTo","windowEvent","useListenTo","windowEvent","runCommandSync","setDocumentModifiedStatus","runCommandSync"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-element-children.ts","../src/sync/get-container.ts","../src/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"],"sourcesContent":["import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from '../sync/get-container';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nexport function useElementChildren< T extends ElementChildren >(\n\telementId: ElementID,\n\tchildrenTypes: Record< string, string >\n): T {\n\treturn useListenTo(\n\t\t[\n\t\t\tv1ReadyEvent(),\n\t\t\tcommandEndEvent( 'document/elements/create' ),\n\t\t\tcommandEndEvent( 'document/elements/delete' ),\n\t\t\tcommandEndEvent( 'document/elements/update' ),\n\t\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst container = getContainer( elementId );\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = container?.children?.findRecursive?.(\n\t\t\t\t\t( { model } ) => model.get( 'elType' ) === parentType\n\t\t\t\t);\n\n\t\t\t\tconst children = parent?.children ?? [];\n\n\t\t\t\tacc[ childType ] = children\n\t\t\t\t\t.filter( ( { model } ) => model.get( 'elType' ) === childType )\n\t\t\t\t\t.map( ( { id } ) => ( { id } ) );\n\n\t\t\t\treturn acc;\n\t\t\t}, {} as ElementChildren );\n\n\t\t\treturn elementChildren;\n\t\t},\n\t\t[ elementId ]\n\t) as T;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow, type V1Element } from './types';\n\nexport function getContainer( id: string ): V1Element | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n\nexport const selectElement = ( elementId: string ) => {\n\ttry {\n\t\tconst container = getContainer( elementId );\n\n\t\trunCommand( 'document/elements/select', { container } );\n\t} catch {}\n};\n","import { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementEditorSettings } from '../sync/get-element-editor-settings';\nimport { type ElementID } from '../types';\n\nexport const useElementEditorSettings = ( elementId: ElementID ) => {\n\treturn useListenTo(\n\t\twindowEvent( 'elementor/element/update_editor_settings' ),\n\t\t() => getElementEditorSettings( elementId ),\n\t\t[ elementId ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport function getElementEditorSettings( elementId: ElementID ) {\n\tconst container = getContainer( elementId );\n\n\treturn container?.model.get( 'editor_settings' ) ?? {};\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { type ElementID } from '../types';\n\nexport const useElementSetting = < TValue >( elementId: ElementID, settingKey: string ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() => getElementSetting< TValue >( elementId, settingKey ),\n\t\t[ elementId, settingKey ]\n\t);\n};\n\nexport const useElementSettings = < TValue >( elementId: ElementID, settingKeys: string[] ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t() =>\n\t\t\tsettingKeys.reduce< Record< string, TValue > >( ( settings, key ) => {\n\t\t\t\tconst value = getElementSetting< TValue >( elementId, key );\n\n\t\t\t\tif ( value !== null ) {\n\t\t\t\t\tsettings[ key ] = value;\n\t\t\t\t}\n\n\t\t\t\treturn settings;\n\t\t\t}, {} ),\n\t\t[ elementId, settingKeys.join( ',' ) ]\n\t);\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementSetting = < TValue >( elementId: ElementID, settingKey: string ): TValue | null => {\n\tconst container = getContainer( elementId );\n\n\treturn ( container?.settings?.get( settingKey ) as TValue ) ?? null;\n};\n\nexport const getElementSettings = < TValue >(\n\telementId: ElementID,\n\tsettingKey: string[]\n): Record< string, TValue | null > => {\n\treturn Object.fromEntries( settingKey.map( ( key ) => [ key, getElementSetting( elementId, key ) ] ) );\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useParentElement( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/create' ) ],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow = window as unknown as ExtendedWindow;\n\t\t\tconst element = extendedWindow?.elementor?.getContainer?.( elementId );\n\t\t\tif ( ! element ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn element.parent;\n\t\t},\n\t\t[ elementId ]\n\t);\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementType } from '../sync/get-element-type';\nimport { getSelectedElements } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\tconst elements = useListenTo(\n\t\t[\n\t\t\tcommandEndEvent( 'document/elements/select' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect' ),\n\t\t\tcommandEndEvent( 'document/elements/select-all' ),\n\t\t\tcommandEndEvent( 'document/elements/deselect-all' ),\n\t\t],\n\t\tgetSelectedElements\n\t);\n\n\tconst [ element ] = elements;\n\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type ExtendedWindow, type V1ElementConfig } from '../sync/types.js';\ntype WidgetsCache< T > = Record< string, T >;\n\nexport function getWidgetsCache< T extends V1ElementConfig >(): WidgetsCache< T > | null {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn ( extendedWindow?.elementor?.widgetsCache as WidgetsCache< T > ) || null;\n}\n","import { type ElementType } from '../types';\nimport { getWidgetsCache } from './get-widgets-cache';\n\nexport function getElementType( type: string ): ElementType | null {\n\tif ( ! type ) {\n\t\treturn null;\n\t}\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\tif ( ! elementType?.atomic_controls ) {\n\t\treturn null;\n\t}\n\n\tif ( ! elementType?.atomic_props_schema ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tkey: type,\n\t\tcontrols: elementType.atomic_controls,\n\t\tpropsSchema: elementType.atomic_props_schema,\n\t\tdependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {},\n\t\ttitle: elementType.title,\n\t\tstyleStates: elementType.atomic_style_states ?? [],\n\t};\n}\n","import { type Element } from '../types';\nimport { type ExtendedWindow } from './types';\n\nexport function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type CreateElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function createElement( { containerId, model, options }: CreateElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'document/elements/create', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions: { edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement, type CreateElementParams } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype CreateNestedElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\telementId: string;\n\tmodel: V1ElementModelProps;\n\tcreateParams: CreateElementParams;\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateNestedElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateNestedElementsParams ): CreatedElementsResult => {\n\tconst undoableCreate = undoable(\n\t\t{\n\t\t\tdo: ( { elements: elementsParam }: { elements: CreateElementParams[] } ): CreatedElementsResult => {\n\t\t\t\tconst createdElements: CreatedElement[] = [];\n\n\t\t\t\telementsParam.forEach( ( createParams ) => {\n\t\t\t\t\tconst { options, ...elementParams } = createParams;\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\t...elementParams,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tcreatedElements.push( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\tcreateParams: {\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements };\n\t\t\t},\n\t\t\tundo: ( _: { elements: CreateElementParams[] }, { createdElements }: CreatedElementsResult ) => {\n\t\t\t\t// Delete elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...createdElements ].reverse().forEach( ( { elementId } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elements: CreateElementParams[] },\n\t\t\t\t{ createdElements }: CreatedElementsResult\n\t\t\t): CreatedElementsResult => {\n\t\t\t\tconst newElements: CreatedElement[] = [];\n\n\t\t\t\tcreatedElements.forEach( ( { createParams, model } ) => {\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainerId: createParams.containerId,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...createParams.options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst elementId = element.id;\n\n\t\t\t\t\tconst container = getContainer( elementId );\n\n\t\t\t\t\tif ( container ) {\n\t\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tcreateParams,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn { createdElements: newElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableCreate( { elements } );\n};\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\nexport function deleteElement( {\n\telementId,\n\toptions = {},\n}: {\n\telementId: string;\n\toptions?: Options;\n} ): Promise< void > {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\treturn runCommand( 'document/elements/delete', {\n\t\tcontainer,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element, type V1ElementModelProps, type V1ElementSettingsProps } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tscrollIntoView: boolean;\n};\n\nexport type DropElementParams = {\n\tcontainerId: string;\n\toptions?: Options;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n};\n\nexport function dropElement( { containerId, model, options }: DropElementParams ) {\n\tconst container = getContainer( containerId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Container with ID \"${ containerId }\" not found` );\n\t}\n\n\treturn runCommandSync< V1Element >( 'preview/drop', {\n\t\tcontainer,\n\t\tmodel,\n\t\toptions,\n\t} );\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { getContainer } from './get-container';\nimport { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telementId: string;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { elementId, options = {} }: DuplicateElementParams ): V1Element {\n\tconst elementToDuplicate = getContainer( elementId );\n\n\tif ( ! elementToDuplicate ) {\n\t\tthrow new Error( `Element with ID \"${ elementId }\" not found` );\n\t}\n\n\t// Get the position after the original element (only when cloning)\n\tconst currentIndex = elementToDuplicate.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: elementToDuplicate,\n\t\toptions: { at: insertPosition, edit: false, ...options },\n\t} );\n}\n","import { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { createElement } from './create-element';\nimport { deleteElement } from './delete-element';\nimport { duplicateElement } from './duplicate-element';\nimport { getContainer } from './get-container';\nimport { type V1ElementModelProps } from './types';\n\ntype DuplicateElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonDuplicateElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype DuplicatedElement = {\n\tid: string;\n\tmodel: V1ElementModelProps;\n\toriginalElementId: string;\n\tmodelToRestore?: V1ElementModelProps;\n\tparentContainerId?: string;\n\tat?: number;\n};\n\ntype DuplicatedElementsResult = {\n\tduplicatedElements: DuplicatedElement[];\n};\n\nexport type { DuplicateElementsParams, DuplicatedElement, DuplicatedElementsResult };\n\nexport const duplicateElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item duplicated', 'elementor' ),\n\tonDuplicateElements,\n\tonRestoreElements,\n}: DuplicateElementsParams ): DuplicatedElementsResult => {\n\tconst undoableDuplicate = undoable(\n\t\t{\n\t\t\tdo: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {\n\t\t\t\t// Call onCreate before duplicating elements to avoid conflicts between commands\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = elementIdsToDuplicate.reduce( ( acc, elementId ) => {\n\t\t\t\t\tconst originalContainer = getContainer( elementId );\n\n\t\t\t\t\tif ( originalContainer?.parent ) {\n\t\t\t\t\t\tconst duplicatedElement = duplicateElement( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: duplicatedElement.id,\n\t\t\t\t\t\t\tmodel: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: elementId,\n\t\t\t\t\t\t\tmodelToRestore: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\t\tparentContainerId: duplicatedElement.parent?.id,\n\t\t\t\t\t\t\tat: duplicatedElement.view?._index,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\t\t\t\t// Delete duplicated elements in reverse order to avoid dependency issues\n\t\t\t\t[ ...duplicatedElements ].reverse().forEach( ( { id } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\telementId: id,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tredo: (\n\t\t\t\t_: { elementIds: string[] },\n\t\t\t\t{ duplicatedElements: previousElements }: DuplicatedElementsResult\n\t\t\t): DuplicatedElementsResult => {\n\t\t\t\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = previousElements.reduce( ( acc, previousElement ) => {\n\t\t\t\t\tif ( previousElement.modelToRestore && previousElement.parentContainerId ) {\n\t\t\t\t\t\tconst createdElement = createElement( {\n\t\t\t\t\t\t\tcontainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tmodel: previousElement.modelToRestore,\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tuseHistory: false,\n\t\t\t\t\t\t\t\tclone: false,\n\t\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tacc.push( {\n\t\t\t\t\t\t\tid: createdElement.id,\n\t\t\t\t\t\t\tmodel: createdElement.model.toJSON(),\n\t\t\t\t\t\t\toriginalElementId: previousElement.originalElementId,\n\t\t\t\t\t\t\tmodelToRestore: previousElement.modelToRestore,\n\t\t\t\t\t\t\tparentContainerId: previousElement.parentContainerId,\n\t\t\t\t\t\t\tat: previousElement.at,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as DuplicatedElement[] );\n\n\t\t\t\treturn { duplicatedElements };\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t}\n\t);\n\n\treturn undoableDuplicate( { elementIds } );\n};\n","import { type ExtendedWindow } from './types';\n\nexport const generateElementId = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn (\n\t\textendedWindow.elementorCommon?.helpers?.getUniqueId?.() ??\n\t\t`el-${ Date.now() }-${ Math.random().toString( 36 ).substring( 2, 9 ) }`\n\t);\n};\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentContainer() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrent?.()?.container ?? null;\n}\n","import { type ExtendedWindow } from './types';\n\nexport function getCurrentDocumentId() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.documents?.getCurrentId?.() ?? null;\n}\n","import { createError } from '@elementor/utils';\n\nexport const ElementNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_not_found',\n\tmessage: 'Element not found.',\n} );\n\nexport const StyleNotFoundError = createError< { styleId: string } >( {\n\tcode: 'style_not_found',\n\tmessage: 'Style not found.',\n} );\n\nexport const ElementTypeNotExistsError = createError< { elementId: string } >( {\n\tcode: 'element_type_not_exists',\n\tmessage: 'Element type does not exist.',\n} );\n\nexport const ElementLabelNotExistsError = createError< { elementType: string } >( {\n\tcode: 'element_label_not_exists',\n\tmessage: 'Element label does not exist.',\n} );\n\nexport const ElementParentNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_parent_not_found',\n\tmessage: 'Element parent not found.',\n} );\n\nexport const ElementIndexNotFoundError = createError< { elementId: string } >( {\n\tcode: 'element_index_not_found',\n\tmessage: 'Element index not found.',\n} );\n","import { ElementLabelNotExistsError, ElementTypeNotExistsError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { getWidgetsCache } from '../sync/get-widgets-cache';\nimport { type ElementID } from '../types';\nimport { getSelectedElements } from './get-selected-elements';\n\nexport function getElementLabel( elementId?: ElementID ) {\n\tif ( ! elementId ) {\n\t\telementId = getSelectedElements()?.[ 0 ]?.id;\n\t}\n\n\tconst container = getContainer( elementId );\n\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tif ( ! type ) {\n\t\tthrow new ElementTypeNotExistsError( { context: { elementId } } );\n\t}\n\n\tconst label = getWidgetsCache()?.[ type ]?.title;\n\n\tif ( ! label ) {\n\t\tthrow new ElementLabelNotExistsError( { context: { elementType: type } } );\n\t}\n\n\treturn label;\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { getContainer } from './get-container';\n\nexport const getElementStyles = ( elementID: ElementID ): Record< string, StyleDefinition > | null => {\n\tconst container = getContainer( elementID );\n\n\treturn container?.model.get( 'styles' ) || null;\n};\n","import { type 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\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\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( ANCHOR_SELECTOR ) ) ) {\n\t\t// Ensure the child is not in the current element's scope\n\t\tconst childElementId = findElementIdOf( childAnchorElement );\n\n\t\tif ( childElementId !== elementId ) {\n\t\t\treturn childElementId;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getAnchoredAncestorId( elementId: string ): string | null {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element || element.parentElement === null ) {\n\t\treturn null;\n\t}\n\n\tconst parentAnchor = element.parentElement.closest( ANCHOR_SELECTOR );\n\n\treturn parentAnchor ? findElementIdOf( parentAnchor ) : null;\n}\n\nexport function isElementAnchored( elementId: string ): boolean {\n\tconst element = getElementDOM( elementId ) as HTMLElement;\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn true;\n\t}\n\n\treturn doesElementContainAnchor( element );\n}\n\nfunction doesElementContainAnchor( element: Element ): boolean {\n\tfor ( const child of Array.from( element.children ) as HTMLElement[] ) {\n\t\tif ( isElementorElement( child ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( child.matches( ANCHOR_SELECTOR ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( doesElementContainAnchor( child ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findElementIdOf( element: Element ): string | null {\n\treturn element.closest< HTMLElement >( '[data-id]' )?.dataset.id || null;\n}\n\nfunction getElementDOM( id: string ) {\n\ttry {\n\t\treturn getContainer( id )?.view?.el || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction isElementorElement( element: Element ): boolean {\n\treturn element.hasAttribute( 'data-id' );\n}\n","import { commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport const ELEMENT_STYLE_CHANGE_EVENT = 'elementor/editor-v2/editor-elements/style';\n\nexport const styleRerenderEvents = [\n\tcommandEndEvent( 'document/elements/create' ),\n\tcommandEndEvent( 'document/elements/duplicate' ),\n\tcommandEndEvent( 'document/elements/import' ),\n\tcommandEndEvent( 'document/elements/paste' ),\n\twindowEvent( ELEMENT_STYLE_CHANGE_EVENT ),\n];\n","import { classesPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tgenerateId,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\n\nimport { getElementSetting } from '../sync/get-element-setting';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type CreateElementStyleArgs = {\n\tstyleId?: StyleDefinitionID;\n\telementId: ElementID;\n\tclassesProp: string;\n\tlabel: string;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n\tadditionalVariants?: StyleDefinitionVariant[];\n};\n\nexport function createElementStyle( {\n\tstyleId,\n\telementId,\n\tclassesProp,\n\tlabel,\n\tmeta,\n\tprops,\n\tcustom_css: customCss = null,\n\tadditionalVariants = [],\n}: CreateElementStyleArgs ): string {\n\tlet id = styleId;\n\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\tid ??= generateId( `e-${ elementId }-`, Object.keys( styles ) );\n\n\t\tconst variants = [ { meta, props, custom_css: customCss }, ...additionalVariants ];\n\n\t\tstyles[ id ] = {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} satisfies StyleDefinition;\n\n\t\taddStyleToClassesProp( elementId, classesProp, id );\n\n\t\treturn styles;\n\t} );\n\n\treturn id as string;\n}\n\nfunction addStyleToClassesProp( elementId: ElementID, classesProp: string, styleId: string ) {\n\tconst base = getElementSetting( elementId, classesProp );\n\n\tconst classesPropValue = classesPropTypeUtil.create(\n\t\t( prev ) => {\n\t\t\treturn [ ...( prev ?? [] ), styleId ];\n\t\t},\n\t\t{ base }\n\t);\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\t[ classesProp ]: classesPropValue,\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n\nexport function shouldCreateNewLocalStyle< T >(\n\tpayload: { styleId: StyleDefinition[ 'id' ] | null; provider: T | null } | null\n) {\n\treturn ! payload?.styleId && ! payload?.provider;\n}\n","import { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionsMap } from '@elementor/editor-styles';\nimport { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { ElementNotFoundError } from '../errors';\nimport { getContainer } from '../sync/get-container';\nimport { type V1Element } from '../sync/types';\nimport { updateElementSettings } from '../sync/update-element-settings';\nimport { type ElementID } from '../types';\nimport { ELEMENT_STYLE_CHANGE_EVENT } from './consts';\n\ntype Mutator = ( styles: StyleDefinitionsMap ) => StyleDefinitionsMap;\n\nexport function mutateElementStyles( elementId: ElementID, mutator: Mutator ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId } } );\n\t}\n\n\tconst oldIds = Object.keys( container.model.get( 'styles' ) ?? {} );\n\n\tconst styles = mutateStyles( container, mutator );\n\n\tconst newIds = Object.keys( styles );\n\n\tclearRemovedClasses( container, {\n\t\toldIds,\n\t\tnewIds,\n\t} );\n\n\tnotifyChanges();\n\n\treturn styles;\n}\n\nfunction mutateStyles( container: V1Element, mutator: Mutator ) {\n\tconst styles: StyleDefinitionsMap = structuredClone( container.model.get( 'styles' ) ) ?? {};\n\n\tconst entries = Object.entries( mutator( styles ) )\n\t\t.map( ( [ styleId, style ] ) => {\n\t\t\tstyle.variants = removeEmptyVariants( style );\n\n\t\t\treturn [ styleId, style ] as const;\n\t\t} )\n\t\t.filter( ( [ , style ] ) => {\n\t\t\treturn ! isStyleEmpty( style );\n\t\t} );\n\n\tconst mutatedStyles = Object.fromEntries( entries );\n\n\tcontainer.model.set( 'styles', mutatedStyles );\n\n\treturn mutatedStyles;\n}\n\nfunction removeEmptyVariants( style: StyleDefinition ) {\n\treturn style.variants.filter(\n\t\t( { props, custom_css: customCss } ) => Object.keys( props ).length > 0 || customCss?.raw\n\t);\n}\n\nfunction isStyleEmpty( style: StyleDefinition ) {\n\treturn style.variants.length === 0;\n}\n\nfunction clearRemovedClasses( container: V1Element, { oldIds, newIds }: { oldIds: string[]; newIds: string[] } ) {\n\tconst removedIds = oldIds.filter( ( id ) => ! newIds.includes( id ) );\n\tconst classesProps = structuredClone( getClassesProps( container ) );\n\n\tclassesProps.forEach( ( [ , prop ] ) => {\n\t\tprop.value = prop.value.filter( ( value ) => ! removedIds.includes( value ) );\n\t} );\n\n\tupdateElementSettings( {\n\t\tid: container.id,\n\t\tprops: Object.fromEntries( classesProps ),\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getClassesProps( container: V1Element ) {\n\treturn Object.entries( container.settings.toJSON() ).filter( ( prop ): prop is [ string, ClassesPropValue ] => {\n\t\tconst [ , value ] = prop;\n\n\t\treturn classesPropTypeUtil.isValid( value );\n\t} );\n}\n\nfunction notifyChanges() {\n\tdispatchChangeEvent();\n\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n}\n\nfunction dispatchChangeEvent() {\n\twindow.dispatchEvent( new CustomEvent( ELEMENT_STYLE_CHANGE_EVENT ) );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport function deleteElementStyle( elementId: ElementID, styleId: StyleDefinitionID ) {\n\tmutateElementStyles( elementId, ( styles ) => {\n\t\t// The object is deep cloned so mutating it is fine.\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete styles[ styleId ];\n\n\t\treturn styles;\n\t} );\n}\n","import { mergeProps } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { StyleNotFoundError } from '../errors';\nimport { type ElementID } from '../types';\nimport { mutateElementStyles } from './mutate-element-styles';\n\nexport type UpdateElementStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: StyleDefinitionVariant[ 'props' ];\n\tcustom_css?: StyleDefinitionVariant[ 'custom_css' ];\n};\n\nexport function updateElementStyle( args: UpdateElementStyleArgs ) {\n\tmutateElementStyles( args.elementId, ( styles ) => {\n\t\tconst style = styles[ args.styleId ];\n\n\t\tif ( ! style ) {\n\t\t\tthrow new StyleNotFoundError( { context: { styleId: args.styleId } } );\n\t\t}\n\n\t\tconst variant = getVariantByMeta( style, args.meta );\n\t\tconst customCss = ( 'custom_css' in args ? args.custom_css : variant?.custom_css ) ?? null;\n\n\t\tif ( variant ) {\n\t\t\tvariant.props = mergeProps( variant.props, args.props );\n\t\t\tvariant.custom_css = customCss?.raw ? customCss : null;\n\t\t} else {\n\t\t\tstyle.variants.push( { meta: args.meta, props: args.props, custom_css: customCss } );\n\t\t}\n\n\t\treturn styles;\n\t} );\n}\n","import { useState } from 'react';\nimport { __privateUseListenTo as useListenTo, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementInteractions } from '../sync/get-element-interactions';\nimport { type ElementInteractions } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport const useElementInteractions = ( elementId: ElementID ) => {\n\tconst [ interactions, setInteractions ] = useState< ElementInteractions >( () => {\n\t\tconst initial = getElementInteractions( elementId );\n\n\t\treturn initial ?? { version: 1, items: [] };\n\t} );\n\n\tuseListenTo(\n\t\twindowEvent( 'elementor/element/update_interactions' ),\n\t\t() => {\n\t\t\tconst newInteractions = getElementInteractions( elementId );\n\t\t\tsetInteractions( newInteractions ?? { version: 1, items: [] } );\n\t\t},\n\t\t[ elementId ]\n\t);\n\n\treturn interactions;\n};\n","import { type ElementID } from '../types';\nimport { getContainer } from './get-container';\nimport { type ElementInteractions } from './types';\n\nexport function getElementInteractions( elementId: ElementID ): ElementInteractions | undefined {\n\tconst container = getContainer( elementId );\n\n\tconst interactions = container?.model?.get( 'interactions' );\n\n\tif ( typeof interactions === 'string' ) {\n\t\treturn JSON.parse( interactions ) as ElementInteractions;\n\t}\n\n\treturn interactions;\n}\n","import { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\nimport { type V1ElementModelProps } from '..';\nimport { getContainer } from './get-container';\n\nexport const updateElementInteractions = ( {\n\telementId,\n\tinteractions,\n}: {\n\telementId: string;\n\tinteractions: V1ElementModelProps[ 'interactions' ];\n} ) => {\n\tconst element = getContainer( elementId );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Element with id ${ elementId } not found` );\n\t}\n\n\telement.model.set( 'interactions', interactions );\n\n\twindow.dispatchEvent( new CustomEvent( 'elementor/element/update_interactions' ) );\n\n\tsetDocumentModifiedStatus( true );\n};\n\nexport const playElementInteractions = ( elementId: string, 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"],"mappings":"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","names":["useListenTo","useListenTo","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","useListenTo","commandEndEvent","runCommand","runCommand","runCommandSync","runCommandSync","runCommandSync","runCommandSync","undoable","__","__","undoable","undoable","__","__","undoable","undoable","__","__","undoable","runCommandSync","runCommandSync","runCommandSync","runCommandSync","commandEndEvent","windowEvent","classesPropTypeUtil","runCommandSync","runCommandSync","classesPropTypeUtil","useListenTo","windowEvent","useListenTo","windowEvent","runCommandSync","setDocumentModifiedStatus","runCommandSync"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-elements",
|
|
3
3
|
"description": "This package contains the elements model for the Elementor editor",
|
|
4
|
-
"version": "3.35.0-
|
|
4
|
+
"version": "3.35.0-348",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Elementor Team",
|
|
7
7
|
"homepage": "https://elementor.com/",
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
"dev": "tsup --config=../../tsup.dev.ts"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@elementor/editor-mcp": "3.35.0-
|
|
44
|
-
"@elementor/editor-props": "3.35.0-
|
|
45
|
-
"@elementor/editor-styles": "3.35.0-
|
|
46
|
-
"@elementor/editor-v1-adapters": "3.35.0-
|
|
47
|
-
"@elementor/schema": "3.35.0-
|
|
48
|
-
"@elementor/utils": "3.35.0-
|
|
43
|
+
"@elementor/editor-mcp": "3.35.0-348",
|
|
44
|
+
"@elementor/editor-props": "3.35.0-348",
|
|
45
|
+
"@elementor/editor-styles": "3.35.0-348",
|
|
46
|
+
"@elementor/editor-v1-adapters": "3.35.0-348",
|
|
47
|
+
"@elementor/schema": "3.35.0-348",
|
|
48
|
+
"@elementor/utils": "3.35.0-348",
|
|
49
49
|
"@wordpress/i18n": "^3.1.0"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
@@ -11,7 +11,8 @@ type DuplicateElementsParams = {
|
|
|
11
11
|
elementIds: string[];
|
|
12
12
|
title: string;
|
|
13
13
|
subtitle?: string;
|
|
14
|
-
|
|
14
|
+
onDuplicateElements?: () => void;
|
|
15
|
+
onRestoreElements?: () => void;
|
|
15
16
|
};
|
|
16
17
|
|
|
17
18
|
type DuplicatedElement = {
|
|
@@ -33,17 +34,21 @@ export const duplicateElements = ( {
|
|
|
33
34
|
elementIds,
|
|
34
35
|
title,
|
|
35
36
|
subtitle = __( 'Item duplicated', 'elementor' ),
|
|
37
|
+
onDuplicateElements,
|
|
38
|
+
onRestoreElements,
|
|
36
39
|
}: DuplicateElementsParams ): DuplicatedElementsResult => {
|
|
37
40
|
const undoableDuplicate = undoable(
|
|
38
41
|
{
|
|
39
42
|
do: ( { elementIds: elementIdsToDuplicate }: { elementIds: string[] } ): DuplicatedElementsResult => {
|
|
43
|
+
// Call onCreate before duplicating elements to avoid conflicts between commands
|
|
44
|
+
onDuplicateElements?.();
|
|
40
45
|
const duplicatedElements: DuplicatedElement[] = elementIdsToDuplicate.reduce( ( acc, elementId ) => {
|
|
41
46
|
const originalContainer = getContainer( elementId );
|
|
42
47
|
|
|
43
48
|
if ( originalContainer?.parent ) {
|
|
44
49
|
const duplicatedElement = duplicateElement( {
|
|
45
50
|
elementId,
|
|
46
|
-
options: { useHistory: false
|
|
51
|
+
options: { useHistory: false },
|
|
47
52
|
} );
|
|
48
53
|
|
|
49
54
|
acc.push( {
|
|
@@ -62,6 +67,7 @@ export const duplicateElements = ( {
|
|
|
62
67
|
return { duplicatedElements };
|
|
63
68
|
},
|
|
64
69
|
undo: ( _: { elementIds: string[] }, { duplicatedElements }: DuplicatedElementsResult ) => {
|
|
70
|
+
onRestoreElements?.();
|
|
65
71
|
// Delete duplicated elements in reverse order to avoid dependency issues
|
|
66
72
|
[ ...duplicatedElements ].reverse().forEach( ( { id } ) => {
|
|
67
73
|
deleteElement( {
|
|
@@ -74,6 +80,7 @@ export const duplicateElements = ( {
|
|
|
74
80
|
_: { elementIds: string[] },
|
|
75
81
|
{ duplicatedElements: previousElements }: DuplicatedElementsResult
|
|
76
82
|
): DuplicatedElementsResult => {
|
|
83
|
+
onDuplicateElements?.();
|
|
77
84
|
const duplicatedElements: DuplicatedElement[] = previousElements.reduce( ( acc, previousElement ) => {
|
|
78
85
|
if ( previousElement.modelToRestore && previousElement.parentContainerId ) {
|
|
79
86
|
const createdElement = createElement( {
|