@elementor/editor-elements 4.0.0-607 → 4.0.0-619
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 +14 -6
- package/dist/index.d.ts +14 -6
- package/dist/index.js +57 -53
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +55 -50
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/hooks/use-selected-element-settings.ts +48 -0
- package/src/hooks/use-selected-element.ts +3 -14
- package/src/index.ts +1 -1
- package/src/sync/get-selected-elements.ts +25 -1
- package/src/hooks/use-element-setting.ts +0 -29
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/sync/model-utils.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-all-descendants.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 { getAllDescendants } from './sync/get-all-descendants';\nexport {\n\tfindChildRecursive,\n\tgetElementChildren as getElementChildrenWithFallback,\n\ttype ModelResult,\n} from './sync/model-utils';\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 { moveElements } 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 { findChildRecursive, getElementChildren, type ModelResult } from '../sync/model-utils';\nimport { type V1ElementEditorSettingsProps } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n\teditorSettings: V1ElementEditorSettingsProps;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nfunction toElementModel( { model }: ModelResult ): ElementModel {\n\treturn {\n\t\tid: model.get( 'id' ) as string,\n\t\teditorSettings: model.get( 'editor_settings' ) ?? {},\n\t};\n}\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\t\t\tconst model = container?.model;\n\n\t\t\tif ( ! model ) {\n\t\t\t\treturn {} as ElementChildren;\n\t\t\t}\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = findChildRecursive( model, ( m ) => m.get( 'elType' ) === parentType );\n\n\t\t\t\tif ( ! parent ) {\n\t\t\t\t\tacc[ childType ] = [];\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tconst children = getElementChildren( parent.model, ( m ) => m.get( 'elType' ) === childType );\n\n\t\t\t\tacc[ childType ] = children.map( toElementModel );\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 { type V1Element } from './types';\n\nexport type V1Model = V1Element[ 'model' ];\n\nexport type V1Collection = V1Model[] & {\n\tremove: ( model: V1Model ) => void;\n\tadd: ( model: V1Model, options?: { at?: number }, silent?: boolean ) => void;\n\tindexOf: ( model: V1Model ) => number;\n};\n\nexport type ModelResult = {\n\tmodel: V1Model;\n};\n\nexport function findChildRecursive( model: V1Model, predicate: ( model: V1Model ) => boolean ): ModelResult | null {\n\tconst childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];\n\n\tfor ( const childModel of childModels ) {\n\t\tif ( predicate( childModel ) ) {\n\t\t\treturn { model: childModel };\n\t\t}\n\n\t\tconst found = findChildRecursive( childModel, predicate );\n\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getElementChildren( model: V1Model, predicate?: ( model: V1Model ) => boolean ): ModelResult[] {\n\tconst childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];\n\n\treturn childModels\n\t\t.filter( ( childModel ) => ! predicate || predicate( childModel ) )\n\t\t.map( ( childModel ) => ( { model: childModel } ) );\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\tpseudoStates: elementType.atomic_pseudo_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 { 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\tcontainer: V1Element;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n\toptions?: Options;\n};\n\nexport function createElement( { container, model, options }: CreateElementParams ): V1Element {\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 { type V1Element, type V1ElementModelProps } from './types';\n\ntype CreateElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\tcontainer: V1Element;\n\tparentContainer: V1Element;\n\tmodel: V1ElementModelProps;\n\toptions?: CreateElementParams[ 'options' ];\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateElementsParams ): 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( ( { container, options, ...elementParams } ) => {\n\t\t\t\t\tconst parentContainer = container.lookup?.() ?? container;\n\n\t\t\t\t\tif ( ! parentContainer ) {\n\t\t\t\t\t\tthrow new Error( 'Parent container not found' );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainer: parentContainer,\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\tcreatedElements.push( {\n\t\t\t\t\t\tcontainer: element,\n\t\t\t\t\t\tparentContainer,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\toptions,\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[ ...createdElements ].reverse().forEach( ( { container } ) => {\n\t\t\t\t\tconst freshContainer = container.lookup?.();\n\n\t\t\t\t\tif ( freshContainer ) {\n\t\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\t\tcontainer: freshContainer,\n\t\t\t\t\t\t\toptions: { useHistory: false },\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_: { 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( ( { parentContainer, model, options } ) => {\n\t\t\t\t\tconst freshParent = parentContainer.lookup?.();\n\n\t\t\t\t\tif ( ! freshParent ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainer: freshParent,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\tcontainer: element,\n\t\t\t\t\t\tparentContainer: freshParent,\n\t\t\t\t\t\tmodel: element.model.toJSON(),\n\t\t\t\t\t\toptions,\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 { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\ntype DeleteElementParams = {\n\tcontainer: V1Element;\n\toptions?: Options;\n};\n\nexport function deleteElement( { container, options = {} }: DeleteElementParams ): Promise< void > {\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 { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telement: V1Element;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { element, options = {} }: DuplicateElementParams ): V1Element {\n\tconst currentIndex = element.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: element,\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 V1Element, 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\tcontainer: V1Element;\n\tparentContainer: V1Element;\n\tmodel: V1ElementModelProps;\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\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = [];\n\n\t\t\t\telementIdsToDuplicate.forEach( ( 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\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst duplicatedElement = duplicateElement( {\n\t\t\t\t\t\telement: originalContainer,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( ! duplicatedElement.parent ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tduplicatedElements.push( {\n\t\t\t\t\t\tcontainer: duplicatedElement,\n\t\t\t\t\t\tparentContainer: duplicatedElement.parent,\n\t\t\t\t\t\tmodel: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\tat: duplicatedElement.view?._index,\n\t\t\t\t\t} );\n\t\t\t\t} );\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[ ...duplicatedElements ].reverse().forEach( ( { container } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\tcontainer,\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[] = [];\n\n\t\t\t\tpreviousElements.forEach( ( { parentContainer, model, at } ) => {\n\t\t\t\t\tconst freshParent = parentContainer.lookup?.();\n\n\t\t\t\t\tif ( freshParent ) {\n\t\t\t\t\t\tconst createdElement = createElement( {\n\t\t\t\t\t\t\tcontainer: freshParent,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\toptions: { useHistory: false, clone: false, at },\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tduplicatedElements.push( {\n\t\t\t\t\t\t\tcontainer: createdElement,\n\t\t\t\t\t\t\tparentContainer: freshParent,\n\t\t\t\t\t\t\tmodel,\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\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 V1Element } from './types';\n\nexport function getAllDescendants( container: V1Element ): V1Element[] {\n\tconst children = ( container.children ?? [] ).flatMap( ( child ) => getAllDescendants( child as V1Element ) );\n\n\treturn [ container, ...children ];\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 { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tedit?: boolean;\n};\n\nexport type MoveElementParams = {\n\telement: V1Element;\n\ttargetContainer: V1Element;\n\toptions?: Options;\n};\n\nexport function moveElement( { element, targetContainer, options = {} }: MoveElementParams ): V1Element {\n\tconst resolvedElement = element.lookup?.();\n\tconst resolvedTarget = targetContainer.lookup?.();\n\n\tif ( ! resolvedElement ) {\n\t\tthrow new Error( `Element not found: ${ element.id }` );\n\t}\n\n\tif ( ! resolvedTarget ) {\n\t\tthrow new Error( `Target container not found: ${ targetContainer.id }` );\n\t}\n\n\tconst modelToRecreate = resolvedElement.model.toJSON();\n\n\tdeleteElement( {\n\t\tcontainer: resolvedElement,\n\t\toptions: { ...options, useHistory: false },\n\t} );\n\n\tconst newContainer = createElement( {\n\t\tcontainer: resolvedTarget,\n\t\tmodel: modelToRecreate,\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 { moveElement } from './move-element';\nimport { type V1Element } from './types';\n\ntype MoveOptions = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tedit?: boolean;\n};\n\ntype MoveInput = {\n\telement: V1Element;\n\ttargetContainer: V1Element;\n\toptions?: MoveOptions;\n};\n\ntype MoveElementsParams = {\n\tmoves: MoveInput[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonMoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype MovedElement = {\n\telement: V1Element;\n\toriginalContainer: V1Element;\n\toriginalIndex: number;\n\ttargetContainer: V1Element;\n\toptions?: MoveOptions;\n};\n\ntype MovedElementsResult = {\n\tmovedElements: MovedElement[];\n};\n\nexport type { MoveElementsParams, MoveInput, 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: MoveInput[] } ): MovedElementsResult => {\n\t\t\t\tconst movedElements: MovedElement[] = [];\n\t\t\t\tonMoveElements?.();\n\n\t\t\t\tmoves.forEach( ( { element, targetContainer, options } ) => {\n\t\t\t\t\tconst sourceElement = element.lookup?.() ?? element;\n\t\t\t\t\tconst target = targetContainer.lookup?.() ?? targetContainer;\n\n\t\t\t\t\tif ( ! sourceElement ) {\n\t\t\t\t\t\tthrow new Error( 'Element not found' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! target ) {\n\t\t\t\t\t\tthrow new Error( 'Target container not found' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! sourceElement.parent ) {\n\t\t\t\t\t\tthrow new Error( 'Element has no parent container' );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalContainer = sourceElement.parent;\n\t\t\t\t\tconst originalIndex = originalContainer.children?.indexOf( sourceElement ) ?? -1;\n\n\t\t\t\t\tconst newElement = moveElement( {\n\t\t\t\t\t\telement: sourceElement,\n\t\t\t\t\t\ttargetContainer: target,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tmovedElements.push( {\n\t\t\t\t\t\telement: newElement,\n\t\t\t\t\t\toriginalContainer,\n\t\t\t\t\t\toriginalIndex,\n\t\t\t\t\t\ttargetContainer: target,\n\t\t\t\t\t\toptions,\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: MoveInput[] }, { movedElements }: MovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t[ ...movedElements ].reverse().forEach( ( { element, originalContainer, originalIndex } ) => {\n\t\t\t\t\tconst freshElement = element.lookup?.();\n\t\t\t\t\tconst freshOriginalContainer = originalContainer.lookup?.();\n\n\t\t\t\t\tif ( ! freshElement || ! freshOriginalContainer ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveElement( {\n\t\t\t\t\t\telement: freshElement,\n\t\t\t\t\t\ttargetContainer: freshOriginalContainer,\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: ( _: { moves: MoveInput[] }, { movedElements }: MovedElementsResult ): MovedElementsResult => {\n\t\t\t\tconst newMovedElements: MovedElement[] = [];\n\t\t\t\tonMoveElements?.();\n\n\t\t\t\tmovedElements.forEach( ( { element, originalContainer, originalIndex, targetContainer, options } ) => {\n\t\t\t\t\tconst freshElement = element.lookup?.();\n\t\t\t\t\tconst freshOriginalContainer = originalContainer.lookup?.();\n\t\t\t\t\tconst freshTarget = targetContainer.lookup?.();\n\n\t\t\t\t\tif ( ! freshElement || ! freshOriginalContainer || ! freshTarget ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst newElement = moveElement( {\n\t\t\t\t\t\telement: freshElement,\n\t\t\t\t\t\ttargetContainer: freshTarget,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewMovedElements.push( {\n\t\t\t\t\t\telement: newElement,\n\t\t\t\t\t\toriginalContainer: freshOriginalContainer,\n\t\t\t\t\t\toriginalIndex,\n\t\t\t\t\t\ttargetContainer: freshTarget,\n\t\t\t\t\t\toptions,\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 RemoveElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonRemoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype RemovedElement = {\n\tcontainer: V1Element;\n\tparent: V1Element;\n\tmodel: V1ElementModelProps;\n\tat: number;\n};\n\ntype RemovedElementsResult = {\n\tremovedElements: RemovedElement[];\n};\n\nexport const removeElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item removed', 'elementor' ),\n\tonRemoveElements,\n\tonRestoreElements,\n}: RemoveElementsParams ): 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?.parent ) {\n\t\t\t\t\t\tremovedElements.push( {\n\t\t\t\t\t\t\tcontainer,\n\t\t\t\t\t\t\tparent: container.parent,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tat: container.view?._index ?? 0,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\tremovedElements.forEach( ( { container } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\tcontainer,\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 { removedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { removedElements }: RemovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t[ ...removedElements ].reverse().forEach( ( { parent, model, at } ) => {\n\t\t\t\t\tconst freshParent = parent.lookup?.();\n\n\t\t\t\t\tif ( freshParent ) {\n\t\t\t\t\t\tcreateElement( {\n\t\t\t\t\t\t\tcontainer: freshParent,\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{ removedElements }: RemovedElementsResult\n\t\t\t): RemovedElementsResult => {\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\tconst newRemovedElements: RemovedElement[] = [];\n\n\t\t\t\tremovedElements.forEach( ( { container, parent, model, at } ) => {\n\t\t\t\t\tconst freshContainer = container.lookup?.();\n\t\t\t\t\tconst freshParent = parent.lookup?.();\n\n\t\t\t\t\tif ( ! freshContainer || ! freshParent ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\tcontainer: freshContainer,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewRemovedElements.push( {\n\t\t\t\t\t\tcontainer: freshContainer,\n\t\t\t\t\t\tparent: freshParent,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tat,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { removedElements: newRemovedElements };\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 V1Element, type V1ElementData, type V1ElementModelProps } from './types';\n\ntype ElementLocation = {\n\tcontainer: V1Element;\n\tindex: number;\n};\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1ElementData;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = async ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst currentElementContainer = getContainer( currentElement.id );\n\n\tif ( ! currentElementContainer ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst { container, index } = getNewElementContainer( currentElementContainer, newElement );\n\n\tconst newElementInstance = createElement( {\n\t\tcontainer,\n\t\tmodel: newElement,\n\t\toptions: { at: index, useHistory: withHistory },\n\t} );\n\n\tawait deleteElement( { container: currentElementContainer, options: { useHistory: withHistory } } );\n\n\treturn newElementInstance;\n};\n\nfunction getNewElementContainer(\n\tcurrentElementContainer: V1Element,\n\tnewElement: Omit< V1ElementModelProps, 'id' >\n): ElementLocation {\n\tconst { parent } = currentElementContainer;\n\n\tif ( ! parent ) {\n\t\tthrow new ElementParentNotFoundError( { context: { elementId: currentElementContainer.id } } );\n\t}\n\n\tconst elementIndex = currentElementContainer.view?._index ?? 0;\n\n\tif ( elementIndex === -1 ) {\n\t\tthrow new ElementIndexNotFoundError( { context: { elementId: currentElementContainer.id } } );\n\t}\n\n\tlet location: ElementLocation = { container: parent, index: elementIndex };\n\n\tif ( parent.id === 'document' && newElement.elType === 'widget' ) {\n\t\tlocation = createWrapperForWidget( parent, elementIndex );\n\t}\n\n\treturn location;\n}\n\nconst DEFAULT_CONTAINER_TYPE = 'e-flexbox';\n\nfunction createWrapperForWidget( parent: V1Element, elementIndex: number ): ElementLocation {\n\tconst container = createElement( {\n\t\tcontainer: parent,\n\t\tmodel: { elType: DEFAULT_CONTAINER_TYPE },\n\t\toptions: { at: elementIndex, useHistory: false },\n\t} );\n\n\treturn { container, 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\trunCommandSync( 'document/save/set-is-modified', { status: true }, { 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\tif ( ! container ) {\n\t\treturn;\n\t}\n\n\tconst args = {\n\t\tcontainer,\n\t\tsettings: { ...props },\n\t};\n\n\tif ( withHistory ) {\n\t\trunCommandSync( 'document/elements/settings', args );\n\t} else {\n\t\trunCommandSync( 'document/elements/set-settings', args, { internal: true } );\n\t}\n};\n","import { type LinkPropValue } from '@elementor/editor-props';\n\nimport { getContainer } from './sync/get-container';\nimport { getElementSetting } from './sync/get-element-setting';\n\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\n\ntype LinkValue = LinkPropValue[ 'value' ];\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, resolvedValue?: LinkValue ): 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 hasInlineLink = checkForInlineLink( elementId, resolvedValue );\n\n\tif ( hasInlineLink ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId,\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 checkForInlineLink( elementId: string, resolvedValue?: LinkValue ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn false;\n\t}\n\n\tconst linkSetting = resolvedValue ?? getElementSetting< LinkPropValue >( elementId, 'link' )?.value;\n\n\tif ( linkSetting?.destination ) {\n\t\treturn false;\n\t}\n\n\treturn element.querySelector( ANCHOR_SELECTOR ) !== 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\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n};\n\nexport const playElementInteractions = ( elementId: string, interactionId: string ) => {\n\twindow.top?.dispatchEvent(\n\t\tnew CustomEvent( 'atomic/play_interactions', { detail: { elementId, interactionId } } )\n\t);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,6BAAmF;;;ACAnF,gCAAkD;AAI3C,SAAS,aAAc,IAA+B;AAC5D,QAAM,iBAAiB;AACvB,QAAM,YAAY,eAAe,WAAW,eAAgB,EAAG;AAE/D,SAAO,aAAa;AACrB;AAEO,IAAM,gBAAgB,CAAE,cAAuB;AACrD,MAAI;AACH,UAAM,YAAY,aAAc,SAAU;AAE1C,kCAAAC,qBAAY,4BAA4B,EAAE,UAAU,CAAE;AAAA,EACvD,QAAQ;AAAA,EAAC;AACV;;;ACHO,SAAS,mBAAoB,OAAgB,WAA+D;AAClH,QAAM,cAAgB,MAAM,IAAK,UAAW,KAAK,CAAC;AAElD,aAAY,cAAc,aAAc;AACvC,QAAK,UAAW,UAAW,GAAI;AAC9B,aAAO,EAAE,OAAO,WAAW;AAAA,IAC5B;AAEA,UAAM,QAAQ,mBAAoB,YAAY,SAAU;AAExD,QAAK,OAAQ;AACZ,aAAO;AAAA,IACR;AAAA,EACD;AAEA,SAAO;AACR;AAEO,SAAS,mBAAoB,OAAgB,WAA2D;AAC9G,QAAM,cAAgB,MAAM,IAAK,UAAW,KAAK,CAAC;AAElD,SAAO,YACL,OAAQ,CAAE,eAAgB,CAAE,aAAa,UAAW,UAAW,CAAE,EACjE,IAAK,CAAE,gBAAkB,EAAE,OAAO,WAAW,EAAI;AACpD;;;AFxBA,SAAS,eAAgB,EAAE,MAAM,GAA+B;AAC/D,SAAO;AAAA,IACN,IAAI,MAAM,IAAK,IAAK;AAAA,IACpB,gBAAgB,MAAM,IAAK,iBAAkB,KAAK,CAAC;AAAA,EACpD;AACD;AAEO,SAAS,mBACf,WACA,eACI;AACJ,aAAO,2BAAAC;AAAA,IACN;AAAA,UACC,yCAAa;AAAA,UACb,4CAAiB,0BAA2B;AAAA,UAC5C,4CAAiB,0BAA2B;AAAA,UAC5C,4CAAiB,0BAA2B;AAAA,UAC5C,4CAAiB,gCAAiC;AAAA,IACnD;AAAA,IACA,MAAM;AACL,YAAM,YAAY,aAAc,SAAU;AAC1C,YAAM,QAAQ,WAAW;AAEzB,UAAK,CAAE,OAAQ;AACd,eAAO,CAAC;AAAA,MACT;AAEA,YAAM,kBAAkB,OAAO,QAAS,aAAc,EAAE,OAAQ,CAAE,KAAK,CAAE,YAAY,SAAU,MAAO;AACrG,cAAM,SAAS,mBAAoB,OAAO,CAAE,MAAO,EAAE,IAAK,QAAS,MAAM,UAAW;AAEpF,YAAK,CAAE,QAAS;AACf,cAAK,SAAU,IAAI,CAAC;AACpB,iBAAO;AAAA,QACR;AAEA,cAAM,WAAW,mBAAoB,OAAO,OAAO,CAAE,MAAO,EAAE,IAAK,QAAS,MAAM,SAAU;AAE5F,YAAK,SAAU,IAAI,SAAS,IAAK,cAAe;AAEhD,eAAO;AAAA,MACR,GAAG,CAAC,CAAqB;AAEzB,aAAO;AAAA,IACR;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AACD;;;AG5DA,IAAAC,6BAAiE;;;ACG1D,SAAS,yBAA0B,WAAuB;AAChE,QAAM,YAAY,aAAc,SAAU;AAE1C,SAAO,WAAW,MAAM,IAAK,iBAAkB,KAAK,CAAC;AACtD;;;ADFO,IAAM,2BAA2B,CAAE,cAA0B;AACnE,aAAO,2BAAAC;AAAA,QACN,wCAAa,0CAA2C;AAAA,IACxD,MAAM,yBAA0B,SAAU;AAAA,IAC1C,CAAE,SAAU;AAAA,EACb;AACD;;;AEXA,IAAAC,6BAAqE;;;ACG9D,IAAM,oBAAoB,CAAY,WAAsB,eAAuC;AACzG,QAAM,YAAY,aAAc,SAAU;AAE1C,SAAS,WAAW,UAAU,IAAK,UAAW,KAAiB;AAChE;AAEO,IAAM,qBAAqB,CACjC,WACA,eACqC;AACrC,SAAO,OAAO,YAAa,WAAW,IAAK,CAAE,QAAS,CAAE,KAAK,kBAAmB,WAAW,GAAI,CAAE,CAAE,CAAE;AACtG;;;ADTO,IAAM,oBAAoB,CAAY,WAAsB,eAAwB;AAC1F,aAAO,2BAAAC;AAAA,QACN,4CAAiB,gCAAiC;AAAA,IAClD,MAAM,kBAA6B,WAAW,UAAW;AAAA,IACzD,CAAE,WAAW,UAAW;AAAA,EACzB;AACD;AAEO,IAAM,qBAAqB,CAAY,WAAsB,gBAA2B;AAC9F,aAAO,2BAAAA;AAAA,QACN,4CAAiB,gCAAiC;AAAA,IAClD,MACC,YAAY,OAAoC,CAAE,UAAU,QAAS;AACpE,YAAM,QAAQ,kBAA6B,WAAW,GAAI;AAE1D,UAAK,UAAU,MAAO;AACrB,iBAAU,GAAI,IAAI;AAAA,MACnB;AAEA,aAAO;AAAA,IACR,GAAG,CAAC,CAAE;AAAA,IACP,CAAE,WAAW,YAAY,KAAM,GAAI,CAAE;AAAA,EACtC;AACD;;;AE5BA,IAAAC,6BAAqE;AAI9D,SAAS,iBAAkB,WAA2B;AAC5D,aAAO,2BAAAC;AAAA,IACN,KAAE,4CAAiB,0BAA2B,CAAE;AAAA,IAChD,MAAM;AACL,UAAK,CAAE,WAAY;AAClB,eAAO;AAAA,MACR;AAEA,YAAM,iBAAiB;AACvB,YAAM,UAAU,gBAAgB,WAAW,eAAgB,SAAU;AACrE,UAAK,CAAE,SAAU;AAChB,eAAO;AAAA,MACR;AAEA,aAAO,QAAQ;AAAA,IAChB;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AACD;;;ACtBA,IAAAC,6BAAqE;;;ACG9D,SAAS,kBAAyE;AACxF,QAAM,iBAAiB;AAEvB,SAAS,gBAAgB,WAAW,gBAAuC;AAC5E;;;ACJO,SAAS,eAAgB,MAAmC;AAClE,MAAK,CAAE,MAAO;AACb,WAAO;AAAA,EACR;AAEA,QAAM,eAAe,gBAAgB;AACrC,QAAM,cAAc,eAAgB,IAAK;AAEzC,MAAK,CAAE,aAAa,iBAAkB;AACrC,WAAO;AAAA,EACR;AAEA,MAAK,CAAE,aAAa,qBAAsB;AACzC,WAAO;AAAA,EACR;AAEA,SAAO;AAAA,IACN,KAAK;AAAA,IACL,UAAU,YAAY;AAAA,IACtB,aAAa,YAAY;AAAA,IACzB,8BAA8B,YAAY,mCAAmC,CAAC;AAAA,IAC9E,OAAO,YAAY;AAAA,IACnB,aAAa,YAAY,uBAAuB,CAAC;AAAA,IACjD,cAAc,YAAY,wBAAwB,CAAC;AAAA,EACpD;AACD;;;ACzBO,SAAS,sBAAiC;AAChD,QAAM,iBAAiB;AAEvB,QAAM,mBAAmB,eAAe,WAAW,WAAW,cAAc,KAAK,CAAC;AAElF,SAAO,iBAAiB,OAAqB,CAAE,KAAK,OAAQ;AAC3D,UAAM,OAAO,GAAG,MAAM,IAAK,YAAa,KAAK,GAAG,MAAM,IAAK,QAAS;AAEpE,QAAK,MAAO;AACX,UAAI,KAAM;AAAA,QACT,IAAI,GAAG,MAAM,IAAK,IAAK;AAAA,QACvB;AAAA,MACD,CAAE;AAAA,IACH;AAEA,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AACP;;;AHfO,SAAS,qBAAqB;AACpC,QAAM,eAAW,2BAAAC;AAAA,IAChB;AAAA,UACC,4CAAiB,0BAA2B;AAAA,UAC5C,4CAAiB,4BAA6B;AAAA,UAC9C,4CAAiB,8BAA+B;AAAA,UAChD,4CAAiB,gCAAiC;AAAA,IACnD;AAAA,IACA;AAAA,EACD;AAEA,QAAM,CAAE,OAAQ,IAAI;AAEpB,QAAM,cAAc,eAAgB,SAAS,IAAK;AAElD,MAAK,SAAS,WAAW,KAAK,CAAE,aAAc;AAC7C,WAAO,EAAE,SAAS,MAAM,aAAa,KAAK;AAAA,EAC3C;AAEA,SAAO,EAAE,SAAS,YAAY;AAC/B;;;AIzBA,IAAAC,6BAA0D;AAgBnD,SAAS,cAAe,EAAE,WAAW,OAAO,QAAQ,GAAoC;AAC9F,aAAO,2BAAAC,yBAA6B,4BAA4B;AAAA,IAC/D;AAAA,IACA;AAAA,IACA,SAAS,EAAE,MAAM,OAAO,GAAG,QAAQ;AAAA,EACpC,CAAE;AACH;;;ACtBA,IAAAC,6BAAyB;AACzB,kBAAmB;;;ACDnB,IAAAC,6BAAkD;AAc3C,SAAS,cAAe,EAAE,WAAW,UAAU,CAAC,EAAE,GAA0C;AAClG,aAAO,2BAAAC,qBAAY,4BAA4B;AAAA,IAC9C;AAAA,IACA;AAAA,EACD,CAAE;AACH;;;ADOO,IAAM,iBAAiB,CAAE;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,eAAW,gBAAI,cAAc,WAAY;AAC1C,MAAoD;AACnD,QAAM,qBAAiB;AAAA,IACtB;AAAA,MACC,IAAI,CAAE,EAAE,UAAU,cAAc,MAAmE;AAClG,cAAM,kBAAoC,CAAC;AAE3C,sBAAc,QAAS,CAAE,EAAE,WAAW,SAAS,GAAG,cAAc,MAAO;AACtE,gBAAM,kBAAkB,UAAU,SAAS,KAAK;AAEhD,cAAK,CAAE,iBAAkB;AACxB,kBAAM,IAAI,MAAO,4BAA6B;AAAA,UAC/C;AAEA,gBAAM,UAAU,cAAe;AAAA,YAC9B,WAAW;AAAA,YACX,GAAG;AAAA,YACH,SAAS,EAAE,GAAG,SAAS,YAAY,MAAM;AAAA,UAC1C,CAAE;AAEF,0BAAgB,KAAM;AAAA,YACrB,WAAW;AAAA,YACX;AAAA,YACA,OAAO,QAAQ,OAAO,OAAO,KAAK,CAAC;AAAA,YACnC;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAEF,eAAO,EAAE,gBAAgB;AAAA,MAC1B;AAAA,MACA,MAAM,CAAE,GAAwC,EAAE,gBAAgB,MAA8B;AAC/F,SAAE,GAAG,eAAgB,EAAE,QAAQ,EAAE,QAAS,CAAE,EAAE,UAAU,MAAO;AAC9D,gBAAM,iBAAiB,UAAU,SAAS;AAE1C,cAAK,gBAAiB;AACrB,0BAAe;AAAA,cACd,WAAW;AAAA,cACX,SAAS,EAAE,YAAY,MAAM;AAAA,YAC9B,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAAA,MACH;AAAA,MACA,MAAM,CACL,GACA,EAAE,gBAAgB,MACS;AAC3B,cAAM,cAAgC,CAAC;AAEvC,wBAAgB,QAAS,CAAE,EAAE,iBAAiB,OAAO,QAAQ,MAAO;AACnE,gBAAM,cAAc,gBAAgB,SAAS;AAE7C,cAAK,CAAE,aAAc;AACpB;AAAA,UACD;AAEA,gBAAM,UAAU,cAAe;AAAA,YAC9B,WAAW;AAAA,YACX;AAAA,YACA,SAAS,EAAE,GAAG,SAAS,YAAY,MAAM;AAAA,UAC1C,CAAE;AAEF,sBAAY,KAAM;AAAA,YACjB,WAAW;AAAA,YACX,iBAAiB;AAAA,YACjB,OAAO,QAAQ,MAAM,OAAO;AAAA,YAC5B;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAEF,eAAO,EAAE,iBAAiB,YAAY;AAAA,MACvC;AAAA,IACD;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO,eAAgB,EAAE,SAAS,CAAE;AACrC;;;AE5GA,IAAAC,8BAA0D;AAiBnD,SAAS,YAAa,EAAE,aAAa,OAAO,QAAQ,GAAuB;AACjF,QAAM,YAAY,aAAc,WAAY;AAE5C,MAAK,CAAE,WAAY;AAClB,UAAM,IAAI,MAAO,sBAAuB,WAAY,aAAc;AAAA,EACnE;AAEA,aAAO,4BAAAC,yBAA6B,gBAAgB;AAAA,IACnD;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AACH;;;AC7BA,IAAAC,8BAA0D;AAenD,SAAS,iBAAkB,EAAE,SAAS,UAAU,CAAC,EAAE,GAAuC;AAChG,QAAM,eAAe,QAAQ,MAAM,UAAU;AAC7C,QAAM,iBAAiB,QAAQ,UAAU,QAAQ,eAAe,IAAI;AAEpE,aAAO,4BAAAC,yBAA6B,+BAA+B;AAAA,IAClE,WAAW;AAAA,IACX,SAAS,EAAE,IAAI,gBAAgB,MAAM,OAAO,GAAG,QAAQ;AAAA,EACxD,CAAE;AACH;;;ACvBA,IAAAC,8BAAyB;AACzB,IAAAC,eAAmB;AA6BZ,IAAM,oBAAoB,CAAE;AAAA,EAClC;AAAA,EACA;AAAA,EACA,eAAW,iBAAI,mBAAmB,WAAY;AAAA,EAC9C;AAAA,EACA;AACD,MAA0D;AACzD,QAAM,wBAAoB;AAAA,IACzB;AAAA,MACC,IAAI,CAAE,EAAE,YAAY,sBAAsB,MAA2D;AACpG,8BAAsB;AACtB,cAAM,qBAA0C,CAAC;AAEjD,8BAAsB,QAAS,CAAE,cAAe;AAC/C,gBAAM,oBAAoB,aAAc,SAAU;AAElD,cAAK,CAAE,mBAAmB,QAAS;AAClC;AAAA,UACD;AAEA,gBAAM,oBAAoB,iBAAkB;AAAA,YAC3C,SAAS;AAAA,YACT,SAAS,EAAE,YAAY,MAAM;AAAA,UAC9B,CAAE;AAEF,cAAK,CAAE,kBAAkB,QAAS;AACjC;AAAA,UACD;AAEA,6BAAmB,KAAM;AAAA,YACxB,WAAW;AAAA,YACX,iBAAiB,kBAAkB;AAAA,YACnC,OAAO,kBAAkB,MAAM,OAAO;AAAA,YACtC,IAAI,kBAAkB,MAAM;AAAA,UAC7B,CAAE;AAAA,QACH,CAAE;AAEF,eAAO,EAAE,mBAAmB;AAAA,MAC7B;AAAA,MACA,MAAM,CAAE,GAA6B,EAAE,mBAAmB,MAAiC;AAC1F,4BAAoB;AACpB,SAAE,GAAG,kBAAmB,EAAE,QAAQ,EAAE,QAAS,CAAE,EAAE,UAAU,MAAO;AACjE,wBAAe;AAAA,YACd;AAAA,YACA,SAAS,EAAE,YAAY,MAAM;AAAA,UAC9B,CAAE;AAAA,QACH,CAAE;AAAA,MACH;AAAA,MACA,MAAM,CACL,GACA,EAAE,oBAAoB,iBAAiB,MACT;AAC9B,8BAAsB;AACtB,cAAM,qBAA0C,CAAC;AAEjD,yBAAiB,QAAS,CAAE,EAAE,iBAAiB,OAAO,GAAG,MAAO;AAC/D,gBAAM,cAAc,gBAAgB,SAAS;AAE7C,cAAK,aAAc;AAClB,kBAAM,iBAAiB,cAAe;AAAA,cACrC,WAAW;AAAA,cACX;AAAA,cACA,SAAS,EAAE,YAAY,OAAO,OAAO,OAAO,GAAG;AAAA,YAChD,CAAE;AAEF,+BAAmB,KAAM;AAAA,cACxB,WAAW;AAAA,cACX,iBAAiB;AAAA,cACjB;AAAA,cACA;AAAA,YACD,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAEF,eAAO,EAAE,mBAAmB;AAAA,MAC7B;AAAA,IACD;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO,kBAAmB,EAAE,WAAW,CAAE;AAC1C;;;AChHO,IAAM,oBAAoB,MAAM;AACtC,QAAM,iBAAiB;AAEvB,SACC,eAAe,iBAAiB,SAAS,cAAc,KACvD,MAAO,KAAK,IAAI,CAAE,IAAK,KAAK,OAAO,EAAE,SAAU,EAAG,EAAE,UAAW,GAAG,CAAE,CAAE;AAExE;;;ACPO,SAAS,8BAA8B;AAC7C,QAAM,iBAAiB;AAEvB,SAAO,eAAe,WAAW,WAAW,aAAa,GAAG,aAAa;AAC1E;;;ACJO,SAAS,uBAAuB;AACtC,QAAM,iBAAiB;AAEvB,SAAO,eAAe,WAAW,WAAW,eAAe,KAAK;AACjE;;;ACNA,mBAA4B;AAErB,IAAM,2BAAuB,0BAAsC;AAAA,EACzE,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,yBAAqB,0BAAoC;AAAA,EACrE,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,gCAA4B,0BAAsC;AAAA,EAC9E,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,iCAA6B,0BAAwC;AAAA,EACjF,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,iCAA6B,0BAAsC;AAAA,EAC/E,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,gCAA4B,0BAAsC;AAAA,EAC9E,MAAM;AAAA,EACN,SAAS;AACV,CAAE;;;ACxBK,SAAS,gBAAiB,WAAwB;AACxD,MAAK,CAAE,WAAY;AAClB,gBAAY,oBAAoB,IAAK,CAAE,GAAG;AAAA,EAC3C;AAEA,QAAM,YAAY,aAAc,SAAU;AAE1C,QAAM,OAAO,WAAW,MAAM,IAAK,YAAa,KAAK,WAAW,MAAM,IAAK,QAAS;AAEpF,MAAK,CAAE,MAAO;AACb,UAAM,IAAI,0BAA2B,EAAE,SAAS,EAAE,UAAU,EAAE,CAAE;AAAA,EACjE;AAEA,QAAM,QAAQ,gBAAgB,IAAK,IAAK,GAAG;AAE3C,MAAK,CAAE,OAAQ;AACd,UAAM,IAAI,2BAA4B,EAAE,SAAS,EAAE,aAAa,KAAK,EAAE,CAAE;AAAA,EAC1E;AAEA,SAAO;AACR;;;ACrBO,IAAM,mBAAmB,CAAE,cAAoE;AACrG,QAAM,YAAY,aAAc,SAAU;AAE1C,SAAO,WAAW,MAAM,IAAK,QAAS,KAAK;AAC5C;;;ACPO,SAAS,kBAAmB,WAAoC;AACtE,QAAM,YAAa,UAAU,YAAY,CAAC,GAAI,QAAS,CAAE,UAAW,kBAAmB,KAAmB,CAAE;AAE5G,SAAO,CAAE,WAAW,GAAG,QAAS;AACjC;;;ACDO,SAAS,YAAa,MAAgC;AAC5D,QAAM,YAAY,OAAO,aAAc,IAAK,IAAI,4BAA4B;AAE5E,MAAK,CAAE,WAAY;AAClB,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,WAAW,CAAE,GAAK,UAAU,MAAM,IAAK,UAAW,KAAK,CAAC,CAAI,EAAE;AAAA,IAAS,CAAE,eAC9E,YAAa,WAAW,IAAK,IAAK,CAAE;AAAA,EACrC;AAEA,SAAO,CAAE,WAAW,GAAG,QAAS;AACjC;;;ACDO,SAAS,YAAa,EAAE,SAAS,iBAAiB,UAAU,CAAC,EAAE,GAAkC;AACvG,QAAM,kBAAkB,QAAQ,SAAS;AACzC,QAAM,iBAAiB,gBAAgB,SAAS;AAEhD,MAAK,CAAE,iBAAkB;AACxB,UAAM,IAAI,MAAO,sBAAuB,QAAQ,EAAG,EAAG;AAAA,EACvD;AAEA,MAAK,CAAE,gBAAiB;AACvB,UAAM,IAAI,MAAO,+BAAgC,gBAAgB,EAAG,EAAG;AAAA,EACxE;AAEA,QAAM,kBAAkB,gBAAgB,MAAM,OAAO;AAErD,gBAAe;AAAA,IACd,WAAW;AAAA,IACX,SAAS,EAAE,GAAG,SAAS,YAAY,MAAM;AAAA,EAC1C,CAAE;AAEF,QAAM,eAAe,cAAe;AAAA,IACnC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS,EAAE,MAAM,OAAO,GAAG,SAAS,YAAY,MAAM;AAAA,EACvD,CAAE;AAEF,SAAO;AACR;;;AC1CA,IAAAC,8BAAyB;AACzB,IAAAC,eAAmB;AAuCZ,IAAM,eAAe,CAAE;AAAA,EAC7B,OAAO;AAAA,EACP;AAAA,EACA,eAAW,iBAAI,kBAAkB,WAAY;AAAA,EAC7C;AAAA,EACA;AACD,MAAgD;AAC/C,QAAM,mBAAe;AAAA,IACpB;AAAA,MACC,IAAI,CAAE,EAAE,MAAM,MAAoD;AACjE,cAAM,gBAAgC,CAAC;AACvC,yBAAiB;AAEjB,cAAM,QAAS,CAAE,EAAE,SAAS,iBAAiB,QAAQ,MAAO;AAC3D,gBAAM,gBAAgB,QAAQ,SAAS,KAAK;AAC5C,gBAAM,SAAS,gBAAgB,SAAS,KAAK;AAE7C,cAAK,CAAE,eAAgB;AACtB,kBAAM,IAAI,MAAO,mBAAoB;AAAA,UACtC;AAEA,cAAK,CAAE,QAAS;AACf,kBAAM,IAAI,MAAO,4BAA6B;AAAA,UAC/C;AAEA,cAAK,CAAE,cAAc,QAAS;AAC7B,kBAAM,IAAI,MAAO,iCAAkC;AAAA,UACpD;AAEA,gBAAM,oBAAoB,cAAc;AACxC,gBAAM,gBAAgB,kBAAkB,UAAU,QAAS,aAAc,KAAK;AAE9E,gBAAM,aAAa,YAAa;AAAA,YAC/B,SAAS;AAAA,YACT,iBAAiB;AAAA,YACjB,SAAS,EAAE,GAAG,SAAS,YAAY,MAAM;AAAA,UAC1C,CAAE;AAEF,wBAAc,KAAM;AAAA,YACnB,SAAS;AAAA,YACT;AAAA,YACA;AAAA,YACA,iBAAiB;AAAA,YACjB;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAEF,eAAO,EAAE,cAAc;AAAA,MACxB;AAAA,MACA,MAAM,CAAE,GAA2B,EAAE,cAAc,MAA4B;AAC9E,4BAAoB;AAEpB,SAAE,GAAG,aAAc,EAAE,QAAQ,EAAE,QAAS,CAAE,EAAE,SAAS,mBAAmB,cAAc,MAAO;AAC5F,gBAAM,eAAe,QAAQ,SAAS;AACtC,gBAAM,yBAAyB,kBAAkB,SAAS;AAE1D,cAAK,CAAE,gBAAgB,CAAE,wBAAyB;AACjD;AAAA,UACD;AAEA,sBAAa;AAAA,YACZ,SAAS;AAAA,YACT,iBAAiB;AAAA,YACjB,SAAS;AAAA,cACR,YAAY;AAAA,cACZ,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,YAC1C;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAAA,MACH;AAAA,MACA,MAAM,CAAE,GAA2B,EAAE,cAAc,MAAiD;AACnG,cAAM,mBAAmC,CAAC;AAC1C,yBAAiB;AAEjB,sBAAc,QAAS,CAAE,EAAE,SAAS,mBAAmB,eAAe,iBAAiB,QAAQ,MAAO;AACrG,gBAAM,eAAe,QAAQ,SAAS;AACtC,gBAAM,yBAAyB,kBAAkB,SAAS;AAC1D,gBAAM,cAAc,gBAAgB,SAAS;AAE7C,cAAK,CAAE,gBAAgB,CAAE,0BAA0B,CAAE,aAAc;AAClE;AAAA,UACD;AAEA,gBAAM,aAAa,YAAa;AAAA,YAC/B,SAAS;AAAA,YACT,iBAAiB;AAAA,YACjB,SAAS,EAAE,GAAG,SAAS,YAAY,MAAM;AAAA,UAC1C,CAAE;AAEF,2BAAiB,KAAM;AAAA,YACtB,SAAS;AAAA,YACT,mBAAmB;AAAA,YACnB;AAAA,YACA,iBAAiB;AAAA,YACjB;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAEF,eAAO,EAAE,eAAe,iBAAiB;AAAA,MAC1C;AAAA,IACD;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO,aAAc,EAAE,OAAO,YAAY,CAAE;AAC7C;;;ACpJA,IAAAC,8BAAyB;AACzB,IAAAC,eAAmB;AA0BZ,IAAM,iBAAiB,CAAE;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,eAAW,iBAAI,gBAAgB,WAAY;AAAA,EAC3C;AAAA,EACA;AACD,MAAoD;AACnD,QAAM,qBAAiB;AAAA,IACtB;AAAA,MACC,IAAI,CAAE,EAAE,YAAY,gBAAgB,MAAwD;AAC3F,cAAM,kBAAoC,CAAC;AAE3C,wBAAgB,QAAS,CAAE,cAAe;AACzC,gBAAM,YAAY,aAAc,SAAU;AAE1C,cAAK,WAAW,QAAS;AACxB,4BAAgB,KAAM;AAAA,cACrB;AAAA,cACA,QAAQ,UAAU;AAAA,cAClB,OAAO,UAAU,MAAM,OAAO;AAAA,cAC9B,IAAI,UAAU,MAAM,UAAU;AAAA,YAC/B,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAEF,2BAAmB;AAEnB,wBAAgB,QAAS,CAAE,EAAE,UAAU,MAAO;AAC7C,wBAAe;AAAA,YACd;AAAA,YACA,SAAS,EAAE,YAAY,MAAM;AAAA,UAC9B,CAAE;AAAA,QACH,CAAE;AAEF,eAAO,EAAE,gBAAgB;AAAA,MAC1B;AAAA,MACA,MAAM,CAAE,GAA6B,EAAE,gBAAgB,MAA8B;AACpF,4BAAoB;AAEpB,SAAE,GAAG,eAAgB,EAAE,QAAQ,EAAE,QAAS,CAAE,EAAE,QAAQ,OAAO,GAAG,MAAO;AACtE,gBAAM,cAAc,OAAO,SAAS;AAEpC,cAAK,aAAc;AAClB,0BAAe;AAAA,cACd,WAAW;AAAA,cACX;AAAA,cACA,SAAS,EAAE,YAAY,OAAO,GAAG;AAAA,YAClC,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAAA,MACH;AAAA,MACA,MAAM,CACL,GACA,EAAE,gBAAgB,MACS;AAC3B,2BAAmB;AAEnB,cAAM,qBAAuC,CAAC;AAE9C,wBAAgB,QAAS,CAAE,EAAE,WAAW,QAAQ,OAAO,GAAG,MAAO;AAChE,gBAAM,iBAAiB,UAAU,SAAS;AAC1C,gBAAM,cAAc,OAAO,SAAS;AAEpC,cAAK,CAAE,kBAAkB,CAAE,aAAc;AACxC;AAAA,UACD;AAEA,wBAAe;AAAA,YACd,WAAW;AAAA,YACX,SAAS,EAAE,YAAY,MAAM;AAAA,UAC9B,CAAE;AAEF,6BAAmB,KAAM;AAAA,YACxB,WAAW;AAAA,YACX,QAAQ;AAAA,YACR;AAAA,YACA;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAEF,eAAO,EAAE,iBAAiB,mBAAmB;AAAA,MAC9C;AAAA,IACD;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO,eAAgB,EAAE,WAAW,CAAE;AACvC;;;ACpGO,IAAM,iBAAiB,OAAQ,EAAE,gBAAgB,YAAY,cAAc,KAAK,MAA2B;AACjH,QAAM,0BAA0B,aAAc,eAAe,EAAG;AAEhE,MAAK,CAAE,yBAA0B;AAChC,UAAM,IAAI,qBAAsB,EAAE,SAAS,EAAE,WAAW,eAAe,GAAG,EAAE,CAAE;AAAA,EAC/E;AAEA,QAAM,EAAE,WAAW,MAAM,IAAI,uBAAwB,yBAAyB,UAAW;AAEzF,QAAM,qBAAqB,cAAe;AAAA,IACzC;AAAA,IACA,OAAO;AAAA,IACP,SAAS,EAAE,IAAI,OAAO,YAAY,YAAY;AAAA,EAC/C,CAAE;AAEF,QAAM,cAAe,EAAE,WAAW,yBAAyB,SAAS,EAAE,YAAY,YAAY,EAAE,CAAE;AAElG,SAAO;AACR;AAEA,SAAS,uBACR,yBACA,YACkB;AAClB,QAAM,EAAE,OAAO,IAAI;AAEnB,MAAK,CAAE,QAAS;AACf,UAAM,IAAI,2BAA4B,EAAE,SAAS,EAAE,WAAW,wBAAwB,GAAG,EAAE,CAAE;AAAA,EAC9F;AAEA,QAAM,eAAe,wBAAwB,MAAM,UAAU;AAE7D,MAAK,iBAAiB,IAAK;AAC1B,UAAM,IAAI,0BAA2B,EAAE,SAAS,EAAE,WAAW,wBAAwB,GAAG,EAAE,CAAE;AAAA,EAC7F;AAEA,MAAI,WAA4B,EAAE,WAAW,QAAQ,OAAO,aAAa;AAEzE,MAAK,OAAO,OAAO,cAAc,WAAW,WAAW,UAAW;AACjE,eAAW,uBAAwB,QAAQ,YAAa;AAAA,EACzD;AAEA,SAAO;AACR;AAEA,IAAM,yBAAyB;AAE/B,SAAS,uBAAwB,QAAmB,cAAwC;AAC3F,QAAM,YAAY,cAAe;AAAA,IAChC,WAAW;AAAA,IACX,OAAO,EAAE,QAAQ,uBAAuB;AAAA,IACxC,SAAS,EAAE,IAAI,cAAc,YAAY,MAAM;AAAA,EAChD,CAAE;AAEF,SAAO,EAAE,WAAW,OAAO,EAAE;AAC9B;;;ACxEA,IAAAC,8BAA0D;AAKnD,IAAM,8BAA8B,CAAE;AAAA,EAC5C;AAAA,EACA;AACD,MAGO;AACN,QAAM,UAAU,aAAc,SAAU;AAExC,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,mBAAoB,SAAU,YAAa;AAAA,EAC7D;AAEA,QAAM,iBAAiB,QAAQ,MAAM,IAAK,iBAAkB,KAAK,CAAC;AAElE,UAAQ,MAAM,IAAK,mBAAmB,EAAE,GAAG,gBAAgB,GAAG,SAAS,CAAE;AAEzE,kCAAAC,yBAAgB,iCAAiC,EAAE,QAAQ,KAAK,GAAG,EAAE,UAAU,KAAK,CAAE;AACvF;;;ACtBA,IAAAC,8BAA0D;AAWnD,IAAM,wBAAwB,CAAE,EAAE,IAAI,OAAO,cAAc,KAAK,MAAkC;AACxG,QAAM,YAAY,aAAc,EAAG;AAEnC,MAAK,CAAE,WAAY;AAClB;AAAA,EACD;AAEA,QAAM,OAAO;AAAA,IACZ;AAAA,IACA,UAAU,EAAE,GAAG,MAAM;AAAA,EACtB;AAEA,MAAK,aAAc;AAClB,oCAAAC,yBAAgB,8BAA8B,IAAK;AAAA,EACpD,OAAO;AACN,oCAAAA,yBAAgB,kCAAkC,MAAM,EAAE,UAAU,KAAK,CAAE;AAAA,EAC5E;AACD;;;ACxBA,IAAM,kBAAkB;AAgBjB,SAAS,yBAA0B,WAAmB,eAAmD;AAC/G,QAAM,uBAAuB,wBAAyB,SAAU;AAEhE,MAAK,sBAAuB;AAC3B,WAAO;AAAA,MACN,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,IACZ;AAAA,EACD;AAEA,QAAM,gBAAgB,mBAAoB,WAAW,aAAc;AAEnE,MAAK,eAAgB;AACpB,WAAO;AAAA,MACN,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAEA,QAAM,WAAW,sBAAuB,SAAU;AAElD,MAAK,UAAW;AACf,WAAO;AAAA,MACN,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,IACZ;AAAA,EACD;AAEA,SAAO;AAAA,IACN,gBAAgB;AAAA,EACjB;AACD;AAEO,SAAS,wBAAyB,WAAmC;AAC3E,QAAM,UAAU,cAAe,SAAU;AAEzC,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AAEA,aAAY,sBAAsB,MAAM,KAAM,QAAQ,iBAAkB,eAAgB,CAAE,GAAI;AAE7F,UAAM,iBAAiB,gBAAiB,kBAAmB;AAE3D,QAAK,mBAAmB,WAAY;AACnC,aAAO;AAAA,IACR;AAAA,EACD;AAEA,SAAO;AACR;AAEO,SAAS,sBAAuB,WAAmC;AACzE,QAAM,UAAU,cAAe,SAAU;AAEzC,MAAK,CAAE,WAAW,QAAQ,kBAAkB,MAAO;AAClD,WAAO;AAAA,EACR;AAEA,QAAM,eAAe,QAAQ,cAAc,QAAS,eAAgB;AAEpE,SAAO,eAAe,gBAAiB,YAAa,IAAI;AACzD;AAEO,SAAS,kBAAmB,WAA6B;AAC/D,QAAM,UAAU,cAAe,SAAU;AAEzC,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AAEA,MAAK,QAAQ,QAAS,eAAgB,GAAI;AACzC,WAAO;AAAA,EACR;AAEA,SAAO,yBAA0B,OAAQ;AAC1C;AAEA,SAAS,yBAA0B,SAA4B;AAC9D,aAAY,SAAS,MAAM,KAAM,QAAQ,QAAS,GAAqB;AACtE,QAAK,mBAAoB,KAAM,GAAI;AAClC;AAAA,IACD;AAEA,QAAK,MAAM,QAAS,eAAgB,GAAI;AACvC,aAAO;AAAA,IACR;AAEA,QAAK,yBAA0B,KAAM,GAAI;AACxC,aAAO;AAAA,IACR;AAAA,EACD;AAEA,SAAO;AACR;AAEA,SAAS,gBAAiB,SAAkC;AAC3D,SAAO,QAAQ,QAAwB,WAAY,GAAG,QAAQ,MAAM;AACrE;AAEA,SAAS,mBAAoB,WAAmB,eAAqC;AACpF,QAAM,UAAU,cAAe,SAAU;AAEzC,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AAEA,MAAK,QAAQ,QAAS,eAAgB,GAAI;AACzC,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,iBAAiB,kBAAoC,WAAW,MAAO,GAAG;AAE9F,MAAK,aAAa,aAAc;AAC/B,WAAO;AAAA,EACR;AAEA,SAAO,QAAQ,cAAe,eAAgB,MAAM;AACrD;AAEA,SAAS,cAAe,IAAa;AACpC,MAAI;AACH,WAAO,aAAc,EAAG,GAAG,MAAM,MAAM;AAAA,EACxC,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAEA,SAAS,mBAAoB,SAA4B;AACxD,SAAO,QAAQ,aAAc,SAAU;AACxC;;;AC1JA,IAAAC,8BAA6C;AAEtC,IAAM,6BAA6B;AAEnC,IAAM,sBAAsB;AAAA,MAClC,6CAAiB,0BAA2B;AAAA,MAC5C,6CAAiB,6BAA8B;AAAA,MAC/C,6CAAiB,0BAA2B;AAAA,MAC5C,6CAAiB,yBAA0B;AAAA,MAC3C,yCAAa,0BAA2B;AACzC;;;ACVA,IAAAC,uBAAoC;AACpC,2BAKO;;;ACNP,0BAA2D;AAE3D,IAAAC,8BAA0D;AAWnD,SAAS,oBAAqB,WAAsB,SAAmB;AAC7E,QAAM,YAAY,aAAc,SAAU;AAE1C,MAAK,CAAE,WAAY;AAClB,UAAM,IAAI,qBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE,CAAE;AAAA,EAC5D;AAEA,QAAM,SAAS,OAAO,KAAM,UAAU,MAAM,IAAK,QAAS,KAAK,CAAC,CAAE;AAElE,QAAM,SAAS,aAAc,WAAW,OAAQ;AAEhD,QAAM,SAAS,OAAO,KAAM,MAAO;AAEnC,sBAAqB,WAAW;AAAA,IAC/B;AAAA,IACA;AAAA,EACD,CAAE;AAEF,gBAAc;AAEd,SAAO;AACR;AAEA,SAAS,aAAc,WAAsB,SAAmB;AAC/D,QAAM,SAA8B,gBAAiB,UAAU,MAAM,IAAK,QAAS,CAAE,KAAK,CAAC;AAE3F,QAAM,UAAU,OAAO,QAAS,QAAS,MAAO,CAAE,EAChD,IAAK,CAAE,CAAE,SAAS,KAAM,MAAO;AAC/B,UAAM,WAAW,oBAAqB,KAAM;AAE5C,WAAO,CAAE,SAAS,KAAM;AAAA,EACzB,CAAE,EACD,OAAQ,CAAE,CAAE,EAAE,KAAM,MAAO;AAC3B,WAAO,CAAE,aAAc,KAAM;AAAA,EAC9B,CAAE;AAEH,QAAM,gBAAgB,OAAO,YAAa,OAAQ;AAElD,YAAU,MAAM,IAAK,UAAU,aAAc;AAE7C,SAAO;AACR;AAEA,SAAS,oBAAqB,OAAyB;AACtD,SAAO,MAAM,SAAS;AAAA,IACrB,CAAE,EAAE,OAAO,YAAY,UAAU,MAAO,OAAO,KAAM,KAAM,EAAE,SAAS,KAAK,WAAW;AAAA,EACvF;AACD;AAEA,SAAS,aAAc,OAAyB;AAC/C,SAAO,MAAM,SAAS,WAAW;AAClC;AAEA,SAAS,oBAAqB,WAAsB,EAAE,QAAQ,OAAO,GAA4C;AAChH,QAAM,aAAa,OAAO,OAAQ,CAAE,OAAQ,CAAE,OAAO,SAAU,EAAG,CAAE;AACpE,QAAM,eAAe,gBAAiB,gBAAiB,SAAU,CAAE;AAEnE,eAAa,QAAS,CAAE,CAAE,EAAE,IAAK,MAAO;AACvC,SAAK,QAAQ,KAAK,MAAM,OAAQ,CAAE,UAAW,CAAE,WAAW,SAAU,KAAM,CAAE;AAAA,EAC7E,CAAE;AAEF,wBAAuB;AAAA,IACtB,IAAI,UAAU;AAAA,IACd,OAAO,OAAO,YAAa,YAAa;AAAA,IACxC,aAAa;AAAA,EACd,CAAE;AACH;AAEA,SAAS,gBAAiB,WAAuB;AAChD,SAAO,OAAO,QAAS,UAAU,SAAS,OAAO,CAAE,EAAE,OAAQ,CAAE,SAAgD;AAC9G,UAAM,CAAE,EAAE,KAAM,IAAI;AAEpB,WAAO,wCAAoB,QAAS,KAAM;AAAA,EAC3C,CAAE;AACH;AAEA,SAAS,gBAAgB;AACxB,sBAAoB;AACpB,kCAAAC,yBAAgB,iCAAiC,EAAE,QAAQ,KAAK,GAAG,EAAE,UAAU,KAAK,CAAE;AACvF;AAEA,SAAS,sBAAsB;AAC9B,SAAO,cAAe,IAAI,YAAa,0BAA2B,CAAE;AACrE;;;ADxEO,SAAS,mBAAoB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,YAAY;AAAA,EACxB,qBAAqB,CAAC;AACvB,GAAoC;AACnC,MAAI,KAAK;AAET,sBAAqB,WAAW,CAAE,WAAY;AAC7C,eAAO,iCAAY,KAAM,SAAU,KAAK,OAAO,KAAM,MAAO,CAAE;AAE9D,UAAM,WAAW,CAAE,EAAE,MAAM,OAAO,YAAY,UAAU,GAAG,GAAG,kBAAmB;AAEjF,WAAQ,EAAG,IAAI;AAAA,MACd;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACD;AAEA,0BAAuB,WAAW,aAAa,EAAG;AAElD,WAAO;AAAA,EACR,CAAE;AAEF,SAAO;AACR;AAEA,SAAS,sBAAuB,WAAsB,aAAqB,SAAkB;AAC5F,QAAM,OAAO,kBAAmB,WAAW,WAAY;AAEvD,QAAM,mBAAmB,yCAAoB;AAAA,IAC5C,CAAE,SAAU;AACX,aAAO,CAAE,GAAK,QAAQ,CAAC,GAAK,OAAQ;AAAA,IACrC;AAAA,IACA,EAAE,KAAK;AAAA,EACR;AAEA,wBAAuB;AAAA,IACtB,IAAI;AAAA,IACJ,OAAO;AAAA,MACN,CAAE,WAAY,GAAG;AAAA,IAClB;AAAA,IACA,aAAa;AAAA,EACd,CAAE;AACH;AAEO,SAAS,0BACf,SACC;AACD,SAAO,CAAE,SAAS,WAAW,CAAE,SAAS;AACzC;;;AE1EO,SAAS,mBAAoB,WAAsB,SAA6B;AACtF,sBAAqB,WAAW,CAAE,WAAY;AAG7C,WAAO,OAAQ,OAAQ;AAEvB,WAAO;AAAA,EACR,CAAE;AACH;;;ACbA,IAAAC,uBAA2B;AAC3B,IAAAC,wBAAoF;AAc7E,SAAS,mBAAoB,MAA+B;AAClE,sBAAqB,KAAK,WAAW,CAAE,WAAY;AAClD,UAAM,QAAQ,OAAQ,KAAK,OAAQ;AAEnC,QAAK,CAAE,OAAQ;AACd,YAAM,IAAI,mBAAoB,EAAE,SAAS,EAAE,SAAS,KAAK,QAAQ,EAAE,CAAE;AAAA,IACtE;AAEA,UAAM,cAAU,wCAAkB,OAAO,KAAK,IAAK;AACnD,UAAM,aAAc,gBAAgB,OAAO,KAAK,aAAa,SAAS,eAAgB;AAEtF,QAAK,SAAU;AACd,cAAQ,YAAQ,iCAAY,QAAQ,OAAO,KAAK,KAAM;AACtD,cAAQ,aAAa,WAAW,MAAM,YAAY;AAAA,IACnD,OAAO;AACN,YAAM,SAAS,KAAM,EAAE,MAAM,KAAK,MAAM,OAAO,KAAK,OAAO,YAAY,UAAU,CAAE;AAAA,IACpF;AAEA,WAAO;AAAA,EACR,CAAE;AACH;;;ACnCA,mBAAyB;AACzB,IAAAC,8BAAiE;;;ACG1D,SAAS,uBAAwB,WAAwD;AAC/F,QAAM,YAAY,aAAc,SAAU;AAE1C,QAAM,eAAe,WAAW,OAAO,IAAK,cAAe;AAE3D,MAAK,OAAO,iBAAiB,UAAW;AACvC,WAAO,KAAK,MAAO,YAAa;AAAA,EACjC;AAEA,SAAO;AACR;;;ADPO,IAAM,yBAAyB,CAAE,cAA0B;AACjE,QAAM,CAAE,cAAc,eAAgB,QAAI,uBAAiC,MAAM;AAChF,UAAM,UAAU,uBAAwB,SAAU;AAElD,WAAO,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,EAAE;AAAA,EAC3C,CAAE;AAEF,kCAAAC;AAAA,QACC,yCAAa,uCAAwC;AAAA,IACrD,MAAM;AACL,YAAM,kBAAkB,uBAAwB,SAAU;AAC1D,sBAAiB,mBAAmB,EAAE,SAAS,GAAG,OAAO,CAAC,EAAE,CAAE;AAAA,IAC/D;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AAEA,SAAO;AACR;;;AExBA,IAAAC,8BAA0D;AAKnD,IAAM,4BAA4B,CAAE;AAAA,EAC1C;AAAA,EACA;AACD,MAGO;AACN,QAAM,UAAU,aAAc,SAAU;AAExC,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,mBAAoB,SAAU,YAAa;AAAA,EAC7D;AAEA,UAAQ,MAAM,IAAK,gBAAgB,YAAa;AAEhD,SAAO,cAAe,IAAI,YAAa,uCAAwC,CAAE;AAEjF,kCAAAC,yBAAgB,iCAAiC,EAAE,QAAQ,KAAK,GAAG,EAAE,UAAU,KAAK,CAAE;AACvF;AAEO,IAAM,0BAA0B,CAAE,WAAmB,kBAA2B;AACtF,SAAO,KAAK;AAAA,IACX,IAAI,YAAa,4BAA4B,EAAE,QAAQ,EAAE,WAAW,cAAc,EAAE,CAAE;AAAA,EACvF;AACD;","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","runCommandSync"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hooks/use-element-children.ts","../src/sync/get-container.ts","../src/sync/model-utils.ts","../src/hooks/use-element-editor-settings.ts","../src/sync/get-element-editor-settings.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/hooks/use-selected-element-settings.ts","../src/sync/get-element-setting.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-all-descendants.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 { useParentElement } from './hooks/use-parent-element';\nexport { useSelectedElement } from './hooks/use-selected-element';\nexport { useSelectedElementSettings } from './hooks/use-selected-element-settings';\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 { getAllDescendants } from './sync/get-all-descendants';\nexport {\n\tfindChildRecursive,\n\tgetElementChildren as getElementChildrenWithFallback,\n\ttype ModelResult,\n} from './sync/model-utils';\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 { moveElements } 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 { findChildRecursive, getElementChildren, type ModelResult } from '../sync/model-utils';\nimport { type V1ElementEditorSettingsProps } from '../sync/types';\nimport { type ElementID } from '../types';\n\nexport type ElementModel = {\n\tid: string;\n\teditorSettings: V1ElementEditorSettingsProps;\n};\n\nexport type ElementChildren = Record< string, ElementModel[] >;\n\nfunction toElementModel( { model }: ModelResult ): ElementModel {\n\treturn {\n\t\tid: model.get( 'id' ) as string,\n\t\teditorSettings: model.get( 'editor_settings' ) ?? {},\n\t};\n}\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\t\t\tconst model = container?.model;\n\n\t\t\tif ( ! model ) {\n\t\t\t\treturn {} as ElementChildren;\n\t\t\t}\n\n\t\t\tconst elementChildren = Object.entries( childrenTypes ).reduce( ( acc, [ parentType, childType ] ) => {\n\t\t\t\tconst parent = findChildRecursive( model, ( m ) => m.get( 'elType' ) === parentType );\n\n\t\t\t\tif ( ! parent ) {\n\t\t\t\t\tacc[ childType ] = [];\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tconst children = getElementChildren( parent.model, ( m ) => m.get( 'elType' ) === childType );\n\n\t\t\t\tacc[ childType ] = children.map( toElementModel );\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 { type V1Element } from './types';\n\nexport type V1Model = V1Element[ 'model' ];\n\nexport type V1Collection = V1Model[] & {\n\tremove: ( model: V1Model ) => void;\n\tadd: ( model: V1Model, options?: { at?: number }, silent?: boolean ) => void;\n\tindexOf: ( model: V1Model ) => number;\n};\n\nexport type ModelResult = {\n\tmodel: V1Model;\n};\n\nexport function findChildRecursive( model: V1Model, predicate: ( model: V1Model ) => boolean ): ModelResult | null {\n\tconst childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];\n\n\tfor ( const childModel of childModels ) {\n\t\tif ( predicate( childModel ) ) {\n\t\t\treturn { model: childModel };\n\t\t}\n\n\t\tconst found = findChildRecursive( childModel, predicate );\n\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function getElementChildren( model: V1Model, predicate?: ( model: V1Model ) => boolean ): ModelResult[] {\n\tconst childModels = ( model.get( 'elements' ) ?? [] ) as V1Model[];\n\n\treturn childModels\n\t\t.filter( ( childModel ) => ! predicate || predicate( childModel ) )\n\t\t.map( ( childModel ) => ( { model: childModel } ) );\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 { 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 { getSelectedElement } from '../sync/get-selected-elements';\n\nexport function useSelectedElement() {\n\treturn 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\tgetSelectedElement\n\t);\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\tpseudoStates: elementType.atomic_pseudo_states ?? [],\n\t};\n}\n","import { type Element, type ElementType } from '../types';\nimport { getElementType } from './get-element-type';\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\ntype GetSelectedElementTypeResult =\n\t| {\n\t\t\telement: Element;\n\t\t\telementType: ElementType;\n\t }\n\t| {\n\t\t\telement: null;\n\t\t\telementType: null;\n\t };\n\nexport function getSelectedElement(): GetSelectedElementTypeResult {\n\tconst elements = getSelectedElements();\n\n\tconst [ element ] = elements;\n\tconst elementType = getElementType( element?.type );\n\n\tif ( elements.length !== 1 || ! elementType || ! element ) {\n\t\treturn { element: null, elementType: null };\n\t}\n\n\treturn { element, elementType };\n}\n","import { type AnyTransformable } from '@elementor/editor-props';\nimport { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getElementSettings } from '../sync/get-element-setting';\nimport { getSelectedElement } from '../sync/get-selected-elements';\nimport { type Element, type ElementType } from '../types';\n\ntype UseSelectedElementSettingsResult< TValue > =\n\t| {\n\t\t\telement: Element;\n\t\t\telementType: ElementType;\n\t\t\tsettings: Record< string, TValue | null >;\n\t }\n\t| {\n\t\t\telement: null;\n\t\t\telementType: null;\n\t\t\tsettings: null;\n\t };\n\n// Use the selected element and it's settings,\n// and subscribe to changes on both the selected element and its settings.\n// This ensures the element and its settings are synced.\nexport function useSelectedElementSettings< TValue = AnyTransformable >(): UseSelectedElementSettingsResult< TValue > {\n\treturn 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\tcommandEndEvent( 'document/elements/set-settings' ),\n\t\t],\n\t\t() => {\n\t\t\tconst { element, elementType } = getSelectedElement();\n\n\t\t\tif ( ! element || ! elementType ) {\n\t\t\t\treturn { element: null, elementType: null, settings: null };\n\t\t\t}\n\n\t\t\tconst settings = getElementSettings< TValue >( element.id, Object.keys( elementType.propsSchema ) );\n\n\t\t\treturn {\n\t\t\t\telement,\n\t\t\t\telementType,\n\t\t\t\tsettings,\n\t\t\t};\n\t\t}\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 { __privateRunCommandSync as runCommandSync } from '@elementor/editor-v1-adapters';\n\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\tcontainer: V1Element;\n\tmodel?: Omit< V1ElementModelProps, 'settings' | 'id' > & { settings?: V1ElementSettingsProps; id?: string };\n\toptions?: Options;\n};\n\nexport function createElement( { container, model, options }: CreateElementParams ): V1Element {\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 { type V1Element, type V1ElementModelProps } from './types';\n\ntype CreateElementsParams = {\n\telements: CreateElementParams[];\n\ttitle: string;\n\tsubtitle?: string;\n};\n\ntype CreatedElement = {\n\tcontainer: V1Element;\n\tparentContainer: V1Element;\n\tmodel: V1ElementModelProps;\n\toptions?: CreateElementParams[ 'options' ];\n};\n\ntype CreatedElementsResult = {\n\tcreatedElements: CreatedElement[];\n};\n\nexport type { CreateElementsParams, CreatedElement, CreatedElementsResult };\n\nexport const createElements = ( {\n\telements,\n\ttitle,\n\tsubtitle = __( 'Item added', 'elementor' ),\n}: CreateElementsParams ): 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( ( { container, options, ...elementParams } ) => {\n\t\t\t\t\tconst parentContainer = container.lookup?.() ?? container;\n\n\t\t\t\t\tif ( ! parentContainer ) {\n\t\t\t\t\t\tthrow new Error( 'Parent container not found' );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainer: parentContainer,\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\tcreatedElements.push( {\n\t\t\t\t\t\tcontainer: element,\n\t\t\t\t\t\tparentContainer,\n\t\t\t\t\t\tmodel: element.model?.toJSON() || {},\n\t\t\t\t\t\toptions,\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[ ...createdElements ].reverse().forEach( ( { container } ) => {\n\t\t\t\t\tconst freshContainer = container.lookup?.();\n\n\t\t\t\t\tif ( freshContainer ) {\n\t\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\t\tcontainer: freshContainer,\n\t\t\t\t\t\t\toptions: { useHistory: false },\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_: { 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( ( { parentContainer, model, options } ) => {\n\t\t\t\t\tconst freshParent = parentContainer.lookup?.();\n\n\t\t\t\t\tif ( ! freshParent ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst element = createElement( {\n\t\t\t\t\t\tcontainer: freshParent,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewElements.push( {\n\t\t\t\t\t\tcontainer: element,\n\t\t\t\t\t\tparentContainer: freshParent,\n\t\t\t\t\t\tmodel: element.model.toJSON(),\n\t\t\t\t\t\toptions,\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 { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n};\n\ntype DeleteElementParams = {\n\tcontainer: V1Element;\n\toptions?: Options;\n};\n\nexport function deleteElement( { container, options = {} }: DeleteElementParams ): Promise< void > {\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 { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tclone?: boolean;\n};\n\nexport type DuplicateElementParams = {\n\telement: V1Element;\n\toptions?: Options;\n};\n\nexport function duplicateElement( { element, options = {} }: DuplicateElementParams ): V1Element {\n\tconst currentIndex = element.view?._index ?? 0;\n\tconst insertPosition = options.clone !== false ? currentIndex + 1 : undefined;\n\n\treturn runCommandSync< V1Element >( 'document/elements/duplicate', {\n\t\tcontainer: element,\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 V1Element, 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\tcontainer: V1Element;\n\tparentContainer: V1Element;\n\tmodel: V1ElementModelProps;\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\tonDuplicateElements?.();\n\t\t\t\tconst duplicatedElements: DuplicatedElement[] = [];\n\n\t\t\t\telementIdsToDuplicate.forEach( ( 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\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst duplicatedElement = duplicateElement( {\n\t\t\t\t\t\telement: originalContainer,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( ! duplicatedElement.parent ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tduplicatedElements.push( {\n\t\t\t\t\t\tcontainer: duplicatedElement,\n\t\t\t\t\t\tparentContainer: duplicatedElement.parent,\n\t\t\t\t\t\tmodel: duplicatedElement.model.toJSON(),\n\t\t\t\t\t\tat: duplicatedElement.view?._index,\n\t\t\t\t\t} );\n\t\t\t\t} );\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[ ...duplicatedElements ].reverse().forEach( ( { container } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\tcontainer,\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[] = [];\n\n\t\t\t\tpreviousElements.forEach( ( { parentContainer, model, at } ) => {\n\t\t\t\t\tconst freshParent = parentContainer.lookup?.();\n\n\t\t\t\t\tif ( freshParent ) {\n\t\t\t\t\t\tconst createdElement = createElement( {\n\t\t\t\t\t\t\tcontainer: freshParent,\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\toptions: { useHistory: false, clone: false, at },\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tduplicatedElements.push( {\n\t\t\t\t\t\t\tcontainer: createdElement,\n\t\t\t\t\t\t\tparentContainer: freshParent,\n\t\t\t\t\t\t\tmodel,\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\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 V1Element } from './types';\n\nexport function getAllDescendants( container: V1Element ): V1Element[] {\n\tconst children = ( container.children ?? [] ).flatMap( ( child ) => getAllDescendants( child as V1Element ) );\n\n\treturn [ container, ...children ];\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 { type V1Element } from './types';\n\ntype Options = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tedit?: boolean;\n};\n\nexport type MoveElementParams = {\n\telement: V1Element;\n\ttargetContainer: V1Element;\n\toptions?: Options;\n};\n\nexport function moveElement( { element, targetContainer, options = {} }: MoveElementParams ): V1Element {\n\tconst resolvedElement = element.lookup?.();\n\tconst resolvedTarget = targetContainer.lookup?.();\n\n\tif ( ! resolvedElement ) {\n\t\tthrow new Error( `Element not found: ${ element.id }` );\n\t}\n\n\tif ( ! resolvedTarget ) {\n\t\tthrow new Error( `Target container not found: ${ targetContainer.id }` );\n\t}\n\n\tconst modelToRecreate = resolvedElement.model.toJSON();\n\n\tdeleteElement( {\n\t\tcontainer: resolvedElement,\n\t\toptions: { ...options, useHistory: false },\n\t} );\n\n\tconst newContainer = createElement( {\n\t\tcontainer: resolvedTarget,\n\t\tmodel: modelToRecreate,\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 { moveElement } from './move-element';\nimport { type V1Element } from './types';\n\ntype MoveOptions = {\n\tuseHistory?: boolean;\n\tat?: number;\n\tedit?: boolean;\n};\n\ntype MoveInput = {\n\telement: V1Element;\n\ttargetContainer: V1Element;\n\toptions?: MoveOptions;\n};\n\ntype MoveElementsParams = {\n\tmoves: MoveInput[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonMoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype MovedElement = {\n\telement: V1Element;\n\toriginalContainer: V1Element;\n\toriginalIndex: number;\n\ttargetContainer: V1Element;\n\toptions?: MoveOptions;\n};\n\ntype MovedElementsResult = {\n\tmovedElements: MovedElement[];\n};\n\nexport type { MoveElementsParams, MoveInput, 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: MoveInput[] } ): MovedElementsResult => {\n\t\t\t\tconst movedElements: MovedElement[] = [];\n\t\t\t\tonMoveElements?.();\n\n\t\t\t\tmoves.forEach( ( { element, targetContainer, options } ) => {\n\t\t\t\t\tconst sourceElement = element.lookup?.() ?? element;\n\t\t\t\t\tconst target = targetContainer.lookup?.() ?? targetContainer;\n\n\t\t\t\t\tif ( ! sourceElement ) {\n\t\t\t\t\t\tthrow new Error( 'Element not found' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! target ) {\n\t\t\t\t\t\tthrow new Error( 'Target container not found' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! sourceElement.parent ) {\n\t\t\t\t\t\tthrow new Error( 'Element has no parent container' );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalContainer = sourceElement.parent;\n\t\t\t\t\tconst originalIndex = originalContainer.children?.indexOf( sourceElement ) ?? -1;\n\n\t\t\t\t\tconst newElement = moveElement( {\n\t\t\t\t\t\telement: sourceElement,\n\t\t\t\t\t\ttargetContainer: target,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tmovedElements.push( {\n\t\t\t\t\t\telement: newElement,\n\t\t\t\t\t\toriginalContainer,\n\t\t\t\t\t\toriginalIndex,\n\t\t\t\t\t\ttargetContainer: target,\n\t\t\t\t\t\toptions,\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: MoveInput[] }, { movedElements }: MovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t[ ...movedElements ].reverse().forEach( ( { element, originalContainer, originalIndex } ) => {\n\t\t\t\t\tconst freshElement = element.lookup?.();\n\t\t\t\t\tconst freshOriginalContainer = originalContainer.lookup?.();\n\n\t\t\t\t\tif ( ! freshElement || ! freshOriginalContainer ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveElement( {\n\t\t\t\t\t\telement: freshElement,\n\t\t\t\t\t\ttargetContainer: freshOriginalContainer,\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: ( _: { moves: MoveInput[] }, { movedElements }: MovedElementsResult ): MovedElementsResult => {\n\t\t\t\tconst newMovedElements: MovedElement[] = [];\n\t\t\t\tonMoveElements?.();\n\n\t\t\t\tmovedElements.forEach( ( { element, originalContainer, originalIndex, targetContainer, options } ) => {\n\t\t\t\t\tconst freshElement = element.lookup?.();\n\t\t\t\t\tconst freshOriginalContainer = originalContainer.lookup?.();\n\t\t\t\t\tconst freshTarget = targetContainer.lookup?.();\n\n\t\t\t\t\tif ( ! freshElement || ! freshOriginalContainer || ! freshTarget ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst newElement = moveElement( {\n\t\t\t\t\t\telement: freshElement,\n\t\t\t\t\t\ttargetContainer: freshTarget,\n\t\t\t\t\t\toptions: { ...options, useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewMovedElements.push( {\n\t\t\t\t\t\telement: newElement,\n\t\t\t\t\t\toriginalContainer: freshOriginalContainer,\n\t\t\t\t\t\toriginalIndex,\n\t\t\t\t\t\ttargetContainer: freshTarget,\n\t\t\t\t\t\toptions,\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 RemoveElementsParams = {\n\telementIds: string[];\n\ttitle: string;\n\tsubtitle?: string;\n\tonRemoveElements?: () => void;\n\tonRestoreElements?: () => void;\n};\n\ntype RemovedElement = {\n\tcontainer: V1Element;\n\tparent: V1Element;\n\tmodel: V1ElementModelProps;\n\tat: number;\n};\n\ntype RemovedElementsResult = {\n\tremovedElements: RemovedElement[];\n};\n\nexport const removeElements = ( {\n\telementIds,\n\ttitle,\n\tsubtitle = __( 'Item removed', 'elementor' ),\n\tonRemoveElements,\n\tonRestoreElements,\n}: RemoveElementsParams ): 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?.parent ) {\n\t\t\t\t\t\tremovedElements.push( {\n\t\t\t\t\t\t\tcontainer,\n\t\t\t\t\t\t\tparent: container.parent,\n\t\t\t\t\t\t\tmodel: container.model.toJSON(),\n\t\t\t\t\t\t\tat: container.view?._index ?? 0,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\tremovedElements.forEach( ( { container } ) => {\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\tcontainer,\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 { removedElements };\n\t\t\t},\n\t\t\tundo: ( _: { elementIds: string[] }, { removedElements }: RemovedElementsResult ) => {\n\t\t\t\tonRestoreElements?.();\n\n\t\t\t\t[ ...removedElements ].reverse().forEach( ( { parent, model, at } ) => {\n\t\t\t\t\tconst freshParent = parent.lookup?.();\n\n\t\t\t\t\tif ( freshParent ) {\n\t\t\t\t\t\tcreateElement( {\n\t\t\t\t\t\t\tcontainer: freshParent,\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{ removedElements }: RemovedElementsResult\n\t\t\t): RemovedElementsResult => {\n\t\t\t\tonRemoveElements?.();\n\n\t\t\t\tconst newRemovedElements: RemovedElement[] = [];\n\n\t\t\t\tremovedElements.forEach( ( { container, parent, model, at } ) => {\n\t\t\t\t\tconst freshContainer = container.lookup?.();\n\t\t\t\t\tconst freshParent = parent.lookup?.();\n\n\t\t\t\t\tif ( ! freshContainer || ! freshParent ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdeleteElement( {\n\t\t\t\t\t\tcontainer: freshContainer,\n\t\t\t\t\t\toptions: { useHistory: false },\n\t\t\t\t\t} );\n\n\t\t\t\t\tnewRemovedElements.push( {\n\t\t\t\t\t\tcontainer: freshContainer,\n\t\t\t\t\t\tparent: freshParent,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tat,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn { removedElements: newRemovedElements };\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 V1Element, type V1ElementData, type V1ElementModelProps } from './types';\n\ntype ElementLocation = {\n\tcontainer: V1Element;\n\tindex: number;\n};\n\ntype ReplaceElementArgs = {\n\tcurrentElement: V1ElementData;\n\tnewElement: Omit< V1ElementModelProps, 'id' >;\n\twithHistory?: boolean;\n};\n\nexport const replaceElement = async ( { currentElement, newElement, withHistory = true }: ReplaceElementArgs ) => {\n\tconst currentElementContainer = getContainer( currentElement.id );\n\n\tif ( ! currentElementContainer ) {\n\t\tthrow new ElementNotFoundError( { context: { elementId: currentElement.id } } );\n\t}\n\n\tconst { container, index } = getNewElementContainer( currentElementContainer, newElement );\n\n\tconst newElementInstance = createElement( {\n\t\tcontainer,\n\t\tmodel: newElement,\n\t\toptions: { at: index, useHistory: withHistory },\n\t} );\n\n\tawait deleteElement( { container: currentElementContainer, options: { useHistory: withHistory } } );\n\n\treturn newElementInstance;\n};\n\nfunction getNewElementContainer(\n\tcurrentElementContainer: V1Element,\n\tnewElement: Omit< V1ElementModelProps, 'id' >\n): ElementLocation {\n\tconst { parent } = currentElementContainer;\n\n\tif ( ! parent ) {\n\t\tthrow new ElementParentNotFoundError( { context: { elementId: currentElementContainer.id } } );\n\t}\n\n\tconst elementIndex = currentElementContainer.view?._index ?? 0;\n\n\tif ( elementIndex === -1 ) {\n\t\tthrow new ElementIndexNotFoundError( { context: { elementId: currentElementContainer.id } } );\n\t}\n\n\tlet location: ElementLocation = { container: parent, index: elementIndex };\n\n\tif ( parent.id === 'document' && newElement.elType === 'widget' ) {\n\t\tlocation = createWrapperForWidget( parent, elementIndex );\n\t}\n\n\treturn location;\n}\n\nconst DEFAULT_CONTAINER_TYPE = 'e-flexbox';\n\nfunction createWrapperForWidget( parent: V1Element, elementIndex: number ): ElementLocation {\n\tconst container = createElement( {\n\t\tcontainer: parent,\n\t\tmodel: { elType: DEFAULT_CONTAINER_TYPE },\n\t\toptions: { at: elementIndex, useHistory: false },\n\t} );\n\n\treturn { container, 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\trunCommandSync( 'document/save/set-is-modified', { status: true }, { 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\tif ( ! container ) {\n\t\treturn;\n\t}\n\n\tconst args = {\n\t\tcontainer,\n\t\tsettings: { ...props },\n\t};\n\n\tif ( withHistory ) {\n\t\trunCommandSync( 'document/elements/settings', args );\n\t} else {\n\t\trunCommandSync( 'document/elements/set-settings', args, { internal: true } );\n\t}\n};\n","import { type LinkPropValue } from '@elementor/editor-props';\n\nimport { getContainer } from './sync/get-container';\nimport { getElementSetting } from './sync/get-element-setting';\n\nconst ANCHOR_SELECTOR = 'a, [data-action-link]';\n\ntype LinkValue = LinkPropValue[ 'value' ];\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, resolvedValue?: LinkValue ): 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 hasInlineLink = checkForInlineLink( elementId, resolvedValue );\n\n\tif ( hasInlineLink ) {\n\t\treturn {\n\t\t\tshouldRestrict: true,\n\t\t\treason: 'descendant',\n\t\t\telementId,\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 checkForInlineLink( elementId: string, resolvedValue?: LinkValue ): boolean {\n\tconst element = getElementDOM( elementId );\n\n\tif ( ! element ) {\n\t\treturn false;\n\t}\n\n\tif ( element.matches( ANCHOR_SELECTOR ) ) {\n\t\treturn false;\n\t}\n\n\tconst linkSetting = resolvedValue ?? getElementSetting< LinkPropValue >( elementId, 'link' )?.value;\n\n\tif ( linkSetting?.destination ) {\n\t\treturn false;\n\t}\n\n\treturn element.querySelector( ANCHOR_SELECTOR ) !== 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\trunCommandSync( 'document/save/set-is-modified', { status: true }, { internal: true } );\n};\n\nexport const playElementInteractions = ( elementId: string, interactionId: string ) => {\n\twindow.top?.dispatchEvent(\n\t\tnew CustomEvent( 'atomic/play_interactions', { detail: { elementId, interactionId } } )\n\t);\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","runCommandSync"]}
|
package/dist/index.mjs
CHANGED
|
@@ -91,45 +91,11 @@ var useElementEditorSettings = (elementId) => {
|
|
|
91
91
|
);
|
|
92
92
|
};
|
|
93
93
|
|
|
94
|
-
// src/hooks/use-element-setting.ts
|
|
95
|
-
import { __privateUseListenTo as useListenTo3, commandEndEvent as commandEndEvent2 } from "@elementor/editor-v1-adapters";
|
|
96
|
-
|
|
97
|
-
// src/sync/get-element-setting.ts
|
|
98
|
-
var getElementSetting = (elementId, settingKey) => {
|
|
99
|
-
const container = getContainer(elementId);
|
|
100
|
-
return container?.settings?.get(settingKey) ?? null;
|
|
101
|
-
};
|
|
102
|
-
var getElementSettings = (elementId, settingKey) => {
|
|
103
|
-
return Object.fromEntries(settingKey.map((key) => [key, getElementSetting(elementId, key)]));
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
// src/hooks/use-element-setting.ts
|
|
107
|
-
var useElementSetting = (elementId, settingKey) => {
|
|
108
|
-
return useListenTo3(
|
|
109
|
-
commandEndEvent2("document/elements/set-settings"),
|
|
110
|
-
() => getElementSetting(elementId, settingKey),
|
|
111
|
-
[elementId, settingKey]
|
|
112
|
-
);
|
|
113
|
-
};
|
|
114
|
-
var useElementSettings = (elementId, settingKeys) => {
|
|
115
|
-
return useListenTo3(
|
|
116
|
-
commandEndEvent2("document/elements/set-settings"),
|
|
117
|
-
() => settingKeys.reduce((settings, key) => {
|
|
118
|
-
const value = getElementSetting(elementId, key);
|
|
119
|
-
if (value !== null) {
|
|
120
|
-
settings[key] = value;
|
|
121
|
-
}
|
|
122
|
-
return settings;
|
|
123
|
-
}, {}),
|
|
124
|
-
[elementId, settingKeys.join(",")]
|
|
125
|
-
);
|
|
126
|
-
};
|
|
127
|
-
|
|
128
94
|
// src/hooks/use-parent-element.ts
|
|
129
|
-
import { __privateUseListenTo as
|
|
95
|
+
import { __privateUseListenTo as useListenTo3, commandEndEvent as commandEndEvent2 } from "@elementor/editor-v1-adapters";
|
|
130
96
|
function useParentElement(elementId) {
|
|
131
|
-
return
|
|
132
|
-
[
|
|
97
|
+
return useListenTo3(
|
|
98
|
+
[commandEndEvent2("document/elements/create")],
|
|
133
99
|
() => {
|
|
134
100
|
if (!elementId) {
|
|
135
101
|
return null;
|
|
@@ -146,7 +112,7 @@ function useParentElement(elementId) {
|
|
|
146
112
|
}
|
|
147
113
|
|
|
148
114
|
// src/hooks/use-selected-element.ts
|
|
149
|
-
import { __privateUseListenTo as
|
|
115
|
+
import { __privateUseListenTo as useListenTo4, commandEndEvent as commandEndEvent3 } from "@elementor/editor-v1-adapters";
|
|
150
116
|
|
|
151
117
|
// src/sync/get-widgets-cache.ts
|
|
152
118
|
function getWidgetsCache() {
|
|
@@ -193,24 +159,64 @@ function getSelectedElements() {
|
|
|
193
159
|
return acc;
|
|
194
160
|
}, []);
|
|
195
161
|
}
|
|
162
|
+
function getSelectedElement() {
|
|
163
|
+
const elements = getSelectedElements();
|
|
164
|
+
const [element] = elements;
|
|
165
|
+
const elementType = getElementType(element?.type);
|
|
166
|
+
if (elements.length !== 1 || !elementType || !element) {
|
|
167
|
+
return { element: null, elementType: null };
|
|
168
|
+
}
|
|
169
|
+
return { element, elementType };
|
|
170
|
+
}
|
|
196
171
|
|
|
197
172
|
// src/hooks/use-selected-element.ts
|
|
198
173
|
function useSelectedElement() {
|
|
199
|
-
|
|
174
|
+
return useListenTo4(
|
|
175
|
+
[
|
|
176
|
+
commandEndEvent3("document/elements/select"),
|
|
177
|
+
commandEndEvent3("document/elements/deselect"),
|
|
178
|
+
commandEndEvent3("document/elements/select-all"),
|
|
179
|
+
commandEndEvent3("document/elements/deselect-all")
|
|
180
|
+
],
|
|
181
|
+
getSelectedElement
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// src/hooks/use-selected-element-settings.ts
|
|
186
|
+
import { __privateUseListenTo as useListenTo5, commandEndEvent as commandEndEvent4 } from "@elementor/editor-v1-adapters";
|
|
187
|
+
|
|
188
|
+
// src/sync/get-element-setting.ts
|
|
189
|
+
var getElementSetting = (elementId, settingKey) => {
|
|
190
|
+
const container = getContainer(elementId);
|
|
191
|
+
return container?.settings?.get(settingKey) ?? null;
|
|
192
|
+
};
|
|
193
|
+
var getElementSettings = (elementId, settingKey) => {
|
|
194
|
+
return Object.fromEntries(settingKey.map((key) => [key, getElementSetting(elementId, key)]));
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// src/hooks/use-selected-element-settings.ts
|
|
198
|
+
function useSelectedElementSettings() {
|
|
199
|
+
return useListenTo5(
|
|
200
200
|
[
|
|
201
201
|
commandEndEvent4("document/elements/select"),
|
|
202
202
|
commandEndEvent4("document/elements/deselect"),
|
|
203
203
|
commandEndEvent4("document/elements/select-all"),
|
|
204
|
-
commandEndEvent4("document/elements/deselect-all")
|
|
204
|
+
commandEndEvent4("document/elements/deselect-all"),
|
|
205
|
+
commandEndEvent4("document/elements/set-settings")
|
|
205
206
|
],
|
|
206
|
-
|
|
207
|
+
() => {
|
|
208
|
+
const { element, elementType } = getSelectedElement();
|
|
209
|
+
if (!element || !elementType) {
|
|
210
|
+
return { element: null, elementType: null, settings: null };
|
|
211
|
+
}
|
|
212
|
+
const settings = getElementSettings(element.id, Object.keys(elementType.propsSchema));
|
|
213
|
+
return {
|
|
214
|
+
element,
|
|
215
|
+
elementType,
|
|
216
|
+
settings
|
|
217
|
+
};
|
|
218
|
+
}
|
|
207
219
|
);
|
|
208
|
-
const [element] = elements;
|
|
209
|
-
const elementType = getElementType(element?.type);
|
|
210
|
-
if (elements.length !== 1 || !elementType) {
|
|
211
|
-
return { element: null, elementType: null };
|
|
212
|
-
}
|
|
213
|
-
return { element, elementType };
|
|
214
220
|
}
|
|
215
221
|
|
|
216
222
|
// src/sync/create-element.ts
|
|
@@ -1118,9 +1124,8 @@ export {
|
|
|
1118
1124
|
useElementChildren,
|
|
1119
1125
|
useElementEditorSettings,
|
|
1120
1126
|
useElementInteractions,
|
|
1121
|
-
useElementSetting,
|
|
1122
|
-
useElementSettings,
|
|
1123
1127
|
useParentElement,
|
|
1124
|
-
useSelectedElement
|
|
1128
|
+
useSelectedElement,
|
|
1129
|
+
useSelectedElementSettings
|
|
1125
1130
|
};
|
|
1126
1131
|
//# sourceMappingURL=index.mjs.map
|