@elementor/editor-components 3.35.0-467 → 3.35.0-469
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.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/init.ts","../src/component-instance-transformer.ts","../src/store/store.ts","../src/store/thunks.ts","../src/api.ts","../src/utils/component-document-data.ts","../src/component-overridable-transformer.ts","../src/component-override-transformer.ts","../src/components/component-panel-header/component-panel-header.tsx","../src/hooks/use-navigate-back.ts","../src/utils/switch-to-component.ts","../src/utils/expand-navigator.ts","../src/utils/tracking.ts","../src/components/component-properties-panel/component-properties-panel.tsx","../src/components/component-properties-panel/component-properties-panel-content.tsx","../src/store/actions/add-overridable-group.ts","../src/store/actions/delete-overridable-group.ts","../src/store/utils/groups-transformers.ts","../src/store/actions/delete-overridable-prop.ts","../src/utils/revert-element-overridable-setting.ts","../src/prop-types/component-instance-override-prop-type.ts","../src/prop-types/component-instance-overrides-prop-type.ts","../src/prop-types/component-overridable-prop-type.ts","../src/prop-types/component-instance-prop-type.ts","../src/create-component-type.ts","../src/utils/is-component-instance.ts","../src/store/actions/reorder-group-props.ts","../src/store/actions/reorder-overridable-groups.ts","../src/store/actions/update-overridable-prop-params.ts","../src/components/component-panel-header/use-overridable-props.ts","../src/components/component-properties-panel/properties-empty-state.tsx","../src/components/components-tab/component-introduction.tsx","../src/components/component-properties-panel/properties-group.tsx","../src/components/component-properties-panel/property-item.tsx","../src/components/overridable-props/overridable-prop-form.tsx","../src/components/overridable-props/utils/validate-prop-label.ts","../src/components/component-properties-panel/sortable.tsx","../src/components/component-properties-panel/use-current-editable-item.ts","../src/store/actions/rename-overridable-group.ts","../src/components/component-properties-panel/utils/validate-group-label.ts","../src/components/component-properties-panel/utils/generate-unique-label.ts","../src/components/component-panel-header/component-badge.tsx","../src/components/components-tab/components.tsx","../src/hooks/use-components.ts","../src/utils/is-pro-user.ts","../src/components/components-tab/component-search.tsx","../src/components/components-tab/search-provider.tsx","../src/components/components-tab/components-list.tsx","../src/hooks/use-components-permissions.ts","../src/store/actions/rename-component.ts","../src/components/components-tab/angie-promotion-modal.tsx","../src/components/components-tab/components-item.tsx","../src/store/actions/archive-component.ts","../src/store/actions/load-components-assets.ts","../src/utils/get-component-ids.ts","../src/store/actions/load-components-overridable-props.ts","../src/store/actions/load-components-styles.ts","../src/utils/component-name-validation.ts","../src/components/create-component-form/utils/component-form-schema.ts","../src/utils/get-container-for-new-element.ts","../src/components/create-component-form/utils/replace-element-with-component.ts","../src/components/components-tab/delete-confirmation-dialog.tsx","../src/components/components-tab/loading-components.tsx","../src/components/components-tab/components-pro-notification.tsx","../src/components/consts.ts","../src/components/create-component-form/create-component-form.tsx","../src/prevent-non-atomic-nesting.ts","../src/store/actions/create-unpublished-component.ts","../src/components/create-component-form/hooks/use-form.ts","../src/components/create-component-form/utils/get-component-event-data.ts","../src/components/edit-component/edit-component.tsx","../src/store/actions/update-current-component.ts","../src/components/edit-component/component-modal.tsx","../src/hooks/use-canvas-document.ts","../src/hooks/use-element-rect.ts","../src/components/in-edit-mode.tsx","../src/components/instance-editing-panel/instance-editing-panel.tsx","../src/hooks/use-component-instance-settings.ts","../src/components/instance-editing-panel/empty-state.tsx","../src/components/instance-editing-panel/override-props-group.tsx","../src/components/instance-editing-panel/override-prop-control.tsx","../src/hooks/use-controls-by-widget-type.ts","../src/provider/overridable-prop-context.tsx","../src/store/actions/update-overridable-prop.ts","../src/utils/resolve-override-prop-value.ts","../src/utils/get-prop-type-for-component-override.ts","../src/components/control-label.tsx","../src/components/errors.ts","../src/components/overridable-props/overridable-prop-control.tsx","../src/components/overridable-props/overridable-prop-indicator.tsx","../src/store/actions/set-overridable-prop.ts","../src/components/overridable-props/indicator.tsx","../src/components/overridable-props/utils/get-overridable-prop.ts","../src/mcp/index.ts","../src/mcp/save-as-component-tool.ts","../src/populate-store.ts","../src/prevent-circular-nesting.ts","../src/store/actions/remove-component-styles.ts","../src/store/components-styles-provider.ts","../src/sync/create-components-before-save.ts","../src/sync/set-component-overridable-props-settings-before-save.ts","../src/sync/update-archived-component-before-save.ts","../src/sync/update-component-title-before-save.ts","../src/sync/update-components-before-save.ts","../src/sync/before-save.ts","../src/sync/cleanup-overridable-props-on-delete.ts","../src/sync/load-component-data-after-instance-added.ts","../src/sync/regenerate-override-keys.ts"],"sourcesContent":["import { injectIntoLogic, injectIntoTop } from '@elementor/editor';\nimport {\n\ttype CreateTemplatedElementTypeOptions,\n\tregisterElementType,\n\tsettingsTransformersRegistry,\n} from '@elementor/editor-canvas';\nimport { getV1CurrentDocument } from '@elementor/editor-documents';\nimport {\n\tFIELD_TYPE,\n\tinjectIntoPanelHeaderTop,\n\tregisterControlReplacement,\n\tregisterEditingPanelReplacement,\n\tregisterFieldIndicator,\n} from '@elementor/editor-editing-panel';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { injectTab } from '@elementor/editor-elements-panel';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { __registerSlice as registerSlice } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { componentInstanceTransformer } from './component-instance-transformer';\nimport { componentOverridableTransformer } from './component-overridable-transformer';\nimport { componentOverrideTransformer } from './component-override-transformer';\nimport { ComponentPanelHeader } from './components/component-panel-header/component-panel-header';\nimport { panel as componentPropertiesPanel } from './components/component-properties-panel/component-properties-panel';\nimport { Components } from './components/components-tab/components';\nimport { COMPONENT_DOCUMENT_TYPE, OVERRIDABLE_PROP_REPLACEMENT_ID } from './components/consts';\nimport { CreateComponentForm } from './components/create-component-form/create-component-form';\nimport { EditComponent } from './components/edit-component/edit-component';\nimport { openEditModeDialog } from './components/in-edit-mode';\nimport { InstanceEditingPanel } from './components/instance-editing-panel/instance-editing-panel';\nimport { OverridablePropControl } from './components/overridable-props/overridable-prop-control';\nimport { OverridablePropIndicator } from './components/overridable-props/overridable-prop-indicator';\nimport { COMPONENT_WIDGET_TYPE, createComponentType } from './create-component-type';\nimport { initMcp } from './mcp';\nimport { PopulateStore } from './populate-store';\nimport { initCircularNestingPrevention } from './prevent-circular-nesting';\nimport { initNonAtomicNestingPrevention } from './prevent-non-atomic-nesting';\nimport { componentOverridablePropTypeUtil } from './prop-types/component-overridable-prop-type';\nimport { loadComponentsAssets } from './store/actions/load-components-assets';\nimport { removeComponentStyles } from './store/actions/remove-component-styles';\nimport { componentsStylesProvider } from './store/components-styles-provider';\nimport { slice } from './store/store';\nimport { beforeSave } from './sync/before-save';\nimport { initCleanupOverridablePropsOnDelete } from './sync/cleanup-overridable-props-on-delete';\nimport { initLoadComponentDataAfterInstanceAdded } from './sync/load-component-data-after-instance-added';\nimport { initRegenerateOverrideKeys } from './sync/regenerate-override-keys';\nimport { type ExtendedWindow } from './types';\nimport { onElementDrop } from './utils/tracking';\n\nexport function init() {\n\tstylesRepository.register( componentsStylesProvider );\n\n\tregisterSlice( slice );\n\tregisterPanel( componentPropertiesPanel );\n\n\tregisterElementType( COMPONENT_WIDGET_TYPE, ( options: CreateTemplatedElementTypeOptions ) =>\n\t\tcreateComponentType( { ...options, showLockedByModal: openEditModeDialog } )\n\t);\n\n\tregisterDataHook( 'dependency', 'editor/documents/close', ( args ) => {\n\t\tconst document = getV1CurrentDocument();\n\t\tif ( document.config.type === COMPONENT_DOCUMENT_TYPE ) {\n\t\t\targs.mode = 'autosave';\n\t\t}\n\t\treturn true;\n\t} );\n\n\tregisterDataHook( 'after', 'preview/drop', onElementDrop );\n\n\t( window as unknown as ExtendedWindow ).elementorCommon.__beforeSave = beforeSave;\n\n\tinjectTab( {\n\t\tid: 'components',\n\t\tlabel: __( 'Components', 'elementor' ),\n\t\tcomponent: Components,\n\t\tposition: 1,\n\t} );\n\n\tinjectIntoTop( {\n\t\tid: 'create-component-popup',\n\t\tcomponent: CreateComponentForm,\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'components-populate-store',\n\t\tcomponent: PopulateStore,\n\t} );\n\n\tinjectIntoTop( {\n\t\tid: 'edit-component',\n\t\tcomponent: EditComponent,\n\t} );\n\n\tinjectIntoPanelHeaderTop( {\n\t\tid: 'component-panel-header',\n\t\tcomponent: ComponentPanelHeader,\n\t} );\n\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tconst { id, config } = getV1CurrentDocument();\n\n\t\tif ( id ) {\n\t\t\tremoveComponentStyles( id );\n\t\t}\n\n\t\tawait loadComponentsAssets( ( config?.elements as V1ElementData[] ) ?? [] );\n\t} );\n\n\tregisterFieldIndicator( {\n\t\tfieldType: FIELD_TYPE.SETTINGS,\n\t\tid: 'component-overridable-prop',\n\t\tpriority: 1,\n\t\tindicator: OverridablePropIndicator,\n\t} );\n\n\tregisterControlReplacement( {\n\t\tid: OVERRIDABLE_PROP_REPLACEMENT_ID,\n\t\tcomponent: OverridablePropControl,\n\t\tcondition: ( { value } ) => componentOverridablePropTypeUtil.isValid( value ),\n\t} );\n\n\tregisterEditingPanelReplacement( {\n\t\tid: 'component-instance-edit-panel',\n\t\tcondition: ( _, elementType ) => elementType.key === 'e-component',\n\t\tcomponent: InstanceEditingPanel,\n\t} );\n\n\tsettingsTransformersRegistry.register( 'component-instance', componentInstanceTransformer );\n\tsettingsTransformersRegistry.register( 'overridable', componentOverridableTransformer );\n\tsettingsTransformersRegistry.register( 'override', componentOverrideTransformer );\n\n\tinitRegenerateOverrideKeys();\n\n\tinitCleanupOverridablePropsOnDelete();\n\n\tinitMcp();\n\n\tinitCircularNestingPrevention();\n\n\tinitNonAtomicNestingPrevention();\n\n\tinitLoadComponentDataAfterInstanceAdded();\n}\n","import { createTransformer } from '@elementor/editor-canvas';\nimport { __getState as getState } from '@elementor/store';\n\nimport { type ComponentInstanceOverrideProp } from './prop-types/component-instance-override-prop-type';\nimport { selectUnpublishedComponents } from './store/store';\nimport { getComponentDocumentData } from './utils/component-document-data';\n\nexport const componentInstanceTransformer = createTransformer(\n\tasync ( {\n\t\tcomponent_id: id,\n\t\toverrides: overridesValue,\n\t}: {\n\t\tcomponent_id: number | string;\n\t\toverrides?: ComponentInstanceOverrideProp[];\n\t} ) => {\n\t\tconst unpublishedComponents = selectUnpublishedComponents( getState() );\n\n\t\tconst unpublishedComponent = unpublishedComponents.find( ( { uid } ) => uid === id );\n\n\t\tconst overrides = overridesValue?.reduce( ( acc, override ) => ( { ...acc, ...override } ), {} );\n\n\t\tif ( unpublishedComponent ) {\n\t\t\treturn {\n\t\t\t\telements: structuredClone( unpublishedComponent.elements ),\n\t\t\t\toverrides,\n\t\t\t};\n\t\t}\n\n\t\tif ( typeof id !== 'number' ) {\n\t\t\tthrow new Error( `Component ID \"${ id }\" not valid.` );\n\t\t}\n\n\t\tconst data = await getComponentDocumentData( id );\n\n\t\treturn {\n\t\t\telements: data?.elements ?? [],\n\t\t\toverrides,\n\t\t};\n\t}\n);\n","import { type V1Document } from '@elementor/editor-documents';\nimport {\n\t__createSelector as createSelector,\n\t__createSlice as createSlice,\n\t__useSelector as useSelector,\n\ttype PayloadAction,\n\ttype SliceState,\n} from '@elementor/store';\n\nimport {\n\ttype Component,\n\ttype ComponentId,\n\ttype OverridableProps,\n\ttype PublishedComponent,\n\ttype StylesDefinition,\n\ttype UnpublishedComponent,\n} from '../types';\nimport { loadComponents } from './thunks';\n\ntype GetComponentResponse = PublishedComponent[];\n\ntype Status = 'idle' | 'pending' | 'error';\n\ntype ComponentsState = {\n\tdata: PublishedComponent[];\n\tunpublishedData: UnpublishedComponent[];\n\tloadStatus: Status;\n\tstyles: StylesDefinition;\n\tcreatedThisSession: Component[ 'uid' ][];\n\tarchivedThisSession: ComponentId[];\n\tpath: ComponentsPathItem[];\n\tcurrentComponentId: V1Document[ 'id' ] | null;\n\tupdatedComponentNames: Record< number, string >;\n};\n\nexport type ComponentsSlice = SliceState< typeof slice >;\n\nexport type ComponentsPathItem = {\n\tinstanceId?: string;\n\tinstanceTitle?: string;\n\tcomponentId: V1Document[ 'id' ];\n};\n\nexport const initialState: ComponentsState = {\n\tdata: [],\n\tunpublishedData: [],\n\tloadStatus: 'idle',\n\tstyles: {},\n\tcreatedThisSession: [],\n\tarchivedThisSession: [],\n\tpath: [],\n\tcurrentComponentId: null,\n\tupdatedComponentNames: {},\n};\n\nexport const SLICE_NAME = 'components';\n\nexport const slice = createSlice( {\n\tname: SLICE_NAME,\n\tinitialState,\n\treducers: {\n\t\tadd: ( state, { payload }: PayloadAction< PublishedComponent | PublishedComponent[] > ) => {\n\t\t\tif ( Array.isArray( payload ) ) {\n\t\t\t\tstate.data = [ ...payload, ...state.data ];\n\t\t\t} else {\n\t\t\t\tstate.data.unshift( payload );\n\t\t\t}\n\t\t},\n\t\tload: ( state, { payload }: PayloadAction< PublishedComponent[] > ) => {\n\t\t\tstate.data = payload;\n\t\t},\n\t\taddUnpublished: ( state, { payload }: PayloadAction< UnpublishedComponent > ) => {\n\t\t\tstate.unpublishedData.unshift( payload );\n\t\t},\n\t\tresetUnpublished: ( state ) => {\n\t\t\tstate.unpublishedData = [];\n\t\t},\n\t\tremoveStyles( state, { payload }: PayloadAction< { id: ComponentId } > ) {\n\t\t\tconst { [ payload.id ]: _, ...rest } = state.styles;\n\n\t\t\tstate.styles = rest;\n\t\t},\n\t\taddStyles: ( state, { payload } ) => {\n\t\t\tstate.styles = { ...state.styles, ...payload };\n\t\t},\n\t\taddCreatedThisSession: ( state, { payload }: PayloadAction< string > ) => {\n\t\t\tstate.createdThisSession.push( payload );\n\t\t},\n\t\tarchive: ( state, { payload }: PayloadAction< number > ) => {\n\t\t\tconst component = state.data.find( ( comp ) => comp.id === payload );\n\n\t\t\tif ( component ) {\n\t\t\t\tcomponent.isArchived = true;\n\t\t\t\tstate.archivedThisSession.push( payload );\n\t\t\t}\n\t\t},\n\t\tsetCurrentComponentId: ( state, { payload }: PayloadAction< V1Document[ 'id' ] | null > ) => {\n\t\t\tstate.currentComponentId = payload;\n\t\t},\n\t\tsetPath: ( state, { payload }: PayloadAction< ComponentsPathItem[] > ) => {\n\t\t\tstate.path = payload;\n\t\t},\n\t\tsetOverridableProps: (\n\t\t\tstate,\n\t\t\t{ payload }: PayloadAction< { componentId: ComponentId; overridableProps: OverridableProps } >\n\t\t) => {\n\t\t\tconst component = state.data.find( ( comp ) => comp.id === payload.componentId );\n\n\t\t\tif ( ! component ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcomponent.overridableProps = payload.overridableProps;\n\t\t},\n\t\trename: ( state, { payload }: PayloadAction< { componentUid: string; name: string } > ) => {\n\t\t\tconst component = state.data.find( ( comp ) => comp.uid === payload.componentUid );\n\n\t\t\tif ( ! component ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( component.id ) {\n\t\t\t\tstate.updatedComponentNames[ component.id ] = payload.name;\n\t\t\t}\n\t\t\tcomponent.name = payload.name;\n\t\t},\n\t\tcleanUpdatedComponentNames: ( state ) => {\n\t\t\tstate.updatedComponentNames = {};\n\t\t},\n\t},\n\textraReducers: ( builder ) => {\n\t\tbuilder.addCase( loadComponents.fulfilled, ( state, { payload }: PayloadAction< GetComponentResponse > ) => {\n\t\t\tstate.data = payload;\n\t\t\tstate.loadStatus = 'idle';\n\t\t} );\n\t\tbuilder.addCase( loadComponents.pending, ( state ) => {\n\t\t\tstate.loadStatus = 'pending';\n\t\t} );\n\t\tbuilder.addCase( loadComponents.rejected, ( state ) => {\n\t\t\tstate.loadStatus = 'error';\n\t\t} );\n\t},\n} );\n\nconst selectData = ( state: ComponentsSlice ) => state[ SLICE_NAME ].data;\nexport const selectArchivedThisSession = ( state: ComponentsSlice ) => state[ SLICE_NAME ].archivedThisSession;\nconst selectLoadStatus = ( state: ComponentsSlice ) => state[ SLICE_NAME ].loadStatus;\nconst selectStylesDefinitions = ( state: ComponentsSlice ) => state[ SLICE_NAME ].styles ?? {};\nconst selectUnpublishedData = ( state: ComponentsSlice ) => state[ SLICE_NAME ].unpublishedData;\nconst getCreatedThisSession = ( state: ComponentsSlice ) => state[ SLICE_NAME ].createdThisSession;\nconst getPath = ( state: ComponentsSlice ) => state[ SLICE_NAME ].path;\nconst getCurrentComponentId = ( state: ComponentsSlice ) => state[ SLICE_NAME ].currentComponentId;\nexport const selectComponent = ( state: ComponentsSlice, componentId: ComponentId ) =>\n\tstate[ SLICE_NAME ].data.find( ( component ) => component.id === componentId );\nexport const useComponent = ( componentId: ComponentId | null ) => {\n\treturn useSelector( ( state: ComponentsSlice ) => ( componentId ? selectComponent( state, componentId ) : null ) );\n};\n\nexport const selectComponentByUid = ( state: ComponentsSlice, componentUid: string ) =>\n\tstate[ SLICE_NAME ].data.find( ( component ) => component.uid === componentUid ) ??\n\tstate[ SLICE_NAME ].unpublishedData.find( ( component ) => component.uid === componentUid );\n\nexport const selectComponents = createSelector(\n\tselectData,\n\tselectUnpublishedData,\n\t( data: PublishedComponent[], unpublishedData: UnpublishedComponent[] ) => [\n\t\t...unpublishedData.map( ( item ) => ( {\n\t\t\tuid: item.uid,\n\t\t\tname: item.name,\n\t\t\toverridableProps: item.overridableProps,\n\t\t} ) ),\n\t\t...data.filter( ( component ) => ! component.isArchived ),\n\t]\n);\nexport const selectUnpublishedComponents = createSelector(\n\tselectUnpublishedData,\n\t( unpublishedData: UnpublishedComponent[] ) => unpublishedData\n);\nexport const selectLoadIsPending = createSelector( selectLoadStatus, ( status ) => status === 'pending' );\nexport const selectLoadIsError = createSelector( selectLoadStatus, ( status ) => status === 'error' );\nexport const selectStyles = ( state: ComponentsSlice ) => state[ SLICE_NAME ].styles ?? {};\nexport const selectFlatStyles = createSelector( selectStylesDefinitions, ( data ) => Object.values( data ).flat() );\nexport const selectCreatedThisSession = createSelector(\n\tgetCreatedThisSession,\n\t( createdThisSession ) => createdThisSession\n);\n\nconst DEFAULT_OVERRIDABLE_PROPS: OverridableProps = {\n\tprops: {},\n\tgroups: {\n\t\titems: {},\n\t\torder: [],\n\t},\n};\n\nexport const selectOverridableProps = createSelector(\n\tselectComponent,\n\t( component: PublishedComponent | undefined ) => {\n\t\tif ( ! component ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn component.overridableProps ?? DEFAULT_OVERRIDABLE_PROPS;\n\t}\n);\nexport const useOverridableProps = ( componentId: ComponentId | null ) => {\n\treturn useSelector( ( state: ComponentsSlice ) =>\n\t\tcomponentId ? selectOverridableProps( state, componentId ) : null\n\t);\n};\nexport const selectIsOverridablePropsLoaded = createSelector(\n\tselectComponent,\n\t( component: PublishedComponent | undefined ) => {\n\t\treturn !! component?.overridableProps;\n\t}\n);\nexport const selectPath = createSelector( getPath, ( path ) => path );\n\nexport const selectCurrentComponentId = createSelector(\n\tgetCurrentComponentId,\n\t( currentComponentId ) => currentComponentId\n);\n\nexport const selectCurrentComponent = createSelector( selectData, getCurrentComponentId, ( data, currentComponentId ) =>\n\tdata.find( ( component ) => component.id === currentComponentId )\n);\n\nexport const useCurrentComponentId = () => {\n\treturn useSelector( selectCurrentComponentId );\n};\nexport const useCurrentComponent = () => {\n\treturn useSelector( selectCurrentComponent );\n};\n\nexport const selectUpdatedComponentNames = createSelector(\n\t( state: ComponentsSlice ) => state[ SLICE_NAME ].updatedComponentNames,\n\t( updatedComponentNames ) =>\n\t\tObject.entries( updatedComponentNames ).map( ( [ componentId, title ] ) => ( {\n\t\t\tcomponentId: Number( componentId ),\n\t\t\ttitle,\n\t\t} ) )\n);\n","import { __createAsyncThunk as createAsyncThunk } from '@elementor/store';\n\nimport { apiClient } from '../api';\n\nconst loadComponents = createAsyncThunk( 'components/load', async () => {\n\tconst response = await apiClient.get();\n\treturn response;\n} );\n\nexport { loadComponents };\n","import { type V1ElementData } from '@elementor/editor-elements';\nimport { ajax } from '@elementor/editor-v1-adapters';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\n\nimport {\n\ttype DocumentSaveStatus,\n\ttype OverridableProps,\n\ttype PublishedComponent,\n\ttype UpdatedComponentName,\n} from './types';\n\nconst BASE_URL = 'elementor/v1/components';\n\nexport type ComponentItems = Array< {\n\tuid: string;\n\ttitle: string;\n\telements: V1ElementData[];\n\tsettings?: {\n\t\toverridable_props?: OverridableProps;\n\t};\n} >;\n\nexport type CreateComponentPayload = {\n\tstatus: DocumentSaveStatus;\n\titems: ComponentItems;\n};\n\ntype ComponentLockStatusResponse = {\n\tis_current_user_allow_to_edit: boolean;\n\tlocked_by: string;\n};\n\ntype GetComponentResponse = Array< PublishedComponent >;\n\nexport type CreateComponentResponse = Record< string, number >;\n\nexport type ValidateComponentsPayload = {\n\titems: ComponentItems;\n};\n\nexport type ValidateComponentsResponse = {\n\tcode: string;\n\tmessage: string;\n\tdata: {\n\t\tstatus: number;\n\t\tmeta: Record< string, unknown >;\n\t};\n};\n\nexport const getParams = ( id: number ) => ( {\n\taction: 'get_document_config',\n\tunique_id: `document-config-${ id }`,\n\tdata: { id },\n} );\n\nexport const apiClient = {\n\tget: () =>\n\t\thttpService()\n\t\t\t.get< HttpResponse< GetComponentResponse > >( `${ BASE_URL }` )\n\t\t\t.then( ( res ) => res.data.data ),\n\tcreate: ( payload: CreateComponentPayload ) =>\n\t\thttpService()\n\t\t\t.post< HttpResponse< CreateComponentResponse > >( `${ BASE_URL }`, payload )\n\t\t\t.then( ( res ) => res.data.data ),\n\tupdateStatuses: ( ids: number[], status: DocumentSaveStatus ) =>\n\t\thttpService().put( `${ BASE_URL }/status`, {\n\t\t\tids,\n\t\t\tstatus,\n\t\t} ),\n\tgetComponentConfig: ( id: number ) => ajax.load< { id: number }, V1ElementData >( getParams( id ) ),\n\tinvalidateComponentConfigCache: ( id: number ) => ajax.invalidateCache< { id: number } >( getParams( id ) ),\n\tgetComponentLockStatus: async ( componentId: number ) =>\n\t\tawait httpService()\n\t\t\t.get< { data: ComponentLockStatusResponse } >( `${ BASE_URL }/lock-status`, {\n\t\t\t\tparams: {\n\t\t\t\t\tcomponentId,\n\t\t\t\t},\n\t\t\t} )\n\t\t\t.then( ( res ) => {\n\t\t\t\tconst { is_current_user_allow_to_edit: isAllowedToSwitchDocument, locked_by: lockedBy } = res.data.data;\n\t\t\t\treturn { isAllowedToSwitchDocument, lockedBy: lockedBy || '' };\n\t\t\t} ),\n\tlockComponent: async ( componentId: number ) =>\n\t\tawait httpService()\n\t\t\t.post< { success: boolean } >( `${ BASE_URL }/lock`, {\n\t\t\t\tcomponentId,\n\t\t\t} )\n\t\t\t.then( ( res ) => res.data ),\n\tunlockComponent: async ( componentId: number ) =>\n\t\tawait httpService()\n\t\t\t.post< { success: boolean } >( `${ BASE_URL }/unlock`, {\n\t\t\t\tcomponentId,\n\t\t\t} )\n\t\t\t.then( ( res ) => res.data ),\n\tgetOverridableProps: async ( componentId: number ) =>\n\t\tawait httpService()\n\t\t\t.get< HttpResponse< OverridableProps > >( `${ BASE_URL }/overridable-props`, {\n\t\t\t\tparams: {\n\t\t\t\t\tcomponentId: componentId.toString(),\n\t\t\t\t},\n\t\t\t} )\n\t\t\t.then( ( res ) => res.data.data ),\n\tupdateArchivedComponents: async ( componentIds: number[] ) =>\n\t\tawait httpService()\n\t\t\t.post< { data: { failedIds: number[]; successIds: number[]; success: boolean } } >(\n\t\t\t\t`${ BASE_URL }/archive`,\n\t\t\t\t{\n\t\t\t\t\tcomponentIds,\n\t\t\t\t}\n\t\t\t)\n\t\t\t.then( ( res ) => res.data.data ),\n\tupdateComponentTitle: ( updatedComponentNames: UpdatedComponentName[] ) =>\n\t\thttpService()\n\t\t\t.post< { data: { failedIds: number[]; successIds: number[]; success: boolean } } >(\n\t\t\t\t`${ BASE_URL }/update-titles`,\n\t\t\t\t{\n\t\t\t\t\tcomponents: updatedComponentNames,\n\t\t\t\t}\n\t\t\t)\n\t\t\t.then( ( res ) => res.data.data ),\n\tvalidate: async ( payload: ValidateComponentsPayload ) =>\n\t\tawait httpService()\n\t\t\t.post< HttpResponse< ValidateComponentsResponse > >( `${ BASE_URL }/create-validate`, payload )\n\t\t\t.then( ( res ) => res.data ),\n};\n","import { type Document, getV1DocumentsManager } from '@elementor/editor-documents';\n\ntype ComponentDocumentData = Document;\n\nexport const getComponentDocumentData = async ( id: number ) => {\n\tconst documentManager = getV1DocumentsManager();\n\n\ttry {\n\t\treturn await documentManager.request< ComponentDocumentData >( id );\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nexport const invalidateComponentDocumentData = ( id: number ) => {\n\tconst documentManager = getV1DocumentsManager();\n\n\tdocumentManager.invalidateCache( id );\n};\n","import { createTransformer, settingsTransformersRegistry, type TransformerOptions } from '@elementor/editor-canvas';\nimport { type PropValue, type TransformablePropValue } from '@elementor/editor-props';\n\nimport { type ComponentOverridable } from './types';\n\nexport const componentOverridableTransformer = createTransformer(\n\t( value: ComponentOverridable, options: TransformerOptions ) => {\n\t\tconst { overrides } = options.renderContext ?? {};\n\n\t\tconst overrideValue = overrides?.[ value.override_key as keyof typeof overrides ];\n\n\t\tif ( overrideValue ) {\n\t\t\tconst isOverride = isOriginValueOverride( value.origin_value );\n\n\t\t\tif ( isOverride ) {\n\t\t\t\treturn transformOverride( value, options, overrideValue );\n\t\t\t}\n\n\t\t\treturn overrideValue;\n\t\t}\n\n\t\treturn value.origin_value;\n\t}\n);\n\nfunction transformOverride(\n\tvalue: ComponentOverridable,\n\toptions: {\n\t\tkey: string;\n\t},\n\toverrideValue: PropValue\n) {\n\tconst transformer = settingsTransformersRegistry.get( 'override' );\n\n\tif ( ! transformer ) {\n\t\treturn null;\n\t}\n\n\tconst transformedValue = transformer( value.origin_value.value, options );\n\n\tif ( ! transformedValue ) {\n\t\treturn null;\n\t}\n\n\tconst [ key ] = Object.keys( transformedValue as Record< string, unknown > );\n\n\treturn {\n\t\t[ key ]: overrideValue,\n\t};\n}\n\nfunction isOriginValueOverride( originValue: TransformablePropValue< string > ): boolean {\n\treturn originValue.$$type === 'override';\n}\n","import { createTransformer } from '@elementor/editor-canvas';\n\nimport { type ComponentInstanceOverridePropValue } from './prop-types/component-instance-override-prop-type';\n\nexport const componentOverrideTransformer = createTransformer( ( override: ComponentInstanceOverridePropValue ) => {\n\tconst { override_key: key, override_value: overrideValue } = override;\n\n\treturn { [ key ]: overrideValue };\n} );\n","import * as React from 'react';\nimport { useSuppressedMessage } from '@elementor/editor-current-user';\nimport { getV1DocumentsManager } from '@elementor/editor-documents';\nimport { ArrowLeftIcon, ComponentsFilledIcon } from '@elementor/icons';\nimport { __getState as getState } from '@elementor/store';\nimport { Box, Divider, IconButton, Stack, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useNavigateBack } from '../../hooks/use-navigate-back';\nimport { type ComponentsSlice, SLICE_NAME, useCurrentComponent } from '../../store/store';\nimport { trackComponentEvent } from '../../utils/tracking';\nimport { usePanelActions } from '../component-properties-panel/component-properties-panel';\nimport { ComponentIntroduction } from '../components-tab/component-introduction';\nimport { ComponentsBadge } from './component-badge';\nimport { useOverridableProps } from './use-overridable-props';\n\nconst MESSAGE_KEY = 'components-properties-introduction';\n\nexport const ComponentPanelHeader = () => {\n\tconst { id: currentComponentId, uid: componentUid } = useCurrentComponent() ?? { id: null, uid: null };\n\tconst overridableProps = useOverridableProps( currentComponentId );\n\tconst onBack = useNavigateBack();\n\tconst componentName = getComponentName();\n\tconst [ isMessageSuppressed, suppressMessage ] = useSuppressedMessage( MESSAGE_KEY );\n\tconst [ shouldShowIntroduction, setShouldShowIntroduction ] = React.useState( ! isMessageSuppressed );\n\n\tconst { open: openPropertiesPanel } = usePanelActions();\n\n\tconst overridablePropsCount = overridableProps ? Object.keys( overridableProps.props ).length : 0;\n\tconst anchorRef = React.useRef< HTMLDivElement >( null );\n\n\tif ( ! currentComponentId ) {\n\t\treturn null;\n\t}\n\n\tconst handleCloseIntroduction = () => {\n\t\tsuppressMessage();\n\t\tsetShouldShowIntroduction( false );\n\t};\n\n\tconst handleOpenPropertiesPanel = () => {\n\t\topenPropertiesPanel();\n\n\t\ttrackComponentEvent( {\n\t\t\taction: 'propertiesPanelOpened',\n\t\t\tsource: 'user',\n\t\t\tcomponent_uid: componentUid,\n\t\t\tproperties_count: overridablePropsCount,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Box>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tjustifyContent=\"space-between\"\n\t\t\t\tsx={ { height: 48, pl: 1.5, pr: 2, py: 1 } }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\">\n\t\t\t\t\t<Tooltip title={ __( 'Back', 'elementor' ) }>\n\t\t\t\t\t\t<IconButton size=\"tiny\" onClick={ onBack } aria-label={ __( 'Back', 'elementor' ) }>\n\t\t\t\t\t\t\t<ArrowLeftIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 0.5 }>\n\t\t\t\t\t\t<ComponentsFilledIcon fontSize=\"tiny\" stroke=\"currentColor\" />\n\t\t\t\t\t\t<Typography variant=\"caption\" sx={ { fontWeight: 500 } }>\n\t\t\t\t\t\t\t{ componentName }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Stack>\n\t\t\t\t<ComponentsBadge\n\t\t\t\t\toverridablePropsCount={ overridablePropsCount }\n\t\t\t\t\tref={ anchorRef }\n\t\t\t\t\tonClick={ handleOpenPropertiesPanel }\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t\t<Divider />\n\t\t\t<ComponentIntroduction\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tshouldShowIntroduction={ shouldShowIntroduction }\n\t\t\t\tonClose={ handleCloseIntroduction }\n\t\t\t/>\n\t\t</Box>\n\t);\n};\n\nfunction getComponentName(): string {\n\tconst state = getState() as ComponentsSlice;\n\tconst path = state[ SLICE_NAME ].path;\n\tconst { instanceTitle } = path.at( -1 ) ?? {};\n\n\tif ( instanceTitle ) {\n\t\treturn instanceTitle;\n\t}\n\n\tconst documentsManager = getV1DocumentsManager();\n\tconst currentDocument = documentsManager.getCurrent();\n\n\treturn currentDocument?.container?.settings?.get( 'post_title' ) ?? '';\n}\n","import { useCallback } from 'react';\nimport { getV1DocumentsManager } from '@elementor/editor-documents';\nimport { __useSelector as useSelector } from '@elementor/store';\n\nimport { selectPath } from '../store/store';\nimport { switchToComponent } from '../utils/switch-to-component';\n\nexport function useNavigateBack() {\n\tconst path = useSelector( selectPath );\n\n\tconst documentsManager = getV1DocumentsManager();\n\n\treturn useCallback( () => {\n\t\tconst { componentId: prevComponentId, instanceId: prevComponentInstanceId } = path.at( -2 ) ?? {};\n\n\t\tif ( prevComponentId && prevComponentInstanceId ) {\n\t\t\tswitchToComponent( prevComponentId, prevComponentInstanceId );\n\n\t\t\treturn;\n\t\t}\n\n\t\tswitchToComponent( documentsManager.getInitialId() );\n\t}, [ path, documentsManager ] );\n}\n","import { getCurrentDocumentContainer, selectElement } from '@elementor/editor-elements';\nimport { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { expandNavigator } from './expand-navigator';\n\nexport async function switchToComponent(\n\tcomponentId: number | string,\n\tcomponentInstanceId?: string | null,\n\telement?: HTMLElement | null\n) {\n\tconst selector = getSelector( element, componentInstanceId );\n\n\tawait runCommand( 'editor/documents/switch', {\n\t\tid: componentId,\n\t\tselector,\n\t\tmode: 'autosave',\n\t\tsetAsInitial: false,\n\t\tshouldScroll: false,\n\t} );\n\n\tconst currentDocumentContainer = getCurrentDocumentContainer();\n\tconst topLevelElement = currentDocumentContainer?.children?.[ 0 ];\n\n\tif ( topLevelElement ) {\n\t\tselectElement( topLevelElement.id );\n\t\texpandNavigator();\n\t}\n}\n\nfunction getSelector( element?: HTMLElement | null, componentInstanceId?: string | null ): string | undefined {\n\tif ( element ) {\n\t\treturn buildUniqueSelector( element );\n\t}\n\n\tif ( componentInstanceId ) {\n\t\treturn `[data-id=\"${ componentInstanceId }\"]`;\n\t}\n\n\treturn undefined;\n}\n\nexport function buildUniqueSelector( element: HTMLElement ): string {\n\tconst selectors: string[] = [];\n\tlet current = element.closest< HTMLElement >( '[data-id]' );\n\n\twhile ( current ) {\n\t\tconst dataId = current.dataset.id;\n\t\tconst isComponentInstance = current.hasAttribute( 'data-elementor-id' );\n\n\t\tif ( isComponentInstance ) {\n\t\t\tselectors.unshift( `[data-id=\"${ dataId }\"]` );\n\t\t}\n\n\t\tcurrent = current.parentElement?.closest( '[data-id]' ) ?? null;\n\t}\n\n\tif ( selectors.length === 0 ) {\n\t\tconst closestElement = element.closest< HTMLElement >( '[data-id]' );\n\n\t\tif ( closestElement?.dataset?.id ) {\n\t\t\treturn `[data-id=\"${ closestElement.dataset.id }\"]`;\n\t\t}\n\t}\n\n\treturn selectors.join( ' ' );\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nexport async function expandNavigator() {\n\tawait runCommand( 'navigator/expand-all' );\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport { getMixpanel } from '@elementor/mixpanel';\nimport { __getState as getState } from '@elementor/store';\n\nimport { selectCreatedThisSession } from '../store/store';\nimport { type ExtendedWindow } from '../types';\n\nexport type Source = 'user' | 'mcp_tool';\n\ntype ComponentEventData = Record< string, unknown > & {\n\taction:\n\t\t| 'createClicked'\n\t\t| 'created'\n\t\t| 'createCancelled'\n\t\t| 'instanceAdded'\n\t\t| 'edited'\n\t\t| 'propertyExposed'\n\t\t| 'propertyRemoved'\n\t\t| 'propertiesPanelOpened'\n\t\t| 'propertiesGroupCreated';\n\tsource: Source;\n};\n\nconst FEATURE_NAME = 'Components';\n\nexport const trackComponentEvent = ( { action, source, ...data }: ComponentEventData ) => {\n\tconst { dispatchEvent, config } = getMixpanel();\n\tif ( ! config?.names?.components?.[ action ] ) {\n\t\treturn;\n\t}\n\n\tconst name = config.names.components[ action ];\n\tdispatchEvent?.( name, { ...data, source, 'Feature name': FEATURE_NAME } );\n};\n\nexport const onElementDrop = ( _args: unknown, element: V1Element ) => {\n\tif ( ! ( element?.model?.get( 'widgetType' ) === 'e-component' ) ) {\n\t\treturn;\n\t}\n\n\tconst editorSettings = element.model.get( 'editor_settings' );\n\tconst componentName = editorSettings?.title;\n\tconst componentUID = editorSettings?.component_uid;\n\tconst instanceId = element.id;\n\n\tconst createdThisSession = selectCreatedThisSession( getState() );\n\tconst isSameSessionReuse = componentUID && createdThisSession.includes( componentUID );\n\n\tconst eventsManagerConfig = ( window as unknown as ExtendedWindow ).elementorCommon.eventsManager.config;\n\tconst { locations, secondaryLocations } = eventsManagerConfig;\n\n\ttrackComponentEvent( {\n\t\taction: 'instanceAdded',\n\t\tsource: 'user',\n\t\tinstance_id: instanceId,\n\t\tcomponent_uid: componentUID,\n\t\tcomponent_name: componentName,\n\t\tis_same_session_reuse: isSameSessionReuse,\n\t\tlocation: locations.widgetPanel,\n\t\tsecondary_location: secondaryLocations.componentsTab,\n\t} );\n};\n","import * as React from 'react';\nimport { ElementProvider, usePanelActions as useEditingPanelActions } from '@elementor/editor-editing-panel';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { __createPanel as createPanel, Panel } from '@elementor/editor-panels';\nimport { ThemeProvider } from '@elementor/editor-ui';\nimport { Alert, Box, ErrorBoundary } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ComponentPropertiesPanelContent } from './component-properties-panel-content';\n\nconst id = 'component-properties-panel';\n\nexport const { panel, usePanelActions } = createPanel( {\n\tid,\n\tcomponent: ComponentPropertiesPanel,\n} );\n\nfunction ComponentPropertiesPanel() {\n\tconst { element, elementType } = useSelectedElement();\n\tconst { close: closePanel } = usePanelActions();\n\tconst { open: openEditingPanel } = useEditingPanelActions();\n\n\tif ( ! element || ! elementType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<ErrorBoundary fallback={ <ErrorBoundaryFallback /> }>\n\t\t\t\t<ElementProvider element={ element } elementType={ elementType }>\n\t\t\t\t\t<Panel>\n\t\t\t\t\t\t<ComponentPropertiesPanelContent\n\t\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\t\tclosePanel();\n\t\t\t\t\t\t\t\topenEditingPanel();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Panel>\n\t\t\t\t</ElementProvider>\n\t\t\t</ErrorBoundary>\n\t\t</ThemeProvider>\n\t);\n}\n\nconst ErrorBoundaryFallback = () => (\n\t<Box role=\"alert\" sx={ { minHeight: '100%', p: 2 } }>\n\t\t<Alert severity=\"error\" sx={ { mb: 2, maxWidth: 400, textAlign: 'center' } }>\n\t\t\t<strong>{ __( 'Something went wrong', 'elementor' ) }</strong>\n\t\t</Alert>\n\t</Box>\n);\n","import * as React from 'react';\nimport { useMemo, useRef, useState } from 'react';\nimport { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { ComponentPropListIcon, FolderPlusIcon, XIcon } from '@elementor/icons';\nimport { Divider, IconButton, List, Stack, Tooltip } from '@elementor/ui';\nimport { generateUniqueId } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { addOverridableGroup } from '../../store/actions/add-overridable-group';\nimport { deleteOverridableGroup } from '../../store/actions/delete-overridable-group';\nimport { deleteOverridableProp } from '../../store/actions/delete-overridable-prop';\nimport { reorderGroupProps } from '../../store/actions/reorder-group-props';\nimport { reorderOverridableGroups } from '../../store/actions/reorder-overridable-groups';\nimport { updateOverridablePropParams } from '../../store/actions/update-overridable-prop-params';\nimport { useCurrentComponentId } from '../../store/store';\nimport { useOverridableProps } from '../component-panel-header/use-overridable-props';\nimport { PropertiesEmptyState } from './properties-empty-state';\nimport { PropertiesGroup } from './properties-group';\nimport { SortableItem, SortableProvider } from './sortable';\nimport { useCurrentEditableItem } from './use-current-editable-item';\nimport { generateUniqueLabel } from './utils/generate-unique-label';\n\ntype Props = {\n\tonClose: () => void;\n};\n\nexport function ComponentPropertiesPanelContent( { onClose }: Props ) {\n\tconst currentComponentId = useCurrentComponentId();\n\tconst overridableProps = useOverridableProps( currentComponentId );\n\tconst [ isAddingGroup, setIsAddingGroup ] = useState( false );\n\tconst introductionRef = useRef< HTMLButtonElement >( null );\n\tconst groupLabelEditable = useCurrentEditableItem();\n\n\tconst groups = useMemo( () => {\n\t\tif ( ! overridableProps ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn overridableProps.groups.order\n\t\t\t.map( ( groupId ) => overridableProps.groups.items[ groupId ] ?? null )\n\t\t\t.filter( Boolean );\n\t}, [ overridableProps ] );\n\n\tconst allGroupsForSelect = useMemo(\n\t\t() => groups.map( ( group ) => ( { value: group.id, label: group.label } ) ),\n\t\t[ groups ]\n\t);\n\n\tif ( ! currentComponentId || ! overridableProps ) {\n\t\treturn null;\n\t}\n\n\tconst hasGroups = groups.length > 0;\n\tconst showEmptyState = ! hasGroups && ! isAddingGroup;\n\tconst groupIds = overridableProps.groups.order;\n\n\tconst handleAddGroupClick = () => {\n\t\tif ( isAddingGroup ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newGroupId = generateUniqueId( 'group' );\n\t\tconst newLabel = generateUniqueLabel( groups );\n\n\t\taddOverridableGroup( {\n\t\t\tcomponentId: currentComponentId,\n\t\t\tgroupId: newGroupId,\n\t\t\tlabel: newLabel,\n\t\t\tsource: 'user',\n\t\t} );\n\t\tsetDocumentModifiedStatus( true );\n\t\tsetIsAddingGroup( false );\n\n\t\tgroupLabelEditable.setEditingGroupId( newGroupId );\n\t};\n\n\tconst handleGroupsReorder = ( newOrder: string[] ) => {\n\t\treorderOverridableGroups( { componentId: currentComponentId, newOrder } );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst handlePropsReorder = ( groupId: string, newPropsOrder: string[] ) => {\n\t\treorderGroupProps( { componentId: currentComponentId, groupId, newPropsOrder } );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst handlePropertyDelete = ( propKey: string ) => {\n\t\tdeleteOverridableProp( { componentId: currentComponentId, propKey, source: 'user' } );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst handlePropertyUpdate = ( overrideKey: string, data: { label: string; group: string | null } ) => {\n\t\tupdateOverridablePropParams( {\n\t\t\tcomponentId: currentComponentId,\n\t\t\toverrideKey,\n\t\t\tlabel: data.label,\n\t\t\tgroupId: data.group,\n\t\t} );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst handleGroupDelete = ( groupId: string ) => {\n\t\tdeleteOverridableGroup( { componentId: currentComponentId, groupId } );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<PanelHeader sx={ { justifyContent: 'start', pl: 1.5, pr: 1, py: 1 } }>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 0.5 } flexGrow={ 1 }>\n\t\t\t\t\t<ComponentPropListIcon fontSize=\"tiny\" />\n\t\t\t\t\t<PanelHeaderTitle variant=\"subtitle2\">\n\t\t\t\t\t\t{ __( 'Component properties', 'elementor' ) }\n\t\t\t\t\t</PanelHeaderTitle>\n\t\t\t\t</Stack>\n\n\t\t\t\t{ ! showEmptyState && (\n\t\t\t\t\t<Tooltip title={ __( 'Add new group', 'elementor' ) }>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\taria-label={ __( 'Add new group', 'elementor' ) }\n\t\t\t\t\t\t\tonClick={ handleAddGroupClick }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FolderPlusIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) }\n\n\t\t\t\t<Tooltip title={ __( 'Close panel', 'elementor' ) }>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tref={ introductionRef }\n\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\taria-label={ __( 'Close panel', 'elementor' ) }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t>\n\t\t\t\t\t\t<XIcon fontSize=\"tiny\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t</PanelHeader>\n\n\t\t\t<Divider />\n\n\t\t\t<PanelBody>\n\t\t\t\t{ showEmptyState ? (\n\t\t\t\t\t<PropertiesEmptyState introductionRef={ introductionRef } />\n\t\t\t\t) : (\n\t\t\t\t\t<List sx={ { p: 2, display: 'flex', flexDirection: 'column', gap: 2 } }>\n\t\t\t\t\t\t<SortableProvider value={ groupIds } onChange={ handleGroupsReorder }>\n\t\t\t\t\t\t\t{ groups.map( ( group ) => (\n\t\t\t\t\t\t\t\t<SortableItem key={ group.id } id={ group.id }>\n\t\t\t\t\t\t\t\t\t{ ( { triggerProps, triggerStyle, isDragPlaceholder } ) => (\n\t\t\t\t\t\t\t\t\t\t<PropertiesGroup\n\t\t\t\t\t\t\t\t\t\t\tgroup={ group }\n\t\t\t\t\t\t\t\t\t\t\tprops={ overridableProps.props }\n\t\t\t\t\t\t\t\t\t\t\tallGroups={ allGroupsForSelect }\n\t\t\t\t\t\t\t\t\t\t\tallGroupsRecord={ overridableProps.groups.items }\n\t\t\t\t\t\t\t\t\t\t\tsortableTriggerProps={ { ...triggerProps, style: triggerStyle } }\n\t\t\t\t\t\t\t\t\t\t\tisDragPlaceholder={ isDragPlaceholder }\n\t\t\t\t\t\t\t\t\t\t\tsetIsAddingGroup={ setIsAddingGroup }\n\t\t\t\t\t\t\t\t\t\t\tonPropsReorder={ ( newOrder ) => handlePropsReorder( group.id, newOrder ) }\n\t\t\t\t\t\t\t\t\t\t\tonPropertyDelete={ handlePropertyDelete }\n\t\t\t\t\t\t\t\t\t\t\tonPropertyUpdate={ handlePropertyUpdate }\n\t\t\t\t\t\t\t\t\t\t\teditableLabelProps={ groupLabelEditable }\n\t\t\t\t\t\t\t\t\t\t\tonGroupDelete={ handleGroupDelete }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</SortableProvider>\n\t\t\t\t\t</List>\n\t\t\t\t) }\n\t\t\t</PanelBody>\n\t\t</>\n\t);\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId, type OverridablePropsGroup } from '../../types';\nimport { type Source, trackComponentEvent } from '../../utils/tracking';\nimport { selectCurrentComponent, selectOverridableProps, slice } from '../store';\n\ntype AddGroupParams = {\n\tcomponentId: ComponentId;\n\tgroupId: string;\n\tlabel: string;\n\tsource: Source;\n};\n\nexport function addOverridableGroup( {\n\tcomponentId,\n\tgroupId,\n\tlabel,\n\tsource,\n}: AddGroupParams ): OverridablePropsGroup | undefined {\n\tconst currentComponent = selectCurrentComponent( getState() );\n\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst newGroup: OverridablePropsGroup = {\n\t\tid: groupId,\n\t\tlabel,\n\t\tprops: [],\n\t};\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: {\n\t\t\t\t\t...overridableProps.groups,\n\t\t\t\t\titems: {\n\t\t\t\t\t\t...overridableProps.groups.items,\n\t\t\t\t\t\t[ groupId ]: newGroup,\n\t\t\t\t\t},\n\t\t\t\t\torder: [ groupId, ...overridableProps.groups.order ],\n\t\t\t\t},\n\t\t\t},\n\t\t} )\n\t);\n\n\ttrackComponentEvent( {\n\t\taction: 'propertiesGroupCreated',\n\t\tsource,\n\t\tcomponent_uid: currentComponent?.uid,\n\t\tgroup_name: label,\n\t} );\n\n\treturn newGroup;\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\nimport { deleteGroup } from '../utils/groups-transformers';\n\ntype DeleteGroupParams = {\n\tcomponentId: ComponentId;\n\tgroupId: string;\n};\n\nexport function deleteOverridableGroup( { componentId, groupId }: DeleteGroupParams ): boolean {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn false;\n\t}\n\n\tconst group = overridableProps.groups.items[ groupId ];\n\n\tif ( ! group || group.props.length > 0 ) {\n\t\treturn false;\n\t}\n\n\tconst updatedGroups = deleteGroup( overridableProps.groups, groupId );\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: updatedGroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\treturn true;\n}\n","import { generateUniqueId } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { type OverridableProp, type OverridableProps, type OverridablePropsGroup } from '../../types';\n\ntype Groups = OverridableProps[ 'groups' ];\n\nexport function removePropFromAllGroups( groups: Groups, propKey: string ): Groups {\n\treturn {\n\t\t...groups,\n\t\titems: Object.fromEntries(\n\t\t\tObject.entries( groups.items ).map( ( [ groupId, group ] ) => [\n\t\t\t\tgroupId,\n\t\t\t\t{\n\t\t\t\t\t...group,\n\t\t\t\t\tprops: group.props.filter( ( p ) => p !== propKey ),\n\t\t\t\t},\n\t\t\t] )\n\t\t),\n\t};\n}\n\nexport function addPropToGroup( groups: Groups, groupId: string, propKey: string ): Groups {\n\tconst group = groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn groups;\n\t}\n\n\tif ( group.props.includes( propKey ) ) {\n\t\treturn groups;\n\t}\n\n\treturn {\n\t\t...groups,\n\t\titems: {\n\t\t\t...groups.items,\n\t\t\t[ groupId ]: {\n\t\t\t\t...group,\n\t\t\t\tprops: [ ...group.props, propKey ],\n\t\t\t},\n\t\t},\n\t};\n}\n\nexport function movePropBetweenGroups(\n\tgroups: Groups,\n\tpropKey: string,\n\tfromGroupId: string,\n\ttoGroupId: string\n): Groups {\n\tif ( fromGroupId === toGroupId ) {\n\t\treturn groups;\n\t}\n\n\tconst withoutProp = removePropFromGroup( groups, fromGroupId, propKey );\n\treturn addPropToGroup( withoutProp, toGroupId, propKey );\n}\n\nexport function removePropFromGroup( groups: Groups, groupId: string, propKey: string ): Groups {\n\tconst group = groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn groups;\n\t}\n\n\treturn {\n\t\t...groups,\n\t\titems: {\n\t\t\t...groups.items,\n\t\t\t[ groupId ]: {\n\t\t\t\t...group,\n\t\t\t\tprops: group.props.filter( ( p ) => p !== propKey ),\n\t\t\t},\n\t\t},\n\t};\n}\n\ntype ResolvedGroup = {\n\tgroups: Groups;\n\tgroupId: string;\n};\n\nexport function resolveOrCreateGroup( groups: Groups, requestedGroupId?: string ): ResolvedGroup {\n\tif ( requestedGroupId && groups.items[ requestedGroupId ] ) {\n\t\treturn { groups, groupId: requestedGroupId };\n\t}\n\n\tif ( ! requestedGroupId && groups.order.length > 0 ) {\n\t\treturn { groups, groupId: groups.order[ 0 ] };\n\t}\n\n\treturn createGroup( groups, requestedGroupId );\n}\n\nexport function createGroup( groups: Groups, groupId?: string, label?: string ): ResolvedGroup {\n\tconst newGroupId = groupId || generateUniqueId( 'group' );\n\tconst newLabel = label || __( 'Default', 'elementor' );\n\n\treturn {\n\t\tgroups: {\n\t\t\t...groups,\n\t\t\titems: {\n\t\t\t\t...groups.items,\n\t\t\t\t[ newGroupId ]: {\n\t\t\t\t\tid: newGroupId,\n\t\t\t\t\tlabel: newLabel,\n\t\t\t\t\tprops: [],\n\t\t\t\t},\n\t\t\t},\n\t\t\torder: [ ...groups.order, newGroupId ],\n\t\t},\n\t\tgroupId: newGroupId,\n\t};\n}\n\nexport function removePropsFromState(\n\toverridableProps: OverridableProps,\n\tpropsToRemove: OverridableProp[]\n): OverridableProps {\n\tconst overrideKeysToRemove = propsToRemove.map( ( prop ) => prop.overrideKey );\n\n\tconst remainingProps = Object.fromEntries(\n\t\tObject.entries( overridableProps.props ).filter( ( [ , prop ] ) => ! propsToRemove.includes( prop ) )\n\t);\n\n\tconst updatedGroupItems = Object.fromEntries(\n\t\tObject.entries( overridableProps.groups.items ).map(\n\t\t\t( [ groupId, group ]: [ string, OverridablePropsGroup ] ) => [\n\t\t\t\tgroupId,\n\t\t\t\t{\n\t\t\t\t\t...group,\n\t\t\t\t\tprops: group.props.filter( ( prop ) => ! overrideKeysToRemove.includes( prop ) ),\n\t\t\t\t},\n\t\t\t]\n\t\t)\n\t);\n\n\treturn {\n\t\tprops: remainingProps,\n\t\tgroups: {\n\t\t\titems: updatedGroupItems,\n\t\t\torder: overridableProps.groups.order.filter( ( groupId ) => ! overrideKeysToRemove.includes( groupId ) ),\n\t\t},\n\t};\n}\n\nexport function ensureGroupInOrder( groups: Groups, groupId: string ): Groups {\n\tif ( groups.order.includes( groupId ) ) {\n\t\treturn groups;\n\t}\n\n\treturn {\n\t\t...groups,\n\t\torder: [ ...groups.order, groupId ],\n\t};\n}\n\nexport function deleteGroup( groups: Groups, groupId: string ): Groups {\n\tconst { [ groupId ]: removed, ...remainingItems } = groups.items;\n\n\treturn {\n\t\titems: remainingItems,\n\t\torder: groups.order.filter( ( id ) => id !== groupId ),\n\t};\n}\n\nexport function renameGroup( groups: Groups, groupId: string, newLabel: string ): Groups {\n\tconst group = groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn groups;\n\t}\n\n\treturn {\n\t\t...groups,\n\t\titems: {\n\t\t\t...groups.items,\n\t\t\t[ groupId ]: {\n\t\t\t\t...group,\n\t\t\t\tlabel: newLabel,\n\t\t\t},\n\t\t},\n\t};\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { revertElementOverridableSetting } from '../../utils/revert-element-overridable-setting';\nimport { type Source, trackComponentEvent } from '../../utils/tracking';\nimport { selectCurrentComponent, selectOverridableProps, slice } from '../store';\nimport { removePropFromAllGroups } from '../utils/groups-transformers';\n\ntype DeletePropParams = {\n\tcomponentId: ComponentId;\n\tpropKey: string;\n\tsource: Source;\n};\n\nexport function deleteOverridableProp( { componentId, propKey, source }: DeletePropParams ): void {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst prop = overridableProps.props[ propKey ];\n\n\tif ( ! prop ) {\n\t\treturn;\n\t}\n\n\trevertElementOverridableSetting( prop.elementId, prop.propKey, prop.originValue, propKey );\n\n\tconst { [ propKey ]: removedProp, ...remainingProps } = overridableProps.props;\n\n\tconst updatedGroups = removePropFromAllGroups( overridableProps.groups, propKey );\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tprops: remainingProps,\n\t\t\t\tgroups: updatedGroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\tconst currentComponent = selectCurrentComponent( getState() );\n\n\ttrackComponentEvent( {\n\t\taction: 'propertyRemoved',\n\t\tsource,\n\t\tcomponent_uid: currentComponent?.uid,\n\t\tproperty_id: removedProp.overrideKey,\n\t\tproperty_path: removedProp.propKey,\n\t\tproperty_name: removedProp.label,\n\t\telement_type: removedProp.widgetType ?? removedProp.elType,\n\t} );\n}\n","import { getContainer, getElementSetting, updateElementSettings } from '@elementor/editor-elements';\n\nimport {\n\ttype ComponentInstanceOverrideProp,\n\tcomponentInstanceOverridePropTypeUtil,\n} from '../prop-types/component-instance-override-prop-type';\nimport {\n\tcomponentInstanceOverridesPropTypeUtil,\n\ttype ComponentInstanceOverridesPropValue,\n} from '../prop-types/component-instance-overrides-prop-type';\nimport {\n\ttype ComponentInstanceProp,\n\tcomponentInstancePropTypeUtil,\n\ttype ComponentInstancePropValue,\n} from '../prop-types/component-instance-prop-type';\nimport { componentOverridablePropTypeUtil } from '../prop-types/component-overridable-prop-type';\nimport { isComponentInstance } from './is-component-instance';\n\nexport function revertElementOverridableSetting(\n\telementId: string,\n\tsettingKey: string,\n\toriginValue: unknown,\n\toverrideKey: string\n): void {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\treturn;\n\t}\n\n\tif ( isComponentInstance( container.model.toJSON() ) ) {\n\t\trevertComponentInstanceSetting( elementId, overrideKey );\n\n\t\treturn;\n\t}\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: { [ settingKey ]: originValue ?? null },\n\t\twithHistory: false,\n\t} );\n}\n\nfunction revertComponentInstanceSetting( elementId: string, overrideKey: string ): void {\n\tconst setting = getElementSetting< ComponentInstanceProp >( elementId, 'component_instance' );\n\n\tconst componentInstance = componentInstancePropTypeUtil.extract( setting );\n\tconst overrides = componentInstanceOverridesPropTypeUtil.extract( componentInstance?.overrides );\n\n\tif ( ! overrides ) {\n\t\treturn;\n\t}\n\n\tconst updatedOverrides = getUpdatedComponentInstanceOverrides( overrides, overrideKey );\n\n\tconst updatedSetting = componentInstancePropTypeUtil.create( {\n\t\t...componentInstance,\n\t\toverrides: componentInstanceOverridesPropTypeUtil.create( updatedOverrides ),\n\t} as ComponentInstancePropValue );\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: { component_instance: updatedSetting },\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getUpdatedComponentInstanceOverrides(\n\toverrides: NonNullable< ComponentInstanceOverridesPropValue >,\n\toverrideKey: string\n): ComponentInstanceOverridesPropValue {\n\treturn overrides\n\t\t.map( ( item ) => {\n\t\t\tconst isOverridable = componentOverridablePropTypeUtil.isValid( item );\n\t\t\tif ( ! isOverridable ) {\n\t\t\t\t// we revert only overridable values\n\t\t\t\treturn item;\n\t\t\t}\n\n\t\t\tconst isOriginValueOverride = componentInstanceOverridePropTypeUtil.isValid( item.value.origin_value );\n\n\t\t\tif ( ! isOriginValueOverride ) {\n\t\t\t\t// component instances cannot have overridables with origin value that is not an override\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( item.value.override_key !== overrideKey ) {\n\t\t\t\treturn item;\n\t\t\t}\n\n\t\t\treturn item.value.origin_value as ComponentInstanceOverrideProp;\n\t\t} )\n\t\t.filter( ( item ): item is NonNullable< typeof item > => item !== null );\n}\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nexport const componentInstanceOverridePropTypeUtil = createPropUtils(\n\t'override',\n\tz.object( {\n\t\toverride_key: z.string(),\n\t\toverride_value: z.unknown(),\n\t\tschema_source: z.object( {\n\t\t\ttype: z.literal( 'component' ),\n\t\t\tid: z.number(),\n\t\t} ),\n\t} )\n);\n\nexport type ComponentInstanceOverrideProp = z.infer< typeof componentInstanceOverridePropTypeUtil.schema >;\nexport type ComponentInstanceOverridePropValue = ComponentInstanceOverrideProp[ 'value' ];\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { componentInstanceOverridePropTypeUtil } from './component-instance-override-prop-type';\nimport { componentOverridablePropTypeUtil } from './component-overridable-prop-type';\n\nexport const componentInstanceOverridesPropTypeUtil = createPropUtils(\n\t'overrides',\n\tz\n\t\t.array( z.union( [ componentInstanceOverridePropTypeUtil.schema, componentOverridablePropTypeUtil.schema ] ) )\n\t\t.optional()\n\t\t.default( [] )\n);\n\nexport type ComponentInstanceOverridesPropValue = z.infer<\n\ttypeof componentInstanceOverridesPropTypeUtil.schema\n>[ 'value' ];\n\nexport type ComponentInstanceOverride = NonNullable< ComponentInstanceOverridesPropValue >[ number ];\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nexport const componentOverridablePropTypeUtil = createPropUtils(\n\t'overridable',\n\tz.object( {\n\t\toverride_key: z.string(),\n\t\torigin_value: z\n\t\t\t.object( {\n\t\t\t\t$$type: z.string(),\n\t\t\t\tvalue: z.unknown(),\n\t\t\t} )\n\t\t\t.nullable(),\n\t} )\n);\n\nexport type ComponentOverridableProp = z.infer< typeof componentOverridablePropTypeUtil.schema >;\n\nexport type ComponentOverridablePropValue = ComponentOverridableProp[ 'value' ];\n","import { createPropUtils, numberPropTypeUtil } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { componentInstanceOverridesPropTypeUtil } from './component-instance-overrides-prop-type';\n\nexport const componentInstancePropTypeUtil = createPropUtils(\n\t'component-instance',\n\tz.object( {\n\t\tcomponent_id: numberPropTypeUtil.schema,\n\t\toverrides: z.optional( componentInstanceOverridesPropTypeUtil.schema ),\n\t} )\n);\n\nexport type ComponentInstanceProp = z.infer< typeof componentInstancePropTypeUtil.schema >;\nexport type ComponentInstancePropValue = ComponentInstanceProp[ 'value' ];\n","import {\n\ttype BackboneModel,\n\ttype BackboneModelConstructor,\n\ttype CreateTemplatedElementTypeOptions,\n\tcreateTemplatedElementView,\n\ttype ElementModel,\n\ttype ElementType,\n\ttype ElementView,\n\ttype LegacyWindow,\n\ttype NamespacedRenderContext,\n\ttype RenderContext,\n} from '@elementor/editor-canvas';\nimport { getCurrentDocument } from '@elementor/editor-documents';\nimport { __getState as getState } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { apiClient } from './api';\nimport { type ComponentInstanceProp } from './prop-types/component-instance-prop-type';\nimport { type ComponentsSlice, selectComponentByUid } from './store/store';\nimport { type ComponentRenderContext, type ExtendedWindow } from './types';\nimport { switchToComponent } from './utils/switch-to-component';\nimport { trackComponentEvent } from './utils/tracking';\n\ntype ContextMenuEventData = { location: string; secondaryLocation: string; trigger: string };\n\nexport type ContextMenuAction = {\n\tname: string;\n\ticon: string;\n\ttitle: string | ( () => string );\n\tisEnabled: () => boolean;\n\tcallback: ( _: unknown, eventData: ContextMenuEventData ) => void;\n};\n\ntype ContextMenuGroupConfig = {\n\tdisable: Record< string, string[] >;\n\tadd: Record< string, { index: number; action: ContextMenuAction } >;\n};\n\ntype ContextMenuGroup = {\n\tname: string;\n\tactions: ContextMenuAction[];\n};\n\ntype ComponentModel = ElementModel & {\n\tcomponentId?: number | string;\n\tisGlobal: boolean;\n};\n\ntype ComponentModelInstance = BackboneModel< ComponentModel > & {\n\ttrigger: ( event: string, ...args: unknown[] ) => void;\n\tgetTitle: () => string;\n\tgetComponentId: () => number | null;\n\tgetComponentName: () => string;\n\tgetComponentUid: () => string | null;\n};\n\nexport const COMPONENT_WIDGET_TYPE = 'e-component';\n\nconst updateGroups = ( groups: ContextMenuGroup[], config: ContextMenuGroupConfig ): ContextMenuGroup[] => {\n\tconst disableMap = new Map( Object.entries( config.disable ?? {} ) );\n\tconst addMap = new Map( Object.entries( config.add ?? {} ) );\n\n\treturn groups.map( ( group ) => {\n\t\tconst disabledActions = disableMap.get( group.name ) ?? [];\n\t\tconst addConfig = addMap.get( group.name );\n\n\t\t// Update disabled actions\n\t\tconst updatedActions = group.actions.map( ( action ) =>\n\t\t\tdisabledActions.includes( action.name ) ? { ...action, isEnabled: () => false } : action\n\t\t);\n\n\t\t// Insert additional action if needed\n\t\tif ( addConfig ) {\n\t\t\tupdatedActions.splice( addConfig.index, 0, addConfig.action );\n\t\t}\n\n\t\treturn { ...group, actions: updatedActions };\n\t} );\n};\n\nexport function createComponentType(\n\toptions: CreateTemplatedElementTypeOptions & { showLockedByModal?: ( lockedBy: string ) => void }\n): typeof ElementType {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\tconst WidgetType = legacyWindow.elementor.modules.elements.types.Widget;\n\n\tconst view = createComponentView( { ...options } );\n\n\treturn class extends WidgetType {\n\t\tgetType() {\n\t\t\treturn options.type;\n\t\t}\n\n\t\tgetView() {\n\t\t\treturn view;\n\t\t}\n\n\t\tgetModel(): BackboneModelConstructor< ComponentModel > {\n\t\t\treturn createComponentModel();\n\t\t}\n\t};\n}\n\nfunction createComponentView(\n\toptions: CreateTemplatedElementTypeOptions & {\n\t\tshowLockedByModal?: ( lockedBy: string ) => void;\n\t}\n): typeof ElementView {\n\tconst legacyWindow = window as unknown as LegacyWindow & ExtendedWindow;\n\n\treturn class extends createTemplatedElementView( options ) {\n\t\teventsManagerConfig = legacyWindow.elementorCommon.eventsManager.config;\n\t\t#componentRenderContext: ComponentRenderContext | undefined;\n\n\t\tisComponentCurrentlyEdited() {\n\t\t\tconst currentDocument = getCurrentDocument();\n\n\t\t\treturn currentDocument?.id === this.getComponentId();\n\t\t}\n\n\t\tgetRenderContext(): NamespacedRenderContext | undefined {\n\t\t\tconst namespaceKey = this.getNamespaceKey();\n\t\t\tconst parentContext = this._parent?.getRenderContext?.();\n\t\t\tconst parentComponentContext = parentContext?.[ namespaceKey ];\n\n\t\t\tif ( ! this.#componentRenderContext ) {\n\t\t\t\treturn parentContext;\n\t\t\t}\n\n\t\t\tconst ownOverrides = this.#componentRenderContext.overrides ?? {};\n\t\t\tconst parentOverrides = parentComponentContext?.overrides ?? {};\n\n\t\t\treturn {\n\t\t\t\t...parentContext,\n\t\t\t\t[ namespaceKey ]: {\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\t...parentOverrides,\n\t\t\t\t\t\t...ownOverrides,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tgetResolverRenderContext(): RenderContext | undefined {\n\t\t\tconst namespaceKey = this.getNamespaceKey();\n\t\t\tconst context = this.getRenderContext();\n\n\t\t\treturn context?.[ namespaceKey ];\n\t\t}\n\n\t\tafterSettingsResolve( settings: { [ key: string ]: unknown } ) {\n\t\t\tconst componentInstance = settings.component_instance as\n\t\t\t\t| {\n\t\t\t\t\t\toverrides?: Record< string, unknown >;\n\t\t\t\t\t\telements?: unknown[];\n\t\t\t\t }\n\t\t\t\t| undefined;\n\n\t\t\tif ( componentInstance ) {\n\t\t\t\tthis.#componentRenderContext = {\n\t\t\t\t\toverrides: componentInstance.overrides ?? {},\n\t\t\t\t};\n\n\t\t\t\tthis.collection = legacyWindow.elementor.createBackboneElementsCollection( componentInstance.elements );\n\n\t\t\t\tthis.collection.models.forEach( setInactiveRecursively );\n\n\t\t\t\tsettings.component_instance = '<template data-children-placeholder></template>';\n\t\t\t}\n\n\t\t\treturn settings;\n\t\t}\n\n\t\tgetDomElement() {\n\t\t\t// Component does not have a DOM element, so we return the first child's DOM element.\n\t\t\treturn this.children.findByIndex( 0 )?.getDomElement() ?? this.$el;\n\t\t}\n\n\t\tattachBuffer( collectionView: this, buffer: DocumentFragment ): void {\n\t\t\tconst childrenPlaceholder = collectionView.$el.find( '[data-children-placeholder]' ).get( 0 );\n\n\t\t\tif ( ! childrenPlaceholder ) {\n\t\t\t\tsuper.attachBuffer( collectionView, buffer );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tchildrenPlaceholder.replaceWith( buffer );\n\t\t}\n\n\t\tgetComponentId() {\n\t\t\tconst componentInstance = (\n\t\t\t\tthis.options?.model?.get( 'settings' )?.get( 'component_instance' ) as ComponentInstanceProp\n\t\t\t )?.value;\n\n\t\t\treturn componentInstance.component_id.value;\n\t\t}\n\n\t\tgetContextMenuGroups() {\n\t\t\tconst filteredGroups = super.getContextMenuGroups().filter( ( group ) => group.name !== 'save' );\n\t\t\tconst componentId = this.getComponentId();\n\t\t\tif ( ! componentId ) {\n\t\t\t\treturn filteredGroups;\n\t\t\t}\n\n\t\t\tconst newGroups = updateGroups(\n\t\t\t\tfilteredGroups as ContextMenuGroup[],\n\t\t\t\tthis._getContextMenuConfig() as unknown as ContextMenuGroupConfig\n\t\t\t);\n\t\t\treturn newGroups;\n\t\t}\n\n\t\t_getContextMenuConfig() {\n\t\t\tconst isAdministrator = isUserAdministrator();\n\n\t\t\tconst addedGroup = {\n\t\t\t\tgeneral: {\n\t\t\t\t\tindex: 1,\n\t\t\t\t\taction: {\n\t\t\t\t\t\tname: 'edit component',\n\t\t\t\t\t\ticon: 'eicon-edit',\n\t\t\t\t\t\ttitle: () => __( 'Edit Component', 'elementor' ),\n\t\t\t\t\t\tisEnabled: () => true,\n\t\t\t\t\t\tcallback: ( _: unknown, eventData: ContextMenuEventData ) => this.editComponent( eventData ),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst disabledGroup = {\n\t\t\t\tclipboard: [ 'pasteStyle', 'resetStyle' ],\n\t\t\t};\n\n\t\t\treturn { add: isAdministrator ? addedGroup : {}, disable: disabledGroup };\n\t\t}\n\n\t\tasync switchDocument() {\n\t\t\t//todo: handle unpublished\n\t\t\tconst { isAllowedToSwitchDocument, lockedBy } = await apiClient.getComponentLockStatus(\n\t\t\t\tthis.getComponentId() as number\n\t\t\t);\n\n\t\t\tif ( ! isAllowedToSwitchDocument ) {\n\t\t\t\toptions.showLockedByModal?.( lockedBy || '' );\n\t\t\t} else {\n\t\t\t\tswitchToComponent( this.getComponentId() as number, this.model.get( 'id' ), this.el );\n\t\t\t}\n\t\t}\n\n\t\teditComponent( { trigger, location, secondaryLocation }: ContextMenuEventData ) {\n\t\t\tif ( this.isComponentCurrentlyEdited() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.switchDocument();\n\n\t\t\tconst editorSettings = this.model.get( 'editor_settings' );\n\n\t\t\ttrackComponentEvent( {\n\t\t\t\taction: 'edited',\n\t\t\t\tsource: 'user',\n\t\t\t\tcomponent_uid: editorSettings?.component_uid,\n\t\t\t\tcomponent_name: editorSettings?.title,\n\t\t\t\tlocation,\n\t\t\t\tsecondary_location: secondaryLocation,\n\t\t\t\ttrigger,\n\t\t\t} );\n\t\t}\n\n\t\thandleDblClick( e: MouseEvent ) {\n\t\t\te.stopPropagation();\n\n\t\t\tconst isAdministrator = isUserAdministrator();\n\n\t\t\tif ( ! isAdministrator ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { triggers, locations, secondaryLocations } = this.eventsManagerConfig;\n\n\t\t\tthis.editComponent( {\n\t\t\t\ttrigger: triggers.doubleClick,\n\t\t\t\tlocation: locations.canvas,\n\t\t\t\tsecondaryLocation: secondaryLocations.canvasElement,\n\t\t\t} );\n\t\t}\n\n\t\tevents() {\n\t\t\treturn {\n\t\t\t\t...super.events(),\n\t\t\t\tdblclick: this.handleDblClick,\n\t\t\t};\n\t\t}\n\n\t\tattributes() {\n\t\t\treturn {\n\t\t\t\t...super.attributes(),\n\t\t\t\t'data-elementor-id': this.getComponentId(),\n\t\t\t};\n\t\t}\n\t};\n}\n\nfunction setInactiveRecursively( model: BackboneModel< ElementModel > ) {\n\tconst editSettings = model.get( 'editSettings' );\n\n\tif ( editSettings ) {\n\t\teditSettings.set( 'inactive', true );\n\t}\n\n\tconst elements = model.get( 'elements' );\n\n\tif ( elements ) {\n\t\telements.forEach( ( childModel ) => {\n\t\t\tsetInactiveRecursively( childModel );\n\t\t} );\n\t}\n}\n\nfunction isUserAdministrator() {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn legacyWindow.elementor.config?.user?.is_administrator ?? false;\n}\n\nfunction createComponentModel(): BackboneModelConstructor< ComponentModel > {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\tconst WidgetType = legacyWindow.elementor.modules.elements.types.Widget;\n\tconst widgetTypeInstance = new WidgetType() as unknown as BackboneModelConstructor< ElementModel >;\n\tconst BaseWidgetModel = widgetTypeInstance.getModel();\n\n\treturn BaseWidgetModel.extend( {\n\t\tinitialize( this: ComponentModelInstance, attributes: unknown, options: unknown ): void {\n\t\t\tBaseWidgetModel.prototype.initialize.call( this, attributes, options );\n\n\t\t\tconst componentInstance = this.get( 'settings' )?.get( 'component_instance' ) as\n\t\t\t\t| ComponentInstanceProp\n\t\t\t\t| undefined;\n\t\t\tif ( componentInstance?.value ) {\n\t\t\t\tconst componentId = componentInstance.value.component_id?.value;\n\t\t\t\tif ( componentId && typeof componentId === 'number' ) {\n\t\t\t\t\tthis.set( 'componentId', componentId );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.set( 'isGlobal', true );\n\t\t},\n\n\t\tgetTitle( this: ComponentModelInstance ): string {\n\t\t\tconst editorSettings = this.get( 'editor_settings' ) as\n\t\t\t\t| {\n\t\t\t\t\t\ttitle?: string;\n\t\t\t\t\t\tcomponent_uid?: string;\n\t\t\t\t }\n\t\t\t\t| undefined;\n\n\t\t\tconst instanceTitle = editorSettings?.title;\n\t\t\tif ( instanceTitle ) {\n\t\t\t\treturn instanceTitle;\n\t\t\t}\n\n\t\t\tconst componentUid = editorSettings?.component_uid;\n\t\t\tif ( componentUid ) {\n\t\t\t\tconst component = selectComponentByUid( getState() as ComponentsSlice, componentUid );\n\t\t\t\tif ( component?.name ) {\n\t\t\t\t\treturn component.name;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ( window as unknown as LegacyWindow ).elementor.getElementData( this ).title;\n\t\t},\n\n\t\tgetComponentId( this: ComponentModelInstance ): number | null {\n\t\t\treturn ( this.get( 'componentId' ) as number | undefined ) || null;\n\t\t},\n\n\t\tgetComponentName( this: ComponentModelInstance ): string {\n\t\t\treturn this.getTitle();\n\t\t},\n\n\t\tgetComponentUid( this: ComponentModelInstance ): string | null {\n\t\t\tconst editorSettings = this.get( 'editor_settings' ) as\n\t\t\t\t| {\n\t\t\t\t\t\tcomponent_uid?: string;\n\t\t\t\t }\n\t\t\t\t| undefined;\n\t\t\treturn editorSettings?.component_uid || null;\n\t\t},\n\t} );\n}\n","import { type V1ElementModelProps } from '@elementor/editor-elements';\n\nimport { COMPONENT_WIDGET_TYPE } from '../create-component-type';\n\nexport function isComponentInstance( elementModel: Partial< V1ElementModelProps > ) {\n\treturn [ elementModel.widgetType, elementModel.elType ].includes( COMPONENT_WIDGET_TYPE );\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\n\ntype ReorderGroupPropsParams = {\n\tcomponentId: ComponentId;\n\tgroupId: string;\n\tnewPropsOrder: string[];\n};\n\nexport function reorderGroupProps( { componentId, groupId, newPropsOrder }: ReorderGroupPropsParams ): void {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst group = overridableProps.groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn;\n\t}\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: {\n\t\t\t\t\t...overridableProps.groups,\n\t\t\t\t\titems: {\n\t\t\t\t\t\t...overridableProps.groups.items,\n\t\t\t\t\t\t[ groupId ]: {\n\t\t\t\t\t\t\t...group,\n\t\t\t\t\t\t\tprops: newPropsOrder,\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} )\n\t);\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\n\ntype ReorderGroupsParams = {\n\tcomponentId: ComponentId;\n\tnewOrder: string[];\n};\n\nexport function reorderOverridableGroups( { componentId, newOrder }: ReorderGroupsParams ): void {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: {\n\t\t\t\t\t...overridableProps.groups,\n\t\t\t\t\torder: newOrder,\n\t\t\t\t},\n\t\t\t},\n\t\t} )\n\t);\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId, type OverridableProp } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\nimport { movePropBetweenGroups } from '../utils/groups-transformers';\n\ntype UpdatePropParams = {\n\tcomponentId: ComponentId;\n\toverrideKey: string;\n\tlabel: string;\n\tgroupId: string | null;\n};\n\nexport function updateOverridablePropParams( {\n\tcomponentId,\n\toverrideKey,\n\tlabel,\n\tgroupId,\n}: UpdatePropParams ): OverridableProp | undefined {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst prop = overridableProps.props[ overrideKey ];\n\n\tif ( ! prop ) {\n\t\treturn;\n\t}\n\n\tconst oldGroupId = prop.groupId;\n\tconst newGroupId = groupId ?? oldGroupId;\n\n\tconst updatedProp: OverridableProp = {\n\t\t...prop,\n\t\tlabel,\n\t\tgroupId: newGroupId,\n\t};\n\n\tconst updatedGroups = movePropBetweenGroups( overridableProps.groups, overrideKey, oldGroupId, newGroupId );\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tprops: {\n\t\t\t\t\t...overridableProps.props,\n\t\t\t\t\t[ overrideKey ]: updatedProp,\n\t\t\t\t},\n\t\t\t\tgroups: updatedGroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\treturn updatedProp;\n}\n","import { __useSelector as useSelector } from '@elementor/store';\n\nimport { type ComponentsSlice, selectOverridableProps } from '../../store/store';\nimport { type ComponentId, type OverridableProps } from '../../types';\n\nexport function useOverridableProps( componentId: ComponentId | null ): OverridableProps | undefined {\n\treturn useSelector( ( state: ComponentsSlice ) => {\n\t\tif ( ! componentId ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn selectOverridableProps( state, componentId );\n\t} );\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { ComponentPropListIcon } from '@elementor/icons';\nimport { Link, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ComponentIntroduction } from '../components-tab/component-introduction';\n\nexport function PropertiesEmptyState( { introductionRef }: { introductionRef: React.RefObject< HTMLButtonElement > } ) {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\treturn (\n\t\t<>\n\t\t\t<Stack\n\t\t\t\talignItems=\"center\"\n\t\t\t\tjustifyContent=\"flex-start\"\n\t\t\t\theight=\"100%\"\n\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\tsx={ { px: 2.5, pt: 10, pb: 5.5 } }\n\t\t\t\tgap={ 1 }\n\t\t\t>\n\t\t\t\t<ComponentPropListIcon fontSize=\"large\" />\n\n\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t\t{ __( 'Add your first property', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t\t\t{ __( 'Make instances flexible while keeping design synced.', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t\t\t{ __( 'Select any element, then click + next to a setting to expose it.', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Link\n\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tsx={ { textDecorationLine: 'underline' } }\n\t\t\t\t\tonClick={ () => setIsOpen( true ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Learn more', 'elementor' ) }\n\t\t\t\t</Link>\n\t\t\t</Stack>\n\t\t\t<ComponentIntroduction\n\t\t\t\tanchorRef={ introductionRef }\n\t\t\t\tshouldShowIntroduction={ isOpen }\n\t\t\t\tonClose={ () => setIsOpen( false ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { PopoverContent } from '@elementor/editor-controls';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { Box, Button, Image, Link, Popover, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const ComponentIntroduction = ( {\n\tanchorRef,\n\tshouldShowIntroduction,\n\tonClose,\n}: {\n\tanchorRef: React.RefObject< HTMLElement >;\n\tshouldShowIntroduction: boolean;\n\tonClose: () => void;\n} ) => {\n\tif ( ! anchorRef.current || ! shouldShowIntroduction ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Popover\n\t\t\tanchorEl={ anchorRef.current }\n\t\t\topen={ shouldShowIntroduction }\n\t\t\tanchorOrigin={ {\n\t\t\t\tvertical: 'top',\n\t\t\t\thorizontal: 'right',\n\t\t\t} }\n\t\t\ttransformOrigin={ {\n\t\t\t\tvertical: 'top',\n\t\t\t\thorizontal: -30,\n\t\t\t} }\n\t\t\tonClose={ onClose }\n\t\t>\n\t\t\t<Box sx={ { width: '296px' } }>\n\t\t\t\t<PopoverHeader title={ __( 'Add your first property', 'elementor' ) } onClose={ onClose } />\n\t\t\t\t<Image\n\t\t\t\t\tsx={ { width: '296px', height: '160px' } }\n\t\t\t\t\tsrc={ 'https://assets.elementor.com/packages/v1/images/components-properties-intro.png' }\n\t\t\t\t\talt={ '' }\n\t\t\t\t/>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<Stack sx={ { p: 2 } }>\n\t\t\t\t\t\t<Typography variant={ 'body2' }>\n\t\t\t\t\t\t\t{ __( 'Properties make instances flexible.', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography variant={ 'body2' }>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Click next to any setting you want users to customize - like text, images, or links.',\n\t\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography variant={ 'body2' } sx={ { mt: 2 } }>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Your properties will appear in the Properties panel, where you can organize and manage them anytime.',\n\t\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\thref=\"http://go.elementor.com/components-guide\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\tsx={ { mt: 2 } }\n\t\t\t\t\t\t\tcolor=\"info.main\"\n\t\t\t\t\t\t\tvariant=\"body2\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Learn more', 'elementor' ) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyContent=\"flex-end\" sx={ { pt: 1 } }>\n\t\t\t\t\t\t\t<Button size=\"medium\" variant=\"contained\" onClick={ onClose }>\n\t\t\t\t\t\t\t\t{ __( 'Got it', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</Stack>\n\t\t\t\t</PopoverContent>\n\t\t\t</Box>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { EditableField, MenuListItem } from '@elementor/editor-ui';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tList,\n\tMenu,\n\tStack,\n\tTooltip,\n\tTypography,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type OverridableProp, type OverridablePropsGroup } from '../../types';\nimport { PropertyItem } from './property-item';\nimport { SortableItem, SortableProvider, SortableTrigger, type SortableTriggerProps } from './sortable';\nimport { type GroupLabelEditableState } from './use-current-editable-item';\n\ntype Props = {\n\tgroup: OverridablePropsGroup;\n\tprops: Record< string, OverridableProp >;\n\tallGroups: { value: string; label: string }[];\n\tallGroupsRecord: Record< string, OverridablePropsGroup >;\n\tsortableTriggerProps: SortableTriggerProps;\n\tisDragPlaceholder?: boolean;\n\tsetIsAddingGroup: ( isAddingGroup: boolean ) => void;\n\tonPropsReorder: ( newOrder: string[] ) => void;\n\tonPropertyDelete: ( propKey: string ) => void;\n\tonPropertyUpdate: ( propKey: string, data: { label: string; group: string | null } ) => void;\n\tonGroupDelete: ( groupId: string ) => void;\n\teditableLabelProps: GroupLabelEditableState;\n};\n\nexport function PropertiesGroup( {\n\tgroup,\n\tprops,\n\tallGroups,\n\tsortableTriggerProps,\n\tisDragPlaceholder,\n\tonPropsReorder,\n\tonPropertyDelete,\n\tonPropertyUpdate,\n\tonGroupDelete,\n\teditableLabelProps,\n}: Props ) {\n\tconst groupProps = group.props\n\t\t.map( ( propId ) => props[ propId ] )\n\t\t.filter( ( prop ): prop is OverridableProp => Boolean( prop ) );\n\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tdisableAutoFocus: true,\n\t} );\n\n\tconst { editableRef, isEditing, error, getEditableProps, setEditingGroupId, editingGroupId } = editableLabelProps;\n\n\tconst hasProperties = group.props.length > 0;\n\tconst isThisGroupEditing = isEditing && editingGroupId === group.id;\n\n\tconst handleRenameClick = () => {\n\t\tpopupState.close();\n\t\tsetEditingGroupId( group.id );\n\t};\n\n\tconst handleDeleteClick = () => {\n\t\tpopupState.close();\n\t\tonGroupDelete( group.id );\n\t};\n\n\treturn (\n\t\t<Box\n\t\t\tsx={ {\n\t\t\t\topacity: isDragPlaceholder ? 0.5 : 1,\n\t\t\t} }\n\t\t>\n\t\t\t<Stack gap={ 1 }>\n\t\t\t\t<Box\n\t\t\t\t\tclassName=\"group-header\"\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t'&:hover .group-sortable-trigger': {\n\t\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .group-sortable-trigger': {\n\t\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'&:hover .group-menu': {\n\t\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .group-menu': {\n\t\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<SortableTrigger triggerClassName=\"group-sortable-trigger\" { ...sortableTriggerProps } />\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={ 2 }>\n\t\t\t\t\t\t{ isThisGroupEditing ? (\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t\theight: 28,\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\tborder: 2,\n\t\t\t\t\t\t\t\t\tborderColor: 'text.secondary',\n\t\t\t\t\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\t\t\t\t\tpl: 0.5,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<EditableField\n\t\t\t\t\t\t\t\t\tref={ editableRef }\n\t\t\t\t\t\t\t\t\tas={ Typography }\n\t\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\t\terror={ error ?? undefined }\n\t\t\t\t\t\t\t\t\tsx={ { color: 'text.primary', fontWeight: 400, lineHeight: 1.66 } }\n\t\t\t\t\t\t\t\t\t{ ...getEditableProps() }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\tsx={ { color: 'text.primary', fontWeight: 400, lineHeight: 1.66 } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ group.label }\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tclassName=\"group-menu\"\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tsx={ { p: 0.25, visibility: isThisGroupEditing ? 'visible' : undefined } }\n\t\t\t\t\t\t\taria-label={ __( 'Group actions', 'elementor' ) }\n\t\t\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Box>\n\t\t\t\t<List sx={ { p: 0, display: 'flex', flexDirection: 'column', gap: 1 } }>\n\t\t\t\t\t<SortableProvider value={ group.props } onChange={ onPropsReorder }>\n\t\t\t\t\t\t{ groupProps.map( ( prop ) => (\n\t\t\t\t\t\t\t<SortableItem key={ prop.overrideKey } id={ prop.overrideKey }>\n\t\t\t\t\t\t\t\t{ ( { triggerProps, triggerStyle, isDragPlaceholder: isItemDragPlaceholder } ) => (\n\t\t\t\t\t\t\t\t\t<PropertyItem\n\t\t\t\t\t\t\t\t\t\tprop={ prop }\n\t\t\t\t\t\t\t\t\t\tsortableTriggerProps={ { ...triggerProps, style: triggerStyle } }\n\t\t\t\t\t\t\t\t\t\tisDragPlaceholder={ isItemDragPlaceholder }\n\t\t\t\t\t\t\t\t\t\tgroups={ allGroups }\n\t\t\t\t\t\t\t\t\t\texistingLabels={ Object.values( props ).map( ( p ) => p.label ) }\n\t\t\t\t\t\t\t\t\t\tonDelete={ onPropertyDelete }\n\t\t\t\t\t\t\t\t\t\tonUpdate={ ( data ) => onPropertyUpdate( prop.overrideKey, data ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</SortableProvider>\n\t\t\t\t</List>\n\t\t\t</Stack>\n\t\t\t<Menu\n\t\t\t\t{ ...bindMenu( popupState ) }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t>\n\t\t\t\t<MenuListItem sx={ { minWidth: '160px' } } onClick={ handleRenameClick }>\n\t\t\t\t\t<Typography variant=\"caption\" sx={ { color: 'text.primary' } }>\n\t\t\t\t\t\t{ __( 'Rename', 'elementor' ) }\n\t\t\t\t\t</Typography>\n\t\t\t\t</MenuListItem>\n\t\t\t\t<Tooltip\n\t\t\t\t\ttitle={\n\t\t\t\t\t\thasProperties ? __( 'To delete the group, first remove all the properties', 'elementor' ) : ''\n\t\t\t\t\t}\n\t\t\t\t\tplacement=\"right\"\n\t\t\t\t>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<MenuListItem onClick={ handleDeleteClick } disabled={ hasProperties }>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\tsx={ { color: hasProperties ? 'text.disabled' : 'error.light' } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Delete', 'elementor' ) }\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t</span>\n\t\t\t\t</Tooltip>\n\t\t\t</Menu>\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { getWidgetsCache } from '@elementor/editor-elements';\nimport { XIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Box, IconButton, Popover, Typography, usePopupState } from '@elementor/ui';\n\nimport { type OverridableProp } from '../../types';\nimport { OverridablePropForm } from '../overridable-props/overridable-prop-form';\nimport { SortableTrigger, type SortableTriggerProps } from './sortable';\n\ntype PropertyItemProps = {\n\tprop: OverridableProp;\n\tsortableTriggerProps: SortableTriggerProps;\n\tisDragPlaceholder?: boolean;\n\tgroups: { value: string; label: string }[];\n\texistingLabels: string[];\n\tonDelete: ( propKey: string ) => void;\n\tonUpdate: ( data: { label: string; group: string | null } ) => void;\n};\n\nexport function PropertyItem( {\n\tprop,\n\tsortableTriggerProps,\n\tisDragPlaceholder,\n\tgroups,\n\texistingLabels,\n\tonDelete,\n\tonUpdate,\n}: PropertyItemProps ) {\n\tconst popoverState = usePopupState( {\n\t\tvariant: 'popover',\n\t} );\n\tconst icon = getElementIcon( prop );\n\tconst popoverProps = bindPopover( popoverState );\n\n\tconst handleSubmit = ( data: { label: string; group: string | null } ) => {\n\t\tonUpdate( data );\n\t\tpopoverState.close();\n\t};\n\n\tconst handleDelete = ( event: React.MouseEvent ) => {\n\t\tevent.stopPropagation();\n\t\tonDelete( prop.overrideKey );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Box\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tsx={ {\n\t\t\t\t\tposition: 'relative',\n\t\t\t\t\tpl: 0.5,\n\t\t\t\t\tpr: 1,\n\t\t\t\t\tpy: 0.25,\n\t\t\t\t\tminHeight: 28,\n\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\tborder: '1px solid',\n\t\t\t\t\tborderColor: 'divider',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 0.5,\n\t\t\t\t\topacity: isDragPlaceholder ? 0.5 : 1,\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tbackgroundColor: 'action.hover',\n\t\t\t\t\t},\n\t\t\t\t\t'&:hover .sortable-trigger': {\n\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t},\n\t\t\t\t\t'& .sortable-trigger': {\n\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t},\n\t\t\t\t\t'&:hover .delete-button': {\n\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t},\n\t\t\t\t\t'& .delete-button': {\n\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<SortableTrigger { ...sortableTriggerProps } />\n\t\t\t\t<Box\n\t\t\t\t\tsx={ { display: 'flex', alignItems: 'center', color: 'text.primary', fontSize: 12, padding: 0.25 } }\n\t\t\t\t>\n\t\t\t\t\t<i className={ icon } />\n\t\t\t\t</Box>\n\t\t\t\t<Typography variant=\"caption\" sx={ { color: 'text.primary', flexGrow: 1, fontSize: 10 } }>\n\t\t\t\t\t{ prop.label }\n\t\t\t\t</Typography>\n\t\t\t\t<IconButton size=\"tiny\" onClick={ handleDelete } aria-label=\"Delete property\" sx={ { p: 0.25 } }>\n\t\t\t\t\t<XIcon fontSize=\"tiny\" />\n\t\t\t\t</IconButton>\n\t\t\t</Box>\n\n\t\t\t<Popover\n\t\t\t\t{ ...popoverProps }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t\tPaperProps={ { sx: { width: popoverState.anchorEl?.getBoundingClientRect().width } } }\n\t\t\t>\n\t\t\t\t<OverridablePropForm\n\t\t\t\t\tonSubmit={ handleSubmit }\n\t\t\t\t\tcurrentValue={ prop }\n\t\t\t\t\tgroups={ groups }\n\t\t\t\t\texistingLabels={ existingLabels }\n\t\t\t\t\tsx={ { width: '100%' } }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nfunction getElementIcon( prop: OverridableProp ): string {\n\tconst elType = prop.elType === 'widget' ? prop.widgetType : prop.elType;\n\n\tconst widgetsCache = getWidgetsCache();\n\n\tif ( ! widgetsCache ) {\n\t\treturn 'eicon-apps';\n\t}\n\n\tconst widgetConfig = widgetsCache[ elType ];\n\n\treturn widgetConfig?.icon || 'eicon-apps';\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { Form, MenuListItem } from '@elementor/editor-ui';\nimport { Button, FormLabel, Grid, Select, Stack, type SxProps, TextField, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type OverridableProp } from '../../types';\nimport { validatePropLabel } from './utils/validate-prop-label';\n\nconst SIZE = 'tiny';\n\nconst DEFAULT_GROUP = { value: null, label: __( 'Default', 'elementor' ) };\n\ntype Props = {\n\tonSubmit: ( data: { label: string; group: string | null } ) => void;\n\tcurrentValue?: OverridableProp;\n\tgroups?: { value: string; label: string }[];\n\texistingLabels?: string[];\n\tsx?: SxProps;\n};\n\nexport function OverridablePropForm( { onSubmit, groups, currentValue, existingLabels = [], sx }: Props ) {\n\tconst [ propLabel, setPropLabel ] = useState< string | null >( currentValue?.label ?? null );\n\tconst [ group, setGroup ] = useState< string | null >( currentValue?.groupId ?? groups?.[ 0 ]?.value ?? null );\n\tconst [ error, setError ] = useState< string | null >( null );\n\n\tconst name = __( 'Name', 'elementor' );\n\tconst groupName = __( 'Group Name', 'elementor' );\n\n\tconst isCreate = currentValue === undefined;\n\n\tconst title = isCreate ? __( 'Create new property', 'elementor' ) : __( 'Update property', 'elementor' );\n\tconst ctaLabel = isCreate ? __( 'Create', 'elementor' ) : __( 'Update', 'elementor' );\n\n\tconst handleSubmit = () => {\n\t\tconst validationResult = validatePropLabel( propLabel ?? '', existingLabels, currentValue?.label );\n\n\t\tif ( ! validationResult.isValid ) {\n\t\t\tsetError( validationResult.errorMessage );\n\t\t\treturn;\n\t\t}\n\n\t\tonSubmit( { label: propLabel ?? '', group } );\n\t};\n\n\treturn (\n\t\t<Form onSubmit={ handleSubmit }>\n\t\t\t<Stack alignItems=\"start\" sx={ { width: '268px', ...sx } }>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tpy={ 1 }\n\t\t\t\t\tpx={ 1.5 }\n\t\t\t\t\tsx={ { columnGap: 0.5, borderBottom: '1px solid', borderColor: 'divider', width: '100%', mb: 1.5 } }\n\t\t\t\t>\n\t\t\t\t\t<Typography variant=\"caption\" sx={ { color: 'text.primary', fontWeight: '500', lineHeight: 1 } }>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"start\" px={ 1.5 } mb={ 1.5 }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<FormLabel size=\"tiny\">{ name }</FormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tplaceholder={ __( 'Enter value', 'elementor' ) }\n\t\t\t\t\t\t\tvalue={ propLabel ?? '' }\n\t\t\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\t\t\t\t\t\tconst newValue = e.target.value;\n\t\t\t\t\t\t\t\tsetPropLabel( newValue );\n\t\t\t\t\t\t\t\tconst validationResult = validatePropLabel(\n\t\t\t\t\t\t\t\t\tnewValue,\n\t\t\t\t\t\t\t\t\texistingLabels,\n\t\t\t\t\t\t\t\t\tcurrentValue?.label\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsetError( validationResult.errorMessage );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\terror={ Boolean( error ) }\n\t\t\t\t\t\t\thelperText={ error }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"start\" px={ 1.5 } mb={ 1.5 }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<FormLabel size=\"tiny\">{ groupName }</FormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tname={ groupName }\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tvalue={ group ?? null }\n\t\t\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLSelectElement > ) =>\n\t\t\t\t\t\t\t\tsetGroup( e.target.value as string | null )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdisplayEmpty\n\t\t\t\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\t\t\t\tconst [ firstGroup = DEFAULT_GROUP ] = groups ?? [];\n\n\t\t\t\t\t\t\t\t\treturn firstGroup.label;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn groups?.find( ( { value } ) => value === selectedValue )?.label ?? selectedValue;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ ( groups ?? [ DEFAULT_GROUP ] ).map( ( { label: groupLabel, ...props } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ groupLabel }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Stack direction=\"row\" justifyContent=\"flex-end\" alignSelf=\"end\" mt={ 1.5 } py={ 1 } px={ 1.5 }>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tdisabled={ ! propLabel || Boolean( error ) }\n\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ctaLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</Form>\n\t);\n}\n","import { __ } from '@wordpress/i18n';\n\nexport const ERROR_MESSAGES = {\n\tEMPTY_NAME: __( 'Property name is required', 'elementor' ),\n\tDUPLICATE_NAME: __( 'Property name already exists', 'elementor' ),\n} as const;\n\ntype ValidationResult = {\n\tisValid: boolean;\n\terrorMessage: string | null;\n};\n\nexport function validatePropLabel( label: string, existingLabels: string[], currentLabel?: string ): ValidationResult {\n\tconst trimmedLabel = label.trim();\n\n\tif ( ! trimmedLabel ) {\n\t\treturn { isValid: false, errorMessage: ERROR_MESSAGES.EMPTY_NAME };\n\t}\n\n\tconst normalizedLabel = trimmedLabel.toLowerCase();\n\tconst normalizedCurrentLabel = currentLabel?.trim().toLowerCase();\n\n\tconst isDuplicate = existingLabels.some( ( existingLabel ) => {\n\t\tconst normalizedExisting = existingLabel.trim().toLowerCase();\n\n\t\tif ( normalizedCurrentLabel && normalizedExisting === normalizedCurrentLabel ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn normalizedExisting === normalizedLabel;\n\t} );\n\n\tif ( isDuplicate ) {\n\t\treturn { isValid: false, errorMessage: ERROR_MESSAGES.DUPLICATE_NAME };\n\t}\n\n\treturn { isValid: true, errorMessage: null };\n}\n","import * as React from 'react';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tBox,\n\tstyled,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemProps,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n\ttype UnstableSortableProviderProps,\n} from '@elementor/ui';\n\nexport const SortableProvider = < T extends string >( props: UnstableSortableProviderProps< T > ) => (\n\t<UnstableSortableProvider restrictAxis variant=\"static\" dragPlaceholderStyle={ { opacity: '1' } } { ...props } />\n);\n\nexport type SortableTriggerProps = React.HTMLAttributes< HTMLDivElement > & {\n\ttriggerClassName?: string;\n};\n\nexport const SortableTrigger = ( { triggerClassName, ...props }: SortableTriggerProps ) => (\n\t<StyledSortableTrigger\n\t\t{ ...props }\n\t\trole=\"button\"\n\t\tclassName={ `sortable-trigger ${ triggerClassName ?? '' }`.trim() }\n\t\taria-label=\"sort\"\n\t>\n\t\t<GripVerticalIcon fontSize=\"tiny\" />\n\t</StyledSortableTrigger>\n);\n\ntype SortableItemProps = {\n\tid: UnstableSortableItemProps[ 'id' ];\n\tchildren: ( props: SortableItemRenderData ) => React.ReactNode;\n};\n\nexport type SortableItemRenderData = {\n\tisDragged: boolean;\n\tisDragPlaceholder: boolean;\n\ttriggerProps: React.HTMLAttributes< HTMLElement >;\n\ttriggerStyle: React.CSSProperties;\n};\n\nexport const SortableItem = ( { children, id }: SortableItemProps ) => (\n\t<UnstableSortableItem\n\t\tid={ id }\n\t\trender={ ( {\n\t\t\titemProps,\n\t\t\tisDragged,\n\t\t\ttriggerProps,\n\t\t\titemStyle,\n\t\t\ttriggerStyle,\n\t\t\tdropIndicationStyle,\n\t\t\tshowDropIndication,\n\t\t\tisDragOverlay,\n\t\t\tisDragPlaceholder,\n\t\t}: UnstableSortableItemRenderProps ) => (\n\t\t\t<Box\n\t\t\t\t{ ...itemProps }\n\t\t\t\tstyle={ itemStyle }\n\t\t\t\tcomponent=\"div\"\n\t\t\t\trole=\"listitem\"\n\t\t\t\tsx={ {\n\t\t\t\t\tbackgroundColor: isDragOverlay ? 'background.paper' : undefined,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ children( {\n\t\t\t\t\tisDragged,\n\t\t\t\t\tisDragPlaceholder,\n\t\t\t\t\ttriggerProps,\n\t\t\t\t\ttriggerStyle,\n\t\t\t\t} ) }\n\t\t\t\t{ showDropIndication && <SortableItemIndicator style={ dropIndicationStyle } /> }\n\t\t\t</Box>\n\t\t) }\n\t/>\n);\n\nconst StyledSortableTrigger = styled( 'div' )( ( { theme } ) => ( {\n\tposition: 'absolute',\n\tleft: '-2px',\n\ttop: '50%',\n\ttransform: `translate( -${ theme.spacing( 1.5 ) }, -50% )`,\n\tcolor: theme.palette.action.active,\n\tcursor: 'grab',\n} ) );\n\nconst SortableItemIndicator = styled( Box )`\n\twidth: 100%;\n\theight: 1px;\n\tbackground-color: ${ ( { theme } ) => theme.palette.text.primary };\n`;\n","import { useState } from 'react';\nimport type * as React from 'react';\nimport { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { useEditable } from '@elementor/editor-ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { renameOverridableGroup } from '../../store/actions/rename-overridable-group';\nimport { useCurrentComponentId } from '../../store/store';\nimport { useOverridableProps } from '../component-panel-header/use-overridable-props';\nimport { validateGroupLabel } from './utils/validate-group-label';\n\nexport type GroupLabelEditableState = {\n\teditableRef: React.RefObject< HTMLElement | null >;\n\tisEditing: boolean;\n\terror: string | null;\n\tgetEditableProps: () => { value: string };\n\tsetEditingGroupId: ( groupId: string ) => void;\n\teditingGroupId: string | null;\n};\n\nexport function useCurrentEditableItem(): GroupLabelEditableState {\n\tconst [ editingGroupId, setEditingGroupId ] = useState< string | null >( null );\n\tconst currentComponentId = useCurrentComponentId();\n\tconst overridableProps = useOverridableProps( currentComponentId );\n\n\tconst allGroupsRecord = overridableProps?.groups?.items ?? {};\n\tconst currentGroup = editingGroupId ? allGroupsRecord[ editingGroupId ] : null;\n\n\tconst validateLabel = ( newLabel: string ): string | null => {\n\t\tconst otherGroups = Object.fromEntries(\n\t\t\tObject.entries( allGroupsRecord ).filter( ( [ id ] ) => id !== editingGroupId )\n\t\t);\n\n\t\treturn validateGroupLabel( newLabel, otherGroups ) || null;\n\t};\n\n\tconst handleSubmit = ( newLabel: string ) => {\n\t\tif ( ! editingGroupId || ! currentComponentId ) {\n\t\t\tthrow new Error( __( 'Group ID or component ID is missing', 'elementor' ) );\n\t\t}\n\n\t\trenameOverridableGroup( {\n\t\t\tcomponentId: currentComponentId,\n\t\t\tgroupId: editingGroupId,\n\t\t\tlabel: newLabel,\n\t\t} );\n\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst {\n\t\tref: editableRef,\n\t\topenEditMode,\n\t\tisEditing,\n\t\terror,\n\t\tgetProps: getEditableProps,\n\t} = useEditable( {\n\t\tvalue: currentGroup?.label ?? '',\n\t\tonSubmit: handleSubmit,\n\t\tvalidation: validateLabel,\n\t} );\n\n\treturn {\n\t\teditableRef,\n\t\tisEditing,\n\t\terror,\n\t\tgetEditableProps,\n\t\tsetEditingGroupId: ( groupId ) => {\n\t\t\tsetEditingGroupId( groupId );\n\t\t\topenEditMode();\n\t\t},\n\t\teditingGroupId,\n\t};\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\nimport { renameGroup } from '../utils/groups-transformers';\n\ntype RenameGroupParams = {\n\tcomponentId: ComponentId;\n\tgroupId: string;\n\tlabel: string;\n};\n\nexport function renameOverridableGroup( { componentId, groupId, label }: RenameGroupParams ): boolean {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn false;\n\t}\n\n\tconst group = overridableProps.groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn false;\n\t}\n\n\tconst updatedGroups = renameGroup( overridableProps.groups, groupId, label );\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: updatedGroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\treturn true;\n}\n","import { __ } from '@wordpress/i18n';\n\nimport { type OverridablePropsGroup } from '../../../types';\n\nexport const ERROR_MESSAGES = {\n\tEMPTY_NAME: __( 'Group name is required', 'elementor' ),\n\tDUPLICATE_NAME: __( 'Group name already exists', 'elementor' ),\n} as const;\n\nexport function validateGroupLabel( label: string, existingGroups: Record< string, OverridablePropsGroup > ): string {\n\tconst trimmedLabel = label.trim();\n\n\tif ( ! trimmedLabel ) {\n\t\treturn ERROR_MESSAGES.EMPTY_NAME;\n\t}\n\n\tconst isDuplicate = Object.values( existingGroups ).some( ( group ) => group.label === trimmedLabel );\n\n\tif ( isDuplicate ) {\n\t\treturn ERROR_MESSAGES.DUPLICATE_NAME;\n\t}\n\n\treturn '';\n}\n","import { type OverridablePropsGroup } from '../../../types';\n\nconst DEFAULT_NEW_GROUP_LABEL = 'New group';\n\nexport function generateUniqueLabel( groups: OverridablePropsGroup[] ): string {\n\tconst existingLabels = new Set( groups.map( ( group ) => group.label ) );\n\n\tif ( ! existingLabels.has( DEFAULT_NEW_GROUP_LABEL ) ) {\n\t\treturn DEFAULT_NEW_GROUP_LABEL;\n\t}\n\n\tlet index = 1;\n\tlet newLabel = `${ DEFAULT_NEW_GROUP_LABEL }-${ index }`;\n\n\twhile ( existingLabels.has( newLabel ) ) {\n\t\tindex++;\n\t\tnewLabel = `${ DEFAULT_NEW_GROUP_LABEL }-${ index }`;\n\t}\n\n\treturn newLabel;\n}\n","import * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { ComponentPropListIcon } from '@elementor/icons';\nimport { Badge, Box, keyframes, styled, ToggleButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const ComponentsBadge = React.forwardRef<\n\tHTMLDivElement,\n\t{ overridablePropsCount: number; onClick: () => void }\n>( ( { overridablePropsCount, onClick }, ref ) => {\n\tconst prevCount = usePrevious( overridablePropsCount );\n\n\tconst isFirstExposedProperty = prevCount === 0 && overridablePropsCount === 1;\n\n\treturn (\n\t\t<StyledBadge\n\t\t\tref={ ref }\n\t\t\tcolor=\"primary\"\n\t\t\tkey={ overridablePropsCount }\n\t\t\tinvisible={ overridablePropsCount === 0 }\n\t\t\tanimate={ isFirstExposedProperty }\n\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\tbadgeContent={\n\t\t\t\t<Box sx={ { animation: ! isFirstExposedProperty ? `${ slideUp } 300ms ease-out` : 'none' } }>\n\t\t\t\t\t{ overridablePropsCount }\n\t\t\t\t</Box>\n\t\t\t}\n\t\t>\n\t\t\t<Tooltip title={ __( 'Component properties', 'elementor' ) }>\n\t\t\t\t<ToggleButton\n\t\t\t\t\tvalue=\"exposed properties\"\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\taria-label={ __( 'Component properties', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<ComponentPropListIcon fontSize=\"tiny\" />\n\t\t\t\t</ToggleButton>\n\t\t\t</Tooltip>\n\t\t</StyledBadge>\n\t);\n} );\n\nconst StyledBadge = styled( Badge, { shouldForwardProp: ( prop ) => prop !== 'animate' } )(\n\t( { theme, animate } ) => ( {\n\t\t'& .MuiBadge-badge': {\n\t\t\tminWidth: theme.spacing( 2 ),\n\t\t\theight: theme.spacing( 2 ),\n\t\t\tminHeight: theme.spacing( 2 ),\n\t\t\tmaxWidth: theme.spacing( 2 ),\n\t\t\tfontSize: theme.typography.caption.fontSize as string,\n\t\t\tanimation: animate ? `${ bounceIn } 300ms ease-out` : 'none',\n\t\t},\n\t} )\n);\n\nfunction usePrevious< T >( value: T ) {\n\tconst ref = useRef< T >( value );\n\tuseEffect( () => {\n\t\tref.current = value;\n\t}, [ value ] );\n\treturn ref.current;\n}\n\nconst bounceIn = keyframes`\n\t0% { transform: scale(0) translate(50%, 50%); opacity: 0; }\n\t70% { transform: scale(1.1) translate(50%, -50%); opacity: 1; }\n\t100% { transform: scale(1) translate(50%, -50%); opacity: 1; }\n`;\n\nconst slideUp = keyframes`\n\tfrom { transform: translateY(100%); opacity: 0; }\n\tto { transform: translateY(0); opacity: 1; }\n`;\n","import * as React from 'react';\nimport { ThemeProvider } from '@elementor/editor-ui';\n\nimport { useComponents } from '../../hooks/use-components';\nimport { isProUser } from '../../utils/is-pro-user';\nimport { ComponentSearch } from './component-search';\nimport { ComponentsList } from './components-list';\nimport { ComponentsProNotification } from './components-pro-notification';\nimport { SearchProvider } from './search-provider';\n\nconst ComponentsContent = () => {\n\tconst { components, isLoading } = useComponents();\n\tconst hasComponents = ! isLoading && components.length > 0;\n\n\treturn (\n\t\t<>\n\t\t\t{ hasComponents && <ComponentSearch /> }\n\t\t\t{ hasComponents && ! isProUser() && <ComponentsProNotification /> }\n\t\t\t<ComponentsList />\n\t\t</>\n\t);\n};\n\nexport const Components = () => {\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<SearchProvider localStorageKey=\"elementor-components-search\">\n\t\t\t\t<ComponentsContent />\n\t\t\t</SearchProvider>\n\t\t</ThemeProvider>\n\t);\n};\n","import { __useSelector as useSelector } from '@elementor/store';\n\nimport { selectComponents, selectLoadIsPending } from '../store/store';\n\nexport const useComponents = () => {\n\tconst components = useSelector( selectComponents );\n\tconst isLoading = useSelector( selectLoadIsPending );\n\n\treturn { components, isLoading };\n};\n","type ExtendedWindow = Window & {\n\telementor?: {\n\t\thelpers?: {\n\t\t\thasPro?: () => boolean;\n\t\t};\n\t};\n\telementorPro?: {\n\t\tconfig?: {\n\t\t\tisActive?: boolean;\n\t\t};\n\t};\n};\n\nexport function isProUser(): boolean {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst hasPro = extendedWindow.elementor?.helpers?.hasPro?.() ?? false;\n\n\tif ( ! hasPro ) {\n\t\treturn false;\n\t}\n\n\tconst isProActive = extendedWindow.elementorPro?.config?.isActive ?? false;\n\n\treturn isProActive;\n}\n","import * as React from 'react';\nimport { SearchIcon } from '@elementor/icons';\nimport { Box, InputAdornment, Stack, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useSearch } from './search-provider';\n\nexport const ComponentSearch = () => {\n\tconst { inputValue, handleChange } = useSearch();\n\n\treturn (\n\t\t<Stack direction=\"row\" gap={ 0.5 } sx={ { width: '100%', px: 2, py: 1.5 } }>\n\t\t\t<Box sx={ { flexGrow: 1 } }>\n\t\t\t\t<TextField\n\t\t\t\t\trole={ 'search' }\n\t\t\t\t\tfullWidth\n\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) => handleChange( e.target.value ) }\n\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t<InputAdornment position=\"start\">\n\t\t\t\t\t\t\t\t<SearchIcon fontSize={ 'tiny' } />\n\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { useSearchState, type UseSearchStateResult } from '@elementor/utils';\n\ntype SearchContextType = Pick< UseSearchStateResult, 'handleChange' | 'inputValue' > & {\n\tsearchValue: UseSearchStateResult[ 'debouncedValue' ];\n\tclearSearch: () => void;\n};\n\nconst SearchContext = createContext< SearchContextType | undefined >( undefined );\n\nexport const SearchProvider = ( {\n\tchildren,\n\tlocalStorageKey,\n}: {\n\tchildren: React.ReactNode;\n\tlocalStorageKey: string;\n} ) => {\n\tconst { debouncedValue, handleChange, inputValue } = useSearchState( { localStorageKey } );\n\n\tconst clearSearch = () => {\n\t\thandleChange( '' );\n\t};\n\n\treturn (\n\t\t<SearchContext.Provider value={ { handleChange, clearSearch, searchValue: debouncedValue, inputValue } }>\n\t\t\t{ children }\n\t\t</SearchContext.Provider>\n\t);\n};\n\nexport const useSearch = () => {\n\tconst context = useContext( SearchContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'useSearch must be used within a SearchProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { getAngieSdk } from '@elementor/editor-mcp';\nimport { AIIcon, ComponentsIcon } from '@elementor/icons';\nimport { Box, Button, Divider, Link, List, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponents } from '../../hooks/use-components';\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\nimport { renameComponent } from '../../store/actions/rename-component';\nimport { AngiePromotionModal } from './angie-promotion-modal';\nimport { ComponentItem } from './components-item';\nimport { LoadingComponents } from './loading-components';\nimport { useSearch } from './search-provider';\n\nconst LEARN_MORE_URL = 'http://go.elementor.com/components-guide-article';\n\n// Override legacy panel CSS reset that sets h1-h6 to font-size:100% and font-weight:normal.\n// See: assets/dev/scss/editor/panel/_reset.scss (applied via :where() selector in panel.scss).\nconst SUBTITLE_OVERRIDE_SX = {\n\tfontSize: '0.875rem !important',\n\tfontWeight: '500 !important',\n};\n\nexport function ComponentsList() {\n\tconst { components, isLoading, searchValue } = useFilteredComponents();\n\n\tif ( isLoading ) {\n\t\treturn <LoadingComponents />;\n\t}\n\tconst isEmpty = ! components || components.length === 0;\n\tif ( isEmpty ) {\n\t\tif ( searchValue.length > 0 ) {\n\t\t\treturn <EmptySearchResult />;\n\t\t}\n\t\treturn <EmptyState />;\n\t}\n\n\treturn (\n\t\t<List sx={ { display: 'flex', flexDirection: 'column', gap: 1, px: 2 } }>\n\t\t\t{ components.map( ( component ) => (\n\t\t\t\t<ComponentItem\n\t\t\t\t\tkey={ component.uid }\n\t\t\t\t\tcomponent={ component }\n\t\t\t\t\trenameComponent={ ( newName ) => {\n\t\t\t\t\t\trenameComponent( component.uid, newName );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</List>\n\t);\n}\n\nconst EmptyState = () => {\n\tconst [ isAngieModalOpen, setIsAngieModalOpen ] = useState( false );\n\n\tconst { canCreate } = useComponentsPermissions();\n\n\tconst handleCreateWithAI = () => {\n\t\tconst sdk = getAngieSdk();\n\n\t\tif ( sdk.isAngieReady() ) {\n\t\t\tsdk.triggerAngie( {\n\t\t\t\tprompt: __(\n\t\t\t\t\t'Create a [hero/testimonial/product card/CTA/feature] component for my [business type]. Include [describe what you want]',\n\t\t\t\t\t'elementor'\n\t\t\t\t),\n\t\t\t\tcontext: { source: 'components-panel-empty-state' },\n\t\t\t} );\n\t\t} else {\n\t\t\tsetIsAngieModalOpen( true );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Stack\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"start\"\n\t\t\theight=\"100%\"\n\t\t\tsx={ { px: 2, py: 4 } }\n\t\t\tgap={ 2 }\n\t\t\toverflow=\"hidden\"\n\t\t>\n\t\t\t<Stack alignItems=\"center\" gap={ 1 }>\n\t\t\t\t<ComponentsIcon fontSize=\"large\" sx={ { color: 'text.secondary' } } />\n\n\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\" sx={ SUBTITLE_OVERRIDE_SX }>\n\t\t\t\t\t{ __( 'No components yet', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"secondary\" sx={ { maxWidth: 200 } }>\n\t\t\t\t\t{ __( 'Components are reusable blocks that sync across your site.', 'elementor' ) }\n\t\t\t\t\t<br />\n\t\t\t\t\t{ canCreate\n\t\t\t\t\t\t? __( 'Create once, use everywhere.', 'elementor' )\n\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t'With your current role, you cannot create components. Contact an administrator to create one.',\n\t\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t ) }\n\t\t\t\t</Typography>\n\t\t\t\t<Link\n\t\t\t\t\thref={ LEARN_MORE_URL }\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\tcolor=\"info.main\"\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Learn more about components', 'elementor' ) }\n\t\t\t\t</Link>\n\t\t\t</Stack>\n\n\t\t\t{ canCreate && (\n\t\t\t\t<>\n\t\t\t\t\t<Divider sx={ { width: '100%' } } />\n\t\t\t\t\t<Stack alignItems=\"center\" gap={ 1 } width=\"100%\">\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ SUBTITLE_OVERRIDE_SX }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create your first one:', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"secondary\" sx={ { maxWidth: 228 } }>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Right-click any div-block or flexbox on your canvas or structure and select \"Create component\"',\n\t\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Typography>\n\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"secondary\">\n\t\t\t\t\t\t\t{ __( 'Or', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\n\t\t\t\t\t\t<AngiePromotionModal open={ isAngieModalOpen } onClose={ () => setIsAngieModalOpen( false ) }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tonClick={ handleCreateWithAI }\n\t\t\t\t\t\t\t\tendIcon={ <AIIcon /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Create component with AI', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</AngiePromotionModal>\n\t\t\t\t\t</Stack>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n\nconst EmptySearchResult = () => {\n\tconst { searchValue, clearSearch } = useSearch();\n\treturn (\n\t\t<Stack\n\t\t\tcolor={ 'text.secondary' }\n\t\t\tpt={ 5 }\n\t\t\talignItems=\"center\"\n\t\t\tgap={ 1 }\n\t\t\toverflow={ 'hidden' }\n\t\t\tjustifySelf={ 'center' }\n\t\t>\n\t\t\t<ComponentsIcon />\n\t\t\t<Box\n\t\t\t\tsx={ {\n\t\t\t\t\twidth: '100%',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"inherit\" sx={ SUBTITLE_OVERRIDE_SX }>\n\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t\t{ searchValue && (\n\t\t\t\t\t<Typography\n\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t...SUBTITLE_OVERRIDE_SX,\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>“</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tmaxWidth: '80%',\n\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span>”.</span>\n\t\t\t\t\t</Typography>\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"inherit\">\n\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"inherit\">\n\t\t\t\t<Link color=\"secondary\" variant=\"caption\" component=\"button\" onClick={ clearSearch }>\n\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t</Link>\n\t\t\t</Typography>\n\t\t</Stack>\n\t);\n};\n\nconst useFilteredComponents = () => {\n\tconst { components, isLoading } = useComponents();\n\tconst { searchValue } = useSearch();\n\n\treturn {\n\t\tcomponents: components.filter( ( component ) =>\n\t\t\tcomponent.name.toLowerCase().includes( searchValue.toLowerCase() )\n\t\t),\n\t\tisLoading,\n\t\tsearchValue,\n\t};\n};\n","import { useCurrentUserCapabilities } from '@elementor/editor-current-user';\n\nexport const useComponentsPermissions = () => {\n\tconst { isAdmin } = useCurrentUserCapabilities();\n\n\treturn {\n\t\tcanCreate: isAdmin,\n\t\tcanEdit: isAdmin,\n\t\tcanDelete: isAdmin,\n\t\tcanRename: isAdmin,\n\t};\n};\n","import { getV1DocumentsManager, setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { getAllDescendants, type V1Element } from '@elementor/editor-elements';\nimport { __dispatch as dispatch } from '@elementor/store';\n\nimport { COMPONENT_WIDGET_TYPE } from '../../create-component-type';\nimport { slice } from '../store';\n\nconst TITLE_EXTERNAL_CHANGE_COMMAND = 'title_external_change';\n\nexport const renameComponent = ( componentUid: string, newName: string ) => {\n\tdispatch( slice.actions.rename( { componentUid, name: newName } ) );\n\n\tsetDocumentModifiedStatus( true );\n\n\trefreshComponentInstanceTitles( componentUid );\n};\n\nfunction refreshComponentInstanceTitles( componentUid: string ) {\n\tconst documentContainer = getDocumentContainer();\n\n\tif ( ! documentContainer ) {\n\t\treturn;\n\t}\n\n\tconst componentInstances = findComponentInstancesByUid( documentContainer, componentUid );\n\n\tcomponentInstances.forEach( ( element ) => {\n\t\telement.model.trigger?.( TITLE_EXTERNAL_CHANGE_COMMAND );\n\t} );\n}\n\nfunction getDocumentContainer(): V1Element | undefined {\n\tconst documentsManager = getV1DocumentsManager();\n\n\treturn documentsManager?.getCurrent()?.container as V1Element | undefined;\n}\n\nfunction findComponentInstancesByUid( documentContainer: V1Element, componentUid: string ): V1Element[] {\n\tconst allDescendants = getAllDescendants( documentContainer );\n\n\treturn allDescendants.filter( ( element ) => {\n\t\tconst widgetType = element.model.get( 'widgetType' );\n\t\tconst editorSettings = element.model.get( 'editor_settings' );\n\n\t\tconst isMatch = widgetType === COMPONENT_WIDGET_TYPE && editorSettings?.component_uid === componentUid;\n\n\t\treturn isMatch;\n\t} );\n}\n","import * as React from 'react';\nimport {\n\tButton,\n\tCard,\n\tCardActions,\n\tCardContent,\n\tCardHeader,\n\tCardMedia,\n\tClickAwayListener,\n\tCloseButton,\n\tInfotip,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst ANGIE_INSTALL_URL = '/wp-admin/plugin-install.php?tab=plugin-information&plugin=angie';\nconst PLACEHOLDER_IMAGE_URL = 'https://assets.elementor.com/packages/v1/images/components-angie-promo.svg';\n\ntype AngiePromotionCardProps = {\n\tonClose: () => void;\n};\n\ntype AngiePromotionModalProps = React.PropsWithChildren< {\n\topen: boolean;\n\tonClose: () => void;\n} >;\n\nexport const AngiePromotionModal = ( { children, open, onClose }: AngiePromotionModalProps ) => {\n\treturn (\n\t\t<Infotip placement=\"right-end\" arrow content={ <AngiePromotionCard onClose={ onClose } /> } open={ open }>\n\t\t\t{ children }\n\t\t</Infotip>\n\t);\n};\n\nfunction AngiePromotionCard( { onClose }: AngiePromotionCardProps ) {\n\tconst handleCtaClick = () => {\n\t\twindow.open( ANGIE_INSTALL_URL, '_blank' );\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<ClickAwayListener disableReactTree mouseEvent=\"onMouseDown\" touchEvent=\"onTouchStart\" onClickAway={ onClose }>\n\t\t\t<Card elevation={ 0 } sx={ { maxWidth: 296 } }>\n\t\t\t\t<CardHeader\n\t\t\t\t\ttitle={ __( 'Add new component with AI', 'elementor' ) }\n\t\t\t\t\ttitleTypographyProps={ { variant: 'subtitle2' } }\n\t\t\t\t\taction={ <CloseButton slotProps={ { icon: { fontSize: 'tiny' } } } onClick={ onClose } /> }\n\t\t\t\t/>\n\t\t\t\t<CardMedia\n\t\t\t\t\tcomponent=\"img\"\n\t\t\t\t\timage={ PLACEHOLDER_IMAGE_URL }\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tsx={ { width: '100%', aspectRatio: '16 / 9' } }\n\t\t\t\t/>\n\t\t\t\t<CardContent>\n\t\t\t\t\t<Typography variant=\"body2\" color=\"text.secondary\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Angie our AI assistant can easily create new components and save you the hassle of doing it yourself',\n\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Typography>\n\t\t\t\t</CardContent>\n\t\t\t\t<CardActions sx={ { justifyContent: 'flex-end' } }>\n\t\t\t\t\t<Button size=\"medium\" variant=\"contained\" color=\"accent\" onClick={ handleCtaClick }>\n\t\t\t\t\t\t{ __( 'Get Angie', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</CardActions>\n\t\t\t</Card>\n\t\t</ClickAwayListener>\n\t);\n}\n","import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { endDragElementFromPanel, startDragElementFromPanel } from '@elementor/editor-canvas';\nimport { dropElement, type DropElementParams, type V1ElementData } from '@elementor/editor-elements';\nimport { EditableField, EllipsisWithTooltip, MenuListItem, useEditable, WarningInfotip } from '@elementor/editor-ui';\nimport { ComponentsIcon, DotsVerticalIcon } from '@elementor/icons';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tListItemButton,\n\tListItemIcon,\n\tMenu,\n\tStack,\n\tstyled,\n\ttype Theme,\n\tTypography,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\nimport { archiveComponent } from '../../store/actions/archive-component';\nimport { loadComponentsAssets } from '../../store/actions/load-components-assets';\nimport { type Component } from '../../types';\nimport { validateComponentName } from '../../utils/component-name-validation';\nimport { getContainerForNewElement } from '../../utils/get-container-for-new-element';\nimport { createComponentModel } from '../create-component-form/utils/replace-element-with-component';\nimport { DeleteConfirmationDialog } from './delete-confirmation-dialog';\n\ntype ComponentItemProps = {\n\tcomponent: Omit< Component, 'id' > & { id?: number };\n\trenameComponent: ( newName: string ) => void;\n};\n\nexport const ComponentItem = ( { component, renameComponent }: ComponentItemProps ) => {\n\tconst itemRef = useRef< HTMLElement >( null );\n\tconst [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );\n\tconst { canRename, canDelete } = useComponentsPermissions();\n\n\tconst shouldShowActions = canRename || canDelete;\n\n\tconst {\n\t\tref: editableRef,\n\t\tisEditing,\n\t\topenEditMode,\n\t\terror,\n\t\tgetProps: getEditableProps,\n\t} = useEditable( {\n\t\tvalue: component.name,\n\t\tonSubmit: renameComponent,\n\t\tvalidation: validateComponentTitle,\n\t} );\n\tconst componentModel = createComponentModel( component );\n\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tdisableAutoFocus: true,\n\t} );\n\n\tconst handleClick = () => {\n\t\taddComponentToPage( componentModel );\n\t};\n\n\tconst handleDragEnd = () => {\n\t\tloadComponentsAssets( [ componentModel as V1ElementData ] );\n\n\t\tendDragElementFromPanel();\n\t};\n\n\tconst handleDeleteClick = () => {\n\t\tsetIsDeleteDialogOpen( true );\n\t\tpopupState.close();\n\t};\n\n\tconst handleDeleteConfirm = () => {\n\t\tif ( ! component.id ) {\n\t\t\tthrow new Error( 'Component ID is required' );\n\t\t}\n\n\t\tsetIsDeleteDialogOpen( false );\n\t\tarchiveComponent( component.id, component.name );\n\t};\n\n\tconst handleDeleteDialogClose = () => {\n\t\tsetIsDeleteDialogOpen( false );\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<WarningInfotip\n\t\t\t\topen={ Boolean( error ) }\n\t\t\t\ttext={ error ?? '' }\n\t\t\t\tplacement=\"bottom\"\n\t\t\t\twidth={ itemRef.current?.getBoundingClientRect().width }\n\t\t\t\toffset={ [ 0, -15 ] }\n\t\t\t>\n\t\t\t\t<ListItemButton\n\t\t\t\t\tdraggable\n\t\t\t\t\tonDragStart={ ( event: React.DragEvent ) => startDragElementFromPanel( componentModel, event ) }\n\t\t\t\t\tonDragEnd={ handleDragEnd }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tref={ itemRef }\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tborder: 'solid 1px',\n\t\t\t\t\t\tborderColor: 'divider',\n\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\tpx: 1,\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tgap: 1,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\tminWidth={ 0 }\n\t\t\t\t\t\tflexGrow={ 1 }\n\t\t\t\t\t\tonClick={ handleClick }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItemIcon size=\"tiny\">\n\t\t\t\t\t\t\t<ComponentsIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t<Indicator isActive={ isEditing } isError={ !! error }>\n\t\t\t\t\t\t\t<Box display=\"flex\" flex={ 1 } minWidth={ 0 } flexGrow={ 1 }>\n\t\t\t\t\t\t\t\t{ isEditing ? (\n\t\t\t\t\t\t\t\t\t<EditableField\n\t\t\t\t\t\t\t\t\t\tref={ editableRef }\n\t\t\t\t\t\t\t\t\t\tas={ Typography }\n\t\t\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\t\t\t{ ...getEditableProps() }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\t\t\t\t\t\ttitle={ component.name }\n\t\t\t\t\t\t\t\t\t\tas={ Typography }\n\t\t\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\t\t\tcolor=\"text.primary\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t</Indicator>\n\t\t\t\t\t</Box>\n\t\t\t\t\t{ shouldShowActions && (\n\t\t\t\t\t\t<IconButton size=\"tiny\" { ...bindTrigger( popupState ) } aria-label=\"More actions\">\n\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t) }\n\t\t\t\t</ListItemButton>\n\t\t\t</WarningInfotip>\n\t\t\t{ shouldShowActions && (\n\t\t\t\t<Menu\n\t\t\t\t\t{ ...bindMenu( popupState ) }\n\t\t\t\t\tanchorOrigin={ {\n\t\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t} }\n\t\t\t\t\ttransformOrigin={ {\n\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ canRename && (\n\t\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\t\tsx={ { minWidth: '160px' } }\n\t\t\t\t\t\t\tprimaryTypographyProps={ { variant: 'caption', color: 'text.primary' } }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tpopupState.close();\n\t\t\t\t\t\t\t\topenEditMode();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Rename', 'elementor' ) }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canDelete && (\n\t\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\t\tsx={ { minWidth: '160px' } }\n\t\t\t\t\t\t\tprimaryTypographyProps={ { variant: 'caption', color: 'error.light' } }\n\t\t\t\t\t\t\tonClick={ handleDeleteClick }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Delete', 'elementor' ) }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) }\n\t\t\t\t</Menu>\n\t\t\t) }\n\t\t\t<DeleteConfirmationDialog\n\t\t\t\topen={ isDeleteDialogOpen }\n\t\t\t\tonClose={ handleDeleteDialogClose }\n\t\t\t\tonConfirm={ handleDeleteConfirm }\n\t\t\t/>\n\t\t</Stack>\n\t);\n};\n\nconst addComponentToPage = ( model: DropElementParams[ 'model' ] ) => {\n\tconst { container, options } = getContainerForNewElement();\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Can't find container to drop new component instance at` );\n\t}\n\n\tloadComponentsAssets( [ model as V1ElementData ] );\n\n\tdropElement( {\n\t\tcontainerId: container.id,\n\t\tmodel,\n\t\toptions: { ...options, useHistory: false, scrollIntoView: true },\n\t} );\n};\n\nconst validateComponentTitle = ( newTitle: string ) => {\n\tconst result = validateComponentName( newTitle );\n\n\tif ( ! result.errorMessage ) {\n\t\treturn null;\n\t}\n\n\treturn result.errorMessage;\n};\n\nconst Indicator = styled( Box, {\n\tshouldForwardProp: ( prop ) => prop !== 'isActive' && prop !== 'isError',\n} )( ( { theme, isActive, isError } ) => ( {\n\tdisplay: 'flex',\n\twidth: '100%',\n\tflexGrow: 1,\n\tborderRadius: theme.spacing( 0.5 ),\n\tborder: getIndicatorBorder( { isActive, isError, theme } ),\n\tpadding: `0 ${ theme.spacing( 1 ) }`,\n\tmarginLeft: isActive ? theme.spacing( 1 ) : 0,\n\tminWidth: 0,\n} ) );\n\nconst getIndicatorBorder = ( { isActive, isError, theme }: { isActive: boolean; isError: boolean; theme: Theme } ) => {\n\tif ( isError ) {\n\t\treturn `2px solid ${ theme.palette.error.main }`;\n\t}\n\n\tif ( isActive ) {\n\t\treturn `2px solid ${ theme.palette.secondary.main }`;\n\t}\n\n\treturn 'none';\n};\n","import { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { __dispatch as dispatch } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { slice } from '../store';\n\nconst successNotification = ( componentId: number, componentName: string ): NotificationData => ( {\n\ttype: 'success',\n\t/* translators: %s: component name */\n\tmessage: __( 'Successfully deleted component %s', 'elementor' ).replace( '%s', componentName ),\n\tid: `success-archived-components-notification-${ componentId }`,\n} );\n\nexport const archiveComponent = ( componentId: number, componentName: string ) => {\n\tdispatch( slice.actions.archive( componentId ) );\n\tsetDocumentModifiedStatus( true );\n\tnotify( successNotification( componentId, componentName ) );\n};\n","import { isDocumentDirty, setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\n\nimport { getComponentDocumentData } from '../../utils/component-document-data';\nimport { getComponentIds } from '../../utils/get-component-ids';\nimport { loadComponentsOverridableProps } from './load-components-overridable-props';\nimport { loadComponentsStyles } from './load-components-styles';\n\nexport async function loadComponentsAssets( elements: V1ElementData[] ) {\n\tconst componentIds = await getComponentIds( elements );\n\n\treturn Promise.all( [\n\t\tupdateDocumentState( componentIds ),\n\t\tloadComponentsOverridableProps( componentIds ),\n\t\tloadComponentsStyles( componentIds ),\n\t] );\n}\n\nasync function updateDocumentState( componentIds: number[] ) {\n\tconst components = ( await Promise.all( componentIds.map( getComponentDocumentData ) ) ).filter(\n\t\t( document ) => !! document\n\t);\n\n\tconst isDrafted = components.some( isDocumentDirty );\n\n\tif ( isDrafted ) {\n\t\tsetDocumentModifiedStatus( true );\n\t}\n}\n","import { type V1ElementData } from '@elementor/editor-elements';\n\nimport { type ComponentInstanceProp } from '../prop-types/component-instance-prop-type';\nimport { getComponentDocumentData } from './component-document-data';\nimport { isComponentInstance } from './is-component-instance';\n\nexport const getComponentIds = async ( elements: V1ElementData[] ): Promise< number[] > => {\n\tconst components = elements.map( async ( { widgetType, elType, elements: childElements, settings } ) => {\n\t\tconst ids: number[] = [];\n\n\t\tconst isComponent = isComponentInstance( { widgetType, elType } );\n\n\t\tif ( isComponent ) {\n\t\t\tconst componentId = ( settings?.component_instance as ComponentInstanceProp )?.value?.component_id.value;\n\n\t\t\tif ( ! componentId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst document = await getComponentDocumentData( componentId );\n\n\t\t\tchildElements = document?.elements;\n\n\t\t\tif ( Boolean( componentId ) ) {\n\t\t\t\tids.push( componentId );\n\t\t\t}\n\t\t}\n\n\t\tif ( !! childElements?.length ) {\n\t\t\tconst newIds = await getComponentIds( childElements );\n\n\t\t\tids.push( ...Array.from( new Set( newIds ) ) );\n\t\t}\n\n\t\treturn ids;\n\t} );\n\n\tconst result = ( await Promise.all( components ) ).flat();\n\n\treturn Array.from( new Set( result ) ).filter( ( value ) => value !== undefined );\n};\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../../api';\nimport { selectIsOverridablePropsLoaded, slice } from '../store';\n\nexport function loadComponentsOverridableProps( componentIds: number[] ) {\n\tif ( ! componentIds.length ) {\n\t\treturn;\n\t}\n\n\tcomponentIds.forEach( loadComponentOverrides );\n}\n\nasync function loadComponentOverrides( componentId: number ) {\n\tconst isOverridablePropsLoaded = selectIsOverridablePropsLoaded( getState(), componentId );\n\n\tif ( isOverridablePropsLoaded ) {\n\t\treturn;\n\t}\n\n\tconst overridableProps = await apiClient.getOverridableProps( componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps,\n\t\t} )\n\t);\n}\n","import { type V1ElementData } from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../../api';\nimport { type ComponentId } from '../../types';\nimport { selectStyles, slice } from '../store';\n\nexport async function loadComponentsStyles( componentIds: number[] ) {\n\tif ( ! componentIds.length ) {\n\t\treturn;\n\t}\n\n\tconst knownComponents = selectStyles( getState() );\n\tconst unknownComponentIds = componentIds.filter( ( id ) => ! knownComponents[ id ] );\n\n\tif ( ! unknownComponentIds.length ) {\n\t\treturn;\n\t}\n\n\tawait addComponentStyles( unknownComponentIds );\n}\n\nasync function addComponentStyles( ids: ComponentId[] ) {\n\tconst newComponents = await loadStyles( ids );\n\n\taddStyles( newComponents );\n}\n\nasync function loadStyles( ids: number[] ): Promise< [ number, V1ElementData ][] > {\n\treturn Promise.all( ids.map( async ( id ) => [ id, await apiClient.getComponentConfig( id ) ] ) );\n}\n\nfunction addStyles( data: ( readonly [ ComponentId, V1ElementData ] )[] ) {\n\tconst styles = Object.fromEntries(\n\t\tdata.map( ( [ componentId, componentData ] ) => [ componentId, extractStyles( componentData ) ] )\n\t);\n\n\tdispatch( slice.actions.addStyles( styles ) );\n}\n\nfunction extractStyles( element: V1ElementData ): Array< StyleDefinition > {\n\treturn [ ...Object.values( element.styles ?? {} ), ...( element.elements ?? [] ).flatMap( extractStyles ) ];\n}\n","import { __getState as getState } from '@elementor/store';\n\nimport { createSubmitComponentSchema } from '../components/create-component-form/utils/component-form-schema';\nimport { selectComponents } from '../store/store';\n\ntype ValidationResult = { isValid: true; errorMessage: null } | { isValid: false; errorMessage: string };\n\nexport function validateComponentName( label: string ): ValidationResult {\n\tconst existingComponentTitles = selectComponents( getState() )?.map( ( { name } ) => name ) ?? [];\n\tconst schema = createSubmitComponentSchema( existingComponentTitles );\n\tconst result = schema.safeParse( { componentName: label.toLowerCase() } );\n\n\tif ( result.success ) {\n\t\treturn {\n\t\t\tisValid: true,\n\t\t\terrorMessage: null,\n\t\t};\n\t}\n\n\tconst formattedErrors = result.error.format();\n\tconst errorMessage = formattedErrors.componentName?._errors[ 0 ] ?? formattedErrors._errors[ 0 ];\n\n\treturn {\n\t\tisValid: false,\n\t\terrorMessage,\n\t};\n}\n","import { z } from '@elementor/schema';\nimport { __ } from '@wordpress/i18n';\n\nexport const MIN_NAME_LENGTH = 2;\nconst MAX_NAME_LENGTH = 50;\n\nconst baseComponentSchema = z\n\t.string()\n\t.trim()\n\t.max( MAX_NAME_LENGTH, __( 'Component name is too long. Please keep it under 50 characters.', 'elementor' ) );\n\nexport const createBaseComponentSchema = ( existingNames: string[] ) => {\n\treturn z.object( {\n\t\tcomponentName: baseComponentSchema.refine( ( value ) => ! existingNames.includes( value ), {\n\t\t\tmessage: __( 'Component name already exists', 'elementor' ),\n\t\t} ),\n\t} );\n};\n\nexport const createSubmitComponentSchema = ( existingNames: string[] ) => {\n\tconst baseSchema = createBaseComponentSchema( existingNames );\n\n\treturn baseSchema.extend( {\n\t\tcomponentName: baseSchema.shape.componentName\n\t\t\t.refine( ( value ) => value.length > 0, {\n\t\t\t\tmessage: __( 'Component name is required.', 'elementor' ),\n\t\t\t} )\n\t\t\t.refine( ( value ) => value.length >= MIN_NAME_LENGTH, {\n\t\t\t\tmessage: __( 'Component name is too short. Please enter at least 2 characters.', 'elementor' ),\n\t\t\t} ),\n\t} );\n};\n","import {\n\tgetContainer,\n\tgetCurrentDocumentContainer,\n\tgetSelectedElements,\n\ttype V1Element,\n} from '@elementor/editor-elements';\n\nexport const getContainerForNewElement = (): { container: V1Element | null; options?: { at: number } } => {\n\tconst currentDocumentContainer = getCurrentDocumentContainer();\n\tconst selectedElement = getSelectedElementContainer();\n\n\tlet container, options;\n\n\tif ( selectedElement ) {\n\t\tswitch ( selectedElement.model.get( 'elType' ) ) {\n\t\t\tcase 'widget': {\n\t\t\t\tcontainer = selectedElement?.parent;\n\n\t\t\t\tconst selectedElIndex = selectedElement.view?._index ?? -1;\n\n\t\t\t\tif ( selectedElIndex > -1 ) {\n\t\t\t\t\toptions = { at: selectedElIndex + 1 };\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'section': {\n\t\t\t\tcontainer = selectedElement?.children?.[ 0 ];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tcontainer = selectedElement;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { container: container ?? currentDocumentContainer, options };\n};\n\nfunction getSelectedElementContainer() {\n\tconst selectedElements = getSelectedElements();\n\n\tif ( selectedElements.length !== 1 ) {\n\t\treturn undefined;\n\t}\n\n\treturn getContainer( selectedElements[ 0 ].id );\n}\n","import { replaceElement, type V1ElementData, type V1ElementModelProps } from '@elementor/editor-elements';\n\ntype ComponentInstanceParams = {\n\tid?: number;\n\tname: string;\n\tuid: string;\n};\n\nexport const replaceElementWithComponent = async ( element: V1ElementData, component: ComponentInstanceParams ) => {\n\treturn await replaceElement( {\n\t\tcurrentElement: element,\n\t\tnewElement: createComponentModel( component ),\n\t\twithHistory: false,\n\t} );\n};\n\nexport const createComponentModel = ( component: ComponentInstanceParams ): Omit< V1ElementModelProps, 'id' > => {\n\treturn {\n\t\telType: 'widget',\n\t\twidgetType: 'e-component',\n\t\tsettings: {\n\t\t\tcomponent_instance: {\n\t\t\t\t$$type: 'component-instance',\n\t\t\t\tvalue: {\n\t\t\t\t\tcomponent_id: {\n\t\t\t\t\t\t$$type: 'number',\n\t\t\t\t\t\tvalue: component.id ?? component.uid,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\teditor_settings: {\n\t\t\tcomponent_uid: component.uid,\n\t\t},\n\t};\n};\n","import * as React from 'react';\nimport { ConfirmationDialog } from '@elementor/editor-ui';\nimport { __ } from '@wordpress/i18n';\n\ntype DeleteConfirmationDialogProps = {\n\topen: boolean;\n\tonClose: () => void;\n\tonConfirm: () => void;\n};\n\nexport function DeleteConfirmationDialog( { open, onClose, onConfirm }: DeleteConfirmationDialogProps ) {\n\treturn (\n\t\t<ConfirmationDialog open={ open } onClose={ onClose }>\n\t\t\t<ConfirmationDialog.Title>{ __( 'Delete this component?', 'elementor' ) }</ConfirmationDialog.Title>\n\t\t\t<ConfirmationDialog.Content>\n\t\t\t\t<ConfirmationDialog.ContentText>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Existing instances on your pages will remain functional. You will no longer find this component in your list.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmationDialog.ContentText>\n\t\t\t</ConfirmationDialog.Content>\n\t\t\t<ConfirmationDialog.Actions onClose={ onClose } onConfirm={ onConfirm } />\n\t\t</ConfirmationDialog>\n\t);\n}\n","import * as React from 'react';\nimport { Box, ListItemButton, Skeleton, Stack } from '@elementor/ui';\nconst ROWS_COUNT = 6;\n\nconst rows = Array.from( { length: ROWS_COUNT }, ( _, index ) => index );\n\nexport const LoadingComponents = () => {\n\treturn (\n\t\t<Stack\n\t\t\taria-label=\"Loading components\"\n\t\t\tgap={ 1 }\n\t\t\tsx={ {\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tposition: 'relative',\n\t\t\t\tmaxHeight: '300px',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\t'&:after': {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tcontent: '\"\"',\n\t\t\t\t\tleft: 0,\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '300px',\n\t\t\t\t\tbackground: 'linear-gradient(to top, white, transparent)',\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t},\n\t\t\t} }\n\t\t>\n\t\t\t{ rows.map( ( row ) => (\n\t\t\t\t<ListItemButton\n\t\t\t\t\tkey={ row }\n\t\t\t\t\tsx={ { border: 'solid 1px', borderColor: 'divider', py: 0.5, px: 1 } }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t>\n\t\t\t\t\t<Box display=\"flex\" gap={ 1 } width=\"100%\">\n\t\t\t\t\t\t<Skeleton variant=\"text\" width={ '24px' } height={ '36px' } />\n\t\t\t\t\t\t<Skeleton variant=\"text\" width={ '100%' } height={ '36px' } />\n\t\t\t\t\t</Box>\n\t\t\t\t</ListItemButton>\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { InfoAlert } from '@elementor/editor-ui';\nimport { Box, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport function ComponentsProNotification() {\n\treturn (\n\t\t<Box sx={ { px: 2 } }>\n\t\t\t<InfoAlert>\n\t\t\t\t<Typography variant=\"caption\" component=\"span\">\n\t\t\t\t\t<Typography variant=\"caption\" component=\"span\" fontWeight=\"bold\">\n\t\t\t\t\t\t{ __( 'Try Components for free:', 'elementor' ) }\n\t\t\t\t\t</Typography>{ ' ' }\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Soon Components will be part of the Pro subscription, but what you create now will remain on your site.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t</Typography>\n\t\t\t</InfoAlert>\n\t\t</Box>\n\t);\n}\n","export const COMPONENT_DOCUMENT_TYPE = 'elementor_component';\nexport const OVERRIDABLE_PROP_REPLACEMENT_ID = 'overridable-prop';\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { getElementLabel, type V1ElementData } from '@elementor/editor-elements';\nimport { notify } from '@elementor/editor-notifications';\nimport { Form as FormElement, ThemeProvider } from '@elementor/editor-ui';\nimport { ComponentsIcon } from '@elementor/icons';\nimport { __getState as getState } from '@elementor/store';\nimport { Button, FormLabel, Grid, Popover, Stack, TextField, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponents } from '../../hooks/use-components';\nimport { findNonAtomicElementsInElement } from '../../prevent-non-atomic-nesting';\nimport { createUnpublishedComponent } from '../../store/actions/create-unpublished-component';\nimport { selectComponentByUid } from '../../store/store';\nimport { type ComponentFormValues, type PublishedComponent } from '../../types';\nimport { switchToComponent } from '../../utils/switch-to-component';\nimport { trackComponentEvent } from '../../utils/tracking';\nimport { useForm } from './hooks/use-form';\nimport { createBaseComponentSchema, createSubmitComponentSchema } from './utils/component-form-schema';\nimport {\n\ttype ComponentEventData,\n\ttype ContextMenuEventOptions,\n\tgetComponentEventData,\n} from './utils/get-component-event-data';\n\ntype SaveAsComponentEventData = {\n\telement: V1ElementData;\n\tanchorPosition: { top: number; left: number };\n\toptions?: ContextMenuEventOptions;\n};\n\nexport function CreateComponentForm() {\n\tconst [ element, setElement ] = useState< {\n\t\telement: V1ElementData;\n\t\telementLabel: string;\n\t} | null >( null );\n\n\tconst [ anchorPosition, setAnchorPosition ] = useState< { top: number; left: number } >();\n\n\tconst eventData = useRef< ComponentEventData | null >( null );\n\n\tuseEffect( () => {\n\t\tconst OPEN_SAVE_AS_COMPONENT_FORM_EVENT = 'elementor/editor/open-save-as-component-form';\n\n\t\tconst openPopup = ( event: CustomEvent< SaveAsComponentEventData > ) => {\n\t\t\tconst nonAtomicElements = findNonAtomicElementsInElement( event.detail.element );\n\n\t\t\tif ( nonAtomicElements.length > 0 ) {\n\t\t\t\tnotify( {\n\t\t\t\t\ttype: 'default',\n\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t'Components require atomic elements only. Remove widgets to create this component.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t),\n\t\t\t\t\tid: 'non-atomic-element-save-blocked',\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetElement( { element: event.detail.element, elementLabel: getElementLabel( event.detail.element.id ) } );\n\t\t\tsetAnchorPosition( event.detail.anchorPosition );\n\n\t\t\teventData.current = getComponentEventData( event.detail.element, event.detail.options );\n\t\t\ttrackComponentEvent( {\n\t\t\t\taction: 'createClicked',\n\t\t\t\tsource: 'user',\n\t\t\t\t...eventData.current,\n\t\t\t} );\n\t\t};\n\n\t\twindow.addEventListener( OPEN_SAVE_AS_COMPONENT_FORM_EVENT, openPopup as EventListener );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( OPEN_SAVE_AS_COMPONENT_FORM_EVENT, openPopup as EventListener );\n\t\t};\n\t}, [] );\n\n\tconst handleSave = async ( values: ComponentFormValues ) => {\n\t\ttry {\n\t\t\tif ( ! element ) {\n\t\t\t\tthrow new Error( `Can't save element as component: element not found` );\n\t\t\t}\n\n\t\t\tconst { uid, instanceId } = await createUnpublishedComponent( {\n\t\t\t\tname: values.componentName,\n\t\t\t\telement: element.element,\n\t\t\t\teventData: eventData.current,\n\t\t\t\tsource: 'user',\n\t\t\t} );\n\n\t\t\tconst publishedComponentId = ( selectComponentByUid( getState(), uid ) as PublishedComponent )?.id;\n\n\t\t\tif ( publishedComponentId ) {\n\t\t\t\tswitchToComponent( publishedComponentId, instanceId );\n\t\t\t} else {\n\t\t\t\tthrow new Error( 'Failed to find published component' );\n\t\t\t}\n\n\t\t\tnotify( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Component created successfully.', 'elementor' ),\n\t\t\t\tid: `component-saved-successfully-${ uid }`,\n\t\t\t} );\n\n\t\t\tresetAndClosePopup();\n\t\t} catch {\n\t\t\tconst errorMessage = __( 'Failed to create component. Please try again.', 'elementor' );\n\t\t\tnotify( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: errorMessage,\n\t\t\t\tid: 'component-save-failed',\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst resetAndClosePopup = () => {\n\t\tsetElement( null );\n\t\tsetAnchorPosition( undefined );\n\t};\n\n\tconst cancelSave = () => {\n\t\tresetAndClosePopup();\n\n\t\ttrackComponentEvent( {\n\t\t\taction: 'createCancelled',\n\t\t\tsource: 'user',\n\t\t\t...eventData.current,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<Popover\n\t\t\t\topen={ element !== null }\n\t\t\t\tonClose={ cancelSave }\n\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\tanchorPosition={ anchorPosition }\n\t\t\t>\n\t\t\t\t{ element !== null && (\n\t\t\t\t\t<Form\n\t\t\t\t\t\tinitialValues={ { componentName: element.elementLabel } }\n\t\t\t\t\t\thandleSave={ handleSave }\n\t\t\t\t\t\tclosePopup={ cancelSave }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Popover>\n\t\t</ThemeProvider>\n\t);\n}\n\nconst FONT_SIZE = 'tiny';\n\nconst Form = ( {\n\tinitialValues,\n\thandleSave,\n\tclosePopup,\n}: {\n\tinitialValues: ComponentFormValues;\n\thandleSave: ( values: ComponentFormValues ) => void;\n\tclosePopup: () => void;\n} ) => {\n\tconst { values, errors, isValid, handleChange, validateForm } = useForm< ComponentFormValues >( initialValues );\n\n\tconst { components } = useComponents();\n\n\tconst existingComponentNames = useMemo( () => {\n\t\treturn components?.map( ( component ) => component.name ) ?? [];\n\t}, [ components ] );\n\n\tconst changeValidationSchema = useMemo(\n\t\t() => createBaseComponentSchema( existingComponentNames ),\n\t\t[ existingComponentNames ]\n\t);\n\tconst submitValidationSchema = useMemo(\n\t\t() => createSubmitComponentSchema( existingComponentNames ),\n\t\t[ existingComponentNames ]\n\t);\n\n\tconst handleSubmit = () => {\n\t\tconst { success, parsedValues } = validateForm( submitValidationSchema );\n\n\t\tif ( success ) {\n\t\t\thandleSave( parsedValues );\n\t\t}\n\t};\n\n\tconst texts = {\n\t\theading: __( 'Create component', 'elementor' ),\n\t\tname: __( 'Name', 'elementor' ),\n\t\tcancel: __( 'Cancel', 'elementor' ),\n\t\tcreate: __( 'Create', 'elementor' ),\n\t};\n\n\tconst nameInputId = 'component-name';\n\n\treturn (\n\t\t<FormElement onSubmit={ handleSubmit }>\n\t\t\t<Stack alignItems=\"start\" width=\"268px\">\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tpy={ 1 }\n\t\t\t\t\tpx={ 1.5 }\n\t\t\t\t\tsx={ { columnGap: 0.5, borderBottom: '1px solid', borderColor: 'divider', width: '100%' } }\n\t\t\t\t>\n\t\t\t\t\t<ComponentsIcon fontSize={ FONT_SIZE } />\n\t\t\t\t\t<Typography variant=\"caption\" sx={ { color: 'text.primary', fontWeight: '500', lineHeight: 1 } }>\n\t\t\t\t\t\t{ texts.heading }\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"start\" p={ 1.5 }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<FormLabel htmlFor={ nameInputId } size=\"tiny\">\n\t\t\t\t\t\t\t{ texts.name }\n\t\t\t\t\t\t</FormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\tid={ nameInputId }\n\t\t\t\t\t\t\tsize={ FONT_SIZE }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tvalue={ values.componentName }\n\t\t\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) =>\n\t\t\t\t\t\t\t\thandleChange( e, 'componentName', changeValidationSchema )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinputProps={ { style: { color: 'text.primary', fontWeight: '600' } } }\n\t\t\t\t\t\t\terror={ Boolean( errors.componentName ) }\n\t\t\t\t\t\t\thelperText={ errors.componentName }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Stack direction=\"row\" justifyContent=\"flex-end\" alignSelf=\"end\" py={ 1 } px={ 1.5 }>\n\t\t\t\t\t<Button onClick={ closePopup } color=\"secondary\" variant=\"text\" size=\"small\">\n\t\t\t\t\t\t{ texts.cancel }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button type=\"submit\" disabled={ ! isValid } variant=\"contained\" color=\"primary\" size=\"small\">\n\t\t\t\t\t\t{ texts.create }\n\t\t\t\t\t</Button>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</FormElement>\n\t);\n};\n","import { isAtomicWidget } from '@elementor/editor-canvas';\nimport { getAllDescendants, getElementType, type V1Element } from '@elementor/editor-elements';\nimport { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\nimport { __getStore as getStore } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { type ComponentsSlice, selectCurrentComponentId } from './store/store';\nimport { type ExtendedWindow } from './types';\n\ntype CreateArgs = {\n\tcontainer?: V1Element;\n\tmodel?: {\n\t\telType?: string;\n\t\twidgetType?: string;\n\t};\n};\n\ntype MoveArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\ttarget?: V1Element;\n};\n\ntype PasteArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\tstorageType?: string;\n};\n\nexport type ClipboardElement = {\n\telType?: string;\n\twidgetType?: string;\n\telements?: ClipboardElement[];\n};\n\ntype StorageContent = {\n\tclipboard?: {\n\t\telements?: ClipboardElement[];\n\t};\n};\n\nconst NON_ATOMIC_ELEMENT_ALERT: NotificationData = {\n\ttype: 'default',\n\tmessage: __( \"This widget isn't compatible with components. Use atomic elements instead.\", 'elementor' ),\n\tid: 'non-atomic-element-blocked',\n};\n\nexport function initNonAtomicNestingPrevention() {\n\tblockCommand( {\n\t\tcommand: 'document/elements/create',\n\t\tcondition: blockNonAtomicCreate,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/move',\n\t\tcondition: blockNonAtomicMove,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste',\n\t\tcondition: blockNonAtomicPaste,\n\t} );\n}\n\nfunction isEditingComponent(): boolean {\n\tconst state = getStore()?.getState() as ComponentsSlice | undefined;\n\n\tif ( ! state ) {\n\t\treturn false;\n\t}\n\n\treturn selectCurrentComponentId( state ) !== null;\n}\n\nexport function isElementAtomic( elementType: string ): boolean {\n\treturn getElementType( elementType ) !== null;\n}\n\nfunction blockNonAtomicCreate( args: CreateArgs ): boolean {\n\tif ( ! isEditingComponent() ) {\n\t\treturn false;\n\t}\n\n\tconst { model } = args;\n\tconst elementType = model?.widgetType || model?.elType;\n\n\tif ( ! elementType ) {\n\t\treturn false;\n\t}\n\n\tif ( isElementAtomic( elementType ) ) {\n\t\treturn false;\n\t}\n\n\tnotify( NON_ATOMIC_ELEMENT_ALERT );\n\treturn true;\n}\n\nfunction blockNonAtomicMove( args: MoveArgs ): boolean {\n\tif ( ! isEditingComponent() ) {\n\t\treturn false;\n\t}\n\n\tconst { containers = [ args.container ] } = args;\n\n\tconst hasNonAtomicElement = containers.some( ( container ) => {\n\t\tif ( ! container ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst allElements = getAllDescendants( container );\n\n\t\treturn allElements.some( ( element ) => ! isAtomicWidget( element ) );\n\t} );\n\n\tif ( hasNonAtomicElement ) {\n\t\tnotify( NON_ATOMIC_ELEMENT_ALERT );\n\t}\n\n\treturn hasNonAtomicElement;\n}\n\nfunction blockNonAtomicPaste( args: PasteArgs ): boolean {\n\tif ( ! isEditingComponent() ) {\n\t\treturn false;\n\t}\n\n\tconst { storageType } = args;\n\n\tif ( storageType !== 'localstorage' ) {\n\t\treturn false;\n\t}\n\n\tconst data = (\n\t\twindow as unknown as ExtendedWindow & { elementorCommon?: { storage?: { get: () => StorageContent } } }\n\t )?.elementorCommon?.storage?.get();\n\n\tif ( ! data?.clipboard?.elements ) {\n\t\treturn false;\n\t}\n\n\tconst hasNonAtomicElement = hasNonAtomicElementsInTree( data.clipboard.elements );\n\n\tif ( hasNonAtomicElement ) {\n\t\tnotify( NON_ATOMIC_ELEMENT_ALERT );\n\t}\n\n\treturn hasNonAtomicElement;\n}\n\nexport function hasNonAtomicElementsInTree( elements: ClipboardElement[] ): boolean {\n\tfor ( const element of elements ) {\n\t\tconst elementType = element.widgetType || element.elType;\n\n\t\tif ( elementType && ! isElementAtomic( elementType ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( element.elements?.length ) {\n\t\t\tif ( hasNonAtomicElementsInTree( element.elements ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\nexport function findNonAtomicElements( elements: ClipboardElement[] ): string[] {\n\tconst nonAtomicElements: string[] = [];\n\n\tfor ( const element of elements ) {\n\t\tconst elementType = element.widgetType || element.elType;\n\n\t\tif ( elementType && ! isElementAtomic( elementType ) ) {\n\t\t\tnonAtomicElements.push( elementType );\n\t\t}\n\n\t\tif ( element.elements?.length ) {\n\t\t\tnonAtomicElements.push( ...findNonAtomicElements( element.elements ) );\n\t\t}\n\t}\n\n\treturn [ ...new Set( nonAtomicElements ) ];\n}\n\ntype V1ElementLike = {\n\telType?: string;\n\twidgetType?: string;\n\telements?: V1ElementLike[];\n};\n\nexport function findNonAtomicElementsInElement( element: V1ElementLike ): string[] {\n\tconst nonAtomicElements: string[] = [];\n\tconst elementType = element.widgetType || element.elType;\n\n\tif ( elementType && ! isElementAtomic( elementType ) ) {\n\t\tnonAtomicElements.push( elementType );\n\t}\n\n\tif ( element.elements?.length ) {\n\t\tfor ( const child of element.elements ) {\n\t\t\tnonAtomicElements.push( ...findNonAtomicElementsInElement( child ) );\n\t\t}\n\t}\n\n\treturn [ ...new Set( nonAtomicElements ) ];\n}\n","import { type V1ElementData } from '@elementor/editor-elements';\nimport { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch } from '@elementor/store';\nimport { generateUniqueId } from '@elementor/utils';\n\nimport { type ComponentEventData } from '../../components/create-component-form/utils/get-component-event-data';\nimport { replaceElementWithComponent } from '../../components/create-component-form/utils/replace-element-with-component';\nimport { type OverridableProps } from '../../types';\nimport { type Source, trackComponentEvent } from '../../utils/tracking';\nimport { slice } from '../store';\n\ntype CreateUnpublishedComponentParams = {\n\tname: string;\n\telement: V1ElementData;\n\teventData: ComponentEventData | null;\n\tuid?: string | null;\n\toverridableProps?: OverridableProps;\n\tsource: Source;\n};\n\nexport async function createUnpublishedComponent( {\n\tname,\n\telement,\n\teventData,\n\tuid,\n\toverridableProps,\n\tsource,\n}: CreateUnpublishedComponentParams ): Promise< { uid: string; instanceId: string } > {\n\tconst generatedUid = uid ?? generateUniqueId( 'component' );\n\tconst componentBase = { uid: generatedUid, name };\n\n\tdispatch(\n\t\tslice.actions.addUnpublished( {\n\t\t\t...componentBase,\n\t\t\telements: [ element ],\n\t\t\toverridableProps,\n\t\t} )\n\t);\n\n\tdispatch( slice.actions.addCreatedThisSession( generatedUid ) );\n\n\tconst componentInstance = await replaceElementWithComponent( element, componentBase );\n\n\ttrackComponentEvent( {\n\t\taction: 'created',\n\t\tsource,\n\t\tcomponent_uid: generatedUid,\n\t\tcomponent_name: name,\n\t\t...eventData,\n\t} );\n\n\tawait runCommand( 'document/save/auto' );\n\n\treturn { uid: generatedUid, instanceId: componentInstance.id };\n}\n","import { useMemo, useState } from 'react';\nimport { type z } from '@elementor/schema';\n\nexport const useForm = < TValues extends Record< string, unknown > >( initialValues: TValues ) => {\n\tconst [ values, setValues ] = useState< TValues >( initialValues );\n\tconst [ errors, setErrors ] = useState< Partial< Record< keyof TValues, string > > >( {} );\n\n\tconst isValid = useMemo( () => {\n\t\treturn ! Object.values( errors ).some( ( error ) => error );\n\t}, [ errors ] );\n\n\tconst handleChange = (\n\t\te: React.ChangeEvent< HTMLInputElement >,\n\t\tfield: keyof TValues,\n\t\tvalidationSchema: z.ZodType< TValues >\n\t) => {\n\t\tconst updated = { ...values, [ field ]: e.target.value };\n\t\tsetValues( updated );\n\n\t\tconst { success, errors: validationErrors } = validateForm( updated, validationSchema );\n\n\t\tif ( ! success ) {\n\t\t\tsetErrors( validationErrors );\n\t\t} else {\n\t\t\tsetErrors( {} );\n\t\t}\n\t};\n\n\tconst validate = (\n\t\tvalidationSchema: z.ZodType< TValues >\n\t): { success: true; parsedValues: TValues } | { success: false; parsedValues?: never } => {\n\t\tconst { success, errors: validationErrors, parsedValues } = validateForm( values, validationSchema );\n\n\t\tif ( ! success ) {\n\t\t\tsetErrors( validationErrors );\n\t\t\treturn { success };\n\t\t}\n\t\tsetErrors( {} );\n\t\treturn { success, parsedValues };\n\t};\n\n\treturn {\n\t\tvalues,\n\t\terrors,\n\t\tisValid,\n\t\thandleChange,\n\t\tvalidateForm: validate,\n\t};\n};\n\nconst validateForm = < TValues extends Record< string, unknown > >(\n\tvalues: TValues,\n\tschema: z.ZodType< TValues >\n):\n\t| { success: false; parsedValues?: never; errors: Partial< Record< keyof TValues, string > > }\n\t| { success: true; parsedValues: TValues; errors?: never } => {\n\tconst result = schema.safeParse( values );\n\n\tif ( result.success ) {\n\t\treturn { success: true, parsedValues: result.data };\n\t}\n\n\tconst errors = {} as Partial< Record< keyof TValues, string > >;\n\n\t( Object.entries( result.error.formErrors.fieldErrors ) as Array< [ keyof TValues, string[] ] > ).forEach(\n\t\t( [ field, error ] ) => {\n\t\t\terrors[ field ] = error[ 0 ];\n\t\t}\n\t);\n\n\treturn { success: false, errors };\n};\n","import { type V1ElementData } from '@elementor/editor-elements';\n\nexport type ComponentEventData = {\n\tnested_elements_count: number;\n\tnested_components_count: number;\n\ttop_element_type: string;\n\tlocation?: string;\n\tsecondary_location?: string;\n\ttrigger?: string;\n};\n\nexport type ContextMenuEventOptions = Record< string, unknown > & {\n\tlocation: string;\n\tsecondaryLocation: string;\n\ttrigger: string;\n};\n\nexport const getComponentEventData = (\n\tcontainerElement: V1ElementData,\n\toptions?: ContextMenuEventOptions\n): ComponentEventData => {\n\tconst { elementsCount, componentsCount } = countNestedElements( containerElement );\n\n\treturn {\n\t\tnested_elements_count: elementsCount,\n\t\tnested_components_count: componentsCount,\n\t\ttop_element_type: containerElement.elType,\n\t\tlocation: options?.location,\n\t\tsecondary_location: options?.secondaryLocation,\n\t\ttrigger: options?.trigger,\n\t};\n};\n\nfunction countNestedElements( container: V1ElementData ): { elementsCount: number; componentsCount: number } {\n\tif ( ! container.elements || container.elements.length === 0 ) {\n\t\treturn { elementsCount: 0, componentsCount: 0 };\n\t}\n\n\tlet elementsCount = container.elements.length;\n\tlet componentsCount = 0;\n\n\tfor ( const element of container.elements ) {\n\t\tif ( element.widgetType === 'e-component' ) {\n\t\t\tcomponentsCount++;\n\t\t}\n\n\t\tconst { elementsCount: nestedElementsCount, componentsCount: nestedComponentsCount } =\n\t\t\tcountNestedElements( element );\n\t\telementsCount += nestedElementsCount;\n\t\tcomponentsCount += nestedComponentsCount;\n\t}\n\n\treturn { elementsCount, componentsCount };\n}\n","import * as React from 'react';\nimport { useEffect } from 'react';\nimport { getV1DocumentsManager, type V1Document } from '@elementor/editor-documents';\nimport { type V1Element } from '@elementor/editor-elements';\nimport { __privateListenTo as listenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport { __useSelector as useSelector } from '@elementor/store';\nimport { throttle } from '@elementor/utils';\n\nimport { apiClient } from '../../api';\nimport { useNavigateBack } from '../../hooks/use-navigate-back';\nimport { updateCurrentComponent } from '../../store/actions/update-current-component';\nimport { type ComponentsPathItem, selectPath, useCurrentComponentId } from '../../store/store';\nimport { COMPONENT_DOCUMENT_TYPE } from '../consts';\nimport { ComponentModal } from './component-modal';\n\nexport function EditComponent() {\n\tconst currentComponentId = useCurrentComponentId();\n\n\tuseHandleDocumentSwitches();\n\n\tconst navigateBack = useNavigateBack();\n\n\tconst onClose = throttle( navigateBack, 100 );\n\n\tconst elementDom = getComponentDOMElement( currentComponentId ?? undefined );\n\n\tif ( ! elementDom ) {\n\t\treturn null;\n\t}\n\n\treturn <ComponentModal element={ elementDom } onClose={ onClose } />;\n}\n\nfunction useHandleDocumentSwitches() {\n\tconst documentsManager = getV1DocumentsManager();\n\tconst currentComponentId = useCurrentComponentId();\n\tconst path = useSelector( selectPath );\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandEndEvent( 'editor/documents/open' ), () => {\n\t\t\tconst nextDocument = documentsManager.getCurrent();\n\n\t\t\tif ( nextDocument.id === currentComponentId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( currentComponentId ) {\n\t\t\t\tapiClient.unlockComponent( currentComponentId );\n\t\t\t}\n\n\t\t\tconst isComponent = nextDocument.config.type === COMPONENT_DOCUMENT_TYPE;\n\n\t\t\tif ( ! isComponent ) {\n\t\t\t\tupdateCurrentComponent( { path: [], currentComponentId: null } );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdateCurrentComponent( {\n\t\t\t\tpath: getUpdatedComponentPath( path, nextDocument ),\n\t\t\t\tcurrentComponentId: nextDocument.id,\n\t\t\t} );\n\t\t} );\n\t}, [ path, documentsManager, currentComponentId ] );\n}\n\nfunction getUpdatedComponentPath( path: ComponentsPathItem[], nextDocument: V1Document ): ComponentsPathItem[] {\n\tconst componentIndex = path.findIndex( ( { componentId } ) => componentId === nextDocument.id );\n\n\tif ( componentIndex >= 0 ) {\n\t\t// When exiting the editing of a nested component - we in fact go back a step\n\t\t// so we need to make sure the path is cleaned up of any newer items\n\t\t// By doing it with the slice and not a simple pop() - we could jump to any component in the path and make sure it becomes the current one\n\t\treturn path.slice( 0, componentIndex + 1 );\n\t}\n\n\tconst instanceId = nextDocument?.container.view?.el?.dataset.id;\n\tconst instanceTitle = getInstanceTitle( instanceId, path );\n\n\treturn [\n\t\t...path,\n\t\t{\n\t\t\tinstanceId,\n\t\t\tinstanceTitle,\n\t\t\tcomponentId: nextDocument.id,\n\t\t},\n\t];\n}\n\nfunction getInstanceTitle( instanceId: string | undefined, path: ComponentsPathItem[] ): string | undefined {\n\tif ( ! instanceId ) {\n\t\treturn undefined;\n\t}\n\n\tconst documentsManager = getV1DocumentsManager();\n\tconst parentDocId = path.at( -1 )?.componentId ?? documentsManager.getInitialId();\n\tconst parentDoc = documentsManager.get( parentDocId );\n\n\ttype EditorSettings = { title?: string };\n\ttype ContainerWithChildren = V1Element & {\n\t\tchildren?: {\n\t\t\tfindRecursive?: ( predicate: ( child: V1Element ) => boolean ) => V1Element | undefined;\n\t\t};\n\t};\n\n\tconst parentContainer = parentDoc?.container as unknown as ContainerWithChildren | undefined;\n\tconst widget = parentContainer?.children?.findRecursive?.(\n\t\t( container: V1Element ) => container.id === instanceId\n\t);\n\n\tconst editorSettings = widget?.model?.get?.( 'editor_settings' ) as EditorSettings | undefined;\n\n\treturn editorSettings?.title;\n}\n\nfunction getComponentDOMElement( id: V1Document[ 'id' ] | undefined ) {\n\tif ( ! id ) {\n\t\treturn null;\n\t}\n\n\tconst documentsManager = getV1DocumentsManager();\n\n\tconst currentComponent = documentsManager.get( id );\n\n\tconst widget = currentComponent?.container as V1Element;\n\tconst container = ( widget?.view?.el?.children?.[ 0 ] ?? null ) as HTMLElement | null;\n\tconst elementDom = container?.children[ 0 ] as HTMLElement | null;\n\n\treturn elementDom ?? null;\n}\n","import { setDocumentModifiedStatus, type V1Document } from '@elementor/editor-documents';\nimport { __getStore as getStore } from '@elementor/store';\n\nimport { type ComponentsPathItem, slice } from '../store';\n\nexport function updateCurrentComponent( {\n\tpath,\n\tcurrentComponentId,\n}: {\n\tpath: ComponentsPathItem[];\n\tcurrentComponentId: V1Document[ 'id' ] | null;\n} ) {\n\tconst dispatch = getStore()?.dispatch;\n\n\tif ( ! dispatch ) {\n\t\treturn;\n\t}\n\n\tdispatch( slice.actions.setPath( path ) );\n\tdispatch( slice.actions.setCurrentComponentId( currentComponentId ) );\n}\n\nexport const archiveComponent = ( componentId: number ) => {\n\tconst store = getStore();\n\tconst dispatch = store?.dispatch;\n\n\tif ( ! dispatch ) {\n\t\treturn;\n\t}\n\n\tdispatch( slice.actions.archive( componentId ) );\n\tsetDocumentModifiedStatus( true );\n};\n","import * as React from 'react';\nimport { type CSSProperties, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { __ } from '@wordpress/i18n';\n\nimport { useCanvasDocument } from '../../hooks/use-canvas-document';\nimport { useElementRect } from '../../hooks/use-element-rect';\n\ntype ModalProps = {\n\telement: HTMLElement;\n\tonClose: () => void;\n};\n\nexport function ComponentModal( { element, onClose }: ModalProps ) {\n\tconst canvasDocument = useCanvasDocument();\n\n\tuseEffect( () => {\n\t\tconst handleEsc = ( event: KeyboardEvent ) => {\n\t\t\tif ( event.key === 'Escape' ) {\n\t\t\t\tonClose();\n\t\t\t}\n\t\t};\n\n\t\tcanvasDocument?.body.addEventListener( 'keydown', handleEsc );\n\n\t\treturn () => {\n\t\t\tcanvasDocument?.body.removeEventListener( 'keydown', handleEsc );\n\t\t};\n\t}, [ canvasDocument, onClose ] );\n\n\tif ( ! canvasDocument?.body ) {\n\t\treturn null;\n\t}\n\n\treturn createPortal(\n\t\t<>\n\t\t\t<BlockEditPage />\n\t\t\t<Backdrop canvas={ canvasDocument } element={ element } onClose={ onClose } />\n\t\t</>,\n\t\tcanvasDocument.body\n\t);\n}\n\nfunction Backdrop( { canvas, element, onClose }: { canvas: HTMLDocument; element: HTMLElement; onClose: () => void } ) {\n\tconst rect = useElementRect( element );\n\tconst backdropStyle: CSSProperties = {\n\t\tposition: 'fixed',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\twidth: '100vw',\n\t\theight: '100vh',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.5)',\n\t\tzIndex: 999,\n\t\tpointerEvents: 'painted',\n\t\tcursor: 'pointer',\n\t\tclipPath: getRectPath( rect, canvas.defaultView as Window ),\n\t};\n\n\tconst handleKeyDown = ( event: React.KeyboardEvent ) => {\n\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\tevent.preventDefault();\n\t\t\tonClose();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tstyle={ backdropStyle }\n\t\t\tonClick={ onClose }\n\t\t\tonKeyDown={ handleKeyDown }\n\t\t\trole=\"button\"\n\t\t\ttabIndex={ 0 }\n\t\t\taria-label={ __( 'Exit component editing mode', 'elementor' ) }\n\t\t/>\n\t);\n}\n\nfunction getRectPath( rect: DOMRect, viewport: Window ) {\n\tconst { x: originalX, y: originalY, width: originalWidth, height: originalHeight } = rect;\n\tconst x = originalX;\n\tconst y = originalY;\n\tconst width = originalWidth;\n\tconst height = originalHeight;\n\n\tconst { innerWidth: vw, innerHeight: vh } = viewport;\n\n\tconst path = `path(evenodd, 'M 0 0 \n\t\tL ${ vw } 0\n\t\tL ${ vw } ${ vh }\n\t\tL 0 ${ vh }\n\t\tZ\n\t\tM ${ x } ${ y }\n\t\tL ${ x + width } ${ y }\n\t\tL ${ x + width } ${ y + height }\n\t\tL ${ x } ${ y + height }\n\t\tL ${ x } ${ y }\n \tZ'\n\t)`;\n\n\treturn path.replace( /\\s{2,}/g, ' ' );\n}\n\n/**\n * when switching to another document id, we get a document handler when hovering\n * this functionality originates in Pro, and is intended for editing templates, e.g. header/footer\n * in components we don't want that, so the easy way out is to prevent it of being displayed via a CSS rule\n */\nfunction BlockEditPage() {\n\tconst blockV3DocumentHandlesStyles = `\n\t.elementor-editor-active {\n\t\t& .elementor-section-wrap.ui-sortable {\n\t\t\tdisplay: contents;\n\t\t}\n\n\t\t& *[data-editable-elementor-document]:not(.elementor-edit-mode):hover {\n\t\t\t& .elementor-document-handle:not(.elementor-document-save-back-handle) {\n\t\t\t\tdisplay: none;\n\n\t\t\t\t&::before,\n\t\t\t\t& .elementor-document-handle__inner {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t`;\n\n\treturn <style data-e-style-id=\"e-block-v3-document-handles-styles\">{ blockV3DocumentHandlesStyles }</style>;\n}\n","import {\n\t__privateUseListenTo as useListenTo,\n\tcommandEndEvent,\n\tgetCanvasIframeDocument,\n} from '@elementor/editor-v1-adapters';\n\nexport function useCanvasDocument() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => getCanvasIframeDocument() );\n}\n","import { useEffect, useState } from 'react';\nimport { throttle } from '@elementor/utils';\n\nexport function useElementRect( element: HTMLElement | null ) {\n\tconst [ rect, setRect ] = useState< DOMRect >( new DOMRect( 0, 0, 0, 0 ) );\n\n\tconst onChange = throttle(\n\t\t() => {\n\t\t\tsetRect( element?.getBoundingClientRect() ?? new DOMRect( 0, 0, 0, 0 ) );\n\t\t},\n\t\t20,\n\t\ttrue\n\t);\n\n\tuseScrollListener( { element, onChange } );\n\tuseResizeListener( { element, onChange } );\n\tuseMutationsListener( { element, onChange } );\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tonChange.cancel();\n\t\t},\n\t\t[ onChange ]\n\t);\n\n\treturn rect;\n}\n\ntype ListenerProps = {\n\telement: HTMLElement | null;\n\tonChange: () => void;\n};\n\nfunction useScrollListener( { element, onChange }: ListenerProps ) {\n\tuseEffect( () => {\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst win = element.ownerDocument?.defaultView;\n\t\twin?.addEventListener( 'scroll', onChange, { passive: true } );\n\n\t\treturn () => {\n\t\t\twin?.removeEventListener( 'scroll', onChange );\n\t\t};\n\t}, [ element, onChange ] );\n}\n\nfunction useResizeListener( { element, onChange }: ListenerProps ) {\n\tuseEffect( () => {\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resizeObserver = new ResizeObserver( onChange );\n\t\tresizeObserver.observe( element );\n\n\t\tconst win = element.ownerDocument?.defaultView;\n\t\twin?.addEventListener( 'resize', onChange, { passive: true } );\n\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t\twin?.removeEventListener( 'resize', onChange );\n\t\t};\n\t}, [ element, onChange ] );\n}\n\nfunction useMutationsListener( { element, onChange }: ListenerProps ) {\n\tuseEffect( () => {\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mutationObserver = new MutationObserver( onChange );\n\t\tmutationObserver.observe( element, { childList: true, subtree: true } );\n\n\t\treturn () => {\n\t\t\tmutationObserver.disconnect();\n\t\t};\n\t}, [ element, onChange ] );\n}\n","import * as React from 'react';\nimport { closeDialog, openDialog } from '@elementor/editor-ui';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Box, Button, DialogActions, DialogContent, DialogHeader, Icon, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const openEditModeDialog = ( lockedBy: string ) => {\n\topenDialog( {\n\t\tcomponent: <EditModeDialog lockedBy={ lockedBy } />,\n\t} );\n};\n\nconst EditModeDialog = ( { lockedBy }: { lockedBy: string } ) => {\n\t/* translators: %s is the name of the user who is currently editing the document */\n\tconst content = __( '%s is currently editing this document', 'elementor' ).replace( '%s', lockedBy );\n\treturn (\n\t\t<>\n\t\t\t<DialogHeader logo={ false }>\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t\t<Icon color=\"secondary\">\n\t\t\t\t\t\t<InfoCircleFilledIcon fontSize=\"medium\" />\n\t\t\t\t\t</Icon>\n\t\t\t\t\t<Typography variant=\"subtitle1\">{ content }</Typography>\n\t\t\t\t</Box>\n\t\t\t</DialogHeader>\n\t\t\t<DialogContent>\n\t\t\t\t<Stack spacing={ 2 } direction=\"column\">\n\t\t\t\t\t<Typography variant=\"body2\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'You can wait for them to finish or reach out to coordinate your changes together.',\n\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<DialogActions>\n\t\t\t\t\t\t<Button color=\"secondary\" variant=\"contained\" onClick={ closeDialog }>\n\t\t\t\t\t\t\t{ __( 'Close', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</DialogActions>\n\t\t\t\t</Stack>\n\t\t\t</DialogContent>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { ControlAdornmentsProvider } from '@elementor/editor-controls';\nimport { getFieldIndicators } from '@elementor/editor-editing-panel';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { ComponentsIcon, PencilIcon } from '@elementor/icons';\nimport { Divider, IconButton, Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponentInstanceSettings } from '../../hooks/use-component-instance-settings';\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\nimport { useComponent, useOverridableProps } from '../../store/store';\nimport { type OverridablePropsGroup } from '../../types';\nimport { switchToComponent } from '../../utils/switch-to-component';\nimport { EmptyState } from './empty-state';\nimport { OverridePropsGroup } from './override-props-group';\n\nexport function InstanceEditingPanel() {\n\tconst { canEdit } = useComponentsPermissions();\n\n\tconst settings = useComponentInstanceSettings();\n\n\tconst componentId = settings?.component_id?.value;\n\n\tconst overrides = settings?.overrides?.value;\n\n\tconst component = useComponent( componentId ?? null );\n\tconst overridableProps = useOverridableProps( componentId ?? null );\n\n\tconst componentInstanceId = useSelectedElement()?.element?.id ?? null;\n\n\tif ( ! componentId || ! overridableProps || ! component ) {\n\t\treturn null;\n\t}\n\n\t/* translators: %s: component name. */\n\tconst panelTitle = __( 'Edit %s', 'elementor' ).replace( '%s', component.name );\n\n\tconst handleEditComponent = () => switchToComponent( componentId, componentInstanceId );\n\n\tconst isNonEmptyGroup = ( group: OverridablePropsGroup | null ) => group !== null && group.props.length > 0;\n\n\tconst groups = overridableProps.groups.order\n\t\t.map( ( groupId ) => overridableProps.groups.items[ groupId ] ?? null )\n\t\t.filter( isNonEmptyGroup );\n\n\tconst isEmpty = groups.length === 0 || Object.keys( overridableProps.props ).length === 0;\n\n\treturn (\n\t\t<>\n\t\t\t<PanelHeader sx={ { justifyContent: 'start', px: 2 } }>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" flexGrow={ 1 } gap={ 1 } maxWidth=\"100%\">\n\t\t\t\t\t<ComponentsIcon fontSize=\"small\" sx={ { color: 'text.tertiary' } } />\n\t\t\t\t\t<EllipsisWithTooltip title={ component.name } as={ PanelHeaderTitle } />\n\t\t\t\t\t{ canEdit && (\n\t\t\t\t\t\t<Tooltip title={ panelTitle }>\n\t\t\t\t\t\t\t<IconButton size=\"tiny\" onClick={ handleEditComponent } aria-label={ panelTitle }>\n\t\t\t\t\t\t\t\t<PencilIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t</PanelHeader>\n\t\t\t<PanelBody>\n\t\t\t\t<ControlAdornmentsProvider items={ getFieldIndicators( 'settings' ) }>\n\t\t\t\t\t{ isEmpty ? (\n\t\t\t\t\t\t<EmptyState onEditComponent={ handleEditComponent } />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Stack direction=\"column\" alignItems=\"stretch\">\n\t\t\t\t\t\t\t{ groups.map( ( group ) => (\n\t\t\t\t\t\t\t\t<React.Fragment key={ group.id }>\n\t\t\t\t\t\t\t\t\t<OverridePropsGroup\n\t\t\t\t\t\t\t\t\t\tgroup={ group }\n\t\t\t\t\t\t\t\t\t\tprops={ overridableProps.props }\n\t\t\t\t\t\t\t\t\t\toverrides={ overrides }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) }\n\t\t\t\t</ControlAdornmentsProvider>\n\t\t\t</PanelBody>\n\t\t</>\n\t);\n}\n","import { useElement } from '@elementor/editor-editing-panel';\nimport { useElementSetting } from '@elementor/editor-elements';\n\nimport {\n\tcomponentInstancePropTypeUtil,\n\ttype ComponentInstancePropValue,\n} from '../prop-types/component-instance-prop-type';\n\nexport function useComponentInstanceSettings() {\n\tconst { element } = useElement();\n\n\tconst settings = useElementSetting< ComponentInstancePropValue >( element.id, 'component_instance' );\n\n\treturn componentInstancePropTypeUtil.extract( settings );\n}\n","import * as React from 'react';\nimport { ComponentPropListIcon, PencilIcon } from '@elementor/icons';\nimport { Button, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\n\nexport const EmptyState = ( { onEditComponent }: { onEditComponent: () => void } ) => {\n\tconst { canEdit } = useComponentsPermissions();\n\n\tconst message = canEdit\n\t\t? __(\n\t\t\t\t'Edit the component to add properties, manage them or update the design across all instances.',\n\t\t\t\t'elementor'\n\t\t )\n\t\t: __(\n\t\t\t\t'With your current role, you cannot edit this component. Contact an administrator to add properties.',\n\t\t\t\t'elementor'\n\t\t );\n\n\treturn (\n\t\t<Stack\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"start\"\n\t\t\theight=\"100%\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { p: 2.5, pt: 8, pb: 5.5, mt: 1 } }\n\t\t\tgap={ 1.5 }\n\t\t>\n\t\t\t<ComponentPropListIcon fontSize=\"large\" />\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'No properties yet', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"170px\">\n\t\t\t\t{ message }\n\t\t\t</Typography>\n\t\t\t{ canEdit && (\n\t\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" sx={ { mt: 1 } } onClick={ onEditComponent }>\n\t\t\t\t\t<PencilIcon fontSize=\"small\" />\n\t\t\t\t\t{ __( 'Edit component', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { useStateByElement } from '@elementor/editor-editing-panel';\nimport { CollapseIcon } from '@elementor/editor-ui';\nimport { Box, Collapse, ListItemButton, ListItemText, Stack } from '@elementor/ui';\n\nimport { type ComponentInstanceOverridesPropValue } from '../../prop-types/component-instance-overrides-prop-type';\nimport { type OverridableProp, type OverridablePropsGroup } from '../../types';\nimport { OverridePropControl } from './override-prop-control';\n\ntype Props = {\n\tgroup: OverridablePropsGroup;\n\tprops: Record< string, OverridableProp >;\n\toverrides: ComponentInstanceOverridesPropValue;\n};\n\nexport function OverridePropsGroup( { group, props, overrides }: Props ) {\n\tconst [ isOpen, setIsOpen ] = useStateByElement( group.id, true );\n\n\tconst handleClick = () => {\n\t\tsetIsOpen( ! isOpen );\n\t};\n\n\tconst id = useId();\n\tconst labelId = `label-${ id }`;\n\tconst contentId = `content-${ id }`;\n\n\tconst title = group.label;\n\n\treturn (\n\t\t<Box aria-label={ `${ title } section` }>\n\t\t\t<ListItemButton\n\t\t\t\tid={ labelId }\n\t\t\t\taria-controls={ contentId }\n\t\t\t\taria-label={ `${ title } section` }\n\t\t\t\tonClick={ handleClick }\n\t\t\t\tp={ 0 }\n\t\t\t\tsx={ { '&:hover': { backgroundColor: 'transparent' } } }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" flexGrow={ 1 } gap={ 0.5 }>\n\t\t\t\t\t<ListItemText\n\t\t\t\t\t\tsecondary={ title }\n\t\t\t\t\t\tsecondaryTypographyProps={ { color: 'text.primary', variant: 'caption', fontWeight: 'bold' } }\n\t\t\t\t\t\tsx={ { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 } }\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t\t<CollapseIcon open={ isOpen } color=\"secondary\" fontSize=\"tiny\" />\n\t\t\t</ListItemButton>\n\t\t\t<Collapse id={ contentId } aria-labelledby={ labelId } in={ isOpen } timeout=\"auto\">\n\t\t\t\t<Stack direction=\"column\" gap={ 1 } p={ 2 }>\n\t\t\t\t\t{ group.props.map( ( overrideKey ) => (\n\t\t\t\t\t\t<OverridePropControl\n\t\t\t\t\t\t\tkey={ overrideKey }\n\t\t\t\t\t\t\toverridableProp={ props[ overrideKey ] }\n\t\t\t\t\t\t\toverrides={ overrides }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Stack>\n\t\t\t</Collapse>\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { ControlReplacementsProvider, PropKeyProvider, PropProvider, useBoundProp } from '@elementor/editor-controls';\nimport {\n\tBaseControl,\n\tcontrolsRegistry,\n\ttype ControlType,\n\tcreateTopLevelObjectType,\n\tElementProvider,\n\tgetControlReplacements,\n\tSettingsField,\n\tuseElement,\n} from '@elementor/editor-editing-panel';\nimport { type Control, getContainer, getElementType } from '@elementor/editor-elements';\nimport { Stack } from '@elementor/ui';\n\nimport { useControlsByWidgetType } from '../../hooks/use-controls-by-widget-type';\nimport {\n\ttype ComponentInstanceOverrideProp,\n\tcomponentInstanceOverridePropTypeUtil,\n} from '../../prop-types/component-instance-override-prop-type';\nimport {\n\ttype ComponentInstanceOverride,\n\tcomponentInstanceOverridesPropTypeUtil,\n\ttype ComponentInstanceOverridesPropValue,\n} from '../../prop-types/component-instance-overrides-prop-type';\nimport { componentInstancePropTypeUtil } from '../../prop-types/component-instance-prop-type';\nimport {\n\ttype ComponentOverridableProp,\n\tcomponentOverridablePropTypeUtil,\n} from '../../prop-types/component-overridable-prop-type';\nimport { OverridablePropProvider } from '../../provider/overridable-prop-context';\nimport { updateOverridableProp } from '../../store/actions/update-overridable-prop';\nimport { useCurrentComponentId } from '../../store/store';\nimport { type OriginPropFields, type OverridableProp } from '../../types';\nimport { getPropTypeForComponentOverride } from '../../utils/get-prop-type-for-component-override';\nimport { resolveOverridePropValue } from '../../utils/resolve-override-prop-value';\nimport { ControlLabel } from '../control-label';\nimport { OverrideControlInnerElementNotFoundError } from '../errors';\n\ntype Props = {\n\toverridableProp: OverridableProp;\n\toverrides?: ComponentInstanceOverridesPropValue;\n};\n\ntype OverridesSchema = Record< string, ComponentInstanceOverride >;\n\nexport function OverridePropControl( { overridableProp, overrides }: Props ) {\n\treturn (\n\t\t<SettingsField bind=\"component_instance\" propDisplayName={ overridableProp.label }>\n\t\t\t<OverrideControl overridableProp={ overridableProp } overrides={ overrides } />\n\t\t</SettingsField>\n\t);\n}\n\nfunction OverrideControl( { overridableProp, overrides }: Props ) {\n\tconst componentInstanceElement = useElement();\n\tconst componentId = useCurrentComponentId();\n\tconst { value: instanceValue, setValue: setInstanceValue } = useBoundProp( componentInstancePropTypeUtil );\n\tconst controls = useControlsByWidgetType(\n\t\toverridableProp?.originPropFields?.widgetType ?? overridableProp.widgetType\n\t);\n\tconst controlReplacements = getControlReplacements();\n\n\tconst propType = getPropTypeForComponentOverride( overridableProp );\n\n\tif ( ! propType ) {\n\t\treturn null;\n\t}\n\n\tconst propTypeSchema = createTopLevelObjectType( {\n\t\tschema: {\n\t\t\t[ overridableProp.overrideKey ]: propType,\n\t\t},\n\t} );\n\n\tconst componentInstanceId = instanceValue.component_id?.value;\n\n\tif ( ! componentInstanceId ) {\n\t\tthrow new Error( 'Component ID is required' );\n\t}\n\n\tconst matchingOverride = getMatchingOverride( overrides, overridableProp.overrideKey );\n\n\tconst propValue = matchingOverride ? resolveOverridePropValue( matchingOverride ) : overridableProp.originValue;\n\n\tconst value = {\n\t\t[ overridableProp.overrideKey ]: propValue,\n\t} as OverridesSchema;\n\n\tconst setValue = ( newValue: OverridesSchema ) => {\n\t\tconst newPropValue = newValue[ overridableProp.overrideKey ] as\n\t\t\t| ComponentInstanceOverrideProp\n\t\t\t| ComponentOverridableProp;\n\n\t\tconst newOverrideValue = createOverrideValue( {\n\t\t\tmatchingOverride,\n\t\t\toverrideKey: overridableProp.overrideKey,\n\t\t\toverrideValue: newPropValue,\n\t\t\tcomponentId: componentInstanceId,\n\t\t} );\n\n\t\tlet newOverrides =\n\t\t\toverrides?.map( ( override ) => ( override === matchingOverride ? newOverrideValue : override ) ) ?? [];\n\n\t\tif ( ! matchingOverride ) {\n\t\t\tnewOverrides = [ ...newOverrides, newOverrideValue ];\n\t\t}\n\n\t\tsetInstanceValue( {\n\t\t\t...instanceValue,\n\t\t\toverrides: componentInstanceOverridesPropTypeUtil.create( newOverrides ),\n\t\t} );\n\n\t\tconst overridableValue = componentOverridablePropTypeUtil.extract( newOverrideValue );\n\t\tif ( overridableValue && componentId ) {\n\t\t\tif ( overridableProp.originPropFields ) {\n\t\t\t\tupdateOverridableProp( componentId, overridableValue, overridableProp.originPropFields );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { elType, widgetType, propKey, elementId } = overridableProp;\n\t\t\tupdateOverridableProp( componentId, overridableValue, { elType, widgetType, propKey, elementId } );\n\t\t}\n\t};\n\n\tconst { control, controlProps, layout } = getControlParams(\n\t\tcontrols,\n\t\toverridableProp?.originPropFields ?? overridableProp,\n\t\toverridableProp.label\n\t);\n\n\tconst { elementId, widgetType, elType, propKey } = overridableProp.originPropFields ?? overridableProp;\n\n\tconst elementContainer = getContainer( elementId );\n\tif ( ! elementContainer ) {\n\t\tthrow new OverrideControlInnerElementNotFoundError( {\n\t\t\tcontext: { componentId: componentInstanceId, elementId },\n\t\t} );\n\t}\n\n\tconst type = elType === 'widget' ? widgetType : elType;\n\tconst elementType = getElementType( type );\n\n\tif ( ! elementType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<OverridablePropProvider\n\t\t\tvalue={ componentOverridablePropTypeUtil.extract( matchingOverride ) ?? undefined }\n\t\t\tcomponentInstanceElement={ componentInstanceElement }\n\t\t>\n\t\t\t<ElementProvider element={ { id: elementId, type } } elementType={ elementType }>\n\t\t\t\t<SettingsField bind={ propKey } propDisplayName={ overridableProp.label }>\n\t\t\t\t\t<PropProvider\n\t\t\t\t\t\tpropType={ propTypeSchema }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tsetValue={ setValue }\n\t\t\t\t\t\tisDisabled={ () => {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<PropKeyProvider bind={ overridableProp.overrideKey }>\n\t\t\t\t\t\t\t<ControlReplacementsProvider replacements={ controlReplacements }>\n\t\t\t\t\t\t\t\t<Stack direction=\"column\" gap={ 1 } mb={ 1.5 }>\n\t\t\t\t\t\t\t\t\t{ layout !== 'custom' && <ControlLabel>{ overridableProp.label }</ControlLabel> }\n\t\t\t\t\t\t\t\t\t<OriginalControl control={ control } controlProps={ controlProps } />\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</PropProvider>\n\t\t\t\t</SettingsField>\n\t\t\t</ElementProvider>\n\t\t</OverridablePropProvider>\n\t);\n}\n\nfunction getMatchingOverride(\n\toverrides: ComponentInstanceOverridesPropValue,\n\toverrideKey: string\n): ComponentInstanceOverride | null {\n\treturn (\n\t\toverrides?.find( ( override ) => {\n\t\t\tconst overridableValue = componentOverridablePropTypeUtil.extract( override );\n\t\t\tlet comparedOverrideKey = null;\n\n\t\t\tif ( overridableValue ) {\n\t\t\t\tcomparedOverrideKey = ( overridableValue.origin_value as ComponentInstanceOverrideProp )?.value\n\t\t\t\t\t?.override_key;\n\t\t\t} else {\n\t\t\t\tcomparedOverrideKey = override.value.override_key;\n\t\t\t}\n\n\t\t\treturn comparedOverrideKey === overrideKey;\n\t\t} ) ?? null\n\t);\n}\n\nfunction createOverrideValue( {\n\tmatchingOverride,\n\toverrideKey,\n\toverrideValue,\n\tcomponentId,\n}: {\n\tmatchingOverride: ComponentInstanceOverride | null;\n\toverrideKey: string;\n\toverrideValue: ComponentInstanceOverrideProp | ComponentOverridableProp;\n\tcomponentId: number;\n} ): ComponentInstanceOverride {\n\t// this is for an override that's already set as overridable\n\tconst overridableValue = componentOverridablePropTypeUtil.extract( matchingOverride );\n\n\t// this is for changes via the overridable-prop-indicator\n\tconst newOverridableValue = componentOverridablePropTypeUtil.extract( overrideValue );\n\n\tconst anyOverridable = newOverridableValue ?? overridableValue;\n\n\tif ( anyOverridable ) {\n\t\tconst innerOverride = componentInstanceOverridePropTypeUtil.create( {\n\t\t\toverride_key: overrideKey,\n\t\t\toverride_value: resolveOverridePropValue( overrideValue ),\n\t\t\tschema_source: {\n\t\t\t\ttype: 'component',\n\t\t\t\tid: componentId,\n\t\t\t},\n\t\t} );\n\n\t\treturn componentOverridablePropTypeUtil.create( {\n\t\t\toverride_key: anyOverridable.override_key,\n\t\t\torigin_value: innerOverride,\n\t\t} );\n\t}\n\n\treturn componentInstanceOverridePropTypeUtil.create( {\n\t\toverride_key: overrideKey,\n\t\toverride_value: overrideValue,\n\t\tschema_source: {\n\t\t\ttype: 'component',\n\t\t\tid: componentId,\n\t\t},\n\t} );\n}\n\nfunction getControlParams( controls: Record< string, Control >, originPropFields: OriginPropFields, label?: string ) {\n\tconst control = controls[ originPropFields.propKey ];\n\tconst { value } = control;\n\n\tconst layout = getControlLayout( control );\n\n\tconst controlProps = populateChildControlProps( value.props );\n\n\tif ( layout === 'custom' ) {\n\t\tcontrolProps.label = label ?? value.label;\n\t}\n\n\treturn {\n\t\tcontrol,\n\t\tcontrolProps,\n\t\tlayout,\n\t};\n}\n\nfunction OriginalControl( { control, controlProps }: { control: Control; controlProps: Record< string, unknown > } ) {\n\tconst { value } = control;\n\n\treturn <BaseControl type={ value.type as ControlType } props={ controlProps } />;\n}\n\nfunction getControlLayout( control: Control ) {\n\treturn control.value.meta?.layout || controlsRegistry.getLayout( control.value.type as ControlType );\n}\n\nfunction populateChildControlProps( props: Record< string, unknown > ) {\n\tif ( props.childControlType ) {\n\t\tconst childComponent = controlsRegistry.get( props.childControlType as ControlType );\n\t\tconst childPropType = controlsRegistry.getPropTypeUtil( props.childControlType as ControlType );\n\t\tprops = {\n\t\t\t...props,\n\t\t\tchildControlConfig: {\n\t\t\t\tcomponent: childComponent,\n\t\t\t\tprops: props.childControlProps || {},\n\t\t\t\tpropTypeUtil: childPropType,\n\t\t\t},\n\t\t};\n\t}\n\n\treturn props;\n}\n","import { type Control, type ControlItem, getElementType } from '@elementor/editor-elements';\n\nexport function useControlsByWidgetType( type: string ): Record< string, Control > {\n\tconst elementType = getElementType( type );\n\n\tif ( ! elementType ) {\n\t\treturn {};\n\t}\n\n\tconst controls = iterateControls( elementType.controls );\n\n\treturn getControlsByBind( controls );\n}\n\nfunction iterateControls( controls: ControlItem[] ): Control[] {\n\treturn controls\n\t\t.map( ( control ) => {\n\t\t\tif ( control.type === 'control' && 'bind' in control.value ) {\n\t\t\t\treturn control;\n\t\t\t}\n\n\t\t\tif ( control.type === 'section' ) {\n\t\t\t\treturn iterateControls( control.value.items );\n\t\t\t}\n\n\t\t\treturn null;\n\t\t} )\n\t\t.filter( Boolean )\n\t\t.flat() as Control[];\n}\n\nfunction getControlsByBind( controls: Control[] ): Record< string, Control > {\n\treturn controls.reduce(\n\t\t( controlsByBind: Record< string, Control >, control ) => ( {\n\t\t\t...controlsByBind,\n\t\t\t[ control.value.bind ]: control,\n\t\t} ),\n\t\t{}\n\t);\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type useElement } from '@elementor/editor-editing-panel';\n\nimport { type ComponentOverridablePropValue } from '../prop-types/component-overridable-prop-type';\n\ntype OverridablePropData = {\n\tvalue?: ComponentOverridablePropValue;\n\tcomponentInstanceElement?: ReturnType< typeof useElement >;\n};\n\nconst OverridablePropContext = createContext< OverridablePropData | null >( null );\n\nexport function OverridablePropProvider( { children, ...props }: PropsWithChildren< OverridablePropData > ) {\n\treturn <OverridablePropContext.Provider value={ props }>{ children }</OverridablePropContext.Provider>;\n}\n\nexport const useOverridablePropValue = () => useContext( OverridablePropContext )?.value;\n\nexport const useComponentInstanceElement = () => useContext( OverridablePropContext )?.componentInstanceElement;\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentOverridablePropValue } from '../../prop-types/component-overridable-prop-type';\nimport { type OriginPropFields, type OverridableProps } from '../../types';\nimport { resolveOverridePropValue } from '../../utils/resolve-override-prop-value';\nimport { selectOverridableProps, slice } from '../store';\n\nexport function updateOverridableProp(\n\tcomponentId: number,\n\tpropValue: ComponentOverridablePropValue,\n\toriginPropFields?: OriginPropFields\n) {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst existingOverridableProp = overridableProps.props[ propValue.override_key ];\n\n\tif ( ! existingOverridableProp ) {\n\t\treturn;\n\t}\n\n\tconst originValue = resolveOverridePropValue( propValue.origin_value );\n\n\tconst newOverridableProp = originPropFields\n\t\t? {\n\t\t\t\toriginValue,\n\t\t\t\toriginPropFields,\n\t\t }\n\t\t: {\n\t\t\t\toriginValue,\n\t\t };\n\n\tconst newOverridableProps = {\n\t\t...overridableProps,\n\t\tprops: {\n\t\t\t...overridableProps.props,\n\t\t\t[ existingOverridableProp.overrideKey ]: {\n\t\t\t\t...existingOverridableProp,\n\t\t\t\t...newOverridableProp,\n\t\t\t},\n\t\t},\n\t} satisfies OverridableProps;\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: newOverridableProps,\n\t\t} )\n\t);\n}\n","import { type PropValue } from '@elementor/editor-props';\n\nimport {\n\ttype ComponentInstanceOverrideProp,\n\tcomponentInstanceOverridePropTypeUtil,\n} from '../prop-types/component-instance-override-prop-type';\nimport { type ComponentInstanceOverride } from '../prop-types/component-instance-overrides-prop-type';\nimport {\n\ttype ComponentOverridableProp,\n\tcomponentOverridablePropTypeUtil,\n} from '../prop-types/component-overridable-prop-type';\n\nexport const resolveOverridePropValue = ( originalPropValue: ComponentInstanceOverride | PropValue ): PropValue => {\n\tconst isOverridable = componentOverridablePropTypeUtil.isValid( originalPropValue );\n\tif ( isOverridable ) {\n\t\treturn getOverridableValue( originalPropValue as ComponentOverridableProp );\n\t}\n\n\tconst isOverride = componentInstanceOverridePropTypeUtil.isValid( originalPropValue );\n\tif ( isOverride ) {\n\t\treturn getOverrideValue( originalPropValue );\n\t}\n\n\treturn originalPropValue;\n};\n\nfunction getOverridableValue( overridableProp: ComponentOverridableProp | null ): PropValue {\n\tconst overridableValue = componentOverridablePropTypeUtil.extract( overridableProp );\n\n\tif ( ! overridableValue ) {\n\t\treturn null;\n\t}\n\n\tconst isOverride = componentInstanceOverridePropTypeUtil.isValid( overridableValue.origin_value );\n\n\tif ( isOverride ) {\n\t\treturn getOverrideValue( overridableValue.origin_value as ComponentInstanceOverrideProp );\n\t}\n\n\treturn overridableValue.origin_value;\n}\n\nfunction getOverrideValue( overrideProp: ComponentInstanceOverrideProp | null ): PropValue {\n\tconst overrideValue = componentInstanceOverridePropTypeUtil.extract( overrideProp );\n\n\tif ( ! overrideValue ) {\n\t\treturn null;\n\t}\n\n\treturn overrideValue.override_value as PropValue;\n}\n","import { getWidgetsCache } from '@elementor/editor-elements';\n\nimport { type OriginPropFields, type OverridableProp } from '../types';\n\nexport const getPropTypeForComponentOverride = ( overridableProp: OverridableProp ) => {\n\tif ( overridableProp.originPropFields ) {\n\t\treturn getPropType( overridableProp.originPropFields );\n\t}\n\n\tconst { elType, widgetType, propKey, elementId } = overridableProp;\n\n\treturn getPropType( {\n\t\telType,\n\t\twidgetType,\n\t\tpropKey,\n\t\telementId,\n\t} );\n};\n\nfunction getPropType( { widgetType, propKey }: OriginPropFields ) {\n\tconst widgetPropsSchema = getWidgetsCache()?.[ widgetType ]?.atomic_props_schema;\n\n\treturn widgetPropsSchema?.[ propKey ];\n}\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { ControlAdornments, ControlFormLabel } from '@elementor/editor-controls';\nimport { type FormLabelProps, Stack } from '@elementor/ui';\n\ntype ControlLabelProps = FormLabelProps & PropsWithChildren< object >;\n\nexport const ControlLabel = ( { children, ...props }: ControlLabelProps ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel { ...props }>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import { createError } from '@elementor/utils';\n\nexport const OverrideControlInnerElementNotFoundError = createError< { componentId: number; elementId: string } >( {\n\tcode: 'override_control_inner_element_not_found',\n\tmessage: `Component inner element not found for override control. The element may have been deleted without updating the overridable props, or the component has not finished rendering yet.`,\n} );\n","import * as React from 'react';\nimport { type ComponentType } from 'react';\nimport {\n\tControlReplacementsProvider,\n\tPropKeyProvider,\n\tPropProvider,\n\tuseBoundProp,\n\tuseControlReplacement,\n} from '@elementor/editor-controls';\nimport { createTopLevelObjectType, getControlReplacements, useElement } from '@elementor/editor-editing-panel';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { type ComponentInstanceOverridePropValue } from '../../prop-types/component-instance-override-prop-type';\nimport {\n\tcomponentOverridablePropTypeUtil,\n\ttype ComponentOverridablePropValue,\n} from '../../prop-types/component-overridable-prop-type';\nimport { OverridablePropProvider } from '../../provider/overridable-prop-context';\nimport { updateOverridableProp } from '../../store/actions/update-overridable-prop';\nimport { useCurrentComponentId, useOverridableProps } from '../../store/store';\nimport { getPropTypeForComponentOverride } from '../../utils/get-prop-type-for-component-override';\nimport { OVERRIDABLE_PROP_REPLACEMENT_ID } from '../consts';\n\nexport function OverridablePropControl< T extends object >( {\n\tOriginalControl,\n\t...props\n}: T & { OriginalControl: ComponentType< T > } ) {\n\tconst { elementType } = useElement();\n\n\tconst { value, bind, setValue, placeholder, ...propContext } = useBoundProp( componentOverridablePropTypeUtil );\n\tconst componentId = useCurrentComponentId();\n\tconst overridableProps = useOverridableProps( componentId );\n\tconst filteredReplacements = getControlReplacements().filter(\n\t\t( r ) => ! r.id || r.id !== OVERRIDABLE_PROP_REPLACEMENT_ID\n\t);\n\n\tif ( ! componentId ) {\n\t\treturn null;\n\t}\n\n\tif ( ! value?.override_key ) {\n\t\tthrow new Error( 'Override key is required' );\n\t}\n\n\tconst isComponentInstance = elementType.key === 'e-component';\n\tconst overridablePropData = overridableProps?.props?.[ value.override_key ];\n\n\tconst setOverridableValue = ( newValue: Record< typeof bind, PropValue | null > ) => {\n\t\tconst propValue = {\n\t\t\t...value,\n\t\t\torigin_value: newValue[ bind ],\n\t\t} as ComponentOverridablePropValue;\n\n\t\tsetValue( propValue );\n\n\t\tif ( ! isComponentInstance ) {\n\t\t\tupdateOverridableProp( componentId, propValue, overridablePropData?.originPropFields );\n\t\t}\n\t};\n\n\tconst defaultPropType = elementType.propsSchema[ bind ];\n\tconst overridePropType = overridablePropData ? getPropTypeForComponentOverride( overridablePropData ) : undefined;\n\n\tconst resolvedPropType = overridePropType ?? defaultPropType;\n\n\tif ( ! resolvedPropType ) {\n\t\treturn null;\n\t}\n\n\tconst propType = createTopLevelObjectType( {\n\t\tschema: {\n\t\t\t[ bind ]: resolvedPropType,\n\t\t},\n\t} );\n\n\tconst propValue = (\n\t\tisComponentInstance\n\t\t\t? ( value.origin_value?.value as ComponentInstanceOverridePropValue ).override_value\n\t\t\t: value.origin_value\n\t) as PropValue;\n\n\tconst objectPlaceholder: Record< string, PropValue > | undefined = placeholder\n\t\t? { [ bind ]: placeholder }\n\t\t: undefined;\n\n\treturn (\n\t\t<OverridablePropProvider value={ value }>\n\t\t\t<PropProvider\n\t\t\t\t{ ...propContext }\n\t\t\t\tpropType={ propType }\n\t\t\t\tsetValue={ setOverridableValue }\n\t\t\t\tvalue={ {\n\t\t\t\t\t[ bind ]: propValue,\n\t\t\t\t} }\n\t\t\t\tplaceholder={ objectPlaceholder }\n\t\t\t>\n\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t<ControlReplacementsProvider replacements={ filteredReplacements }>\n\t\t\t\t\t\t<ControlWithReplacements OriginalControl={ OriginalControl } props={ props as T } />\n\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</OverridablePropProvider>\n\t);\n}\n\ntype ControlComponentType = ComponentType< object & { OriginalControl: ComponentType } >;\n\nfunction ControlWithReplacements< T extends object >( {\n\tOriginalControl,\n\tprops,\n}: {\n\tOriginalControl: ComponentType< T >;\n\tprops: T;\n} ) {\n\tconst { ControlToRender, isReplaced } = useControlReplacement( OriginalControl as ControlComponentType );\n\n\tif ( isReplaced ) {\n\t\tconst ReplacementControl = ControlToRender as unknown as ComponentType<\n\t\t\tT & { OriginalControl: ComponentType< T > }\n\t\t>;\n\t\treturn <ReplacementControl { ...props } OriginalControl={ OriginalControl } />;\n\t}\n\n\treturn <OriginalControl { ...props } />;\n}\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { useElement } from '@elementor/editor-editing-panel';\nimport { getWidgetsCache } from '@elementor/editor-elements';\nimport { type PropType, type TransformablePropValue } from '@elementor/editor-props';\nimport { bindPopover, bindTrigger, Popover, Tooltip, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { componentOverridablePropTypeUtil } from '../../prop-types/component-overridable-prop-type';\nimport { useComponentInstanceElement, useOverridablePropValue } from '../../provider/overridable-prop-context';\nimport { setOverridableProp } from '../../store/actions/set-overridable-prop';\nimport { useCurrentComponentId, useOverridableProps } from '../../store/store';\nimport { type OverridableProps } from '../../types';\nimport { resolveOverridePropValue } from '../../utils/resolve-override-prop-value';\nimport { Indicator } from './indicator';\nimport { OverridablePropForm } from './overridable-prop-form';\nimport { getOverridableProp } from './utils/get-overridable-prop';\n\nexport function OverridablePropIndicator() {\n\tconst { propType } = useBoundProp();\n\tconst componentId = useCurrentComponentId();\n\tconst overridableProps = useOverridableProps( componentId );\n\n\tif ( ! isPropAllowed( propType ) || ! componentId || ! overridableProps ) {\n\t\treturn null;\n\t}\n\n\treturn <Content componentId={ componentId } overridableProps={ overridableProps } />;\n}\n\ntype Props = {\n\tcomponentId: number;\n\toverridableProps?: OverridableProps;\n};\nexport function Content( { componentId, overridableProps }: Props ) {\n\tconst {\n\t\telement: { id: elementId },\n\t\telementType,\n\t} = useElement();\n\tconst { value, bind, propType } = useBoundProp();\n\n\tconst contextOverridableValue = useOverridablePropValue();\n\tconst componentInstanceElement = useComponentInstanceElement();\n\n\tconst { value: boundPropOverridableValue, setValue: setOverridableValue } = useBoundProp(\n\t\tcomponentOverridablePropTypeUtil\n\t);\n\n\t/**\n\t * This is intended to handle custom layout controls, such as <LinkControl />, which has <ControlLabel /> nested within it\n\t * i.e. its bound prop value would be the one manipulated by the new <PropProvider /> thus won't be considered overridable\n\t */\n\tconst overridableValue = boundPropOverridableValue ?? contextOverridableValue;\n\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t} );\n\n\tconst triggerProps = bindTrigger( popupState );\n\tconst popoverProps = bindPopover( popupState );\n\n\tconst { elType } = getWidgetsCache()?.[ elementType.key ] ?? { elType: 'widget' };\n\n\tconst handleSubmit = ( { label, group }: { label: string; group: string | null } ) => {\n\t\tconst propTypeDefault = propType.default ?? {};\n\n\t\tconst originValue = resolveOverridePropValue( overridableValue?.origin_value ) ?? value ?? propTypeDefault;\n\n\t\tconst matchingOverridableProp = overridableValue\n\t\t\t? overridableProps?.props?.[ overridableValue.override_key ]\n\t\t\t: undefined;\n\n\t\tconst overridablePropConfig = setOverridableProp( {\n\t\t\tcomponentId,\n\t\t\toverrideKey: overridableValue?.override_key ?? null,\n\t\t\telementId: componentInstanceElement?.element.id ?? elementId,\n\t\t\tlabel,\n\t\t\tgroupId: group,\n\t\t\tpropKey: bind,\n\t\t\telType: elType ?? 'widget',\n\t\t\twidgetType: componentInstanceElement?.elementType.key ?? elementType.key,\n\t\t\toriginValue,\n\t\t\toriginPropFields: matchingOverridableProp?.originPropFields,\n\t\t\tsource: 'user',\n\t\t} );\n\n\t\tif ( ! overridableValue && overridablePropConfig ) {\n\t\t\tsetOverridableValue( {\n\t\t\t\toverride_key: overridablePropConfig.overrideKey,\n\t\t\t\torigin_value: originValue as TransformablePropValue< string, unknown >,\n\t\t\t} );\n\t\t}\n\n\t\tpopupState.close();\n\t};\n\n\tconst overridableConfig = overridableValue\n\t\t? getOverridableProp( { componentId, overrideKey: overridableValue.override_key } )\n\t\t: undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<Tooltip placement=\"top\" title={ __( 'Override Property', 'elementor' ) }>\n\t\t\t\t<Indicator { ...triggerProps } isOpen={ !! popoverProps.open } isOverridable={ !! overridableValue } />\n\t\t\t</Tooltip>\n\t\t\t<Popover\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 2.5 },\n\t\t\t\t} }\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t<OverridablePropForm\n\t\t\t\t\tonSubmit={ handleSubmit }\n\t\t\t\t\tgroups={ overridableProps?.groups.order.map( ( groupId ) => ( {\n\t\t\t\t\t\tvalue: groupId,\n\t\t\t\t\t\tlabel: overridableProps.groups.items[ groupId ].label,\n\t\t\t\t\t} ) ) }\n\t\t\t\t\texistingLabels={ Object.values( overridableProps?.props ?? {} ).map( ( prop ) => prop.label ) }\n\t\t\t\t\tcurrentValue={ overridableConfig }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nfunction isPropAllowed( propType: PropType ) {\n\treturn propType.meta.overridable !== false;\n}\n","import { type PropValue } from '@elementor/editor-props';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\nimport { generateUniqueId } from '@elementor/utils';\n\nimport { type OriginPropFields, type OverridableProp } from '../../types';\nimport { type Source, trackComponentEvent } from '../../utils/tracking';\nimport { selectCurrentComponent, selectOverridableProps, slice } from '../store';\nimport {\n\taddPropToGroup,\n\tensureGroupInOrder,\n\tremovePropFromGroup,\n\tremovePropsFromState,\n\tresolveOrCreateGroup,\n} from '../utils/groups-transformers';\n\ntype Props = {\n\tcomponentId: number;\n\toverrideKey: string | null;\n\telementId: string;\n\tlabel: string;\n\tgroupId: string | null;\n\tpropKey: string;\n\telType: string;\n\twidgetType: string;\n\toriginValue: PropValue;\n\toriginPropFields?: OriginPropFields;\n\tsource: Source;\n};\n\nexport function setOverridableProp( {\n\tcomponentId,\n\toverrideKey,\n\telementId,\n\tlabel,\n\tgroupId,\n\tpropKey,\n\telType,\n\twidgetType,\n\toriginValue,\n\toriginPropFields,\n\tsource,\n}: Props ): OverridableProp | undefined {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst existingOverridableProp = overrideKey ? overridableProps.props[ overrideKey ] : null;\n\tconst duplicatedTargetProps = Object.values( overridableProps.props ).filter(\n\t\t( prop ) => prop.elementId === elementId && prop.propKey === propKey && prop !== existingOverridableProp\n\t);\n\n\tconst { groups: groupsAfterResolve, groupId: currentGroupId } = resolveOrCreateGroup(\n\t\toverridableProps.groups,\n\t\tgroupId || existingOverridableProp?.groupId || undefined\n\t);\n\n\tconst overridableProp: OverridableProp = {\n\t\toverrideKey: existingOverridableProp?.overrideKey || generateUniqueId( 'prop' ),\n\t\tlabel,\n\t\telementId,\n\t\tpropKey,\n\t\twidgetType,\n\t\telType,\n\t\toriginValue,\n\t\tgroupId: currentGroupId,\n\t\toriginPropFields,\n\t};\n\n\tconst stateAfterRemovingDuplicates = removePropsFromState(\n\t\t{ ...overridableProps, groups: groupsAfterResolve },\n\t\tduplicatedTargetProps\n\t);\n\n\tconst props = {\n\t\t...stateAfterRemovingDuplicates.props,\n\t\t[ overridableProp.overrideKey ]: overridableProp,\n\t};\n\n\tlet groups = addPropToGroup( stateAfterRemovingDuplicates.groups, currentGroupId, overridableProp.overrideKey );\n\tgroups = ensureGroupInOrder( groups, currentGroupId );\n\n\tconst isChangingGroups = existingOverridableProp && existingOverridableProp.groupId !== currentGroupId;\n\n\tif ( isChangingGroups ) {\n\t\tgroups = removePropFromGroup( groups, existingOverridableProp.groupId, overridableProp.overrideKey );\n\t}\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\tprops,\n\t\t\t\tgroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\tconst isNewProperty = ! existingOverridableProp;\n\n\tif ( isNewProperty ) {\n\t\tconst currentComponent = selectCurrentComponent( getState() );\n\n\t\ttrackComponentEvent( {\n\t\t\taction: 'propertyExposed',\n\t\t\tsource,\n\t\t\tcomponent_uid: currentComponent?.uid,\n\t\t\tproperty_id: overridableProp.overrideKey,\n\t\t\tproperty_path: propKey,\n\t\t\tproperty_name: label,\n\t\t\telement_type: widgetType ?? elType,\n\t\t} );\n\t}\n\n\treturn overridableProp;\n}\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { CheckIcon, PlusIcon } from '@elementor/icons';\nimport { Box, styled } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst SIZE = 'tiny';\n\nconst IconContainer = styled( Box )`\n\tpointer-events: none;\n\topacity: 0;\n\ttransition: opacity 0.2s ease-in-out;\n\n\t& > svg {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate( -50%, -50% );\n\t\twidth: 10px;\n\t\theight: 10px;\n\t\tfill: ${ ( { theme } ) => theme.palette.primary.contrastText };\n\t\tstroke: ${ ( { theme } ) => theme.palette.primary.contrastText };\n\t\tstroke-width: 2px;\n\t}\n`;\n\nconst Content = styled( Box )`\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\twidth: 16px;\n\theight: 16px;\n\tmargin-inline: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\n\t&:before {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate( -50%, -50% ) rotate( 45deg );\n\t\twidth: 5px;\n\t\theight: 5px;\n\t\tborder-radius: 1px;\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.primary.main };\n\t\ttransition: all 0.1s ease-in-out;\n\t}\n\n\t&:hover,\n\t&.enlarged {\n\t\t&:before {\n\t\t\twidth: 12px;\n\t\t\theight: 12px;\n\t\t\tborder-radius: 2px;\n\t\t}\n\n\t\t.icon {\n\t\t\topacity: 1;\n\t\t}\n\t}\n`;\n\ntype Props = {\n\tisOverridable: boolean;\n\tisOpen: boolean;\n};\nexport const Indicator = forwardRef< HTMLDivElement, Props >( ( { isOpen, isOverridable, ...props }, ref ) => (\n\t<Content ref={ ref } { ...props } className={ isOpen || isOverridable ? 'enlarged' : '' }>\n\t\t<IconContainer\n\t\t\tclassName=\"icon\"\n\t\t\taria-label={\n\t\t\t\tisOverridable ? __( 'Overridable property', 'elementor' ) : __( 'Make prop overridable', 'elementor' )\n\t\t\t}\n\t\t>\n\t\t\t{ isOverridable ? <CheckIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconContainer>\n\t</Content>\n) );\n","import { __getState as getState } from '@elementor/store';\n\nimport { selectOverridableProps } from '../../../store/store';\nimport { type OverridableProp } from '../../../types';\n\nexport function getOverridableProp( {\n\tcomponentId,\n\toverrideKey,\n}: {\n\tcomponentId: number;\n\toverrideKey: string;\n} ): OverridableProp | undefined {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn undefined;\n\t}\n\n\treturn overridableProps.props[ overrideKey ];\n}\n","import { getMCPByDomain } from '@elementor/editor-mcp';\n\nimport { initSaveAsComponentTool } from './save-as-component-tool';\n\nexport function initMcp() {\n\tconst { setMCPDescription } = getMCPByDomain( 'components' );\n\n\tsetMCPDescription(\n\t\t`Elementor Editor Components MCP - Tools for creating and managing reusable components. \n Components are reusable blocks of content that can be used multiple times across the pages, its a widget which contains a set of elements and styles.`\n\t);\n\n\tinitSaveAsComponentTool();\n}\n","import { DOCUMENT_STRUCTURE_URI, WIDGET_SCHEMA_URI } from '@elementor/editor-canvas';\nimport { getContainer, getElementType, getWidgetsCache, type V1ElementData } from '@elementor/editor-elements';\nimport { getMCPByDomain, toolPrompts } from '@elementor/editor-mcp';\nimport { type PropValue } from '@elementor/editor-props';\nimport { AxiosError } from '@elementor/http-client';\nimport { z } from '@elementor/schema';\nimport { generateUniqueId } from '@elementor/utils';\n\nimport { apiClient } from '../api';\nimport { createUnpublishedComponent } from '../store/actions/create-unpublished-component';\nimport { type OverridableProps } from '../types';\n\nconst InputSchema = {\n\telement_id: z\n\t\t.string()\n\t\t.describe(\n\t\t\t'The unique identifier of the element to save as a component. ' +\n\t\t\t\t'Use the \"list-elements\" tool to find available element IDs in the current document.'\n\t\t),\n\tcomponent_name: z\n\t\t.string()\n\t\t.describe( 'The name for the new component. Should be descriptive and unique among existing components.' ),\n\toverridable_props: z\n\t\t.object( {\n\t\t\tprops: z.record(\n\t\t\t\tz.object( {\n\t\t\t\t\telementId: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.describe( 'The id of the child element that you want to override its settings' ),\n\t\t\t\t\tpropKey: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.describe(\n\t\t\t\t\t\t\t'The property key of the child element that you want to override its settings (e.g., \"text\", \"url\", \"tag\"). To get the available propKeys for an element, use the \"get-element-type-config\" tool.'\n\t\t\t\t\t\t),\n\t\t\t\t\tlabel: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.describe(\n\t\t\t\t\t\t\t'A unique, user-friendly display name for this property (e.g., \"Hero Headline\", \"CTA Button Text\"). Must be unique within the same component.'\n\t\t\t\t\t\t),\n\t\t\t\t} )\n\t\t\t),\n\t\t} )\n\t\t.optional()\n\t\t.describe(\n\t\t\t'Overridable properties configuration. Specify which CHILD element properties can be customized. ' +\n\t\t\t\t'Only elementId and propKey are required; To get the available propKeys for a child element you must use the \"get-element-type-config\" tool.'\n\t\t),\n};\n\nconst OutputSchema = {\n\tmessage: z.string().optional().describe( 'Additional information about the operation result' ),\n\tcomponent_uid: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe( 'The unique identifier of the newly created component (only present on success)' ),\n};\n\nexport const ERROR_MESSAGES = {\n\tELEMENT_NOT_FOUND: \"Element not found. Use 'list-elements' to get valid element IDs.\",\n\tELEMENT_NOT_ONE_OF_TYPES: ( validTypes: string[] ) =>\n\t\t`Element is not one of the following types: ${ validTypes.join( ', ' ) }`,\n\tELEMENT_IS_LOCKED: 'Cannot save a locked element as a component.',\n};\n\nexport const handleSaveAsComponent = async ( params: z.infer< z.ZodObject< typeof InputSchema > > ) => {\n\tconst { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;\n\tconst validElementTypes = getValidElementTypes();\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( ERROR_MESSAGES.ELEMENT_NOT_FOUND );\n\t}\n\n\tconst elType = container.model.get( 'elType' );\n\n\tif ( ! validElementTypes.includes( elType ) ) {\n\t\tthrow new Error( ERROR_MESSAGES.ELEMENT_NOT_ONE_OF_TYPES( validElementTypes ) );\n\t}\n\n\tconst element = container.model.toJSON( { remove: [ 'default' ] } ) as V1ElementData;\n\n\tif ( element?.isLocked ) {\n\t\tthrow new Error( ERROR_MESSAGES.ELEMENT_IS_LOCKED );\n\t}\n\n\tconst overridableProps = overridablePropsInput\n\t\t? enrichOverridableProps( overridablePropsInput, element )\n\t\t: undefined;\n\n\tif ( overridableProps ) {\n\t\tupdateElementDataWithOverridableProps( element, overridableProps );\n\t}\n\n\tconst uid = generateUniqueId( 'component' );\n\n\ttry {\n\t\tawait apiClient.validate( {\n\t\t\titems: [\n\t\t\t\t{ uid, title: componentName, elements: [ element ], settings: { overridable_props: overridableProps } },\n\t\t\t],\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\tif ( error instanceof AxiosError ) {\n\t\t\tthrow new Error( error.response?.data.messge );\n\t\t}\n\t\tthrow new Error( 'Unknown error' );\n\t}\n\n\tawait createUnpublishedComponent( {\n\t\tname: componentName,\n\t\telement,\n\t\teventData: null,\n\t\tuid,\n\t\toverridableProps,\n\t\tsource: 'mcp_tool',\n\t} );\n\n\treturn {\n\t\tstatus: 'ok' as const,\n\t\tmessage: `Component \"${ componentName }\" created successfully.`,\n\t\tcomponent_uid: uid,\n\t};\n};\n\nfunction enrichOverridableProps(\n\tinput: { props: Record< string, { elementId: string; propKey: string; label: string } > },\n\trootElement: V1ElementData\n): OverridableProps {\n\tconst enrichedProps: OverridableProps[ 'props' ] = {};\n\tconst defaultGroupId = generateUniqueId( 'group' );\n\n\tObject.entries( input.props ).forEach( ( [ , prop ] ) => {\n\t\tconst { elementId, propKey, label } = prop;\n\t\tconst element = findElementById( rootElement, elementId );\n\n\t\tif ( ! element ) {\n\t\t\tthrow new Error( `Element with ID \"${ elementId }\" not found in component` );\n\t\t}\n\n\t\tconst elType = element.elType;\n\t\tconst widgetType = element.widgetType || element.elType;\n\n\t\t// Validate that the propKey exists in the element's schema\n\t\tconst elementType = getElementType( widgetType );\n\n\t\tif ( ! elementType ) {\n\t\t\tthrow new Error(\n\t\t\t\t`Element type \"${ widgetType }\" is not atomic or does not have a settings schema. ` +\n\t\t\t\t\t`Cannot expose property \"${ propKey }\" for element \"${ elementId }\".`\n\t\t\t);\n\t\t}\n\n\t\tif ( ! elementType.propsSchema[ propKey ] ) {\n\t\t\tconst availableProps = Object.keys( elementType.propsSchema ).join( ', ' );\n\t\t\tthrow new Error(\n\t\t\t\t`Property \"${ propKey }\" does not exist in element \"${ elementId }\" (type: ${ widgetType }). ` +\n\t\t\t\t\t`Available properties: ${ availableProps }`\n\t\t\t);\n\t\t}\n\n\t\tconst overrideKey = generateUniqueId( 'prop' );\n\t\tconst originValue = element.settings?.[ propKey ]\n\t\t\t? ( element.settings[ propKey ] as PropValue )\n\t\t\t: elementType.propsSchema[ propKey ].default ?? null;\n\n\t\tenrichedProps[ overrideKey ] = {\n\t\t\toverrideKey,\n\t\t\tlabel,\n\t\t\telementId,\n\t\t\tpropKey,\n\t\t\telType,\n\t\t\twidgetType,\n\t\t\toriginValue,\n\t\t\tgroupId: defaultGroupId,\n\t\t};\n\t} );\n\n\treturn {\n\t\tprops: enrichedProps,\n\t\tgroups: {\n\t\t\titems: {\n\t\t\t\t[ defaultGroupId ]: {\n\t\t\t\t\tid: defaultGroupId,\n\t\t\t\t\tlabel: 'Default',\n\t\t\t\t\tprops: Object.keys( enrichedProps ),\n\t\t\t\t},\n\t\t\t},\n\t\t\torder: [ defaultGroupId ],\n\t\t},\n\t};\n}\n\nfunction updateElementDataWithOverridableProps( rootElement: V1ElementData, overridableProps: OverridableProps ) {\n\tObject.values( overridableProps.props ).forEach( ( prop ) => {\n\t\tconst element = findElementById( rootElement, prop.elementId );\n\n\t\tif ( ! element || ! element.settings ) {\n\t\t\treturn;\n\t\t}\n\n\t\telement.settings[ prop.propKey ] = {\n\t\t\t$$type: 'overridable',\n\t\t\tvalue: {\n\t\t\t\toverride_key: prop.overrideKey,\n\t\t\t\torigin_value: prop.originValue,\n\t\t\t},\n\t\t};\n\t} );\n}\n\nfunction findElementById( root: V1ElementData, targetId: string ): V1ElementData | null {\n\tif ( root.id === targetId ) {\n\t\treturn root;\n\t}\n\n\tif ( root.elements ) {\n\t\tfor ( const child of root.elements ) {\n\t\t\tconst found = findElementById( child, targetId );\n\t\t\tif ( found ) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction getValidElementTypes(): string[] {\n\tconst types = getWidgetsCache();\n\n\tif ( ! types ) {\n\t\treturn [];\n\t}\n\n\treturn Object.entries( types ).reduce( ( acc, [ type, value ] ) => {\n\t\tif ( ! value.atomic_props_schema || ! value.show_in_panel || value.elType === 'widget' ) {\n\t\t\treturn acc;\n\t\t}\n\n\t\tacc.push( type );\n\t\treturn acc;\n\t}, [] as string[] );\n}\n\nconst generatePrompt = () => {\n\tconst saveAsComponentPrompt = toolPrompts( 'save-as-component' );\n\n\tsaveAsComponentPrompt.description( `\nSave an existing element as a reusable component in the Elementor editor.\n\n# When to use this tool\nUse this tool when the user wants to:\n- Create a reusable component from an existing element structure\n- Make specific child element properties customizable in component instances\n- Build a library of reusable design patterns\n\n# When NOT to use this tool\n- Element is already a component (widgetType: 'e-component')\n- Element is locked\n- Element is not an atomic element (atomic_props_schema is not defined)\n- Element elType is a 'widget'\n\n# **CRITICAL - REQUIRED RESOURCES (Must read before using this tool)**\n1. [${ DOCUMENT_STRUCTURE_URI }]\n **MANDATORY** - Required to understand the document structure and identify child elements for overridable properties.\n Use this resource to find element IDs and understand the element hierarchy.\n\n2. [${ WIDGET_SCHEMA_URI }]\n **MANDATORY** - Required to understand which properties are available for each widget type.\n Use this to identify available propKeys in the atomic_props_schema for child elements.\n\n# Instructions - MUST FOLLOW IN ORDER\n## Step 1: Identify the Target Element\n1. Read the [${ DOCUMENT_STRUCTURE_URI }] resource to understand the document structure\n2. Locate the element you want to save as a component by its element_id\n3. Verify the element type is a valid element type\n4. Ensure the element is not locked and is not already a component\n\n## Step 2: Define Overridable Properties\nDo this step to make child element properties customizable.\nSkip that step ONLY if the user explicitly requests to not make any properties customizable.\n\n1. **Identify Child Elements**\n - Use the [${ DOCUMENT_STRUCTURE_URI }] resource to find all child elements\n - Note the elementId and widgetType/elType of each child element you want to customize\n\n2. **Find Available Properties**\n - Use the [${ WIDGET_SCHEMA_URI }] resource to find the child element's widget type schema\n - Review the atomic_props_schema to find available propKeys (ONLY use top-level props)\n - Common propKeys include: \"text\", \"url\", \"tag\", \"size\", etc.\n - Use only the top level properties, do not use nested properties.\n\n3. **Build the overridable_props Object**\n - For each property you want to make overridable, add an entry:\n \\`{ \"elementId\": \"<child-element-id>\", \"propKey\": \"<property-key>\", \"label\": \"<user-friendly-name>\" }\\`\n - The label must be unique within the component and should be meaningful to the user (e.g., \"Hero Headline\", \"CTA Button Text\")\n - Group all entries under the \"props\" object\n\n## Step 3: Execute the Tool\nCall the tool with:\n- element_id: The ID of the parent element to save as component\n- component_name: A descriptive name for the component\n- overridable_props: (Optional) The properties configuration from Step 2\n\n# CONSTRAINTS\n- NEVER try to override properties of the parent element itself - ONLY child elements\n- NEVER use invalid propKeys - always verify against the widget's atomic_props_schema in [${ WIDGET_SCHEMA_URI }]\n- Property keys must exist in the child element's atomic_props_schema\n- Element IDs must exist within the target element's children\n- When tool execution fails, read the error message and adjust accordingly\n- The element being saved must not be inside another component\n` );\n\n\tsaveAsComponentPrompt.parameter(\n\t\t'element_id',\n\t\t`**MANDATORY** The unique identifier of the element to save as a component.\nUse the [${ DOCUMENT_STRUCTURE_URI }] resource to find available element IDs.`\n\t);\n\n\tsaveAsComponentPrompt.parameter(\n\t\t'component_name',\n\t\t`**MANDATORY** A descriptive name for the new component.\nShould be unique and clearly describe the component's purpose (e.g., \"Hero Section\", \"Feature Card\").`\n\t);\n\n\tsaveAsComponentPrompt.parameter(\n\t\t'overridable_props',\n\t\t`**OPTIONAL** Configuration for which child element properties can be customized in component instances.\n\nStructure:\n\\`\\`\\`json\n{\n \"props\": {\n \"<unique-key>\": {\n \"elementId\": \"<child-element-id>\",\n \"propKey\": \"<property-key>\",\n \"label\": \"<user-friendly-name>\"\n }\n }\n}\n\\`\\`\\`\n\nTo populate this correctly:\n1. Use [${ DOCUMENT_STRUCTURE_URI }] to find child element IDs and their widgetType\n2. Use [${ WIDGET_SCHEMA_URI }] to find the atomic_props_schema for each child element's widgetType\n3. Only include properties you want to be customizable in component instances\n4. Provide a unique, user-friendly label for each property (e.g., \"Hero Headline\", \"CTA Button Text\")`\n\t);\n\n\tsaveAsComponentPrompt.example( `\nBasic component without overridable properties:\n\\`\\`\\`json\n{\n \"element_id\": \"abc123\",\n \"component_name\": \"Hero Section\"\n}\n\\`\\`\\`\n\nComponent with overridable properties:\n\\`\\`\\`json\n{\n \"element_id\": \"abc123\",\n \"component_name\": \"Feature Card\",\n \"overridable_props\": {\n \"props\": {\n \"heading-text\": {\n \"elementId\": \"heading-123\",\n \"propKey\": \"text\",\n \"label\": \"Card Title\"\n },\n \"button-text\": {\n \"elementId\": \"button-456\",\n \"propKey\": \"text\",\n \"label\": \"Button Text\"\n },\n \"button-link\": {\n \"elementId\": \"button-456\",\n \"propKey\": \"url\",\n \"label\": \"Button Link\"\n }\n }\n }\n}\n\\`\\`\\`\n` );\n\n\tsaveAsComponentPrompt.instruction(\n\t\t`After successful creation, the component will be available in the components library and can be inserted into any page or template.`\n\t);\n\n\tsaveAsComponentPrompt.instruction(\n\t\t`When overridable properties are defined, component instances will show customization controls for those specific properties in the editing panel.`\n\t);\n\n\treturn saveAsComponentPrompt.prompt();\n};\n\nexport const initSaveAsComponentTool = () => {\n\treturn getMCPByDomain( 'components' ).addTool( {\n\t\tname: 'save-as-component',\n\t\tschema: InputSchema,\n\t\toutputSchema: OutputSchema,\n\t\tdescription: generatePrompt(),\n\t\thandler: handleSaveAsComponent,\n\t} );\n};\n","import { useEffect } from 'react';\nimport { __dispatch as dispatch } from '@elementor/store';\n\nimport { loadComponents } from './store/thunks';\n\nexport function PopulateStore() {\n\tuseEffect( () => {\n\t\tdispatch( loadComponents() );\n\t}, [] );\n\n\treturn null;\n}\n","import { getAllDescendants, type V1Element } from '@elementor/editor-elements';\nimport { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\nimport { __getState as getState } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { type ComponentInstanceProp } from './prop-types/component-instance-prop-type';\nimport { type ComponentsSlice, selectCurrentComponentId, selectPath } from './store/store';\nimport { type ExtendedWindow } from './types';\n\nconst COMPONENT_TYPE = 'e-component';\n\ntype CreateArgs = {\n\tcontainer?: V1Element;\n\tmodel?: {\n\t\telType?: string;\n\t\twidgetType?: string;\n\t\tsettings?: {\n\t\t\tcomponent_instance?: ComponentInstanceProp;\n\t\t};\n\t};\n};\n\ntype MoveArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\ttarget?: V1Element;\n};\n\ntype PasteArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\tstorageType?: string;\n};\n\nexport type ClipboardElement = {\n\twidgetType?: string;\n\tsettings?: {\n\t\tcomponent_instance?: ComponentInstanceProp;\n\t};\n\telements?: ClipboardElement[];\n};\n\ntype StorageContent = {\n\tclipboard?: {\n\t\telements?: ClipboardElement[];\n\t};\n};\n\nconst COMPONENT_CIRCULAR_NESTING_ALERT: NotificationData = {\n\ttype: 'default',\n\tmessage: __( \"Can't add this component - components that contain each other can't be nested.\", 'elementor' ),\n\tid: 'circular-component-nesting-blocked',\n};\n\nexport function initCircularNestingPrevention() {\n\tblockCommand( {\n\t\tcommand: 'document/elements/create',\n\t\tcondition: blockCircularCreate,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/move',\n\t\tcondition: blockCircularMove,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste',\n\t\tcondition: blockCircularPaste,\n\t} );\n}\n\n// Note that this function only checks for direct circular nesting, not indirect nesting\nexport function wouldCreateCircularNesting( componentIdToAdd: number | string | undefined ): boolean {\n\tif ( componentIdToAdd === undefined ) {\n\t\treturn false;\n\t}\n\n\tconst state = getState() as ComponentsSlice;\n\tconst currentComponentId = selectCurrentComponentId( state );\n\tconst path = selectPath( state );\n\n\tif ( currentComponentId === null ) {\n\t\treturn false;\n\t}\n\n\tif ( componentIdToAdd === currentComponentId ) {\n\t\treturn true;\n\t}\n\n\treturn path.some( ( item ) => item.componentId === componentIdToAdd );\n}\n\nfunction extractComponentIdFromModel( model: CreateArgs[ 'model' ] ): number | string | null {\n\tif ( ! model ) {\n\t\treturn null;\n\t}\n\n\tconst isComponent = model.widgetType === COMPONENT_TYPE;\n\n\tif ( ! isComponent ) {\n\t\treturn null;\n\t}\n\n\treturn model.settings?.component_instance?.value?.component_id?.value ?? null;\n}\n\nfunction extractComponentIdFromElement( element: ClipboardElement ): number | string | null {\n\tif ( element.widgetType !== COMPONENT_TYPE ) {\n\t\treturn null;\n\t}\n\n\treturn element.settings?.component_instance?.value?.component_id?.value ?? null;\n}\n\nexport function extractComponentIdsFromElements( elements: ClipboardElement[] ): Array< number | string > {\n\tconst ids: Array< number | string > = [];\n\n\tfor ( const element of elements ) {\n\t\tconst componentId = extractComponentIdFromElement( element );\n\n\t\tif ( componentId !== null ) {\n\t\t\tids.push( componentId );\n\t\t}\n\n\t\tif ( element.elements?.length ) {\n\t\t\tids.push( ...extractComponentIdsFromElements( element.elements ) );\n\t\t}\n\t}\n\n\treturn ids;\n}\n\nfunction extractComponentIdFromContainer( container: V1Element ): number | string | null {\n\tconst widgetType = container.model?.get?.( 'widgetType' );\n\n\tif ( widgetType !== COMPONENT_TYPE ) {\n\t\treturn null;\n\t}\n\n\tconst settings = container.model?.get?.( 'settings' ) as { get?: ( key: string ) => unknown } | undefined;\n\tconst componentInstance = settings?.get?.( 'component_instance' ) as ComponentInstanceProp | undefined;\n\n\treturn componentInstance?.value?.component_id?.value ?? null;\n}\n\nfunction blockCircularCreate( args: CreateArgs ): boolean {\n\tconst componentId = extractComponentIdFromModel( args.model );\n\n\tif ( componentId === null ) {\n\t\treturn false;\n\t}\n\n\tconst isBlocked = wouldCreateCircularNesting( componentId );\n\n\tif ( isBlocked ) {\n\t\tnotify( COMPONENT_CIRCULAR_NESTING_ALERT );\n\t}\n\n\treturn isBlocked;\n}\n\nfunction blockCircularMove( args: MoveArgs ): boolean {\n\tconst { containers = [ args.container ] } = args;\n\n\tconst hasCircularComponent = containers.some( ( container ) => {\n\t\tif ( ! container ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst allElements = getAllDescendants( container );\n\n\t\treturn allElements.some( ( element ) => {\n\t\t\tconst componentId = extractComponentIdFromContainer( element );\n\n\t\t\tif ( componentId === null ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn wouldCreateCircularNesting( componentId );\n\t\t} );\n\t} );\n\n\tif ( hasCircularComponent ) {\n\t\tnotify( COMPONENT_CIRCULAR_NESTING_ALERT );\n\t}\n\n\treturn hasCircularComponent;\n}\n\nfunction blockCircularPaste( args: PasteArgs ): boolean {\n\tconst { storageType } = args;\n\n\tif ( storageType !== 'localstorage' ) {\n\t\treturn false;\n\t}\n\n\tconst data = (\n\t\twindow as unknown as ExtendedWindow & { elementorCommon?: { storage?: { get: () => StorageContent } } }\n\t )?.elementorCommon?.storage?.get();\n\n\tif ( ! data?.clipboard?.elements ) {\n\t\treturn false;\n\t}\n\n\tconst allComponentIds = extractComponentIdsFromElements( data.clipboard.elements );\n\tconst hasCircularComponent = allComponentIds.some( wouldCreateCircularNesting );\n\n\tif ( hasCircularComponent ) {\n\t\tnotify( COMPONENT_CIRCULAR_NESTING_ALERT );\n\t}\n\n\treturn hasCircularComponent;\n}\n","import { __dispatch as dispatch } from '@elementor/store';\n\nimport { apiClient } from '../../api';\nimport { slice } from '../store';\n\nexport function removeComponentStyles( id: number ) {\n\tapiClient.invalidateComponentConfigCache( id );\n\tdispatch( slice.actions.removeStyles( { id } ) );\n}\n","import { createStylesProvider } from '@elementor/editor-styles-repository';\nimport { __getState as getState, __subscribeWithSelector as subscribeWithSelector } from '@elementor/store';\n\nimport { selectFlatStyles, SLICE_NAME } from './store';\n\nexport const componentsStylesProvider = createStylesProvider( {\n\tkey: 'components-styles',\n\tpriority: 100,\n\tsubscribe: ( cb ) =>\n\t\tsubscribeWithSelector(\n\t\t\t( state ) => state[ SLICE_NAME ],\n\t\t\t() => {\n\t\t\t\tcb();\n\t\t\t}\n\t\t),\n\tactions: {\n\t\tall: () => {\n\t\t\treturn selectFlatStyles( getState() );\n\t\t},\n\t\tget: ( id ) => {\n\t\t\treturn selectFlatStyles( getState() ).find( ( style ) => style.id === id ) ?? null;\n\t\t},\n\t},\n} );\n","import { updateElementSettings, type V1ElementData } from '@elementor/editor-elements';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../api';\nimport { type ComponentInstanceProp } from '../prop-types/component-instance-prop-type';\nimport { selectUnpublishedComponents, slice } from '../store/store';\nimport { type DocumentSaveStatus, type UnpublishedComponent } from '../types';\n\nexport async function createComponentsBeforeSave( {\n\telements,\n\tstatus,\n}: {\n\telements: V1ElementData[];\n\tstatus: DocumentSaveStatus;\n} ) {\n\tconst unpublishedComponents = selectUnpublishedComponents( getState() );\n\n\tif ( ! unpublishedComponents.length ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tconst uidToComponentId = await createComponents( unpublishedComponents, status );\n\n\t\tupdateComponentInstances( elements, uidToComponentId );\n\n\t\tdispatch(\n\t\t\tslice.actions.add(\n\t\t\t\tunpublishedComponents.map( ( component ) => ( {\n\t\t\t\t\tid: uidToComponentId.get( component.uid ) as number,\n\t\t\t\t\tname: component.name,\n\t\t\t\t\tuid: component.uid,\n\t\t\t\t\toverridableProps: component.overridableProps ? component.overridableProps : undefined,\n\t\t\t\t} ) )\n\t\t\t)\n\t\t);\n\t\tdispatch( slice.actions.resetUnpublished() );\n\t} catch ( error ) {\n\t\tthrow new Error( `Failed to publish components and update component instances: ${ error }` );\n\t}\n}\n\nasync function createComponents(\n\tcomponents: UnpublishedComponent[],\n\tstatus: DocumentSaveStatus\n): Promise< Map< string, number > > {\n\tconst response = await apiClient.create( {\n\t\tstatus,\n\t\titems: components.map( ( component ) => ( {\n\t\t\tuid: component.uid,\n\t\t\ttitle: component.name,\n\t\t\telements: component.elements,\n\t\t\tsettings: component.overridableProps ? { overridable_props: component.overridableProps } : undefined,\n\t\t} ) ),\n\t} );\n\n\tconst map = new Map< string, number >();\n\n\tObject.entries( response ).forEach( ( [ key, value ] ) => {\n\t\tmap.set( key, value );\n\t} );\n\n\treturn map;\n}\n\nfunction updateComponentInstances( elements: V1ElementData[], uidToComponentId: Map< string, number > ): void {\n\telements.forEach( ( element ) => {\n\t\tconst { shouldUpdate, newComponentId } = shouldUpdateElement( element, uidToComponentId );\n\t\tif ( shouldUpdate ) {\n\t\t\tupdateElementComponentId( element.id, newComponentId );\n\t\t}\n\n\t\tif ( element.elements ) {\n\t\t\tupdateComponentInstances( element.elements, uidToComponentId );\n\t\t}\n\t} );\n}\n\nfunction shouldUpdateElement(\n\telement: V1ElementData,\n\tuidToComponentId: Map< string, number >\n): { shouldUpdate: true; newComponentId: number } | { shouldUpdate: false; newComponentId: null } {\n\tif ( element.widgetType === 'e-component' ) {\n\t\tconst currentComponentId = ( element.settings?.component_instance as ComponentInstanceProp )?.value\n\t\t\t?.component_id.value;\n\n\t\tif ( currentComponentId && uidToComponentId.has( currentComponentId.toString() ) ) {\n\t\t\treturn {\n\t\t\t\tshouldUpdate: true,\n\t\t\t\tnewComponentId: uidToComponentId.get( currentComponentId.toString() ) as number,\n\t\t\t};\n\t\t}\n\t}\n\treturn { shouldUpdate: false, newComponentId: null };\n}\n\nfunction updateElementComponentId( elementId: string, componentId: number ): void {\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\tcomponent_instance: {\n\t\t\t\t$$type: 'component-instance',\n\t\t\t\tvalue: {\n\t\t\t\t\tcomponent_id: { $$type: 'number', value: componentId },\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n","import { type V1Document } from '@elementor/editor-documents';\nimport { type V1Element } from '@elementor/editor-elements';\nimport { __getState as getState } from '@elementor/store';\n\nimport { COMPONENT_DOCUMENT_TYPE } from '../components/consts';\nimport { selectOverridableProps } from '../store/store';\n\nexport const setComponentOverridablePropsSettingsBeforeSave = ( {\n\tcontainer,\n}: {\n\tcontainer: V1Element & { document: V1Document };\n} ) => {\n\tconst currentDocument = container.document;\n\n\tif ( ! currentDocument || currentDocument.config.type !== COMPONENT_DOCUMENT_TYPE ) {\n\t\treturn;\n\t}\n\n\tconst overridableProps = selectOverridableProps( getState(), currentDocument.id );\n\tif ( overridableProps ) {\n\t\tcontainer.settings.set( 'overridable_props', overridableProps );\n\t}\n};\n","import { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../api';\nimport { selectArchivedThisSession } from '../store/store';\n\nconst failedNotification = ( message: string ): NotificationData => ( {\n\ttype: 'error',\n\tmessage: `Failed to archive components: ${ message }`,\n\tid: 'failed-archived-components-notification',\n} );\n\nexport const updateArchivedComponentBeforeSave = async () => {\n\ttry {\n\t\tconst archivedComponents = selectArchivedThisSession( getState() );\n\n\t\tif ( ! archivedComponents.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst result = await apiClient.updateArchivedComponents( archivedComponents );\n\n\t\tconst failedIds = result.failedIds.join( ', ' );\n\n\t\tif ( failedIds ) {\n\t\t\tnotify( failedNotification( failedIds ) );\n\t\t}\n\t} catch ( error ) {\n\t\tthrow new Error( `Failed to update archived components: ${ error }` );\n\t}\n};\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../api';\nimport { selectUpdatedComponentNames, slice } from '../store/store';\n\nexport const updateComponentTitleBeforeSave = async () => {\n\tconst updatedComponentNames = selectUpdatedComponentNames( getState() );\n\n\tif ( ! updatedComponentNames.length ) {\n\t\treturn;\n\t}\n\n\tconst result = await apiClient.updateComponentTitle( updatedComponentNames );\n\n\tif ( result.failedIds.length === 0 ) {\n\t\tdispatch( slice.actions.cleanUpdatedComponentNames() );\n\t}\n};\n","import { isDocumentDirty } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\n\nimport { apiClient } from '../api';\nimport { type DocumentSaveStatus } from '../types';\nimport { getComponentDocumentData, invalidateComponentDocumentData } from '../utils/component-document-data';\nimport { getComponentIds } from '../utils/get-component-ids';\n\ntype Options = {\n\tstatus: DocumentSaveStatus;\n\telements: V1ElementData[];\n};\n\nexport async function updateComponentsBeforeSave( { status, elements }: Options ) {\n\tif ( status !== 'publish' ) {\n\t\treturn;\n\t}\n\n\tconst componentIds = await getComponentIds( elements );\n\n\tconst componentDocumentData = await Promise.all( componentIds.map( getComponentDocumentData ) );\n\n\tconst draftIds = componentDocumentData\n\t\t.filter( ( document ) => !! document )\n\t\t.filter( isDocumentDirty )\n\t\t.map( ( document ) => document.id );\n\n\tif ( draftIds.length === 0 ) {\n\t\treturn;\n\t}\n\n\tawait apiClient.updateStatuses( draftIds, 'publish' );\n\n\tdraftIds.forEach( ( id ) => invalidateComponentDocumentData( id ) );\n}\n","import { type V1Document } from '@elementor/editor-documents';\nimport { type V1Element, type V1ElementData } from '@elementor/editor-elements';\n\nimport { type DocumentSaveStatus } from '../types';\nimport { createComponentsBeforeSave } from './create-components-before-save';\nimport { setComponentOverridablePropsSettingsBeforeSave } from './set-component-overridable-props-settings-before-save';\nimport { updateArchivedComponentBeforeSave } from './update-archived-component-before-save';\nimport { updateComponentTitleBeforeSave } from './update-component-title-before-save';\nimport { updateComponentsBeforeSave } from './update-components-before-save';\n\ntype Options = {\n\tcontainer: V1Element & {\n\t\tdocument: V1Document;\n\t\tmodel: {\n\t\t\tget: ( key: 'elements' ) => {\n\t\t\t\ttoJSON: () => V1ElementData[];\n\t\t\t};\n\t\t};\n\t};\n\tstatus: DocumentSaveStatus;\n};\n\nexport const beforeSave = ( { container, status }: Options ) => {\n\tconst elements = container?.model.get( 'elements' ).toJSON?.() ?? [];\n\n\treturn Promise.all( [\n\t\tupdateArchivedComponentBeforeSave(),\n\t\tcreateComponentsBeforeSave( { elements, status } ),\n\t\tupdateComponentsBeforeSave( { elements, status } ),\n\t\tsetComponentOverridablePropsSettingsBeforeSave( { container } ),\n\t\tupdateComponentTitleBeforeSave(),\n\t] );\n};\n","import { getAllDescendants, type V1Element } from '@elementor/editor-elements';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentsSlice, selectCurrentComponentId, selectOverridableProps, slice } from '../store/store';\nimport { removePropFromAllGroups } from '../store/utils/groups-transformers';\n\ntype DeleteCommandArgs = {\n\tcontainer?: V1Element;\n\tcontainers?: V1Element[];\n};\n\nexport function initCleanupOverridablePropsOnDelete() {\n\tregisterDataHook( 'dependency', 'document/elements/delete', ( args: DeleteCommandArgs ) => {\n\t\tconst state = getState() as ComponentsSlice | undefined;\n\n\t\tif ( ! state ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst currentComponentId = selectCurrentComponentId( state );\n\n\t\tif ( ! currentComponentId ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst overridableProps = selectOverridableProps( state, currentComponentId );\n\n\t\tif ( ! overridableProps || Object.keys( overridableProps.props ).length === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst containers = args.containers ?? ( args.container ? [ args.container ] : [] );\n\n\t\tif ( containers.length === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst deletedElementIds = collectDeletedElementIds( containers );\n\n\t\tif ( deletedElementIds.length === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst propKeysToDelete = Object.entries( overridableProps.props )\n\t\t\t.filter( ( [ , prop ] ) => deletedElementIds.includes( prop.elementId ) )\n\t\t\t.map( ( [ propKey ] ) => propKey );\n\n\t\tif ( propKeysToDelete.length === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst remainingProps = Object.fromEntries(\n\t\t\tObject.entries( overridableProps.props ).filter( ( [ propKey ] ) => ! propKeysToDelete.includes( propKey ) )\n\t\t);\n\n\t\tlet updatedGroups = overridableProps.groups;\n\t\tfor ( const propKey of propKeysToDelete ) {\n\t\t\tupdatedGroups = removePropFromAllGroups( updatedGroups, propKey );\n\t\t}\n\n\t\tdispatch(\n\t\t\tslice.actions.setOverridableProps( {\n\t\t\t\tcomponentId: currentComponentId,\n\t\t\t\toverridableProps: {\n\t\t\t\t\t...overridableProps,\n\t\t\t\t\tprops: remainingProps,\n\t\t\t\t\tgroups: updatedGroups,\n\t\t\t\t},\n\t\t\t} )\n\t\t);\n\n\t\treturn true;\n\t} );\n}\n\nfunction collectDeletedElementIds( containers: V1Element[] ): string[] {\n\tconst elementIds = containers\n\t\t.filter( Boolean )\n\t\t.flatMap( ( container ) => [ container, ...getAllDescendants( container ) ] )\n\t\t.map( ( element ) => element.model?.get?.( 'id' ) ?? element.id )\n\t\t.filter( ( id ): id is string => Boolean( id ) );\n\n\treturn elementIds;\n}\n","import { type V1Element, type V1ElementData } from '@elementor/editor-elements';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\n\nimport { loadComponentsAssets } from '../store/actions/load-components-assets';\n\nexport function initLoadComponentDataAfterInstanceAdded() {\n\tregisterDataHook( 'after', 'document/elements/paste', ( _args, result: V1Element | V1Element[] ) => {\n\t\tload( result );\n\t} );\n\n\tregisterDataHook( 'after', 'document/elements/import', ( _args, result: V1Element | V1Element[] ) => {\n\t\tload( result );\n\t} );\n}\n\nfunction load( result: V1Element | V1Element[] ) {\n\tconst containers = Array.isArray( result ) ? result : [ result ];\n\n\tloadComponentsAssets( containers.map( ( container ) => container.model.toJSON() as V1ElementData ) );\n}\n","import { getAllDescendants, getContainer, updateElementSettings, type V1Element } from '@elementor/editor-elements';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { generateUniqueId } from '@elementor/utils';\n\nimport { componentInstanceOverridePropTypeUtil } from '../prop-types/component-instance-override-prop-type';\nimport {\n\tcomponentInstanceOverridesPropTypeUtil,\n\ttype ComponentInstanceOverridesPropValue,\n} from '../prop-types/component-instance-overrides-prop-type';\nimport {\n\tcomponentInstancePropTypeUtil,\n\ttype ComponentInstancePropValue,\n} from '../prop-types/component-instance-prop-type';\nimport { isComponentInstance } from '../utils/is-component-instance';\n\nexport function initRegenerateOverrideKeys() {\n\tregisterDataHook( 'after', 'document/elements/duplicate', ( _args, result: V1Element | V1Element[] ) => {\n\t\tregenerateOverrideKeysForContainers( result );\n\t} );\n\n\tregisterDataHook( 'after', 'document/elements/paste', ( _args, result: V1Element | V1Element[] ) => {\n\t\tregenerateOverrideKeysForContainers( result );\n\t} );\n\n\tregisterDataHook( 'after', 'document/elements/import', ( _args, result: V1Element | V1Element[] ) => {\n\t\tregenerateOverrideKeysForContainers( result );\n\t} );\n}\n\nexport function regenerateOverrideKeysForContainers( result: V1Element | V1Element[] ) {\n\tconst containers = Array.isArray( result ) ? result : [ result ];\n\n\tcontainers.forEach( ( container ) => {\n\t\tregenerateOverrideKeysRecursive( container.id );\n\t} );\n}\n\nfunction regenerateOverrideKeysRecursive( elementId: string ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\treturn;\n\t}\n\n\tgetAllDescendants( container ).forEach( regenerateOverrideKeys );\n}\n\nfunction regenerateOverrideKeys( element: V1Element ) {\n\tif ( ! isComponentInstance( element.model.toJSON() ) ) {\n\t\treturn;\n\t}\n\n\tconst settings = element.settings?.toJSON() ?? {};\n\n\tif ( ! hasOverrides( settings ) ) {\n\t\treturn;\n\t}\n\n\tconst componentInstance = settings.component_instance;\n\tconst overrides = componentInstance.value.overrides;\n\n\tconst newOverrides = overrides.value.map( ( override ) => {\n\t\tif ( ! componentInstanceOverridePropTypeUtil.isValid( override ) ) {\n\t\t\treturn override;\n\t\t}\n\n\t\treturn {\n\t\t\t...override,\n\t\t\tvalue: {\n\t\t\t\t...override.value,\n\t\t\t\toverride_key: generateUniqueId( 'prop' ),\n\t\t\t},\n\t\t};\n\t} );\n\n\tconst newComponentInstance = {\n\t\t...componentInstance,\n\t\tvalue: {\n\t\t\t...componentInstance.value,\n\t\t\toverrides: {\n\t\t\t\t...overrides,\n\t\t\t\tvalue: newOverrides,\n\t\t\t},\n\t\t},\n\t};\n\n\tupdateElementSettings( {\n\t\tid: element.id,\n\t\tprops: { component_instance: newComponentInstance },\n\t\twithHistory: false,\n\t} );\n}\n\nfunction hasOverrides( settings: Record< string, unknown > ): settings is {\n\tcomponent_instance: NonNullable< ComponentInstancePropValue > & {\n\t\tvalue: { overrides: { $$type: string; value: NonNullable< ComponentInstanceOverridesPropValue >[] } };\n\t};\n} {\n\tif ( ! componentInstancePropTypeUtil.isValid( settings?.component_instance ) ) {\n\t\treturn false;\n\t}\n\n\tconst componentInstance = componentInstancePropTypeUtil.extract( settings?.component_instance );\n\n\tconst overrides = componentInstance?.overrides;\n\n\tif ( ! componentInstanceOverridesPropTypeUtil.isValid( overrides ) ) {\n\t\treturn false;\n\t}\n\n\tconst overridesValue = overrides?.value;\n\n\treturn !! overridesValue?.length;\n}\n"],"mappings":"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","names":["settingsTransformersRegistry","registerDataHook","__","id","id","id","createTransformer","createTransformer","React","getV1DocumentsManager","getState","Box","Divider","IconButton","Stack","Tooltip","Typography","__","getV1DocumentsManager","useSelector","runCommand","runCommand","isComponentInstance","useSelector","getV1DocumentsManager","getState","getState","React","Box","__","React","useState","setDocumentModifiedStatus","ComponentPropListIcon","XIcon","IconButton","List","Stack","Tooltip","generateUniqueId","__","getState","getState","dispatch","getState","id","getState","dispatch","dispatch","getState","createPropUtils","z","createPropUtils","z","createPropUtils","z","createPropUtils","z","createPropUtils","z","getState","__","__","getState","isOriginValueOverride","getState","dispatch","dispatch","getState","getState","dispatch","dispatch","getState","getState","dispatch","dispatch","getState","getState","dispatch","useSelector","useOverridableProps","useSelector","React","Link","Stack","Typography","__","__","Stack","Typography","__","Link","React","MenuListItem","bindTrigger","Box","IconButton","Stack","Typography","usePopupState","__","React","Box","Popover","Typography","React","useState","Button","Stack","Typography","__","__","__","useState","Stack","Typography","Button","React","Box","id","Box","Typography","Popover","usePopupState","Box","Stack","Typography","IconButton","__","bindTrigger","MenuListItem","useState","__","dispatch","getState","getState","dispatch","__","ERROR_MESSAGES","useState","useOverridableProps","id","__","useOverridableProps","useState","generateUniqueId","setDocumentModifiedStatus","Stack","ComponentPropListIcon","__","Tooltip","IconButton","XIcon","List","Box","__","React","useRef","ComponentPropListIcon","Box","styled","Tooltip","__","useOverridableProps","Box","Stack","Tooltip","__","IconButton","Typography","Divider","getState","getV1DocumentsManager","React","ThemeProvider","useSelector","useSelector","React","Box","Stack","TextField","__","React","Stack","Box","TextField","__","React","useState","ComponentsIcon","Box","Button","Divider","Link","List","Stack","Typography","__","getV1DocumentsManager","setDocumentModifiedStatus","dispatch","dispatch","setDocumentModifiedStatus","getV1DocumentsManager","React","Button","Typography","__","React","useRef","useState","EditableField","MenuListItem","useEditable","DotsVerticalIcon","bindMenu","bindTrigger","Box","IconButton","Menu","Stack","styled","Typography","usePopupState","__","setDocumentModifiedStatus","dispatch","__","__","dispatch","setDocumentModifiedStatus","setDocumentModifiedStatus","dispatch","getState","getState","dispatch","dispatch","getState","getState","id","dispatch","setDocumentModifiedStatus","getState","z","__","getState","getContainer","getCurrentDocumentContainer","createComponentModel","React","__","renameComponent","useRef","useState","useEditable","createComponentModel","usePopupState","Stack","Box","EditableField","Typography","IconButton","bindTrigger","DotsVerticalIcon","Menu","bindMenu","MenuListItem","__","styled","React","Box","ListItemButton","Stack","List","useState","__","Stack","ComponentsIcon","Typography","Link","Divider","Button","Box","React","Box","Typography","__","ThemeProvider","React","useEffect","useMemo","useRef","useState","notify","ThemeProvider","ComponentsIcon","getState","Button","FormLabel","Grid","Popover","Stack","TextField","Typography","__","getAllDescendants","notify","__","__","notify","getAllDescendants","runCommand","dispatch","generateUniqueId","generateUniqueId","dispatch","runCommand","useMemo","useState","useState","useRef","useEffect","notify","__","getState","ThemeProvider","Popover","Form","validateForm","useMemo","Stack","ComponentsIcon","Typography","Grid","FormLabel","TextField","Button","React","useEffect","getV1DocumentsManager","commandEndEvent","useSelector","throttle","setDocumentModifiedStatus","getStore","dispatch","getStore","React","useEffect","__","useEffect","useState","useEffect","__","throttle","getV1DocumentsManager","useSelector","useEffect","commandEndEvent","id","React","Box","Button","Stack","Typography","__","React","useSelectedElement","PanelBody","PanelHeader","PanelHeaderTitle","EllipsisWithTooltip","ComponentsIcon","PencilIcon","Divider","IconButton","Stack","Tooltip","__","React","ComponentPropListIcon","Button","Stack","Typography","__","EmptyState","__","Stack","ComponentPropListIcon","Typography","Button","React","Box","ListItemButton","Stack","React","ElementProvider","useElement","getContainer","getElementType","Stack","getElementType","React","createContext","useContext","dispatch","getState","getState","dispatch","getWidgetsCache","React","Stack","useElement","elType","widgetType","propKey","elementId","getContainer","getElementType","ElementProvider","Stack","id","Box","ListItemButton","Stack","useSelectedElement","__","PanelHeader","Stack","ComponentsIcon","EllipsisWithTooltip","PanelHeaderTitle","Tooltip","IconButton","PencilIcon","PanelBody","EmptyState","Divider","React","ControlReplacementsProvider","PropKeyProvider","PropProvider","useBoundProp","createTopLevelObjectType","getControlReplacements","useElement","OriginalControl","useElement","useBoundProp","getControlReplacements","isComponentInstance","propValue","createTopLevelObjectType","PropProvider","PropKeyProvider","ControlReplacementsProvider","React","useBoundProp","useElement","getWidgetsCache","bindPopover","bindTrigger","Popover","Tooltip","usePopupState","__","dispatch","getState","generateUniqueId","getState","generateUniqueId","dispatch","React","forwardRef","Box","styled","__","SIZE","Indicator","getState","getState","useBoundProp","Content","useElement","usePopupState","bindTrigger","bindPopover","getWidgetsCache","Tooltip","__","Indicator","Popover","getMCPByDomain","getContainer","getElementType","getWidgetsCache","z","generateUniqueId","z","ERROR_MESSAGES","getContainer","generateUniqueId","getElementType","getWidgetsCache","getMCPByDomain","useEffect","dispatch","useEffect","dispatch","getAllDescendants","notify","blockCommand","getState","__","__","blockCommand","getState","notify","getAllDescendants","dispatch","id","dispatch","getState","getState","id","updateElementSettings","dispatch","getState","getState","dispatch","updateElementSettings","getState","getState","notify","getState","getState","notify","dispatch","getState","getState","dispatch","isDocumentDirty","isDocumentDirty","id","getAllDescendants","dispatch","getState","getState","dispatch","getAllDescendants","id","registerDataHook","registerDataHook","getAllDescendants","getContainer","updateElementSettings","registerDataHook","generateUniqueId","registerDataHook","getContainer","getAllDescendants","generateUniqueId","updateElementSettings","registerDataHook","__","id","settingsTransformersRegistry"]}
|
|
1
|
+
{"version":3,"sources":["../src/init.ts","../src/component-instance-transformer.ts","../src/store/store.ts","../src/store/thunks.ts","../src/api.ts","../src/utils/component-document-data.ts","../src/component-overridable-transformer.ts","../src/component-override-transformer.ts","../src/components/component-panel-header/component-panel-header.tsx","../src/hooks/use-navigate-back.ts","../src/utils/switch-to-component.ts","../src/utils/expand-navigator.ts","../src/utils/tracking.ts","../src/components/component-properties-panel/component-properties-panel.tsx","../src/components/component-properties-panel/component-properties-panel-content.tsx","../src/store/actions/add-overridable-group.ts","../src/store/actions/delete-overridable-group.ts","../src/store/utils/groups-transformers.ts","../src/store/actions/delete-overridable-prop.ts","../src/utils/revert-element-overridable-setting.ts","../src/prop-types/component-instance-override-prop-type.ts","../src/prop-types/component-instance-overrides-prop-type.ts","../src/prop-types/component-overridable-prop-type.ts","../src/prop-types/component-instance-prop-type.ts","../src/create-component-type.ts","../src/utils/is-component-instance.ts","../src/store/actions/reorder-group-props.ts","../src/store/actions/reorder-overridable-groups.ts","../src/store/actions/update-overridable-prop-params.ts","../src/components/component-panel-header/use-overridable-props.ts","../src/components/component-properties-panel/properties-empty-state.tsx","../src/components/components-tab/component-introduction.tsx","../src/components/component-properties-panel/properties-group.tsx","../src/components/component-properties-panel/property-item.tsx","../src/components/overridable-props/overridable-prop-form.tsx","../src/components/overridable-props/utils/validate-prop-label.ts","../src/components/component-properties-panel/sortable.tsx","../src/components/component-properties-panel/use-current-editable-item.ts","../src/store/actions/rename-overridable-group.ts","../src/components/component-properties-panel/utils/validate-group-label.ts","../src/components/component-properties-panel/utils/generate-unique-label.ts","../src/components/component-panel-header/component-badge.tsx","../src/components/components-tab/components.tsx","../src/hooks/use-components.ts","../src/utils/is-pro-user.ts","../src/components/components-tab/component-search.tsx","../src/components/components-tab/search-provider.tsx","../src/components/components-tab/components-list.tsx","../src/hooks/use-components-permissions.ts","../src/store/actions/rename-component.ts","../src/components/components-tab/angie-promotion-modal.tsx","../src/components/components-tab/components-item.tsx","../src/store/actions/archive-component.ts","../src/store/actions/load-components-assets.ts","../src/utils/get-component-ids.ts","../src/store/actions/load-components-overridable-props.ts","../src/store/actions/load-components-styles.ts","../src/utils/component-name-validation.ts","../src/components/create-component-form/utils/component-form-schema.ts","../src/utils/get-container-for-new-element.ts","../src/components/create-component-form/utils/replace-element-with-component.ts","../src/components/components-tab/delete-confirmation-dialog.tsx","../src/components/components-tab/loading-components.tsx","../src/components/components-tab/components-pro-notification.tsx","../src/components/consts.ts","../src/components/create-component-form/create-component-form.tsx","../src/prevent-non-atomic-nesting.ts","../src/store/actions/create-unpublished-component.ts","../src/components/create-component-form/hooks/use-form.ts","../src/components/create-component-form/utils/get-component-event-data.ts","../src/components/edit-component/edit-component.tsx","../src/store/actions/update-current-component.ts","../src/components/edit-component/component-modal.tsx","../src/hooks/use-canvas-document.ts","../src/hooks/use-element-rect.ts","../src/components/in-edit-mode.tsx","../src/components/instance-editing-panel/instance-editing-panel.tsx","../src/hooks/use-component-instance-settings.ts","../src/components/instance-editing-panel/empty-state.tsx","../src/components/instance-editing-panel/override-props-group.tsx","../src/components/instance-editing-panel/override-prop-control.tsx","../src/hooks/use-controls-by-widget-type.ts","../src/provider/overridable-prop-context.tsx","../src/store/actions/update-overridable-prop.ts","../src/utils/resolve-override-prop-value.ts","../src/utils/get-prop-type-for-component-override.ts","../src/components/control-label.tsx","../src/components/errors.ts","../src/components/overridable-props/overridable-prop-control.tsx","../src/components/overridable-props/overridable-prop-indicator.tsx","../src/store/actions/set-overridable-prop.ts","../src/components/overridable-props/indicator.tsx","../src/components/overridable-props/utils/get-overridable-prop.ts","../src/mcp/index.ts","../src/mcp/save-as-component-tool.ts","../src/populate-store.ts","../src/prevent-circular-nesting.ts","../src/store/actions/remove-component-styles.ts","../src/store/components-styles-provider.ts","../src/sync/create-components-before-save.ts","../src/sync/set-component-overridable-props-settings-before-save.ts","../src/sync/update-archived-component-before-save.ts","../src/sync/update-component-title-before-save.ts","../src/sync/update-components-before-save.ts","../src/sync/before-save.ts","../src/sync/cleanup-overridable-props-on-delete.ts","../src/sync/load-component-data-after-instance-added.ts","../src/sync/regenerate-override-keys.ts"],"sourcesContent":["import { injectIntoLogic, injectIntoTop } from '@elementor/editor';\nimport {\n\ttype CreateTemplatedElementTypeOptions,\n\tregisterElementType,\n\tsettingsTransformersRegistry,\n} from '@elementor/editor-canvas';\nimport { getV1CurrentDocument } from '@elementor/editor-documents';\nimport {\n\tFIELD_TYPE,\n\tinjectIntoPanelHeaderTop,\n\tregisterControlReplacement,\n\tregisterEditingPanelReplacement,\n\tregisterFieldIndicator,\n} from '@elementor/editor-editing-panel';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { injectTab } from '@elementor/editor-elements-panel';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { __registerSlice as registerSlice } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { componentInstanceTransformer } from './component-instance-transformer';\nimport { componentOverridableTransformer } from './component-overridable-transformer';\nimport { componentOverrideTransformer } from './component-override-transformer';\nimport { ComponentPanelHeader } from './components/component-panel-header/component-panel-header';\nimport { panel as componentPropertiesPanel } from './components/component-properties-panel/component-properties-panel';\nimport { Components } from './components/components-tab/components';\nimport { COMPONENT_DOCUMENT_TYPE, OVERRIDABLE_PROP_REPLACEMENT_ID } from './components/consts';\nimport { CreateComponentForm } from './components/create-component-form/create-component-form';\nimport { EditComponent } from './components/edit-component/edit-component';\nimport { openEditModeDialog } from './components/in-edit-mode';\nimport { InstanceEditingPanel } from './components/instance-editing-panel/instance-editing-panel';\nimport { OverridablePropControl } from './components/overridable-props/overridable-prop-control';\nimport { OverridablePropIndicator } from './components/overridable-props/overridable-prop-indicator';\nimport { COMPONENT_WIDGET_TYPE, createComponentType } from './create-component-type';\nimport { initMcp } from './mcp';\nimport { PopulateStore } from './populate-store';\nimport { initCircularNestingPrevention } from './prevent-circular-nesting';\nimport { initNonAtomicNestingPrevention } from './prevent-non-atomic-nesting';\nimport { componentOverridablePropTypeUtil } from './prop-types/component-overridable-prop-type';\nimport { loadComponentsAssets } from './store/actions/load-components-assets';\nimport { removeComponentStyles } from './store/actions/remove-component-styles';\nimport { componentsStylesProvider } from './store/components-styles-provider';\nimport { slice } from './store/store';\nimport { beforeSave } from './sync/before-save';\nimport { initCleanupOverridablePropsOnDelete } from './sync/cleanup-overridable-props-on-delete';\nimport { initLoadComponentDataAfterInstanceAdded } from './sync/load-component-data-after-instance-added';\nimport { initRegenerateOverrideKeys } from './sync/regenerate-override-keys';\nimport { type ExtendedWindow } from './types';\nimport { onElementDrop } from './utils/tracking';\n\nexport function init() {\n\tstylesRepository.register( componentsStylesProvider );\n\n\tregisterSlice( slice );\n\tregisterPanel( componentPropertiesPanel );\n\n\tregisterElementType( COMPONENT_WIDGET_TYPE, ( options: CreateTemplatedElementTypeOptions ) =>\n\t\tcreateComponentType( { ...options, showLockedByModal: openEditModeDialog } )\n\t);\n\n\tregisterDataHook( 'dependency', 'editor/documents/close', ( args ) => {\n\t\tconst document = getV1CurrentDocument();\n\t\tif ( document.config.type === COMPONENT_DOCUMENT_TYPE ) {\n\t\t\targs.mode = 'autosave';\n\t\t}\n\t\treturn true;\n\t} );\n\n\tregisterDataHook( 'after', 'preview/drop', onElementDrop );\n\n\t( window as unknown as ExtendedWindow ).elementorCommon.__beforeSave = beforeSave;\n\n\tinjectTab( {\n\t\tid: 'components',\n\t\tlabel: __( 'Components', 'elementor' ),\n\t\tcomponent: Components,\n\t\tposition: 1,\n\t} );\n\n\tinjectIntoTop( {\n\t\tid: 'create-component-popup',\n\t\tcomponent: CreateComponentForm,\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'components-populate-store',\n\t\tcomponent: PopulateStore,\n\t} );\n\n\tinjectIntoTop( {\n\t\tid: 'edit-component',\n\t\tcomponent: EditComponent,\n\t} );\n\n\tinjectIntoPanelHeaderTop( {\n\t\tid: 'component-panel-header',\n\t\tcomponent: ComponentPanelHeader,\n\t} );\n\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tconst { id, config } = getV1CurrentDocument();\n\n\t\tif ( id ) {\n\t\t\tremoveComponentStyles( id );\n\t\t}\n\n\t\tawait loadComponentsAssets( ( config?.elements as V1ElementData[] ) ?? [] );\n\t} );\n\n\tregisterFieldIndicator( {\n\t\tfieldType: FIELD_TYPE.SETTINGS,\n\t\tid: 'component-overridable-prop',\n\t\tpriority: 1,\n\t\tindicator: OverridablePropIndicator,\n\t} );\n\n\tregisterControlReplacement( {\n\t\tid: OVERRIDABLE_PROP_REPLACEMENT_ID,\n\t\tcomponent: OverridablePropControl,\n\t\tcondition: ( { value } ) => componentOverridablePropTypeUtil.isValid( value ),\n\t} );\n\n\tregisterEditingPanelReplacement( {\n\t\tid: 'component-instance-edit-panel',\n\t\tcondition: ( _, elementType ) => elementType.key === 'e-component',\n\t\tcomponent: InstanceEditingPanel,\n\t} );\n\n\tsettingsTransformersRegistry.register( 'component-instance', componentInstanceTransformer );\n\tsettingsTransformersRegistry.register( 'overridable', componentOverridableTransformer );\n\tsettingsTransformersRegistry.register( 'override', componentOverrideTransformer );\n\n\tinitRegenerateOverrideKeys();\n\n\tinitCleanupOverridablePropsOnDelete();\n\n\tinitMcp();\n\n\tinitCircularNestingPrevention();\n\n\tinitNonAtomicNestingPrevention();\n\n\tinitLoadComponentDataAfterInstanceAdded();\n}\n","import { createTransformer } from '@elementor/editor-canvas';\nimport { __getState as getState } from '@elementor/store';\n\nimport { type ComponentInstanceOverrideProp } from './prop-types/component-instance-override-prop-type';\nimport { selectUnpublishedComponents } from './store/store';\nimport { getComponentDocumentData } from './utils/component-document-data';\n\nexport const componentInstanceTransformer = createTransformer(\n\tasync ( {\n\t\tcomponent_id: id,\n\t\toverrides: overridesValue,\n\t}: {\n\t\tcomponent_id: number | string;\n\t\toverrides?: ComponentInstanceOverrideProp[];\n\t} ) => {\n\t\tconst unpublishedComponents = selectUnpublishedComponents( getState() );\n\n\t\tconst unpublishedComponent = unpublishedComponents.find( ( { uid } ) => uid === id );\n\n\t\tconst overrides = overridesValue?.reduce( ( acc, override ) => ( { ...acc, ...override } ), {} );\n\n\t\tif ( unpublishedComponent ) {\n\t\t\treturn {\n\t\t\t\telements: structuredClone( unpublishedComponent.elements ),\n\t\t\t\toverrides,\n\t\t\t};\n\t\t}\n\n\t\tif ( typeof id !== 'number' ) {\n\t\t\tthrow new Error( `Component ID \"${ id }\" not valid.` );\n\t\t}\n\n\t\tconst data = await getComponentDocumentData( id );\n\n\t\treturn {\n\t\t\telements: data?.elements ?? [],\n\t\t\toverrides,\n\t\t};\n\t}\n);\n","import { type V1Document } from '@elementor/editor-documents';\nimport {\n\t__createSelector as createSelector,\n\t__createSlice as createSlice,\n\t__useSelector as useSelector,\n\ttype PayloadAction,\n\ttype SliceState,\n} from '@elementor/store';\n\nimport {\n\ttype Component,\n\ttype ComponentId,\n\ttype OverridableProps,\n\ttype PublishedComponent,\n\ttype StylesDefinition,\n\ttype UnpublishedComponent,\n} from '../types';\nimport { loadComponents } from './thunks';\n\ntype GetComponentResponse = PublishedComponent[];\n\ntype Status = 'idle' | 'pending' | 'error';\n\ntype ComponentsState = {\n\tdata: PublishedComponent[];\n\tunpublishedData: UnpublishedComponent[];\n\tloadStatus: Status;\n\tstyles: StylesDefinition;\n\tcreatedThisSession: Component[ 'uid' ][];\n\tarchivedThisSession: ComponentId[];\n\tpath: ComponentsPathItem[];\n\tcurrentComponentId: V1Document[ 'id' ] | null;\n\tupdatedComponentNames: Record< number, string >;\n};\n\nexport type ComponentsSlice = SliceState< typeof slice >;\n\nexport type ComponentsPathItem = {\n\tinstanceId?: string;\n\tinstanceTitle?: string;\n\tcomponentId: V1Document[ 'id' ];\n};\n\nexport const initialState: ComponentsState = {\n\tdata: [],\n\tunpublishedData: [],\n\tloadStatus: 'idle',\n\tstyles: {},\n\tcreatedThisSession: [],\n\tarchivedThisSession: [],\n\tpath: [],\n\tcurrentComponentId: null,\n\tupdatedComponentNames: {},\n};\n\nexport const SLICE_NAME = 'components';\n\nexport const slice = createSlice( {\n\tname: SLICE_NAME,\n\tinitialState,\n\treducers: {\n\t\tadd: ( state, { payload }: PayloadAction< PublishedComponent | PublishedComponent[] > ) => {\n\t\t\tif ( Array.isArray( payload ) ) {\n\t\t\t\tstate.data = [ ...payload, ...state.data ];\n\t\t\t} else {\n\t\t\t\tstate.data.unshift( payload );\n\t\t\t}\n\t\t},\n\t\tload: ( state, { payload }: PayloadAction< PublishedComponent[] > ) => {\n\t\t\tstate.data = payload;\n\t\t},\n\t\taddUnpublished: ( state, { payload }: PayloadAction< UnpublishedComponent > ) => {\n\t\t\tstate.unpublishedData.unshift( payload );\n\t\t},\n\t\tresetUnpublished: ( state ) => {\n\t\t\tstate.unpublishedData = [];\n\t\t},\n\t\tremoveStyles( state, { payload }: PayloadAction< { id: ComponentId } > ) {\n\t\t\tconst { [ payload.id ]: _, ...rest } = state.styles;\n\n\t\t\tstate.styles = rest;\n\t\t},\n\t\taddStyles: ( state, { payload } ) => {\n\t\t\tstate.styles = { ...state.styles, ...payload };\n\t\t},\n\t\taddCreatedThisSession: ( state, { payload }: PayloadAction< string > ) => {\n\t\t\tstate.createdThisSession.push( payload );\n\t\t},\n\t\tarchive: ( state, { payload }: PayloadAction< number > ) => {\n\t\t\tconst component = state.data.find( ( comp ) => comp.id === payload );\n\n\t\t\tif ( component ) {\n\t\t\t\tcomponent.isArchived = true;\n\t\t\t\tstate.archivedThisSession.push( payload );\n\t\t\t}\n\t\t},\n\t\tsetCurrentComponentId: ( state, { payload }: PayloadAction< V1Document[ 'id' ] | null > ) => {\n\t\t\tstate.currentComponentId = payload;\n\t\t},\n\t\tsetPath: ( state, { payload }: PayloadAction< ComponentsPathItem[] > ) => {\n\t\t\tstate.path = payload;\n\t\t},\n\t\tsetOverridableProps: (\n\t\t\tstate,\n\t\t\t{ payload }: PayloadAction< { componentId: ComponentId; overridableProps: OverridableProps } >\n\t\t) => {\n\t\t\tconst component = state.data.find( ( comp ) => comp.id === payload.componentId );\n\n\t\t\tif ( ! component ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcomponent.overridableProps = payload.overridableProps;\n\t\t},\n\t\trename: ( state, { payload }: PayloadAction< { componentUid: string; name: string } > ) => {\n\t\t\tconst component = state.data.find( ( comp ) => comp.uid === payload.componentUid );\n\n\t\t\tif ( ! component ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( component.id ) {\n\t\t\t\tstate.updatedComponentNames[ component.id ] = payload.name;\n\t\t\t}\n\t\t\tcomponent.name = payload.name;\n\t\t},\n\t\tcleanUpdatedComponentNames: ( state ) => {\n\t\t\tstate.updatedComponentNames = {};\n\t\t},\n\t},\n\textraReducers: ( builder ) => {\n\t\tbuilder.addCase( loadComponents.fulfilled, ( state, { payload }: PayloadAction< GetComponentResponse > ) => {\n\t\t\tstate.data = payload;\n\t\t\tstate.loadStatus = 'idle';\n\t\t} );\n\t\tbuilder.addCase( loadComponents.pending, ( state ) => {\n\t\t\tstate.loadStatus = 'pending';\n\t\t} );\n\t\tbuilder.addCase( loadComponents.rejected, ( state ) => {\n\t\t\tstate.loadStatus = 'error';\n\t\t} );\n\t},\n} );\n\nconst selectData = ( state: ComponentsSlice ) => state[ SLICE_NAME ].data;\nexport const selectArchivedThisSession = ( state: ComponentsSlice ) => state[ SLICE_NAME ].archivedThisSession;\nconst selectLoadStatus = ( state: ComponentsSlice ) => state[ SLICE_NAME ].loadStatus;\nconst selectStylesDefinitions = ( state: ComponentsSlice ) => state[ SLICE_NAME ].styles ?? {};\nconst selectUnpublishedData = ( state: ComponentsSlice ) => state[ SLICE_NAME ].unpublishedData;\nconst getCreatedThisSession = ( state: ComponentsSlice ) => state[ SLICE_NAME ].createdThisSession;\nconst getPath = ( state: ComponentsSlice ) => state[ SLICE_NAME ].path;\nconst getCurrentComponentId = ( state: ComponentsSlice ) => state[ SLICE_NAME ].currentComponentId;\nexport const selectComponent = ( state: ComponentsSlice, componentId: ComponentId ) =>\n\tstate[ SLICE_NAME ].data.find( ( component ) => component.id === componentId );\nexport const useComponent = ( componentId: ComponentId | null ) => {\n\treturn useSelector( ( state: ComponentsSlice ) => ( componentId ? selectComponent( state, componentId ) : null ) );\n};\n\nexport const selectComponentByUid = ( state: ComponentsSlice, componentUid: string ) =>\n\tstate[ SLICE_NAME ].data.find( ( component ) => component.uid === componentUid ) ??\n\tstate[ SLICE_NAME ].unpublishedData.find( ( component ) => component.uid === componentUid );\n\nexport const selectComponents = createSelector(\n\tselectData,\n\tselectUnpublishedData,\n\t( data: PublishedComponent[], unpublishedData: UnpublishedComponent[] ) => [\n\t\t...unpublishedData.map( ( item ) => ( {\n\t\t\tuid: item.uid,\n\t\t\tname: item.name,\n\t\t\toverridableProps: item.overridableProps,\n\t\t} ) ),\n\t\t...data.filter( ( component ) => ! component.isArchived ),\n\t]\n);\nexport const selectUnpublishedComponents = createSelector(\n\tselectUnpublishedData,\n\t( unpublishedData: UnpublishedComponent[] ) => unpublishedData\n);\nexport const selectLoadIsPending = createSelector( selectLoadStatus, ( status ) => status === 'pending' );\nexport const selectLoadIsError = createSelector( selectLoadStatus, ( status ) => status === 'error' );\nexport const selectStyles = ( state: ComponentsSlice ) => state[ SLICE_NAME ].styles ?? {};\nexport const selectFlatStyles = createSelector( selectStylesDefinitions, ( data ) => Object.values( data ).flat() );\nexport const selectCreatedThisSession = createSelector(\n\tgetCreatedThisSession,\n\t( createdThisSession ) => createdThisSession\n);\n\nconst DEFAULT_OVERRIDABLE_PROPS: OverridableProps = {\n\tprops: {},\n\tgroups: {\n\t\titems: {},\n\t\torder: [],\n\t},\n};\n\nexport const selectOverridableProps = createSelector(\n\tselectComponent,\n\t( component: PublishedComponent | undefined ) => {\n\t\tif ( ! component ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn component.overridableProps ?? DEFAULT_OVERRIDABLE_PROPS;\n\t}\n);\nexport const useOverridableProps = ( componentId: ComponentId | null ) => {\n\treturn useSelector( ( state: ComponentsSlice ) =>\n\t\tcomponentId ? selectOverridableProps( state, componentId ) : null\n\t);\n};\nexport const selectIsOverridablePropsLoaded = createSelector(\n\tselectComponent,\n\t( component: PublishedComponent | undefined ) => {\n\t\treturn !! component?.overridableProps;\n\t}\n);\nexport const selectPath = createSelector( getPath, ( path ) => path );\n\nexport const selectCurrentComponentId = createSelector(\n\tgetCurrentComponentId,\n\t( currentComponentId ) => currentComponentId\n);\n\nexport const selectCurrentComponent = createSelector( selectData, getCurrentComponentId, ( data, currentComponentId ) =>\n\tdata.find( ( component ) => component.id === currentComponentId )\n);\n\nexport const useCurrentComponentId = () => {\n\treturn useSelector( selectCurrentComponentId );\n};\nexport const useCurrentComponent = () => {\n\treturn useSelector( selectCurrentComponent );\n};\n\nexport const selectUpdatedComponentNames = createSelector(\n\t( state: ComponentsSlice ) => state[ SLICE_NAME ].updatedComponentNames,\n\t( updatedComponentNames ) =>\n\t\tObject.entries( updatedComponentNames ).map( ( [ componentId, title ] ) => ( {\n\t\t\tcomponentId: Number( componentId ),\n\t\t\ttitle,\n\t\t} ) )\n);\n","import { __createAsyncThunk as createAsyncThunk } from '@elementor/store';\n\nimport { apiClient } from '../api';\n\nconst loadComponents = createAsyncThunk( 'components/load', async () => {\n\tconst response = await apiClient.get();\n\treturn response;\n} );\n\nexport { loadComponents };\n","import { type V1ElementData } from '@elementor/editor-elements';\nimport { ajax } from '@elementor/editor-v1-adapters';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\n\nimport {\n\ttype DocumentSaveStatus,\n\ttype OverridableProps,\n\ttype PublishedComponent,\n\ttype UpdatedComponentName,\n} from './types';\n\nconst BASE_URL = 'elementor/v1/components';\n\nexport type ComponentItems = Array< {\n\tuid: string;\n\ttitle: string;\n\telements: V1ElementData[];\n\tsettings?: {\n\t\toverridable_props?: OverridableProps;\n\t};\n} >;\n\nexport type CreateComponentPayload = {\n\tstatus: DocumentSaveStatus;\n\titems: ComponentItems;\n};\n\ntype ComponentLockStatusResponse = {\n\tis_current_user_allow_to_edit: boolean;\n\tlocked_by: string;\n};\n\ntype GetComponentResponse = Array< PublishedComponent >;\n\nexport type CreateComponentResponse = Record< string, number >;\n\nexport type ValidateComponentsPayload = {\n\titems: ComponentItems;\n};\n\nexport type ValidateComponentsResponse = {\n\tcode: string;\n\tmessage: string;\n\tdata: {\n\t\tstatus: number;\n\t\tmeta: Record< string, unknown >;\n\t};\n};\n\nexport const getParams = ( id: number ) => ( {\n\taction: 'get_document_config',\n\tunique_id: `document-config-${ id }`,\n\tdata: { id },\n} );\n\nexport const apiClient = {\n\tget: () =>\n\t\thttpService()\n\t\t\t.get< HttpResponse< GetComponentResponse > >( `${ BASE_URL }` )\n\t\t\t.then( ( res ) => res.data.data ),\n\tcreate: ( payload: CreateComponentPayload ) =>\n\t\thttpService()\n\t\t\t.post< HttpResponse< CreateComponentResponse > >( `${ BASE_URL }`, payload )\n\t\t\t.then( ( res ) => res.data.data ),\n\tupdateStatuses: ( ids: number[], status: DocumentSaveStatus ) =>\n\t\thttpService().put( `${ BASE_URL }/status`, {\n\t\t\tids,\n\t\t\tstatus,\n\t\t} ),\n\tgetComponentConfig: ( id: number ) => ajax.load< { id: number }, V1ElementData >( getParams( id ) ),\n\tinvalidateComponentConfigCache: ( id: number ) => ajax.invalidateCache< { id: number } >( getParams( id ) ),\n\tgetComponentLockStatus: async ( componentId: number ) =>\n\t\tawait httpService()\n\t\t\t.get< { data: ComponentLockStatusResponse } >( `${ BASE_URL }/lock-status`, {\n\t\t\t\tparams: {\n\t\t\t\t\tcomponentId,\n\t\t\t\t},\n\t\t\t} )\n\t\t\t.then( ( res ) => {\n\t\t\t\tconst { is_current_user_allow_to_edit: isAllowedToSwitchDocument, locked_by: lockedBy } = res.data.data;\n\t\t\t\treturn { isAllowedToSwitchDocument, lockedBy: lockedBy || '' };\n\t\t\t} ),\n\tlockComponent: async ( componentId: number ) =>\n\t\tawait httpService()\n\t\t\t.post< { success: boolean } >( `${ BASE_URL }/lock`, {\n\t\t\t\tcomponentId,\n\t\t\t} )\n\t\t\t.then( ( res ) => res.data ),\n\tunlockComponent: async ( componentId: number ) =>\n\t\tawait httpService()\n\t\t\t.post< { success: boolean } >( `${ BASE_URL }/unlock`, {\n\t\t\t\tcomponentId,\n\t\t\t} )\n\t\t\t.then( ( res ) => res.data ),\n\tgetOverridableProps: async ( componentId: number ) =>\n\t\tawait httpService()\n\t\t\t.get< HttpResponse< OverridableProps > >( `${ BASE_URL }/overridable-props`, {\n\t\t\t\tparams: {\n\t\t\t\t\tcomponentId: componentId.toString(),\n\t\t\t\t},\n\t\t\t} )\n\t\t\t.then( ( res ) => res.data.data ),\n\tupdateArchivedComponents: async ( componentIds: number[] ) =>\n\t\tawait httpService()\n\t\t\t.post< { data: { failedIds: number[]; successIds: number[]; success: boolean } } >(\n\t\t\t\t`${ BASE_URL }/archive`,\n\t\t\t\t{\n\t\t\t\t\tcomponentIds,\n\t\t\t\t}\n\t\t\t)\n\t\t\t.then( ( res ) => res.data.data ),\n\tupdateComponentTitle: ( updatedComponentNames: UpdatedComponentName[] ) =>\n\t\thttpService()\n\t\t\t.post< { data: { failedIds: number[]; successIds: number[]; success: boolean } } >(\n\t\t\t\t`${ BASE_URL }/update-titles`,\n\t\t\t\t{\n\t\t\t\t\tcomponents: updatedComponentNames,\n\t\t\t\t}\n\t\t\t)\n\t\t\t.then( ( res ) => res.data.data ),\n\tvalidate: async ( payload: ValidateComponentsPayload ) =>\n\t\tawait httpService()\n\t\t\t.post< HttpResponse< ValidateComponentsResponse > >( `${ BASE_URL }/create-validate`, payload )\n\t\t\t.then( ( res ) => res.data ),\n};\n","import { type Document, getV1DocumentsManager } from '@elementor/editor-documents';\n\ntype ComponentDocumentData = Document;\n\nexport const getComponentDocumentData = async ( id: number ) => {\n\tconst documentManager = getV1DocumentsManager();\n\n\ttry {\n\t\treturn await documentManager.request< ComponentDocumentData >( id );\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nexport const invalidateComponentDocumentData = ( id: number ) => {\n\tconst documentManager = getV1DocumentsManager();\n\n\tdocumentManager.invalidateCache( id );\n};\n","import { createTransformer, settingsTransformersRegistry, type TransformerOptions } from '@elementor/editor-canvas';\nimport { type PropValue, type TransformablePropValue } from '@elementor/editor-props';\n\nimport { type ComponentOverridable } from './types';\n\nexport const componentOverridableTransformer = createTransformer(\n\t( value: ComponentOverridable, options: TransformerOptions ) => {\n\t\tconst { overrides } = options.renderContext ?? {};\n\n\t\tconst overrideValue = overrides?.[ value.override_key as keyof typeof overrides ];\n\n\t\tif ( overrideValue ) {\n\t\t\tconst isOverride = isOriginValueOverride( value.origin_value );\n\n\t\t\tif ( isOverride ) {\n\t\t\t\treturn transformOverride( value, options, overrideValue );\n\t\t\t}\n\n\t\t\treturn overrideValue;\n\t\t}\n\n\t\treturn value.origin_value;\n\t}\n);\n\nfunction transformOverride(\n\tvalue: ComponentOverridable,\n\toptions: {\n\t\tkey: string;\n\t},\n\toverrideValue: PropValue\n) {\n\tconst transformer = settingsTransformersRegistry.get( 'override' );\n\n\tif ( ! transformer ) {\n\t\treturn null;\n\t}\n\n\tconst transformedValue = transformer( value.origin_value.value, options );\n\n\tif ( ! transformedValue ) {\n\t\treturn null;\n\t}\n\n\tconst [ key ] = Object.keys( transformedValue as Record< string, unknown > );\n\n\treturn {\n\t\t[ key ]: overrideValue,\n\t};\n}\n\nfunction isOriginValueOverride( originValue: TransformablePropValue< string > ): boolean {\n\treturn originValue.$$type === 'override';\n}\n","import { createTransformer } from '@elementor/editor-canvas';\n\nimport { type ComponentInstanceOverridePropValue } from './prop-types/component-instance-override-prop-type';\n\nexport const componentOverrideTransformer = createTransformer( ( override: ComponentInstanceOverridePropValue ) => {\n\tconst { override_key: key, override_value: overrideValue } = override;\n\n\treturn { [ key ]: overrideValue };\n} );\n","import * as React from 'react';\nimport { useSuppressedMessage } from '@elementor/editor-current-user';\nimport { getV1DocumentsManager } from '@elementor/editor-documents';\nimport { ArrowLeftIcon, ComponentsFilledIcon } from '@elementor/icons';\nimport { __getState as getState } from '@elementor/store';\nimport { Box, Divider, IconButton, Stack, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useNavigateBack } from '../../hooks/use-navigate-back';\nimport { type ComponentsSlice, SLICE_NAME, useCurrentComponent } from '../../store/store';\nimport { trackComponentEvent } from '../../utils/tracking';\nimport { usePanelActions } from '../component-properties-panel/component-properties-panel';\nimport { ComponentIntroduction } from '../components-tab/component-introduction';\nimport { ComponentsBadge } from './component-badge';\nimport { useOverridableProps } from './use-overridable-props';\n\nconst MESSAGE_KEY = 'components-properties-introduction';\n\nexport const ComponentPanelHeader = () => {\n\tconst { id: currentComponentId, uid: componentUid } = useCurrentComponent() ?? { id: null, uid: null };\n\tconst overridableProps = useOverridableProps( currentComponentId );\n\tconst onBack = useNavigateBack();\n\tconst componentName = getComponentName();\n\tconst [ isMessageSuppressed, suppressMessage ] = useSuppressedMessage( MESSAGE_KEY );\n\tconst [ shouldShowIntroduction, setShouldShowIntroduction ] = React.useState( ! isMessageSuppressed );\n\n\tconst { open: openPropertiesPanel } = usePanelActions();\n\n\tconst overridablePropsCount = overridableProps ? Object.keys( overridableProps.props ).length : 0;\n\tconst anchorRef = React.useRef< HTMLDivElement >( null );\n\n\tif ( ! currentComponentId ) {\n\t\treturn null;\n\t}\n\n\tconst handleCloseIntroduction = () => {\n\t\tsuppressMessage();\n\t\tsetShouldShowIntroduction( false );\n\t};\n\n\tconst handleOpenPropertiesPanel = () => {\n\t\topenPropertiesPanel();\n\n\t\ttrackComponentEvent( {\n\t\t\taction: 'propertiesPanelOpened',\n\t\t\tsource: 'user',\n\t\t\tcomponent_uid: componentUid,\n\t\t\tproperties_count: overridablePropsCount,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Box>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tjustifyContent=\"space-between\"\n\t\t\t\tsx={ { height: 48, pl: 1.5, pr: 2, py: 1 } }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\">\n\t\t\t\t\t<Tooltip title={ __( 'Back', 'elementor' ) }>\n\t\t\t\t\t\t<IconButton size=\"tiny\" onClick={ onBack } aria-label={ __( 'Back', 'elementor' ) }>\n\t\t\t\t\t\t\t<ArrowLeftIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 0.5 }>\n\t\t\t\t\t\t<ComponentsFilledIcon fontSize=\"tiny\" stroke=\"currentColor\" />\n\t\t\t\t\t\t<Typography variant=\"caption\" sx={ { fontWeight: 500 } }>\n\t\t\t\t\t\t\t{ componentName }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Stack>\n\t\t\t\t<ComponentsBadge\n\t\t\t\t\toverridablePropsCount={ overridablePropsCount }\n\t\t\t\t\tref={ anchorRef }\n\t\t\t\t\tonClick={ handleOpenPropertiesPanel }\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t\t<Divider />\n\t\t\t<ComponentIntroduction\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tshouldShowIntroduction={ shouldShowIntroduction }\n\t\t\t\tonClose={ handleCloseIntroduction }\n\t\t\t/>\n\t\t</Box>\n\t);\n};\n\nfunction getComponentName(): string {\n\tconst state = getState() as ComponentsSlice;\n\tconst path = state[ SLICE_NAME ].path;\n\tconst { instanceTitle } = path.at( -1 ) ?? {};\n\n\tif ( instanceTitle ) {\n\t\treturn instanceTitle;\n\t}\n\n\tconst documentsManager = getV1DocumentsManager();\n\tconst currentDocument = documentsManager.getCurrent();\n\n\treturn currentDocument?.container?.settings?.get( 'post_title' ) ?? '';\n}\n","import { useCallback } from 'react';\nimport { getV1DocumentsManager } from '@elementor/editor-documents';\nimport { __useSelector as useSelector } from '@elementor/store';\n\nimport { selectPath } from '../store/store';\nimport { switchToComponent } from '../utils/switch-to-component';\n\nexport function useNavigateBack() {\n\tconst path = useSelector( selectPath );\n\n\tconst documentsManager = getV1DocumentsManager();\n\n\treturn useCallback( () => {\n\t\tconst { componentId: prevComponentId, instanceId: prevComponentInstanceId } = path.at( -2 ) ?? {};\n\n\t\tif ( prevComponentId && prevComponentInstanceId ) {\n\t\t\tswitchToComponent( prevComponentId, prevComponentInstanceId );\n\n\t\t\treturn;\n\t\t}\n\n\t\tswitchToComponent( documentsManager.getInitialId() );\n\t}, [ path, documentsManager ] );\n}\n","import { getCurrentDocumentContainer, selectElement } from '@elementor/editor-elements';\nimport { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nimport { expandNavigator } from './expand-navigator';\n\nexport async function switchToComponent(\n\tcomponentId: number | string,\n\tcomponentInstanceId?: string | null,\n\telement?: HTMLElement | null\n) {\n\tconst selector = getSelector( element, componentInstanceId );\n\n\tawait runCommand( 'editor/documents/switch', {\n\t\tid: componentId,\n\t\tselector,\n\t\tmode: 'autosave',\n\t\tsetAsInitial: false,\n\t\tshouldScroll: false,\n\t} );\n\n\tconst currentDocumentContainer = getCurrentDocumentContainer();\n\tconst topLevelElement = currentDocumentContainer?.children?.[ 0 ];\n\n\tif ( topLevelElement ) {\n\t\tselectElement( topLevelElement.id );\n\t\texpandNavigator();\n\t}\n}\n\nfunction getSelector( element?: HTMLElement | null, componentInstanceId?: string | null ): string | undefined {\n\tif ( element ) {\n\t\treturn buildUniqueSelector( element );\n\t}\n\n\tif ( componentInstanceId ) {\n\t\treturn `[data-id=\"${ componentInstanceId }\"]`;\n\t}\n\n\treturn undefined;\n}\n\nexport function buildUniqueSelector( element: HTMLElement ): string {\n\tconst selectors: string[] = [];\n\tlet current = element.closest< HTMLElement >( '[data-id]' );\n\n\twhile ( current ) {\n\t\tconst dataId = current.dataset.id;\n\t\tconst isComponentInstance = current.hasAttribute( 'data-elementor-id' );\n\n\t\tif ( isComponentInstance ) {\n\t\t\tselectors.unshift( `[data-id=\"${ dataId }\"]` );\n\t\t}\n\n\t\tcurrent = current.parentElement?.closest( '[data-id]' ) ?? null;\n\t}\n\n\tif ( selectors.length === 0 ) {\n\t\tconst closestElement = element.closest< HTMLElement >( '[data-id]' );\n\n\t\tif ( closestElement?.dataset?.id ) {\n\t\t\treturn `[data-id=\"${ closestElement.dataset.id }\"]`;\n\t\t}\n\t}\n\n\treturn selectors.join( ' ' );\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nexport async function expandNavigator() {\n\tawait runCommand( 'navigator/expand-all' );\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport { getMixpanel } from '@elementor/mixpanel';\nimport { __getState as getState } from '@elementor/store';\n\nimport { selectCreatedThisSession } from '../store/store';\nimport { type ExtendedWindow } from '../types';\n\nexport type Source = 'user' | 'mcp_tool';\n\ntype ComponentEventData = Record< string, unknown > & {\n\taction:\n\t\t| 'createClicked'\n\t\t| 'created'\n\t\t| 'createCancelled'\n\t\t| 'instanceAdded'\n\t\t| 'edited'\n\t\t| 'propertyExposed'\n\t\t| 'propertyRemoved'\n\t\t| 'propertiesPanelOpened'\n\t\t| 'propertiesGroupCreated';\n\tsource: Source;\n};\n\nconst FEATURE_NAME = 'Components';\n\nexport const trackComponentEvent = ( { action, source, ...data }: ComponentEventData ) => {\n\tconst { dispatchEvent, config } = getMixpanel();\n\tif ( ! config?.names?.components?.[ action ] ) {\n\t\treturn;\n\t}\n\n\tconst name = config.names.components[ action ];\n\tdispatchEvent?.( name, { ...data, source, 'Feature name': FEATURE_NAME } );\n};\n\nexport const onElementDrop = ( _args: unknown, element: V1Element ) => {\n\tif ( ! ( element?.model?.get( 'widgetType' ) === 'e-component' ) ) {\n\t\treturn;\n\t}\n\n\tconst editorSettings = element.model.get( 'editor_settings' );\n\tconst componentName = editorSettings?.title;\n\tconst componentUID = editorSettings?.component_uid;\n\tconst instanceId = element.id;\n\n\tconst createdThisSession = selectCreatedThisSession( getState() );\n\tconst isSameSessionReuse = componentUID && createdThisSession.includes( componentUID );\n\n\tconst eventsManagerConfig = ( window as unknown as ExtendedWindow ).elementorCommon.eventsManager.config;\n\tconst { locations, secondaryLocations } = eventsManagerConfig;\n\n\ttrackComponentEvent( {\n\t\taction: 'instanceAdded',\n\t\tsource: 'user',\n\t\tinstance_id: instanceId,\n\t\tcomponent_uid: componentUID,\n\t\tcomponent_name: componentName,\n\t\tis_same_session_reuse: isSameSessionReuse,\n\t\tlocation: locations.widgetPanel,\n\t\tsecondary_location: secondaryLocations.componentsTab,\n\t} );\n};\n","import * as React from 'react';\nimport { ElementProvider, usePanelActions as useEditingPanelActions } from '@elementor/editor-editing-panel';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { __createPanel as createPanel, Panel } from '@elementor/editor-panels';\nimport { ThemeProvider } from '@elementor/editor-ui';\nimport { Alert, Box, ErrorBoundary } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ComponentPropertiesPanelContent } from './component-properties-panel-content';\n\nconst id = 'component-properties-panel';\n\nexport const { panel, usePanelActions } = createPanel( {\n\tid,\n\tcomponent: ComponentPropertiesPanel,\n} );\n\nfunction ComponentPropertiesPanel() {\n\tconst { element, elementType } = useSelectedElement();\n\tconst { close: closePanel } = usePanelActions();\n\tconst { open: openEditingPanel } = useEditingPanelActions();\n\n\tif ( ! element || ! elementType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<ErrorBoundary fallback={ <ErrorBoundaryFallback /> }>\n\t\t\t\t<ElementProvider element={ element } elementType={ elementType }>\n\t\t\t\t\t<Panel>\n\t\t\t\t\t\t<ComponentPropertiesPanelContent\n\t\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\t\tclosePanel();\n\t\t\t\t\t\t\t\topenEditingPanel();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Panel>\n\t\t\t\t</ElementProvider>\n\t\t\t</ErrorBoundary>\n\t\t</ThemeProvider>\n\t);\n}\n\nconst ErrorBoundaryFallback = () => (\n\t<Box role=\"alert\" sx={ { minHeight: '100%', p: 2 } }>\n\t\t<Alert severity=\"error\" sx={ { mb: 2, maxWidth: 400, textAlign: 'center' } }>\n\t\t\t<strong>{ __( 'Something went wrong', 'elementor' ) }</strong>\n\t\t</Alert>\n\t</Box>\n);\n","import * as React from 'react';\nimport { useMemo, useRef, useState } from 'react';\nimport { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { ComponentPropListIcon, FolderPlusIcon, XIcon } from '@elementor/icons';\nimport { Divider, IconButton, List, Stack, Tooltip } from '@elementor/ui';\nimport { generateUniqueId } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { addOverridableGroup } from '../../store/actions/add-overridable-group';\nimport { deleteOverridableGroup } from '../../store/actions/delete-overridable-group';\nimport { deleteOverridableProp } from '../../store/actions/delete-overridable-prop';\nimport { reorderGroupProps } from '../../store/actions/reorder-group-props';\nimport { reorderOverridableGroups } from '../../store/actions/reorder-overridable-groups';\nimport { updateOverridablePropParams } from '../../store/actions/update-overridable-prop-params';\nimport { useCurrentComponentId } from '../../store/store';\nimport { useOverridableProps } from '../component-panel-header/use-overridable-props';\nimport { PropertiesEmptyState } from './properties-empty-state';\nimport { PropertiesGroup } from './properties-group';\nimport { SortableItem, SortableProvider } from './sortable';\nimport { useCurrentEditableItem } from './use-current-editable-item';\nimport { generateUniqueLabel } from './utils/generate-unique-label';\n\ntype Props = {\n\tonClose: () => void;\n};\n\nexport function ComponentPropertiesPanelContent( { onClose }: Props ) {\n\tconst currentComponentId = useCurrentComponentId();\n\tconst overridableProps = useOverridableProps( currentComponentId );\n\tconst [ isAddingGroup, setIsAddingGroup ] = useState( false );\n\tconst introductionRef = useRef< HTMLButtonElement >( null );\n\tconst groupLabelEditable = useCurrentEditableItem();\n\n\tconst groups = useMemo( () => {\n\t\tif ( ! overridableProps ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn overridableProps.groups.order\n\t\t\t.map( ( groupId ) => overridableProps.groups.items[ groupId ] ?? null )\n\t\t\t.filter( Boolean );\n\t}, [ overridableProps ] );\n\n\tconst allGroupsForSelect = useMemo(\n\t\t() => groups.map( ( group ) => ( { value: group.id, label: group.label } ) ),\n\t\t[ groups ]\n\t);\n\n\tif ( ! currentComponentId || ! overridableProps ) {\n\t\treturn null;\n\t}\n\n\tconst hasGroups = groups.length > 0;\n\tconst showEmptyState = ! hasGroups && ! isAddingGroup;\n\tconst groupIds = overridableProps.groups.order;\n\n\tconst handleAddGroupClick = () => {\n\t\tif ( isAddingGroup ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newGroupId = generateUniqueId( 'group' );\n\t\tconst newLabel = generateUniqueLabel( groups );\n\n\t\taddOverridableGroup( {\n\t\t\tcomponentId: currentComponentId,\n\t\t\tgroupId: newGroupId,\n\t\t\tlabel: newLabel,\n\t\t\tsource: 'user',\n\t\t} );\n\t\tsetDocumentModifiedStatus( true );\n\t\tsetIsAddingGroup( false );\n\n\t\tgroupLabelEditable.setEditingGroupId( newGroupId );\n\t};\n\n\tconst handleGroupsReorder = ( newOrder: string[] ) => {\n\t\treorderOverridableGroups( { componentId: currentComponentId, newOrder } );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst handlePropsReorder = ( groupId: string, newPropsOrder: string[] ) => {\n\t\treorderGroupProps( { componentId: currentComponentId, groupId, newPropsOrder } );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst handlePropertyDelete = ( propKey: string ) => {\n\t\tdeleteOverridableProp( { componentId: currentComponentId, propKey, source: 'user' } );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst handlePropertyUpdate = ( overrideKey: string, data: { label: string; group: string | null } ) => {\n\t\tupdateOverridablePropParams( {\n\t\t\tcomponentId: currentComponentId,\n\t\t\toverrideKey,\n\t\t\tlabel: data.label,\n\t\t\tgroupId: data.group,\n\t\t} );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst handleGroupDelete = ( groupId: string ) => {\n\t\tdeleteOverridableGroup( { componentId: currentComponentId, groupId } );\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<PanelHeader sx={ { justifyContent: 'start', pl: 1.5, pr: 1, py: 1 } }>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 0.5 } flexGrow={ 1 }>\n\t\t\t\t\t<ComponentPropListIcon fontSize=\"tiny\" />\n\t\t\t\t\t<PanelHeaderTitle variant=\"subtitle2\">\n\t\t\t\t\t\t{ __( 'Component properties', 'elementor' ) }\n\t\t\t\t\t</PanelHeaderTitle>\n\t\t\t\t</Stack>\n\n\t\t\t\t{ ! showEmptyState && (\n\t\t\t\t\t<Tooltip title={ __( 'Add new group', 'elementor' ) }>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\taria-label={ __( 'Add new group', 'elementor' ) }\n\t\t\t\t\t\t\tonClick={ handleAddGroupClick }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FolderPlusIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) }\n\n\t\t\t\t<Tooltip title={ __( 'Close panel', 'elementor' ) }>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tref={ introductionRef }\n\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\taria-label={ __( 'Close panel', 'elementor' ) }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t>\n\t\t\t\t\t\t<XIcon fontSize=\"tiny\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t</PanelHeader>\n\n\t\t\t<Divider />\n\n\t\t\t<PanelBody>\n\t\t\t\t{ showEmptyState ? (\n\t\t\t\t\t<PropertiesEmptyState introductionRef={ introductionRef } />\n\t\t\t\t) : (\n\t\t\t\t\t<List sx={ { p: 2, display: 'flex', flexDirection: 'column', gap: 2 } }>\n\t\t\t\t\t\t<SortableProvider value={ groupIds } onChange={ handleGroupsReorder }>\n\t\t\t\t\t\t\t{ groups.map( ( group ) => (\n\t\t\t\t\t\t\t\t<SortableItem key={ group.id } id={ group.id }>\n\t\t\t\t\t\t\t\t\t{ ( { triggerProps, triggerStyle, isDragPlaceholder } ) => (\n\t\t\t\t\t\t\t\t\t\t<PropertiesGroup\n\t\t\t\t\t\t\t\t\t\t\tgroup={ group }\n\t\t\t\t\t\t\t\t\t\t\tprops={ overridableProps.props }\n\t\t\t\t\t\t\t\t\t\t\tallGroups={ allGroupsForSelect }\n\t\t\t\t\t\t\t\t\t\t\tallGroupsRecord={ overridableProps.groups.items }\n\t\t\t\t\t\t\t\t\t\t\tsortableTriggerProps={ { ...triggerProps, style: triggerStyle } }\n\t\t\t\t\t\t\t\t\t\t\tisDragPlaceholder={ isDragPlaceholder }\n\t\t\t\t\t\t\t\t\t\t\tsetIsAddingGroup={ setIsAddingGroup }\n\t\t\t\t\t\t\t\t\t\t\tonPropsReorder={ ( newOrder ) => handlePropsReorder( group.id, newOrder ) }\n\t\t\t\t\t\t\t\t\t\t\tonPropertyDelete={ handlePropertyDelete }\n\t\t\t\t\t\t\t\t\t\t\tonPropertyUpdate={ handlePropertyUpdate }\n\t\t\t\t\t\t\t\t\t\t\teditableLabelProps={ groupLabelEditable }\n\t\t\t\t\t\t\t\t\t\t\tonGroupDelete={ handleGroupDelete }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</SortableProvider>\n\t\t\t\t\t</List>\n\t\t\t\t) }\n\t\t\t</PanelBody>\n\t\t</>\n\t);\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId, type OverridablePropsGroup } from '../../types';\nimport { type Source, trackComponentEvent } from '../../utils/tracking';\nimport { selectCurrentComponent, selectOverridableProps, slice } from '../store';\n\ntype AddGroupParams = {\n\tcomponentId: ComponentId;\n\tgroupId: string;\n\tlabel: string;\n\tsource: Source;\n};\n\nexport function addOverridableGroup( {\n\tcomponentId,\n\tgroupId,\n\tlabel,\n\tsource,\n}: AddGroupParams ): OverridablePropsGroup | undefined {\n\tconst currentComponent = selectCurrentComponent( getState() );\n\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst newGroup: OverridablePropsGroup = {\n\t\tid: groupId,\n\t\tlabel,\n\t\tprops: [],\n\t};\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: {\n\t\t\t\t\t...overridableProps.groups,\n\t\t\t\t\titems: {\n\t\t\t\t\t\t...overridableProps.groups.items,\n\t\t\t\t\t\t[ groupId ]: newGroup,\n\t\t\t\t\t},\n\t\t\t\t\torder: [ groupId, ...overridableProps.groups.order ],\n\t\t\t\t},\n\t\t\t},\n\t\t} )\n\t);\n\n\ttrackComponentEvent( {\n\t\taction: 'propertiesGroupCreated',\n\t\tsource,\n\t\tcomponent_uid: currentComponent?.uid,\n\t\tgroup_name: label,\n\t} );\n\n\treturn newGroup;\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\nimport { deleteGroup } from '../utils/groups-transformers';\n\ntype DeleteGroupParams = {\n\tcomponentId: ComponentId;\n\tgroupId: string;\n};\n\nexport function deleteOverridableGroup( { componentId, groupId }: DeleteGroupParams ): boolean {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn false;\n\t}\n\n\tconst group = overridableProps.groups.items[ groupId ];\n\n\tif ( ! group || group.props.length > 0 ) {\n\t\treturn false;\n\t}\n\n\tconst updatedGroups = deleteGroup( overridableProps.groups, groupId );\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: updatedGroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\treturn true;\n}\n","import { generateUniqueId } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { type OverridableProp, type OverridableProps, type OverridablePropsGroup } from '../../types';\n\ntype Groups = OverridableProps[ 'groups' ];\n\nexport function removePropFromAllGroups( groups: Groups, propKey: string ): Groups {\n\treturn {\n\t\t...groups,\n\t\titems: Object.fromEntries(\n\t\t\tObject.entries( groups.items ).map( ( [ groupId, group ] ) => [\n\t\t\t\tgroupId,\n\t\t\t\t{\n\t\t\t\t\t...group,\n\t\t\t\t\tprops: group.props.filter( ( p ) => p !== propKey ),\n\t\t\t\t},\n\t\t\t] )\n\t\t),\n\t};\n}\n\nexport function addPropToGroup( groups: Groups, groupId: string, propKey: string ): Groups {\n\tconst group = groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn groups;\n\t}\n\n\tif ( group.props.includes( propKey ) ) {\n\t\treturn groups;\n\t}\n\n\treturn {\n\t\t...groups,\n\t\titems: {\n\t\t\t...groups.items,\n\t\t\t[ groupId ]: {\n\t\t\t\t...group,\n\t\t\t\tprops: [ ...group.props, propKey ],\n\t\t\t},\n\t\t},\n\t};\n}\n\nexport function movePropBetweenGroups(\n\tgroups: Groups,\n\tpropKey: string,\n\tfromGroupId: string,\n\ttoGroupId: string\n): Groups {\n\tif ( fromGroupId === toGroupId ) {\n\t\treturn groups;\n\t}\n\n\tconst withoutProp = removePropFromGroup( groups, fromGroupId, propKey );\n\treturn addPropToGroup( withoutProp, toGroupId, propKey );\n}\n\nexport function removePropFromGroup( groups: Groups, groupId: string, propKey: string ): Groups {\n\tconst group = groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn groups;\n\t}\n\n\treturn {\n\t\t...groups,\n\t\titems: {\n\t\t\t...groups.items,\n\t\t\t[ groupId ]: {\n\t\t\t\t...group,\n\t\t\t\tprops: group.props.filter( ( p ) => p !== propKey ),\n\t\t\t},\n\t\t},\n\t};\n}\n\ntype ResolvedGroup = {\n\tgroups: Groups;\n\tgroupId: string;\n};\n\nexport function resolveOrCreateGroup( groups: Groups, requestedGroupId?: string ): ResolvedGroup {\n\tif ( requestedGroupId && groups.items[ requestedGroupId ] ) {\n\t\treturn { groups, groupId: requestedGroupId };\n\t}\n\n\tif ( ! requestedGroupId && groups.order.length > 0 ) {\n\t\treturn { groups, groupId: groups.order[ 0 ] };\n\t}\n\n\treturn createGroup( groups, requestedGroupId );\n}\n\nexport function createGroup( groups: Groups, groupId?: string, label?: string ): ResolvedGroup {\n\tconst newGroupId = groupId || generateUniqueId( 'group' );\n\tconst newLabel = label || __( 'Default', 'elementor' );\n\n\treturn {\n\t\tgroups: {\n\t\t\t...groups,\n\t\t\titems: {\n\t\t\t\t...groups.items,\n\t\t\t\t[ newGroupId ]: {\n\t\t\t\t\tid: newGroupId,\n\t\t\t\t\tlabel: newLabel,\n\t\t\t\t\tprops: [],\n\t\t\t\t},\n\t\t\t},\n\t\t\torder: [ ...groups.order, newGroupId ],\n\t\t},\n\t\tgroupId: newGroupId,\n\t};\n}\n\nexport function removePropsFromState(\n\toverridableProps: OverridableProps,\n\tpropsToRemove: OverridableProp[]\n): OverridableProps {\n\tconst overrideKeysToRemove = propsToRemove.map( ( prop ) => prop.overrideKey );\n\n\tconst remainingProps = Object.fromEntries(\n\t\tObject.entries( overridableProps.props ).filter( ( [ , prop ] ) => ! propsToRemove.includes( prop ) )\n\t);\n\n\tconst updatedGroupItems = Object.fromEntries(\n\t\tObject.entries( overridableProps.groups.items ).map(\n\t\t\t( [ groupId, group ]: [ string, OverridablePropsGroup ] ) => [\n\t\t\t\tgroupId,\n\t\t\t\t{\n\t\t\t\t\t...group,\n\t\t\t\t\tprops: group.props.filter( ( prop ) => ! overrideKeysToRemove.includes( prop ) ),\n\t\t\t\t},\n\t\t\t]\n\t\t)\n\t);\n\n\treturn {\n\t\tprops: remainingProps,\n\t\tgroups: {\n\t\t\titems: updatedGroupItems,\n\t\t\torder: overridableProps.groups.order.filter( ( groupId ) => ! overrideKeysToRemove.includes( groupId ) ),\n\t\t},\n\t};\n}\n\nexport function ensureGroupInOrder( groups: Groups, groupId: string ): Groups {\n\tif ( groups.order.includes( groupId ) ) {\n\t\treturn groups;\n\t}\n\n\treturn {\n\t\t...groups,\n\t\torder: [ ...groups.order, groupId ],\n\t};\n}\n\nexport function deleteGroup( groups: Groups, groupId: string ): Groups {\n\tconst { [ groupId ]: removed, ...remainingItems } = groups.items;\n\n\treturn {\n\t\titems: remainingItems,\n\t\torder: groups.order.filter( ( id ) => id !== groupId ),\n\t};\n}\n\nexport function renameGroup( groups: Groups, groupId: string, newLabel: string ): Groups {\n\tconst group = groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn groups;\n\t}\n\n\treturn {\n\t\t...groups,\n\t\titems: {\n\t\t\t...groups.items,\n\t\t\t[ groupId ]: {\n\t\t\t\t...group,\n\t\t\t\tlabel: newLabel,\n\t\t\t},\n\t\t},\n\t};\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { revertElementOverridableSetting } from '../../utils/revert-element-overridable-setting';\nimport { type Source, trackComponentEvent } from '../../utils/tracking';\nimport { selectCurrentComponent, selectOverridableProps, slice } from '../store';\nimport { removePropFromAllGroups } from '../utils/groups-transformers';\n\ntype DeletePropParams = {\n\tcomponentId: ComponentId;\n\tpropKey: string;\n\tsource: Source;\n};\n\nexport function deleteOverridableProp( { componentId, propKey, source }: DeletePropParams ): void {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst prop = overridableProps.props[ propKey ];\n\n\tif ( ! prop ) {\n\t\treturn;\n\t}\n\n\trevertElementOverridableSetting( prop.elementId, prop.propKey, prop.originValue, propKey );\n\n\tconst { [ propKey ]: removedProp, ...remainingProps } = overridableProps.props;\n\n\tconst updatedGroups = removePropFromAllGroups( overridableProps.groups, propKey );\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tprops: remainingProps,\n\t\t\t\tgroups: updatedGroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\tconst currentComponent = selectCurrentComponent( getState() );\n\n\ttrackComponentEvent( {\n\t\taction: 'propertyRemoved',\n\t\tsource,\n\t\tcomponent_uid: currentComponent?.uid,\n\t\tproperty_id: removedProp.overrideKey,\n\t\tproperty_path: removedProp.propKey,\n\t\tproperty_name: removedProp.label,\n\t\telement_type: removedProp.widgetType ?? removedProp.elType,\n\t} );\n}\n","import { getContainer, getElementSetting, updateElementSettings } from '@elementor/editor-elements';\n\nimport {\n\ttype ComponentInstanceOverrideProp,\n\tcomponentInstanceOverridePropTypeUtil,\n} from '../prop-types/component-instance-override-prop-type';\nimport {\n\tcomponentInstanceOverridesPropTypeUtil,\n\ttype ComponentInstanceOverridesPropValue,\n} from '../prop-types/component-instance-overrides-prop-type';\nimport {\n\ttype ComponentInstanceProp,\n\tcomponentInstancePropTypeUtil,\n\ttype ComponentInstancePropValue,\n} from '../prop-types/component-instance-prop-type';\nimport { componentOverridablePropTypeUtil } from '../prop-types/component-overridable-prop-type';\nimport { isComponentInstance } from './is-component-instance';\n\nexport function revertElementOverridableSetting(\n\telementId: string,\n\tsettingKey: string,\n\toriginValue: unknown,\n\toverrideKey: string\n): void {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\treturn;\n\t}\n\n\tif ( isComponentInstance( container.model.toJSON() ) ) {\n\t\trevertComponentInstanceSetting( elementId, overrideKey );\n\n\t\treturn;\n\t}\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: { [ settingKey ]: originValue ?? null },\n\t\twithHistory: false,\n\t} );\n}\n\nfunction revertComponentInstanceSetting( elementId: string, overrideKey: string ): void {\n\tconst setting = getElementSetting< ComponentInstanceProp >( elementId, 'component_instance' );\n\n\tconst componentInstance = componentInstancePropTypeUtil.extract( setting );\n\tconst overrides = componentInstanceOverridesPropTypeUtil.extract( componentInstance?.overrides );\n\n\tif ( ! overrides ) {\n\t\treturn;\n\t}\n\n\tconst updatedOverrides = getUpdatedComponentInstanceOverrides( overrides, overrideKey );\n\n\tconst updatedSetting = componentInstancePropTypeUtil.create( {\n\t\t...componentInstance,\n\t\toverrides: componentInstanceOverridesPropTypeUtil.create( updatedOverrides ),\n\t} as ComponentInstancePropValue );\n\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: { component_instance: updatedSetting },\n\t\twithHistory: false,\n\t} );\n}\n\nfunction getUpdatedComponentInstanceOverrides(\n\toverrides: NonNullable< ComponentInstanceOverridesPropValue >,\n\toverrideKey: string\n): ComponentInstanceOverridesPropValue {\n\treturn overrides\n\t\t.map( ( item ) => {\n\t\t\tconst isOverridable = componentOverridablePropTypeUtil.isValid( item );\n\t\t\tif ( ! isOverridable ) {\n\t\t\t\t// we revert only overridable values\n\t\t\t\treturn item;\n\t\t\t}\n\n\t\t\tconst isOriginValueOverride = componentInstanceOverridePropTypeUtil.isValid( item.value.origin_value );\n\n\t\t\tif ( ! isOriginValueOverride ) {\n\t\t\t\t// component instances cannot have overridables with origin value that is not an override\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( item.value.override_key !== overrideKey ) {\n\t\t\t\treturn item;\n\t\t\t}\n\n\t\t\treturn item.value.origin_value as ComponentInstanceOverrideProp;\n\t\t} )\n\t\t.filter( ( item ): item is NonNullable< typeof item > => item !== null );\n}\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nexport const componentInstanceOverridePropTypeUtil = createPropUtils(\n\t'override',\n\tz.object( {\n\t\toverride_key: z.string(),\n\t\toverride_value: z.unknown(),\n\t\tschema_source: z.object( {\n\t\t\ttype: z.literal( 'component' ),\n\t\t\tid: z.number(),\n\t\t} ),\n\t} )\n);\n\nexport type ComponentInstanceOverrideProp = z.infer< typeof componentInstanceOverridePropTypeUtil.schema >;\nexport type ComponentInstanceOverridePropValue = ComponentInstanceOverrideProp[ 'value' ];\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { componentInstanceOverridePropTypeUtil } from './component-instance-override-prop-type';\nimport { componentOverridablePropTypeUtil } from './component-overridable-prop-type';\n\nexport const componentInstanceOverridesPropTypeUtil = createPropUtils(\n\t'overrides',\n\tz\n\t\t.array( z.union( [ componentInstanceOverridePropTypeUtil.schema, componentOverridablePropTypeUtil.schema ] ) )\n\t\t.optional()\n\t\t.default( [] )\n);\n\nexport type ComponentInstanceOverridesPropValue = z.infer<\n\ttypeof componentInstanceOverridesPropTypeUtil.schema\n>[ 'value' ];\n\nexport type ComponentInstanceOverride = NonNullable< ComponentInstanceOverridesPropValue >[ number ];\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nexport const componentOverridablePropTypeUtil = createPropUtils(\n\t'overridable',\n\tz.object( {\n\t\toverride_key: z.string(),\n\t\torigin_value: z\n\t\t\t.object( {\n\t\t\t\t$$type: z.string(),\n\t\t\t\tvalue: z.unknown(),\n\t\t\t} )\n\t\t\t.nullable(),\n\t} )\n);\n\nexport type ComponentOverridableProp = z.infer< typeof componentOverridablePropTypeUtil.schema >;\n\nexport type ComponentOverridablePropValue = ComponentOverridableProp[ 'value' ];\n","import { createPropUtils, numberPropTypeUtil } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { componentInstanceOverridesPropTypeUtil } from './component-instance-overrides-prop-type';\n\nexport const componentInstancePropTypeUtil = createPropUtils(\n\t'component-instance',\n\tz.object( {\n\t\tcomponent_id: numberPropTypeUtil.schema,\n\t\toverrides: z.optional( componentInstanceOverridesPropTypeUtil.schema ),\n\t} )\n);\n\nexport type ComponentInstanceProp = z.infer< typeof componentInstancePropTypeUtil.schema >;\nexport type ComponentInstancePropValue = ComponentInstanceProp[ 'value' ];\n","import {\n\ttype BackboneModel,\n\ttype BackboneModelConstructor,\n\ttype CreateTemplatedElementTypeOptions,\n\tcreateTemplatedElementView,\n\ttype ElementModel,\n\ttype ElementType,\n\ttype ElementView,\n\ttype LegacyWindow,\n\ttype NamespacedRenderContext,\n\ttype RenderContext,\n} from '@elementor/editor-canvas';\nimport { getCurrentDocument } from '@elementor/editor-documents';\nimport { __getState as getState } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { apiClient } from './api';\nimport { type ComponentInstanceProp } from './prop-types/component-instance-prop-type';\nimport { type ComponentsSlice, selectComponentByUid } from './store/store';\nimport { type ComponentRenderContext, type ExtendedWindow } from './types';\nimport { switchToComponent } from './utils/switch-to-component';\nimport { trackComponentEvent } from './utils/tracking';\n\ntype ContextMenuEventData = { location: string; secondaryLocation: string; trigger: string };\n\nexport type ContextMenuAction = {\n\tname: string;\n\ticon: string;\n\ttitle: string | ( () => string );\n\tisEnabled: () => boolean;\n\tcallback: ( _: unknown, eventData: ContextMenuEventData ) => void;\n};\n\ntype ContextMenuGroupConfig = {\n\tdisable: Record< string, string[] >;\n\tadd: Record< string, { index: number; action: ContextMenuAction } >;\n};\n\ntype ContextMenuGroup = {\n\tname: string;\n\tactions: ContextMenuAction[];\n};\n\ntype ComponentModel = ElementModel & {\n\tcomponentId?: number | string;\n\tisGlobal: boolean;\n};\n\ntype ComponentModelInstance = BackboneModel< ComponentModel > & {\n\ttrigger: ( event: string, ...args: unknown[] ) => void;\n\tgetTitle: () => string;\n\tgetComponentId: () => number | null;\n\tgetComponentName: () => string;\n\tgetComponentUid: () => string | null;\n};\n\nexport const COMPONENT_WIDGET_TYPE = 'e-component';\n\nconst updateGroups = ( groups: ContextMenuGroup[], config: ContextMenuGroupConfig ): ContextMenuGroup[] => {\n\tconst disableMap = new Map( Object.entries( config.disable ?? {} ) );\n\tconst addMap = new Map( Object.entries( config.add ?? {} ) );\n\n\treturn groups.map( ( group ) => {\n\t\tconst disabledActions = disableMap.get( group.name ) ?? [];\n\t\tconst addConfig = addMap.get( group.name );\n\n\t\t// Update disabled actions\n\t\tconst updatedActions = group.actions.map( ( action ) =>\n\t\t\tdisabledActions.includes( action.name ) ? { ...action, isEnabled: () => false } : action\n\t\t);\n\n\t\t// Insert additional action if needed\n\t\tif ( addConfig ) {\n\t\t\tupdatedActions.splice( addConfig.index, 0, addConfig.action );\n\t\t}\n\n\t\treturn { ...group, actions: updatedActions };\n\t} );\n};\n\nexport function createComponentType(\n\toptions: CreateTemplatedElementTypeOptions & { showLockedByModal?: ( lockedBy: string ) => void }\n): typeof ElementType {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\tconst WidgetType = legacyWindow.elementor.modules.elements.types.Widget;\n\n\tconst view = createComponentView( { ...options } );\n\n\treturn class extends WidgetType {\n\t\tgetType() {\n\t\t\treturn options.type;\n\t\t}\n\n\t\tgetView() {\n\t\t\treturn view;\n\t\t}\n\n\t\tgetModel(): BackboneModelConstructor< ComponentModel > {\n\t\t\treturn createComponentModel();\n\t\t}\n\t};\n}\n\nfunction createComponentView(\n\toptions: CreateTemplatedElementTypeOptions & {\n\t\tshowLockedByModal?: ( lockedBy: string ) => void;\n\t}\n): typeof ElementView {\n\tconst legacyWindow = window as unknown as LegacyWindow & ExtendedWindow;\n\n\treturn class extends createTemplatedElementView( options ) {\n\t\teventsManagerConfig = legacyWindow.elementorCommon.eventsManager.config;\n\t\t#componentRenderContext: ComponentRenderContext | undefined;\n\n\t\tisComponentCurrentlyEdited() {\n\t\t\tconst currentDocument = getCurrentDocument();\n\n\t\t\treturn currentDocument?.id === this.getComponentId();\n\t\t}\n\n\t\tgetRenderContext(): NamespacedRenderContext | undefined {\n\t\t\tconst namespaceKey = this.getNamespaceKey();\n\t\t\tconst parentContext = this._parent?.getRenderContext?.();\n\t\t\tconst parentComponentContext = parentContext?.[ namespaceKey ];\n\n\t\t\tif ( ! this.#componentRenderContext ) {\n\t\t\t\treturn parentContext;\n\t\t\t}\n\n\t\t\tconst ownOverrides = this.#componentRenderContext.overrides ?? {};\n\t\t\tconst parentOverrides = parentComponentContext?.overrides ?? {};\n\n\t\t\treturn {\n\t\t\t\t...parentContext,\n\t\t\t\t[ namespaceKey ]: {\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\t...parentOverrides,\n\t\t\t\t\t\t...ownOverrides,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tgetResolverRenderContext(): RenderContext | undefined {\n\t\t\tconst namespaceKey = this.getNamespaceKey();\n\t\t\tconst context = this.getRenderContext();\n\n\t\t\treturn context?.[ namespaceKey ];\n\t\t}\n\n\t\tafterSettingsResolve( settings: { [ key: string ]: unknown } ) {\n\t\t\tconst componentInstance = settings.component_instance as\n\t\t\t\t| {\n\t\t\t\t\t\toverrides?: Record< string, unknown >;\n\t\t\t\t\t\telements?: unknown[];\n\t\t\t\t }\n\t\t\t\t| undefined;\n\n\t\t\tif ( componentInstance ) {\n\t\t\t\tthis.#componentRenderContext = {\n\t\t\t\t\toverrides: componentInstance.overrides ?? {},\n\t\t\t\t};\n\n\t\t\t\tthis.collection = legacyWindow.elementor.createBackboneElementsCollection( componentInstance.elements );\n\n\t\t\t\tthis.collection.models.forEach( setInactiveRecursively );\n\n\t\t\t\tsettings.component_instance = '<template data-children-placeholder></template>';\n\t\t\t}\n\n\t\t\treturn settings;\n\t\t}\n\n\t\tgetDomElement() {\n\t\t\t// Component does not have a DOM element, so we return the first child's DOM element.\n\t\t\treturn this.children.findByIndex( 0 )?.getDomElement() ?? this.$el;\n\t\t}\n\n\t\tattachBuffer( collectionView: this, buffer: DocumentFragment ): void {\n\t\t\tconst childrenPlaceholder = collectionView.$el.find( '[data-children-placeholder]' ).get( 0 );\n\n\t\t\tif ( ! childrenPlaceholder ) {\n\t\t\t\tsuper.attachBuffer( collectionView, buffer );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tchildrenPlaceholder.replaceWith( buffer );\n\t\t}\n\n\t\tgetComponentId() {\n\t\t\tconst componentInstance = (\n\t\t\t\tthis.options?.model?.get( 'settings' )?.get( 'component_instance' ) as ComponentInstanceProp\n\t\t\t )?.value;\n\n\t\t\treturn componentInstance.component_id.value;\n\t\t}\n\n\t\tgetContextMenuGroups() {\n\t\t\tconst filteredGroups = super.getContextMenuGroups().filter( ( group ) => group.name !== 'save' );\n\t\t\tconst componentId = this.getComponentId();\n\t\t\tif ( ! componentId ) {\n\t\t\t\treturn filteredGroups;\n\t\t\t}\n\n\t\t\tconst newGroups = updateGroups(\n\t\t\t\tfilteredGroups as ContextMenuGroup[],\n\t\t\t\tthis._getContextMenuConfig() as unknown as ContextMenuGroupConfig\n\t\t\t);\n\t\t\treturn newGroups;\n\t\t}\n\n\t\t_getContextMenuConfig() {\n\t\t\tconst isAdministrator = isUserAdministrator();\n\n\t\t\tconst addedGroup = {\n\t\t\t\tgeneral: {\n\t\t\t\t\tindex: 1,\n\t\t\t\t\taction: {\n\t\t\t\t\t\tname: 'edit component',\n\t\t\t\t\t\ticon: 'eicon-edit',\n\t\t\t\t\t\ttitle: () => __( 'Edit Component', 'elementor' ),\n\t\t\t\t\t\tisEnabled: () => true,\n\t\t\t\t\t\tcallback: ( _: unknown, eventData: ContextMenuEventData ) => this.editComponent( eventData ),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst disabledGroup = {\n\t\t\t\tclipboard: [ 'pasteStyle', 'resetStyle' ],\n\t\t\t};\n\n\t\t\treturn { add: isAdministrator ? addedGroup : {}, disable: disabledGroup };\n\t\t}\n\n\t\tasync switchDocument() {\n\t\t\t//todo: handle unpublished\n\t\t\tconst { isAllowedToSwitchDocument, lockedBy } = await apiClient.getComponentLockStatus(\n\t\t\t\tthis.getComponentId() as number\n\t\t\t);\n\n\t\t\tif ( ! isAllowedToSwitchDocument ) {\n\t\t\t\toptions.showLockedByModal?.( lockedBy || '' );\n\t\t\t} else {\n\t\t\t\tswitchToComponent( this.getComponentId() as number, this.model.get( 'id' ), this.el );\n\t\t\t}\n\t\t}\n\n\t\teditComponent( { trigger, location, secondaryLocation }: ContextMenuEventData ) {\n\t\t\tif ( this.isComponentCurrentlyEdited() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.switchDocument();\n\n\t\t\tconst editorSettings = this.model.get( 'editor_settings' );\n\n\t\t\ttrackComponentEvent( {\n\t\t\t\taction: 'edited',\n\t\t\t\tsource: 'user',\n\t\t\t\tcomponent_uid: editorSettings?.component_uid,\n\t\t\t\tcomponent_name: editorSettings?.title,\n\t\t\t\tlocation,\n\t\t\t\tsecondary_location: secondaryLocation,\n\t\t\t\ttrigger,\n\t\t\t} );\n\t\t}\n\n\t\thandleDblClick( e: MouseEvent ) {\n\t\t\te.stopPropagation();\n\n\t\t\tconst isAdministrator = isUserAdministrator();\n\n\t\t\tif ( ! isAdministrator ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { triggers, locations, secondaryLocations } = this.eventsManagerConfig;\n\n\t\t\tthis.editComponent( {\n\t\t\t\ttrigger: triggers.doubleClick,\n\t\t\t\tlocation: locations.canvas,\n\t\t\t\tsecondaryLocation: secondaryLocations.canvasElement,\n\t\t\t} );\n\t\t}\n\n\t\tevents() {\n\t\t\treturn {\n\t\t\t\t...super.events(),\n\t\t\t\tdblclick: this.handleDblClick,\n\t\t\t};\n\t\t}\n\n\t\tattributes() {\n\t\t\treturn {\n\t\t\t\t...super.attributes(),\n\t\t\t\t'data-elementor-id': this.getComponentId(),\n\t\t\t};\n\t\t}\n\t};\n}\n\nfunction setInactiveRecursively( model: BackboneModel< ElementModel > ) {\n\tconst editSettings = model.get( 'editSettings' );\n\n\tif ( editSettings ) {\n\t\teditSettings.set( 'inactive', true );\n\t}\n\n\tconst elements = model.get( 'elements' );\n\n\tif ( elements ) {\n\t\telements.forEach( ( childModel ) => {\n\t\t\tsetInactiveRecursively( childModel );\n\t\t} );\n\t}\n}\n\nfunction isUserAdministrator() {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn legacyWindow.elementor.config?.user?.is_administrator ?? false;\n}\n\nfunction createComponentModel(): BackboneModelConstructor< ComponentModel > {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\tconst WidgetType = legacyWindow.elementor.modules.elements.types.Widget;\n\tconst widgetTypeInstance = new WidgetType() as unknown as BackboneModelConstructor< ElementModel >;\n\tconst BaseWidgetModel = widgetTypeInstance.getModel();\n\n\treturn BaseWidgetModel.extend( {\n\t\tinitialize( this: ComponentModelInstance, attributes: unknown, options: unknown ): void {\n\t\t\tBaseWidgetModel.prototype.initialize.call( this, attributes, options );\n\n\t\t\tconst componentInstance = this.get( 'settings' )?.get( 'component_instance' ) as\n\t\t\t\t| ComponentInstanceProp\n\t\t\t\t| undefined;\n\t\t\tif ( componentInstance?.value ) {\n\t\t\t\tconst componentId = componentInstance.value.component_id?.value;\n\t\t\t\tif ( componentId && typeof componentId === 'number' ) {\n\t\t\t\t\tthis.set( 'componentId', componentId );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.set( 'isGlobal', true );\n\t\t},\n\n\t\tgetTitle( this: ComponentModelInstance ): string {\n\t\t\tconst editorSettings = this.get( 'editor_settings' ) as\n\t\t\t\t| {\n\t\t\t\t\t\ttitle?: string;\n\t\t\t\t\t\tcomponent_uid?: string;\n\t\t\t\t }\n\t\t\t\t| undefined;\n\n\t\t\tconst instanceTitle = editorSettings?.title;\n\t\t\tif ( instanceTitle ) {\n\t\t\t\treturn instanceTitle;\n\t\t\t}\n\n\t\t\tconst componentUid = editorSettings?.component_uid;\n\t\t\tif ( componentUid ) {\n\t\t\t\tconst component = selectComponentByUid( getState() as ComponentsSlice, componentUid );\n\t\t\t\tif ( component?.name ) {\n\t\t\t\t\treturn component.name;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ( window as unknown as LegacyWindow ).elementor.getElementData( this ).title;\n\t\t},\n\n\t\tgetComponentId( this: ComponentModelInstance ): number | null {\n\t\t\treturn ( this.get( 'componentId' ) as number | undefined ) || null;\n\t\t},\n\n\t\tgetComponentName( this: ComponentModelInstance ): string {\n\t\t\treturn this.getTitle();\n\t\t},\n\n\t\tgetComponentUid( this: ComponentModelInstance ): string | null {\n\t\t\tconst editorSettings = this.get( 'editor_settings' ) as\n\t\t\t\t| {\n\t\t\t\t\t\tcomponent_uid?: string;\n\t\t\t\t }\n\t\t\t\t| undefined;\n\t\t\treturn editorSettings?.component_uid || null;\n\t\t},\n\t} );\n}\n","import { type V1ElementModelProps } from '@elementor/editor-elements';\n\nimport { COMPONENT_WIDGET_TYPE } from '../create-component-type';\n\nexport function isComponentInstance( elementModel: Partial< V1ElementModelProps > ) {\n\treturn [ elementModel.widgetType, elementModel.elType ].includes( COMPONENT_WIDGET_TYPE );\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\n\ntype ReorderGroupPropsParams = {\n\tcomponentId: ComponentId;\n\tgroupId: string;\n\tnewPropsOrder: string[];\n};\n\nexport function reorderGroupProps( { componentId, groupId, newPropsOrder }: ReorderGroupPropsParams ): void {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst group = overridableProps.groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn;\n\t}\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: {\n\t\t\t\t\t...overridableProps.groups,\n\t\t\t\t\titems: {\n\t\t\t\t\t\t...overridableProps.groups.items,\n\t\t\t\t\t\t[ groupId ]: {\n\t\t\t\t\t\t\t...group,\n\t\t\t\t\t\t\tprops: newPropsOrder,\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} )\n\t);\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\n\ntype ReorderGroupsParams = {\n\tcomponentId: ComponentId;\n\tnewOrder: string[];\n};\n\nexport function reorderOverridableGroups( { componentId, newOrder }: ReorderGroupsParams ): void {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: {\n\t\t\t\t\t...overridableProps.groups,\n\t\t\t\t\torder: newOrder,\n\t\t\t\t},\n\t\t\t},\n\t\t} )\n\t);\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId, type OverridableProp } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\nimport { movePropBetweenGroups } from '../utils/groups-transformers';\n\ntype UpdatePropParams = {\n\tcomponentId: ComponentId;\n\toverrideKey: string;\n\tlabel: string;\n\tgroupId: string | null;\n};\n\nexport function updateOverridablePropParams( {\n\tcomponentId,\n\toverrideKey,\n\tlabel,\n\tgroupId,\n}: UpdatePropParams ): OverridableProp | undefined {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst prop = overridableProps.props[ overrideKey ];\n\n\tif ( ! prop ) {\n\t\treturn;\n\t}\n\n\tconst oldGroupId = prop.groupId;\n\tconst newGroupId = groupId ?? oldGroupId;\n\n\tconst updatedProp: OverridableProp = {\n\t\t...prop,\n\t\tlabel,\n\t\tgroupId: newGroupId,\n\t};\n\n\tconst updatedGroups = movePropBetweenGroups( overridableProps.groups, overrideKey, oldGroupId, newGroupId );\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tprops: {\n\t\t\t\t\t...overridableProps.props,\n\t\t\t\t\t[ overrideKey ]: updatedProp,\n\t\t\t\t},\n\t\t\t\tgroups: updatedGroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\treturn updatedProp;\n}\n","import { __useSelector as useSelector } from '@elementor/store';\n\nimport { type ComponentsSlice, selectOverridableProps } from '../../store/store';\nimport { type ComponentId, type OverridableProps } from '../../types';\n\nexport function useOverridableProps( componentId: ComponentId | null ): OverridableProps | undefined {\n\treturn useSelector( ( state: ComponentsSlice ) => {\n\t\tif ( ! componentId ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn selectOverridableProps( state, componentId );\n\t} );\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { ComponentPropListIcon } from '@elementor/icons';\nimport { Link, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ComponentIntroduction } from '../components-tab/component-introduction';\n\nexport function PropertiesEmptyState( { introductionRef }: { introductionRef: React.RefObject< HTMLButtonElement > } ) {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\treturn (\n\t\t<>\n\t\t\t<Stack\n\t\t\t\talignItems=\"center\"\n\t\t\t\tjustifyContent=\"flex-start\"\n\t\t\t\theight=\"100%\"\n\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\tsx={ { px: 2.5, pt: 10, pb: 5.5 } }\n\t\t\t\tgap={ 1 }\n\t\t\t>\n\t\t\t\t<ComponentPropListIcon fontSize=\"large\" />\n\n\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t\t{ __( 'Add your first property', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t\t\t{ __( 'Make instances flexible while keeping design synced.', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t\t\t{ __( 'Select any element, then click + next to a setting to expose it.', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Link\n\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tsx={ { textDecorationLine: 'underline' } }\n\t\t\t\t\tonClick={ () => setIsOpen( true ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Learn more', 'elementor' ) }\n\t\t\t\t</Link>\n\t\t\t</Stack>\n\t\t\t<ComponentIntroduction\n\t\t\t\tanchorRef={ introductionRef }\n\t\t\t\tshouldShowIntroduction={ isOpen }\n\t\t\t\tonClose={ () => setIsOpen( false ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { PopoverContent } from '@elementor/editor-controls';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { Box, Button, Image, Link, Popover, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const ComponentIntroduction = ( {\n\tanchorRef,\n\tshouldShowIntroduction,\n\tonClose,\n}: {\n\tanchorRef: React.RefObject< HTMLElement >;\n\tshouldShowIntroduction: boolean;\n\tonClose: () => void;\n} ) => {\n\tif ( ! anchorRef.current || ! shouldShowIntroduction ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Popover\n\t\t\tanchorEl={ anchorRef.current }\n\t\t\topen={ shouldShowIntroduction }\n\t\t\tanchorOrigin={ {\n\t\t\t\tvertical: 'top',\n\t\t\t\thorizontal: 'right',\n\t\t\t} }\n\t\t\ttransformOrigin={ {\n\t\t\t\tvertical: 'top',\n\t\t\t\thorizontal: -30,\n\t\t\t} }\n\t\t\tonClose={ onClose }\n\t\t>\n\t\t\t<Box sx={ { width: '296px' } }>\n\t\t\t\t<PopoverHeader title={ __( 'Add your first property', 'elementor' ) } onClose={ onClose } />\n\t\t\t\t<Image\n\t\t\t\t\tsx={ { width: '296px', height: '160px' } }\n\t\t\t\t\tsrc={ 'https://assets.elementor.com/packages/v1/images/components-properties-intro.png' }\n\t\t\t\t\talt={ '' }\n\t\t\t\t/>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<Stack sx={ { p: 2 } }>\n\t\t\t\t\t\t<Typography variant={ 'body2' }>\n\t\t\t\t\t\t\t{ __( 'Properties make instances flexible.', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography variant={ 'body2' }>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Click next to any setting you want users to customize - like text, images, or links.',\n\t\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography variant={ 'body2' } sx={ { mt: 2 } }>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Your properties will appear in the Properties panel, where you can organize and manage them anytime.',\n\t\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\thref=\"http://go.elementor.com/components-guide\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\tsx={ { mt: 2 } }\n\t\t\t\t\t\t\tcolor=\"info.main\"\n\t\t\t\t\t\t\tvariant=\"body2\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Learn more', 'elementor' ) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyContent=\"flex-end\" sx={ { pt: 1 } }>\n\t\t\t\t\t\t\t<Button size=\"medium\" variant=\"contained\" onClick={ onClose }>\n\t\t\t\t\t\t\t\t{ __( 'Got it', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</Stack>\n\t\t\t\t</PopoverContent>\n\t\t\t</Box>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { EditableField, MenuListItem } from '@elementor/editor-ui';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tList,\n\tMenu,\n\tStack,\n\tTooltip,\n\tTypography,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type OverridableProp, type OverridablePropsGroup } from '../../types';\nimport { PropertyItem } from './property-item';\nimport { SortableItem, SortableProvider, SortableTrigger, type SortableTriggerProps } from './sortable';\nimport { type GroupLabelEditableState } from './use-current-editable-item';\n\ntype Props = {\n\tgroup: OverridablePropsGroup;\n\tprops: Record< string, OverridableProp >;\n\tallGroups: { value: string; label: string }[];\n\tallGroupsRecord: Record< string, OverridablePropsGroup >;\n\tsortableTriggerProps: SortableTriggerProps;\n\tisDragPlaceholder?: boolean;\n\tsetIsAddingGroup: ( isAddingGroup: boolean ) => void;\n\tonPropsReorder: ( newOrder: string[] ) => void;\n\tonPropertyDelete: ( propKey: string ) => void;\n\tonPropertyUpdate: ( propKey: string, data: { label: string; group: string | null } ) => void;\n\tonGroupDelete: ( groupId: string ) => void;\n\teditableLabelProps: GroupLabelEditableState;\n};\n\nexport function PropertiesGroup( {\n\tgroup,\n\tprops,\n\tallGroups,\n\tsortableTriggerProps,\n\tisDragPlaceholder,\n\tonPropsReorder,\n\tonPropertyDelete,\n\tonPropertyUpdate,\n\tonGroupDelete,\n\teditableLabelProps,\n}: Props ) {\n\tconst groupProps = group.props\n\t\t.map( ( propId ) => props[ propId ] )\n\t\t.filter( ( prop ): prop is OverridableProp => Boolean( prop ) );\n\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tdisableAutoFocus: true,\n\t} );\n\n\tconst { editableRef, isEditing, error, getEditableProps, setEditingGroupId, editingGroupId } = editableLabelProps;\n\n\tconst hasProperties = group.props.length > 0;\n\tconst isThisGroupEditing = isEditing && editingGroupId === group.id;\n\n\tconst handleRenameClick = () => {\n\t\tpopupState.close();\n\t\tsetEditingGroupId( group.id );\n\t};\n\n\tconst handleDeleteClick = () => {\n\t\tpopupState.close();\n\t\tonGroupDelete( group.id );\n\t};\n\n\treturn (\n\t\t<Box\n\t\t\tsx={ {\n\t\t\t\topacity: isDragPlaceholder ? 0.5 : 1,\n\t\t\t} }\n\t\t>\n\t\t\t<Stack gap={ 1 }>\n\t\t\t\t<Box\n\t\t\t\t\tclassName=\"group-header\"\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t'&:hover .group-sortable-trigger': {\n\t\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .group-sortable-trigger': {\n\t\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'&:hover .group-menu': {\n\t\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .group-menu': {\n\t\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<SortableTrigger triggerClassName=\"group-sortable-trigger\" { ...sortableTriggerProps } />\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={ 2 }>\n\t\t\t\t\t\t{ isThisGroupEditing ? (\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t\theight: 28,\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\tborder: 2,\n\t\t\t\t\t\t\t\t\tborderColor: 'text.secondary',\n\t\t\t\t\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\t\t\t\t\tpl: 0.5,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<EditableField\n\t\t\t\t\t\t\t\t\tref={ editableRef }\n\t\t\t\t\t\t\t\t\tas={ Typography }\n\t\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\t\terror={ error ?? undefined }\n\t\t\t\t\t\t\t\t\tsx={ { color: 'text.primary', fontWeight: 400, lineHeight: 1.66 } }\n\t\t\t\t\t\t\t\t\t{ ...getEditableProps() }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\tsx={ { color: 'text.primary', fontWeight: 400, lineHeight: 1.66 } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ group.label }\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tclassName=\"group-menu\"\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tsx={ { p: 0.25, visibility: isThisGroupEditing ? 'visible' : undefined } }\n\t\t\t\t\t\t\taria-label={ __( 'Group actions', 'elementor' ) }\n\t\t\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Box>\n\t\t\t\t<List sx={ { p: 0, display: 'flex', flexDirection: 'column', gap: 1 } }>\n\t\t\t\t\t<SortableProvider value={ group.props } onChange={ onPropsReorder }>\n\t\t\t\t\t\t{ groupProps.map( ( prop ) => (\n\t\t\t\t\t\t\t<SortableItem key={ prop.overrideKey } id={ prop.overrideKey }>\n\t\t\t\t\t\t\t\t{ ( { triggerProps, triggerStyle, isDragPlaceholder: isItemDragPlaceholder } ) => (\n\t\t\t\t\t\t\t\t\t<PropertyItem\n\t\t\t\t\t\t\t\t\t\tprop={ prop }\n\t\t\t\t\t\t\t\t\t\tsortableTriggerProps={ { ...triggerProps, style: triggerStyle } }\n\t\t\t\t\t\t\t\t\t\tisDragPlaceholder={ isItemDragPlaceholder }\n\t\t\t\t\t\t\t\t\t\tgroups={ allGroups }\n\t\t\t\t\t\t\t\t\t\texistingLabels={ Object.values( props ).map( ( p ) => p.label ) }\n\t\t\t\t\t\t\t\t\t\tonDelete={ onPropertyDelete }\n\t\t\t\t\t\t\t\t\t\tonUpdate={ ( data ) => onPropertyUpdate( prop.overrideKey, data ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</SortableProvider>\n\t\t\t\t</List>\n\t\t\t</Stack>\n\t\t\t<Menu\n\t\t\t\t{ ...bindMenu( popupState ) }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t>\n\t\t\t\t<MenuListItem sx={ { minWidth: '160px' } } onClick={ handleRenameClick }>\n\t\t\t\t\t<Typography variant=\"caption\" sx={ { color: 'text.primary' } }>\n\t\t\t\t\t\t{ __( 'Rename', 'elementor' ) }\n\t\t\t\t\t</Typography>\n\t\t\t\t</MenuListItem>\n\t\t\t\t<Tooltip\n\t\t\t\t\ttitle={\n\t\t\t\t\t\thasProperties ? __( 'To delete the group, first remove all the properties', 'elementor' ) : ''\n\t\t\t\t\t}\n\t\t\t\t\tplacement=\"right\"\n\t\t\t\t>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<MenuListItem onClick={ handleDeleteClick } disabled={ hasProperties }>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\tsx={ { color: hasProperties ? 'text.disabled' : 'error.light' } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Delete', 'elementor' ) }\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t</span>\n\t\t\t\t</Tooltip>\n\t\t\t</Menu>\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { getWidgetsCache } from '@elementor/editor-elements';\nimport { XIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Box, IconButton, Popover, Typography, usePopupState } from '@elementor/ui';\n\nimport { type OverridableProp } from '../../types';\nimport { OverridablePropForm } from '../overridable-props/overridable-prop-form';\nimport { SortableTrigger, type SortableTriggerProps } from './sortable';\n\ntype PropertyItemProps = {\n\tprop: OverridableProp;\n\tsortableTriggerProps: SortableTriggerProps;\n\tisDragPlaceholder?: boolean;\n\tgroups: { value: string; label: string }[];\n\texistingLabels: string[];\n\tonDelete: ( propKey: string ) => void;\n\tonUpdate: ( data: { label: string; group: string | null } ) => void;\n};\n\nexport function PropertyItem( {\n\tprop,\n\tsortableTriggerProps,\n\tisDragPlaceholder,\n\tgroups,\n\texistingLabels,\n\tonDelete,\n\tonUpdate,\n}: PropertyItemProps ) {\n\tconst popoverState = usePopupState( {\n\t\tvariant: 'popover',\n\t} );\n\tconst icon = getElementIcon( prop );\n\tconst popoverProps = bindPopover( popoverState );\n\n\tconst handleSubmit = ( data: { label: string; group: string | null } ) => {\n\t\tonUpdate( data );\n\t\tpopoverState.close();\n\t};\n\n\tconst handleDelete = ( event: React.MouseEvent ) => {\n\t\tevent.stopPropagation();\n\t\tonDelete( prop.overrideKey );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Box\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tsx={ {\n\t\t\t\t\tposition: 'relative',\n\t\t\t\t\tpl: 0.5,\n\t\t\t\t\tpr: 1,\n\t\t\t\t\tpy: 0.25,\n\t\t\t\t\tminHeight: 28,\n\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\tborder: '1px solid',\n\t\t\t\t\tborderColor: 'divider',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 0.5,\n\t\t\t\t\topacity: isDragPlaceholder ? 0.5 : 1,\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tbackgroundColor: 'action.hover',\n\t\t\t\t\t},\n\t\t\t\t\t'&:hover .sortable-trigger': {\n\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t},\n\t\t\t\t\t'& .sortable-trigger': {\n\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t},\n\t\t\t\t\t'&:hover .delete-button': {\n\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t},\n\t\t\t\t\t'& .delete-button': {\n\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<SortableTrigger { ...sortableTriggerProps } />\n\t\t\t\t<Box\n\t\t\t\t\tsx={ { display: 'flex', alignItems: 'center', color: 'text.primary', fontSize: 12, padding: 0.25 } }\n\t\t\t\t>\n\t\t\t\t\t<i className={ icon } />\n\t\t\t\t</Box>\n\t\t\t\t<Typography variant=\"caption\" sx={ { color: 'text.primary', flexGrow: 1, fontSize: 10 } }>\n\t\t\t\t\t{ prop.label }\n\t\t\t\t</Typography>\n\t\t\t\t<IconButton size=\"tiny\" onClick={ handleDelete } aria-label=\"Delete property\" sx={ { p: 0.25 } }>\n\t\t\t\t\t<XIcon fontSize=\"tiny\" />\n\t\t\t\t</IconButton>\n\t\t\t</Box>\n\n\t\t\t<Popover\n\t\t\t\t{ ...popoverProps }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t\tPaperProps={ { sx: { width: popoverState.anchorEl?.getBoundingClientRect().width } } }\n\t\t\t>\n\t\t\t\t<OverridablePropForm\n\t\t\t\t\tonSubmit={ handleSubmit }\n\t\t\t\t\tcurrentValue={ prop }\n\t\t\t\t\tgroups={ groups }\n\t\t\t\t\texistingLabels={ existingLabels }\n\t\t\t\t\tsx={ { width: '100%' } }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nfunction getElementIcon( prop: OverridableProp ): string {\n\tconst elType = prop.elType === 'widget' ? prop.widgetType : prop.elType;\n\n\tconst widgetsCache = getWidgetsCache();\n\n\tif ( ! widgetsCache ) {\n\t\treturn 'eicon-apps';\n\t}\n\n\tconst widgetConfig = widgetsCache[ elType ];\n\n\treturn widgetConfig?.icon || 'eicon-apps';\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { Form, MenuListItem } from '@elementor/editor-ui';\nimport { Button, FormLabel, Grid, Select, Stack, type SxProps, TextField, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type OverridableProp } from '../../types';\nimport { validatePropLabel } from './utils/validate-prop-label';\n\nconst SIZE = 'tiny';\n\nconst DEFAULT_GROUP = { value: null, label: __( 'Default', 'elementor' ) };\n\ntype Props = {\n\tonSubmit: ( data: { label: string; group: string | null } ) => void;\n\tcurrentValue?: OverridableProp;\n\tgroups?: { value: string; label: string }[];\n\texistingLabels?: string[];\n\tsx?: SxProps;\n};\n\nexport function OverridablePropForm( { onSubmit, groups, currentValue, existingLabels = [], sx }: Props ) {\n\tconst [ propLabel, setPropLabel ] = useState< string | null >( currentValue?.label ?? null );\n\tconst [ group, setGroup ] = useState< string | null >( currentValue?.groupId ?? groups?.[ 0 ]?.value ?? null );\n\tconst [ error, setError ] = useState< string | null >( null );\n\n\tconst name = __( 'Name', 'elementor' );\n\tconst groupName = __( 'Group Name', 'elementor' );\n\n\tconst isCreate = currentValue === undefined;\n\n\tconst title = isCreate ? __( 'Create new property', 'elementor' ) : __( 'Update property', 'elementor' );\n\tconst ctaLabel = isCreate ? __( 'Create', 'elementor' ) : __( 'Update', 'elementor' );\n\n\tconst handleSubmit = () => {\n\t\tconst validationResult = validatePropLabel( propLabel ?? '', existingLabels, currentValue?.label );\n\n\t\tif ( ! validationResult.isValid ) {\n\t\t\tsetError( validationResult.errorMessage );\n\t\t\treturn;\n\t\t}\n\n\t\tonSubmit( { label: propLabel ?? '', group } );\n\t};\n\n\treturn (\n\t\t<Form onSubmit={ handleSubmit }>\n\t\t\t<Stack alignItems=\"start\" sx={ { width: '268px', ...sx } }>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tpy={ 1 }\n\t\t\t\t\tpx={ 1.5 }\n\t\t\t\t\tsx={ { columnGap: 0.5, borderBottom: '1px solid', borderColor: 'divider', width: '100%', mb: 1.5 } }\n\t\t\t\t>\n\t\t\t\t\t<Typography variant=\"caption\" sx={ { color: 'text.primary', fontWeight: '500', lineHeight: 1 } }>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"start\" px={ 1.5 } mb={ 1.5 }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<FormLabel size=\"tiny\">{ name }</FormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tplaceholder={ __( 'Enter value', 'elementor' ) }\n\t\t\t\t\t\t\tvalue={ propLabel ?? '' }\n\t\t\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\t\t\t\t\t\tconst newValue = e.target.value;\n\t\t\t\t\t\t\t\tsetPropLabel( newValue );\n\t\t\t\t\t\t\t\tconst validationResult = validatePropLabel(\n\t\t\t\t\t\t\t\t\tnewValue,\n\t\t\t\t\t\t\t\t\texistingLabels,\n\t\t\t\t\t\t\t\t\tcurrentValue?.label\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsetError( validationResult.errorMessage );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\terror={ Boolean( error ) }\n\t\t\t\t\t\t\thelperText={ error }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"start\" px={ 1.5 } mb={ 1.5 }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<FormLabel size=\"tiny\">{ groupName }</FormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tname={ groupName }\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tvalue={ group ?? null }\n\t\t\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLSelectElement > ) =>\n\t\t\t\t\t\t\t\tsetGroup( e.target.value as string | null )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdisplayEmpty\n\t\t\t\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\t\t\t\tconst [ firstGroup = DEFAULT_GROUP ] = groups ?? [];\n\n\t\t\t\t\t\t\t\t\treturn firstGroup.label;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn groups?.find( ( { value } ) => value === selectedValue )?.label ?? selectedValue;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ ( groups ?? [ DEFAULT_GROUP ] ).map( ( { label: groupLabel, ...props } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ groupLabel }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Stack direction=\"row\" justifyContent=\"flex-end\" alignSelf=\"end\" mt={ 1.5 } py={ 1 } px={ 1.5 }>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tdisabled={ ! propLabel || Boolean( error ) }\n\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ctaLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</Form>\n\t);\n}\n","import { __ } from '@wordpress/i18n';\n\nexport const ERROR_MESSAGES = {\n\tEMPTY_NAME: __( 'Property name is required', 'elementor' ),\n\tDUPLICATE_NAME: __( 'Property name already exists', 'elementor' ),\n} as const;\n\ntype ValidationResult = {\n\tisValid: boolean;\n\terrorMessage: string | null;\n};\n\nexport function validatePropLabel( label: string, existingLabels: string[], currentLabel?: string ): ValidationResult {\n\tconst trimmedLabel = label.trim();\n\n\tif ( ! trimmedLabel ) {\n\t\treturn { isValid: false, errorMessage: ERROR_MESSAGES.EMPTY_NAME };\n\t}\n\n\tconst normalizedLabel = trimmedLabel.toLowerCase();\n\tconst normalizedCurrentLabel = currentLabel?.trim().toLowerCase();\n\n\tconst isDuplicate = existingLabels.some( ( existingLabel ) => {\n\t\tconst normalizedExisting = existingLabel.trim().toLowerCase();\n\n\t\tif ( normalizedCurrentLabel && normalizedExisting === normalizedCurrentLabel ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn normalizedExisting === normalizedLabel;\n\t} );\n\n\tif ( isDuplicate ) {\n\t\treturn { isValid: false, errorMessage: ERROR_MESSAGES.DUPLICATE_NAME };\n\t}\n\n\treturn { isValid: true, errorMessage: null };\n}\n","import * as React from 'react';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tBox,\n\tstyled,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemProps,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n\ttype UnstableSortableProviderProps,\n} from '@elementor/ui';\n\nexport const SortableProvider = < T extends string >( props: UnstableSortableProviderProps< T > ) => (\n\t<UnstableSortableProvider restrictAxis variant=\"static\" dragPlaceholderStyle={ { opacity: '1' } } { ...props } />\n);\n\nexport type SortableTriggerProps = React.HTMLAttributes< HTMLDivElement > & {\n\ttriggerClassName?: string;\n};\n\nexport const SortableTrigger = ( { triggerClassName, ...props }: SortableTriggerProps ) => (\n\t<StyledSortableTrigger\n\t\t{ ...props }\n\t\trole=\"button\"\n\t\tclassName={ `sortable-trigger ${ triggerClassName ?? '' }`.trim() }\n\t\taria-label=\"sort\"\n\t>\n\t\t<GripVerticalIcon fontSize=\"tiny\" />\n\t</StyledSortableTrigger>\n);\n\ntype SortableItemProps = {\n\tid: UnstableSortableItemProps[ 'id' ];\n\tchildren: ( props: SortableItemRenderData ) => React.ReactNode;\n};\n\nexport type SortableItemRenderData = {\n\tisDragged: boolean;\n\tisDragPlaceholder: boolean;\n\ttriggerProps: React.HTMLAttributes< HTMLElement >;\n\ttriggerStyle: React.CSSProperties;\n};\n\nexport const SortableItem = ( { children, id }: SortableItemProps ) => (\n\t<UnstableSortableItem\n\t\tid={ id }\n\t\trender={ ( {\n\t\t\titemProps,\n\t\t\tisDragged,\n\t\t\ttriggerProps,\n\t\t\titemStyle,\n\t\t\ttriggerStyle,\n\t\t\tdropIndicationStyle,\n\t\t\tshowDropIndication,\n\t\t\tisDragOverlay,\n\t\t\tisDragPlaceholder,\n\t\t}: UnstableSortableItemRenderProps ) => (\n\t\t\t<Box\n\t\t\t\t{ ...itemProps }\n\t\t\t\tstyle={ itemStyle }\n\t\t\t\tcomponent=\"div\"\n\t\t\t\trole=\"listitem\"\n\t\t\t\tsx={ {\n\t\t\t\t\tbackgroundColor: isDragOverlay ? 'background.paper' : undefined,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ children( {\n\t\t\t\t\tisDragged,\n\t\t\t\t\tisDragPlaceholder,\n\t\t\t\t\ttriggerProps,\n\t\t\t\t\ttriggerStyle,\n\t\t\t\t} ) }\n\t\t\t\t{ showDropIndication && <SortableItemIndicator style={ dropIndicationStyle } /> }\n\t\t\t</Box>\n\t\t) }\n\t/>\n);\n\nconst StyledSortableTrigger = styled( 'div' )( ( { theme } ) => ( {\n\tposition: 'absolute',\n\tleft: '-2px',\n\ttop: '50%',\n\ttransform: `translate( -${ theme.spacing( 1.5 ) }, -50% )`,\n\tcolor: theme.palette.action.active,\n\tcursor: 'grab',\n} ) );\n\nconst SortableItemIndicator = styled( Box )`\n\twidth: 100%;\n\theight: 1px;\n\tbackground-color: ${ ( { theme } ) => theme.palette.text.primary };\n`;\n","import { useState } from 'react';\nimport type * as React from 'react';\nimport { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { useEditable } from '@elementor/editor-ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { renameOverridableGroup } from '../../store/actions/rename-overridable-group';\nimport { useCurrentComponentId } from '../../store/store';\nimport { useOverridableProps } from '../component-panel-header/use-overridable-props';\nimport { validateGroupLabel } from './utils/validate-group-label';\n\nexport type GroupLabelEditableState = {\n\teditableRef: React.RefObject< HTMLElement | null >;\n\tisEditing: boolean;\n\terror: string | null;\n\tgetEditableProps: () => { value: string };\n\tsetEditingGroupId: ( groupId: string ) => void;\n\teditingGroupId: string | null;\n};\n\nexport function useCurrentEditableItem(): GroupLabelEditableState {\n\tconst [ editingGroupId, setEditingGroupId ] = useState< string | null >( null );\n\tconst currentComponentId = useCurrentComponentId();\n\tconst overridableProps = useOverridableProps( currentComponentId );\n\n\tconst allGroupsRecord = overridableProps?.groups?.items ?? {};\n\tconst currentGroup = editingGroupId ? allGroupsRecord[ editingGroupId ] : null;\n\n\tconst validateLabel = ( newLabel: string ): string | null => {\n\t\tconst otherGroups = Object.fromEntries(\n\t\t\tObject.entries( allGroupsRecord ).filter( ( [ id ] ) => id !== editingGroupId )\n\t\t);\n\n\t\treturn validateGroupLabel( newLabel, otherGroups ) || null;\n\t};\n\n\tconst handleSubmit = ( newLabel: string ) => {\n\t\tif ( ! editingGroupId || ! currentComponentId ) {\n\t\t\tthrow new Error( __( 'Group ID or component ID is missing', 'elementor' ) );\n\t\t}\n\n\t\trenameOverridableGroup( {\n\t\t\tcomponentId: currentComponentId,\n\t\t\tgroupId: editingGroupId,\n\t\t\tlabel: newLabel,\n\t\t} );\n\n\t\tsetDocumentModifiedStatus( true );\n\t};\n\n\tconst {\n\t\tref: editableRef,\n\t\topenEditMode,\n\t\tisEditing,\n\t\terror,\n\t\tgetProps: getEditableProps,\n\t} = useEditable( {\n\t\tvalue: currentGroup?.label ?? '',\n\t\tonSubmit: handleSubmit,\n\t\tvalidation: validateLabel,\n\t} );\n\n\treturn {\n\t\teditableRef,\n\t\tisEditing,\n\t\terror,\n\t\tgetEditableProps,\n\t\tsetEditingGroupId: ( groupId ) => {\n\t\t\tsetEditingGroupId( groupId );\n\t\t\topenEditMode();\n\t\t},\n\t\teditingGroupId,\n\t};\n}\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentId } from '../../types';\nimport { selectOverridableProps, slice } from '../store';\nimport { renameGroup } from '../utils/groups-transformers';\n\ntype RenameGroupParams = {\n\tcomponentId: ComponentId;\n\tgroupId: string;\n\tlabel: string;\n};\n\nexport function renameOverridableGroup( { componentId, groupId, label }: RenameGroupParams ): boolean {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn false;\n\t}\n\n\tconst group = overridableProps.groups.items[ groupId ];\n\n\tif ( ! group ) {\n\t\treturn false;\n\t}\n\n\tconst updatedGroups = renameGroup( overridableProps.groups, groupId, label );\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\t...overridableProps,\n\t\t\t\tgroups: updatedGroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\treturn true;\n}\n","import { __ } from '@wordpress/i18n';\n\nimport { type OverridablePropsGroup } from '../../../types';\n\nexport const ERROR_MESSAGES = {\n\tEMPTY_NAME: __( 'Group name is required', 'elementor' ),\n\tDUPLICATE_NAME: __( 'Group name already exists', 'elementor' ),\n} as const;\n\nexport function validateGroupLabel( label: string, existingGroups: Record< string, OverridablePropsGroup > ): string {\n\tconst trimmedLabel = label.trim();\n\n\tif ( ! trimmedLabel ) {\n\t\treturn ERROR_MESSAGES.EMPTY_NAME;\n\t}\n\n\tconst isDuplicate = Object.values( existingGroups ).some( ( group ) => group.label === trimmedLabel );\n\n\tif ( isDuplicate ) {\n\t\treturn ERROR_MESSAGES.DUPLICATE_NAME;\n\t}\n\n\treturn '';\n}\n","import { type OverridablePropsGroup } from '../../../types';\n\nconst DEFAULT_NEW_GROUP_LABEL = 'New group';\n\nexport function generateUniqueLabel( groups: OverridablePropsGroup[] ): string {\n\tconst existingLabels = new Set( groups.map( ( group ) => group.label ) );\n\n\tif ( ! existingLabels.has( DEFAULT_NEW_GROUP_LABEL ) ) {\n\t\treturn DEFAULT_NEW_GROUP_LABEL;\n\t}\n\n\tlet index = 1;\n\tlet newLabel = `${ DEFAULT_NEW_GROUP_LABEL }-${ index }`;\n\n\twhile ( existingLabels.has( newLabel ) ) {\n\t\tindex++;\n\t\tnewLabel = `${ DEFAULT_NEW_GROUP_LABEL }-${ index }`;\n\t}\n\n\treturn newLabel;\n}\n","import * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { ComponentPropListIcon } from '@elementor/icons';\nimport { Badge, Box, keyframes, styled, ToggleButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const ComponentsBadge = React.forwardRef<\n\tHTMLDivElement,\n\t{ overridablePropsCount: number; onClick: () => void }\n>( ( { overridablePropsCount, onClick }, ref ) => {\n\tconst prevCount = usePrevious( overridablePropsCount );\n\n\tconst isFirstExposedProperty = prevCount === 0 && overridablePropsCount === 1;\n\n\treturn (\n\t\t<StyledBadge\n\t\t\tref={ ref }\n\t\t\tcolor=\"primary\"\n\t\t\tkey={ overridablePropsCount }\n\t\t\tinvisible={ overridablePropsCount === 0 }\n\t\t\tanimate={ isFirstExposedProperty }\n\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\tbadgeContent={\n\t\t\t\t<Box sx={ { animation: ! isFirstExposedProperty ? `${ slideUp } 300ms ease-out` : 'none' } }>\n\t\t\t\t\t{ overridablePropsCount }\n\t\t\t\t</Box>\n\t\t\t}\n\t\t>\n\t\t\t<Tooltip title={ __( 'Component properties', 'elementor' ) }>\n\t\t\t\t<ToggleButton\n\t\t\t\t\tvalue=\"exposed properties\"\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\taria-label={ __( 'Component properties', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<ComponentPropListIcon fontSize=\"tiny\" />\n\t\t\t\t</ToggleButton>\n\t\t\t</Tooltip>\n\t\t</StyledBadge>\n\t);\n} );\n\nconst StyledBadge = styled( Badge, { shouldForwardProp: ( prop ) => prop !== 'animate' } )(\n\t( { theme, animate } ) => ( {\n\t\t'& .MuiBadge-badge': {\n\t\t\tminWidth: theme.spacing( 2 ),\n\t\t\theight: theme.spacing( 2 ),\n\t\t\tminHeight: theme.spacing( 2 ),\n\t\t\tmaxWidth: theme.spacing( 2 ),\n\t\t\tfontSize: theme.typography.caption.fontSize as string,\n\t\t\tanimation: animate ? `${ bounceIn } 300ms ease-out` : 'none',\n\t\t},\n\t} )\n);\n\nfunction usePrevious< T >( value: T ) {\n\tconst ref = useRef< T >( value );\n\tuseEffect( () => {\n\t\tref.current = value;\n\t}, [ value ] );\n\treturn ref.current;\n}\n\nconst bounceIn = keyframes`\n\t0% { transform: scale(0) translate(50%, 50%); opacity: 0; }\n\t70% { transform: scale(1.1) translate(50%, -50%); opacity: 1; }\n\t100% { transform: scale(1) translate(50%, -50%); opacity: 1; }\n`;\n\nconst slideUp = keyframes`\n\tfrom { transform: translateY(100%); opacity: 0; }\n\tto { transform: translateY(0); opacity: 1; }\n`;\n","import * as React from 'react';\nimport { ThemeProvider } from '@elementor/editor-ui';\n\nimport { useComponents } from '../../hooks/use-components';\nimport { isProUser } from '../../utils/is-pro-user';\nimport { ComponentSearch } from './component-search';\nimport { ComponentsList } from './components-list';\nimport { ComponentsProNotification } from './components-pro-notification';\nimport { SearchProvider } from './search-provider';\n\nconst ComponentsContent = () => {\n\tconst { components, isLoading } = useComponents();\n\tconst hasComponents = ! isLoading && components.length > 0;\n\n\treturn (\n\t\t<>\n\t\t\t{ hasComponents && <ComponentSearch /> }\n\t\t\t{ hasComponents && ! isProUser() && <ComponentsProNotification /> }\n\t\t\t<ComponentsList />\n\t\t</>\n\t);\n};\n\nexport const Components = () => {\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<SearchProvider localStorageKey=\"elementor-components-search\">\n\t\t\t\t<ComponentsContent />\n\t\t\t</SearchProvider>\n\t\t</ThemeProvider>\n\t);\n};\n","import { __useSelector as useSelector } from '@elementor/store';\n\nimport { selectComponents, selectLoadIsPending } from '../store/store';\n\nexport const useComponents = () => {\n\tconst components = useSelector( selectComponents );\n\tconst isLoading = useSelector( selectLoadIsPending );\n\n\treturn { components, isLoading };\n};\n","type ExtendedWindow = Window & {\n\telementor?: {\n\t\thelpers?: {\n\t\t\thasPro?: () => boolean;\n\t\t};\n\t};\n\telementorPro?: {\n\t\tconfig?: {\n\t\t\tisActive?: boolean;\n\t\t};\n\t};\n};\n\nexport function isProUser(): boolean {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst hasPro = extendedWindow.elementor?.helpers?.hasPro?.() ?? false;\n\n\tif ( ! hasPro ) {\n\t\treturn false;\n\t}\n\n\tconst isProActive = extendedWindow.elementorPro?.config?.isActive ?? false;\n\n\treturn isProActive;\n}\n","import * as React from 'react';\nimport { SearchIcon } from '@elementor/icons';\nimport { Box, InputAdornment, Stack, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useSearch } from './search-provider';\n\nexport const ComponentSearch = () => {\n\tconst { inputValue, handleChange } = useSearch();\n\n\treturn (\n\t\t<Stack direction=\"row\" gap={ 0.5 } sx={ { width: '100%', px: 2, py: 1.5 } }>\n\t\t\t<Box sx={ { flexGrow: 1 } }>\n\t\t\t\t<TextField\n\t\t\t\t\trole={ 'search' }\n\t\t\t\t\tfullWidth\n\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) => handleChange( e.target.value ) }\n\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t<InputAdornment position=\"start\">\n\t\t\t\t\t\t\t\t<SearchIcon fontSize={ 'tiny' } />\n\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { useSearchState, type UseSearchStateResult } from '@elementor/utils';\n\ntype SearchContextType = Pick< UseSearchStateResult, 'handleChange' | 'inputValue' > & {\n\tsearchValue: UseSearchStateResult[ 'debouncedValue' ];\n\tclearSearch: () => void;\n};\n\nconst SearchContext = createContext< SearchContextType | undefined >( undefined );\n\nexport const SearchProvider = ( {\n\tchildren,\n\tlocalStorageKey,\n}: {\n\tchildren: React.ReactNode;\n\tlocalStorageKey: string;\n} ) => {\n\tconst { debouncedValue, handleChange, inputValue } = useSearchState( { localStorageKey } );\n\n\tconst clearSearch = () => {\n\t\thandleChange( '' );\n\t};\n\n\treturn (\n\t\t<SearchContext.Provider value={ { handleChange, clearSearch, searchValue: debouncedValue, inputValue } }>\n\t\t\t{ children }\n\t\t</SearchContext.Provider>\n\t);\n};\n\nexport const useSearch = () => {\n\tconst context = useContext( SearchContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'useSearch must be used within a SearchProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { getAngieSdk } from '@elementor/editor-mcp';\nimport { AIIcon, ComponentsIcon } from '@elementor/icons';\nimport { Box, Button, Divider, Link, List, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponents } from '../../hooks/use-components';\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\nimport { renameComponent } from '../../store/actions/rename-component';\nimport { AngiePromotionModal } from './angie-promotion-modal';\nimport { ComponentItem } from './components-item';\nimport { LoadingComponents } from './loading-components';\nimport { useSearch } from './search-provider';\n\nconst LEARN_MORE_URL = 'http://go.elementor.com/components-guide-article';\n\n// Override legacy panel CSS reset that sets h1-h6 to font-size:100% and font-weight:normal.\n// See: assets/dev/scss/editor/panel/_reset.scss (applied via :where() selector in panel.scss).\nconst SUBTITLE_OVERRIDE_SX = {\n\tfontSize: '0.875rem !important',\n\tfontWeight: '500 !important',\n};\n\nexport function ComponentsList() {\n\tconst { components, isLoading, searchValue } = useFilteredComponents();\n\n\tif ( isLoading ) {\n\t\treturn <LoadingComponents />;\n\t}\n\tconst isEmpty = ! components || components.length === 0;\n\tif ( isEmpty ) {\n\t\tif ( searchValue.length > 0 ) {\n\t\t\treturn <EmptySearchResult />;\n\t\t}\n\t\treturn <EmptyState />;\n\t}\n\n\treturn (\n\t\t<List sx={ { display: 'flex', flexDirection: 'column', gap: 1, px: 2 } }>\n\t\t\t{ components.map( ( component ) => (\n\t\t\t\t<ComponentItem\n\t\t\t\t\tkey={ component.uid }\n\t\t\t\t\tcomponent={ component }\n\t\t\t\t\trenameComponent={ ( newName ) => {\n\t\t\t\t\t\trenameComponent( component.uid, newName );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</List>\n\t);\n}\n\nconst EmptyState = () => {\n\tconst [ isAngieModalOpen, setIsAngieModalOpen ] = useState( false );\n\n\tconst { canCreate } = useComponentsPermissions();\n\n\tconst handleCreateWithAI = () => {\n\t\tconst sdk = getAngieSdk();\n\n\t\tif ( sdk.isAngieReady() ) {\n\t\t\tsdk.triggerAngie( {\n\t\t\t\tprompt: __(\n\t\t\t\t\t'Create a [hero/testimonial/product card/CTA/feature] component for my [business type]. Include [describe what you want]',\n\t\t\t\t\t'elementor'\n\t\t\t\t),\n\t\t\t\tcontext: { source: 'components-panel-empty-state' },\n\t\t\t} );\n\t\t} else {\n\t\t\tsetIsAngieModalOpen( true );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Stack\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"start\"\n\t\t\theight=\"100%\"\n\t\t\tsx={ { px: 2, py: 4 } }\n\t\t\tgap={ 2 }\n\t\t\toverflow=\"hidden\"\n\t\t>\n\t\t\t<Stack alignItems=\"center\" gap={ 1 }>\n\t\t\t\t<ComponentsIcon fontSize=\"large\" sx={ { color: 'text.secondary' } } />\n\n\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\" sx={ SUBTITLE_OVERRIDE_SX }>\n\t\t\t\t\t{ __( 'No components yet', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"secondary\" sx={ { maxWidth: 200 } }>\n\t\t\t\t\t{ __( 'Components are reusable blocks that sync across your site.', 'elementor' ) }\n\t\t\t\t\t<br />\n\t\t\t\t\t{ canCreate\n\t\t\t\t\t\t? __( 'Create once, use everywhere.', 'elementor' )\n\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t'With your current role, you cannot create components. Contact an administrator to create one.',\n\t\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t ) }\n\t\t\t\t</Typography>\n\t\t\t\t<Link\n\t\t\t\t\thref={ LEARN_MORE_URL }\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\tcolor=\"info.main\"\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Learn more about components', 'elementor' ) }\n\t\t\t\t</Link>\n\t\t\t</Stack>\n\n\t\t\t{ canCreate && (\n\t\t\t\t<>\n\t\t\t\t\t<Divider sx={ { width: '100%' } } />\n\t\t\t\t\t<Stack alignItems=\"center\" gap={ 1 } width=\"100%\">\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ SUBTITLE_OVERRIDE_SX }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create your first one:', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"secondary\" sx={ { maxWidth: 228 } }>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Right-click any div-block or flexbox on your canvas or structure and select \"Create component\"',\n\t\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Typography>\n\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"secondary\">\n\t\t\t\t\t\t\t{ __( 'Or', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\n\t\t\t\t\t\t<AngiePromotionModal open={ isAngieModalOpen } onClose={ () => setIsAngieModalOpen( false ) }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tonClick={ handleCreateWithAI }\n\t\t\t\t\t\t\t\tendIcon={ <AIIcon /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Create component with AI', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</AngiePromotionModal>\n\t\t\t\t\t</Stack>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n\nconst EmptySearchResult = () => {\n\tconst { searchValue, clearSearch } = useSearch();\n\treturn (\n\t\t<Stack\n\t\t\tcolor={ 'text.secondary' }\n\t\t\tpt={ 5 }\n\t\t\talignItems=\"center\"\n\t\t\tgap={ 1 }\n\t\t\toverflow={ 'hidden' }\n\t\t\tjustifySelf={ 'center' }\n\t\t>\n\t\t\t<ComponentsIcon />\n\t\t\t<Box\n\t\t\t\tsx={ {\n\t\t\t\t\twidth: '100%',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"inherit\" sx={ SUBTITLE_OVERRIDE_SX }>\n\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t\t{ searchValue && (\n\t\t\t\t\t<Typography\n\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t...SUBTITLE_OVERRIDE_SX,\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>“</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tmaxWidth: '80%',\n\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span>”.</span>\n\t\t\t\t\t</Typography>\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"inherit\">\n\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"inherit\">\n\t\t\t\t<Link color=\"secondary\" variant=\"caption\" component=\"button\" onClick={ clearSearch }>\n\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t</Link>\n\t\t\t</Typography>\n\t\t</Stack>\n\t);\n};\n\nconst useFilteredComponents = () => {\n\tconst { components, isLoading } = useComponents();\n\tconst { searchValue } = useSearch();\n\n\treturn {\n\t\tcomponents: components.filter( ( component ) =>\n\t\t\tcomponent.name.toLowerCase().includes( searchValue.toLowerCase() )\n\t\t),\n\t\tisLoading,\n\t\tsearchValue,\n\t};\n};\n","import { useCurrentUserCapabilities } from '@elementor/editor-current-user';\n\nexport const useComponentsPermissions = () => {\n\tconst { isAdmin } = useCurrentUserCapabilities();\n\n\treturn {\n\t\tcanCreate: isAdmin,\n\t\tcanEdit: isAdmin,\n\t\tcanDelete: isAdmin,\n\t\tcanRename: isAdmin,\n\t};\n};\n","import { getV1DocumentsManager, setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { getAllDescendants, type V1Element } from '@elementor/editor-elements';\nimport { __dispatch as dispatch } from '@elementor/store';\n\nimport { COMPONENT_WIDGET_TYPE } from '../../create-component-type';\nimport { slice } from '../store';\n\nconst TITLE_EXTERNAL_CHANGE_COMMAND = 'title_external_change';\n\nexport const renameComponent = ( componentUid: string, newName: string ) => {\n\tdispatch( slice.actions.rename( { componentUid, name: newName } ) );\n\n\tsetDocumentModifiedStatus( true );\n\n\trefreshComponentInstanceTitles( componentUid );\n};\n\nfunction refreshComponentInstanceTitles( componentUid: string ) {\n\tconst documentContainer = getDocumentContainer();\n\n\tif ( ! documentContainer ) {\n\t\treturn;\n\t}\n\n\tconst componentInstances = findComponentInstancesByUid( documentContainer, componentUid );\n\n\tcomponentInstances.forEach( ( element ) => {\n\t\telement.model.trigger?.( TITLE_EXTERNAL_CHANGE_COMMAND );\n\t} );\n}\n\nfunction getDocumentContainer(): V1Element | undefined {\n\tconst documentsManager = getV1DocumentsManager();\n\n\treturn documentsManager?.getCurrent()?.container as V1Element | undefined;\n}\n\nfunction findComponentInstancesByUid( documentContainer: V1Element, componentUid: string ): V1Element[] {\n\tconst allDescendants = getAllDescendants( documentContainer );\n\n\treturn allDescendants.filter( ( element ) => {\n\t\tconst widgetType = element.model.get( 'widgetType' );\n\t\tconst editorSettings = element.model.get( 'editor_settings' );\n\n\t\tconst isMatch = widgetType === COMPONENT_WIDGET_TYPE && editorSettings?.component_uid === componentUid;\n\n\t\treturn isMatch;\n\t} );\n}\n","import * as React from 'react';\nimport {\n\tButton,\n\tCard,\n\tCardActions,\n\tCardContent,\n\tCardHeader,\n\tCardMedia,\n\tClickAwayListener,\n\tCloseButton,\n\tInfotip,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst ANGIE_INSTALL_URL = '/wp-admin/plugin-install.php?tab=plugin-information&plugin=angie';\nconst PLACEHOLDER_IMAGE_URL = 'https://assets.elementor.com/packages/v1/images/components-angie-promo.svg';\n\ntype AngiePromotionCardProps = {\n\tonClose: () => void;\n};\n\ntype AngiePromotionModalProps = React.PropsWithChildren< {\n\topen: boolean;\n\tonClose: () => void;\n} >;\n\nexport const AngiePromotionModal = ( { children, open, onClose }: AngiePromotionModalProps ) => {\n\treturn (\n\t\t<Infotip placement=\"right-end\" arrow content={ <AngiePromotionCard onClose={ onClose } /> } open={ open }>\n\t\t\t{ children }\n\t\t</Infotip>\n\t);\n};\n\nfunction AngiePromotionCard( { onClose }: AngiePromotionCardProps ) {\n\tconst handleCtaClick = () => {\n\t\twindow.open( ANGIE_INSTALL_URL, '_blank' );\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<ClickAwayListener disableReactTree mouseEvent=\"onMouseDown\" touchEvent=\"onTouchStart\" onClickAway={ onClose }>\n\t\t\t<Card elevation={ 0 } sx={ { maxWidth: 296 } }>\n\t\t\t\t<CardHeader\n\t\t\t\t\ttitle={ __( 'Add new component with AI', 'elementor' ) }\n\t\t\t\t\ttitleTypographyProps={ { variant: 'subtitle2' } }\n\t\t\t\t\taction={ <CloseButton slotProps={ { icon: { fontSize: 'tiny' } } } onClick={ onClose } /> }\n\t\t\t\t/>\n\t\t\t\t<CardMedia\n\t\t\t\t\tcomponent=\"img\"\n\t\t\t\t\timage={ PLACEHOLDER_IMAGE_URL }\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tsx={ { width: '100%', aspectRatio: '16 / 9' } }\n\t\t\t\t/>\n\t\t\t\t<CardContent>\n\t\t\t\t\t<Typography variant=\"body2\" color=\"text.secondary\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Angie our AI assistant can easily create new components and save you the hassle of doing it yourself',\n\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Typography>\n\t\t\t\t</CardContent>\n\t\t\t\t<CardActions sx={ { justifyContent: 'flex-end' } }>\n\t\t\t\t\t<Button size=\"medium\" variant=\"contained\" color=\"accent\" onClick={ handleCtaClick }>\n\t\t\t\t\t\t{ __( 'Get Angie', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</CardActions>\n\t\t\t</Card>\n\t\t</ClickAwayListener>\n\t);\n}\n","import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { endDragElementFromPanel, startDragElementFromPanel } from '@elementor/editor-canvas';\nimport { dropElement, type DropElementParams, type V1ElementData } from '@elementor/editor-elements';\nimport { EditableField, EllipsisWithTooltip, MenuListItem, useEditable, WarningInfotip } from '@elementor/editor-ui';\nimport { ComponentsIcon, DotsVerticalIcon } from '@elementor/icons';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tListItemButton,\n\tListItemIcon,\n\tMenu,\n\tStack,\n\tstyled,\n\ttype Theme,\n\tTypography,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\nimport { archiveComponent } from '../../store/actions/archive-component';\nimport { loadComponentsAssets } from '../../store/actions/load-components-assets';\nimport { type Component } from '../../types';\nimport { validateComponentName } from '../../utils/component-name-validation';\nimport { getContainerForNewElement } from '../../utils/get-container-for-new-element';\nimport { createComponentModel } from '../create-component-form/utils/replace-element-with-component';\nimport { DeleteConfirmationDialog } from './delete-confirmation-dialog';\n\ntype ComponentItemProps = {\n\tcomponent: Omit< Component, 'id' > & { id?: number };\n\trenameComponent: ( newName: string ) => void;\n};\n\nexport const ComponentItem = ( { component, renameComponent }: ComponentItemProps ) => {\n\tconst itemRef = useRef< HTMLElement >( null );\n\tconst [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );\n\tconst { canRename, canDelete } = useComponentsPermissions();\n\n\tconst shouldShowActions = canRename || canDelete;\n\n\tconst {\n\t\tref: editableRef,\n\t\tisEditing,\n\t\topenEditMode,\n\t\terror,\n\t\tgetProps: getEditableProps,\n\t} = useEditable( {\n\t\tvalue: component.name,\n\t\tonSubmit: renameComponent,\n\t\tvalidation: validateComponentTitle,\n\t} );\n\tconst componentModel = createComponentModel( component );\n\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tdisableAutoFocus: true,\n\t} );\n\n\tconst handleClick = () => {\n\t\taddComponentToPage( componentModel );\n\t};\n\n\tconst handleDragEnd = () => {\n\t\tloadComponentsAssets( [ componentModel as V1ElementData ] );\n\n\t\tendDragElementFromPanel();\n\t};\n\n\tconst handleDeleteClick = () => {\n\t\tsetIsDeleteDialogOpen( true );\n\t\tpopupState.close();\n\t};\n\n\tconst handleDeleteConfirm = () => {\n\t\tif ( ! component.id ) {\n\t\t\tthrow new Error( 'Component ID is required' );\n\t\t}\n\n\t\tsetIsDeleteDialogOpen( false );\n\t\tarchiveComponent( component.id, component.name );\n\t};\n\n\tconst handleDeleteDialogClose = () => {\n\t\tsetIsDeleteDialogOpen( false );\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<WarningInfotip\n\t\t\t\topen={ Boolean( error ) }\n\t\t\t\ttext={ error ?? '' }\n\t\t\t\tplacement=\"bottom\"\n\t\t\t\twidth={ itemRef.current?.getBoundingClientRect().width }\n\t\t\t\toffset={ [ 0, -15 ] }\n\t\t\t>\n\t\t\t\t<ListItemButton\n\t\t\t\t\tdraggable\n\t\t\t\t\tonDragStart={ ( event: React.DragEvent ) => startDragElementFromPanel( componentModel, event ) }\n\t\t\t\t\tonDragEnd={ handleDragEnd }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tref={ itemRef }\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tborder: 'solid 1px',\n\t\t\t\t\t\tborderColor: 'divider',\n\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\tpx: 1,\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tgap: 1,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\tminWidth={ 0 }\n\t\t\t\t\t\tflexGrow={ 1 }\n\t\t\t\t\t\tonClick={ handleClick }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItemIcon size=\"tiny\">\n\t\t\t\t\t\t\t<ComponentsIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t<Indicator isActive={ isEditing } isError={ !! error }>\n\t\t\t\t\t\t\t<Box display=\"flex\" flex={ 1 } minWidth={ 0 } flexGrow={ 1 }>\n\t\t\t\t\t\t\t\t{ isEditing ? (\n\t\t\t\t\t\t\t\t\t<EditableField\n\t\t\t\t\t\t\t\t\t\tref={ editableRef }\n\t\t\t\t\t\t\t\t\t\tas={ Typography }\n\t\t\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\t\t\t{ ...getEditableProps() }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\t\t\t\t\t\ttitle={ component.name }\n\t\t\t\t\t\t\t\t\t\tas={ Typography }\n\t\t\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\t\t\tcolor=\"text.primary\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t</Indicator>\n\t\t\t\t\t</Box>\n\t\t\t\t\t{ shouldShowActions && (\n\t\t\t\t\t\t<IconButton size=\"tiny\" { ...bindTrigger( popupState ) } aria-label=\"More actions\">\n\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t) }\n\t\t\t\t</ListItemButton>\n\t\t\t</WarningInfotip>\n\t\t\t{ shouldShowActions && (\n\t\t\t\t<Menu\n\t\t\t\t\t{ ...bindMenu( popupState ) }\n\t\t\t\t\tanchorOrigin={ {\n\t\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t} }\n\t\t\t\t\ttransformOrigin={ {\n\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ canRename && (\n\t\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\t\tsx={ { minWidth: '160px' } }\n\t\t\t\t\t\t\tprimaryTypographyProps={ { variant: 'caption', color: 'text.primary' } }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tpopupState.close();\n\t\t\t\t\t\t\t\topenEditMode();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Rename', 'elementor' ) }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canDelete && (\n\t\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\t\tsx={ { minWidth: '160px' } }\n\t\t\t\t\t\t\tprimaryTypographyProps={ { variant: 'caption', color: 'error.light' } }\n\t\t\t\t\t\t\tonClick={ handleDeleteClick }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Delete', 'elementor' ) }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) }\n\t\t\t\t</Menu>\n\t\t\t) }\n\t\t\t<DeleteConfirmationDialog\n\t\t\t\topen={ isDeleteDialogOpen }\n\t\t\t\tonClose={ handleDeleteDialogClose }\n\t\t\t\tonConfirm={ handleDeleteConfirm }\n\t\t\t/>\n\t\t</Stack>\n\t);\n};\n\nconst addComponentToPage = ( model: DropElementParams[ 'model' ] ) => {\n\tconst { container, options } = getContainerForNewElement();\n\n\tif ( ! container ) {\n\t\tthrow new Error( `Can't find container to drop new component instance at` );\n\t}\n\n\tloadComponentsAssets( [ model as V1ElementData ] );\n\n\tdropElement( {\n\t\tcontainerId: container.id,\n\t\tmodel,\n\t\toptions: { ...options, useHistory: false, scrollIntoView: true },\n\t} );\n};\n\nconst validateComponentTitle = ( newTitle: string ) => {\n\tconst result = validateComponentName( newTitle );\n\n\tif ( ! result.errorMessage ) {\n\t\treturn null;\n\t}\n\n\treturn result.errorMessage;\n};\n\nconst Indicator = styled( Box, {\n\tshouldForwardProp: ( prop ) => prop !== 'isActive' && prop !== 'isError',\n} )( ( { theme, isActive, isError } ) => ( {\n\tdisplay: 'flex',\n\twidth: '100%',\n\tflexGrow: 1,\n\tborderRadius: theme.spacing( 0.5 ),\n\tborder: getIndicatorBorder( { isActive, isError, theme } ),\n\tpadding: `0 ${ theme.spacing( 1 ) }`,\n\tmarginLeft: isActive ? theme.spacing( 1 ) : 0,\n\tminWidth: 0,\n} ) );\n\nconst getIndicatorBorder = ( { isActive, isError, theme }: { isActive: boolean; isError: boolean; theme: Theme } ) => {\n\tif ( isError ) {\n\t\treturn `2px solid ${ theme.palette.error.main }`;\n\t}\n\n\tif ( isActive ) {\n\t\treturn `2px solid ${ theme.palette.secondary.main }`;\n\t}\n\n\treturn 'none';\n};\n","import { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { __dispatch as dispatch } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { slice } from '../store';\n\nconst successNotification = ( componentId: number, componentName: string ): NotificationData => ( {\n\ttype: 'success',\n\t/* translators: %s: component name */\n\tmessage: __( 'Successfully deleted component %s', 'elementor' ).replace( '%s', componentName ),\n\tid: `success-archived-components-notification-${ componentId }`,\n} );\n\nexport const archiveComponent = ( componentId: number, componentName: string ) => {\n\tdispatch( slice.actions.archive( componentId ) );\n\tsetDocumentModifiedStatus( true );\n\tnotify( successNotification( componentId, componentName ) );\n};\n","import { isDocumentDirty, setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\n\nimport { getComponentDocumentData } from '../../utils/component-document-data';\nimport { getComponentIds } from '../../utils/get-component-ids';\nimport { loadComponentsOverridableProps } from './load-components-overridable-props';\nimport { loadComponentsStyles } from './load-components-styles';\n\nexport async function loadComponentsAssets( elements: V1ElementData[] ) {\n\tconst componentIds = await getComponentIds( elements );\n\n\treturn Promise.all( [\n\t\tupdateDocumentState( componentIds ),\n\t\tloadComponentsOverridableProps( componentIds ),\n\t\tloadComponentsStyles( componentIds ),\n\t] );\n}\n\nasync function updateDocumentState( componentIds: number[] ) {\n\tconst components = ( await Promise.all( componentIds.map( getComponentDocumentData ) ) ).filter(\n\t\t( document ) => !! document\n\t);\n\n\tconst isDrafted = components.some( isDocumentDirty );\n\n\tif ( isDrafted ) {\n\t\tsetDocumentModifiedStatus( true );\n\t}\n}\n","import { type V1ElementData } from '@elementor/editor-elements';\n\nimport { type ComponentInstanceProp } from '../prop-types/component-instance-prop-type';\nimport { getComponentDocumentData } from './component-document-data';\nimport { isComponentInstance } from './is-component-instance';\n\nexport const getComponentIds = async ( elements: V1ElementData[] ): Promise< number[] > => {\n\tconst components = elements.map( async ( { widgetType, elType, elements: childElements, settings } ) => {\n\t\tconst ids: number[] = [];\n\n\t\tconst isComponent = isComponentInstance( { widgetType, elType } );\n\n\t\tif ( isComponent ) {\n\t\t\tconst componentId = ( settings?.component_instance as ComponentInstanceProp )?.value?.component_id.value;\n\n\t\t\tif ( ! componentId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst document = await getComponentDocumentData( componentId );\n\n\t\t\tchildElements = document?.elements;\n\n\t\t\tif ( Boolean( componentId ) ) {\n\t\t\t\tids.push( componentId );\n\t\t\t}\n\t\t}\n\n\t\tif ( !! childElements?.length ) {\n\t\t\tconst newIds = await getComponentIds( childElements );\n\n\t\t\tids.push( ...Array.from( new Set( newIds ) ) );\n\t\t}\n\n\t\treturn ids;\n\t} );\n\n\tconst result = ( await Promise.all( components ) ).flat();\n\n\treturn Array.from( new Set( result ) ).filter( ( value ) => value !== undefined );\n};\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../../api';\nimport { selectIsOverridablePropsLoaded, slice } from '../store';\n\nexport function loadComponentsOverridableProps( componentIds: number[] ) {\n\tif ( ! componentIds.length ) {\n\t\treturn;\n\t}\n\n\tcomponentIds.forEach( loadComponentOverrides );\n}\n\nasync function loadComponentOverrides( componentId: number ) {\n\tconst isOverridablePropsLoaded = selectIsOverridablePropsLoaded( getState(), componentId );\n\n\tif ( isOverridablePropsLoaded ) {\n\t\treturn;\n\t}\n\n\tconst overridableProps = await apiClient.getOverridableProps( componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps,\n\t\t} )\n\t);\n}\n","import { type V1ElementData } from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../../api';\nimport { type ComponentId } from '../../types';\nimport { selectStyles, slice } from '../store';\n\nexport async function loadComponentsStyles( componentIds: number[] ) {\n\tif ( ! componentIds.length ) {\n\t\treturn;\n\t}\n\n\tconst knownComponents = selectStyles( getState() );\n\tconst unknownComponentIds = componentIds.filter( ( id ) => ! knownComponents[ id ] );\n\n\tif ( ! unknownComponentIds.length ) {\n\t\treturn;\n\t}\n\n\tawait addComponentStyles( unknownComponentIds );\n}\n\nasync function addComponentStyles( ids: ComponentId[] ) {\n\tconst newComponents = await loadStyles( ids );\n\n\taddStyles( newComponents );\n}\n\nasync function loadStyles( ids: number[] ): Promise< [ number, V1ElementData ][] > {\n\treturn Promise.all( ids.map( async ( id ) => [ id, await apiClient.getComponentConfig( id ) ] ) );\n}\n\nfunction addStyles( data: ( readonly [ ComponentId, V1ElementData ] )[] ) {\n\tconst styles = Object.fromEntries(\n\t\tdata.map( ( [ componentId, componentData ] ) => [ componentId, extractStyles( componentData ) ] )\n\t);\n\n\tdispatch( slice.actions.addStyles( styles ) );\n}\n\nfunction extractStyles( element: V1ElementData ): Array< StyleDefinition > {\n\treturn [ ...Object.values( element.styles ?? {} ), ...( element.elements ?? [] ).flatMap( extractStyles ) ];\n}\n","import { __getState as getState } from '@elementor/store';\n\nimport { createSubmitComponentSchema } from '../components/create-component-form/utils/component-form-schema';\nimport { selectComponents } from '../store/store';\n\ntype ValidationResult = { isValid: true; errorMessage: null } | { isValid: false; errorMessage: string };\n\nexport function validateComponentName( label: string ): ValidationResult {\n\tconst existingComponentTitles = selectComponents( getState() )?.map( ( { name } ) => name ) ?? [];\n\tconst schema = createSubmitComponentSchema( existingComponentTitles );\n\tconst result = schema.safeParse( { componentName: label.toLowerCase() } );\n\n\tif ( result.success ) {\n\t\treturn {\n\t\t\tisValid: true,\n\t\t\terrorMessage: null,\n\t\t};\n\t}\n\n\tconst formattedErrors = result.error.format();\n\tconst errorMessage = formattedErrors.componentName?._errors[ 0 ] ?? formattedErrors._errors[ 0 ];\n\n\treturn {\n\t\tisValid: false,\n\t\terrorMessage,\n\t};\n}\n","import { z } from '@elementor/schema';\nimport { __ } from '@wordpress/i18n';\n\nexport const MIN_NAME_LENGTH = 2;\nconst MAX_NAME_LENGTH = 50;\n\nconst baseComponentSchema = z\n\t.string()\n\t.trim()\n\t.max( MAX_NAME_LENGTH, __( 'Component name is too long. Please keep it under 50 characters.', 'elementor' ) );\n\nexport const createBaseComponentSchema = ( existingNames: string[] ) => {\n\treturn z.object( {\n\t\tcomponentName: baseComponentSchema.refine( ( value ) => ! existingNames.includes( value ), {\n\t\t\tmessage: __( 'Component name already exists', 'elementor' ),\n\t\t} ),\n\t} );\n};\n\nexport const createSubmitComponentSchema = ( existingNames: string[] ) => {\n\tconst baseSchema = createBaseComponentSchema( existingNames );\n\n\treturn baseSchema.extend( {\n\t\tcomponentName: baseSchema.shape.componentName\n\t\t\t.refine( ( value ) => value.length > 0, {\n\t\t\t\tmessage: __( 'Component name is required.', 'elementor' ),\n\t\t\t} )\n\t\t\t.refine( ( value ) => value.length >= MIN_NAME_LENGTH, {\n\t\t\t\tmessage: __( 'Component name is too short. Please enter at least 2 characters.', 'elementor' ),\n\t\t\t} ),\n\t} );\n};\n","import {\n\tgetContainer,\n\tgetCurrentDocumentContainer,\n\tgetSelectedElements,\n\ttype V1Element,\n} from '@elementor/editor-elements';\n\nexport const getContainerForNewElement = (): { container: V1Element | null; options?: { at: number } } => {\n\tconst currentDocumentContainer = getCurrentDocumentContainer();\n\tconst selectedElement = getSelectedElementContainer();\n\n\tlet container, options;\n\n\tif ( selectedElement ) {\n\t\tswitch ( selectedElement.model.get( 'elType' ) ) {\n\t\t\tcase 'widget': {\n\t\t\t\tcontainer = selectedElement?.parent;\n\n\t\t\t\tconst selectedElIndex = selectedElement.view?._index ?? -1;\n\n\t\t\t\tif ( selectedElIndex > -1 ) {\n\t\t\t\t\toptions = { at: selectedElIndex + 1 };\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'section': {\n\t\t\t\tcontainer = selectedElement?.children?.[ 0 ];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tcontainer = selectedElement;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { container: container ?? currentDocumentContainer, options };\n};\n\nfunction getSelectedElementContainer() {\n\tconst selectedElements = getSelectedElements();\n\n\tif ( selectedElements.length !== 1 ) {\n\t\treturn undefined;\n\t}\n\n\treturn getContainer( selectedElements[ 0 ].id );\n}\n","import { replaceElement, type V1ElementData, type V1ElementModelProps } from '@elementor/editor-elements';\n\ntype ComponentInstanceParams = {\n\tid?: number;\n\tname: string;\n\tuid: string;\n};\n\nexport const replaceElementWithComponent = async ( element: V1ElementData, component: ComponentInstanceParams ) => {\n\treturn await replaceElement( {\n\t\tcurrentElement: element,\n\t\tnewElement: createComponentModel( component ),\n\t\twithHistory: false,\n\t} );\n};\n\nexport const createComponentModel = ( component: ComponentInstanceParams ): Omit< V1ElementModelProps, 'id' > => {\n\treturn {\n\t\telType: 'widget',\n\t\twidgetType: 'e-component',\n\t\tsettings: {\n\t\t\tcomponent_instance: {\n\t\t\t\t$$type: 'component-instance',\n\t\t\t\tvalue: {\n\t\t\t\t\tcomponent_id: {\n\t\t\t\t\t\t$$type: 'number',\n\t\t\t\t\t\tvalue: component.id ?? component.uid,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\teditor_settings: {\n\t\t\tcomponent_uid: component.uid,\n\t\t},\n\t};\n};\n","import * as React from 'react';\nimport { ConfirmationDialog } from '@elementor/editor-ui';\nimport { __ } from '@wordpress/i18n';\n\ntype DeleteConfirmationDialogProps = {\n\topen: boolean;\n\tonClose: () => void;\n\tonConfirm: () => void;\n};\n\nexport function DeleteConfirmationDialog( { open, onClose, onConfirm }: DeleteConfirmationDialogProps ) {\n\treturn (\n\t\t<ConfirmationDialog open={ open } onClose={ onClose }>\n\t\t\t<ConfirmationDialog.Title>{ __( 'Delete this component?', 'elementor' ) }</ConfirmationDialog.Title>\n\t\t\t<ConfirmationDialog.Content>\n\t\t\t\t<ConfirmationDialog.ContentText>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Existing instances on your pages will remain functional. You will no longer find this component in your list.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmationDialog.ContentText>\n\t\t\t</ConfirmationDialog.Content>\n\t\t\t<ConfirmationDialog.Actions onClose={ onClose } onConfirm={ onConfirm } />\n\t\t</ConfirmationDialog>\n\t);\n}\n","import * as React from 'react';\nimport { Box, ListItemButton, Skeleton, Stack } from '@elementor/ui';\nconst ROWS_COUNT = 6;\n\nconst rows = Array.from( { length: ROWS_COUNT }, ( _, index ) => index );\n\nexport const LoadingComponents = () => {\n\treturn (\n\t\t<Stack\n\t\t\taria-label=\"Loading components\"\n\t\t\tgap={ 1 }\n\t\t\tsx={ {\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tposition: 'relative',\n\t\t\t\tmaxHeight: '300px',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\t'&:after': {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tcontent: '\"\"',\n\t\t\t\t\tleft: 0,\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '300px',\n\t\t\t\t\tbackground: 'linear-gradient(to top, white, transparent)',\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t},\n\t\t\t} }\n\t\t>\n\t\t\t{ rows.map( ( row ) => (\n\t\t\t\t<ListItemButton\n\t\t\t\t\tkey={ row }\n\t\t\t\t\tsx={ { border: 'solid 1px', borderColor: 'divider', py: 0.5, px: 1 } }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t>\n\t\t\t\t\t<Box display=\"flex\" gap={ 1 } width=\"100%\">\n\t\t\t\t\t\t<Skeleton variant=\"text\" width={ '24px' } height={ '36px' } />\n\t\t\t\t\t\t<Skeleton variant=\"text\" width={ '100%' } height={ '36px' } />\n\t\t\t\t\t</Box>\n\t\t\t\t</ListItemButton>\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { InfoAlert } from '@elementor/editor-ui';\nimport { Box, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport function ComponentsProNotification() {\n\treturn (\n\t\t<Box sx={ { px: 2 } }>\n\t\t\t<InfoAlert>\n\t\t\t\t<Typography variant=\"caption\" component=\"span\">\n\t\t\t\t\t<Typography variant=\"caption\" component=\"span\" fontWeight=\"bold\">\n\t\t\t\t\t\t{ __( 'Try Components for free:', 'elementor' ) }\n\t\t\t\t\t</Typography>{ ' ' }\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Soon Components will be part of the Pro subscription, but what you create now will remain on your site.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t</Typography>\n\t\t\t</InfoAlert>\n\t\t</Box>\n\t);\n}\n","export const COMPONENT_DOCUMENT_TYPE = 'elementor_component';\nexport const OVERRIDABLE_PROP_REPLACEMENT_ID = 'overridable-prop';\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { getElementLabel, type V1ElementData } from '@elementor/editor-elements';\nimport { notify } from '@elementor/editor-notifications';\nimport { Form as FormElement, ThemeProvider } from '@elementor/editor-ui';\nimport { ComponentsIcon } from '@elementor/icons';\nimport { __getState as getState } from '@elementor/store';\nimport { Button, FormLabel, Grid, Popover, Stack, TextField, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponents } from '../../hooks/use-components';\nimport { findNonAtomicElementsInElement } from '../../prevent-non-atomic-nesting';\nimport { createUnpublishedComponent } from '../../store/actions/create-unpublished-component';\nimport { selectComponentByUid } from '../../store/store';\nimport { type ComponentFormValues, type PublishedComponent } from '../../types';\nimport { switchToComponent } from '../../utils/switch-to-component';\nimport { trackComponentEvent } from '../../utils/tracking';\nimport { useForm } from './hooks/use-form';\nimport { createBaseComponentSchema, createSubmitComponentSchema } from './utils/component-form-schema';\nimport {\n\ttype ComponentEventData,\n\ttype ContextMenuEventOptions,\n\tgetComponentEventData,\n} from './utils/get-component-event-data';\n\ntype SaveAsComponentEventData = {\n\telement: V1ElementData;\n\tanchorPosition: { top: number; left: number };\n\toptions?: ContextMenuEventOptions;\n};\n\nexport function CreateComponentForm() {\n\tconst [ element, setElement ] = useState< {\n\t\telement: V1ElementData;\n\t\telementLabel: string;\n\t} | null >( null );\n\n\tconst [ anchorPosition, setAnchorPosition ] = useState< { top: number; left: number } >();\n\n\tconst eventData = useRef< ComponentEventData | null >( null );\n\n\tuseEffect( () => {\n\t\tconst OPEN_SAVE_AS_COMPONENT_FORM_EVENT = 'elementor/editor/open-save-as-component-form';\n\n\t\tconst openPopup = ( event: CustomEvent< SaveAsComponentEventData > ) => {\n\t\t\tconst nonAtomicElements = findNonAtomicElementsInElement( event.detail.element );\n\n\t\t\tif ( nonAtomicElements.length > 0 ) {\n\t\t\t\tnotify( {\n\t\t\t\t\ttype: 'default',\n\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t'Components require atomic elements only. Remove widgets to create this component.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t),\n\t\t\t\t\tid: 'non-atomic-element-save-blocked',\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetElement( { element: event.detail.element, elementLabel: getElementLabel( event.detail.element.id ) } );\n\t\t\tsetAnchorPosition( event.detail.anchorPosition );\n\n\t\t\teventData.current = getComponentEventData( event.detail.element, event.detail.options );\n\t\t\ttrackComponentEvent( {\n\t\t\t\taction: 'createClicked',\n\t\t\t\tsource: 'user',\n\t\t\t\t...eventData.current,\n\t\t\t} );\n\t\t};\n\n\t\twindow.addEventListener( OPEN_SAVE_AS_COMPONENT_FORM_EVENT, openPopup as EventListener );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( OPEN_SAVE_AS_COMPONENT_FORM_EVENT, openPopup as EventListener );\n\t\t};\n\t}, [] );\n\n\tconst handleSave = async ( values: ComponentFormValues ) => {\n\t\ttry {\n\t\t\tif ( ! element ) {\n\t\t\t\tthrow new Error( `Can't save element as component: element not found` );\n\t\t\t}\n\n\t\t\tconst { uid, instanceId } = await createUnpublishedComponent( {\n\t\t\t\tname: values.componentName,\n\t\t\t\telement: element.element,\n\t\t\t\teventData: eventData.current,\n\t\t\t\tsource: 'user',\n\t\t\t} );\n\n\t\t\tconst publishedComponentId = ( selectComponentByUid( getState(), uid ) as PublishedComponent )?.id;\n\n\t\t\tif ( publishedComponentId ) {\n\t\t\t\tswitchToComponent( publishedComponentId, instanceId );\n\t\t\t} else {\n\t\t\t\tthrow new Error( 'Failed to find published component' );\n\t\t\t}\n\n\t\t\tnotify( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Component created successfully.', 'elementor' ),\n\t\t\t\tid: `component-saved-successfully-${ uid }`,\n\t\t\t} );\n\n\t\t\tresetAndClosePopup();\n\t\t} catch {\n\t\t\tconst errorMessage = __( 'Failed to create component. Please try again.', 'elementor' );\n\t\t\tnotify( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: errorMessage,\n\t\t\t\tid: 'component-save-failed',\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst resetAndClosePopup = () => {\n\t\tsetElement( null );\n\t\tsetAnchorPosition( undefined );\n\t};\n\n\tconst cancelSave = () => {\n\t\tresetAndClosePopup();\n\n\t\ttrackComponentEvent( {\n\t\t\taction: 'createCancelled',\n\t\t\tsource: 'user',\n\t\t\t...eventData.current,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<Popover\n\t\t\t\topen={ element !== null }\n\t\t\t\tonClose={ cancelSave }\n\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\tanchorPosition={ anchorPosition }\n\t\t\t>\n\t\t\t\t{ element !== null && (\n\t\t\t\t\t<Form\n\t\t\t\t\t\tinitialValues={ { componentName: element.elementLabel } }\n\t\t\t\t\t\thandleSave={ handleSave }\n\t\t\t\t\t\tclosePopup={ cancelSave }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Popover>\n\t\t</ThemeProvider>\n\t);\n}\n\nconst FONT_SIZE = 'tiny';\n\nconst Form = ( {\n\tinitialValues,\n\thandleSave,\n\tclosePopup,\n}: {\n\tinitialValues: ComponentFormValues;\n\thandleSave: ( values: ComponentFormValues ) => void;\n\tclosePopup: () => void;\n} ) => {\n\tconst { values, errors, isValid, handleChange, validateForm } = useForm< ComponentFormValues >( initialValues );\n\n\tconst { components } = useComponents();\n\n\tconst existingComponentNames = useMemo( () => {\n\t\treturn components?.map( ( component ) => component.name ) ?? [];\n\t}, [ components ] );\n\n\tconst changeValidationSchema = useMemo(\n\t\t() => createBaseComponentSchema( existingComponentNames ),\n\t\t[ existingComponentNames ]\n\t);\n\tconst submitValidationSchema = useMemo(\n\t\t() => createSubmitComponentSchema( existingComponentNames ),\n\t\t[ existingComponentNames ]\n\t);\n\n\tconst handleSubmit = () => {\n\t\tconst { success, parsedValues } = validateForm( submitValidationSchema );\n\n\t\tif ( success ) {\n\t\t\thandleSave( parsedValues );\n\t\t}\n\t};\n\n\tconst texts = {\n\t\theading: __( 'Create component', 'elementor' ),\n\t\tname: __( 'Name', 'elementor' ),\n\t\tcancel: __( 'Cancel', 'elementor' ),\n\t\tcreate: __( 'Create', 'elementor' ),\n\t};\n\n\tconst nameInputId = 'component-name';\n\n\treturn (\n\t\t<FormElement onSubmit={ handleSubmit }>\n\t\t\t<Stack alignItems=\"start\" width=\"268px\">\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tpy={ 1 }\n\t\t\t\t\tpx={ 1.5 }\n\t\t\t\t\tsx={ { columnGap: 0.5, borderBottom: '1px solid', borderColor: 'divider', width: '100%' } }\n\t\t\t\t>\n\t\t\t\t\t<ComponentsIcon fontSize={ FONT_SIZE } />\n\t\t\t\t\t<Typography variant=\"caption\" sx={ { color: 'text.primary', fontWeight: '500', lineHeight: 1 } }>\n\t\t\t\t\t\t{ texts.heading }\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"start\" p={ 1.5 }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<FormLabel htmlFor={ nameInputId } size=\"tiny\">\n\t\t\t\t\t\t\t{ texts.name }\n\t\t\t\t\t\t</FormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\tid={ nameInputId }\n\t\t\t\t\t\t\tsize={ FONT_SIZE }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tvalue={ values.componentName }\n\t\t\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) =>\n\t\t\t\t\t\t\t\thandleChange( e, 'componentName', changeValidationSchema )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinputProps={ { style: { color: 'text.primary', fontWeight: '600' } } }\n\t\t\t\t\t\t\terror={ Boolean( errors.componentName ) }\n\t\t\t\t\t\t\thelperText={ errors.componentName }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Stack direction=\"row\" justifyContent=\"flex-end\" alignSelf=\"end\" py={ 1 } px={ 1.5 }>\n\t\t\t\t\t<Button onClick={ closePopup } color=\"secondary\" variant=\"text\" size=\"small\">\n\t\t\t\t\t\t{ texts.cancel }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button type=\"submit\" disabled={ ! isValid } variant=\"contained\" color=\"primary\" size=\"small\">\n\t\t\t\t\t\t{ texts.create }\n\t\t\t\t\t</Button>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</FormElement>\n\t);\n};\n","import { isAtomicWidget } from '@elementor/editor-canvas';\nimport { getAllDescendants, getElementType, type V1Element } from '@elementor/editor-elements';\nimport { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\nimport { __getStore as getStore } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { type ComponentsSlice, selectCurrentComponentId } from './store/store';\nimport { type ExtendedWindow } from './types';\n\ntype CreateArgs = {\n\tcontainer?: V1Element;\n\tmodel?: {\n\t\telType?: string;\n\t\twidgetType?: string;\n\t};\n};\n\ntype MoveArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\ttarget?: V1Element;\n};\n\ntype PasteArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\tstorageType?: string;\n};\n\nexport type ClipboardElement = {\n\telType?: string;\n\twidgetType?: string;\n\telements?: ClipboardElement[];\n};\n\ntype StorageContent = {\n\tclipboard?: {\n\t\telements?: ClipboardElement[];\n\t};\n};\n\nconst NON_ATOMIC_ELEMENT_ALERT: NotificationData = {\n\ttype: 'default',\n\tmessage: __( \"This widget isn't compatible with components. Use atomic elements instead.\", 'elementor' ),\n\tid: 'non-atomic-element-blocked',\n};\n\nexport function initNonAtomicNestingPrevention() {\n\tblockCommand( {\n\t\tcommand: 'document/elements/create',\n\t\tcondition: blockNonAtomicCreate,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/move',\n\t\tcondition: blockNonAtomicMove,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste',\n\t\tcondition: blockNonAtomicPaste,\n\t} );\n}\n\nfunction isEditingComponent(): boolean {\n\tconst state = getStore()?.getState() as ComponentsSlice | undefined;\n\n\tif ( ! state ) {\n\t\treturn false;\n\t}\n\n\treturn selectCurrentComponentId( state ) !== null;\n}\n\nexport function isElementAtomic( elementType: string ): boolean {\n\treturn getElementType( elementType ) !== null;\n}\n\nfunction blockNonAtomicCreate( args: CreateArgs ): boolean {\n\tif ( ! isEditingComponent() ) {\n\t\treturn false;\n\t}\n\n\tconst { model } = args;\n\tconst elementType = model?.widgetType || model?.elType;\n\n\tif ( ! elementType ) {\n\t\treturn false;\n\t}\n\n\tif ( isElementAtomic( elementType ) ) {\n\t\treturn false;\n\t}\n\n\tnotify( NON_ATOMIC_ELEMENT_ALERT );\n\treturn true;\n}\n\nfunction blockNonAtomicMove( args: MoveArgs ): boolean {\n\tif ( ! isEditingComponent() ) {\n\t\treturn false;\n\t}\n\n\tconst { containers = [ args.container ] } = args;\n\n\tconst hasNonAtomicElement = containers.some( ( container ) => {\n\t\tif ( ! container ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst allElements = getAllDescendants( container );\n\n\t\treturn allElements.some( ( element ) => ! isAtomicWidget( element ) );\n\t} );\n\n\tif ( hasNonAtomicElement ) {\n\t\tnotify( NON_ATOMIC_ELEMENT_ALERT );\n\t}\n\n\treturn hasNonAtomicElement;\n}\n\nfunction blockNonAtomicPaste( args: PasteArgs ): boolean {\n\tif ( ! isEditingComponent() ) {\n\t\treturn false;\n\t}\n\n\tconst { storageType } = args;\n\n\tif ( storageType !== 'localstorage' ) {\n\t\treturn false;\n\t}\n\n\tconst data = (\n\t\twindow as unknown as ExtendedWindow & { elementorCommon?: { storage?: { get: () => StorageContent } } }\n\t )?.elementorCommon?.storage?.get();\n\n\tif ( ! data?.clipboard?.elements ) {\n\t\treturn false;\n\t}\n\n\tconst hasNonAtomicElement = hasNonAtomicElementsInTree( data.clipboard.elements );\n\n\tif ( hasNonAtomicElement ) {\n\t\tnotify( NON_ATOMIC_ELEMENT_ALERT );\n\t}\n\n\treturn hasNonAtomicElement;\n}\n\nexport function hasNonAtomicElementsInTree( elements: ClipboardElement[] ): boolean {\n\tfor ( const element of elements ) {\n\t\tconst elementType = element.widgetType || element.elType;\n\n\t\tif ( elementType && ! isElementAtomic( elementType ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( element.elements?.length ) {\n\t\t\tif ( hasNonAtomicElementsInTree( element.elements ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\nexport function findNonAtomicElements( elements: ClipboardElement[] ): string[] {\n\tconst nonAtomicElements: string[] = [];\n\n\tfor ( const element of elements ) {\n\t\tconst elementType = element.widgetType || element.elType;\n\n\t\tif ( elementType && ! isElementAtomic( elementType ) ) {\n\t\t\tnonAtomicElements.push( elementType );\n\t\t}\n\n\t\tif ( element.elements?.length ) {\n\t\t\tnonAtomicElements.push( ...findNonAtomicElements( element.elements ) );\n\t\t}\n\t}\n\n\treturn [ ...new Set( nonAtomicElements ) ];\n}\n\ntype V1ElementLike = {\n\telType?: string;\n\twidgetType?: string;\n\telements?: V1ElementLike[];\n};\n\nexport function findNonAtomicElementsInElement( element: V1ElementLike ): string[] {\n\tconst nonAtomicElements: string[] = [];\n\tconst elementType = element.widgetType || element.elType;\n\n\tif ( elementType && ! isElementAtomic( elementType ) ) {\n\t\tnonAtomicElements.push( elementType );\n\t}\n\n\tif ( element.elements?.length ) {\n\t\tfor ( const child of element.elements ) {\n\t\t\tnonAtomicElements.push( ...findNonAtomicElementsInElement( child ) );\n\t\t}\n\t}\n\n\treturn [ ...new Set( nonAtomicElements ) ];\n}\n","import { type V1ElementData } from '@elementor/editor-elements';\nimport { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch } from '@elementor/store';\nimport { generateUniqueId } from '@elementor/utils';\n\nimport { type ComponentEventData } from '../../components/create-component-form/utils/get-component-event-data';\nimport { replaceElementWithComponent } from '../../components/create-component-form/utils/replace-element-with-component';\nimport { type OverridableProps } from '../../types';\nimport { type Source, trackComponentEvent } from '../../utils/tracking';\nimport { slice } from '../store';\n\ntype CreateUnpublishedComponentParams = {\n\tname: string;\n\telement: V1ElementData;\n\teventData: ComponentEventData | null;\n\tuid?: string | null;\n\toverridableProps?: OverridableProps;\n\tsource: Source;\n};\n\nexport async function createUnpublishedComponent( {\n\tname,\n\telement,\n\teventData,\n\tuid,\n\toverridableProps,\n\tsource,\n}: CreateUnpublishedComponentParams ): Promise< { uid: string; instanceId: string } > {\n\tconst generatedUid = uid ?? generateUniqueId( 'component' );\n\tconst componentBase = { uid: generatedUid, name };\n\n\tdispatch(\n\t\tslice.actions.addUnpublished( {\n\t\t\t...componentBase,\n\t\t\telements: [ element ],\n\t\t\toverridableProps,\n\t\t} )\n\t);\n\n\tdispatch( slice.actions.addCreatedThisSession( generatedUid ) );\n\n\tconst componentInstance = await replaceElementWithComponent( element, componentBase );\n\n\ttrackComponentEvent( {\n\t\taction: 'created',\n\t\tsource,\n\t\tcomponent_uid: generatedUid,\n\t\tcomponent_name: name,\n\t\t...eventData,\n\t} );\n\n\tawait runCommand( 'document/save/auto' );\n\n\treturn { uid: generatedUid, instanceId: componentInstance.id };\n}\n","import { useMemo, useState } from 'react';\nimport { type z } from '@elementor/schema';\n\nexport const useForm = < TValues extends Record< string, unknown > >( initialValues: TValues ) => {\n\tconst [ values, setValues ] = useState< TValues >( initialValues );\n\tconst [ errors, setErrors ] = useState< Partial< Record< keyof TValues, string > > >( {} );\n\n\tconst isValid = useMemo( () => {\n\t\treturn ! Object.values( errors ).some( ( error ) => error );\n\t}, [ errors ] );\n\n\tconst handleChange = (\n\t\te: React.ChangeEvent< HTMLInputElement >,\n\t\tfield: keyof TValues,\n\t\tvalidationSchema: z.ZodType< TValues >\n\t) => {\n\t\tconst updated = { ...values, [ field ]: e.target.value };\n\t\tsetValues( updated );\n\n\t\tconst { success, errors: validationErrors } = validateForm( updated, validationSchema );\n\n\t\tif ( ! success ) {\n\t\t\tsetErrors( validationErrors );\n\t\t} else {\n\t\t\tsetErrors( {} );\n\t\t}\n\t};\n\n\tconst validate = (\n\t\tvalidationSchema: z.ZodType< TValues >\n\t): { success: true; parsedValues: TValues } | { success: false; parsedValues?: never } => {\n\t\tconst { success, errors: validationErrors, parsedValues } = validateForm( values, validationSchema );\n\n\t\tif ( ! success ) {\n\t\t\tsetErrors( validationErrors );\n\t\t\treturn { success };\n\t\t}\n\t\tsetErrors( {} );\n\t\treturn { success, parsedValues };\n\t};\n\n\treturn {\n\t\tvalues,\n\t\terrors,\n\t\tisValid,\n\t\thandleChange,\n\t\tvalidateForm: validate,\n\t};\n};\n\nconst validateForm = < TValues extends Record< string, unknown > >(\n\tvalues: TValues,\n\tschema: z.ZodType< TValues >\n):\n\t| { success: false; parsedValues?: never; errors: Partial< Record< keyof TValues, string > > }\n\t| { success: true; parsedValues: TValues; errors?: never } => {\n\tconst result = schema.safeParse( values );\n\n\tif ( result.success ) {\n\t\treturn { success: true, parsedValues: result.data };\n\t}\n\n\tconst errors = {} as Partial< Record< keyof TValues, string > >;\n\n\t( Object.entries( result.error.formErrors.fieldErrors ) as Array< [ keyof TValues, string[] ] > ).forEach(\n\t\t( [ field, error ] ) => {\n\t\t\terrors[ field ] = error[ 0 ];\n\t\t}\n\t);\n\n\treturn { success: false, errors };\n};\n","import { type V1ElementData } from '@elementor/editor-elements';\n\nexport type ComponentEventData = {\n\tnested_elements_count: number;\n\tnested_components_count: number;\n\ttop_element_type: string;\n\tlocation?: string;\n\tsecondary_location?: string;\n\ttrigger?: string;\n};\n\nexport type ContextMenuEventOptions = Record< string, unknown > & {\n\tlocation: string;\n\tsecondaryLocation: string;\n\ttrigger: string;\n};\n\nexport const getComponentEventData = (\n\tcontainerElement: V1ElementData,\n\toptions?: ContextMenuEventOptions\n): ComponentEventData => {\n\tconst { elementsCount, componentsCount } = countNestedElements( containerElement );\n\n\treturn {\n\t\tnested_elements_count: elementsCount,\n\t\tnested_components_count: componentsCount,\n\t\ttop_element_type: containerElement.elType,\n\t\tlocation: options?.location,\n\t\tsecondary_location: options?.secondaryLocation,\n\t\ttrigger: options?.trigger,\n\t};\n};\n\nfunction countNestedElements( container: V1ElementData ): { elementsCount: number; componentsCount: number } {\n\tif ( ! container.elements || container.elements.length === 0 ) {\n\t\treturn { elementsCount: 0, componentsCount: 0 };\n\t}\n\n\tlet elementsCount = container.elements.length;\n\tlet componentsCount = 0;\n\n\tfor ( const element of container.elements ) {\n\t\tif ( element.widgetType === 'e-component' ) {\n\t\t\tcomponentsCount++;\n\t\t}\n\n\t\tconst { elementsCount: nestedElementsCount, componentsCount: nestedComponentsCount } =\n\t\t\tcountNestedElements( element );\n\t\telementsCount += nestedElementsCount;\n\t\tcomponentsCount += nestedComponentsCount;\n\t}\n\n\treturn { elementsCount, componentsCount };\n}\n","import * as React from 'react';\nimport { useEffect } from 'react';\nimport { getV1DocumentsManager, type V1Document } from '@elementor/editor-documents';\nimport { type V1Element } from '@elementor/editor-elements';\nimport { __privateListenTo as listenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport { __useSelector as useSelector } from '@elementor/store';\nimport { throttle } from '@elementor/utils';\n\nimport { apiClient } from '../../api';\nimport { useNavigateBack } from '../../hooks/use-navigate-back';\nimport { updateCurrentComponent } from '../../store/actions/update-current-component';\nimport { type ComponentsPathItem, selectPath, useCurrentComponentId } from '../../store/store';\nimport { COMPONENT_DOCUMENT_TYPE } from '../consts';\nimport { ComponentModal } from './component-modal';\n\nexport function EditComponent() {\n\tconst currentComponentId = useCurrentComponentId();\n\n\tuseHandleDocumentSwitches();\n\n\tconst navigateBack = useNavigateBack();\n\n\tconst onClose = throttle( navigateBack, 100 );\n\n\tconst elementDom = getComponentDOMElement( currentComponentId ?? undefined );\n\n\tif ( ! elementDom ) {\n\t\treturn null;\n\t}\n\n\treturn <ComponentModal element={ elementDom } onClose={ onClose } />;\n}\n\nfunction useHandleDocumentSwitches() {\n\tconst documentsManager = getV1DocumentsManager();\n\tconst currentComponentId = useCurrentComponentId();\n\tconst path = useSelector( selectPath );\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandEndEvent( 'editor/documents/open' ), () => {\n\t\t\tconst nextDocument = documentsManager.getCurrent();\n\n\t\t\tif ( nextDocument.id === currentComponentId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( currentComponentId ) {\n\t\t\t\tapiClient.unlockComponent( currentComponentId );\n\t\t\t}\n\n\t\t\tconst isComponent = nextDocument.config.type === COMPONENT_DOCUMENT_TYPE;\n\n\t\t\tif ( ! isComponent ) {\n\t\t\t\tupdateCurrentComponent( { path: [], currentComponentId: null } );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdateCurrentComponent( {\n\t\t\t\tpath: getUpdatedComponentPath( path, nextDocument ),\n\t\t\t\tcurrentComponentId: nextDocument.id,\n\t\t\t} );\n\t\t} );\n\t}, [ path, documentsManager, currentComponentId ] );\n}\n\nfunction getUpdatedComponentPath( path: ComponentsPathItem[], nextDocument: V1Document ): ComponentsPathItem[] {\n\tconst componentIndex = path.findIndex( ( { componentId } ) => componentId === nextDocument.id );\n\n\tif ( componentIndex >= 0 ) {\n\t\t// When exiting the editing of a nested component - we in fact go back a step\n\t\t// so we need to make sure the path is cleaned up of any newer items\n\t\t// By doing it with the slice and not a simple pop() - we could jump to any component in the path and make sure it becomes the current one\n\t\treturn path.slice( 0, componentIndex + 1 );\n\t}\n\n\tconst instanceId = nextDocument?.container.view?.el?.dataset.id;\n\tconst instanceTitle = getInstanceTitle( instanceId, path );\n\n\treturn [\n\t\t...path,\n\t\t{\n\t\t\tinstanceId,\n\t\t\tinstanceTitle,\n\t\t\tcomponentId: nextDocument.id,\n\t\t},\n\t];\n}\n\nfunction getInstanceTitle( instanceId: string | undefined, path: ComponentsPathItem[] ): string | undefined {\n\tif ( ! instanceId ) {\n\t\treturn undefined;\n\t}\n\n\tconst documentsManager = getV1DocumentsManager();\n\tconst parentDocId = path.at( -1 )?.componentId ?? documentsManager.getInitialId();\n\tconst parentDoc = documentsManager.get( parentDocId );\n\n\ttype EditorSettings = { title?: string };\n\ttype ContainerWithChildren = V1Element & {\n\t\tchildren?: {\n\t\t\tfindRecursive?: ( predicate: ( child: V1Element ) => boolean ) => V1Element | undefined;\n\t\t};\n\t};\n\n\tconst parentContainer = parentDoc?.container as unknown as ContainerWithChildren | undefined;\n\tconst widget = parentContainer?.children?.findRecursive?.(\n\t\t( container: V1Element ) => container.id === instanceId\n\t);\n\n\tconst editorSettings = widget?.model?.get?.( 'editor_settings' ) as EditorSettings | undefined;\n\n\treturn editorSettings?.title;\n}\n\nfunction getComponentDOMElement( id: V1Document[ 'id' ] | undefined ) {\n\tif ( ! id ) {\n\t\treturn null;\n\t}\n\n\tconst documentsManager = getV1DocumentsManager();\n\n\tconst currentComponent = documentsManager.get( id );\n\n\tconst widget = currentComponent?.container as V1Element;\n\tconst container = ( widget?.view?.el?.children?.[ 0 ] ?? null ) as HTMLElement | null;\n\tconst elementDom = container?.children[ 0 ] as HTMLElement | null;\n\n\treturn elementDom ?? null;\n}\n","import { setDocumentModifiedStatus, type V1Document } from '@elementor/editor-documents';\nimport { __getStore as getStore } from '@elementor/store';\n\nimport { type ComponentsPathItem, slice } from '../store';\n\nexport function updateCurrentComponent( {\n\tpath,\n\tcurrentComponentId,\n}: {\n\tpath: ComponentsPathItem[];\n\tcurrentComponentId: V1Document[ 'id' ] | null;\n} ) {\n\tconst dispatch = getStore()?.dispatch;\n\n\tif ( ! dispatch ) {\n\t\treturn;\n\t}\n\n\tdispatch( slice.actions.setPath( path ) );\n\tdispatch( slice.actions.setCurrentComponentId( currentComponentId ) );\n}\n\nexport const archiveComponent = ( componentId: number ) => {\n\tconst store = getStore();\n\tconst dispatch = store?.dispatch;\n\n\tif ( ! dispatch ) {\n\t\treturn;\n\t}\n\n\tdispatch( slice.actions.archive( componentId ) );\n\tsetDocumentModifiedStatus( true );\n};\n","import * as React from 'react';\nimport { type CSSProperties, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { __ } from '@wordpress/i18n';\n\nimport { useCanvasDocument } from '../../hooks/use-canvas-document';\nimport { useElementRect } from '../../hooks/use-element-rect';\n\ntype ModalProps = {\n\telement: HTMLElement;\n\tonClose: () => void;\n};\n\nexport function ComponentModal( { element, onClose }: ModalProps ) {\n\tconst canvasDocument = useCanvasDocument();\n\n\tuseEffect( () => {\n\t\tconst handleEsc = ( event: KeyboardEvent ) => {\n\t\t\tif ( event.key === 'Escape' ) {\n\t\t\t\tonClose();\n\t\t\t}\n\t\t};\n\n\t\tcanvasDocument?.body.addEventListener( 'keydown', handleEsc );\n\n\t\treturn () => {\n\t\t\tcanvasDocument?.body.removeEventListener( 'keydown', handleEsc );\n\t\t};\n\t}, [ canvasDocument, onClose ] );\n\n\tif ( ! canvasDocument?.body ) {\n\t\treturn null;\n\t}\n\n\treturn createPortal(\n\t\t<>\n\t\t\t<BlockEditPage />\n\t\t\t<Backdrop canvas={ canvasDocument } element={ element } onClose={ onClose } />\n\t\t</>,\n\t\tcanvasDocument.body\n\t);\n}\n\nfunction Backdrop( { canvas, element, onClose }: { canvas: HTMLDocument; element: HTMLElement; onClose: () => void } ) {\n\tconst rect = useElementRect( element );\n\tconst backdropStyle: CSSProperties = {\n\t\tposition: 'fixed',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\twidth: '100vw',\n\t\theight: '100vh',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.5)',\n\t\tzIndex: 999,\n\t\tpointerEvents: 'painted',\n\t\tcursor: 'pointer',\n\t\tclipPath: getRectPath( rect, canvas.defaultView as Window ),\n\t};\n\n\tconst handleKeyDown = ( event: React.KeyboardEvent ) => {\n\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\tevent.preventDefault();\n\t\t\tonClose();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tstyle={ backdropStyle }\n\t\t\tonClick={ onClose }\n\t\t\tonKeyDown={ handleKeyDown }\n\t\t\trole=\"button\"\n\t\t\ttabIndex={ 0 }\n\t\t\taria-label={ __( 'Exit component editing mode', 'elementor' ) }\n\t\t/>\n\t);\n}\n\nfunction getRectPath( rect: DOMRect, viewport: Window ) {\n\tconst { x: originalX, y: originalY, width: originalWidth, height: originalHeight } = rect;\n\tconst x = originalX;\n\tconst y = originalY;\n\tconst width = originalWidth;\n\tconst height = originalHeight;\n\n\tconst { innerWidth: vw, innerHeight: vh } = viewport;\n\n\tconst path = `path(evenodd, 'M 0 0 \n\t\tL ${ vw } 0\n\t\tL ${ vw } ${ vh }\n\t\tL 0 ${ vh }\n\t\tZ\n\t\tM ${ x } ${ y }\n\t\tL ${ x + width } ${ y }\n\t\tL ${ x + width } ${ y + height }\n\t\tL ${ x } ${ y + height }\n\t\tL ${ x } ${ y }\n \tZ'\n\t)`;\n\n\treturn path.replace( /\\s{2,}/g, ' ' );\n}\n\n/**\n * when switching to another document id, we get a document handler when hovering\n * this functionality originates in Pro, and is intended for editing templates, e.g. header/footer\n * in components we don't want that, so the easy way out is to prevent it of being displayed via a CSS rule\n */\nfunction BlockEditPage() {\n\tconst blockV3DocumentHandlesStyles = `\n\t.elementor-editor-active {\n\t\t& .elementor-section-wrap.ui-sortable {\n\t\t\tdisplay: contents;\n\t\t}\n\n\t\t& *[data-editable-elementor-document]:not(.elementor-edit-mode):hover {\n\t\t\t& .elementor-document-handle:not(.elementor-document-save-back-handle) {\n\t\t\t\tdisplay: none;\n\n\t\t\t\t&::before,\n\t\t\t\t& .elementor-document-handle__inner {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t`;\n\n\treturn <style data-e-style-id=\"e-block-v3-document-handles-styles\">{ blockV3DocumentHandlesStyles }</style>;\n}\n","import {\n\t__privateUseListenTo as useListenTo,\n\tcommandEndEvent,\n\tgetCanvasIframeDocument,\n} from '@elementor/editor-v1-adapters';\n\nexport function useCanvasDocument() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => getCanvasIframeDocument() );\n}\n","import { useEffect, useState } from 'react';\nimport { throttle } from '@elementor/utils';\n\nexport function useElementRect( element: HTMLElement | null ) {\n\tconst [ rect, setRect ] = useState< DOMRect >( new DOMRect( 0, 0, 0, 0 ) );\n\n\tconst onChange = throttle(\n\t\t() => {\n\t\t\tsetRect( element?.getBoundingClientRect() ?? new DOMRect( 0, 0, 0, 0 ) );\n\t\t},\n\t\t20,\n\t\ttrue\n\t);\n\n\tuseScrollListener( { element, onChange } );\n\tuseResizeListener( { element, onChange } );\n\tuseMutationsListener( { element, onChange } );\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tonChange.cancel();\n\t\t},\n\t\t[ onChange ]\n\t);\n\n\treturn rect;\n}\n\ntype ListenerProps = {\n\telement: HTMLElement | null;\n\tonChange: () => void;\n};\n\nfunction useScrollListener( { element, onChange }: ListenerProps ) {\n\tuseEffect( () => {\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst win = element.ownerDocument?.defaultView;\n\t\twin?.addEventListener( 'scroll', onChange, { passive: true } );\n\n\t\treturn () => {\n\t\t\twin?.removeEventListener( 'scroll', onChange );\n\t\t};\n\t}, [ element, onChange ] );\n}\n\nfunction useResizeListener( { element, onChange }: ListenerProps ) {\n\tuseEffect( () => {\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resizeObserver = new ResizeObserver( onChange );\n\t\tresizeObserver.observe( element );\n\n\t\tconst win = element.ownerDocument?.defaultView;\n\t\twin?.addEventListener( 'resize', onChange, { passive: true } );\n\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t\twin?.removeEventListener( 'resize', onChange );\n\t\t};\n\t}, [ element, onChange ] );\n}\n\nfunction useMutationsListener( { element, onChange }: ListenerProps ) {\n\tuseEffect( () => {\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mutationObserver = new MutationObserver( onChange );\n\t\tmutationObserver.observe( element, { childList: true, subtree: true } );\n\n\t\treturn () => {\n\t\t\tmutationObserver.disconnect();\n\t\t};\n\t}, [ element, onChange ] );\n}\n","import * as React from 'react';\nimport { closeDialog, openDialog } from '@elementor/editor-ui';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Box, Button, DialogActions, DialogContent, DialogHeader, Icon, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const openEditModeDialog = ( lockedBy: string ) => {\n\topenDialog( {\n\t\tcomponent: <EditModeDialog lockedBy={ lockedBy } />,\n\t} );\n};\n\nconst EditModeDialog = ( { lockedBy }: { lockedBy: string } ) => {\n\t/* translators: %s is the name of the user who is currently editing the document */\n\tconst content = __( '%s is currently editing this document', 'elementor' ).replace( '%s', lockedBy );\n\treturn (\n\t\t<>\n\t\t\t<DialogHeader logo={ false }>\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t\t<Icon color=\"secondary\">\n\t\t\t\t\t\t<InfoCircleFilledIcon fontSize=\"medium\" />\n\t\t\t\t\t</Icon>\n\t\t\t\t\t<Typography variant=\"subtitle1\">{ content }</Typography>\n\t\t\t\t</Box>\n\t\t\t</DialogHeader>\n\t\t\t<DialogContent>\n\t\t\t\t<Stack spacing={ 2 } direction=\"column\">\n\t\t\t\t\t<Typography variant=\"body2\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'You can wait for them to finish or reach out to coordinate your changes together.',\n\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<DialogActions>\n\t\t\t\t\t\t<Button color=\"secondary\" variant=\"contained\" onClick={ closeDialog }>\n\t\t\t\t\t\t\t{ __( 'Close', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</DialogActions>\n\t\t\t\t</Stack>\n\t\t\t</DialogContent>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { ControlAdornmentsProvider } from '@elementor/editor-controls';\nimport { getFieldIndicators } from '@elementor/editor-editing-panel';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { ComponentsIcon, PencilIcon } from '@elementor/icons';\nimport { Divider, IconButton, Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponentInstanceSettings } from '../../hooks/use-component-instance-settings';\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\nimport { useComponent, useOverridableProps } from '../../store/store';\nimport { type OverridablePropsGroup } from '../../types';\nimport { switchToComponent } from '../../utils/switch-to-component';\nimport { EmptyState } from './empty-state';\nimport { OverridePropsGroup } from './override-props-group';\n\nexport function InstanceEditingPanel() {\n\tconst { canEdit } = useComponentsPermissions();\n\n\tconst settings = useComponentInstanceSettings();\n\n\tconst componentId = settings?.component_id?.value;\n\n\tconst overrides = settings?.overrides?.value;\n\n\tconst component = useComponent( componentId ?? null );\n\tconst overridableProps = useOverridableProps( componentId ?? null );\n\n\tconst componentInstanceId = useSelectedElement()?.element?.id ?? null;\n\n\tif ( ! componentId || ! overridableProps || ! component ) {\n\t\treturn null;\n\t}\n\n\t/* translators: %s: component name. */\n\tconst panelTitle = __( 'Edit %s', 'elementor' ).replace( '%s', component.name );\n\n\tconst handleEditComponent = () => switchToComponent( componentId, componentInstanceId );\n\n\tconst isNonEmptyGroup = ( group: OverridablePropsGroup | null ) => group !== null && group.props.length > 0;\n\n\tconst groups = overridableProps.groups.order\n\t\t.map( ( groupId ) => overridableProps.groups.items[ groupId ] ?? null )\n\t\t.filter( isNonEmptyGroup );\n\n\tconst isEmpty = groups.length === 0 || Object.keys( overridableProps.props ).length === 0;\n\n\treturn (\n\t\t<>\n\t\t\t<PanelHeader sx={ { justifyContent: 'start', px: 2 } }>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" flexGrow={ 1 } gap={ 1 } maxWidth=\"100%\">\n\t\t\t\t\t<ComponentsIcon fontSize=\"small\" sx={ { color: 'text.tertiary' } } />\n\t\t\t\t\t<EllipsisWithTooltip title={ component.name } as={ PanelHeaderTitle } sx={ { flexGrow: 1 } } />\n\t\t\t\t\t{ canEdit && (\n\t\t\t\t\t\t<Tooltip title={ panelTitle }>\n\t\t\t\t\t\t\t<IconButton size=\"tiny\" onClick={ handleEditComponent } aria-label={ panelTitle }>\n\t\t\t\t\t\t\t\t<PencilIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t</PanelHeader>\n\t\t\t<PanelBody>\n\t\t\t\t<ControlAdornmentsProvider items={ getFieldIndicators( 'settings' ) }>\n\t\t\t\t\t{ isEmpty ? (\n\t\t\t\t\t\t<EmptyState onEditComponent={ handleEditComponent } />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Stack direction=\"column\" alignItems=\"stretch\">\n\t\t\t\t\t\t\t{ groups.map( ( group ) => (\n\t\t\t\t\t\t\t\t<React.Fragment key={ group.id }>\n\t\t\t\t\t\t\t\t\t<OverridePropsGroup\n\t\t\t\t\t\t\t\t\t\tgroup={ group }\n\t\t\t\t\t\t\t\t\t\tprops={ overridableProps.props }\n\t\t\t\t\t\t\t\t\t\toverrides={ overrides }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) }\n\t\t\t\t</ControlAdornmentsProvider>\n\t\t\t</PanelBody>\n\t\t</>\n\t);\n}\n","import { useElement } from '@elementor/editor-editing-panel';\nimport { useElementSetting } from '@elementor/editor-elements';\n\nimport {\n\tcomponentInstancePropTypeUtil,\n\ttype ComponentInstancePropValue,\n} from '../prop-types/component-instance-prop-type';\n\nexport function useComponentInstanceSettings() {\n\tconst { element } = useElement();\n\n\tconst settings = useElementSetting< ComponentInstancePropValue >( element.id, 'component_instance' );\n\n\treturn componentInstancePropTypeUtil.extract( settings );\n}\n","import * as React from 'react';\nimport { ComponentPropListIcon, PencilIcon } from '@elementor/icons';\nimport { Button, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\n\nexport const EmptyState = ( { onEditComponent }: { onEditComponent: () => void } ) => {\n\tconst { canEdit } = useComponentsPermissions();\n\n\tconst message = canEdit\n\t\t? __(\n\t\t\t\t'Edit the component to add properties, manage them or update the design across all instances.',\n\t\t\t\t'elementor'\n\t\t )\n\t\t: __(\n\t\t\t\t'With your current role, you cannot edit this component. Contact an administrator to add properties.',\n\t\t\t\t'elementor'\n\t\t );\n\n\treturn (\n\t\t<Stack\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"start\"\n\t\t\theight=\"100%\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { p: 2.5, pt: 8, pb: 5.5, mt: 1 } }\n\t\t\tgap={ 1.5 }\n\t\t>\n\t\t\t<ComponentPropListIcon fontSize=\"large\" />\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'No properties yet', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"170px\">\n\t\t\t\t{ message }\n\t\t\t</Typography>\n\t\t\t{ canEdit && (\n\t\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" sx={ { mt: 1 } } onClick={ onEditComponent }>\n\t\t\t\t\t<PencilIcon fontSize=\"small\" />\n\t\t\t\t\t{ __( 'Edit component', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { useStateByElement } from '@elementor/editor-editing-panel';\nimport { CollapseIcon } from '@elementor/editor-ui';\nimport { Box, Collapse, ListItemButton, ListItemText, Stack } from '@elementor/ui';\n\nimport { type ComponentInstanceOverridesPropValue } from '../../prop-types/component-instance-overrides-prop-type';\nimport { type OverridableProp, type OverridablePropsGroup } from '../../types';\nimport { OverridePropControl } from './override-prop-control';\n\ntype Props = {\n\tgroup: OverridablePropsGroup;\n\tprops: Record< string, OverridableProp >;\n\toverrides: ComponentInstanceOverridesPropValue;\n};\n\nexport function OverridePropsGroup( { group, props, overrides }: Props ) {\n\tconst [ isOpen, setIsOpen ] = useStateByElement( group.id, true );\n\n\tconst handleClick = () => {\n\t\tsetIsOpen( ! isOpen );\n\t};\n\n\tconst id = useId();\n\tconst labelId = `label-${ id }`;\n\tconst contentId = `content-${ id }`;\n\n\tconst title = group.label;\n\n\treturn (\n\t\t<Box aria-label={ `${ title } section` }>\n\t\t\t<ListItemButton\n\t\t\t\tid={ labelId }\n\t\t\t\taria-controls={ contentId }\n\t\t\t\taria-label={ `${ title } section` }\n\t\t\t\tonClick={ handleClick }\n\t\t\t\tp={ 0 }\n\t\t\t\tsx={ { '&:hover': { backgroundColor: 'transparent' } } }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" flexGrow={ 1 } gap={ 0.5 }>\n\t\t\t\t\t<ListItemText\n\t\t\t\t\t\tsecondary={ title }\n\t\t\t\t\t\tsecondaryTypographyProps={ { color: 'text.primary', variant: 'caption', fontWeight: 'bold' } }\n\t\t\t\t\t\tsx={ { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 } }\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t\t<CollapseIcon open={ isOpen } color=\"secondary\" fontSize=\"tiny\" />\n\t\t\t</ListItemButton>\n\t\t\t<Collapse id={ contentId } aria-labelledby={ labelId } in={ isOpen } timeout=\"auto\">\n\t\t\t\t<Stack direction=\"column\" gap={ 1 } p={ 2 }>\n\t\t\t\t\t{ group.props.map( ( overrideKey ) => (\n\t\t\t\t\t\t<OverridePropControl\n\t\t\t\t\t\t\tkey={ overrideKey }\n\t\t\t\t\t\t\toverridableProp={ props[ overrideKey ] }\n\t\t\t\t\t\t\toverrides={ overrides }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Stack>\n\t\t\t</Collapse>\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { ControlReplacementsProvider, PropKeyProvider, PropProvider, useBoundProp } from '@elementor/editor-controls';\nimport {\n\tBaseControl,\n\tcontrolsRegistry,\n\ttype ControlType,\n\tcreateTopLevelObjectType,\n\tElementProvider,\n\tgetControlReplacements,\n\tSettingsField,\n\tuseElement,\n} from '@elementor/editor-editing-panel';\nimport { type Control, getContainer, getElementType } from '@elementor/editor-elements';\nimport { Stack } from '@elementor/ui';\n\nimport { useControlsByWidgetType } from '../../hooks/use-controls-by-widget-type';\nimport {\n\ttype ComponentInstanceOverrideProp,\n\tcomponentInstanceOverridePropTypeUtil,\n} from '../../prop-types/component-instance-override-prop-type';\nimport {\n\ttype ComponentInstanceOverride,\n\tcomponentInstanceOverridesPropTypeUtil,\n\ttype ComponentInstanceOverridesPropValue,\n} from '../../prop-types/component-instance-overrides-prop-type';\nimport { componentInstancePropTypeUtil } from '../../prop-types/component-instance-prop-type';\nimport {\n\ttype ComponentOverridableProp,\n\tcomponentOverridablePropTypeUtil,\n} from '../../prop-types/component-overridable-prop-type';\nimport { OverridablePropProvider } from '../../provider/overridable-prop-context';\nimport { updateOverridableProp } from '../../store/actions/update-overridable-prop';\nimport { useCurrentComponentId } from '../../store/store';\nimport { type OriginPropFields, type OverridableProp } from '../../types';\nimport { getPropTypeForComponentOverride } from '../../utils/get-prop-type-for-component-override';\nimport { resolveOverridePropValue } from '../../utils/resolve-override-prop-value';\nimport { ControlLabel } from '../control-label';\nimport { OverrideControlInnerElementNotFoundError } from '../errors';\n\ntype Props = {\n\toverridableProp: OverridableProp;\n\toverrides?: ComponentInstanceOverridesPropValue;\n};\n\ntype OverridesSchema = Record< string, ComponentInstanceOverride >;\n\nexport function OverridePropControl( { overridableProp, overrides }: Props ) {\n\treturn (\n\t\t<SettingsField bind=\"component_instance\" propDisplayName={ overridableProp.label }>\n\t\t\t<OverrideControl overridableProp={ overridableProp } overrides={ overrides } />\n\t\t</SettingsField>\n\t);\n}\n\nfunction OverrideControl( { overridableProp, overrides }: Props ) {\n\tconst componentInstanceElement = useElement();\n\tconst componentId = useCurrentComponentId();\n\tconst { value: instanceValue, setValue: setInstanceValue } = useBoundProp( componentInstancePropTypeUtil );\n\tconst controls = useControlsByWidgetType(\n\t\toverridableProp?.originPropFields?.widgetType ?? overridableProp.widgetType\n\t);\n\tconst controlReplacements = getControlReplacements();\n\n\tconst propType = getPropTypeForComponentOverride( overridableProp );\n\n\tif ( ! propType ) {\n\t\treturn null;\n\t}\n\n\tconst propTypeSchema = createTopLevelObjectType( {\n\t\tschema: {\n\t\t\t[ overridableProp.overrideKey ]: propType,\n\t\t},\n\t} );\n\n\tconst componentInstanceId = instanceValue.component_id?.value;\n\n\tif ( ! componentInstanceId ) {\n\t\tthrow new Error( 'Component ID is required' );\n\t}\n\n\tconst matchingOverride = getMatchingOverride( overrides, overridableProp.overrideKey );\n\n\tconst propValue = matchingOverride ? resolveOverridePropValue( matchingOverride ) : overridableProp.originValue;\n\n\tconst value = {\n\t\t[ overridableProp.overrideKey ]: propValue,\n\t} as OverridesSchema;\n\n\tconst setValue = ( newValue: OverridesSchema ) => {\n\t\tconst newPropValue = newValue[ overridableProp.overrideKey ] as\n\t\t\t| ComponentInstanceOverrideProp\n\t\t\t| ComponentOverridableProp;\n\n\t\tconst newOverrideValue = createOverrideValue( {\n\t\t\tmatchingOverride,\n\t\t\toverrideKey: overridableProp.overrideKey,\n\t\t\toverrideValue: newPropValue,\n\t\t\tcomponentId: componentInstanceId,\n\t\t} );\n\n\t\tlet newOverrides =\n\t\t\toverrides?.map( ( override ) => ( override === matchingOverride ? newOverrideValue : override ) ) ?? [];\n\n\t\tif ( ! matchingOverride ) {\n\t\t\tnewOverrides = [ ...newOverrides, newOverrideValue ];\n\t\t}\n\n\t\tsetInstanceValue( {\n\t\t\t...instanceValue,\n\t\t\toverrides: componentInstanceOverridesPropTypeUtil.create( newOverrides ),\n\t\t} );\n\n\t\tconst overridableValue = componentOverridablePropTypeUtil.extract( newOverrideValue );\n\t\tif ( overridableValue && componentId ) {\n\t\t\tif ( overridableProp.originPropFields ) {\n\t\t\t\tupdateOverridableProp( componentId, overridableValue, overridableProp.originPropFields );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { elType, widgetType, propKey, elementId } = overridableProp;\n\t\t\tupdateOverridableProp( componentId, overridableValue, { elType, widgetType, propKey, elementId } );\n\t\t}\n\t};\n\n\tconst { control, controlProps, layout } = getControlParams(\n\t\tcontrols,\n\t\toverridableProp?.originPropFields ?? overridableProp,\n\t\toverridableProp.label\n\t);\n\n\tconst { elementId, widgetType, elType, propKey } = overridableProp.originPropFields ?? overridableProp;\n\n\tconst elementContainer = getContainer( elementId );\n\tif ( ! elementContainer ) {\n\t\tthrow new OverrideControlInnerElementNotFoundError( {\n\t\t\tcontext: { componentId: componentInstanceId, elementId },\n\t\t} );\n\t}\n\n\tconst type = elType === 'widget' ? widgetType : elType;\n\tconst elementType = getElementType( type );\n\n\tif ( ! elementType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<OverridablePropProvider\n\t\t\tvalue={ componentOverridablePropTypeUtil.extract( matchingOverride ) ?? undefined }\n\t\t\tcomponentInstanceElement={ componentInstanceElement }\n\t\t>\n\t\t\t<ElementProvider element={ { id: elementId, type } } elementType={ elementType }>\n\t\t\t\t<SettingsField bind={ propKey } propDisplayName={ overridableProp.label }>\n\t\t\t\t\t<PropProvider\n\t\t\t\t\t\tpropType={ propTypeSchema }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tsetValue={ setValue }\n\t\t\t\t\t\tisDisabled={ () => {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<PropKeyProvider bind={ overridableProp.overrideKey }>\n\t\t\t\t\t\t\t<ControlReplacementsProvider replacements={ controlReplacements }>\n\t\t\t\t\t\t\t\t<Stack direction=\"column\" gap={ 1 } mb={ 1.5 }>\n\t\t\t\t\t\t\t\t\t{ layout !== 'custom' && <ControlLabel>{ overridableProp.label }</ControlLabel> }\n\t\t\t\t\t\t\t\t\t<OriginalControl control={ control } controlProps={ controlProps } />\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</PropProvider>\n\t\t\t\t</SettingsField>\n\t\t\t</ElementProvider>\n\t\t</OverridablePropProvider>\n\t);\n}\n\nfunction getMatchingOverride(\n\toverrides: ComponentInstanceOverridesPropValue,\n\toverrideKey: string\n): ComponentInstanceOverride | null {\n\treturn (\n\t\toverrides?.find( ( override ) => {\n\t\t\tconst overridableValue = componentOverridablePropTypeUtil.extract( override );\n\t\t\tlet comparedOverrideKey = null;\n\n\t\t\tif ( overridableValue ) {\n\t\t\t\tcomparedOverrideKey = ( overridableValue.origin_value as ComponentInstanceOverrideProp )?.value\n\t\t\t\t\t?.override_key;\n\t\t\t} else {\n\t\t\t\tcomparedOverrideKey = override.value.override_key;\n\t\t\t}\n\n\t\t\treturn comparedOverrideKey === overrideKey;\n\t\t} ) ?? null\n\t);\n}\n\nfunction createOverrideValue( {\n\tmatchingOverride,\n\toverrideKey,\n\toverrideValue,\n\tcomponentId,\n}: {\n\tmatchingOverride: ComponentInstanceOverride | null;\n\toverrideKey: string;\n\toverrideValue: ComponentInstanceOverrideProp | ComponentOverridableProp;\n\tcomponentId: number;\n} ): ComponentInstanceOverride {\n\t// this is for an override that's already set as overridable\n\tconst overridableValue = componentOverridablePropTypeUtil.extract( matchingOverride );\n\n\t// this is for changes via the overridable-prop-indicator\n\tconst newOverridableValue = componentOverridablePropTypeUtil.extract( overrideValue );\n\n\tconst anyOverridable = newOverridableValue ?? overridableValue;\n\n\tif ( anyOverridable ) {\n\t\tconst innerOverride = componentInstanceOverridePropTypeUtil.create( {\n\t\t\toverride_key: overrideKey,\n\t\t\toverride_value: resolveOverridePropValue( overrideValue ),\n\t\t\tschema_source: {\n\t\t\t\ttype: 'component',\n\t\t\t\tid: componentId,\n\t\t\t},\n\t\t} );\n\n\t\treturn componentOverridablePropTypeUtil.create( {\n\t\t\toverride_key: anyOverridable.override_key,\n\t\t\torigin_value: innerOverride,\n\t\t} );\n\t}\n\n\treturn componentInstanceOverridePropTypeUtil.create( {\n\t\toverride_key: overrideKey,\n\t\toverride_value: overrideValue,\n\t\tschema_source: {\n\t\t\ttype: 'component',\n\t\t\tid: componentId,\n\t\t},\n\t} );\n}\n\nfunction getControlParams( controls: Record< string, Control >, originPropFields: OriginPropFields, label?: string ) {\n\tconst control = controls[ originPropFields.propKey ];\n\tconst { value } = control;\n\n\tconst layout = getControlLayout( control );\n\n\tconst controlProps = populateChildControlProps( value.props );\n\n\tif ( layout === 'custom' ) {\n\t\tcontrolProps.label = label ?? value.label;\n\t}\n\n\treturn {\n\t\tcontrol,\n\t\tcontrolProps,\n\t\tlayout,\n\t};\n}\n\nfunction OriginalControl( { control, controlProps }: { control: Control; controlProps: Record< string, unknown > } ) {\n\tconst { value } = control;\n\n\treturn <BaseControl type={ value.type as ControlType } props={ controlProps } />;\n}\n\nfunction getControlLayout( control: Control ) {\n\treturn control.value.meta?.layout || controlsRegistry.getLayout( control.value.type as ControlType );\n}\n\nfunction populateChildControlProps( props: Record< string, unknown > ) {\n\tif ( props.childControlType ) {\n\t\tconst childComponent = controlsRegistry.get( props.childControlType as ControlType );\n\t\tconst childPropType = controlsRegistry.getPropTypeUtil( props.childControlType as ControlType );\n\t\tprops = {\n\t\t\t...props,\n\t\t\tchildControlConfig: {\n\t\t\t\tcomponent: childComponent,\n\t\t\t\tprops: props.childControlProps || {},\n\t\t\t\tpropTypeUtil: childPropType,\n\t\t\t},\n\t\t};\n\t}\n\n\treturn props;\n}\n","import { type Control, type ControlItem, getElementType } from '@elementor/editor-elements';\n\nexport function useControlsByWidgetType( type: string ): Record< string, Control > {\n\tconst elementType = getElementType( type );\n\n\tif ( ! elementType ) {\n\t\treturn {};\n\t}\n\n\tconst controls = iterateControls( elementType.controls );\n\n\treturn getControlsByBind( controls );\n}\n\nfunction iterateControls( controls: ControlItem[] ): Control[] {\n\treturn controls\n\t\t.map( ( control ) => {\n\t\t\tif ( control.type === 'control' && 'bind' in control.value ) {\n\t\t\t\treturn control;\n\t\t\t}\n\n\t\t\tif ( control.type === 'section' ) {\n\t\t\t\treturn iterateControls( control.value.items );\n\t\t\t}\n\n\t\t\treturn null;\n\t\t} )\n\t\t.filter( Boolean )\n\t\t.flat() as Control[];\n}\n\nfunction getControlsByBind( controls: Control[] ): Record< string, Control > {\n\treturn controls.reduce(\n\t\t( controlsByBind: Record< string, Control >, control ) => ( {\n\t\t\t...controlsByBind,\n\t\t\t[ control.value.bind ]: control,\n\t\t} ),\n\t\t{}\n\t);\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type useElement } from '@elementor/editor-editing-panel';\n\nimport { type ComponentOverridablePropValue } from '../prop-types/component-overridable-prop-type';\n\ntype OverridablePropData = {\n\tvalue?: ComponentOverridablePropValue;\n\tcomponentInstanceElement?: ReturnType< typeof useElement >;\n};\n\nconst OverridablePropContext = createContext< OverridablePropData | null >( null );\n\nexport function OverridablePropProvider( { children, ...props }: PropsWithChildren< OverridablePropData > ) {\n\treturn <OverridablePropContext.Provider value={ props }>{ children }</OverridablePropContext.Provider>;\n}\n\nexport const useOverridablePropValue = () => useContext( OverridablePropContext )?.value;\n\nexport const useComponentInstanceElement = () => useContext( OverridablePropContext )?.componentInstanceElement;\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentOverridablePropValue } from '../../prop-types/component-overridable-prop-type';\nimport { type OriginPropFields, type OverridableProps } from '../../types';\nimport { resolveOverridePropValue } from '../../utils/resolve-override-prop-value';\nimport { selectOverridableProps, slice } from '../store';\n\nexport function updateOverridableProp(\n\tcomponentId: number,\n\tpropValue: ComponentOverridablePropValue,\n\toriginPropFields?: OriginPropFields\n) {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst existingOverridableProp = overridableProps.props[ propValue.override_key ];\n\n\tif ( ! existingOverridableProp ) {\n\t\treturn;\n\t}\n\n\tconst originValue = resolveOverridePropValue( propValue.origin_value );\n\n\tconst newOverridableProp = originPropFields\n\t\t? {\n\t\t\t\toriginValue,\n\t\t\t\toriginPropFields,\n\t\t }\n\t\t: {\n\t\t\t\toriginValue,\n\t\t };\n\n\tconst newOverridableProps = {\n\t\t...overridableProps,\n\t\tprops: {\n\t\t\t...overridableProps.props,\n\t\t\t[ existingOverridableProp.overrideKey ]: {\n\t\t\t\t...existingOverridableProp,\n\t\t\t\t...newOverridableProp,\n\t\t\t},\n\t\t},\n\t} satisfies OverridableProps;\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: newOverridableProps,\n\t\t} )\n\t);\n}\n","import { type PropValue } from '@elementor/editor-props';\n\nimport {\n\ttype ComponentInstanceOverrideProp,\n\tcomponentInstanceOverridePropTypeUtil,\n} from '../prop-types/component-instance-override-prop-type';\nimport { type ComponentInstanceOverride } from '../prop-types/component-instance-overrides-prop-type';\nimport {\n\ttype ComponentOverridableProp,\n\tcomponentOverridablePropTypeUtil,\n} from '../prop-types/component-overridable-prop-type';\n\nexport const resolveOverridePropValue = ( originalPropValue: ComponentInstanceOverride | PropValue ): PropValue => {\n\tconst isOverridable = componentOverridablePropTypeUtil.isValid( originalPropValue );\n\tif ( isOverridable ) {\n\t\treturn getOverridableValue( originalPropValue as ComponentOverridableProp );\n\t}\n\n\tconst isOverride = componentInstanceOverridePropTypeUtil.isValid( originalPropValue );\n\tif ( isOverride ) {\n\t\treturn getOverrideValue( originalPropValue );\n\t}\n\n\treturn originalPropValue;\n};\n\nfunction getOverridableValue( overridableProp: ComponentOverridableProp | null ): PropValue {\n\tconst overridableValue = componentOverridablePropTypeUtil.extract( overridableProp );\n\n\tif ( ! overridableValue ) {\n\t\treturn null;\n\t}\n\n\tconst isOverride = componentInstanceOverridePropTypeUtil.isValid( overridableValue.origin_value );\n\n\tif ( isOverride ) {\n\t\treturn getOverrideValue( overridableValue.origin_value as ComponentInstanceOverrideProp );\n\t}\n\n\treturn overridableValue.origin_value;\n}\n\nfunction getOverrideValue( overrideProp: ComponentInstanceOverrideProp | null ): PropValue {\n\tconst overrideValue = componentInstanceOverridePropTypeUtil.extract( overrideProp );\n\n\tif ( ! overrideValue ) {\n\t\treturn null;\n\t}\n\n\treturn overrideValue.override_value as PropValue;\n}\n","import { getWidgetsCache } from '@elementor/editor-elements';\n\nimport { type OriginPropFields, type OverridableProp } from '../types';\n\nexport const getPropTypeForComponentOverride = ( overridableProp: OverridableProp ) => {\n\tif ( overridableProp.originPropFields ) {\n\t\treturn getPropType( overridableProp.originPropFields );\n\t}\n\n\tconst { elType, widgetType, propKey, elementId } = overridableProp;\n\n\treturn getPropType( {\n\t\telType,\n\t\twidgetType,\n\t\tpropKey,\n\t\telementId,\n\t} );\n};\n\nfunction getPropType( { widgetType, propKey }: OriginPropFields ) {\n\tconst widgetPropsSchema = getWidgetsCache()?.[ widgetType ]?.atomic_props_schema;\n\n\treturn widgetPropsSchema?.[ propKey ];\n}\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { ControlAdornments, ControlFormLabel } from '@elementor/editor-controls';\nimport { type FormLabelProps, Stack } from '@elementor/ui';\n\ntype ControlLabelProps = FormLabelProps & PropsWithChildren< object >;\n\nexport const ControlLabel = ( { children, ...props }: ControlLabelProps ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel { ...props }>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import { createError } from '@elementor/utils';\n\nexport const OverrideControlInnerElementNotFoundError = createError< { componentId: number; elementId: string } >( {\n\tcode: 'override_control_inner_element_not_found',\n\tmessage: `Component inner element not found for override control. The element may have been deleted without updating the overridable props, or the component has not finished rendering yet.`,\n} );\n","import * as React from 'react';\nimport { type ComponentType } from 'react';\nimport {\n\tControlReplacementsProvider,\n\tPropKeyProvider,\n\tPropProvider,\n\tuseBoundProp,\n\tuseControlReplacement,\n} from '@elementor/editor-controls';\nimport { createTopLevelObjectType, getControlReplacements, useElement } from '@elementor/editor-editing-panel';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { type ComponentInstanceOverridePropValue } from '../../prop-types/component-instance-override-prop-type';\nimport {\n\tcomponentOverridablePropTypeUtil,\n\ttype ComponentOverridablePropValue,\n} from '../../prop-types/component-overridable-prop-type';\nimport { OverridablePropProvider } from '../../provider/overridable-prop-context';\nimport { updateOverridableProp } from '../../store/actions/update-overridable-prop';\nimport { useCurrentComponentId, useOverridableProps } from '../../store/store';\nimport { getPropTypeForComponentOverride } from '../../utils/get-prop-type-for-component-override';\nimport { OVERRIDABLE_PROP_REPLACEMENT_ID } from '../consts';\n\nexport function OverridablePropControl< T extends object >( {\n\tOriginalControl,\n\t...props\n}: T & { OriginalControl: ComponentType< T > } ) {\n\tconst { elementType } = useElement();\n\n\tconst { value, bind, setValue, placeholder, ...propContext } = useBoundProp( componentOverridablePropTypeUtil );\n\tconst componentId = useCurrentComponentId();\n\tconst overridableProps = useOverridableProps( componentId );\n\tconst filteredReplacements = getControlReplacements().filter(\n\t\t( r ) => ! r.id || r.id !== OVERRIDABLE_PROP_REPLACEMENT_ID\n\t);\n\n\tif ( ! componentId ) {\n\t\treturn null;\n\t}\n\n\tif ( ! value?.override_key ) {\n\t\tthrow new Error( 'Override key is required' );\n\t}\n\n\tconst isComponentInstance = elementType.key === 'e-component';\n\tconst overridablePropData = overridableProps?.props?.[ value.override_key ];\n\n\tconst setOverridableValue = ( newValue: Record< typeof bind, PropValue | null > ) => {\n\t\tconst propValue = {\n\t\t\t...value,\n\t\t\torigin_value: newValue[ bind ],\n\t\t} as ComponentOverridablePropValue;\n\n\t\tsetValue( propValue );\n\n\t\tif ( ! isComponentInstance ) {\n\t\t\tupdateOverridableProp( componentId, propValue, overridablePropData?.originPropFields );\n\t\t}\n\t};\n\n\tconst defaultPropType = elementType.propsSchema[ bind ];\n\tconst overridePropType = overridablePropData ? getPropTypeForComponentOverride( overridablePropData ) : undefined;\n\n\tconst resolvedPropType = overridePropType ?? defaultPropType;\n\n\tif ( ! resolvedPropType ) {\n\t\treturn null;\n\t}\n\n\tconst propType = createTopLevelObjectType( {\n\t\tschema: {\n\t\t\t[ bind ]: resolvedPropType,\n\t\t},\n\t} );\n\n\tconst propValue = (\n\t\tisComponentInstance\n\t\t\t? ( value.origin_value?.value as ComponentInstanceOverridePropValue ).override_value\n\t\t\t: value.origin_value\n\t) as PropValue;\n\n\tconst objectPlaceholder: Record< string, PropValue > | undefined = placeholder\n\t\t? { [ bind ]: placeholder }\n\t\t: undefined;\n\n\treturn (\n\t\t<OverridablePropProvider value={ value }>\n\t\t\t<PropProvider\n\t\t\t\t{ ...propContext }\n\t\t\t\tpropType={ propType }\n\t\t\t\tsetValue={ setOverridableValue }\n\t\t\t\tvalue={ {\n\t\t\t\t\t[ bind ]: propValue,\n\t\t\t\t} }\n\t\t\t\tplaceholder={ objectPlaceholder }\n\t\t\t>\n\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t<ControlReplacementsProvider replacements={ filteredReplacements }>\n\t\t\t\t\t\t<ControlWithReplacements OriginalControl={ OriginalControl } props={ props as T } />\n\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</OverridablePropProvider>\n\t);\n}\n\ntype ControlComponentType = ComponentType< object & { OriginalControl: ComponentType } >;\n\nfunction ControlWithReplacements< T extends object >( {\n\tOriginalControl,\n\tprops,\n}: {\n\tOriginalControl: ComponentType< T >;\n\tprops: T;\n} ) {\n\tconst { ControlToRender, isReplaced } = useControlReplacement( OriginalControl as ControlComponentType );\n\n\tif ( isReplaced ) {\n\t\tconst ReplacementControl = ControlToRender as unknown as ComponentType<\n\t\t\tT & { OriginalControl: ComponentType< T > }\n\t\t>;\n\t\treturn <ReplacementControl { ...props } OriginalControl={ OriginalControl } />;\n\t}\n\n\treturn <OriginalControl { ...props } />;\n}\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { useElement } from '@elementor/editor-editing-panel';\nimport { getWidgetsCache } from '@elementor/editor-elements';\nimport { type PropType, type TransformablePropValue } from '@elementor/editor-props';\nimport { bindPopover, bindTrigger, Popover, Tooltip, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { componentOverridablePropTypeUtil } from '../../prop-types/component-overridable-prop-type';\nimport { useComponentInstanceElement, useOverridablePropValue } from '../../provider/overridable-prop-context';\nimport { setOverridableProp } from '../../store/actions/set-overridable-prop';\nimport { useCurrentComponentId, useOverridableProps } from '../../store/store';\nimport { type OverridableProps } from '../../types';\nimport { resolveOverridePropValue } from '../../utils/resolve-override-prop-value';\nimport { Indicator } from './indicator';\nimport { OverridablePropForm } from './overridable-prop-form';\nimport { getOverridableProp } from './utils/get-overridable-prop';\n\nexport function OverridablePropIndicator() {\n\tconst { propType } = useBoundProp();\n\tconst componentId = useCurrentComponentId();\n\tconst overridableProps = useOverridableProps( componentId );\n\n\tif ( ! isPropAllowed( propType ) || ! componentId || ! overridableProps ) {\n\t\treturn null;\n\t}\n\n\treturn <Content componentId={ componentId } overridableProps={ overridableProps } />;\n}\n\ntype Props = {\n\tcomponentId: number;\n\toverridableProps?: OverridableProps;\n};\nexport function Content( { componentId, overridableProps }: Props ) {\n\tconst {\n\t\telement: { id: elementId },\n\t\telementType,\n\t} = useElement();\n\tconst { value, bind, propType } = useBoundProp();\n\n\tconst contextOverridableValue = useOverridablePropValue();\n\tconst componentInstanceElement = useComponentInstanceElement();\n\n\tconst { value: boundPropOverridableValue, setValue: setOverridableValue } = useBoundProp(\n\t\tcomponentOverridablePropTypeUtil\n\t);\n\n\t/**\n\t * This is intended to handle custom layout controls, such as <LinkControl />, which has <ControlLabel /> nested within it\n\t * i.e. its bound prop value would be the one manipulated by the new <PropProvider /> thus won't be considered overridable\n\t */\n\tconst overridableValue = boundPropOverridableValue ?? contextOverridableValue;\n\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t} );\n\n\tconst triggerProps = bindTrigger( popupState );\n\tconst popoverProps = bindPopover( popupState );\n\n\tconst { elType } = getWidgetsCache()?.[ elementType.key ] ?? { elType: 'widget' };\n\n\tconst handleSubmit = ( { label, group }: { label: string; group: string | null } ) => {\n\t\tconst propTypeDefault = propType.default ?? {};\n\n\t\tconst originValue = resolveOverridePropValue( overridableValue?.origin_value ) ?? value ?? propTypeDefault;\n\n\t\tconst matchingOverridableProp = overridableValue\n\t\t\t? overridableProps?.props?.[ overridableValue.override_key ]\n\t\t\t: undefined;\n\n\t\tconst overridablePropConfig = setOverridableProp( {\n\t\t\tcomponentId,\n\t\t\toverrideKey: overridableValue?.override_key ?? null,\n\t\t\telementId: componentInstanceElement?.element.id ?? elementId,\n\t\t\tlabel,\n\t\t\tgroupId: group,\n\t\t\tpropKey: bind,\n\t\t\telType: elType ?? 'widget',\n\t\t\twidgetType: componentInstanceElement?.elementType.key ?? elementType.key,\n\t\t\toriginValue,\n\t\t\toriginPropFields: matchingOverridableProp?.originPropFields,\n\t\t\tsource: 'user',\n\t\t} );\n\n\t\tif ( ! overridableValue && overridablePropConfig ) {\n\t\t\tsetOverridableValue( {\n\t\t\t\toverride_key: overridablePropConfig.overrideKey,\n\t\t\t\torigin_value: originValue as TransformablePropValue< string, unknown >,\n\t\t\t} );\n\t\t}\n\n\t\tpopupState.close();\n\t};\n\n\tconst overridableConfig = overridableValue\n\t\t? getOverridableProp( { componentId, overrideKey: overridableValue.override_key } )\n\t\t: undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<Tooltip placement=\"top\" title={ __( 'Override Property', 'elementor' ) }>\n\t\t\t\t<Indicator { ...triggerProps } isOpen={ !! popoverProps.open } isOverridable={ !! overridableValue } />\n\t\t\t</Tooltip>\n\t\t\t<Popover\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 2.5 },\n\t\t\t\t} }\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t<OverridablePropForm\n\t\t\t\t\tonSubmit={ handleSubmit }\n\t\t\t\t\tgroups={ overridableProps?.groups.order.map( ( groupId ) => ( {\n\t\t\t\t\t\tvalue: groupId,\n\t\t\t\t\t\tlabel: overridableProps.groups.items[ groupId ].label,\n\t\t\t\t\t} ) ) }\n\t\t\t\t\texistingLabels={ Object.values( overridableProps?.props ?? {} ).map( ( prop ) => prop.label ) }\n\t\t\t\t\tcurrentValue={ overridableConfig }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nfunction isPropAllowed( propType: PropType ) {\n\treturn propType.meta.overridable !== false;\n}\n","import { type PropValue } from '@elementor/editor-props';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\nimport { generateUniqueId } from '@elementor/utils';\n\nimport { type OriginPropFields, type OverridableProp } from '../../types';\nimport { type Source, trackComponentEvent } from '../../utils/tracking';\nimport { selectCurrentComponent, selectOverridableProps, slice } from '../store';\nimport {\n\taddPropToGroup,\n\tensureGroupInOrder,\n\tremovePropFromGroup,\n\tremovePropsFromState,\n\tresolveOrCreateGroup,\n} from '../utils/groups-transformers';\n\ntype Props = {\n\tcomponentId: number;\n\toverrideKey: string | null;\n\telementId: string;\n\tlabel: string;\n\tgroupId: string | null;\n\tpropKey: string;\n\telType: string;\n\twidgetType: string;\n\toriginValue: PropValue;\n\toriginPropFields?: OriginPropFields;\n\tsource: Source;\n};\n\nexport function setOverridableProp( {\n\tcomponentId,\n\toverrideKey,\n\telementId,\n\tlabel,\n\tgroupId,\n\tpropKey,\n\telType,\n\twidgetType,\n\toriginValue,\n\toriginPropFields,\n\tsource,\n}: Props ): OverridableProp | undefined {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn;\n\t}\n\n\tconst existingOverridableProp = overrideKey ? overridableProps.props[ overrideKey ] : null;\n\tconst duplicatedTargetProps = Object.values( overridableProps.props ).filter(\n\t\t( prop ) => prop.elementId === elementId && prop.propKey === propKey && prop !== existingOverridableProp\n\t);\n\n\tconst { groups: groupsAfterResolve, groupId: currentGroupId } = resolveOrCreateGroup(\n\t\toverridableProps.groups,\n\t\tgroupId || existingOverridableProp?.groupId || undefined\n\t);\n\n\tconst overridableProp: OverridableProp = {\n\t\toverrideKey: existingOverridableProp?.overrideKey || generateUniqueId( 'prop' ),\n\t\tlabel,\n\t\telementId,\n\t\tpropKey,\n\t\twidgetType,\n\t\telType,\n\t\toriginValue,\n\t\tgroupId: currentGroupId,\n\t\toriginPropFields,\n\t};\n\n\tconst stateAfterRemovingDuplicates = removePropsFromState(\n\t\t{ ...overridableProps, groups: groupsAfterResolve },\n\t\tduplicatedTargetProps\n\t);\n\n\tconst props = {\n\t\t...stateAfterRemovingDuplicates.props,\n\t\t[ overridableProp.overrideKey ]: overridableProp,\n\t};\n\n\tlet groups = addPropToGroup( stateAfterRemovingDuplicates.groups, currentGroupId, overridableProp.overrideKey );\n\tgroups = ensureGroupInOrder( groups, currentGroupId );\n\n\tconst isChangingGroups = existingOverridableProp && existingOverridableProp.groupId !== currentGroupId;\n\n\tif ( isChangingGroups ) {\n\t\tgroups = removePropFromGroup( groups, existingOverridableProp.groupId, overridableProp.overrideKey );\n\t}\n\n\tdispatch(\n\t\tslice.actions.setOverridableProps( {\n\t\t\tcomponentId,\n\t\t\toverridableProps: {\n\t\t\t\tprops,\n\t\t\t\tgroups,\n\t\t\t},\n\t\t} )\n\t);\n\n\tconst isNewProperty = ! existingOverridableProp;\n\n\tif ( isNewProperty ) {\n\t\tconst currentComponent = selectCurrentComponent( getState() );\n\n\t\ttrackComponentEvent( {\n\t\t\taction: 'propertyExposed',\n\t\t\tsource,\n\t\t\tcomponent_uid: currentComponent?.uid,\n\t\t\tproperty_id: overridableProp.overrideKey,\n\t\t\tproperty_path: propKey,\n\t\t\tproperty_name: label,\n\t\t\telement_type: widgetType ?? elType,\n\t\t} );\n\t}\n\n\treturn overridableProp;\n}\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { CheckIcon, PlusIcon } from '@elementor/icons';\nimport { Box, styled } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst SIZE = 'tiny';\n\nconst IconContainer = styled( Box )`\n\tpointer-events: none;\n\topacity: 0;\n\ttransition: opacity 0.2s ease-in-out;\n\n\t& > svg {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate( -50%, -50% );\n\t\twidth: 10px;\n\t\theight: 10px;\n\t\tfill: ${ ( { theme } ) => theme.palette.primary.contrastText };\n\t\tstroke: ${ ( { theme } ) => theme.palette.primary.contrastText };\n\t\tstroke-width: 2px;\n\t}\n`;\n\nconst Content = styled( Box )`\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\twidth: 16px;\n\theight: 16px;\n\tmargin-inline: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\n\t&:before {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate( -50%, -50% ) rotate( 45deg );\n\t\twidth: 5px;\n\t\theight: 5px;\n\t\tborder-radius: 1px;\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.primary.main };\n\t\ttransition: all 0.1s ease-in-out;\n\t}\n\n\t&:hover,\n\t&.enlarged {\n\t\t&:before {\n\t\t\twidth: 12px;\n\t\t\theight: 12px;\n\t\t\tborder-radius: 2px;\n\t\t}\n\n\t\t.icon {\n\t\t\topacity: 1;\n\t\t}\n\t}\n`;\n\ntype Props = {\n\tisOverridable: boolean;\n\tisOpen: boolean;\n};\nexport const Indicator = forwardRef< HTMLDivElement, Props >( ( { isOpen, isOverridable, ...props }, ref ) => (\n\t<Content ref={ ref } { ...props } className={ isOpen || isOverridable ? 'enlarged' : '' }>\n\t\t<IconContainer\n\t\t\tclassName=\"icon\"\n\t\t\taria-label={\n\t\t\t\tisOverridable ? __( 'Overridable property', 'elementor' ) : __( 'Make prop overridable', 'elementor' )\n\t\t\t}\n\t\t>\n\t\t\t{ isOverridable ? <CheckIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconContainer>\n\t</Content>\n) );\n","import { __getState as getState } from '@elementor/store';\n\nimport { selectOverridableProps } from '../../../store/store';\nimport { type OverridableProp } from '../../../types';\n\nexport function getOverridableProp( {\n\tcomponentId,\n\toverrideKey,\n}: {\n\tcomponentId: number;\n\toverrideKey: string;\n} ): OverridableProp | undefined {\n\tconst overridableProps = selectOverridableProps( getState(), componentId );\n\n\tif ( ! overridableProps ) {\n\t\treturn undefined;\n\t}\n\n\treturn overridableProps.props[ overrideKey ];\n}\n","import { getMCPByDomain } from '@elementor/editor-mcp';\n\nimport { initSaveAsComponentTool } from './save-as-component-tool';\n\nexport function initMcp() {\n\tconst { setMCPDescription } = getMCPByDomain( 'components' );\n\n\tsetMCPDescription(\n\t\t`Elementor Editor Components MCP - Tools for creating and managing reusable components. \n Components are reusable blocks of content that can be used multiple times across the pages, its a widget which contains a set of elements and styles.`\n\t);\n\n\tinitSaveAsComponentTool();\n}\n","import { DOCUMENT_STRUCTURE_URI, WIDGET_SCHEMA_URI } from '@elementor/editor-canvas';\nimport { getContainer, getElementType, getWidgetsCache, type V1ElementData } from '@elementor/editor-elements';\nimport { getMCPByDomain, toolPrompts } from '@elementor/editor-mcp';\nimport { type PropValue } from '@elementor/editor-props';\nimport { AxiosError } from '@elementor/http-client';\nimport { z } from '@elementor/schema';\nimport { generateUniqueId } from '@elementor/utils';\n\nimport { apiClient } from '../api';\nimport { createUnpublishedComponent } from '../store/actions/create-unpublished-component';\nimport { type OverridableProps } from '../types';\n\nconst InputSchema = {\n\telement_id: z\n\t\t.string()\n\t\t.describe(\n\t\t\t'The unique identifier of the element to save as a component. ' +\n\t\t\t\t'Use the \"list-elements\" tool to find available element IDs in the current document.'\n\t\t),\n\tcomponent_name: z\n\t\t.string()\n\t\t.describe( 'The name for the new component. Should be descriptive and unique among existing components.' ),\n\toverridable_props: z\n\t\t.object( {\n\t\t\tprops: z.record(\n\t\t\t\tz.object( {\n\t\t\t\t\telementId: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.describe( 'The id of the child element that you want to override its settings' ),\n\t\t\t\t\tpropKey: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.describe(\n\t\t\t\t\t\t\t'The property key of the child element that you want to override its settings (e.g., \"text\", \"url\", \"tag\"). To get the available propKeys for an element, use the \"get-element-type-config\" tool.'\n\t\t\t\t\t\t),\n\t\t\t\t\tlabel: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.describe(\n\t\t\t\t\t\t\t'A unique, user-friendly display name for this property (e.g., \"Hero Headline\", \"CTA Button Text\"). Must be unique within the same component.'\n\t\t\t\t\t\t),\n\t\t\t\t} )\n\t\t\t),\n\t\t} )\n\t\t.optional()\n\t\t.describe(\n\t\t\t'Overridable properties configuration. Specify which CHILD element properties can be customized. ' +\n\t\t\t\t'Only elementId and propKey are required; To get the available propKeys for a child element you must use the \"get-element-type-config\" tool.'\n\t\t),\n};\n\nconst OutputSchema = {\n\tmessage: z.string().optional().describe( 'Additional information about the operation result' ),\n\tcomponent_uid: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe( 'The unique identifier of the newly created component (only present on success)' ),\n};\n\nexport const ERROR_MESSAGES = {\n\tELEMENT_NOT_FOUND: \"Element not found. Use 'list-elements' to get valid element IDs.\",\n\tELEMENT_NOT_ONE_OF_TYPES: ( validTypes: string[] ) =>\n\t\t`Element is not one of the following types: ${ validTypes.join( ', ' ) }`,\n\tELEMENT_IS_LOCKED: 'Cannot save a locked element as a component.',\n};\n\nexport const handleSaveAsComponent = async ( params: z.infer< z.ZodObject< typeof InputSchema > > ) => {\n\tconst { element_id: elementId, component_name: componentName, overridable_props: overridablePropsInput } = params;\n\tconst validElementTypes = getValidElementTypes();\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\tthrow new Error( ERROR_MESSAGES.ELEMENT_NOT_FOUND );\n\t}\n\n\tconst elType = container.model.get( 'elType' );\n\n\tif ( ! validElementTypes.includes( elType ) ) {\n\t\tthrow new Error( ERROR_MESSAGES.ELEMENT_NOT_ONE_OF_TYPES( validElementTypes ) );\n\t}\n\n\tconst element = container.model.toJSON( { remove: [ 'default' ] } ) as V1ElementData;\n\n\tif ( element?.isLocked ) {\n\t\tthrow new Error( ERROR_MESSAGES.ELEMENT_IS_LOCKED );\n\t}\n\n\tconst overridableProps = overridablePropsInput\n\t\t? enrichOverridableProps( overridablePropsInput, element )\n\t\t: undefined;\n\n\tif ( overridableProps ) {\n\t\tupdateElementDataWithOverridableProps( element, overridableProps );\n\t}\n\n\tconst uid = generateUniqueId( 'component' );\n\n\ttry {\n\t\tawait apiClient.validate( {\n\t\t\titems: [\n\t\t\t\t{ uid, title: componentName, elements: [ element ], settings: { overridable_props: overridableProps } },\n\t\t\t],\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\tif ( error instanceof AxiosError ) {\n\t\t\tthrow new Error( error.response?.data.messge );\n\t\t}\n\t\tthrow new Error( 'Unknown error' );\n\t}\n\n\tawait createUnpublishedComponent( {\n\t\tname: componentName,\n\t\telement,\n\t\teventData: null,\n\t\tuid,\n\t\toverridableProps,\n\t\tsource: 'mcp_tool',\n\t} );\n\n\treturn {\n\t\tstatus: 'ok' as const,\n\t\tmessage: `Component \"${ componentName }\" created successfully.`,\n\t\tcomponent_uid: uid,\n\t};\n};\n\nfunction enrichOverridableProps(\n\tinput: { props: Record< string, { elementId: string; propKey: string; label: string } > },\n\trootElement: V1ElementData\n): OverridableProps {\n\tconst enrichedProps: OverridableProps[ 'props' ] = {};\n\tconst defaultGroupId = generateUniqueId( 'group' );\n\n\tObject.entries( input.props ).forEach( ( [ , prop ] ) => {\n\t\tconst { elementId, propKey, label } = prop;\n\t\tconst element = findElementById( rootElement, elementId );\n\n\t\tif ( ! element ) {\n\t\t\tthrow new Error( `Element with ID \"${ elementId }\" not found in component` );\n\t\t}\n\n\t\tconst elType = element.elType;\n\t\tconst widgetType = element.widgetType || element.elType;\n\n\t\t// Validate that the propKey exists in the element's schema\n\t\tconst elementType = getElementType( widgetType );\n\n\t\tif ( ! elementType ) {\n\t\t\tthrow new Error(\n\t\t\t\t`Element type \"${ widgetType }\" is not atomic or does not have a settings schema. ` +\n\t\t\t\t\t`Cannot expose property \"${ propKey }\" for element \"${ elementId }\".`\n\t\t\t);\n\t\t}\n\n\t\tif ( ! elementType.propsSchema[ propKey ] ) {\n\t\t\tconst availableProps = Object.keys( elementType.propsSchema ).join( ', ' );\n\t\t\tthrow new Error(\n\t\t\t\t`Property \"${ propKey }\" does not exist in element \"${ elementId }\" (type: ${ widgetType }). ` +\n\t\t\t\t\t`Available properties: ${ availableProps }`\n\t\t\t);\n\t\t}\n\n\t\tconst overrideKey = generateUniqueId( 'prop' );\n\t\tconst originValue = element.settings?.[ propKey ]\n\t\t\t? ( element.settings[ propKey ] as PropValue )\n\t\t\t: elementType.propsSchema[ propKey ].default ?? null;\n\n\t\tenrichedProps[ overrideKey ] = {\n\t\t\toverrideKey,\n\t\t\tlabel,\n\t\t\telementId,\n\t\t\tpropKey,\n\t\t\telType,\n\t\t\twidgetType,\n\t\t\toriginValue,\n\t\t\tgroupId: defaultGroupId,\n\t\t};\n\t} );\n\n\treturn {\n\t\tprops: enrichedProps,\n\t\tgroups: {\n\t\t\titems: {\n\t\t\t\t[ defaultGroupId ]: {\n\t\t\t\t\tid: defaultGroupId,\n\t\t\t\t\tlabel: 'Default',\n\t\t\t\t\tprops: Object.keys( enrichedProps ),\n\t\t\t\t},\n\t\t\t},\n\t\t\torder: [ defaultGroupId ],\n\t\t},\n\t};\n}\n\nfunction updateElementDataWithOverridableProps( rootElement: V1ElementData, overridableProps: OverridableProps ) {\n\tObject.values( overridableProps.props ).forEach( ( prop ) => {\n\t\tconst element = findElementById( rootElement, prop.elementId );\n\n\t\tif ( ! element || ! element.settings ) {\n\t\t\treturn;\n\t\t}\n\n\t\telement.settings[ prop.propKey ] = {\n\t\t\t$$type: 'overridable',\n\t\t\tvalue: {\n\t\t\t\toverride_key: prop.overrideKey,\n\t\t\t\torigin_value: prop.originValue,\n\t\t\t},\n\t\t};\n\t} );\n}\n\nfunction findElementById( root: V1ElementData, targetId: string ): V1ElementData | null {\n\tif ( root.id === targetId ) {\n\t\treturn root;\n\t}\n\n\tif ( root.elements ) {\n\t\tfor ( const child of root.elements ) {\n\t\t\tconst found = findElementById( child, targetId );\n\t\t\tif ( found ) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction getValidElementTypes(): string[] {\n\tconst types = getWidgetsCache();\n\n\tif ( ! types ) {\n\t\treturn [];\n\t}\n\n\treturn Object.entries( types ).reduce( ( acc, [ type, value ] ) => {\n\t\tif ( ! value.atomic_props_schema || ! value.show_in_panel || value.elType === 'widget' ) {\n\t\t\treturn acc;\n\t\t}\n\n\t\tacc.push( type );\n\t\treturn acc;\n\t}, [] as string[] );\n}\n\nconst generatePrompt = () => {\n\tconst saveAsComponentPrompt = toolPrompts( 'save-as-component' );\n\n\tsaveAsComponentPrompt.description( `\nSave an existing element as a reusable component in the Elementor editor.\n\n# When to use this tool\nUse this tool when the user wants to:\n- Create a reusable component from an existing element structure\n- Make specific child element properties customizable in component instances\n- Build a library of reusable design patterns\n\n# When NOT to use this tool\n- Element is already a component (widgetType: 'e-component')\n- Element is locked\n- Element is not an atomic element (atomic_props_schema is not defined)\n- Element elType is a 'widget'\n\n# **CRITICAL - REQUIRED RESOURCES (Must read before using this tool)**\n1. [${ DOCUMENT_STRUCTURE_URI }]\n **MANDATORY** - Required to understand the document structure and identify child elements for overridable properties.\n Use this resource to find element IDs and understand the element hierarchy.\n\n2. [${ WIDGET_SCHEMA_URI }]\n **MANDATORY** - Required to understand which properties are available for each widget type.\n Use this to identify available propKeys in the atomic_props_schema for child elements.\n\n# Instructions - MUST FOLLOW IN ORDER\n## Step 1: Identify the Target Element\n1. Read the [${ DOCUMENT_STRUCTURE_URI }] resource to understand the document structure\n2. Locate the element you want to save as a component by its element_id\n3. Verify the element type is a valid element type\n4. Ensure the element is not locked and is not already a component\n\n## Step 2: Define Overridable Properties\nDo this step to make child element properties customizable.\nSkip that step ONLY if the user explicitly requests to not make any properties customizable.\n\n1. **Identify Child Elements**\n - Use the [${ DOCUMENT_STRUCTURE_URI }] resource to find all child elements\n - Note the elementId and widgetType/elType of each child element you want to customize\n\n2. **Find Available Properties**\n - Use the [${ WIDGET_SCHEMA_URI }] resource to find the child element's widget type schema\n - Review the atomic_props_schema to find available propKeys (ONLY use top-level props)\n - Common propKeys include: \"text\", \"url\", \"tag\", \"size\", etc.\n - Use only the top level properties, do not use nested properties.\n\n3. **Build the overridable_props Object**\n - For each property you want to make overridable, add an entry:\n \\`{ \"elementId\": \"<child-element-id>\", \"propKey\": \"<property-key>\", \"label\": \"<user-friendly-name>\" }\\`\n - The label must be unique within the component and should be meaningful to the user (e.g., \"Hero Headline\", \"CTA Button Text\")\n - Group all entries under the \"props\" object\n\n## Step 3: Execute the Tool\nCall the tool with:\n- element_id: The ID of the parent element to save as component\n- component_name: A descriptive name for the component\n- overridable_props: (Optional) The properties configuration from Step 2\n\n# CONSTRAINTS\n- NEVER try to override properties of the parent element itself - ONLY child elements\n- NEVER use invalid propKeys - always verify against the widget's atomic_props_schema in [${ WIDGET_SCHEMA_URI }]\n- Property keys must exist in the child element's atomic_props_schema\n- Element IDs must exist within the target element's children\n- When tool execution fails, read the error message and adjust accordingly\n- The element being saved must not be inside another component\n` );\n\n\tsaveAsComponentPrompt.parameter(\n\t\t'element_id',\n\t\t`**MANDATORY** The unique identifier of the element to save as a component.\nUse the [${ DOCUMENT_STRUCTURE_URI }] resource to find available element IDs.`\n\t);\n\n\tsaveAsComponentPrompt.parameter(\n\t\t'component_name',\n\t\t`**MANDATORY** A descriptive name for the new component.\nShould be unique and clearly describe the component's purpose (e.g., \"Hero Section\", \"Feature Card\").`\n\t);\n\n\tsaveAsComponentPrompt.parameter(\n\t\t'overridable_props',\n\t\t`**OPTIONAL** Configuration for which child element properties can be customized in component instances.\n\nStructure:\n\\`\\`\\`json\n{\n \"props\": {\n \"<unique-key>\": {\n \"elementId\": \"<child-element-id>\",\n \"propKey\": \"<property-key>\",\n \"label\": \"<user-friendly-name>\"\n }\n }\n}\n\\`\\`\\`\n\nTo populate this correctly:\n1. Use [${ DOCUMENT_STRUCTURE_URI }] to find child element IDs and their widgetType\n2. Use [${ WIDGET_SCHEMA_URI }] to find the atomic_props_schema for each child element's widgetType\n3. Only include properties you want to be customizable in component instances\n4. Provide a unique, user-friendly label for each property (e.g., \"Hero Headline\", \"CTA Button Text\")`\n\t);\n\n\tsaveAsComponentPrompt.example( `\nBasic component without overridable properties:\n\\`\\`\\`json\n{\n \"element_id\": \"abc123\",\n \"component_name\": \"Hero Section\"\n}\n\\`\\`\\`\n\nComponent with overridable properties:\n\\`\\`\\`json\n{\n \"element_id\": \"abc123\",\n \"component_name\": \"Feature Card\",\n \"overridable_props\": {\n \"props\": {\n \"heading-text\": {\n \"elementId\": \"heading-123\",\n \"propKey\": \"text\",\n \"label\": \"Card Title\"\n },\n \"button-text\": {\n \"elementId\": \"button-456\",\n \"propKey\": \"text\",\n \"label\": \"Button Text\"\n },\n \"button-link\": {\n \"elementId\": \"button-456\",\n \"propKey\": \"url\",\n \"label\": \"Button Link\"\n }\n }\n }\n}\n\\`\\`\\`\n` );\n\n\tsaveAsComponentPrompt.instruction(\n\t\t`After successful creation, the component will be available in the components library and can be inserted into any page or template.`\n\t);\n\n\tsaveAsComponentPrompt.instruction(\n\t\t`When overridable properties are defined, component instances will show customization controls for those specific properties in the editing panel.`\n\t);\n\n\treturn saveAsComponentPrompt.prompt();\n};\n\nexport const initSaveAsComponentTool = () => {\n\treturn getMCPByDomain( 'components' ).addTool( {\n\t\tname: 'save-as-component',\n\t\tschema: InputSchema,\n\t\toutputSchema: OutputSchema,\n\t\tdescription: generatePrompt(),\n\t\thandler: handleSaveAsComponent,\n\t} );\n};\n","import { useEffect } from 'react';\nimport { __dispatch as dispatch } from '@elementor/store';\n\nimport { loadComponents } from './store/thunks';\n\nexport function PopulateStore() {\n\tuseEffect( () => {\n\t\tdispatch( loadComponents() );\n\t}, [] );\n\n\treturn null;\n}\n","import { getAllDescendants, type V1Element } from '@elementor/editor-elements';\nimport { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\nimport { __getState as getState } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { type ComponentInstanceProp } from './prop-types/component-instance-prop-type';\nimport { type ComponentsSlice, selectCurrentComponentId, selectPath } from './store/store';\nimport { type ExtendedWindow } from './types';\n\nconst COMPONENT_TYPE = 'e-component';\n\ntype CreateArgs = {\n\tcontainer?: V1Element;\n\tmodel?: {\n\t\telType?: string;\n\t\twidgetType?: string;\n\t\tsettings?: {\n\t\t\tcomponent_instance?: ComponentInstanceProp;\n\t\t};\n\t};\n};\n\ntype MoveArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\ttarget?: V1Element;\n};\n\ntype PasteArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\tstorageType?: string;\n};\n\nexport type ClipboardElement = {\n\twidgetType?: string;\n\tsettings?: {\n\t\tcomponent_instance?: ComponentInstanceProp;\n\t};\n\telements?: ClipboardElement[];\n};\n\ntype StorageContent = {\n\tclipboard?: {\n\t\telements?: ClipboardElement[];\n\t};\n};\n\nconst COMPONENT_CIRCULAR_NESTING_ALERT: NotificationData = {\n\ttype: 'default',\n\tmessage: __( \"Can't add this component - components that contain each other can't be nested.\", 'elementor' ),\n\tid: 'circular-component-nesting-blocked',\n};\n\nexport function initCircularNestingPrevention() {\n\tblockCommand( {\n\t\tcommand: 'document/elements/create',\n\t\tcondition: blockCircularCreate,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/move',\n\t\tcondition: blockCircularMove,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste',\n\t\tcondition: blockCircularPaste,\n\t} );\n}\n\n// Note that this function only checks for direct circular nesting, not indirect nesting\nexport function wouldCreateCircularNesting( componentIdToAdd: number | string | undefined ): boolean {\n\tif ( componentIdToAdd === undefined ) {\n\t\treturn false;\n\t}\n\n\tconst state = getState() as ComponentsSlice;\n\tconst currentComponentId = selectCurrentComponentId( state );\n\tconst path = selectPath( state );\n\n\tif ( currentComponentId === null ) {\n\t\treturn false;\n\t}\n\n\tif ( componentIdToAdd === currentComponentId ) {\n\t\treturn true;\n\t}\n\n\treturn path.some( ( item ) => item.componentId === componentIdToAdd );\n}\n\nfunction extractComponentIdFromModel( model: CreateArgs[ 'model' ] ): number | string | null {\n\tif ( ! model ) {\n\t\treturn null;\n\t}\n\n\tconst isComponent = model.widgetType === COMPONENT_TYPE;\n\n\tif ( ! isComponent ) {\n\t\treturn null;\n\t}\n\n\treturn model.settings?.component_instance?.value?.component_id?.value ?? null;\n}\n\nfunction extractComponentIdFromElement( element: ClipboardElement ): number | string | null {\n\tif ( element.widgetType !== COMPONENT_TYPE ) {\n\t\treturn null;\n\t}\n\n\treturn element.settings?.component_instance?.value?.component_id?.value ?? null;\n}\n\nexport function extractComponentIdsFromElements( elements: ClipboardElement[] ): Array< number | string > {\n\tconst ids: Array< number | string > = [];\n\n\tfor ( const element of elements ) {\n\t\tconst componentId = extractComponentIdFromElement( element );\n\n\t\tif ( componentId !== null ) {\n\t\t\tids.push( componentId );\n\t\t}\n\n\t\tif ( element.elements?.length ) {\n\t\t\tids.push( ...extractComponentIdsFromElements( element.elements ) );\n\t\t}\n\t}\n\n\treturn ids;\n}\n\nfunction extractComponentIdFromContainer( container: V1Element ): number | string | null {\n\tconst widgetType = container.model?.get?.( 'widgetType' );\n\n\tif ( widgetType !== COMPONENT_TYPE ) {\n\t\treturn null;\n\t}\n\n\tconst settings = container.model?.get?.( 'settings' ) as { get?: ( key: string ) => unknown } | undefined;\n\tconst componentInstance = settings?.get?.( 'component_instance' ) as ComponentInstanceProp | undefined;\n\n\treturn componentInstance?.value?.component_id?.value ?? null;\n}\n\nfunction blockCircularCreate( args: CreateArgs ): boolean {\n\tconst componentId = extractComponentIdFromModel( args.model );\n\n\tif ( componentId === null ) {\n\t\treturn false;\n\t}\n\n\tconst isBlocked = wouldCreateCircularNesting( componentId );\n\n\tif ( isBlocked ) {\n\t\tnotify( COMPONENT_CIRCULAR_NESTING_ALERT );\n\t}\n\n\treturn isBlocked;\n}\n\nfunction blockCircularMove( args: MoveArgs ): boolean {\n\tconst { containers = [ args.container ] } = args;\n\n\tconst hasCircularComponent = containers.some( ( container ) => {\n\t\tif ( ! container ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst allElements = getAllDescendants( container );\n\n\t\treturn allElements.some( ( element ) => {\n\t\t\tconst componentId = extractComponentIdFromContainer( element );\n\n\t\t\tif ( componentId === null ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn wouldCreateCircularNesting( componentId );\n\t\t} );\n\t} );\n\n\tif ( hasCircularComponent ) {\n\t\tnotify( COMPONENT_CIRCULAR_NESTING_ALERT );\n\t}\n\n\treturn hasCircularComponent;\n}\n\nfunction blockCircularPaste( args: PasteArgs ): boolean {\n\tconst { storageType } = args;\n\n\tif ( storageType !== 'localstorage' ) {\n\t\treturn false;\n\t}\n\n\tconst data = (\n\t\twindow as unknown as ExtendedWindow & { elementorCommon?: { storage?: { get: () => StorageContent } } }\n\t )?.elementorCommon?.storage?.get();\n\n\tif ( ! data?.clipboard?.elements ) {\n\t\treturn false;\n\t}\n\n\tconst allComponentIds = extractComponentIdsFromElements( data.clipboard.elements );\n\tconst hasCircularComponent = allComponentIds.some( wouldCreateCircularNesting );\n\n\tif ( hasCircularComponent ) {\n\t\tnotify( COMPONENT_CIRCULAR_NESTING_ALERT );\n\t}\n\n\treturn hasCircularComponent;\n}\n","import { __dispatch as dispatch } from '@elementor/store';\n\nimport { apiClient } from '../../api';\nimport { slice } from '../store';\n\nexport function removeComponentStyles( id: number ) {\n\tapiClient.invalidateComponentConfigCache( id );\n\tdispatch( slice.actions.removeStyles( { id } ) );\n}\n","import { createStylesProvider } from '@elementor/editor-styles-repository';\nimport { __getState as getState, __subscribeWithSelector as subscribeWithSelector } from '@elementor/store';\n\nimport { selectFlatStyles, SLICE_NAME } from './store';\n\nexport const componentsStylesProvider = createStylesProvider( {\n\tkey: 'components-styles',\n\tpriority: 100,\n\tsubscribe: ( cb ) =>\n\t\tsubscribeWithSelector(\n\t\t\t( state ) => state[ SLICE_NAME ],\n\t\t\t() => {\n\t\t\t\tcb();\n\t\t\t}\n\t\t),\n\tactions: {\n\t\tall: () => {\n\t\t\treturn selectFlatStyles( getState() );\n\t\t},\n\t\tget: ( id ) => {\n\t\t\treturn selectFlatStyles( getState() ).find( ( style ) => style.id === id ) ?? null;\n\t\t},\n\t},\n} );\n","import { updateElementSettings, type V1ElementData } from '@elementor/editor-elements';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../api';\nimport { type ComponentInstanceProp } from '../prop-types/component-instance-prop-type';\nimport { selectUnpublishedComponents, slice } from '../store/store';\nimport { type DocumentSaveStatus, type UnpublishedComponent } from '../types';\n\nexport async function createComponentsBeforeSave( {\n\telements,\n\tstatus,\n}: {\n\telements: V1ElementData[];\n\tstatus: DocumentSaveStatus;\n} ) {\n\tconst unpublishedComponents = selectUnpublishedComponents( getState() );\n\n\tif ( ! unpublishedComponents.length ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tconst uidToComponentId = await createComponents( unpublishedComponents, status );\n\n\t\tupdateComponentInstances( elements, uidToComponentId );\n\n\t\tdispatch(\n\t\t\tslice.actions.add(\n\t\t\t\tunpublishedComponents.map( ( component ) => ( {\n\t\t\t\t\tid: uidToComponentId.get( component.uid ) as number,\n\t\t\t\t\tname: component.name,\n\t\t\t\t\tuid: component.uid,\n\t\t\t\t\toverridableProps: component.overridableProps ? component.overridableProps : undefined,\n\t\t\t\t} ) )\n\t\t\t)\n\t\t);\n\t\tdispatch( slice.actions.resetUnpublished() );\n\t} catch ( error ) {\n\t\tthrow new Error( `Failed to publish components and update component instances: ${ error }` );\n\t}\n}\n\nasync function createComponents(\n\tcomponents: UnpublishedComponent[],\n\tstatus: DocumentSaveStatus\n): Promise< Map< string, number > > {\n\tconst response = await apiClient.create( {\n\t\tstatus,\n\t\titems: components.map( ( component ) => ( {\n\t\t\tuid: component.uid,\n\t\t\ttitle: component.name,\n\t\t\telements: component.elements,\n\t\t\tsettings: component.overridableProps ? { overridable_props: component.overridableProps } : undefined,\n\t\t} ) ),\n\t} );\n\n\tconst map = new Map< string, number >();\n\n\tObject.entries( response ).forEach( ( [ key, value ] ) => {\n\t\tmap.set( key, value );\n\t} );\n\n\treturn map;\n}\n\nfunction updateComponentInstances( elements: V1ElementData[], uidToComponentId: Map< string, number > ): void {\n\telements.forEach( ( element ) => {\n\t\tconst { shouldUpdate, newComponentId } = shouldUpdateElement( element, uidToComponentId );\n\t\tif ( shouldUpdate ) {\n\t\t\tupdateElementComponentId( element.id, newComponentId );\n\t\t}\n\n\t\tif ( element.elements ) {\n\t\t\tupdateComponentInstances( element.elements, uidToComponentId );\n\t\t}\n\t} );\n}\n\nfunction shouldUpdateElement(\n\telement: V1ElementData,\n\tuidToComponentId: Map< string, number >\n): { shouldUpdate: true; newComponentId: number } | { shouldUpdate: false; newComponentId: null } {\n\tif ( element.widgetType === 'e-component' ) {\n\t\tconst currentComponentId = ( element.settings?.component_instance as ComponentInstanceProp )?.value\n\t\t\t?.component_id.value;\n\n\t\tif ( currentComponentId && uidToComponentId.has( currentComponentId.toString() ) ) {\n\t\t\treturn {\n\t\t\t\tshouldUpdate: true,\n\t\t\t\tnewComponentId: uidToComponentId.get( currentComponentId.toString() ) as number,\n\t\t\t};\n\t\t}\n\t}\n\treturn { shouldUpdate: false, newComponentId: null };\n}\n\nfunction updateElementComponentId( elementId: string, componentId: number ): void {\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: {\n\t\t\tcomponent_instance: {\n\t\t\t\t$$type: 'component-instance',\n\t\t\t\tvalue: {\n\t\t\t\t\tcomponent_id: { $$type: 'number', value: componentId },\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\twithHistory: false,\n\t} );\n}\n","import { type V1Document } from '@elementor/editor-documents';\nimport { type V1Element } from '@elementor/editor-elements';\nimport { __getState as getState } from '@elementor/store';\n\nimport { COMPONENT_DOCUMENT_TYPE } from '../components/consts';\nimport { selectOverridableProps } from '../store/store';\n\nexport const setComponentOverridablePropsSettingsBeforeSave = ( {\n\tcontainer,\n}: {\n\tcontainer: V1Element & { document: V1Document };\n} ) => {\n\tconst currentDocument = container.document;\n\n\tif ( ! currentDocument || currentDocument.config.type !== COMPONENT_DOCUMENT_TYPE ) {\n\t\treturn;\n\t}\n\n\tconst overridableProps = selectOverridableProps( getState(), currentDocument.id );\n\tif ( overridableProps ) {\n\t\tcontainer.settings.set( 'overridable_props', overridableProps );\n\t}\n};\n","import { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../api';\nimport { selectArchivedThisSession } from '../store/store';\n\nconst failedNotification = ( message: string ): NotificationData => ( {\n\ttype: 'error',\n\tmessage: `Failed to archive components: ${ message }`,\n\tid: 'failed-archived-components-notification',\n} );\n\nexport const updateArchivedComponentBeforeSave = async () => {\n\ttry {\n\t\tconst archivedComponents = selectArchivedThisSession( getState() );\n\n\t\tif ( ! archivedComponents.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst result = await apiClient.updateArchivedComponents( archivedComponents );\n\n\t\tconst failedIds = result.failedIds.join( ', ' );\n\n\t\tif ( failedIds ) {\n\t\t\tnotify( failedNotification( failedIds ) );\n\t\t}\n\t} catch ( error ) {\n\t\tthrow new Error( `Failed to update archived components: ${ error }` );\n\t}\n};\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { apiClient } from '../api';\nimport { selectUpdatedComponentNames, slice } from '../store/store';\n\nexport const updateComponentTitleBeforeSave = async () => {\n\tconst updatedComponentNames = selectUpdatedComponentNames( getState() );\n\n\tif ( ! updatedComponentNames.length ) {\n\t\treturn;\n\t}\n\n\tconst result = await apiClient.updateComponentTitle( updatedComponentNames );\n\n\tif ( result.failedIds.length === 0 ) {\n\t\tdispatch( slice.actions.cleanUpdatedComponentNames() );\n\t}\n};\n","import { isDocumentDirty } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\n\nimport { apiClient } from '../api';\nimport { type DocumentSaveStatus } from '../types';\nimport { getComponentDocumentData, invalidateComponentDocumentData } from '../utils/component-document-data';\nimport { getComponentIds } from '../utils/get-component-ids';\n\ntype Options = {\n\tstatus: DocumentSaveStatus;\n\telements: V1ElementData[];\n};\n\nexport async function updateComponentsBeforeSave( { status, elements }: Options ) {\n\tif ( status !== 'publish' ) {\n\t\treturn;\n\t}\n\n\tconst componentIds = await getComponentIds( elements );\n\n\tconst componentDocumentData = await Promise.all( componentIds.map( getComponentDocumentData ) );\n\n\tconst draftIds = componentDocumentData\n\t\t.filter( ( document ) => !! document )\n\t\t.filter( isDocumentDirty )\n\t\t.map( ( document ) => document.id );\n\n\tif ( draftIds.length === 0 ) {\n\t\treturn;\n\t}\n\n\tawait apiClient.updateStatuses( draftIds, 'publish' );\n\n\tdraftIds.forEach( ( id ) => invalidateComponentDocumentData( id ) );\n}\n","import { type V1Document } from '@elementor/editor-documents';\nimport { type V1Element, type V1ElementData } from '@elementor/editor-elements';\n\nimport { type DocumentSaveStatus } from '../types';\nimport { createComponentsBeforeSave } from './create-components-before-save';\nimport { setComponentOverridablePropsSettingsBeforeSave } from './set-component-overridable-props-settings-before-save';\nimport { updateArchivedComponentBeforeSave } from './update-archived-component-before-save';\nimport { updateComponentTitleBeforeSave } from './update-component-title-before-save';\nimport { updateComponentsBeforeSave } from './update-components-before-save';\n\ntype Options = {\n\tcontainer: V1Element & {\n\t\tdocument: V1Document;\n\t\tmodel: {\n\t\t\tget: ( key: 'elements' ) => {\n\t\t\t\ttoJSON: () => V1ElementData[];\n\t\t\t};\n\t\t};\n\t};\n\tstatus: DocumentSaveStatus;\n};\n\nexport const beforeSave = ( { container, status }: Options ) => {\n\tconst elements = container?.model.get( 'elements' ).toJSON?.() ?? [];\n\n\treturn Promise.all( [\n\t\tupdateArchivedComponentBeforeSave(),\n\t\tcreateComponentsBeforeSave( { elements, status } ),\n\t\tupdateComponentsBeforeSave( { elements, status } ),\n\t\tsetComponentOverridablePropsSettingsBeforeSave( { container } ),\n\t\tupdateComponentTitleBeforeSave(),\n\t] );\n};\n","import { getAllDescendants, type V1Element } from '@elementor/editor-elements';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\n\nimport { type ComponentsSlice, selectCurrentComponentId, selectOverridableProps, slice } from '../store/store';\nimport { removePropFromAllGroups } from '../store/utils/groups-transformers';\n\ntype DeleteCommandArgs = {\n\tcontainer?: V1Element;\n\tcontainers?: V1Element[];\n};\n\nexport function initCleanupOverridablePropsOnDelete() {\n\tregisterDataHook( 'dependency', 'document/elements/delete', ( args: DeleteCommandArgs ) => {\n\t\tconst state = getState() as ComponentsSlice | undefined;\n\n\t\tif ( ! state ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst currentComponentId = selectCurrentComponentId( state );\n\n\t\tif ( ! currentComponentId ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst overridableProps = selectOverridableProps( state, currentComponentId );\n\n\t\tif ( ! overridableProps || Object.keys( overridableProps.props ).length === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst containers = args.containers ?? ( args.container ? [ args.container ] : [] );\n\n\t\tif ( containers.length === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst deletedElementIds = collectDeletedElementIds( containers );\n\n\t\tif ( deletedElementIds.length === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst propKeysToDelete = Object.entries( overridableProps.props )\n\t\t\t.filter( ( [ , prop ] ) => deletedElementIds.includes( prop.elementId ) )\n\t\t\t.map( ( [ propKey ] ) => propKey );\n\n\t\tif ( propKeysToDelete.length === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst remainingProps = Object.fromEntries(\n\t\t\tObject.entries( overridableProps.props ).filter( ( [ propKey ] ) => ! propKeysToDelete.includes( propKey ) )\n\t\t);\n\n\t\tlet updatedGroups = overridableProps.groups;\n\t\tfor ( const propKey of propKeysToDelete ) {\n\t\t\tupdatedGroups = removePropFromAllGroups( updatedGroups, propKey );\n\t\t}\n\n\t\tdispatch(\n\t\t\tslice.actions.setOverridableProps( {\n\t\t\t\tcomponentId: currentComponentId,\n\t\t\t\toverridableProps: {\n\t\t\t\t\t...overridableProps,\n\t\t\t\t\tprops: remainingProps,\n\t\t\t\t\tgroups: updatedGroups,\n\t\t\t\t},\n\t\t\t} )\n\t\t);\n\n\t\treturn true;\n\t} );\n}\n\nfunction collectDeletedElementIds( containers: V1Element[] ): string[] {\n\tconst elementIds = containers\n\t\t.filter( Boolean )\n\t\t.flatMap( ( container ) => [ container, ...getAllDescendants( container ) ] )\n\t\t.map( ( element ) => element.model?.get?.( 'id' ) ?? element.id )\n\t\t.filter( ( id ): id is string => Boolean( id ) );\n\n\treturn elementIds;\n}\n","import { type V1Element, type V1ElementData } from '@elementor/editor-elements';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\n\nimport { loadComponentsAssets } from '../store/actions/load-components-assets';\n\nexport function initLoadComponentDataAfterInstanceAdded() {\n\tregisterDataHook( 'after', 'document/elements/paste', ( _args, result: V1Element | V1Element[] ) => {\n\t\tload( result );\n\t} );\n\n\tregisterDataHook( 'after', 'document/elements/import', ( _args, result: V1Element | V1Element[] ) => {\n\t\tload( result );\n\t} );\n}\n\nfunction load( result: V1Element | V1Element[] ) {\n\tconst containers = Array.isArray( result ) ? result : [ result ];\n\n\tloadComponentsAssets( containers.map( ( container ) => container.model.toJSON() as V1ElementData ) );\n}\n","import { getAllDescendants, getContainer, updateElementSettings, type V1Element } from '@elementor/editor-elements';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { generateUniqueId } from '@elementor/utils';\n\nimport { componentInstanceOverridePropTypeUtil } from '../prop-types/component-instance-override-prop-type';\nimport {\n\tcomponentInstanceOverridesPropTypeUtil,\n\ttype ComponentInstanceOverridesPropValue,\n} from '../prop-types/component-instance-overrides-prop-type';\nimport {\n\tcomponentInstancePropTypeUtil,\n\ttype ComponentInstancePropValue,\n} from '../prop-types/component-instance-prop-type';\nimport { isComponentInstance } from '../utils/is-component-instance';\n\nexport function initRegenerateOverrideKeys() {\n\tregisterDataHook( 'after', 'document/elements/duplicate', ( _args, result: V1Element | V1Element[] ) => {\n\t\tregenerateOverrideKeysForContainers( result );\n\t} );\n\n\tregisterDataHook( 'after', 'document/elements/paste', ( _args, result: V1Element | V1Element[] ) => {\n\t\tregenerateOverrideKeysForContainers( result );\n\t} );\n\n\tregisterDataHook( 'after', 'document/elements/import', ( _args, result: V1Element | V1Element[] ) => {\n\t\tregenerateOverrideKeysForContainers( result );\n\t} );\n}\n\nexport function regenerateOverrideKeysForContainers( result: V1Element | V1Element[] ) {\n\tconst containers = Array.isArray( result ) ? result : [ result ];\n\n\tcontainers.forEach( ( container ) => {\n\t\tregenerateOverrideKeysRecursive( container.id );\n\t} );\n}\n\nfunction regenerateOverrideKeysRecursive( elementId: string ) {\n\tconst container = getContainer( elementId );\n\n\tif ( ! container ) {\n\t\treturn;\n\t}\n\n\tgetAllDescendants( container ).forEach( regenerateOverrideKeys );\n}\n\nfunction regenerateOverrideKeys( element: V1Element ) {\n\tif ( ! isComponentInstance( element.model.toJSON() ) ) {\n\t\treturn;\n\t}\n\n\tconst settings = element.settings?.toJSON() ?? {};\n\n\tif ( ! hasOverrides( settings ) ) {\n\t\treturn;\n\t}\n\n\tconst componentInstance = settings.component_instance;\n\tconst overrides = componentInstance.value.overrides;\n\n\tconst newOverrides = overrides.value.map( ( override ) => {\n\t\tif ( ! componentInstanceOverridePropTypeUtil.isValid( override ) ) {\n\t\t\treturn override;\n\t\t}\n\n\t\treturn {\n\t\t\t...override,\n\t\t\tvalue: {\n\t\t\t\t...override.value,\n\t\t\t\toverride_key: generateUniqueId( 'prop' ),\n\t\t\t},\n\t\t};\n\t} );\n\n\tconst newComponentInstance = {\n\t\t...componentInstance,\n\t\tvalue: {\n\t\t\t...componentInstance.value,\n\t\t\toverrides: {\n\t\t\t\t...overrides,\n\t\t\t\tvalue: newOverrides,\n\t\t\t},\n\t\t},\n\t};\n\n\tupdateElementSettings( {\n\t\tid: element.id,\n\t\tprops: { component_instance: newComponentInstance },\n\t\twithHistory: false,\n\t} );\n}\n\nfunction hasOverrides( settings: Record< string, unknown > ): settings is {\n\tcomponent_instance: NonNullable< ComponentInstancePropValue > & {\n\t\tvalue: { overrides: { $$type: string; value: NonNullable< ComponentInstanceOverridesPropValue >[] } };\n\t};\n} {\n\tif ( ! componentInstancePropTypeUtil.isValid( settings?.component_instance ) ) {\n\t\treturn false;\n\t}\n\n\tconst componentInstance = componentInstancePropTypeUtil.extract( settings?.component_instance );\n\n\tconst overrides = componentInstance?.overrides;\n\n\tif ( ! componentInstanceOverridesPropTypeUtil.isValid( overrides ) ) {\n\t\treturn false;\n\t}\n\n\tconst overridesValue = overrides?.value;\n\n\treturn !! overridesValue?.length;\n}\n"],"mappings":"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","names":["settingsTransformersRegistry","registerDataHook","__","id","id","id","createTransformer","createTransformer","React","getV1DocumentsManager","getState","Box","Divider","IconButton","Stack","Tooltip","Typography","__","getV1DocumentsManager","useSelector","runCommand","runCommand","isComponentInstance","useSelector","getV1DocumentsManager","getState","getState","React","Box","__","React","useState","setDocumentModifiedStatus","ComponentPropListIcon","XIcon","IconButton","List","Stack","Tooltip","generateUniqueId","__","getState","getState","dispatch","getState","id","getState","dispatch","dispatch","getState","createPropUtils","z","createPropUtils","z","createPropUtils","z","createPropUtils","z","createPropUtils","z","getState","__","__","getState","isOriginValueOverride","getState","dispatch","dispatch","getState","getState","dispatch","dispatch","getState","getState","dispatch","dispatch","getState","getState","dispatch","useSelector","useOverridableProps","useSelector","React","Link","Stack","Typography","__","__","Stack","Typography","__","Link","React","MenuListItem","bindTrigger","Box","IconButton","Stack","Typography","usePopupState","__","React","Box","Popover","Typography","React","useState","Button","Stack","Typography","__","__","__","useState","Stack","Typography","Button","React","Box","id","Box","Typography","Popover","usePopupState","Box","Stack","Typography","IconButton","__","bindTrigger","MenuListItem","useState","__","dispatch","getState","getState","dispatch","__","ERROR_MESSAGES","useState","useOverridableProps","id","__","useOverridableProps","useState","generateUniqueId","setDocumentModifiedStatus","Stack","ComponentPropListIcon","__","Tooltip","IconButton","XIcon","List","Box","__","React","useRef","ComponentPropListIcon","Box","styled","Tooltip","__","useOverridableProps","Box","Stack","Tooltip","__","IconButton","Typography","Divider","getState","getV1DocumentsManager","React","ThemeProvider","useSelector","useSelector","React","Box","Stack","TextField","__","React","Stack","Box","TextField","__","React","useState","ComponentsIcon","Box","Button","Divider","Link","List","Stack","Typography","__","getV1DocumentsManager","setDocumentModifiedStatus","dispatch","dispatch","setDocumentModifiedStatus","getV1DocumentsManager","React","Button","Typography","__","React","useRef","useState","EditableField","MenuListItem","useEditable","DotsVerticalIcon","bindMenu","bindTrigger","Box","IconButton","Menu","Stack","styled","Typography","usePopupState","__","setDocumentModifiedStatus","dispatch","__","__","dispatch","setDocumentModifiedStatus","setDocumentModifiedStatus","dispatch","getState","getState","dispatch","dispatch","getState","getState","id","dispatch","setDocumentModifiedStatus","getState","z","__","getState","getContainer","getCurrentDocumentContainer","createComponentModel","React","__","renameComponent","useRef","useState","useEditable","createComponentModel","usePopupState","Stack","Box","EditableField","Typography","IconButton","bindTrigger","DotsVerticalIcon","Menu","bindMenu","MenuListItem","__","styled","React","Box","ListItemButton","Stack","List","useState","__","Stack","ComponentsIcon","Typography","Link","Divider","Button","Box","React","Box","Typography","__","ThemeProvider","React","useEffect","useMemo","useRef","useState","notify","ThemeProvider","ComponentsIcon","getState","Button","FormLabel","Grid","Popover","Stack","TextField","Typography","__","getAllDescendants","notify","__","__","notify","getAllDescendants","runCommand","dispatch","generateUniqueId","generateUniqueId","dispatch","runCommand","useMemo","useState","useState","useRef","useEffect","notify","__","getState","ThemeProvider","Popover","Form","validateForm","useMemo","Stack","ComponentsIcon","Typography","Grid","FormLabel","TextField","Button","React","useEffect","getV1DocumentsManager","commandEndEvent","useSelector","throttle","setDocumentModifiedStatus","getStore","dispatch","getStore","React","useEffect","__","useEffect","useState","useEffect","__","throttle","getV1DocumentsManager","useSelector","useEffect","commandEndEvent","id","React","Box","Button","Stack","Typography","__","React","useSelectedElement","PanelBody","PanelHeader","PanelHeaderTitle","EllipsisWithTooltip","ComponentsIcon","PencilIcon","Divider","IconButton","Stack","Tooltip","__","React","ComponentPropListIcon","Button","Stack","Typography","__","EmptyState","__","Stack","ComponentPropListIcon","Typography","Button","React","Box","ListItemButton","Stack","React","ElementProvider","useElement","getContainer","getElementType","Stack","getElementType","React","createContext","useContext","dispatch","getState","getState","dispatch","getWidgetsCache","React","Stack","useElement","elType","widgetType","propKey","elementId","getContainer","getElementType","ElementProvider","Stack","id","Box","ListItemButton","Stack","useSelectedElement","__","PanelHeader","Stack","ComponentsIcon","EllipsisWithTooltip","PanelHeaderTitle","Tooltip","IconButton","PencilIcon","PanelBody","EmptyState","Divider","React","ControlReplacementsProvider","PropKeyProvider","PropProvider","useBoundProp","createTopLevelObjectType","getControlReplacements","useElement","OriginalControl","useElement","useBoundProp","getControlReplacements","isComponentInstance","propValue","createTopLevelObjectType","PropProvider","PropKeyProvider","ControlReplacementsProvider","React","useBoundProp","useElement","getWidgetsCache","bindPopover","bindTrigger","Popover","Tooltip","usePopupState","__","dispatch","getState","generateUniqueId","getState","generateUniqueId","dispatch","React","forwardRef","Box","styled","__","SIZE","Indicator","getState","getState","useBoundProp","Content","useElement","usePopupState","bindTrigger","bindPopover","getWidgetsCache","Tooltip","__","Indicator","Popover","getMCPByDomain","getContainer","getElementType","getWidgetsCache","z","generateUniqueId","z","ERROR_MESSAGES","getContainer","generateUniqueId","getElementType","getWidgetsCache","getMCPByDomain","useEffect","dispatch","useEffect","dispatch","getAllDescendants","notify","blockCommand","getState","__","__","blockCommand","getState","notify","getAllDescendants","dispatch","id","dispatch","getState","getState","id","updateElementSettings","dispatch","getState","getState","dispatch","updateElementSettings","getState","getState","notify","getState","getState","notify","dispatch","getState","getState","dispatch","isDocumentDirty","isDocumentDirty","id","getAllDescendants","dispatch","getState","getState","dispatch","getAllDescendants","id","registerDataHook","registerDataHook","getAllDescendants","getContainer","updateElementSettings","registerDataHook","generateUniqueId","registerDataHook","getContainer","getAllDescendants","generateUniqueId","updateElementSettings","registerDataHook","__","id","settingsTransformersRegistry"]}
|