@elementor/editor-components 4.1.0-692 → 4.1.0-694

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/init.ts","../src/component-instance-transformer.ts","../src/store/store.ts","../src/store/store-types.ts","../src/store/extensible-slice.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/components-tab/components.tsx","../src/hooks/use-components.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/components/components-tab/components-item.tsx","../src/components/components-tab/loading-components.tsx","../src/components/components-tab/components-pro-notification.tsx","../src/components/components-upgrade-alert.tsx","../src/components/detach-instance-confirmation-dialog.tsx","../src/components/in-edit-mode.tsx","../src/components/instance-editing-panel/instance-editing-panel.tsx","../src/provider/component-instance-context.tsx","../src/components/instance-editing-panel/detach-action.tsx","../src/utils/detach-component-instance/detach-component-instance.ts","../src/prop-types/component-instance-overrides-prop-type.ts","../src/prop-types/component-instance-override-prop-type.ts","../src/prop-types/component-overridable-prop-type.ts","../src/prop-types/component-instance-prop-type.ts","../src/utils/tracking.ts","../src/utils/detach-component-instance/resolve-detached-instance.ts","../src/utils/detach-component-instance/regenerate-local-style-ids.ts","../src/consts.ts","../src/utils/is-component-instance.ts","../src/utils/detach-component-instance/resolve-overridable-settings.ts","../src/components/instance-editing-panel/instance-panel-header.tsx","../src/components/instance-editing-panel/empty-state.tsx","../src/components/instance-editing-panel/instance-panel-body.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/utils/resolve-override-prop-value.ts","../src/store/dispatchers.ts","../src/store/selectors.ts","../src/store/actions/update-overridable-prop.ts","../src/utils/get-container-by-origin-id.ts","../src/utils/get-prop-type-for-component-override.ts","../src/utils/overridable-props-utils.ts","../src/components/control-label.tsx","../src/components/errors.ts","../src/components/instance-editing-panel/use-resolved-origin-value.tsx","../src/utils/get-overridable-prop.ts","../src/components/instance-editing-panel/use-instance-panel-data.ts","../src/utils/filter-valid-overridable-props.ts","../src/hooks/use-sanitize-overridable-props.ts","../src/components/load-template-components.tsx","../src/store/actions/load-components-assets.ts","../src/utils/get-component-documents.ts","../src/store/actions/load-components-overridable-props.ts","../src/store/actions/load-components-styles.ts","../src/create-component-type.ts","../src/utils/format-component-elements-id.ts","../src/utils/switch-to-component.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/publish-draft-components-in-page-before-save.ts","../src/sync/before-save.ts","../src/sync/load-component-data-after-instance-added.ts"],"sourcesContent":["import { injectIntoLogic } from '@elementor/editor';\nimport {\n\ttype CreateTemplatedElementTypeOptions,\n\tregisterElementType,\n\tsettingsTransformersRegistry,\n} from '@elementor/editor-canvas';\nimport { getV1CurrentDocument } from '@elementor/editor-documents';\nimport { registerEditingPanelReplacement } from '@elementor/editor-editing-panel';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { injectTab } from '@elementor/editor-elements-panel';\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 { Components } from './components/components-tab/components';\nimport { openDetachConfirmDialog } from './components/detach-instance-confirmation-dialog';\nimport { openEditModeDialog } from './components/in-edit-mode';\nimport { InstanceEditingPanel } from './components/instance-editing-panel/instance-editing-panel';\nimport { LoadTemplateComponents } from './components/load-template-components';\nimport { COMPONENT_WIDGET_TYPE, createComponentType } from './create-component-type';\nimport { PopulateStore } from './populate-store';\nimport { initCircularNestingPrevention } from './prevent-circular-nesting';\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 { initLoadComponentDataAfterInstanceAdded } from './sync/load-component-data-after-instance-added';\nimport { type ExtendedWindow } from './types';\n\nexport function init() {\n\tstylesRepository.register( componentsStylesProvider );\n\n\tregisterSlice( slice );\n\n\tregisterElementType( COMPONENT_WIDGET_TYPE, ( options: CreateTemplatedElementTypeOptions ) =>\n\t\tcreateComponentType( {\n\t\t\t...options,\n\t\t\tshowLockedByModal: openEditModeDialog,\n\t\t\tshowDetachConfirmDialog: openDetachConfirmDialog,\n\t\t} )\n\t);\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\tinjectIntoLogic( {\n\t\tid: 'components-populate-store',\n\t\tcomponent: PopulateStore,\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\tinjectIntoLogic( {\n\t\tid: 'templates',\n\t\tcomponent: LoadTemplateComponents,\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\tinitCircularNestingPrevention();\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 { __createSelector as createSelector, __useSelector as useSelector, type SliceState } from '@elementor/store';\n\nimport type { ComponentId, OverridableProps, PublishedComponent, UnpublishedComponent } from '../types';\nimport { type slice } from './extensible-slice';\nimport { type SanitizeAttributes, SLICE_NAME } from './store-types';\n\nexport type ComponentsSlice = SliceState< typeof slice >;\n\nexport { slice, registerComponentsReducer, createComponentsAction, __resetExtraReducers } from './extensible-slice';\nexport type { ComponentsState, ComponentsPathItem, SanitizeAttributes } from './store-types';\nexport { initialState, SLICE_NAME } from './store-types';\n\nexport const 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\nconst useSanitizedComponents = () => {\n\treturn useSelector( ( state: ComponentsSlice ) => state[ SLICE_NAME ].sanitized );\n};\nexport const useIsSanitizedComponent = ( componentId: ComponentId | null, key: SanitizeAttributes ) => {\n\tconst sanitizedComponents = useSanitizedComponents();\n\n\tif ( ! componentId ) {\n\t\treturn false;\n\t}\n\n\treturn !! sanitizedComponents[ componentId ]?.[ key ];\n};\n","import { type V1Document } from '@elementor/editor-documents';\n\nimport {\n\ttype Component,\n\ttype ComponentId,\n\ttype PublishedComponent,\n\ttype StylesDefinition,\n\ttype UnpublishedComponent,\n} from '../types';\n\nexport type SanitizeAttributes = 'overridableProps';\n\nexport type ComponentsState = {\n\tdata: PublishedComponent[];\n\tunpublishedData: UnpublishedComponent[];\n\tloadStatus: 'idle' | 'pending' | 'error';\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\t// We use this map to flag any sanitized attribute of a given component\n\t// This map currently resets in response to the `editor/documents/open` command\n\tsanitized: Record< ComponentId, Partial< Record< SanitizeAttributes, boolean > > >;\n};\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\tsanitized: {},\n};\n\nexport const SLICE_NAME = 'components';\n","import type { V1Document } from '@elementor/editor-documents';\nimport {\n\t__createAction as createAction,\n\t__createSlice as createSlice,\n\t__dispatch as dispatch,\n\ttype AnyAction,\n\ttype PayloadAction,\n} from '@elementor/store';\n\nimport type { ComponentId, OverridableProps, PublishedComponent, UnpublishedComponent } from '../types';\nimport { type ComponentsState, initialState, type SanitizeAttributes, SLICE_NAME } from './store-types';\nimport { loadComponents } from './thunks';\n\ntype GetComponentResponse = PublishedComponent[];\n\ntype ComponentsReducer< P > = ( state: ComponentsState, action: PayloadAction< P > ) => void;\n\nconst extraReducersMap = new Map< string, ComponentsReducer< unknown > >();\n\nexport function registerComponentsReducer< P >( name: string, reducer: ComponentsReducer< P > ) {\n\textraReducersMap.set( `${ SLICE_NAME }/${ name }`, reducer as ComponentsReducer< unknown > );\n}\n\nexport function createComponentsAction< P >( name: string ) {\n\tconst action = createAction< P >( `${ SLICE_NAME }/${ name }` );\n\n\treturn {\n\t\taction,\n\t\tregister( reducer: ComponentsReducer< P > ) {\n\t\t\tregisterComponentsReducer( name, reducer );\n\t\t},\n\t\tdispatch( payload: P ) {\n\t\t\tdispatch( action( payload ) );\n\t\t},\n\t};\n}\n\nexport function __resetExtraReducers() {\n\textraReducersMap.clear();\n}\n\nconst baseSlice = 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\tremoveUnpublished: ( state, { payload }: PayloadAction< string | string[] > ) => {\n\t\t\tconst uidsToRemove = Array.isArray( payload ) ? payload : [ payload ];\n\t\t\tstate.unpublishedData = state.unpublishedData.filter(\n\t\t\t\t( component ) => ! uidsToRemove.includes( component.uid )\n\t\t\t);\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\tremoveCreatedThisSession: ( state, { payload }: PayloadAction< string > ) => {\n\t\t\tstate.createdThisSession = state.createdThisSession.filter( ( uid ) => uid !== 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< ComponentsState[ 'path' ] > ) => {\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\tupdateComponentSanitizedAttribute: (\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload: { componentId, attribute },\n\t\t\t}: PayloadAction< { componentId: ComponentId; attribute: SanitizeAttributes } >\n\t\t) => {\n\t\t\tif ( ! state.sanitized[ componentId ] ) {\n\t\t\t\tstate.sanitized[ componentId ] = {};\n\t\t\t}\n\n\t\t\tstate.sanitized[ componentId ][ attribute ] = true;\n\t\t},\n\t\tresetSanitizedComponents: ( state ) => {\n\t\t\tstate.sanitized = {};\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\nexport const slice: typeof baseSlice = {\n\t...baseSlice,\n\treducer( state: ComponentsState | undefined, action: AnyAction ) {\n\t\tconst nextState = baseSlice.reducer( state, action );\n\n\t\tconst extraReducer = extraReducersMap.get( action.type );\n\n\t\tif ( ! extraReducer || ! nextState ) {\n\t\t\treturn nextState;\n\t\t}\n\n\t\tconst clonedState = structuredClone( nextState );\n\t\textraReducer( clonedState, action as PayloadAction< unknown > );\n\n\t\treturn clonedState;\n\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[], status: DocumentSaveStatus ) =>\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\tstatus,\n\t\t\t\t}\n\t\t\t)\n\t\t\t.then( ( res ) => res.data.data ),\n\tupdateComponentTitle: ( updatedComponentNames: UpdatedComponentName[], status: DocumentSaveStatus ) =>\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\tstatus,\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","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 { useLayoutEffect } from 'react';\nimport { ThemeProvider } from '@elementor/editor-ui';\nimport { Stack } from '@elementor/ui';\nimport { hasProInstalled } from '@elementor/utils';\n\nimport { useComponents } from '../../hooks/use-components';\nimport { ComponentSearch } from './component-search';\nimport { ComponentsList } from './components-list';\nimport { ComponentsProNotification } from './components-pro-notification';\nimport { SearchProvider } from './search-provider';\n\nconst FULL_HEIGHT_STYLE_ID = 'components-full-height-panel';\n\nconst FULL_HEIGHT_CSS = `\n#elementor-panel-page-elements {\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n}\n\n#elementor-panel-elements {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n}\n\n#elementor-panel-elements-wrapper {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n}\n`;\n\nconst useFullHeightPanel = () => {\n\tuseLayoutEffect( () => {\n\t\tlet style = document.getElementById( FULL_HEIGHT_STYLE_ID );\n\n\t\tif ( ! style ) {\n\t\t\tstyle = document.createElement( 'style' );\n\t\t\tstyle.id = FULL_HEIGHT_STYLE_ID;\n\t\t\tstyle.textContent = FULL_HEIGHT_CSS;\n\t\t\tdocument.head.appendChild( style );\n\t\t}\n\n\t\treturn () => {\n\t\t\tdocument.getElementById( FULL_HEIGHT_STYLE_ID )?.remove();\n\t\t};\n\t}, [] );\n};\n\nconst ComponentsContent = () => {\n\tconst { components, isLoading } = useComponents();\n\tconst hasComponents = ! isLoading && components.length > 0;\n\tconst hasPro = hasProInstalled();\n\tconst showProNotification = ! hasPro && hasComponents;\n\n\tuseFullHeightPanel();\n\n\treturn (\n\t\t<Stack justifyContent=\"space-between\" sx={ { flex: 1, minHeight: 0 } }>\n\t\t\t{ hasComponents && <ComponentSearch /> }\n\t\t\t<ComponentsList />\n\t\t\t{ showProNotification && <ComponentsProNotification /> }\n\t\t</Stack>\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","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 { ComponentsIcon, CrownFilledIcon } from '@elementor/icons';\nimport { Box, Button, Divider, Link, List, Stack, Typography } from '@elementor/ui';\nimport { hasProInstalled } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponents } from '../../hooks/use-components';\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\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';\nconst UPGRADE_URL = 'https://go.elementor.com/go-pro-components/';\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\n\tconst isEmpty = ! components?.length;\n\n\tif ( isEmpty ) {\n\t\tif ( searchValue.length ) {\n\t\t\treturn <EmptySearchResult />;\n\t\t}\n\n\t\treturn hasProInstalled() ? <EmptyState /> : <ProUpgradeEmptyState />;\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 key={ component.uid } component={ component } />\n\t\t\t) ) }\n\t\t</List>\n\t);\n}\n\nconst ProUpgradeEmptyState = () => {\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{ __( 'Create Reusable Components', '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{ __( 'Create design elements that sync across your entire site.', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Stack>\n\n\t\t\t<Button\n\t\t\t\tvariant=\"contained\"\n\t\t\t\tcolor=\"promotion\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tstartIcon={ <CrownFilledIcon /> }\n\t\t\t\thref={ UPGRADE_URL }\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t>\n\t\t\t\t{ __( 'Upgrade now', 'elementor' ) }\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n};\n\nconst EmptyState = () => {\n\tconst { canCreate } = useComponentsPermissions();\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\t\t\t\t\t</Stack>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n\nexport const 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>&ldquo;</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>&rdquo;.</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\nexport const 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 * as React from 'react';\nimport { forwardRef } from 'react';\nimport { EditableField, EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { ComponentsIcon } from '@elementor/icons';\nimport { Box, ListItemButton, ListItemIcon, styled, type Theme, Typography } from '@elementor/ui';\n\nimport { type Component } from '../../types';\n\nexport type ComponentItemProps = {\n\tcomponent: Omit< Component, 'id' > & { id?: number };\n\tdisabled?: boolean;\n\tdraggable?: boolean;\n\tonDragStart?: React.DragEventHandler;\n\tonDragEnd?: React.DragEventHandler;\n\tonClick?: () => void;\n\tisEditing?: boolean;\n\terror?: string | null;\n\tnameSlot?: React.ReactNode;\n\tendSlot?: React.ReactNode;\n};\n\nexport const ComponentItem = forwardRef< HTMLElement, ComponentItemProps >(\n\t(\n\t\t{\n\t\t\tcomponent,\n\t\t\tdisabled = true,\n\t\t\tdraggable,\n\t\t\tonDragStart,\n\t\t\tonDragEnd,\n\t\t\tonClick,\n\t\t\tisEditing = false,\n\t\t\terror = null,\n\t\t\tnameSlot,\n\t\t\tendSlot,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\treturn (\n\t\t\t<ListItemButton\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tdraggable={ draggable }\n\t\t\t\tonDragStart={ onDragStart }\n\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\tshape=\"rounded\"\n\t\t\t\tref={ ref }\n\t\t\t\tsx={ {\n\t\t\t\t\tborder: 'solid 1px',\n\t\t\t\t\tborderColor: 'divider',\n\t\t\t\t\tpy: 0.5,\n\t\t\t\t\tpx: 1,\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 1,\n\t\t\t\t} }\n\t\t\t\t{ ...props }\n\t\t\t>\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap={ 1 } minWidth={ 0 } flexGrow={ 1 } onClick={ onClick }>\n\t\t\t\t\t<ListItemIcon size=\"tiny\">\n\t\t\t\t\t\t<ComponentsIcon fontSize=\"tiny\" />\n\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t<Indicator isActive={ isEditing } isError={ !! error }>\n\t\t\t\t\t\t<Box display=\"flex\" flex={ 1 } minWidth={ 0 } flexGrow={ 1 }>\n\t\t\t\t\t\t\t{ nameSlot ?? <ComponentName name={ component.name } /> }\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Indicator>\n\t\t\t\t</Box>\n\t\t\t\t{ endSlot }\n\t\t\t</ListItemButton>\n\t\t);\n\t}\n);\n\nconst Indicator = styled( Box, {\n\tshouldForwardProp: ( prop ) => prop !== 'isActive' && prop !== 'isError',\n} )( ( { theme, isActive, isError }: { theme: Theme; isActive: boolean; isError: boolean } ) => ( {\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\ntype EditableConfig = {\n\tref: React.Ref< HTMLElement >;\n\tisEditing: boolean;\n\tgetProps: () => Record< string, unknown >;\n};\n\nexport type ComponentNameProps = {\n\tname: string;\n\teditable?: EditableConfig;\n};\n\nexport function ComponentName( { name, editable }: ComponentNameProps ) {\n\tif ( editable?.isEditing ) {\n\t\treturn <EditableField ref={ editable.ref } as={ Typography } variant=\"caption\" { ...editable.getProps() } />;\n\t}\n\n\treturn <EllipsisWithTooltip title={ name } as={ Typography } variant=\"caption\" color=\"text.primary\" />;\n}\n","import * as React from 'react';\nimport { Box, Skeleton, Stack } from '@elementor/ui';\n\nconst ROWS = Array.from( { length: 3 }, ( _, index ) => index );\n\nconst STAGGER_DELAY_MS = 80;\n\nexport const LoadingComponents = () => {\n\treturn (\n\t\t<Stack\n\t\t\taria-label=\"Loading components\"\n\t\t\tgap={ 1.5 }\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\tpx: 1,\n\t\t\t\t'&:after': {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tbottom: 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: '40%',\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\tzIndex: 1,\n\t\t\t\t},\n\t\t\t} }\n\t\t>\n\t\t\t{ ROWS.map( ( row ) => (\n\t\t\t\t<Box\n\t\t\t\t\tkey={ row }\n\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tpy: 0.75,\n\t\t\t\t\t\tpx: 1.5,\n\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\tanimation: `e-loading-fade-in 0.4s ease-out ${ row * STAGGER_DELAY_MS }ms forwards`,\n\t\t\t\t\t\t'@keyframes e-loading-fade-in': {\n\t\t\t\t\t\t\tfrom: { opacity: 0, transform: 'translateY(4px)' },\n\t\t\t\t\t\t\tto: { opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Skeleton animation=\"wave\" variant=\"rounded\" width={ 24 } height={ 24 } />\n\t\t\t\t\t<Skeleton animation=\"wave\" variant=\"rounded\" width=\"60%\" height={ 14 } />\n\t\t\t\t</Box>\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\n\nimport { ComponentsUpgradeAlert } from '../components-upgrade-alert';\n\nconst UPGRADE_URL = 'https://go.elementor.com/go-pro-components-create/';\n\nexport function ComponentsProNotification() {\n\treturn (\n\t\t<ComponentsUpgradeAlert\n\t\t\ttitle={ __( 'Create new components', 'elementor' ) }\n\t\t\tdescription={ __( 'Creating new components requires an active Pro subscription.', 'elementor' ) }\n\t\t\tupgradeUrl={ UPGRADE_URL }\n\t\t/>\n\t);\n}\n","import * as React from 'react';\nimport { CrownFilledIcon } from '@elementor/icons';\nimport { Alert, AlertAction, AlertTitle, Box, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ninterface ComponentsUpgradeAlertProps {\n\ttitle: string;\n\tdescription: string;\n\tupgradeUrl: string;\n}\n\nexport function ComponentsUpgradeAlert( { title, description, upgradeUrl }: ComponentsUpgradeAlertProps ) {\n\treturn (\n\t\t<Box sx={ { mt: 'auto', position: 'sticky', bottom: 0 } }>\n\t\t\t<Alert\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tcolor=\"promotion\"\n\t\t\t\ticon={ <CrownFilledIcon fontSize=\"tiny\" /> }\n\t\t\t\trole=\"status\"\n\t\t\t\tsize=\"small\"\n\t\t\t\taction={\n\t\t\t\t\t<AlertAction\n\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\tcolor=\"promotion\"\n\t\t\t\t\t\thref={ upgradeUrl }\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upgrade now', 'elementor' ) }\n\t\t\t\t\t</AlertAction>\n\t\t\t\t}\n\t\t\t\tsx={ { m: 2, mt: 1 } }\n\t\t\t>\n\t\t\t\t<AlertTitle>{ title }</AlertTitle>\n\t\t\t\t<Typography variant=\"caption\">{ description }</Typography>\n\t\t\t</Alert>\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { closeDialog, ConfirmationDialog, openDialog } from '@elementor/editor-ui';\nimport { AlertTriangleFilledIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\ntype DetachInstanceConfirmationDialogProps = {\n\topen: boolean;\n\tonClose: () => void;\n\tonConfirm: () => void;\n};\n\nexport function DetachInstanceConfirmationDialog( {\n\topen,\n\tonClose,\n\tonConfirm,\n}: DetachInstanceConfirmationDialogProps ) {\n\treturn (\n\t\t<ConfirmationDialog open={ open } onClose={ onClose }>\n\t\t\t<ConfirmationDialog.Title icon={ AlertTriangleFilledIcon } iconColor=\"secondary\">\n\t\t\t\t{ __( 'Detach from Component?', 'elementor' ) }\n\t\t\t</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'Detaching this instance will break its link to the Component. Changes to the Component will no longer apply. Continue?',\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\n\t\t\t\tonClose={ onClose }\n\t\t\t\tonConfirm={ onConfirm }\n\t\t\t\tconfirmLabel={ __( 'Detach', 'elementor' ) }\n\t\t\t\tcolor=\"primary\"\n\t\t\t/>\n\t\t</ConfirmationDialog>\n\t);\n}\n\n// Used imperatively from the context menu (Marionette view).\nexport function openDetachConfirmDialog( onConfirm: () => void ) {\n\tconst handleConfirm = () => {\n\t\tcloseDialog();\n\t\tonConfirm();\n\t};\n\n\topenDialog( {\n\t\tcomponent: <DetachInstanceConfirmationDialog open onClose={ closeDialog } onConfirm={ handleConfirm } />,\n\t} );\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 { PencilIcon } from '@elementor/icons';\nimport { Box, Stack } from '@elementor/ui';\nimport { hasProInstalled } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\nimport { ComponentInstanceProvider } from '../../provider/component-instance-context';\nimport { ComponentsUpgradeAlert } from '../components-upgrade-alert';\nimport { DetachAction } from './detach-action';\nimport { EmptyState } from './empty-state';\nimport { InstancePanelBody } from './instance-panel-body';\nimport { EditComponentAction, InstancePanelHeader } from './instance-panel-header';\nimport { useInstancePanelData } from './use-instance-panel-data';\n\nconst EDIT_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-edit/';\n\nexport function InstanceEditingPanel() {\n\tconst { canEdit } = useComponentsPermissions();\n\tconst data = useInstancePanelData();\n\tconst hasPro = hasProInstalled();\n\n\tif ( ! data ) {\n\t\treturn null;\n\t}\n\n\tconst { componentId, component, overrides, overridableProps, groups, isEmpty, componentInstanceId } = data;\n\n\t/* translators: %s: component name. */\n\tconst panelTitle = __( 'Edit %s', 'elementor' ).replace( '%s', component.name );\n\n\tconst actions = (\n\t\t<Stack direction=\"row\" gap={ 0.5 }>\n\t\t\t<DetachAction componentInstanceId={ componentInstanceId } componentId={ componentId } />\n\t\t\t{ canEdit && <EditComponentAction disabled label={ panelTitle } icon={ PencilIcon } /> }\n\t\t</Stack>\n\t);\n\n\treturn (\n\t\t<Box data-testid=\"instance-editing-panel\" sx={ { display: 'flex', flexDirection: 'column', height: '100%' } }>\n\t\t\t<ComponentInstanceProvider\n\t\t\t\tcomponentId={ componentId }\n\t\t\t\toverrides={ overrides }\n\t\t\t\toverridableProps={ overridableProps }\n\t\t\t>\n\t\t\t\t<InstancePanelHeader componentName={ component.name } actions={ actions } />\n\t\t\t\t<InstancePanelBody\n\t\t\t\t\tgroups={ groups }\n\t\t\t\t\tisEmpty={ isEmpty }\n\t\t\t\t\temptyState={ <EmptyState /> }\n\t\t\t\t\tcomponentInstanceId={ componentInstanceId }\n\t\t\t\t/>\n\t\t\t</ComponentInstanceProvider>\n\t\t\t{ ! hasPro && (\n\t\t\t\t<ComponentsUpgradeAlert\n\t\t\t\t\ttitle={ __( 'Edit components', 'elementor' ) }\n\t\t\t\t\tdescription={ __( 'Editing components requires an active Pro subscription.', 'elementor' ) }\n\t\t\t\t\tupgradeUrl={ EDIT_UPGRADE_URL }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\nimport { type ComponentInstanceOverridesPropValue } from '../prop-types/component-instance-overrides-prop-type';\nimport { type OverridableProps } from '../types';\n\ntype ComponentInstanceData = {\n\tcomponentId: number;\n\toverrides: ComponentInstanceOverridesPropValue;\n\toverridableProps: OverridableProps;\n};\n\nconst ComponentInstanceContext = createContext< ComponentInstanceData | null >( null );\n\nexport function ComponentInstanceProvider( { children, ...props }: PropsWithChildren< ComponentInstanceData > ) {\n\treturn <ComponentInstanceContext.Provider value={ props }>{ children }</ComponentInstanceContext.Provider>;\n}\n\nexport const useComponentId = () => useContext( ComponentInstanceContext )?.componentId;\nexport const useComponentInstanceOverrides = () => useContext( ComponentInstanceContext )?.overrides;\nexport const useComponentOverridableProps = () => useContext( ComponentInstanceContext )?.overridableProps;\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { notify } from '@elementor/editor-notifications';\nimport { DetachIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { type ExtendedWindow } from '../../types';\nimport { detachComponentInstance } from '../../utils/detach-component-instance';\nimport { DetachInstanceConfirmationDialog } from '../detach-instance-confirmation-dialog';\nimport { EditComponentAction } from './instance-panel-header';\n\nexport const DetachAction = ( {\n\tcomponentInstanceId,\n\tcomponentId,\n}: {\n\tcomponentInstanceId: string;\n\tcomponentId: number;\n} ) => {\n\tconst [ isDetachDialogOpen, setIsDetachDialogOpen ] = useState( false );\n\n\tconst handleDetachConfirm = async () => {\n\t\tsetIsDetachDialogOpen( false );\n\n\t\ttry {\n\t\t\tawait detachComponentInstance( {\n\t\t\t\tinstanceId: componentInstanceId,\n\t\t\t\tcomponentId,\n\t\t\t\ttrackingInfo: getDetachTrackingInfo(),\n\t\t\t} );\n\t\t} catch {\n\t\t\tnotify( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: __( 'Failed to detach component instance.', 'elementor' ),\n\t\t\t\tid: 'detach-component-instance-failed',\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst handleDetachCancel = () => {\n\t\tsetIsDetachDialogOpen( false );\n\t};\n\n\tconst handleDetachClick = () => {\n\t\tsetIsDetachDialogOpen( true );\n\t};\n\n\tconst detachLabel = __( 'Detach from Component', 'elementor' );\n\n\treturn (\n\t\t<>\n\t\t\t<EditComponentAction label={ detachLabel } icon={ DetachIcon } onClick={ handleDetachClick } />\n\t\t\t<DetachInstanceConfirmationDialog\n\t\t\t\topen={ isDetachDialogOpen }\n\t\t\t\tonClose={ handleDetachCancel }\n\t\t\t\tonConfirm={ handleDetachConfirm }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nfunction getDetachTrackingInfo() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst config = extendedWindow?.elementorCommon?.eventsManager?.config;\n\n\tif ( ! config ) {\n\t\treturn {\n\t\t\tlocation: '',\n\t\t\ttrigger: '',\n\t\t};\n\t}\n\n\treturn {\n\t\tlocation: ( config.locations.components as Record< string, string > ).instanceEditingPanel,\n\t\ttrigger: config.triggers.click,\n\t};\n}\n","import { getContainer, replaceElement, type V1Element, type V1ElementModelProps } from '@elementor/editor-elements';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { componentInstanceOverridesPropTypeUtil } from '../../prop-types/component-instance-overrides-prop-type';\nimport {\n\ttype ComponentInstanceProp,\n\tcomponentInstancePropTypeUtil,\n} from '../../prop-types/component-instance-prop-type';\nimport { selectComponent, selectCurrentComponentId, selectOverridableProps, slice } from '../../store/store';\nimport { type OverridableProps } from '../../types';\nimport { getComponentDocumentData } from '../component-document-data';\nimport { trackComponentEvent } from '../tracking';\nimport { resolveDetachedInstance } from './resolve-detached-instance';\n\ntype DetachParams = {\n\tinstanceId: string;\n\tcomponentId: number;\n\ttrackingInfo: {\n\t\tlocation: string;\n\t\tsecondaryLocation?: string;\n\t\ttrigger: string;\n\t};\n};\n\ntype DoReturn = {\n\tdetachedElement: V1Element;\n\tdetachedInstanceElementData: V1ElementModelProps;\n\teditedComponentOnDetach: number | null;\n\toverridablePropsBeforeDetach: OverridableProps | null;\n\toriginalInstanceModel: V1ElementModelProps;\n};\n\nexport async function detachComponentInstance( {\n\tinstanceId,\n\tcomponentId,\n\ttrackingInfo,\n}: DetachParams ): Promise< DoReturn > {\n\tconst instanceContainer = getContainer( instanceId );\n\n\tif ( ! instanceContainer ) {\n\t\tthrow new Error( `Instance container with ID \"${ instanceId }\" not found.` );\n\t}\n\n\tconst componentData = await getComponentDocumentData( componentId );\n\n\tif ( ! componentData ) {\n\t\tthrow new Error( `Component with ID \"${ componentId }\" not found.` );\n\t}\n\n\tconst rootElement = componentData.elements?.[ 0 ];\n\n\tif ( ! rootElement ) {\n\t\tthrow new Error( `Component with ID \"${ componentId }\" has no root element.` );\n\t}\n\n\tconst undoableDetach = undoable(\n\t\t{\n\t\t\tdo: (): DoReturn => {\n\t\t\t\tconst overrides = extractInstanceOverrides( instanceContainer );\n\t\t\t\tconst detachedInstanceElementData = resolveDetachedInstance(\n\t\t\t\t\trootElement,\n\t\t\t\t\toverrides\n\t\t\t\t) as V1ElementModelProps;\n\n\t\t\t\tconst editedComponentOnDetach = selectCurrentComponentId( getState() );\n\t\t\t\t// We need to store the overridable props of the current component before detach to restore them on undo.\n\t\t\t\tconst overridablePropsBeforeDetach = editedComponentOnDetach\n\t\t\t\t\t? selectOverridableProps( getState(), editedComponentOnDetach ) ?? null\n\t\t\t\t\t: null;\n\n\t\t\t\tconst originalInstanceModel = instanceContainer.model.toJSON();\n\n\t\t\t\tconst detachedElement = replaceElement( {\n\t\t\t\t\tcurrentElementId: instanceId,\n\t\t\t\t\tnewElement: detachedInstanceElementData,\n\t\t\t\t\twithHistory: false,\n\t\t\t\t} );\n\n\t\t\t\tconst componentUid = selectComponent( getState(), componentId )?.uid;\n\t\t\t\ttrackComponentEvent( {\n\t\t\t\t\taction: 'detached',\n\t\t\t\t\tsource: 'user',\n\t\t\t\t\tcomponent_uid: componentUid,\n\t\t\t\t\tinstance_id: instanceId,\n\t\t\t\t\tlocation: trackingInfo.location,\n\t\t\t\t\tsecondary_location: trackingInfo.secondaryLocation,\n\t\t\t\t\ttrigger: trackingInfo.trigger,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tdetachedElement,\n\t\t\t\t\tdetachedInstanceElementData,\n\t\t\t\t\teditedComponentOnDetach,\n\t\t\t\t\toverridablePropsBeforeDetach,\n\t\t\t\t\toriginalInstanceModel,\n\t\t\t\t};\n\t\t\t},\n\t\t\tundo: (\n\t\t\t\t_: undefined,\n\t\t\t\t{\n\t\t\t\t\tdetachedElement,\n\t\t\t\t\toriginalInstanceModel,\n\t\t\t\t\toverridablePropsBeforeDetach,\n\t\t\t\t\teditedComponentOnDetach,\n\t\t\t\t}: DoReturn\n\t\t\t): V1Element => {\n\t\t\t\tconst restoredInstance = replaceElement( {\n\t\t\t\t\tcurrentElementId: detachedElement.id,\n\t\t\t\t\tnewElement: originalInstanceModel,\n\t\t\t\t\twithHistory: false,\n\t\t\t\t} );\n\n\t\t\t\tconst currentComponentId = selectCurrentComponentId( getState() );\n\t\t\t\tif (\n\t\t\t\t\tcurrentComponentId &&\n\t\t\t\t\tcurrentComponentId === editedComponentOnDetach &&\n\t\t\t\t\toverridablePropsBeforeDetach\n\t\t\t\t) {\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tslice.actions.setOverridableProps( {\n\t\t\t\t\t\t\tcomponentId: currentComponentId,\n\t\t\t\t\t\t\toverridableProps: overridablePropsBeforeDetach,\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn restoredInstance;\n\t\t\t},\n\t\t\tredo: ( _: undefined, doReturn: DoReturn, restoredInstance: V1Element ) => {\n\t\t\t\tconst { detachedInstanceElementData } = doReturn;\n\n\t\t\t\tconst editedComponentOnDetach = selectCurrentComponentId( getState() );\n\t\t\t\t// We need to store the overridable props of the current component before detach to restore them on undo.\n\t\t\t\tconst overridablePropsBeforeDetach = editedComponentOnDetach\n\t\t\t\t\t? selectOverridableProps( getState(), editedComponentOnDetach ) ?? null\n\t\t\t\t\t: null;\n\n\t\t\t\tconst detachedElement = replaceElement( {\n\t\t\t\t\tcurrentElementId: restoredInstance.id,\n\t\t\t\t\tnewElement: detachedInstanceElementData,\n\t\t\t\t\twithHistory: false,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\t...doReturn,\n\t\t\t\t\tdetachedElement,\n\t\t\t\t\teditedComponentOnDetach,\n\t\t\t\t\toverridablePropsBeforeDetach,\n\t\t\t\t};\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Detach from Component', 'elementor' ),\n\t\t\tsubtitle: __( 'Instance detached', 'elementor' ),\n\t\t}\n\t);\n\n\treturn undoableDetach();\n}\n\nfunction extractInstanceOverrides( instanceContainer: NonNullable< ReturnType< typeof getContainer > > ) {\n\tconst settings = instanceContainer.model.toJSON().settings;\n\tconst componentInstance = componentInstancePropTypeUtil.extract(\n\t\tsettings?.component_instance as ComponentInstanceProp\n\t);\n\n\tconst overrides = componentInstanceOverridesPropTypeUtil.extract( componentInstance?.overrides );\n\n\treturn overrides ?? [];\n}\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 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\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 { type V1Element } from '@elementor/editor-elements';\nimport { getMixpanel } from '@elementor/events';\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' | 'system';\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\t\t| 'detached';\n\tsource: Source;\n};\n\nconst FEATURE_NAME = 'Components';\n\nexport const trackComponentEvent = ( { action, source, ...data }: ComponentEventData ) => {\n\tif ( source === 'system' ) {\n\t\treturn;\n\t}\n\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 { generateElementId, type V1ElementData } from '@elementor/editor-elements';\nimport { 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 { componentOverridablePropTypeUtil } from '../../prop-types/component-overridable-prop-type';\nimport { regenerateLocalStyleIds } from './regenerate-local-style-ids';\nimport { resolveOverridableSettings } from './resolve-overridable-settings';\n\n/**\n * Creates detached element from component instance\n * by applying overrides, reverting overridables, and regenerating IDs.\n * This is used when detaching a component instance from its origin component.\n *\n * The function goes through all nested elements recursively and:\n * - Regenerates element IDs and local style IDs\n * - Resolves overridable settings - applies all instance overrides to element settings,\n * or replaces overridable with origin_value when no matching override exists.\n *\n * @param element - The component's root element\n * @param overrides - Array of overrides from the component instance\n * @return A new element data with all overrides applied and new IDs\n */\nexport function resolveDetachedInstance(\n\telement: V1ElementData,\n\toverrides: ComponentInstanceOverride[]\n): V1ElementData {\n\tconst overrideMap = createOverrideMap( overrides );\n\n\treturn resolveElementRecursive( structuredClone( element ), overrideMap );\n}\n\nfunction resolveElementRecursive(\n\telement: V1ElementData,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >\n): V1ElementData {\n\telement.id = generateElementId();\n\n\tif ( element.styles ) {\n\t\tconst { styles, settings } = regenerateLocalStyleIds( element );\n\n\t\telement.styles = styles;\n\t\tif ( settings ) {\n\t\t\telement.settings = { ...element.settings, ...settings };\n\t\t}\n\t}\n\n\tif ( element.settings ) {\n\t\telement.settings = resolveOverridableSettings( element, overrideMap );\n\t}\n\n\tif ( element.elements?.length ) {\n\t\telement.elements = element.elements.map( ( child ) => resolveElementRecursive( child, overrideMap ) );\n\t}\n\n\treturn element;\n}\n\nfunction createOverrideMap( overrides: ComponentInstanceOverride[] ): Map< string, ComponentInstanceOverrideProp > {\n\tconst map = new Map< string, ComponentInstanceOverrideProp >();\n\n\toverrides.forEach( ( item ) => {\n\t\tlet override: ComponentInstanceOverrideProp | null = null;\n\n\t\tif ( componentInstanceOverridePropTypeUtil.isValid( item ) ) {\n\t\t\toverride = item;\n\t\t} else if ( componentOverridablePropTypeUtil.isValid( item ) ) {\n\t\t\toverride = getOverridableOverride( item );\n\t\t}\n\n\t\tif ( override ) {\n\t\t\tconst overrideKey = override.value.override_key;\n\t\t\tmap.set( overrideKey, override );\n\t\t}\n\t} );\n\n\treturn map;\n}\n\nexport function getOverridableOverride( propValue: PropValue ): ComponentInstanceOverrideProp | null {\n\tif ( ! componentOverridablePropTypeUtil.isValid( propValue ) ) {\n\t\treturn null;\n\t}\n\n\tconst originValue = componentOverridablePropTypeUtil.extract( propValue )?.origin_value;\n\tif ( ! componentInstanceOverridePropTypeUtil.isValid( originValue ) ) {\n\t\treturn null;\n\t}\n\n\treturn originValue;\n}\n","import { generateElementId, type V1ElementData, type V1ElementSettingsProps } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue, type PropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\n\n// Ts version for atomic-widgets/assets/js/editor/utils/regenerate-local-style-ids.js\nexport function regenerateLocalStyleIds( element: V1ElementData ): {\n\tstyles: Record< StyleDefinitionID, StyleDefinition > | undefined;\n\tsettings: V1ElementSettingsProps | undefined;\n} {\n\tconst originalStyles = element.styles;\n\n\tif ( ! originalStyles || Object.keys( originalStyles ).length === 0 ) {\n\t\treturn { styles: undefined, settings: undefined };\n\t}\n\n\tconst newStyles: Record< string, StyleDefinition > = {};\n\tconst styleIdMapping: Record< string, string > = {};\n\n\tfor ( const [ originalStyleId, style ] of Object.entries( originalStyles ) ) {\n\t\tconst newStyleId = generateLocalStyleId( element.id );\n\n\t\tnewStyles[ newStyleId ] = { ...style, id: newStyleId };\n\t\tstyleIdMapping[ originalStyleId ] = newStyleId;\n\t}\n\n\tconst settings = element.settings;\n\tif ( ! settings || Object.keys( settings ).length === 0 ) {\n\t\treturn { styles: newStyles, settings: undefined };\n\t}\n\n\tconst updatedSettings = { ...settings };\n\n\tfor ( const [ propKey, propValue ] of Object.entries( updatedSettings ) ) {\n\t\tif ( isClassesProp( propValue ) && propValue.value.length > 0 ) {\n\t\t\tconst updatedClasses = propValue.value.map( ( classId ) => styleIdMapping[ classId ] ?? classId );\n\n\t\t\tupdatedSettings[ propKey ] = classesPropTypeUtil.create( updatedClasses );\n\t\t}\n\t}\n\n\treturn {\n\t\tstyles: newStyles,\n\t\tsettings: updatedSettings,\n\t};\n}\n\nfunction isClassesProp( prop: PropValue ): prop is ClassesPropValue {\n\treturn classesPropTypeUtil.isValid( prop );\n}\n\nfunction generateLocalStyleId( elementId: string ): string {\n\treturn `e-${ elementId }-${ generateElementId() }`;\n}\n","export const COMPONENT_WIDGET_TYPE = 'e-component';\n","import { type V1ElementModelProps } from '@elementor/editor-elements';\n\nimport { COMPONENT_WIDGET_TYPE } from '../consts';\n\nexport function isComponentInstance( elementModel: Partial< V1ElementModelProps > ) {\n\treturn [ elementModel.widgetType, elementModel.elType ].includes( COMPONENT_WIDGET_TYPE );\n}\n","import { type V1ElementData, type V1ElementSettingsProps } from '@elementor/editor-elements';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport {\n\ttype ComponentInstanceOverrideProp,\n\tcomponentInstanceOverridePropTypeUtil,\n} from '../../prop-types/component-instance-override-prop-type';\nimport {\n\ttype ComponentInstanceProp,\n\tcomponentInstancePropTypeUtil,\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 resolveOverridableSettings(\n\telement: V1ElementData,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >\n): V1ElementSettingsProps {\n\tif ( isComponentInstance( { widgetType: element.widgetType, elType: element.elType } ) ) {\n\t\treturn resolveOverridableSettingsForComponentInstance( element, overrideMap );\n\t}\n\n\treturn resolveOverridableSettingsForElement( element, overrideMap );\n}\n\nfunction resolveOverridableSettingsForElement(\n\telement: V1ElementData,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >\n): V1ElementSettingsProps {\n\tconst updatedSettings = element.settings ? { ...element.settings } : {};\n\n\tfor ( const [ settingKey, settingValue ] of Object.entries( element.settings ?? {} ) ) {\n\t\tupdatedSettings[ settingKey ] = resolvePropValue( settingValue, overrideMap );\n\t}\n\n\treturn updatedSettings;\n}\n\nfunction resolveOverridableSettingsForComponentInstance(\n\telement: V1ElementData,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >\n): V1ElementSettingsProps {\n\tconst componentInstance = element.settings?.component_instance as ComponentInstanceProp | undefined;\n\n\tif ( ! componentInstancePropTypeUtil.isValid( componentInstance ) ) {\n\t\treturn element.settings ?? {};\n\t}\n\n\tconst instanceOverrides = componentInstance.value.overrides?.value;\n\n\tif ( ! instanceOverrides?.length ) {\n\t\treturn element.settings ?? {};\n\t}\n\n\tconst updatedOverrides = instanceOverrides.map( ( item ) =>\n\t\tresolvePropValue( item, overrideMap, { isOverridableOverride: true } )\n\t);\n\n\treturn {\n\t\t...element.settings,\n\t\tcomponent_instance: {\n\t\t\t...componentInstance,\n\t\t\tvalue: {\n\t\t\t\t...componentInstance.value,\n\t\t\t\toverrides: {\n\t\t\t\t\t...componentInstance.value.overrides,\n\t\t\t\t\tvalue: updatedOverrides,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction resolvePropValue(\n\tpropValue: PropValue,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >,\n\toptions?: { isOverridableOverride?: boolean }\n): PropValue | null {\n\tconst { isOverridableOverride = false } = options ?? {};\n\n\t// if it's not an overridable, return the prop value as is\n\tif ( ! componentOverridablePropTypeUtil.isValid( propValue ) ) {\n\t\treturn propValue;\n\t}\n\n\tconst overridableKey = propValue.value.override_key;\n\tconst matchingOverride = overrideMap.get( overridableKey );\n\n\tconst originValue = componentOverridablePropTypeUtil.extract( propValue )?.origin_value;\n\n\t// if no matching override, return the overridable's origin value\n\tif ( ! matchingOverride ) {\n\t\treturn originValue;\n\t}\n\n\tif ( isOverridableOverride ) {\n\t\treturn resolveOverridableOverride( matchingOverride, originValue );\n\t}\n\n\t// for regular props, when there's a matching override, return the matching override value\n\tconst matchingOverrideValue = componentInstanceOverridePropTypeUtil.extract( matchingOverride )\n\t\t?.override_value as PropValue | null;\n\treturn matchingOverrideValue;\n}\n\nfunction resolveOverridableOverride(\n\tmatchingOverride: ComponentInstanceOverrideProp,\n\toriginValue: PropValue\n): ComponentInstanceOverrideProp | null {\n\tif ( ! originValue || ! componentInstanceOverridePropTypeUtil.isValid( originValue ) ) {\n\t\treturn null;\n\t}\n\n\t// for overridable overrides, we should create a new override with the matching override value\n\t// but keep the origin value's override key and schema source, so they'll match the inner component.\n\treturn componentInstanceOverridePropTypeUtil.create( {\n\t\toverride_value: matchingOverride.value.override_value,\n\t\toverride_key: originValue.value.override_key,\n\t\tschema_source: originValue.value.schema_source,\n\t} );\n}\n","import * as React from 'react';\nimport { type ElementType } from 'react';\nimport { PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { ComponentsIcon } from '@elementor/icons';\nimport { IconButton, Stack, Tooltip } from '@elementor/ui';\n\ntype InstancePanelHeaderProps = {\n\tcomponentName: string;\n\tactions?: React.ReactNode;\n};\n\nexport function InstancePanelHeader( { componentName, actions }: InstancePanelHeaderProps ) {\n\treturn (\n\t\t<PanelHeader sx={ { justifyContent: 'start', px: 2 } }>\n\t\t\t<Stack direction=\"row\" alignItems=\"center\" flexGrow={ 1 } gap={ 1 } maxWidth=\"100%\">\n\t\t\t\t<ComponentsIcon fontSize=\"small\" sx={ { color: 'text.tertiary' } } />\n\t\t\t\t<EllipsisWithTooltip title={ componentName } as={ PanelHeaderTitle } sx={ { flexGrow: 1 } } />\n\t\t\t\t{ actions }\n\t\t\t</Stack>\n\t\t</PanelHeader>\n\t);\n}\n\ntype EditComponentActionProps = {\n\tlabel: string;\n\tonClick?: () => void;\n\tdisabled?: boolean;\n\ticon: ElementType;\n};\n\nexport function EditComponentAction( { label, onClick, disabled = false, icon: Icon }: EditComponentActionProps ) {\n\treturn (\n\t\t<Tooltip title={ label }>\n\t\t\t<IconButton size=\"tiny\" onClick={ onClick } aria-label={ label } disabled={ disabled }>\n\t\t\t\t<Icon fontSize=\"tiny\" />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\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\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={ { mt: 1 } }\n\t\t\t\t\tdisabled={ ! onEditComponent }\n\t\t\t\t\tonClick={ onEditComponent }\n\t\t\t\t>\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 { ControlAdornmentsProvider } from '@elementor/editor-controls';\nimport { getFieldIndicators } from '@elementor/editor-editing-panel';\nimport { PanelBody } from '@elementor/editor-panels';\nimport { Divider, Stack } from '@elementor/ui';\n\nimport { type OverridablePropsGroup } from '../../types';\nimport { OverridePropsGroup } from './override-props-group';\n\ntype InstancePanelBodyProps = {\n\tgroups: OverridablePropsGroup[];\n\tisEmpty: boolean;\n\temptyState: React.ReactNode;\n\tcomponentInstanceId?: string;\n};\n\nexport function InstancePanelBody( { groups, isEmpty, emptyState, componentInstanceId }: InstancePanelBodyProps ) {\n\treturn (\n\t\t<PanelBody>\n\t\t\t<ControlAdornmentsProvider items={ getFieldIndicators( 'settings' ) }>\n\t\t\t\t{ isEmpty ? (\n\t\t\t\t\temptyState\n\t\t\t\t) : (\n\t\t\t\t\t<Stack direction=\"column\" alignItems=\"stretch\">\n\t\t\t\t\t\t{ groups.map( ( group ) => (\n\t\t\t\t\t\t\t<React.Fragment key={ group.id + componentInstanceId }>\n\t\t\t\t\t\t\t\t<OverridePropsGroup group={ group } />\n\t\t\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</ControlAdornmentsProvider>\n\t\t</PanelBody>\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 OverridablePropsGroup } from '../../types';\nimport { OverridePropControl } from './override-prop-control';\n\ntype Props = {\n\tgroup: OverridablePropsGroup;\n};\n\nexport function OverridePropsGroup( { group }: 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 key={ overrideKey } overrideKey={ overrideKey } />\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 {\n\tControlReplacementsProvider,\n\tgetControlReplacements,\n\tPropKeyProvider,\n\tPropProvider,\n\tuseBoundProp,\n} from '@elementor/editor-controls';\nimport {\n\tBaseControl,\n\tcontrolsRegistry,\n\ttype ControlType,\n\tControlTypeContainer,\n\tcreateTopLevelObjectType,\n\tElementProvider,\n\tisDynamicPropValue,\n\tSettingsField,\n\tuseElement,\n} from '@elementor/editor-editing-panel';\nimport { type Control, getElementSettings, getElementType } from '@elementor/editor-elements';\nimport { type AnyTransformable, type PropType, type PropValue } from '@elementor/editor-props';\nimport { Box } 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} 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 {\n\tuseComponentId,\n\tuseComponentInstanceOverrides,\n\tuseComponentOverridableProps,\n} from '../../provider/component-instance-context';\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, type OverridableProps } from '../../types';\nimport { getContainerByOriginId } from '../../utils/get-container-by-origin-id';\nimport { getPropTypeForComponentOverride } from '../../utils/get-prop-type-for-component-override';\nimport { getMatchingOverride } from '../../utils/overridable-props-utils';\nimport { resolveOverridePropValue } from '../../utils/resolve-override-prop-value';\nimport { ControlLabel } from '../control-label';\nimport { OverrideControlInnerElementNotFoundError } from '../errors';\nimport { useResolvedOriginValue } from './use-resolved-origin-value';\n\ntype Props = {\n\toverrideKey: string;\n};\n\nexport function OverridePropControl( { overrideKey }: Props ) {\n\tconst overridableProps = useComponentOverridableProps();\n\tconst overridableProp = overridableProps?.props[ overrideKey ];\n\n\tif ( ! overridableProp ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SettingsField bind=\"component_instance\" propDisplayName={ overridableProp.label }>\n\t\t\t<OverrideControl overridableProp={ overridableProp } />\n\t\t</SettingsField>\n\t);\n}\n\ntype InternalProps = {\n\toverridableProp: OverridableProp;\n};\ntype OverridesSchema = Record< string, ComponentInstanceOverride >;\n\nfunction OverrideControl( { overridableProp }: InternalProps ) {\n\tconst componentInstanceElement = useElement();\n\tconst { value: instanceValue, setValue: setInstanceValue } = useBoundProp( componentInstancePropTypeUtil );\n\tconst wrappingComponentId = useCurrentComponentId();\n\tconst componentId = useComponentId();\n\tconst overridableProps = useComponentOverridableProps();\n\tconst overrides = useComponentInstanceOverrides();\n\n\tconst controls = useControlsByWidgetType(\n\t\toverridableProp?.originPropFields?.widgetType ?? overridableProp.widgetType\n\t);\n\tconst controlReplacements = getControlReplacements();\n\n\tconst matchingOverride = getMatchingOverride( overrides, overridableProp.overrideKey );\n\n\tconst recursiveOriginValue = useResolvedOriginValue( matchingOverride, overridableProp );\n\n\tif ( ! componentId ) {\n\t\tthrow new Error( 'Component ID is required' );\n\t}\n\n\tif ( ! overridableProps ) {\n\t\tthrow new Error( 'Component has no overridable props' );\n\t}\n\n\tconst propType = getPropTypeForComponentOverride( overridableProp );\n\n\tif ( ! propType ) {\n\t\treturn null;\n\t}\n\n\tconst resolvedOverrideValue = matchingOverride ? resolveOverridePropValue( matchingOverride ) : null;\n\tconst propValue = resolvedOverrideValue ?? recursiveOriginValue ?? overridableProp.originValue;\n\n\tconst value = {\n\t\t[ overridableProp.overrideKey ]: propValue,\n\t} as OverridesSchema;\n\n\tconst setValue = ( newValue: OverridesSchema ) => {\n\t\tif ( ! overridableProps ) {\n\t\t\tsetInstanceValue( {\n\t\t\t\t...instanceValue,\n\t\t\t\toverrides: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst newPropValue = getTempNewValueForDynamicProp(\n\t\t\tpropType,\n\t\t\tpropValue,\n\t\t\tnewValue[ overridableProp.overrideKey ]\n\t\t);\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,\n\t\t} );\n\n\t\tlet newOverrides = ( overrides ?? [] )\n\t\t\t.filter( ( override ) => isValidOverride( overridableProps, override ) )\n\t\t\t.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 && wrappingComponentId ) {\n\t\t\tif ( overridableProp.originPropFields ) {\n\t\t\t\tupdateOverridableProp( wrappingComponentId, 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( wrappingComponentId, 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 {\n\t\telementId: originElementId,\n\t\twidgetType,\n\t\telType,\n\t\tpropKey,\n\t} = overridableProp.originPropFields ?? overridableProp;\n\n\tconst element = getContainerByOriginId( originElementId, componentInstanceElement.element.id );\n\n\tif ( ! element ) {\n\t\tthrow new OverrideControlInnerElementNotFoundError( { context: { componentId, elementId: originElementId } } );\n\t}\n\tconst elementId = element.id;\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\tconst settings = getElementSettings< AnyTransformable >( elementId, Object.keys( elementType.propsSchema ) );\n\n\tconst propTypeSchema = createTopLevelObjectType( {\n\t\tschema: {\n\t\t\t[ overridableProp.overrideKey ]: propType,\n\t\t},\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 } settings={ settings }>\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<Box mb={ 1.5 }>\n\t\t\t\t\t\t\t\t\t<ControlTypeContainer layout={ layout }>\n\t\t\t\t\t\t\t\t\t\t{ layout !== 'custom' && (\n\t\t\t\t\t\t\t\t\t\t\t<ControlLabel>{ overridableProp.label }</ControlLabel>\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t<OriginalControl control={ control } controlProps={ controlProps } />\n\t\t\t\t\t\t\t\t\t</ControlTypeContainer>\n\t\t\t\t\t\t\t\t</Box>\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\n// temp solution to allow dynamic values to be overridden, will be removed once placeholder is implemented\nfunction getTempNewValueForDynamicProp( propType: PropType, propValue: PropValue, newPropValue: PropValue ) {\n\tconst isRemovingOverride = newPropValue === null;\n\n\tif ( isRemovingOverride && isDynamicPropValue( propValue ) ) {\n\t\treturn ( propType.default ?? null ) as ComponentInstanceOverrideProp | ComponentOverridableProp;\n\t}\n\n\treturn newPropValue as ComponentInstanceOverrideProp | ComponentOverridableProp;\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\nfunction isValidOverride( overridableProps: OverridableProps, override: ComponentInstanceOverride ): boolean {\n\tconst overridableKey = componentOverridablePropTypeUtil.isValid( override )\n\t\t? ( override.value.origin_value as ComponentInstanceOverrideProp )?.value.override_key\n\t\t: override.value.override_key;\n\n\treturn !! overridableProps.props[ overridableKey ];\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 { 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 { type V1Document } from '@elementor/editor-documents';\nimport { __dispatch as dispatch, __getStore as getStore } from '@elementor/store';\n\nimport { type ComponentId, type OverridableProps, type PublishedComponent, type UnpublishedComponent } from '../types';\nimport { type ComponentsPathItem, type SanitizeAttributes, slice } from './store';\n\nfunction safeDispatch() {\n\treturn getStore()?.dispatch;\n}\n\nexport const componentsActions = {\n\tadd( components: PublishedComponent | PublishedComponent[] ) {\n\t\tdispatch( slice.actions.add( components ) );\n\t},\n\tload( components: PublishedComponent[] ) {\n\t\tdispatch( slice.actions.load( components ) );\n\t},\n\taddUnpublished( component: UnpublishedComponent ) {\n\t\tdispatch( slice.actions.addUnpublished( component ) );\n\t},\n\tremoveUnpublished( uids: string | string[] ) {\n\t\tdispatch( slice.actions.removeUnpublished( uids ) );\n\t},\n\tresetUnpublished() {\n\t\tdispatch( slice.actions.resetUnpublished() );\n\t},\n\tremoveStyles( id: ComponentId ) {\n\t\tdispatch( slice.actions.removeStyles( { id } ) );\n\t},\n\taddStyles( styles: Record< string, unknown > ) {\n\t\tdispatch( slice.actions.addStyles( styles ) );\n\t},\n\taddCreatedThisSession( uid: string ) {\n\t\tdispatch( slice.actions.addCreatedThisSession( uid ) );\n\t},\n\tremoveCreatedThisSession( uid: string ) {\n\t\tdispatch( slice.actions.removeCreatedThisSession( uid ) );\n\t},\n\tarchive( componentId: ComponentId ) {\n\t\tdispatch( slice.actions.archive( componentId ) );\n\t},\n\tsetCurrentComponentId( id: V1Document[ 'id' ] | null ) {\n\t\tsafeDispatch()?.( slice.actions.setCurrentComponentId( id ) );\n\t},\n\tsetPath( path: ComponentsPathItem[] ) {\n\t\tsafeDispatch()?.( slice.actions.setPath( path ) );\n\t},\n\tsetOverridableProps( componentId: ComponentId, overridableProps: OverridableProps ) {\n\t\tdispatch( slice.actions.setOverridableProps( { componentId, overridableProps } ) );\n\t},\n\trename( componentUid: string, name: string ) {\n\t\tdispatch( slice.actions.rename( { componentUid, name } ) );\n\t},\n\tcleanUpdatedComponentNames() {\n\t\tdispatch( slice.actions.cleanUpdatedComponentNames() );\n\t},\n\tupdateComponentSanitizedAttribute( componentId: ComponentId, attribute: SanitizeAttributes ) {\n\t\tdispatch( slice.actions.updateComponentSanitizedAttribute( { componentId, attribute } ) );\n\t},\n\tresetSanitizedComponents() {\n\t\tdispatch( slice.actions.resetSanitizedComponents() );\n\t},\n};\n","import { __getState as getState, __getStore as getStore } from '@elementor/store';\n\nimport { type ComponentId } from '../types';\nimport {\n\ttype ComponentsSlice,\n\tselectArchivedThisSession,\n\tselectComponentByUid,\n\tselectComponents,\n\tselectCreatedThisSession,\n\tselectCurrentComponent,\n\tselectCurrentComponentId,\n\tselectOverridableProps,\n\tselectUnpublishedComponents,\n\tselectUpdatedComponentNames,\n} from './store';\n\nfunction safeGetState(): ComponentsSlice | undefined {\n\treturn getStore()?.getState() as ComponentsSlice | undefined;\n}\n\nexport const componentsSelectors = {\n\tgetOverridableProps( componentId: ComponentId ) {\n\t\treturn selectOverridableProps( getState(), componentId );\n\t},\n\tgetCurrentComponent() {\n\t\treturn selectCurrentComponent( getState() );\n\t},\n\tgetCurrentComponentId() {\n\t\tconst state = safeGetState();\n\t\tif ( ! state ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn selectCurrentComponentId( state );\n\t},\n\tgetUnpublishedComponents() {\n\t\treturn selectUnpublishedComponents( getState() );\n\t},\n\tgetUpdatedComponentNames() {\n\t\treturn selectUpdatedComponentNames( getState() );\n\t},\n\tgetArchivedThisSession() {\n\t\treturn selectArchivedThisSession( getState() );\n\t},\n\tgetCreatedThisSession() {\n\t\treturn selectCreatedThisSession( getState() );\n\t},\n\tgetComponents() {\n\t\treturn selectComponents( getState() );\n\t},\n\tgetComponentByUid( componentUid: string ) {\n\t\treturn selectComponentByUid( getState(), componentUid );\n\t},\n};\n","import { 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 { componentsActions } from '../dispatchers';\nimport { componentsSelectors } from '../selectors';\n\nexport function updateOverridableProp(\n\tcomponentId: number,\n\tpropValue: ComponentOverridablePropValue,\n\toriginPropFields?: OriginPropFields\n) {\n\tconst overridableProps = componentsSelectors.getOverridableProps( 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\tcomponentsActions.setOverridableProps( componentId, newOverridableProps );\n}\n","import { getContainer, type V1Element } from '@elementor/editor-elements';\n\nimport { type ExtendedWindow } from '../types';\n\n/**\n * Resolves a container by its origin ID, with optional scoping to a component instance.\n *\n * When component instances are rendered, their inner elements get prefixed IDs\n * (e.g., `{instanceId}_{originalId}`), but store data uses original IDs.\n * This function bridges between the two by searching for elements with a matching `originId`.\n *\n * @param originElementId - The original (unprefixed) element ID from store data\n * @param instanceElementId - Optional instance widget ID to scope the search\n *\n * @return The container with prefixed runtime ID, or null if not found\n *\n * @example\n * // Component editing mode (no prefixing)\n * getContainerByOriginId('element-1') // returns container with id='element-1'\n *\n * @example\n * // Instance editing mode (with hash prefixing)\n * getContainerByOriginId('element-1', 'instance-abc')\n * // returns container with id='{hash}_element-1' and originId='element-1'\n */\nexport function getContainerByOriginId( originElementId: string, instanceElementId?: string ): V1Element | null {\n\tif ( ! instanceElementId ) {\n\t\treturn getContainer( originElementId );\n\t}\n\n\tconst instanceContainer = getContainer( instanceElementId );\n\n\tif ( ! instanceContainer ) {\n\t\treturn null;\n\t}\n\n\tconst legacyWindow = window as unknown as ExtendedWindow;\n\n\treturn (\n\t\tlegacyWindow.elementor?.getContainerByKeyValue?.( {\n\t\t\tkey: 'originId',\n\t\t\tvalue: originElementId,\n\t\t\tparent: instanceContainer.view,\n\t\t} ) ?? null\n\t);\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 { widgetType, propKey } = overridableProp;\n\n\treturn getPropType( {\n\t\twidgetType,\n\t\tpropKey,\n\t} );\n};\n\nfunction getPropType( { widgetType, propKey }: Pick< OriginPropFields, 'widgetType' | 'propKey' > ) {\n\tconst widgetPropsSchema = getWidgetsCache()?.[ widgetType ]?.atomic_props_schema;\n\n\treturn widgetPropsSchema?.[ propKey ];\n}\n","import { componentInstanceOverridePropTypeUtil } from '../prop-types/component-instance-override-prop-type';\nimport {\n\ttype ComponentInstanceOverride,\n\ttype ComponentInstanceOverridesPropValue,\n} from '../prop-types/component-instance-overrides-prop-type';\nimport { componentOverridablePropTypeUtil } from '../prop-types/component-overridable-prop-type';\n\nexport type InnerOverrideInfo = {\n\tcomponentId: number;\n\tinnerOverrideKey: string;\n\toverrideValue: unknown;\n};\n\nexport function 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\n\t\t\tif ( overridableValue ) {\n\t\t\t\tconst overrideValue = componentInstanceOverridePropTypeUtil.extract( overridableValue.origin_value );\n\t\t\t\treturn overrideValue?.override_key === overrideKey;\n\t\t\t}\n\n\t\t\treturn override.value.override_key === overrideKey;\n\t\t} ) ?? null\n\t);\n}\n\nexport function extractInnerOverrideInfo( override: ComponentInstanceOverride | null ): InnerOverrideInfo | null {\n\tif ( ! override ) {\n\t\treturn null;\n\t}\n\n\tconst overridableValue = componentOverridablePropTypeUtil.extract( override );\n\tconst innerOverride = overridableValue\n\t\t? componentInstanceOverridePropTypeUtil.extract( overridableValue.origin_value )\n\t\t: componentInstanceOverridePropTypeUtil.extract( override );\n\n\tif ( ! innerOverride ) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tschema_source: schemaSource,\n\t\toverride_key: innerOverrideKey,\n\t\toverride_value: overrideValue,\n\t} = innerOverride;\n\tconst componentId = schemaSource?.id;\n\n\tif ( ! componentId || ! innerOverrideKey ) {\n\t\treturn null;\n\t}\n\n\treturn { componentId, innerOverrideKey, overrideValue };\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 { type PropValue } from '@elementor/editor-props';\nimport { __useSelector as useSelector } from '@elementor/store';\n\nimport { type ComponentInstanceOverride } from '../../prop-types/component-instance-overrides-prop-type';\nimport { componentOverridablePropTypeUtil } from '../../prop-types/component-overridable-prop-type';\nimport { selectData } from '../../store/store';\nimport { type OverridableProp, type PublishedComponent } from '../../types';\nimport { getOverridableProp } from '../../utils/get-overridable-prop';\nimport { extractInnerOverrideInfo } from '../../utils/overridable-props-utils';\n\nexport function useResolvedOriginValue( override: ComponentInstanceOverride | null, overridableProp: OverridableProp ) {\n\tconst components = useSelector( selectData );\n\n\treturn resolveOriginValue( components, override, overridableProp );\n}\n\nfunction resolveOriginValue(\n\tcomponents: PublishedComponent[],\n\tmatchingOverride: ComponentInstanceOverride | null,\n\toverridableProp: OverridableProp\n): PropValue {\n\tconst { originValue: fallbackOriginValue, originPropFields } = overridableProp;\n\n\tif ( hasValue( fallbackOriginValue ) ) {\n\t\treturn fallbackOriginValue;\n\t}\n\n\tif ( matchingOverride ) {\n\t\tconst result = getOriginFromOverride( components, matchingOverride );\n\n\t\tif ( hasValue( result ) ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tconst { elementId, propKey } = originPropFields ?? {};\n\n\tif ( elementId && propKey ) {\n\t\treturn findOriginValueByElementId( components, elementId, propKey );\n\t}\n\n\treturn null;\n}\n\nfunction getOriginFromOverride( components: PublishedComponent[], override: ComponentInstanceOverride ): PropValue {\n\tconst innerOverrideInfo = extractInnerOverrideInfo( override );\n\n\tif ( ! innerOverrideInfo ) {\n\t\treturn null;\n\t}\n\n\tconst { componentId, innerOverrideKey, overrideValue } = innerOverrideInfo;\n\n\tconst prop = getOverridableProp( { componentId, overrideKey: innerOverrideKey } );\n\n\tif ( hasValue( prop?.originValue ) ) {\n\t\treturn prop.originValue;\n\t}\n\n\tif ( prop?.originPropFields?.elementId ) {\n\t\tconst targetPropKey = prop.originPropFields.propKey ?? prop.propKey;\n\t\tconst result = findOriginValueByElementId( components, prop.originPropFields.elementId, targetPropKey );\n\n\t\tif ( hasValue( result ) ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tconst nestedOverridable = componentOverridablePropTypeUtil.extract( overrideValue );\n\n\tif ( nestedOverridable ) {\n\t\treturn getOriginFromOverride( components, componentOverridablePropTypeUtil.create( nestedOverridable ) );\n\t}\n\n\treturn null;\n}\n\nfunction findOriginValueByElementId(\n\tcomponents: PublishedComponent[],\n\ttargetElementId: string,\n\ttargetPropKey: string,\n\tvisited: Set< number > = new Set()\n): PropValue {\n\tfor ( const component of components ) {\n\t\tif ( visited.has( component.id ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tvisited.add( component.id );\n\n\t\tconst matchingProp = Object.values( component.overridableProps?.props ?? {} ).find(\n\t\t\t( { elementId, propKey } ) => elementId === targetElementId && propKey === targetPropKey\n\t\t);\n\n\t\tif ( ! matchingProp ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( hasValue( matchingProp.originValue ) ) {\n\t\t\treturn matchingProp.originValue;\n\t\t}\n\n\t\tif ( matchingProp.originPropFields?.elementId ) {\n\t\t\tconst innerPropKey = matchingProp.originPropFields.propKey ?? targetPropKey;\n\n\t\t\treturn findOriginValueByElementId(\n\t\t\t\tcomponents,\n\t\t\t\tmatchingProp.originPropFields.elementId,\n\t\t\t\tinnerPropKey,\n\t\t\t\tvisited\n\t\t\t);\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction hasValue< T >( value: T | null | undefined ): value is T {\n\treturn value !== null && value !== undefined;\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 { useElement } from '@elementor/editor-editing-panel';\n\nimport { useSanitizeOverridableProps } from '../../hooks/use-sanitize-overridable-props';\nimport { type ComponentInstanceOverridesPropValue } from '../../prop-types/component-instance-overrides-prop-type';\nimport { componentInstancePropTypeUtil } from '../../prop-types/component-instance-prop-type';\nimport { useComponent } from '../../store/store';\nimport { type Component, type OverridablePropsGroup } from '../../types';\n\ntype InstancePanelData = {\n\tcomponentId: number;\n\tcomponent: Component;\n\toverrides: ComponentInstanceOverridesPropValue;\n\toverridableProps: NonNullable< ReturnType< typeof useSanitizeOverridableProps > >;\n\tgroups: OverridablePropsGroup[];\n\tisEmpty: boolean;\n\tcomponentInstanceId: string;\n};\n\nexport function useInstancePanelData(): InstancePanelData | null {\n\tconst { element, 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\n\tconst componentInstanceId = element?.id;\n\n\tconst overridableProps = useSanitizeOverridableProps( componentId ?? null, componentInstanceId );\n\n\tif ( ! componentId || ! overridableProps || ! component || ! componentInstanceId ) {\n\t\treturn null;\n\t}\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 { componentId, component, overrides, overridableProps, groups, isEmpty, componentInstanceId };\n}\n\nfunction useComponentInstanceSettings() {\n\tconst { element, settings } = useElement();\n\n\treturn { element, settings: componentInstancePropTypeUtil.extract( settings.component_instance ) };\n}\n","import { type ComponentInstanceOverride } from '../prop-types/component-instance-overrides-prop-type';\nimport { componentInstanceOverridesPropTypeUtil } from '../prop-types/component-instance-overrides-prop-type';\nimport { componentInstancePropTypeUtil } from '../prop-types/component-instance-prop-type';\nimport { componentOverridablePropTypeUtil } from '../prop-types/component-overridable-prop-type';\nimport { type OverridableProp, type OverridableProps } from '../types';\nimport { getContainerByOriginId } from './get-container-by-origin-id';\nimport { getOverridableProp } from './get-overridable-prop';\nimport { extractInnerOverrideInfo } from './overridable-props-utils';\n\nexport function filterValidOverridableProps(\n\toverridableProps: OverridableProps,\n\t// instanceElementId is used to find the component inner elements,\n\t// and should be passed when editing component instance (not in component edit mode)\n\tinstanceElementId?: string\n): OverridableProps {\n\tconst validProps: Record< string, OverridableProp > = {};\n\n\tfor ( const [ key, prop ] of Object.entries( overridableProps.props ) ) {\n\t\tif ( isExposedPropValid( prop, instanceElementId ) ) {\n\t\t\tvalidProps[ key ] = prop;\n\t\t}\n\t}\n\n\tconst validPropKeys = new Set( Object.keys( validProps ) );\n\tconst filteredGroups = {\n\t\titems: Object.fromEntries(\n\t\t\tObject.entries( overridableProps.groups.items ).map( ( [ groupId, group ] ) => [\n\t\t\t\tgroupId,\n\t\t\t\t{ ...group, props: group.props.filter( ( propKey ) => validPropKeys.has( propKey ) ) },\n\t\t\t] )\n\t\t),\n\t\torder: overridableProps.groups.order,\n\t};\n\n\treturn { props: validProps, groups: filteredGroups };\n}\n\nexport function isExposedPropValid( prop: OverridableProp, instanceElementId?: string ): boolean {\n\tif ( ! prop.originPropFields ) {\n\t\t// if no originPropFields - the prop is on the widget level itself, therefore no need to lookup for a corresponding component's overridables\n\t\treturn true;\n\t}\n\n\tconst innerComponentInstanceElement = getContainerByOriginId( prop.elementId, instanceElementId );\n\n\tif ( ! innerComponentInstanceElement ) {\n\t\treturn false;\n\t}\n\n\tconst setting = innerComponentInstanceElement.settings?.get( 'component_instance' ) ?? null;\n\tconst componentInstance = componentInstancePropTypeUtil.extract( setting );\n\n\tif ( ! componentInstance?.component_id?.value ) {\n\t\treturn false;\n\t}\n\n\tconst overrides = componentInstanceOverridesPropTypeUtil.extract( componentInstance.overrides ) ?? undefined;\n\tconst matchingOverride = findOverrideByOuterKey( overrides, prop.overrideKey );\n\tconst innerOverrideInfo = extractInnerOverrideInfo( matchingOverride );\n\n\tif ( ! innerOverrideInfo ) {\n\t\treturn false;\n\t}\n\n\tconst { componentId, innerOverrideKey } = innerOverrideInfo;\n\tconst innerOverridableProp = getOverridableProp( { componentId, overrideKey: innerOverrideKey } );\n\n\tif ( ! innerOverridableProp ) {\n\t\treturn false;\n\t}\n\n\treturn isExposedPropValid( innerOverridableProp, innerComponentInstanceElement.id );\n}\n\nfunction findOverrideByOuterKey(\n\toverrides: ComponentInstanceOverride[] | undefined,\n\touterKey: string\n): ComponentInstanceOverride | null {\n\tif ( ! overrides ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\toverrides.find( ( override ) => {\n\t\t\tconst overridableValue = componentOverridablePropTypeUtil.extract( override );\n\n\t\t\tif ( overridableValue ) {\n\t\t\t\treturn overridableValue.override_key === outerKey;\n\t\t\t}\n\n\t\t\treturn override.value.override_key === outerKey;\n\t\t} ) ?? null\n\t);\n}\n","import { useIsSanitizedComponent, useOverridableProps } from '../store/store';\nimport { type ComponentId, type OverridableProps } from '../types';\nimport { filterValidOverridableProps } from '../utils/filter-valid-overridable-props';\n\nexport function useSanitizeOverridableProps(\n\tcomponentId: ComponentId | null,\n\tinstanceElementId?: string\n\t// instanceElementId is used to find the component inner elements,\n\t// and should be passed when editing component instance (not in component edit mode)\n): OverridableProps | undefined {\n\tconst overridableProps = useOverridableProps( componentId );\n\tconst isSanitized = useIsSanitizedComponent( componentId, 'overridableProps' );\n\n\tif ( ! overridableProps || ! componentId ) {\n\t\treturn undefined;\n\t}\n\n\tif ( isSanitized ) {\n\t\treturn overridableProps;\n\t}\n\n\treturn filterValidOverridableProps( overridableProps, instanceElementId );\n}\n","import { useEffect } from 'react';\nimport { useLoadedTemplates } from '@elementor/editor-templates';\n\nimport { loadComponentsAssets } from '../store/actions/load-components-assets';\n\nexport const LoadTemplateComponents = () => {\n\tconst templates = useLoadedTemplates();\n\n\tuseEffect( () => {\n\t\tloadComponentsAssets( templates.flatMap( ( elements ) => elements ?? [] ) );\n\t}, [ templates ] );\n\n\treturn null;\n};\n","import { isDocumentDirty, setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\n\nimport { type ComponentDocumentsMap, getComponentDocuments } from '../../utils/get-component-documents';\nimport { loadComponentsOverridableProps } from './load-components-overridable-props';\nimport { loadComponentsStyles } from './load-components-styles';\n\nexport async function loadComponentsAssets( elements: V1ElementData[] ) {\n\tconst documents = await getComponentDocuments( elements );\n\n\tupdateDocumentState( documents );\n\tloadComponentsStyles( documents );\n\n\tawait loadComponentsOverridableProps( [ ...documents.keys() ] );\n}\n\nfunction updateDocumentState( documents: ComponentDocumentsMap ) {\n\tconst isDrafted = [ ...documents.values() ].some( isDocumentDirty );\n\n\tif ( isDrafted ) {\n\t\tsetDocumentModifiedStatus( true );\n\t}\n}\n","import { type Document } from '@elementor/editor-documents';\nimport { 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 type ComponentDocumentsMap = Map< number, Document >;\n\ntype ProcessedCache = Map< number, Promise< Document | null > >;\n\nexport async function getComponentDocuments(\n\telements: V1ElementData[],\n\tcache: ProcessedCache = new Map()\n): Promise< ComponentDocumentsMap > {\n\tconst componentIds = await getComponentIds( elements, cache );\n\n\treturn getDocumentsMap( componentIds, cache );\n}\n\nasync function getComponentIds( elements: V1ElementData[], cache: ProcessedCache ): Promise< number[] > {\n\tconst results = await Promise.all(\n\t\telements.map( async ( { widgetType, elType, elements: childElements, settings } ) => {\n\t\t\tconst ids: number[] = [];\n\n\t\t\tif ( isComponentInstance( { widgetType, elType } ) ) {\n\t\t\t\tconst componentId = ( settings?.component_instance as ComponentInstanceProp )?.value?.component_id\n\t\t\t\t\t.value;\n\n\t\t\t\tif ( ! componentId ) {\n\t\t\t\t\treturn ids;\n\t\t\t\t}\n\n\t\t\t\tids.push( componentId );\n\n\t\t\t\tif ( ! cache.has( componentId ) ) {\n\t\t\t\t\tcache.set( componentId, getComponentDocumentData( componentId ) );\n\t\t\t\t}\n\n\t\t\t\tconst doc = await cache.get( componentId );\n\t\t\t\tchildElements = doc?.elements;\n\t\t\t}\n\n\t\t\tif ( childElements?.length ) {\n\t\t\t\tconst childIds = await getComponentIds( childElements, cache );\n\t\t\t\tids.push( ...childIds );\n\t\t\t}\n\n\t\t\treturn ids;\n\t\t} )\n\t);\n\n\treturn [ ...new Set( results.flat() ) ];\n}\n\nasync function getDocumentsMap( ids: number[], cache: ProcessedCache ): Promise< ComponentDocumentsMap > {\n\tconst documents = await Promise.all(\n\t\tids.map( async ( id ) => {\n\t\t\tconst document = await cache.get( id );\n\n\t\t\tif ( ! document ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn [ id, document ];\n\t\t} )\n\t);\n\n\treturn new Map( documents.filter( ( document ): document is [ number, Document ] => document !== null ) );\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\treturn Promise.all( componentIds.map( 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 Document } from '@elementor/editor-documents';\nimport { 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 { type ComponentDocumentsMap } from '../../utils/get-component-documents';\nimport { selectStyles, slice } from '../store';\n\nexport function loadComponentsStyles( documents: ComponentDocumentsMap ) {\n\tif ( ! documents.size ) {\n\t\treturn;\n\t}\n\n\tconst knownComponents = selectStyles( getState() );\n\tconst unknownDocuments = new Map( [ ...documents.entries() ].filter( ( [ id ] ) => ! knownComponents[ id ] ) );\n\n\tif ( ! unknownDocuments.size ) {\n\t\treturn;\n\t}\n\n\taddStyles( unknownDocuments );\n}\n\nfunction addStyles( documents: ComponentDocumentsMap ) {\n\tconst styles = Object.fromEntries(\n\t\t[ ...documents.entries() ].map( ( [ id, document ] ) => [ id, extractStylesFromDocument( document ) ] )\n\t);\n\n\tdispatch( slice.actions.addStyles( styles ) );\n}\n\nfunction extractStylesFromDocument( document: Document ): Array< StyleDefinition > {\n\tif ( ! document.elements?.length ) {\n\t\treturn [];\n\t}\n\n\treturn document.elements.flatMap( extractStylesFromElement );\n}\n\nfunction extractStylesFromElement( element: V1ElementData ): Array< StyleDefinition > {\n\treturn [\n\t\t...Object.values( element.styles ?? {} ),\n\t\t...( element.elements ?? [] ).flatMap( extractStylesFromElement ),\n\t];\n}\n","import {\n\ttype BackboneModel,\n\ttype BackboneModelConstructor,\n\ttype ContextMenuAction,\n\ttype ContextMenuEventData,\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 { type V1ElementData } from '@elementor/editor-elements';\nimport { notify } from '@elementor/editor-notifications';\nimport { __getState as getState } from '@elementor/store';\nimport { hasProInstalled } from '@elementor/utils';\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 { detachComponentInstance } from './utils/detach-component-instance';\nimport { formatComponentElementsId } from './utils/format-component-elements-id';\nimport { switchToComponent } from './utils/switch-to-component';\nimport { trackComponentEvent } from './utils/tracking';\n\ntype ContextMenuGroupConfig = {\n\tdisable: Record< string, string[] >;\n\tadd: Record< string, { index: number; actions: 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 EDIT_COMPONENT_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-edit/';\n\nconst COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID = 'component-edit-upgrade';\n\nfunction notifyComponentEditUpgrade() {\n\tnotify( {\n\t\ttype: 'promotion',\n\t\tid: COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID,\n\t\tmessage: __( 'Editing components requires an active Pro subscription.', 'elementor' ),\n\t\tadditionalActionProps: [\n\t\t\t{\n\t\t\t\tsize: 'small',\n\t\t\t\tvariant: 'contained',\n\t\t\t\tcolor: 'promotion',\n\t\t\t\thref: EDIT_COMPONENT_UPGRADE_URL,\n\t\t\t\ttarget: '_blank',\n\t\t\t\tchildren: __( 'Upgrade Now', 'elementor' ),\n\t\t\t},\n\t\t],\n\t} );\n}\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 actions if needed\n\t\tif ( addConfig ) {\n\t\t\tupdatedActions.splice( addConfig.index, 0, ...addConfig.actions );\n\t\t}\n\n\t\treturn { ...group, actions: updatedActions };\n\t} );\n};\n\ntype ComponentTypeOptions = CreateTemplatedElementTypeOptions & {\n\tshowLockedByModal?: ( lockedBy: string ) => void;\n\tshowDetachConfirmDialog?: ( onConfirm: () => void ) => void;\n};\n\nexport function createComponentType( options: ComponentTypeOptions ): 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( options: ComponentTypeOptions ): 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?: V1ElementData[];\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\tconst instanceId = this.model.get( 'id' );\n\t\t\t\tconst elements = componentInstance.elements ?? [];\n\t\t\t\tconst formattedElements = formatComponentElementsId( elements, [ instanceId ] );\n\n\t\t\t\tthis.collection = legacyWindow.elementor.createBackboneElementsCollection( formattedElements );\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\t\t\tconst hasPro = hasProInstalled();\n\n\t\t\tconst badgeClass = 'elementor-context-menu-list__item__shortcut__promotion-badge';\n\t\t\tconst proBadge = `<a href=\"${ EDIT_COMPONENT_UPGRADE_URL }\" target=\"_blank\" onclick=\"event.stopPropagation()\" class=\"${ badgeClass }\"><i class=\"eicon-upgrade-crown\"></i></a>`;\n\n\t\t\tconst editComponentAction: ContextMenuAction = {\n\t\t\t\tname: 'edit component',\n\t\t\t\ticon: 'eicon-edit',\n\t\t\t\ttitle: () => __( 'Edit Component', 'elementor' ),\n\t\t\t\t...( ! hasPro && { shortcut: proBadge, hasShortcutAction: true } ),\n\t\t\t\tisEnabled: () => hasPro,\n\t\t\t\tcallback: ( _: unknown, eventData: ContextMenuEventData ) => this.editComponent( eventData ),\n\t\t\t};\n\n\t\t\tconst detachInstanceAction: ContextMenuAction = {\n\t\t\t\tname: 'detach instance',\n\t\t\t\ticon: 'eicon-chain-broken',\n\t\t\t\ttitle: () => __( 'Detach from Component', 'elementor' ),\n\t\t\t\tisEnabled: () => true,\n\t\t\t\tcallback: ( _: unknown, eventData: ContextMenuEventData ) => this.detachInstance( eventData ),\n\t\t\t};\n\n\t\t\tconst actions = isAdministrator ? [ editComponentAction, detachInstanceAction ] : [ detachInstanceAction ];\n\n\t\t\tconst addedGroup = {\n\t\t\t\tgeneral: {\n\t\t\t\t\tindex: 1,\n\t\t\t\t\tactions,\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: 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\tconst hasPro = hasProInstalled();\n\n\t\t\tif ( ! hasPro || 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\tdetachInstance( { trigger, location, secondaryLocation }: ContextMenuEventData ) {\n\t\t\tconst componentId = this.getComponentId();\n\t\t\tconst instanceId = this.model.get( 'id' );\n\n\t\t\tif ( ! componentId || ! instanceId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst handleConfirm = async () => {\n\t\t\t\ttry {\n\t\t\t\t\tawait detachComponentInstance( {\n\t\t\t\t\t\tinstanceId,\n\t\t\t\t\t\tcomponentId,\n\t\t\t\t\t\ttrackingInfo: { location, secondaryLocation, trigger },\n\t\t\t\t\t} );\n\t\t\t\t} catch {\n\t\t\t\t\tnotify( {\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tmessage: __( 'Failed to detach component instance.', 'elementor' ),\n\t\t\t\t\t\tid: 'detach-component-instance-failed',\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\toptions.showDetachConfirmDialog?.( handleConfirm );\n\t\t}\n\n\t\thandleDblClick( e: MouseEvent ) {\n\t\t\te.stopPropagation();\n\n\t\t\tif ( ! isUserAdministrator() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! hasProInstalled() ) {\n\t\t\t\tnotifyComponentEditUpgrade();\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 V1ElementData } from '@elementor/editor-elements';\nimport { hashString } from '@elementor/utils';\n\nconst ELEMENT_ID_LENGTH = 7;\n// The purpose of this function is to solve the issue of component inner elements having the same ID\n// when there are multiple instances of the same component on a page.\n// We change the ID of the inner elements to a hash of the nesting path of the element and the element's originalID.\nexport function formatComponentElementsId( elements: V1ElementData[], path: string[] ): V1ElementData[] {\n\treturn elements.map( ( element ) => {\n\t\tconst nestingPath = [ ...path, element.id ];\n\t\tconst id = hashString( nestingPath.join( '_' ), ELEMENT_ID_LENGTH );\n\n\t\treturn {\n\t\t\t...element,\n\t\t\tid,\n\t\t\toriginId: element.id,\n\t\t\telements: element.elements ? formatComponentElementsId( element.elements, nestingPath ) : undefined,\n\t\t};\n\t} );\n}\n","import { invalidateDocumentData, switchToDocument } from '@elementor/editor-documents';\nimport { getCurrentDocumentContainer, selectElement } from '@elementor/editor-elements';\nimport { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nexport async function switchToComponent(\n\tcomponentId: number,\n\tcomponentInstanceId?: string | null,\n\telement?: HTMLElement | null\n) {\n\tconst selector = getSelector( element, componentInstanceId );\n\n\tinvalidateDocumentData( componentId );\n\n\tawait switchToDocument( 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\nexport async function expandNavigator() {\n\tawait runCommand( 'navigator/expand-all' );\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 { 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 { invalidateDocumentData, isDocumentDirty } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { notify } from '@elementor/editor-notifications';\nimport { AxiosError } from '@elementor/http-client';\nimport { __ } from '@wordpress/i18n';\n\nimport { apiClient } from '../api';\nimport { type DocumentSaveStatus } from '../types';\nimport { getComponentDocuments } from '../utils/get-component-documents';\n\nconst INSUFFICIENT_PERMISSIONS_ERROR_CODE = 'insufficient_permissions';\nconst PUBLISH_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-edit/';\nconst PUBLISH_UPGRADE_NOTIFICATION_ID = 'component-publish-upgrade';\n\ntype Options = {\n\tstatus: DocumentSaveStatus;\n\telements: V1ElementData[];\n};\n\nexport async function publishDraftComponentsInPageBeforeSave( { status, elements }: Options ) {\n\tif ( status !== 'publish' ) {\n\t\treturn;\n\t}\n\n\tconst documents = await getComponentDocuments( elements );\n\n\tconst draftIds = [ ...documents.values() ].filter( isDocumentDirty ).map( ( document ) => document.id );\n\n\tif ( draftIds.length === 0 ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait apiClient.updateStatuses( draftIds, 'publish' );\n\t} catch ( error ) {\n\t\tif ( isInsufficientPermissionsError( error ) ) {\n\t\t\tnotifyPublishUpgrade();\n\t\t\treturn;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\tdraftIds.forEach( ( id ) => invalidateDocumentData( id ) );\n}\n\nfunction isInsufficientPermissionsError( error: unknown ): boolean {\n\treturn error instanceof AxiosError && error.response?.data?.code === INSUFFICIENT_PERMISSIONS_ERROR_CODE;\n}\n\nfunction notifyPublishUpgrade() {\n\tnotify( {\n\t\ttype: 'promotion',\n\t\tid: PUBLISH_UPGRADE_NOTIFICATION_ID,\n\t\tmessage: __(\n\t\t\t'You have unpublished component on this page. You need a pro version to publish it.',\n\t\t\t'elementor'\n\t\t),\n\t\tadditionalActionProps: [\n\t\t\t{\n\t\t\t\tsize: 'small',\n\t\t\t\tvariant: 'contained',\n\t\t\t\tcolor: 'promotion',\n\t\t\t\thref: PUBLISH_UPGRADE_URL,\n\t\t\t\ttarget: '_blank',\n\t\t\t\tchildren: __( 'Upgrade Now', 'elementor' ),\n\t\t\t},\n\t\t],\n\t} );\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 { publishDraftComponentsInPageBeforeSave } from './publish-draft-components-in-page-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 publishDraftComponentsInPageBeforeSave( { elements, status } );\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"],"mappings":"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","names":["settingsTransformersRegistry","registerDataHook","__","createTransformer","createTransformer","React","Stack","hasProInstalled","useSelector","useSelector","React","React","ComponentsIcon","Box","Stack","Typography","__","React","Box","React","Box","Stack","Stack","ComponentsIcon","Typography","__","Box","React","__","React","CrownFilledIcon","Box","Typography","__","UPGRADE_URL","__","hasProInstalled","Stack","React","__","React","closeDialog","openDialog","Box","Button","Stack","Typography","__","React","PencilIcon","Box","Stack","hasProInstalled","__","React","createContext","useContext","React","__","dispatch","getState","__","createPropUtils","z","createPropUtils","z","createPropUtils","z","createPropUtils","z","createPropUtils","z","getState","getState","generateElementId","generateElementId","getState","dispatch","__","React","EllipsisWithTooltip","ComponentsIcon","Stack","Icon","__","React","Button","Stack","Typography","__","EmptyState","__","Stack","Typography","Button","React","Divider","Stack","React","Box","ListItemButton","Stack","React","getElementType","Box","React","createContext","useContext","dispatch","dispatch","getState","getStore","getStore","getState","getContainer","React","Stack","useSelector","getState","getState","useSelector","elType","widgetType","propKey","elementId","getElementType","Box","Box","ListItemButton","Stack","Stack","Divider","useElement","useElement","hasProInstalled","__","Stack","PencilIcon","Box","EmptyState","document","dispatch","getState","getState","dispatch","dispatch","getState","getState","document","dispatch","notify","getState","hasProInstalled","__","isComponentInstance","COMPONENT_WIDGET_TYPE","notify","__","hasProInstalled","getState","useEffect","dispatch","useEffect","dispatch","notify","getState","__","__","getState","notify","dispatch","dispatch","getState","getState","invalidateDocumentData","isDocumentDirty","notify","__","isDocumentDirty","document","invalidateDocumentData","notify","__","COMPONENT_WIDGET_TYPE","__","registerDataHook","settingsTransformersRegistry"]}
1
+ {"version":3,"sources":["../src/init.ts","../src/component-instance-transformer.ts","../src/store/store.ts","../src/store/store-types.ts","../src/store/extensible-slice.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/components-tab/components.tsx","../src/hooks/use-components.ts","../src/utils/is-pro-components-supported.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/components/components-tab/components-item.tsx","../src/components/components-tab/loading-components.tsx","../src/components/components-tab/components-pro-notification.tsx","../src/components/components-upgrade-alert.tsx","../src/components/components-tab/components-update-notification.tsx","../src/components/components-update-alert.tsx","../src/components/detach-instance-confirmation-dialog.tsx","../src/components/in-edit-mode.tsx","../src/components/instance-editing-panel/instance-editing-panel.tsx","../src/provider/component-instance-context.tsx","../src/components/instance-editing-panel/detach-action.tsx","../src/utils/detach-component-instance/detach-component-instance.ts","../src/prop-types/component-instance-overrides-prop-type.ts","../src/prop-types/component-instance-override-prop-type.ts","../src/prop-types/component-overridable-prop-type.ts","../src/prop-types/component-instance-prop-type.ts","../src/utils/tracking.ts","../src/utils/detach-component-instance/resolve-detached-instance.ts","../src/utils/detach-component-instance/regenerate-local-style-ids.ts","../src/consts.ts","../src/utils/is-component-instance.ts","../src/utils/detach-component-instance/resolve-overridable-settings.ts","../src/components/instance-editing-panel/instance-panel-header.tsx","../src/components/instance-editing-panel/empty-state.tsx","../src/components/instance-editing-panel/instance-panel-body.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/utils/resolve-override-prop-value.ts","../src/store/dispatchers.ts","../src/store/selectors.ts","../src/store/actions/update-overridable-prop.ts","../src/utils/get-container-by-origin-id.ts","../src/utils/get-prop-type-for-component-override.ts","../src/utils/overridable-props-utils.ts","../src/components/control-label.tsx","../src/components/errors.ts","../src/components/instance-editing-panel/use-resolved-origin-value.tsx","../src/utils/get-overridable-prop.ts","../src/components/instance-editing-panel/use-instance-panel-data.ts","../src/utils/filter-valid-overridable-props.ts","../src/hooks/use-sanitize-overridable-props.ts","../src/components/load-template-components.tsx","../src/store/actions/load-components-assets.ts","../src/utils/get-component-documents.ts","../src/store/actions/load-components-overridable-props.ts","../src/store/actions/load-components-styles.ts","../src/create-component-type.ts","../src/utils/format-component-elements-id.ts","../src/utils/switch-to-component.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/publish-draft-components-in-page-before-save.ts","../src/sync/before-save.ts","../src/sync/load-component-data-after-instance-added.ts"],"sourcesContent":["import { injectIntoLogic } from '@elementor/editor';\nimport {\n\ttype CreateTemplatedElementTypeOptions,\n\tregisterElementType,\n\tsettingsTransformersRegistry,\n} from '@elementor/editor-canvas';\nimport { getV1CurrentDocument } from '@elementor/editor-documents';\nimport { registerEditingPanelReplacement } from '@elementor/editor-editing-panel';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { injectTab } from '@elementor/editor-elements-panel';\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 { Components } from './components/components-tab/components';\nimport { openDetachConfirmDialog } from './components/detach-instance-confirmation-dialog';\nimport { openEditModeDialog } from './components/in-edit-mode';\nimport { InstanceEditingPanel } from './components/instance-editing-panel/instance-editing-panel';\nimport { LoadTemplateComponents } from './components/load-template-components';\nimport { COMPONENT_WIDGET_TYPE, createComponentType } from './create-component-type';\nimport { PopulateStore } from './populate-store';\nimport { initCircularNestingPrevention } from './prevent-circular-nesting';\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 { initLoadComponentDataAfterInstanceAdded } from './sync/load-component-data-after-instance-added';\nimport { type ExtendedWindow } from './types';\n\nexport function init() {\n\tstylesRepository.register( componentsStylesProvider );\n\n\tregisterSlice( slice );\n\n\tregisterElementType( COMPONENT_WIDGET_TYPE, ( options: CreateTemplatedElementTypeOptions ) =>\n\t\tcreateComponentType( {\n\t\t\t...options,\n\t\t\tshowLockedByModal: openEditModeDialog,\n\t\t\tshowDetachConfirmDialog: openDetachConfirmDialog,\n\t\t} )\n\t);\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\tinjectIntoLogic( {\n\t\tid: 'components-populate-store',\n\t\tcomponent: PopulateStore,\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\tinjectIntoLogic( {\n\t\tid: 'templates',\n\t\tcomponent: LoadTemplateComponents,\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\tinitCircularNestingPrevention();\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 { __createSelector as createSelector, __useSelector as useSelector, type SliceState } from '@elementor/store';\n\nimport type { ComponentId, OverridableProps, PublishedComponent, UnpublishedComponent } from '../types';\nimport { type slice } from './extensible-slice';\nimport { type SanitizeAttributes, SLICE_NAME } from './store-types';\n\nexport type ComponentsSlice = SliceState< typeof slice >;\n\nexport { slice, registerComponentsReducer, createComponentsAction, __resetExtraReducers } from './extensible-slice';\nexport type { ComponentsState, ComponentsPathItem, SanitizeAttributes } from './store-types';\nexport { initialState, SLICE_NAME } from './store-types';\n\nexport const 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\nconst useSanitizedComponents = () => {\n\treturn useSelector( ( state: ComponentsSlice ) => state[ SLICE_NAME ].sanitized );\n};\nexport const useIsSanitizedComponent = ( componentId: ComponentId | null, key: SanitizeAttributes ) => {\n\tconst sanitizedComponents = useSanitizedComponents();\n\n\tif ( ! componentId ) {\n\t\treturn false;\n\t}\n\n\treturn !! sanitizedComponents[ componentId ]?.[ key ];\n};\n","import { type V1Document } from '@elementor/editor-documents';\n\nimport {\n\ttype Component,\n\ttype ComponentId,\n\ttype PublishedComponent,\n\ttype StylesDefinition,\n\ttype UnpublishedComponent,\n} from '../types';\n\nexport type SanitizeAttributes = 'overridableProps';\n\nexport type ComponentsState = {\n\tdata: PublishedComponent[];\n\tunpublishedData: UnpublishedComponent[];\n\tloadStatus: 'idle' | 'pending' | 'error';\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\t// We use this map to flag any sanitized attribute of a given component\n\t// This map currently resets in response to the `editor/documents/open` command\n\tsanitized: Record< ComponentId, Partial< Record< SanitizeAttributes, boolean > > >;\n};\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\tsanitized: {},\n};\n\nexport const SLICE_NAME = 'components';\n","import type { V1Document } from '@elementor/editor-documents';\nimport {\n\t__createAction as createAction,\n\t__createSlice as createSlice,\n\t__dispatch as dispatch,\n\ttype AnyAction,\n\ttype PayloadAction,\n} from '@elementor/store';\n\nimport type { ComponentId, OverridableProps, PublishedComponent, UnpublishedComponent } from '../types';\nimport { type ComponentsState, initialState, type SanitizeAttributes, SLICE_NAME } from './store-types';\nimport { loadComponents } from './thunks';\n\ntype GetComponentResponse = PublishedComponent[];\n\ntype ComponentsReducer< P > = ( state: ComponentsState, action: PayloadAction< P > ) => void;\n\nconst extraReducersMap = new Map< string, ComponentsReducer< unknown > >();\n\nexport function registerComponentsReducer< P >( name: string, reducer: ComponentsReducer< P > ) {\n\textraReducersMap.set( `${ SLICE_NAME }/${ name }`, reducer as ComponentsReducer< unknown > );\n}\n\nexport function createComponentsAction< P >( name: string ) {\n\tconst action = createAction< P >( `${ SLICE_NAME }/${ name }` );\n\n\treturn {\n\t\taction,\n\t\tregister( reducer: ComponentsReducer< P > ) {\n\t\t\tregisterComponentsReducer( name, reducer );\n\t\t},\n\t\tdispatch( payload: P ) {\n\t\t\tdispatch( action( payload ) );\n\t\t},\n\t};\n}\n\nexport function __resetExtraReducers() {\n\textraReducersMap.clear();\n}\n\nconst baseSlice = 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\tremoveUnpublished: ( state, { payload }: PayloadAction< string | string[] > ) => {\n\t\t\tconst uidsToRemove = Array.isArray( payload ) ? payload : [ payload ];\n\t\t\tstate.unpublishedData = state.unpublishedData.filter(\n\t\t\t\t( component ) => ! uidsToRemove.includes( component.uid )\n\t\t\t);\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\tremoveCreatedThisSession: ( state, { payload }: PayloadAction< string > ) => {\n\t\t\tstate.createdThisSession = state.createdThisSession.filter( ( uid ) => uid !== 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< ComponentsState[ 'path' ] > ) => {\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\tupdateComponentSanitizedAttribute: (\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload: { componentId, attribute },\n\t\t\t}: PayloadAction< { componentId: ComponentId; attribute: SanitizeAttributes } >\n\t\t) => {\n\t\t\tif ( ! state.sanitized[ componentId ] ) {\n\t\t\t\tstate.sanitized[ componentId ] = {};\n\t\t\t}\n\n\t\t\tstate.sanitized[ componentId ][ attribute ] = true;\n\t\t},\n\t\tresetSanitizedComponents: ( state ) => {\n\t\t\tstate.sanitized = {};\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\nexport const slice: typeof baseSlice = {\n\t...baseSlice,\n\treducer( state: ComponentsState | undefined, action: AnyAction ) {\n\t\tconst nextState = baseSlice.reducer( state, action );\n\n\t\tconst extraReducer = extraReducersMap.get( action.type );\n\n\t\tif ( ! extraReducer || ! nextState ) {\n\t\t\treturn nextState;\n\t\t}\n\n\t\tconst clonedState = structuredClone( nextState );\n\t\textraReducer( clonedState, action as PayloadAction< unknown > );\n\n\t\treturn clonedState;\n\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[], status: DocumentSaveStatus ) =>\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\tstatus,\n\t\t\t\t}\n\t\t\t)\n\t\t\t.then( ( res ) => res.data.data ),\n\tupdateComponentTitle: ( updatedComponentNames: UpdatedComponentName[], status: DocumentSaveStatus ) =>\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\tstatus,\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","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 { useLayoutEffect } from 'react';\nimport { ThemeProvider } from '@elementor/editor-ui';\nimport { Stack } from '@elementor/ui';\n\nimport { useComponents } from '../../hooks/use-components';\nimport { isProComponentsSupported, isProOutdatedForComponents } from '../../utils/is-pro-components-supported';\nimport { ComponentSearch } from './component-search';\nimport { ComponentsList } from './components-list';\nimport { ComponentsProNotification } from './components-pro-notification';\nimport { ComponentsUpdateNotification } from './components-update-notification';\nimport { SearchProvider } from './search-provider';\n\nconst FULL_HEIGHT_STYLE_ID = 'components-full-height-panel';\n\nconst FULL_HEIGHT_CSS = `\n#elementor-panel-page-elements {\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n}\n\n#elementor-panel-elements {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n}\n\n#elementor-panel-elements-wrapper {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n}\n`;\n\nconst useFullHeightPanel = () => {\n\tuseLayoutEffect( () => {\n\t\tlet style = document.getElementById( FULL_HEIGHT_STYLE_ID );\n\n\t\tif ( ! style ) {\n\t\t\tstyle = document.createElement( 'style' );\n\t\t\tstyle.id = FULL_HEIGHT_STYLE_ID;\n\t\t\tstyle.textContent = FULL_HEIGHT_CSS;\n\t\t\tdocument.head.appendChild( style );\n\t\t}\n\n\t\treturn () => {\n\t\t\tdocument.getElementById( FULL_HEIGHT_STYLE_ID )?.remove();\n\t\t};\n\t}, [] );\n};\n\nconst ComponentsContent = () => {\n\tconst { components, isLoading } = useComponents();\n\tconst hasComponents = ! isLoading && components.length > 0;\n\tconst showProNotification = ! isProComponentsSupported() && hasComponents;\n\tconst isOutdated = isProOutdatedForComponents();\n\n\tuseFullHeightPanel();\n\n\treturn (\n\t\t<Stack justifyContent=\"space-between\" sx={ { flex: 1, minHeight: 0 } }>\n\t\t\t{ hasComponents && <ComponentSearch /> }\n\t\t\t<ComponentsList />\n\t\t\t{ showProNotification && ( isOutdated ? <ComponentsUpdateNotification /> : <ComponentsProNotification /> ) }\n\t\t</Stack>\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","import { hasProInstalled, isProAtLeast } from '@elementor/utils';\n\nconst MIN_PRO_VERSION_FOR_COMPONENTS = '4.0';\n\nexport function isProComponentsSupported(): boolean {\n\treturn hasProInstalled() && isProAtLeast( MIN_PRO_VERSION_FOR_COMPONENTS );\n}\n\nexport function isProOutdatedForComponents(): boolean {\n\treturn hasProInstalled() && ! isProAtLeast( MIN_PRO_VERSION_FOR_COMPONENTS );\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 { ComponentsIcon, CrownFilledIcon } 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 { isProComponentsSupported, isProOutdatedForComponents } from '../../utils/is-pro-components-supported';\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';\nconst UPGRADE_URL = 'https://go.elementor.com/go-pro-components/';\nconst UPDATE_PLUGINS_URL = '/wp-admin/plugins.php';\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\n\tconst isEmpty = ! components?.length;\n\n\tif ( isEmpty ) {\n\t\tif ( searchValue.length ) {\n\t\t\treturn <EmptySearchResult />;\n\t\t}\n\n\t\tif ( isProOutdatedForComponents() ) {\n\t\t\treturn <ProOutdatedEmptyState />;\n\t\t}\n\n\t\treturn isProComponentsSupported() ? <EmptyState /> : <ProUpgradeEmptyState />;\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 key={ component.uid } component={ component } />\n\t\t\t) ) }\n\t\t</List>\n\t);\n}\n\nconst ProUpgradeEmptyState = () => {\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{ __( 'Create Reusable Components', '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{ __( 'Create design elements that sync across your entire site.', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Stack>\n\n\t\t\t<Button\n\t\t\t\tvariant=\"contained\"\n\t\t\t\tcolor=\"promotion\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tstartIcon={ <CrownFilledIcon /> }\n\t\t\t\thref={ UPGRADE_URL }\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t>\n\t\t\t\t{ __( 'Upgrade now', 'elementor' ) }\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n};\n\nconst ProOutdatedEmptyState = () => {\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, maxWidth: 268, m: 'auto' } }\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{ __( 'Create Reusable Components', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"secondary\">\n\t\t\t\t\t{ __( 'Create design elements that sync across your entire site.', 'elementor' ) }\n\t\t\t\t</Typography>\n\n\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"secondary\" sx={ { mt: 1 } }>\n\t\t\t\t\t{ __( 'To create components, update Elementor Pro to the latest version.', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Stack>\n\n\t\t\t<Button\n\t\t\t\tvariant=\"text\"\n\t\t\t\tcolor=\"info\"\n\t\t\t\tsize=\"small\"\n\t\t\t\thref={ UPDATE_PLUGINS_URL }\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t>\n\t\t\t\t{ __( 'Update Elementor Pro', 'elementor' ) }\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n};\n\nconst EmptyState = () => {\n\tconst { canCreate } = useComponentsPermissions();\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\t\t\t\t\t</Stack>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n\nexport const 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>&ldquo;</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>&rdquo;.</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\nexport const 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 * as React from 'react';\nimport { forwardRef } from 'react';\nimport { EditableField, EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { ComponentsIcon } from '@elementor/icons';\nimport { Box, ListItemButton, ListItemIcon, styled, type Theme, Typography } from '@elementor/ui';\n\nimport { type Component } from '../../types';\n\nexport type ComponentItemProps = {\n\tcomponent: Omit< Component, 'id' > & { id?: number };\n\tdisabled?: boolean;\n\tdraggable?: boolean;\n\tonDragStart?: React.DragEventHandler;\n\tonDragEnd?: React.DragEventHandler;\n\tonClick?: () => void;\n\tisEditing?: boolean;\n\terror?: string | null;\n\tnameSlot?: React.ReactNode;\n\tendSlot?: React.ReactNode;\n};\n\nexport const ComponentItem = forwardRef< HTMLElement, ComponentItemProps >(\n\t(\n\t\t{\n\t\t\tcomponent,\n\t\t\tdisabled = true,\n\t\t\tdraggable,\n\t\t\tonDragStart,\n\t\t\tonDragEnd,\n\t\t\tonClick,\n\t\t\tisEditing = false,\n\t\t\terror = null,\n\t\t\tnameSlot,\n\t\t\tendSlot,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\treturn (\n\t\t\t<ListItemButton\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tdraggable={ draggable }\n\t\t\t\tonDragStart={ onDragStart }\n\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\tshape=\"rounded\"\n\t\t\t\tref={ ref }\n\t\t\t\tsx={ {\n\t\t\t\t\tborder: 'solid 1px',\n\t\t\t\t\tborderColor: 'divider',\n\t\t\t\t\tpy: 0.5,\n\t\t\t\t\tpx: 1,\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 1,\n\t\t\t\t} }\n\t\t\t\t{ ...props }\n\t\t\t>\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap={ 1 } minWidth={ 0 } flexGrow={ 1 } onClick={ onClick }>\n\t\t\t\t\t<ListItemIcon size=\"tiny\">\n\t\t\t\t\t\t<ComponentsIcon fontSize=\"tiny\" />\n\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t<Indicator isActive={ isEditing } isError={ !! error }>\n\t\t\t\t\t\t<Box display=\"flex\" flex={ 1 } minWidth={ 0 } flexGrow={ 1 }>\n\t\t\t\t\t\t\t{ nameSlot ?? <ComponentName name={ component.name } /> }\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Indicator>\n\t\t\t\t</Box>\n\t\t\t\t{ endSlot }\n\t\t\t</ListItemButton>\n\t\t);\n\t}\n);\n\nconst Indicator = styled( Box, {\n\tshouldForwardProp: ( prop ) => prop !== 'isActive' && prop !== 'isError',\n} )( ( { theme, isActive, isError }: { theme: Theme; isActive: boolean; isError: boolean } ) => ( {\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\ntype EditableConfig = {\n\tref: React.Ref< HTMLElement >;\n\tisEditing: boolean;\n\tgetProps: () => Record< string, unknown >;\n};\n\nexport type ComponentNameProps = {\n\tname: string;\n\teditable?: EditableConfig;\n};\n\nexport function ComponentName( { name, editable }: ComponentNameProps ) {\n\tif ( editable?.isEditing ) {\n\t\treturn <EditableField ref={ editable.ref } as={ Typography } variant=\"caption\" { ...editable.getProps() } />;\n\t}\n\n\treturn <EllipsisWithTooltip title={ name } as={ Typography } variant=\"caption\" color=\"text.primary\" />;\n}\n","import * as React from 'react';\nimport { Box, Skeleton, Stack } from '@elementor/ui';\n\nconst ROWS = Array.from( { length: 3 }, ( _, index ) => index );\n\nconst STAGGER_DELAY_MS = 80;\n\nexport const LoadingComponents = () => {\n\treturn (\n\t\t<Stack\n\t\t\taria-label=\"Loading components\"\n\t\t\tgap={ 1.5 }\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\tpx: 1,\n\t\t\t\t'&:after': {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tbottom: 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: '40%',\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\tzIndex: 1,\n\t\t\t\t},\n\t\t\t} }\n\t\t>\n\t\t\t{ ROWS.map( ( row ) => (\n\t\t\t\t<Box\n\t\t\t\t\tkey={ row }\n\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tpy: 0.75,\n\t\t\t\t\t\tpx: 1.5,\n\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\tanimation: `e-loading-fade-in 0.4s ease-out ${ row * STAGGER_DELAY_MS }ms forwards`,\n\t\t\t\t\t\t'@keyframes e-loading-fade-in': {\n\t\t\t\t\t\t\tfrom: { opacity: 0, transform: 'translateY(4px)' },\n\t\t\t\t\t\t\tto: { opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Skeleton animation=\"wave\" variant=\"rounded\" width={ 24 } height={ 24 } />\n\t\t\t\t\t<Skeleton animation=\"wave\" variant=\"rounded\" width=\"60%\" height={ 14 } />\n\t\t\t\t</Box>\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\n\nimport { ComponentsUpgradeAlert } from '../components-upgrade-alert';\n\nexport const UPGRADE_URL = 'https://go.elementor.com/go-pro-components-exist-footer/';\n\nexport function ComponentsProNotification() {\n\treturn (\n\t\t<ComponentsUpgradeAlert\n\t\t\ttitle={ __( 'Create new components', 'elementor' ) }\n\t\t\tdescription={ __( 'Creating new components requires an active Pro subscription.', 'elementor' ) }\n\t\t\tupgradeUrl={ UPGRADE_URL }\n\t\t/>\n\t);\n}\n","import * as React from 'react';\nimport { CrownFilledIcon } from '@elementor/icons';\nimport { Alert, AlertAction, AlertTitle, Box, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ninterface ComponentsUpgradeAlertProps {\n\ttitle: string;\n\tdescription: string;\n\tupgradeUrl: string;\n}\n\nexport function ComponentsUpgradeAlert( { title, description, upgradeUrl }: ComponentsUpgradeAlertProps ) {\n\treturn (\n\t\t<Box sx={ { mt: 'auto', position: 'sticky', bottom: 0 } }>\n\t\t\t<Alert\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tcolor=\"promotion\"\n\t\t\t\ticon={ <CrownFilledIcon fontSize=\"tiny\" /> }\n\t\t\t\trole=\"status\"\n\t\t\t\tsize=\"small\"\n\t\t\t\taction={\n\t\t\t\t\t<AlertAction\n\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\tcolor=\"promotion\"\n\t\t\t\t\t\thref={ upgradeUrl }\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upgrade now', 'elementor' ) }\n\t\t\t\t\t</AlertAction>\n\t\t\t\t}\n\t\t\t\tsx={ { m: 2, mt: 1 } }\n\t\t\t>\n\t\t\t\t<AlertTitle>{ title }</AlertTitle>\n\t\t\t\t<Typography variant=\"caption\">{ description }</Typography>\n\t\t\t</Alert>\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\n\nimport { ComponentsUpdateAlert } from '../components-update-alert';\n\nexport function ComponentsUpdateNotification() {\n\treturn (\n\t\t<ComponentsUpdateAlert\n\t\t\ttitle={ __( 'Create new Components', 'elementor' ) }\n\t\t\tdescription={ __( 'To create new components, update Elementor Pro to the latest version.', 'elementor' ) }\n\t\t/>\n\t);\n}\n","import * as React from 'react';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertAction, AlertTitle, Box, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst UPDATE_PLUGINS_URL = '/wp-admin/plugins.php';\n\ninterface ComponentsUpdateAlertProps {\n\ttitle: string;\n\tdescription: string;\n}\n\nexport function ComponentsUpdateAlert( { title, description }: ComponentsUpdateAlertProps ) {\n\treturn (\n\t\t<Box sx={ { mt: 'auto', position: 'sticky', bottom: 0 } }>\n\t\t\t<Alert\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tcolor=\"info\"\n\t\t\t\ticon={ <InfoCircleFilledIcon fontSize=\"tiny\" /> }\n\t\t\t\trole=\"status\"\n\t\t\t\tsize=\"small\"\n\t\t\t\taction={\n\t\t\t\t\t<AlertAction\n\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\tcolor=\"info\"\n\t\t\t\t\t\thref={ UPDATE_PLUGINS_URL }\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upgrade Now', 'elementor' ) }\n\t\t\t\t\t</AlertAction>\n\t\t\t\t}\n\t\t\t\tsx={ { m: 2, mt: 1 } }\n\t\t\t>\n\t\t\t\t<AlertTitle>{ title }</AlertTitle>\n\t\t\t\t<Typography variant=\"caption\">{ description }</Typography>\n\t\t\t</Alert>\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { closeDialog, ConfirmationDialog, openDialog } from '@elementor/editor-ui';\nimport { AlertTriangleFilledIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\ntype DetachInstanceConfirmationDialogProps = {\n\topen: boolean;\n\tonClose: () => void;\n\tonConfirm: () => void;\n};\n\nexport function DetachInstanceConfirmationDialog( {\n\topen,\n\tonClose,\n\tonConfirm,\n}: DetachInstanceConfirmationDialogProps ) {\n\treturn (\n\t\t<ConfirmationDialog open={ open } onClose={ onClose }>\n\t\t\t<ConfirmationDialog.Title icon={ AlertTriangleFilledIcon } iconColor=\"secondary\">\n\t\t\t\t{ __( 'Detach from Component?', 'elementor' ) }\n\t\t\t</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'Detaching this instance will break its link to the Component. Changes to the Component will no longer apply. Continue?',\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\n\t\t\t\tonClose={ onClose }\n\t\t\t\tonConfirm={ onConfirm }\n\t\t\t\tconfirmLabel={ __( 'Detach', 'elementor' ) }\n\t\t\t\tcolor=\"primary\"\n\t\t\t/>\n\t\t</ConfirmationDialog>\n\t);\n}\n\n// Used imperatively from the context menu (Marionette view).\nexport function openDetachConfirmDialog( onConfirm: () => void ) {\n\tconst handleConfirm = () => {\n\t\tcloseDialog();\n\t\tonConfirm();\n\t};\n\n\topenDialog( {\n\t\tcomponent: <DetachInstanceConfirmationDialog open onClose={ closeDialog } onConfirm={ handleConfirm } />,\n\t} );\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 { PencilIcon } from '@elementor/icons';\nimport { Box, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useComponentsPermissions } from '../../hooks/use-components-permissions';\nimport { ComponentInstanceProvider } from '../../provider/component-instance-context';\nimport { isProComponentsSupported, isProOutdatedForComponents } from '../../utils/is-pro-components-supported';\nimport { ComponentsUpdateAlert } from '../components-update-alert';\nimport { ComponentsUpgradeAlert } from '../components-upgrade-alert';\nimport { DetachAction } from './detach-action';\nimport { EmptyState } from './empty-state';\nimport { InstancePanelBody } from './instance-panel-body';\nimport { EditComponentAction, InstancePanelHeader } from './instance-panel-header';\nimport { useInstancePanelData } from './use-instance-panel-data';\n\nconst EDIT_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-edit-footer/';\n\nexport function InstanceEditingPanel() {\n\tconst { canEdit } = useComponentsPermissions();\n\tconst data = useInstancePanelData();\n\n\tif ( ! data ) {\n\t\treturn null;\n\t}\n\n\tconst { componentId, component, overrides, overridableProps, groups, isEmpty, componentInstanceId } = data;\n\n\t/* translators: %s: component name. */\n\tconst panelTitle = __( 'Edit %s', 'elementor' ).replace( '%s', component.name );\n\n\tconst actions = (\n\t\t<Stack direction=\"row\" gap={ 0.5 }>\n\t\t\t<DetachAction componentInstanceId={ componentInstanceId } componentId={ componentId } />\n\t\t\t{ canEdit && <EditComponentAction disabled label={ panelTitle } icon={ PencilIcon } /> }\n\t\t</Stack>\n\t);\n\n\treturn (\n\t\t<Box data-testid=\"instance-editing-panel\" sx={ { display: 'flex', flexDirection: 'column', height: '100%' } }>\n\t\t\t<ComponentInstanceProvider\n\t\t\t\tcomponentId={ componentId }\n\t\t\t\toverrides={ overrides }\n\t\t\t\toverridableProps={ overridableProps }\n\t\t\t>\n\t\t\t\t<InstancePanelHeader componentName={ component.name } actions={ actions } />\n\t\t\t\t<InstancePanelBody\n\t\t\t\t\tgroups={ groups }\n\t\t\t\t\tisEmpty={ isEmpty }\n\t\t\t\t\temptyState={ <EmptyState /> }\n\t\t\t\t\tcomponentInstanceId={ componentInstanceId }\n\t\t\t\t/>\n\t\t\t</ComponentInstanceProvider>\n\t\t\t{ ! isProComponentsSupported() &&\n\t\t\t\t( isProOutdatedForComponents() ? (\n\t\t\t\t\t<ComponentsUpdateAlert\n\t\t\t\t\t\ttitle={ __( 'Edit Component', 'elementor' ) }\n\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t'To edit components, update Elementor Pro to the latest version.',\n\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<ComponentsUpgradeAlert\n\t\t\t\t\t\ttitle={ __( 'Edit components', 'elementor' ) }\n\t\t\t\t\t\tdescription={ __( 'Editing components requires an active Pro subscription.', 'elementor' ) }\n\t\t\t\t\t\tupgradeUrl={ EDIT_UPGRADE_URL }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\nimport { type ComponentInstanceOverridesPropValue } from '../prop-types/component-instance-overrides-prop-type';\nimport { type OverridableProps } from '../types';\n\ntype ComponentInstanceData = {\n\tcomponentId: number;\n\toverrides: ComponentInstanceOverridesPropValue;\n\toverridableProps: OverridableProps;\n};\n\nconst ComponentInstanceContext = createContext< ComponentInstanceData | null >( null );\n\nexport function ComponentInstanceProvider( { children, ...props }: PropsWithChildren< ComponentInstanceData > ) {\n\treturn <ComponentInstanceContext.Provider value={ props }>{ children }</ComponentInstanceContext.Provider>;\n}\n\nexport const useComponentId = () => useContext( ComponentInstanceContext )?.componentId;\nexport const useComponentInstanceOverrides = () => useContext( ComponentInstanceContext )?.overrides;\nexport const useComponentOverridableProps = () => useContext( ComponentInstanceContext )?.overridableProps;\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { notify } from '@elementor/editor-notifications';\nimport { DetachIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { type ExtendedWindow } from '../../types';\nimport { detachComponentInstance } from '../../utils/detach-component-instance';\nimport { DetachInstanceConfirmationDialog } from '../detach-instance-confirmation-dialog';\nimport { EditComponentAction } from './instance-panel-header';\n\nexport const DetachAction = ( {\n\tcomponentInstanceId,\n\tcomponentId,\n}: {\n\tcomponentInstanceId: string;\n\tcomponentId: number;\n} ) => {\n\tconst [ isDetachDialogOpen, setIsDetachDialogOpen ] = useState( false );\n\n\tconst handleDetachConfirm = async () => {\n\t\tsetIsDetachDialogOpen( false );\n\n\t\ttry {\n\t\t\tawait detachComponentInstance( {\n\t\t\t\tinstanceId: componentInstanceId,\n\t\t\t\tcomponentId,\n\t\t\t\ttrackingInfo: getDetachTrackingInfo(),\n\t\t\t} );\n\t\t} catch {\n\t\t\tnotify( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: __( 'Failed to detach component instance.', 'elementor' ),\n\t\t\t\tid: 'detach-component-instance-failed',\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst handleDetachCancel = () => {\n\t\tsetIsDetachDialogOpen( false );\n\t};\n\n\tconst handleDetachClick = () => {\n\t\tsetIsDetachDialogOpen( true );\n\t};\n\n\tconst detachLabel = __( 'Detach from Component', 'elementor' );\n\n\treturn (\n\t\t<>\n\t\t\t<EditComponentAction label={ detachLabel } icon={ DetachIcon } onClick={ handleDetachClick } />\n\t\t\t<DetachInstanceConfirmationDialog\n\t\t\t\topen={ isDetachDialogOpen }\n\t\t\t\tonClose={ handleDetachCancel }\n\t\t\t\tonConfirm={ handleDetachConfirm }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nfunction getDetachTrackingInfo() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst config = extendedWindow?.elementorCommon?.eventsManager?.config;\n\n\tif ( ! config ) {\n\t\treturn {\n\t\t\tlocation: '',\n\t\t\ttrigger: '',\n\t\t};\n\t}\n\n\treturn {\n\t\tlocation: ( config.locations.components as Record< string, string > ).instanceEditingPanel,\n\t\ttrigger: config.triggers.click,\n\t};\n}\n","import { getContainer, replaceElement, type V1Element, type V1ElementModelProps } from '@elementor/editor-elements';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch, __getState as getState } from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { componentInstanceOverridesPropTypeUtil } from '../../prop-types/component-instance-overrides-prop-type';\nimport {\n\ttype ComponentInstanceProp,\n\tcomponentInstancePropTypeUtil,\n} from '../../prop-types/component-instance-prop-type';\nimport { selectComponent, selectCurrentComponentId, selectOverridableProps, slice } from '../../store/store';\nimport { type OverridableProps } from '../../types';\nimport { getComponentDocumentData } from '../component-document-data';\nimport { trackComponentEvent } from '../tracking';\nimport { resolveDetachedInstance } from './resolve-detached-instance';\n\ntype DetachParams = {\n\tinstanceId: string;\n\tcomponentId: number;\n\ttrackingInfo: {\n\t\tlocation: string;\n\t\tsecondaryLocation?: string;\n\t\ttrigger: string;\n\t};\n};\n\ntype DoReturn = {\n\tdetachedElement: V1Element;\n\tdetachedInstanceElementData: V1ElementModelProps;\n\teditedComponentOnDetach: number | null;\n\toverridablePropsBeforeDetach: OverridableProps | null;\n\toriginalInstanceModel: V1ElementModelProps;\n};\n\nexport async function detachComponentInstance( {\n\tinstanceId,\n\tcomponentId,\n\ttrackingInfo,\n}: DetachParams ): Promise< DoReturn > {\n\tconst instanceContainer = getContainer( instanceId );\n\n\tif ( ! instanceContainer ) {\n\t\tthrow new Error( `Instance container with ID \"${ instanceId }\" not found.` );\n\t}\n\n\tconst componentData = await getComponentDocumentData( componentId );\n\n\tif ( ! componentData ) {\n\t\tthrow new Error( `Component with ID \"${ componentId }\" not found.` );\n\t}\n\n\tconst rootElement = componentData.elements?.[ 0 ];\n\n\tif ( ! rootElement ) {\n\t\tthrow new Error( `Component with ID \"${ componentId }\" has no root element.` );\n\t}\n\n\tconst undoableDetach = undoable(\n\t\t{\n\t\t\tdo: (): DoReturn => {\n\t\t\t\tconst overrides = extractInstanceOverrides( instanceContainer );\n\t\t\t\tconst detachedInstanceElementData = resolveDetachedInstance(\n\t\t\t\t\trootElement,\n\t\t\t\t\toverrides\n\t\t\t\t) as V1ElementModelProps;\n\n\t\t\t\tconst editedComponentOnDetach = selectCurrentComponentId( getState() );\n\t\t\t\t// We need to store the overridable props of the current component before detach to restore them on undo.\n\t\t\t\tconst overridablePropsBeforeDetach = editedComponentOnDetach\n\t\t\t\t\t? selectOverridableProps( getState(), editedComponentOnDetach ) ?? null\n\t\t\t\t\t: null;\n\n\t\t\t\tconst originalInstanceModel = instanceContainer.model.toJSON();\n\n\t\t\t\tconst detachedElement = replaceElement( {\n\t\t\t\t\tcurrentElementId: instanceId,\n\t\t\t\t\tnewElement: detachedInstanceElementData,\n\t\t\t\t\twithHistory: false,\n\t\t\t\t} );\n\n\t\t\t\tconst componentUid = selectComponent( getState(), componentId )?.uid;\n\t\t\t\ttrackComponentEvent( {\n\t\t\t\t\taction: 'detached',\n\t\t\t\t\tsource: 'user',\n\t\t\t\t\tcomponent_uid: componentUid,\n\t\t\t\t\tinstance_id: instanceId,\n\t\t\t\t\tlocation: trackingInfo.location,\n\t\t\t\t\tsecondary_location: trackingInfo.secondaryLocation,\n\t\t\t\t\ttrigger: trackingInfo.trigger,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tdetachedElement,\n\t\t\t\t\tdetachedInstanceElementData,\n\t\t\t\t\teditedComponentOnDetach,\n\t\t\t\t\toverridablePropsBeforeDetach,\n\t\t\t\t\toriginalInstanceModel,\n\t\t\t\t};\n\t\t\t},\n\t\t\tundo: (\n\t\t\t\t_: undefined,\n\t\t\t\t{\n\t\t\t\t\tdetachedElement,\n\t\t\t\t\toriginalInstanceModel,\n\t\t\t\t\toverridablePropsBeforeDetach,\n\t\t\t\t\teditedComponentOnDetach,\n\t\t\t\t}: DoReturn\n\t\t\t): V1Element => {\n\t\t\t\tconst restoredInstance = replaceElement( {\n\t\t\t\t\tcurrentElementId: detachedElement.id,\n\t\t\t\t\tnewElement: originalInstanceModel,\n\t\t\t\t\twithHistory: false,\n\t\t\t\t} );\n\n\t\t\t\tconst currentComponentId = selectCurrentComponentId( getState() );\n\t\t\t\tif (\n\t\t\t\t\tcurrentComponentId &&\n\t\t\t\t\tcurrentComponentId === editedComponentOnDetach &&\n\t\t\t\t\toverridablePropsBeforeDetach\n\t\t\t\t) {\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tslice.actions.setOverridableProps( {\n\t\t\t\t\t\t\tcomponentId: currentComponentId,\n\t\t\t\t\t\t\toverridableProps: overridablePropsBeforeDetach,\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn restoredInstance;\n\t\t\t},\n\t\t\tredo: ( _: undefined, doReturn: DoReturn, restoredInstance: V1Element ) => {\n\t\t\t\tconst { detachedInstanceElementData } = doReturn;\n\n\t\t\t\tconst editedComponentOnDetach = selectCurrentComponentId( getState() );\n\t\t\t\t// We need to store the overridable props of the current component before detach to restore them on undo.\n\t\t\t\tconst overridablePropsBeforeDetach = editedComponentOnDetach\n\t\t\t\t\t? selectOverridableProps( getState(), editedComponentOnDetach ) ?? null\n\t\t\t\t\t: null;\n\n\t\t\t\tconst detachedElement = replaceElement( {\n\t\t\t\t\tcurrentElementId: restoredInstance.id,\n\t\t\t\t\tnewElement: detachedInstanceElementData,\n\t\t\t\t\twithHistory: false,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\t...doReturn,\n\t\t\t\t\tdetachedElement,\n\t\t\t\t\teditedComponentOnDetach,\n\t\t\t\t\toverridablePropsBeforeDetach,\n\t\t\t\t};\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Detach from Component', 'elementor' ),\n\t\t\tsubtitle: __( 'Instance detached', 'elementor' ),\n\t\t}\n\t);\n\n\treturn undoableDetach();\n}\n\nfunction extractInstanceOverrides( instanceContainer: NonNullable< ReturnType< typeof getContainer > > ) {\n\tconst settings = instanceContainer.model.toJSON().settings;\n\tconst componentInstance = componentInstancePropTypeUtil.extract(\n\t\tsettings?.component_instance as ComponentInstanceProp\n\t);\n\n\tconst overrides = componentInstanceOverridesPropTypeUtil.extract( componentInstance?.overrides );\n\n\treturn overrides ?? [];\n}\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 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\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 { type V1Element } from '@elementor/editor-elements';\nimport { getMixpanel } from '@elementor/events';\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' | 'system';\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\t\t| 'detached';\n\tsource: Source;\n};\n\nconst FEATURE_NAME = 'Components';\n\nexport const trackComponentEvent = ( { action, source, ...data }: ComponentEventData ) => {\n\tif ( source === 'system' ) {\n\t\treturn;\n\t}\n\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 { generateElementId, type V1ElementData } from '@elementor/editor-elements';\nimport { 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 { componentOverridablePropTypeUtil } from '../../prop-types/component-overridable-prop-type';\nimport { regenerateLocalStyleIds } from './regenerate-local-style-ids';\nimport { resolveOverridableSettings } from './resolve-overridable-settings';\n\n/**\n * Creates detached element from component instance\n * by applying overrides, reverting overridables, and regenerating IDs.\n * This is used when detaching a component instance from its origin component.\n *\n * The function goes through all nested elements recursively and:\n * - Regenerates element IDs and local style IDs\n * - Resolves overridable settings - applies all instance overrides to element settings,\n * or replaces overridable with origin_value when no matching override exists.\n *\n * @param element - The component's root element\n * @param overrides - Array of overrides from the component instance\n * @return A new element data with all overrides applied and new IDs\n */\nexport function resolveDetachedInstance(\n\telement: V1ElementData,\n\toverrides: ComponentInstanceOverride[]\n): V1ElementData {\n\tconst overrideMap = createOverrideMap( overrides );\n\n\treturn resolveElementRecursive( structuredClone( element ), overrideMap );\n}\n\nfunction resolveElementRecursive(\n\telement: V1ElementData,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >\n): V1ElementData {\n\telement.id = generateElementId();\n\n\tif ( element.styles ) {\n\t\tconst { styles, settings } = regenerateLocalStyleIds( element );\n\n\t\telement.styles = styles;\n\t\tif ( settings ) {\n\t\t\telement.settings = { ...element.settings, ...settings };\n\t\t}\n\t}\n\n\tif ( element.settings ) {\n\t\telement.settings = resolveOverridableSettings( element, overrideMap );\n\t}\n\n\tif ( element.elements?.length ) {\n\t\telement.elements = element.elements.map( ( child ) => resolveElementRecursive( child, overrideMap ) );\n\t}\n\n\treturn element;\n}\n\nfunction createOverrideMap( overrides: ComponentInstanceOverride[] ): Map< string, ComponentInstanceOverrideProp > {\n\tconst map = new Map< string, ComponentInstanceOverrideProp >();\n\n\toverrides.forEach( ( item ) => {\n\t\tlet override: ComponentInstanceOverrideProp | null = null;\n\n\t\tif ( componentInstanceOverridePropTypeUtil.isValid( item ) ) {\n\t\t\toverride = item;\n\t\t} else if ( componentOverridablePropTypeUtil.isValid( item ) ) {\n\t\t\toverride = getOverridableOverride( item );\n\t\t}\n\n\t\tif ( override ) {\n\t\t\tconst overrideKey = override.value.override_key;\n\t\t\tmap.set( overrideKey, override );\n\t\t}\n\t} );\n\n\treturn map;\n}\n\nexport function getOverridableOverride( propValue: PropValue ): ComponentInstanceOverrideProp | null {\n\tif ( ! componentOverridablePropTypeUtil.isValid( propValue ) ) {\n\t\treturn null;\n\t}\n\n\tconst originValue = componentOverridablePropTypeUtil.extract( propValue )?.origin_value;\n\tif ( ! componentInstanceOverridePropTypeUtil.isValid( originValue ) ) {\n\t\treturn null;\n\t}\n\n\treturn originValue;\n}\n","import { generateElementId, type V1ElementData, type V1ElementSettingsProps } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue, type PropValue } from '@elementor/editor-props';\nimport { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\n\n// Ts version for atomic-widgets/assets/js/editor/utils/regenerate-local-style-ids.js\nexport function regenerateLocalStyleIds( element: V1ElementData ): {\n\tstyles: Record< StyleDefinitionID, StyleDefinition > | undefined;\n\tsettings: V1ElementSettingsProps | undefined;\n} {\n\tconst originalStyles = element.styles;\n\n\tif ( ! originalStyles || Object.keys( originalStyles ).length === 0 ) {\n\t\treturn { styles: undefined, settings: undefined };\n\t}\n\n\tconst newStyles: Record< string, StyleDefinition > = {};\n\tconst styleIdMapping: Record< string, string > = {};\n\n\tfor ( const [ originalStyleId, style ] of Object.entries( originalStyles ) ) {\n\t\tconst newStyleId = generateLocalStyleId( element.id );\n\n\t\tnewStyles[ newStyleId ] = { ...style, id: newStyleId };\n\t\tstyleIdMapping[ originalStyleId ] = newStyleId;\n\t}\n\n\tconst settings = element.settings;\n\tif ( ! settings || Object.keys( settings ).length === 0 ) {\n\t\treturn { styles: newStyles, settings: undefined };\n\t}\n\n\tconst updatedSettings = { ...settings };\n\n\tfor ( const [ propKey, propValue ] of Object.entries( updatedSettings ) ) {\n\t\tif ( isClassesProp( propValue ) && propValue.value.length > 0 ) {\n\t\t\tconst updatedClasses = propValue.value.map( ( classId ) => styleIdMapping[ classId ] ?? classId );\n\n\t\t\tupdatedSettings[ propKey ] = classesPropTypeUtil.create( updatedClasses );\n\t\t}\n\t}\n\n\treturn {\n\t\tstyles: newStyles,\n\t\tsettings: updatedSettings,\n\t};\n}\n\nfunction isClassesProp( prop: PropValue ): prop is ClassesPropValue {\n\treturn classesPropTypeUtil.isValid( prop );\n}\n\nfunction generateLocalStyleId( elementId: string ): string {\n\treturn `e-${ elementId }-${ generateElementId() }`;\n}\n","export const COMPONENT_WIDGET_TYPE = 'e-component';\n","import { type V1ElementModelProps } from '@elementor/editor-elements';\n\nimport { COMPONENT_WIDGET_TYPE } from '../consts';\n\nexport function isComponentInstance( elementModel: Partial< V1ElementModelProps > ) {\n\treturn [ elementModel.widgetType, elementModel.elType ].includes( COMPONENT_WIDGET_TYPE );\n}\n","import { type V1ElementData, type V1ElementSettingsProps } from '@elementor/editor-elements';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport {\n\ttype ComponentInstanceOverrideProp,\n\tcomponentInstanceOverridePropTypeUtil,\n} from '../../prop-types/component-instance-override-prop-type';\nimport {\n\ttype ComponentInstanceProp,\n\tcomponentInstancePropTypeUtil,\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 resolveOverridableSettings(\n\telement: V1ElementData,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >\n): V1ElementSettingsProps {\n\tif ( isComponentInstance( { widgetType: element.widgetType, elType: element.elType } ) ) {\n\t\treturn resolveOverridableSettingsForComponentInstance( element, overrideMap );\n\t}\n\n\treturn resolveOverridableSettingsForElement( element, overrideMap );\n}\n\nfunction resolveOverridableSettingsForElement(\n\telement: V1ElementData,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >\n): V1ElementSettingsProps {\n\tconst updatedSettings = element.settings ? { ...element.settings } : {};\n\n\tfor ( const [ settingKey, settingValue ] of Object.entries( element.settings ?? {} ) ) {\n\t\tupdatedSettings[ settingKey ] = resolvePropValue( settingValue, overrideMap );\n\t}\n\n\treturn updatedSettings;\n}\n\nfunction resolveOverridableSettingsForComponentInstance(\n\telement: V1ElementData,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >\n): V1ElementSettingsProps {\n\tconst componentInstance = element.settings?.component_instance as ComponentInstanceProp | undefined;\n\n\tif ( ! componentInstancePropTypeUtil.isValid( componentInstance ) ) {\n\t\treturn element.settings ?? {};\n\t}\n\n\tconst instanceOverrides = componentInstance.value.overrides?.value;\n\n\tif ( ! instanceOverrides?.length ) {\n\t\treturn element.settings ?? {};\n\t}\n\n\tconst updatedOverrides = instanceOverrides.map( ( item ) =>\n\t\tresolvePropValue( item, overrideMap, { isOverridableOverride: true } )\n\t);\n\n\treturn {\n\t\t...element.settings,\n\t\tcomponent_instance: {\n\t\t\t...componentInstance,\n\t\t\tvalue: {\n\t\t\t\t...componentInstance.value,\n\t\t\t\toverrides: {\n\t\t\t\t\t...componentInstance.value.overrides,\n\t\t\t\t\tvalue: updatedOverrides,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction resolvePropValue(\n\tpropValue: PropValue,\n\toverrideMap: Map< string, ComponentInstanceOverrideProp >,\n\toptions?: { isOverridableOverride?: boolean }\n): PropValue | null {\n\tconst { isOverridableOverride = false } = options ?? {};\n\n\t// if it's not an overridable, return the prop value as is\n\tif ( ! componentOverridablePropTypeUtil.isValid( propValue ) ) {\n\t\treturn propValue;\n\t}\n\n\tconst overridableKey = propValue.value.override_key;\n\tconst matchingOverride = overrideMap.get( overridableKey );\n\n\tconst originValue = componentOverridablePropTypeUtil.extract( propValue )?.origin_value;\n\n\t// if no matching override, return the overridable's origin value\n\tif ( ! matchingOverride ) {\n\t\treturn originValue;\n\t}\n\n\tif ( isOverridableOverride ) {\n\t\treturn resolveOverridableOverride( matchingOverride, originValue );\n\t}\n\n\t// for regular props, when there's a matching override, return the matching override value\n\tconst matchingOverrideValue = componentInstanceOverridePropTypeUtil.extract( matchingOverride )\n\t\t?.override_value as PropValue | null;\n\treturn matchingOverrideValue;\n}\n\nfunction resolveOverridableOverride(\n\tmatchingOverride: ComponentInstanceOverrideProp,\n\toriginValue: PropValue\n): ComponentInstanceOverrideProp | null {\n\tif ( ! originValue || ! componentInstanceOverridePropTypeUtil.isValid( originValue ) ) {\n\t\treturn null;\n\t}\n\n\t// for overridable overrides, we should create a new override with the matching override value\n\t// but keep the origin value's override key and schema source, so they'll match the inner component.\n\treturn componentInstanceOverridePropTypeUtil.create( {\n\t\toverride_value: matchingOverride.value.override_value,\n\t\toverride_key: originValue.value.override_key,\n\t\tschema_source: originValue.value.schema_source,\n\t} );\n}\n","import * as React from 'react';\nimport { type ElementType } from 'react';\nimport { PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { ComponentsIcon } from '@elementor/icons';\nimport { IconButton, Stack, Tooltip } from '@elementor/ui';\n\ntype InstancePanelHeaderProps = {\n\tcomponentName: string;\n\tactions?: React.ReactNode;\n};\n\nexport function InstancePanelHeader( { componentName, actions }: InstancePanelHeaderProps ) {\n\treturn (\n\t\t<PanelHeader sx={ { justifyContent: 'start', px: 2 } }>\n\t\t\t<Stack direction=\"row\" alignItems=\"center\" flexGrow={ 1 } gap={ 1 } maxWidth=\"100%\">\n\t\t\t\t<ComponentsIcon fontSize=\"small\" sx={ { color: 'text.tertiary' } } />\n\t\t\t\t<EllipsisWithTooltip title={ componentName } as={ PanelHeaderTitle } sx={ { flexGrow: 1 } } />\n\t\t\t\t{ actions }\n\t\t\t</Stack>\n\t\t</PanelHeader>\n\t);\n}\n\ntype EditComponentActionProps = {\n\tlabel: string;\n\tonClick?: () => void;\n\tdisabled?: boolean;\n\ticon: ElementType;\n};\n\nexport function EditComponentAction( { label, onClick, disabled = false, icon: Icon }: EditComponentActionProps ) {\n\treturn (\n\t\t<Tooltip title={ label }>\n\t\t\t<IconButton size=\"tiny\" onClick={ onClick } aria-label={ label } disabled={ disabled }>\n\t\t\t\t<Icon fontSize=\"tiny\" />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\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\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={ { mt: 1 } }\n\t\t\t\t\tdisabled={ ! onEditComponent }\n\t\t\t\t\tonClick={ onEditComponent }\n\t\t\t\t>\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 { ControlAdornmentsProvider } from '@elementor/editor-controls';\nimport { getFieldIndicators } from '@elementor/editor-editing-panel';\nimport { PanelBody } from '@elementor/editor-panels';\nimport { Divider, Stack } from '@elementor/ui';\n\nimport { type OverridablePropsGroup } from '../../types';\nimport { OverridePropsGroup } from './override-props-group';\n\ntype InstancePanelBodyProps = {\n\tgroups: OverridablePropsGroup[];\n\tisEmpty: boolean;\n\temptyState: React.ReactNode;\n\tcomponentInstanceId?: string;\n};\n\nexport function InstancePanelBody( { groups, isEmpty, emptyState, componentInstanceId }: InstancePanelBodyProps ) {\n\treturn (\n\t\t<PanelBody>\n\t\t\t<ControlAdornmentsProvider items={ getFieldIndicators( 'settings' ) }>\n\t\t\t\t{ isEmpty ? (\n\t\t\t\t\temptyState\n\t\t\t\t) : (\n\t\t\t\t\t<Stack direction=\"column\" alignItems=\"stretch\">\n\t\t\t\t\t\t{ groups.map( ( group ) => (\n\t\t\t\t\t\t\t<React.Fragment key={ group.id + componentInstanceId }>\n\t\t\t\t\t\t\t\t<OverridePropsGroup group={ group } />\n\t\t\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</ControlAdornmentsProvider>\n\t\t</PanelBody>\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 OverridablePropsGroup } from '../../types';\nimport { OverridePropControl } from './override-prop-control';\n\ntype Props = {\n\tgroup: OverridablePropsGroup;\n};\n\nexport function OverridePropsGroup( { group }: 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 key={ overrideKey } overrideKey={ overrideKey } />\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 {\n\tControlReplacementsProvider,\n\tgetControlReplacements,\n\tPropKeyProvider,\n\tPropProvider,\n\tuseBoundProp,\n} from '@elementor/editor-controls';\nimport {\n\tBaseControl,\n\tcontrolsRegistry,\n\ttype ControlType,\n\tControlTypeContainer,\n\tcreateTopLevelObjectType,\n\tElementProvider,\n\tisDynamicPropValue,\n\tSettingsField,\n\tuseElement,\n} from '@elementor/editor-editing-panel';\nimport { type Control, getElementSettings, getElementType } from '@elementor/editor-elements';\nimport { type AnyTransformable, type PropType, type PropValue } from '@elementor/editor-props';\nimport { Box } 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} 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 {\n\tuseComponentId,\n\tuseComponentInstanceOverrides,\n\tuseComponentOverridableProps,\n} from '../../provider/component-instance-context';\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, type OverridableProps } from '../../types';\nimport { getContainerByOriginId } from '../../utils/get-container-by-origin-id';\nimport { getPropTypeForComponentOverride } from '../../utils/get-prop-type-for-component-override';\nimport { getMatchingOverride } from '../../utils/overridable-props-utils';\nimport { resolveOverridePropValue } from '../../utils/resolve-override-prop-value';\nimport { ControlLabel } from '../control-label';\nimport { OverrideControlInnerElementNotFoundError } from '../errors';\nimport { useResolvedOriginValue } from './use-resolved-origin-value';\n\ntype Props = {\n\toverrideKey: string;\n};\n\nexport function OverridePropControl( { overrideKey }: Props ) {\n\tconst overridableProps = useComponentOverridableProps();\n\tconst overridableProp = overridableProps?.props[ overrideKey ];\n\n\tif ( ! overridableProp ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SettingsField bind=\"component_instance\" propDisplayName={ overridableProp.label }>\n\t\t\t<OverrideControl overridableProp={ overridableProp } />\n\t\t</SettingsField>\n\t);\n}\n\ntype InternalProps = {\n\toverridableProp: OverridableProp;\n};\ntype OverridesSchema = Record< string, ComponentInstanceOverride >;\n\nfunction OverrideControl( { overridableProp }: InternalProps ) {\n\tconst componentInstanceElement = useElement();\n\tconst { value: instanceValue, setValue: setInstanceValue } = useBoundProp( componentInstancePropTypeUtil );\n\tconst wrappingComponentId = useCurrentComponentId();\n\tconst componentId = useComponentId();\n\tconst overridableProps = useComponentOverridableProps();\n\tconst overrides = useComponentInstanceOverrides();\n\n\tconst controls = useControlsByWidgetType(\n\t\toverridableProp?.originPropFields?.widgetType ?? overridableProp.widgetType\n\t);\n\tconst controlReplacements = getControlReplacements();\n\n\tconst matchingOverride = getMatchingOverride( overrides, overridableProp.overrideKey );\n\n\tconst recursiveOriginValue = useResolvedOriginValue( matchingOverride, overridableProp );\n\n\tif ( ! componentId ) {\n\t\tthrow new Error( 'Component ID is required' );\n\t}\n\n\tif ( ! overridableProps ) {\n\t\tthrow new Error( 'Component has no overridable props' );\n\t}\n\n\tconst propType = getPropTypeForComponentOverride( overridableProp );\n\n\tif ( ! propType ) {\n\t\treturn null;\n\t}\n\n\tconst resolvedOverrideValue = matchingOverride ? resolveOverridePropValue( matchingOverride ) : null;\n\tconst propValue = resolvedOverrideValue ?? recursiveOriginValue ?? overridableProp.originValue;\n\n\tconst value = {\n\t\t[ overridableProp.overrideKey ]: propValue,\n\t} as OverridesSchema;\n\n\tconst setValue = ( newValue: OverridesSchema ) => {\n\t\tif ( ! overridableProps ) {\n\t\t\tsetInstanceValue( {\n\t\t\t\t...instanceValue,\n\t\t\t\toverrides: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst newPropValue = getTempNewValueForDynamicProp(\n\t\t\tpropType,\n\t\t\tpropValue,\n\t\t\tnewValue[ overridableProp.overrideKey ]\n\t\t);\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,\n\t\t} );\n\n\t\tlet newOverrides = ( overrides ?? [] )\n\t\t\t.filter( ( override ) => isValidOverride( overridableProps, override ) )\n\t\t\t.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 && wrappingComponentId ) {\n\t\t\tif ( overridableProp.originPropFields ) {\n\t\t\t\tupdateOverridableProp( wrappingComponentId, 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( wrappingComponentId, 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 {\n\t\telementId: originElementId,\n\t\twidgetType,\n\t\telType,\n\t\tpropKey,\n\t} = overridableProp.originPropFields ?? overridableProp;\n\n\tconst element = getContainerByOriginId( originElementId, componentInstanceElement.element.id );\n\n\tif ( ! element ) {\n\t\tthrow new OverrideControlInnerElementNotFoundError( { context: { componentId, elementId: originElementId } } );\n\t}\n\tconst elementId = element.id;\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\tconst settings = getElementSettings< AnyTransformable >( elementId, Object.keys( elementType.propsSchema ) );\n\n\tconst propTypeSchema = createTopLevelObjectType( {\n\t\tschema: {\n\t\t\t[ overridableProp.overrideKey ]: propType,\n\t\t},\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 } settings={ settings }>\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<Box mb={ 1.5 }>\n\t\t\t\t\t\t\t\t\t<ControlTypeContainer layout={ layout }>\n\t\t\t\t\t\t\t\t\t\t{ layout !== 'custom' && (\n\t\t\t\t\t\t\t\t\t\t\t<ControlLabel>{ overridableProp.label }</ControlLabel>\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t<OriginalControl control={ control } controlProps={ controlProps } />\n\t\t\t\t\t\t\t\t\t</ControlTypeContainer>\n\t\t\t\t\t\t\t\t</Box>\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\n// temp solution to allow dynamic values to be overridden, will be removed once placeholder is implemented\nfunction getTempNewValueForDynamicProp( propType: PropType, propValue: PropValue, newPropValue: PropValue ) {\n\tconst isRemovingOverride = newPropValue === null;\n\n\tif ( isRemovingOverride && isDynamicPropValue( propValue ) ) {\n\t\treturn ( propType.default ?? null ) as ComponentInstanceOverrideProp | ComponentOverridableProp;\n\t}\n\n\treturn newPropValue as ComponentInstanceOverrideProp | ComponentOverridableProp;\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\nfunction isValidOverride( overridableProps: OverridableProps, override: ComponentInstanceOverride ): boolean {\n\tconst overridableKey = componentOverridablePropTypeUtil.isValid( override )\n\t\t? ( override.value.origin_value as ComponentInstanceOverrideProp )?.value.override_key\n\t\t: override.value.override_key;\n\n\treturn !! overridableProps.props[ overridableKey ];\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 { 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 { type V1Document } from '@elementor/editor-documents';\nimport { __dispatch as dispatch, __getStore as getStore } from '@elementor/store';\n\nimport { type ComponentId, type OverridableProps, type PublishedComponent, type UnpublishedComponent } from '../types';\nimport { type ComponentsPathItem, type SanitizeAttributes, slice } from './store';\n\nfunction safeDispatch() {\n\treturn getStore()?.dispatch;\n}\n\nexport const componentsActions = {\n\tadd( components: PublishedComponent | PublishedComponent[] ) {\n\t\tdispatch( slice.actions.add( components ) );\n\t},\n\tload( components: PublishedComponent[] ) {\n\t\tdispatch( slice.actions.load( components ) );\n\t},\n\taddUnpublished( component: UnpublishedComponent ) {\n\t\tdispatch( slice.actions.addUnpublished( component ) );\n\t},\n\tremoveUnpublished( uids: string | string[] ) {\n\t\tdispatch( slice.actions.removeUnpublished( uids ) );\n\t},\n\tresetUnpublished() {\n\t\tdispatch( slice.actions.resetUnpublished() );\n\t},\n\tremoveStyles( id: ComponentId ) {\n\t\tdispatch( slice.actions.removeStyles( { id } ) );\n\t},\n\taddStyles( styles: Record< string, unknown > ) {\n\t\tdispatch( slice.actions.addStyles( styles ) );\n\t},\n\taddCreatedThisSession( uid: string ) {\n\t\tdispatch( slice.actions.addCreatedThisSession( uid ) );\n\t},\n\tremoveCreatedThisSession( uid: string ) {\n\t\tdispatch( slice.actions.removeCreatedThisSession( uid ) );\n\t},\n\tarchive( componentId: ComponentId ) {\n\t\tdispatch( slice.actions.archive( componentId ) );\n\t},\n\tsetCurrentComponentId( id: V1Document[ 'id' ] | null ) {\n\t\tsafeDispatch()?.( slice.actions.setCurrentComponentId( id ) );\n\t},\n\tsetPath( path: ComponentsPathItem[] ) {\n\t\tsafeDispatch()?.( slice.actions.setPath( path ) );\n\t},\n\tsetOverridableProps( componentId: ComponentId, overridableProps: OverridableProps ) {\n\t\tdispatch( slice.actions.setOverridableProps( { componentId, overridableProps } ) );\n\t},\n\trename( componentUid: string, name: string ) {\n\t\tdispatch( slice.actions.rename( { componentUid, name } ) );\n\t},\n\tcleanUpdatedComponentNames() {\n\t\tdispatch( slice.actions.cleanUpdatedComponentNames() );\n\t},\n\tupdateComponentSanitizedAttribute( componentId: ComponentId, attribute: SanitizeAttributes ) {\n\t\tdispatch( slice.actions.updateComponentSanitizedAttribute( { componentId, attribute } ) );\n\t},\n\tresetSanitizedComponents() {\n\t\tdispatch( slice.actions.resetSanitizedComponents() );\n\t},\n};\n","import { __getState as getState, __getStore as getStore } from '@elementor/store';\n\nimport { type ComponentId } from '../types';\nimport {\n\ttype ComponentsSlice,\n\tselectArchivedThisSession,\n\tselectComponentByUid,\n\tselectComponents,\n\tselectCreatedThisSession,\n\tselectCurrentComponent,\n\tselectCurrentComponentId,\n\tselectOverridableProps,\n\tselectUnpublishedComponents,\n\tselectUpdatedComponentNames,\n} from './store';\n\nfunction safeGetState(): ComponentsSlice | undefined {\n\treturn getStore()?.getState() as ComponentsSlice | undefined;\n}\n\nexport const componentsSelectors = {\n\tgetOverridableProps( componentId: ComponentId ) {\n\t\treturn selectOverridableProps( getState(), componentId );\n\t},\n\tgetCurrentComponent() {\n\t\treturn selectCurrentComponent( getState() );\n\t},\n\tgetCurrentComponentId() {\n\t\tconst state = safeGetState();\n\t\tif ( ! state ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn selectCurrentComponentId( state );\n\t},\n\tgetUnpublishedComponents() {\n\t\treturn selectUnpublishedComponents( getState() );\n\t},\n\tgetUpdatedComponentNames() {\n\t\treturn selectUpdatedComponentNames( getState() );\n\t},\n\tgetArchivedThisSession() {\n\t\treturn selectArchivedThisSession( getState() );\n\t},\n\tgetCreatedThisSession() {\n\t\treturn selectCreatedThisSession( getState() );\n\t},\n\tgetComponents() {\n\t\treturn selectComponents( getState() );\n\t},\n\tgetComponentByUid( componentUid: string ) {\n\t\treturn selectComponentByUid( getState(), componentUid );\n\t},\n};\n","import { 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 { componentsActions } from '../dispatchers';\nimport { componentsSelectors } from '../selectors';\n\nexport function updateOverridableProp(\n\tcomponentId: number,\n\tpropValue: ComponentOverridablePropValue,\n\toriginPropFields?: OriginPropFields\n) {\n\tconst overridableProps = componentsSelectors.getOverridableProps( 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\tcomponentsActions.setOverridableProps( componentId, newOverridableProps );\n}\n","import { getContainer, type V1Element } from '@elementor/editor-elements';\n\nimport { type ExtendedWindow } from '../types';\n\n/**\n * Resolves a container by its origin ID, with optional scoping to a component instance.\n *\n * When component instances are rendered, their inner elements get prefixed IDs\n * (e.g., `{instanceId}_{originalId}`), but store data uses original IDs.\n * This function bridges between the two by searching for elements with a matching `originId`.\n *\n * @param originElementId - The original (unprefixed) element ID from store data\n * @param instanceElementId - Optional instance widget ID to scope the search\n *\n * @return The container with prefixed runtime ID, or null if not found\n *\n * @example\n * // Component editing mode (no prefixing)\n * getContainerByOriginId('element-1') // returns container with id='element-1'\n *\n * @example\n * // Instance editing mode (with hash prefixing)\n * getContainerByOriginId('element-1', 'instance-abc')\n * // returns container with id='{hash}_element-1' and originId='element-1'\n */\nexport function getContainerByOriginId( originElementId: string, instanceElementId?: string ): V1Element | null {\n\tif ( ! instanceElementId ) {\n\t\treturn getContainer( originElementId );\n\t}\n\n\tconst instanceContainer = getContainer( instanceElementId );\n\n\tif ( ! instanceContainer ) {\n\t\treturn null;\n\t}\n\n\tconst legacyWindow = window as unknown as ExtendedWindow;\n\n\treturn (\n\t\tlegacyWindow.elementor?.getContainerByKeyValue?.( {\n\t\t\tkey: 'originId',\n\t\t\tvalue: originElementId,\n\t\t\tparent: instanceContainer.view,\n\t\t} ) ?? null\n\t);\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 { widgetType, propKey } = overridableProp;\n\n\treturn getPropType( {\n\t\twidgetType,\n\t\tpropKey,\n\t} );\n};\n\nfunction getPropType( { widgetType, propKey }: Pick< OriginPropFields, 'widgetType' | 'propKey' > ) {\n\tconst widgetPropsSchema = getWidgetsCache()?.[ widgetType ]?.atomic_props_schema;\n\n\treturn widgetPropsSchema?.[ propKey ];\n}\n","import { componentInstanceOverridePropTypeUtil } from '../prop-types/component-instance-override-prop-type';\nimport {\n\ttype ComponentInstanceOverride,\n\ttype ComponentInstanceOverridesPropValue,\n} from '../prop-types/component-instance-overrides-prop-type';\nimport { componentOverridablePropTypeUtil } from '../prop-types/component-overridable-prop-type';\n\nexport type InnerOverrideInfo = {\n\tcomponentId: number;\n\tinnerOverrideKey: string;\n\toverrideValue: unknown;\n};\n\nexport function 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\n\t\t\tif ( overridableValue ) {\n\t\t\t\tconst overrideValue = componentInstanceOverridePropTypeUtil.extract( overridableValue.origin_value );\n\t\t\t\treturn overrideValue?.override_key === overrideKey;\n\t\t\t}\n\n\t\t\treturn override.value.override_key === overrideKey;\n\t\t} ) ?? null\n\t);\n}\n\nexport function extractInnerOverrideInfo( override: ComponentInstanceOverride | null ): InnerOverrideInfo | null {\n\tif ( ! override ) {\n\t\treturn null;\n\t}\n\n\tconst overridableValue = componentOverridablePropTypeUtil.extract( override );\n\tconst innerOverride = overridableValue\n\t\t? componentInstanceOverridePropTypeUtil.extract( overridableValue.origin_value )\n\t\t: componentInstanceOverridePropTypeUtil.extract( override );\n\n\tif ( ! innerOverride ) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tschema_source: schemaSource,\n\t\toverride_key: innerOverrideKey,\n\t\toverride_value: overrideValue,\n\t} = innerOverride;\n\tconst componentId = schemaSource?.id;\n\n\tif ( ! componentId || ! innerOverrideKey ) {\n\t\treturn null;\n\t}\n\n\treturn { componentId, innerOverrideKey, overrideValue };\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 { type PropValue } from '@elementor/editor-props';\nimport { __useSelector as useSelector } from '@elementor/store';\n\nimport { type ComponentInstanceOverride } from '../../prop-types/component-instance-overrides-prop-type';\nimport { componentOverridablePropTypeUtil } from '../../prop-types/component-overridable-prop-type';\nimport { selectData } from '../../store/store';\nimport { type OverridableProp, type PublishedComponent } from '../../types';\nimport { getOverridableProp } from '../../utils/get-overridable-prop';\nimport { extractInnerOverrideInfo } from '../../utils/overridable-props-utils';\n\nexport function useResolvedOriginValue( override: ComponentInstanceOverride | null, overridableProp: OverridableProp ) {\n\tconst components = useSelector( selectData );\n\n\treturn resolveOriginValue( components, override, overridableProp );\n}\n\nfunction resolveOriginValue(\n\tcomponents: PublishedComponent[],\n\tmatchingOverride: ComponentInstanceOverride | null,\n\toverridableProp: OverridableProp\n): PropValue {\n\tconst { originValue: fallbackOriginValue, originPropFields } = overridableProp;\n\n\tif ( hasValue( fallbackOriginValue ) ) {\n\t\treturn fallbackOriginValue;\n\t}\n\n\tif ( matchingOverride ) {\n\t\tconst result = getOriginFromOverride( components, matchingOverride );\n\n\t\tif ( hasValue( result ) ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tconst { elementId, propKey } = originPropFields ?? {};\n\n\tif ( elementId && propKey ) {\n\t\treturn findOriginValueByElementId( components, elementId, propKey );\n\t}\n\n\treturn null;\n}\n\nfunction getOriginFromOverride( components: PublishedComponent[], override: ComponentInstanceOverride ): PropValue {\n\tconst innerOverrideInfo = extractInnerOverrideInfo( override );\n\n\tif ( ! innerOverrideInfo ) {\n\t\treturn null;\n\t}\n\n\tconst { componentId, innerOverrideKey, overrideValue } = innerOverrideInfo;\n\n\tconst prop = getOverridableProp( { componentId, overrideKey: innerOverrideKey } );\n\n\tif ( hasValue( prop?.originValue ) ) {\n\t\treturn prop.originValue;\n\t}\n\n\tif ( prop?.originPropFields?.elementId ) {\n\t\tconst targetPropKey = prop.originPropFields.propKey ?? prop.propKey;\n\t\tconst result = findOriginValueByElementId( components, prop.originPropFields.elementId, targetPropKey );\n\n\t\tif ( hasValue( result ) ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tconst nestedOverridable = componentOverridablePropTypeUtil.extract( overrideValue );\n\n\tif ( nestedOverridable ) {\n\t\treturn getOriginFromOverride( components, componentOverridablePropTypeUtil.create( nestedOverridable ) );\n\t}\n\n\treturn null;\n}\n\nfunction findOriginValueByElementId(\n\tcomponents: PublishedComponent[],\n\ttargetElementId: string,\n\ttargetPropKey: string,\n\tvisited: Set< number > = new Set()\n): PropValue {\n\tfor ( const component of components ) {\n\t\tif ( visited.has( component.id ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tvisited.add( component.id );\n\n\t\tconst matchingProp = Object.values( component.overridableProps?.props ?? {} ).find(\n\t\t\t( { elementId, propKey } ) => elementId === targetElementId && propKey === targetPropKey\n\t\t);\n\n\t\tif ( ! matchingProp ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( hasValue( matchingProp.originValue ) ) {\n\t\t\treturn matchingProp.originValue;\n\t\t}\n\n\t\tif ( matchingProp.originPropFields?.elementId ) {\n\t\t\tconst innerPropKey = matchingProp.originPropFields.propKey ?? targetPropKey;\n\n\t\t\treturn findOriginValueByElementId(\n\t\t\t\tcomponents,\n\t\t\t\tmatchingProp.originPropFields.elementId,\n\t\t\t\tinnerPropKey,\n\t\t\t\tvisited\n\t\t\t);\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction hasValue< T >( value: T | null | undefined ): value is T {\n\treturn value !== null && value !== undefined;\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 { useElement } from '@elementor/editor-editing-panel';\n\nimport { useSanitizeOverridableProps } from '../../hooks/use-sanitize-overridable-props';\nimport { type ComponentInstanceOverridesPropValue } from '../../prop-types/component-instance-overrides-prop-type';\nimport { componentInstancePropTypeUtil } from '../../prop-types/component-instance-prop-type';\nimport { useComponent } from '../../store/store';\nimport { type Component, type OverridablePropsGroup } from '../../types';\n\ntype InstancePanelData = {\n\tcomponentId: number;\n\tcomponent: Component;\n\toverrides: ComponentInstanceOverridesPropValue;\n\toverridableProps: NonNullable< ReturnType< typeof useSanitizeOverridableProps > >;\n\tgroups: OverridablePropsGroup[];\n\tisEmpty: boolean;\n\tcomponentInstanceId: string;\n};\n\nexport function useInstancePanelData(): InstancePanelData | null {\n\tconst { element, 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\n\tconst componentInstanceId = element?.id;\n\n\tconst overridableProps = useSanitizeOverridableProps( componentId ?? null, componentInstanceId );\n\n\tif ( ! componentId || ! overridableProps || ! component || ! componentInstanceId ) {\n\t\treturn null;\n\t}\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 { componentId, component, overrides, overridableProps, groups, isEmpty, componentInstanceId };\n}\n\nfunction useComponentInstanceSettings() {\n\tconst { element, settings } = useElement();\n\n\treturn { element, settings: componentInstancePropTypeUtil.extract( settings.component_instance ) };\n}\n","import { type ComponentInstanceOverride } from '../prop-types/component-instance-overrides-prop-type';\nimport { componentInstanceOverridesPropTypeUtil } from '../prop-types/component-instance-overrides-prop-type';\nimport { componentInstancePropTypeUtil } from '../prop-types/component-instance-prop-type';\nimport { componentOverridablePropTypeUtil } from '../prop-types/component-overridable-prop-type';\nimport { type OverridableProp, type OverridableProps } from '../types';\nimport { getContainerByOriginId } from './get-container-by-origin-id';\nimport { getOverridableProp } from './get-overridable-prop';\nimport { extractInnerOverrideInfo } from './overridable-props-utils';\n\nexport function filterValidOverridableProps(\n\toverridableProps: OverridableProps,\n\t// instanceElementId is used to find the component inner elements,\n\t// and should be passed when editing component instance (not in component edit mode)\n\tinstanceElementId?: string\n): OverridableProps {\n\tconst validProps: Record< string, OverridableProp > = {};\n\n\tfor ( const [ key, prop ] of Object.entries( overridableProps.props ) ) {\n\t\tif ( isExposedPropValid( prop, instanceElementId ) ) {\n\t\t\tvalidProps[ key ] = prop;\n\t\t}\n\t}\n\n\tconst validPropKeys = new Set( Object.keys( validProps ) );\n\tconst filteredGroups = {\n\t\titems: Object.fromEntries(\n\t\t\tObject.entries( overridableProps.groups.items ).map( ( [ groupId, group ] ) => [\n\t\t\t\tgroupId,\n\t\t\t\t{ ...group, props: group.props.filter( ( propKey ) => validPropKeys.has( propKey ) ) },\n\t\t\t] )\n\t\t),\n\t\torder: overridableProps.groups.order,\n\t};\n\n\treturn { props: validProps, groups: filteredGroups };\n}\n\nexport function isExposedPropValid( prop: OverridableProp, instanceElementId?: string ): boolean {\n\tif ( ! prop.originPropFields ) {\n\t\t// if no originPropFields - the prop is on the widget level itself, therefore no need to lookup for a corresponding component's overridables\n\t\treturn true;\n\t}\n\n\tconst innerComponentInstanceElement = getContainerByOriginId( prop.elementId, instanceElementId );\n\n\tif ( ! innerComponentInstanceElement ) {\n\t\treturn false;\n\t}\n\n\tconst setting = innerComponentInstanceElement.settings?.get( 'component_instance' ) ?? null;\n\tconst componentInstance = componentInstancePropTypeUtil.extract( setting );\n\n\tif ( ! componentInstance?.component_id?.value ) {\n\t\treturn false;\n\t}\n\n\tconst overrides = componentInstanceOverridesPropTypeUtil.extract( componentInstance.overrides ) ?? undefined;\n\tconst matchingOverride = findOverrideByOuterKey( overrides, prop.overrideKey );\n\tconst innerOverrideInfo = extractInnerOverrideInfo( matchingOverride );\n\n\tif ( ! innerOverrideInfo ) {\n\t\treturn false;\n\t}\n\n\tconst { componentId, innerOverrideKey } = innerOverrideInfo;\n\tconst innerOverridableProp = getOverridableProp( { componentId, overrideKey: innerOverrideKey } );\n\n\tif ( ! innerOverridableProp ) {\n\t\treturn false;\n\t}\n\n\treturn isExposedPropValid( innerOverridableProp, innerComponentInstanceElement.id );\n}\n\nfunction findOverrideByOuterKey(\n\toverrides: ComponentInstanceOverride[] | undefined,\n\touterKey: string\n): ComponentInstanceOverride | null {\n\tif ( ! overrides ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\toverrides.find( ( override ) => {\n\t\t\tconst overridableValue = componentOverridablePropTypeUtil.extract( override );\n\n\t\t\tif ( overridableValue ) {\n\t\t\t\treturn overridableValue.override_key === outerKey;\n\t\t\t}\n\n\t\t\treturn override.value.override_key === outerKey;\n\t\t} ) ?? null\n\t);\n}\n","import { useIsSanitizedComponent, useOverridableProps } from '../store/store';\nimport { type ComponentId, type OverridableProps } from '../types';\nimport { filterValidOverridableProps } from '../utils/filter-valid-overridable-props';\n\nexport function useSanitizeOverridableProps(\n\tcomponentId: ComponentId | null,\n\tinstanceElementId?: string\n\t// instanceElementId is used to find the component inner elements,\n\t// and should be passed when editing component instance (not in component edit mode)\n): OverridableProps | undefined {\n\tconst overridableProps = useOverridableProps( componentId );\n\tconst isSanitized = useIsSanitizedComponent( componentId, 'overridableProps' );\n\n\tif ( ! overridableProps || ! componentId ) {\n\t\treturn undefined;\n\t}\n\n\tif ( isSanitized ) {\n\t\treturn overridableProps;\n\t}\n\n\treturn filterValidOverridableProps( overridableProps, instanceElementId );\n}\n","import { useEffect } from 'react';\nimport { useLoadedTemplates } from '@elementor/editor-templates';\n\nimport { loadComponentsAssets } from '../store/actions/load-components-assets';\n\nexport const LoadTemplateComponents = () => {\n\tconst templates = useLoadedTemplates();\n\n\tuseEffect( () => {\n\t\tloadComponentsAssets( templates.flatMap( ( elements ) => elements ?? [] ) );\n\t}, [ templates ] );\n\n\treturn null;\n};\n","import { isDocumentDirty, setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\n\nimport { type ComponentDocumentsMap, getComponentDocuments } from '../../utils/get-component-documents';\nimport { loadComponentsOverridableProps } from './load-components-overridable-props';\nimport { loadComponentsStyles } from './load-components-styles';\n\nexport async function loadComponentsAssets( elements: V1ElementData[] ) {\n\tconst documents = await getComponentDocuments( elements );\n\n\tupdateDocumentState( documents );\n\tloadComponentsStyles( documents );\n\n\tawait loadComponentsOverridableProps( [ ...documents.keys() ] );\n}\n\nfunction updateDocumentState( documents: ComponentDocumentsMap ) {\n\tconst isDrafted = [ ...documents.values() ].some( isDocumentDirty );\n\n\tif ( isDrafted ) {\n\t\tsetDocumentModifiedStatus( true );\n\t}\n}\n","import { type Document } from '@elementor/editor-documents';\nimport { 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 type ComponentDocumentsMap = Map< number, Document >;\n\ntype ProcessedCache = Map< number, Promise< Document | null > >;\n\nexport async function getComponentDocuments(\n\telements: V1ElementData[],\n\tcache: ProcessedCache = new Map()\n): Promise< ComponentDocumentsMap > {\n\tconst componentIds = await getComponentIds( elements, cache );\n\n\treturn getDocumentsMap( componentIds, cache );\n}\n\nasync function getComponentIds( elements: V1ElementData[], cache: ProcessedCache ): Promise< number[] > {\n\tconst results = await Promise.all(\n\t\telements.map( async ( { widgetType, elType, elements: childElements, settings } ) => {\n\t\t\tconst ids: number[] = [];\n\n\t\t\tif ( isComponentInstance( { widgetType, elType } ) ) {\n\t\t\t\tconst componentId = ( settings?.component_instance as ComponentInstanceProp )?.value?.component_id\n\t\t\t\t\t.value;\n\n\t\t\t\tif ( ! componentId ) {\n\t\t\t\t\treturn ids;\n\t\t\t\t}\n\n\t\t\t\tids.push( componentId );\n\n\t\t\t\tif ( ! cache.has( componentId ) ) {\n\t\t\t\t\tcache.set( componentId, getComponentDocumentData( componentId ) );\n\t\t\t\t}\n\n\t\t\t\tconst doc = await cache.get( componentId );\n\t\t\t\tchildElements = doc?.elements;\n\t\t\t}\n\n\t\t\tif ( childElements?.length ) {\n\t\t\t\tconst childIds = await getComponentIds( childElements, cache );\n\t\t\t\tids.push( ...childIds );\n\t\t\t}\n\n\t\t\treturn ids;\n\t\t} )\n\t);\n\n\treturn [ ...new Set( results.flat() ) ];\n}\n\nasync function getDocumentsMap( ids: number[], cache: ProcessedCache ): Promise< ComponentDocumentsMap > {\n\tconst documents = await Promise.all(\n\t\tids.map( async ( id ) => {\n\t\t\tconst document = await cache.get( id );\n\n\t\t\tif ( ! document ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn [ id, document ];\n\t\t} )\n\t);\n\n\treturn new Map( documents.filter( ( document ): document is [ number, Document ] => document !== null ) );\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\treturn Promise.all( componentIds.map( 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 Document } from '@elementor/editor-documents';\nimport { 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 { type ComponentDocumentsMap } from '../../utils/get-component-documents';\nimport { selectStyles, slice } from '../store';\n\nexport function loadComponentsStyles( documents: ComponentDocumentsMap ) {\n\tif ( ! documents.size ) {\n\t\treturn;\n\t}\n\n\tconst knownComponents = selectStyles( getState() );\n\tconst unknownDocuments = new Map( [ ...documents.entries() ].filter( ( [ id ] ) => ! knownComponents[ id ] ) );\n\n\tif ( ! unknownDocuments.size ) {\n\t\treturn;\n\t}\n\n\taddStyles( unknownDocuments );\n}\n\nfunction addStyles( documents: ComponentDocumentsMap ) {\n\tconst styles = Object.fromEntries(\n\t\t[ ...documents.entries() ].map( ( [ id, document ] ) => [ id, extractStylesFromDocument( document ) ] )\n\t);\n\n\tdispatch( slice.actions.addStyles( styles ) );\n}\n\nfunction extractStylesFromDocument( document: Document ): Array< StyleDefinition > {\n\tif ( ! document.elements?.length ) {\n\t\treturn [];\n\t}\n\n\treturn document.elements.flatMap( extractStylesFromElement );\n}\n\nfunction extractStylesFromElement( element: V1ElementData ): Array< StyleDefinition > {\n\treturn [\n\t\t...Object.values( element.styles ?? {} ),\n\t\t...( element.elements ?? [] ).flatMap( extractStylesFromElement ),\n\t];\n}\n","import {\n\ttype BackboneModel,\n\ttype BackboneModelConstructor,\n\ttype ContextMenuAction,\n\ttype ContextMenuEventData,\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 { type V1ElementData } from '@elementor/editor-elements';\nimport { notify } from '@elementor/editor-notifications';\nimport { __getState as getState } from '@elementor/store';\nimport { hasProInstalled } from '@elementor/utils';\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 { detachComponentInstance } from './utils/detach-component-instance';\nimport { formatComponentElementsId } from './utils/format-component-elements-id';\nimport { isProComponentsSupported, isProOutdatedForComponents } from './utils/is-pro-components-supported';\nimport { switchToComponent } from './utils/switch-to-component';\nimport { trackComponentEvent } from './utils/tracking';\n\ntype ContextMenuGroupConfig = {\n\tdisable: Record< string, string[] >;\n\tadd: Record< string, { index: number; actions: 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 EDIT_COMPONENT_DB_CLICK_UPGRADE_URL =\n\t'https://go.elementor.com/go-pro-components-Instance-edit-canvas-double-click/';\nconst EDIT_COMPONENT_CONTEXT_MENU_UPGRADE_URL =\n\t'https://go.elementor.com/go-pro-components-Instance-edit-context-menu/';\n\nconst UPDATE_PLUGINS_URL = '/wp-admin/plugins.php';\n\nconst COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID = 'component-edit-upgrade';\nconst COMPONENT_EDIT_UPDATE_NOTIFICATION_ID = 'component-edit-update';\n\nfunction notifyComponentEditUpgrade() {\n\tnotify( {\n\t\ttype: 'promotion',\n\t\tid: COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID,\n\t\tmessage: __( 'Editing components requires an active Pro subscription.', 'elementor' ),\n\t\tadditionalActionProps: [\n\t\t\t{\n\t\t\t\tsize: 'small',\n\t\t\t\tvariant: 'contained',\n\t\t\t\tcolor: 'promotion',\n\t\t\t\thref: EDIT_COMPONENT_DB_CLICK_UPGRADE_URL,\n\t\t\t\ttarget: '_blank',\n\t\t\t\tchildren: __( 'Upgrade Now', 'elementor' ),\n\t\t\t},\n\t\t],\n\t} );\n}\n\nfunction notifyComponentEditUpdate() {\n\tnotify( {\n\t\ttype: 'info',\n\t\tid: COMPONENT_EDIT_UPDATE_NOTIFICATION_ID,\n\t\tmessage: __( 'To edit components, update Elementor Pro to the latest version.', 'elementor' ),\n\t\tadditionalActionProps: [\n\t\t\t{\n\t\t\t\tsize: 'small',\n\t\t\t\tvariant: 'contained',\n\t\t\t\tcolor: 'info',\n\t\t\t\thref: UPDATE_PLUGINS_URL,\n\t\t\t\ttarget: '_blank',\n\t\t\t\tchildren: __( 'Update Now', 'elementor' ),\n\t\t\t},\n\t\t],\n\t} );\n}\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 actions if needed\n\t\tif ( addConfig ) {\n\t\t\tupdatedActions.splice( addConfig.index, 0, ...addConfig.actions );\n\t\t}\n\n\t\treturn { ...group, actions: updatedActions };\n\t} );\n};\n\ntype ComponentTypeOptions = CreateTemplatedElementTypeOptions & {\n\tshowLockedByModal?: ( lockedBy: string ) => void;\n\tshowDetachConfirmDialog?: ( onConfirm: () => void ) => void;\n};\n\nexport function createComponentType( options: ComponentTypeOptions ): 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( options: ComponentTypeOptions ): 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?: V1ElementData[];\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\tconst instanceId = this.model.get( 'id' );\n\t\t\t\tconst elements = componentInstance.elements ?? [];\n\t\t\t\tconst formattedElements = formatComponentElementsId( elements, [ instanceId ] );\n\n\t\t\t\tthis.collection = legacyWindow.elementor.createBackboneElementsCollection( formattedElements );\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\t\t\tconst hasPro = hasProInstalled();\n\t\t\tconst isOutdated = isProOutdatedForComponents();\n\t\t\tconst showPromoBadge = ! hasPro && ! isOutdated;\n\n\t\t\tconst badgeClass = 'elementor-context-menu-list__item__shortcut__promotion-badge';\n\t\t\tconst proBadge = `<a href=\"${ EDIT_COMPONENT_CONTEXT_MENU_UPGRADE_URL }\" target=\"_blank\" onclick=\"event.stopPropagation()\" class=\"${ badgeClass }\"><i class=\"eicon-upgrade-crown\"></i></a>`;\n\n\t\t\tconst editComponentAction: ContextMenuAction = {\n\t\t\t\tname: 'edit component',\n\t\t\t\ticon: 'eicon-edit',\n\t\t\t\ttitle: () => __( 'Edit Component', 'elementor' ),\n\t\t\t\t...( showPromoBadge && { shortcut: proBadge, hasShortcutAction: true } ),\n\t\t\t\tisEnabled: () => isProComponentsSupported() || isOutdated,\n\t\t\t\tcallback: ( _: unknown, eventData: ContextMenuEventData ) => this.editComponent( eventData ),\n\t\t\t};\n\n\t\t\tconst detachInstanceAction: ContextMenuAction = {\n\t\t\t\tname: 'detach instance',\n\t\t\t\ticon: 'eicon-chain-broken',\n\t\t\t\ttitle: () => __( 'Detach from Component', 'elementor' ),\n\t\t\t\tisEnabled: () => true,\n\t\t\t\tcallback: ( _: unknown, eventData: ContextMenuEventData ) => this.detachInstance( eventData ),\n\t\t\t};\n\n\t\t\tconst actions = isAdministrator ? [ editComponentAction, detachInstanceAction ] : [ detachInstanceAction ];\n\n\t\t\tconst addedGroup = {\n\t\t\t\tgeneral: {\n\t\t\t\t\tindex: 1,\n\t\t\t\t\tactions,\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: 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 ( isProOutdatedForComponents() ) {\n\t\t\t\tnotifyComponentEditUpdate();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! isProComponentsSupported() || 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\tdetachInstance( { trigger, location, secondaryLocation }: ContextMenuEventData ) {\n\t\t\tconst componentId = this.getComponentId();\n\t\t\tconst instanceId = this.model.get( 'id' );\n\n\t\t\tif ( ! componentId || ! instanceId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst handleConfirm = async () => {\n\t\t\t\ttry {\n\t\t\t\t\tawait detachComponentInstance( {\n\t\t\t\t\t\tinstanceId,\n\t\t\t\t\t\tcomponentId,\n\t\t\t\t\t\ttrackingInfo: { location, secondaryLocation, trigger },\n\t\t\t\t\t} );\n\t\t\t\t} catch {\n\t\t\t\t\tnotify( {\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tmessage: __( 'Failed to detach component instance.', 'elementor' ),\n\t\t\t\t\t\tid: 'detach-component-instance-failed',\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\toptions.showDetachConfirmDialog?.( handleConfirm );\n\t\t}\n\n\t\thandleDblClick( e: MouseEvent ) {\n\t\t\te.stopPropagation();\n\n\t\t\tif ( ! isUserAdministrator() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isProOutdatedForComponents() ) {\n\t\t\t\tnotifyComponentEditUpdate();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! hasProInstalled() ) {\n\t\t\t\tnotifyComponentEditUpgrade();\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 V1ElementData } from '@elementor/editor-elements';\nimport { hashString } from '@elementor/utils';\n\nconst ELEMENT_ID_LENGTH = 7;\n// The purpose of this function is to solve the issue of component inner elements having the same ID\n// when there are multiple instances of the same component on a page.\n// We change the ID of the inner elements to a hash of the nesting path of the element and the element's originalID.\nexport function formatComponentElementsId( elements: V1ElementData[], path: string[] ): V1ElementData[] {\n\treturn elements.map( ( element ) => {\n\t\tconst nestingPath = [ ...path, element.id ];\n\t\tconst id = hashString( nestingPath.join( '_' ), ELEMENT_ID_LENGTH );\n\n\t\treturn {\n\t\t\t...element,\n\t\t\tid,\n\t\t\toriginId: element.id,\n\t\t\telements: element.elements ? formatComponentElementsId( element.elements, nestingPath ) : undefined,\n\t\t};\n\t} );\n}\n","import { invalidateDocumentData, switchToDocument } from '@elementor/editor-documents';\nimport { getCurrentDocumentContainer, selectElement } from '@elementor/editor-elements';\nimport { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\n\nexport async function switchToComponent(\n\tcomponentId: number,\n\tcomponentInstanceId?: string | null,\n\telement?: HTMLElement | null\n) {\n\tconst selector = getSelector( element, componentInstanceId );\n\n\tinvalidateDocumentData( componentId );\n\n\tawait switchToDocument( 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\nexport async function expandNavigator() {\n\tawait runCommand( 'navigator/expand-all' );\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 { 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 { invalidateDocumentData, isDocumentDirty } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { notify } from '@elementor/editor-notifications';\nimport { AxiosError } from '@elementor/http-client';\nimport { __ } from '@wordpress/i18n';\n\nimport { apiClient } from '../api';\nimport { type DocumentSaveStatus } from '../types';\nimport { getComponentDocuments } from '../utils/get-component-documents';\n\nconst INSUFFICIENT_PERMISSIONS_ERROR_CODE = 'insufficient_permissions';\nconst PUBLISH_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-draft-failure/';\nconst PUBLISH_UPGRADE_NOTIFICATION_ID = 'component-publish-upgrade';\n\ntype Options = {\n\tstatus: DocumentSaveStatus;\n\telements: V1ElementData[];\n};\n\nexport async function publishDraftComponentsInPageBeforeSave( { status, elements }: Options ) {\n\tif ( status !== 'publish' ) {\n\t\treturn;\n\t}\n\n\tconst documents = await getComponentDocuments( elements );\n\n\tconst draftIds = [ ...documents.values() ].filter( isDocumentDirty ).map( ( document ) => document.id );\n\n\tif ( draftIds.length === 0 ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait apiClient.updateStatuses( draftIds, 'publish' );\n\t} catch ( error ) {\n\t\tif ( isInsufficientPermissionsError( error ) ) {\n\t\t\tnotifyPublishUpgrade();\n\t\t\treturn;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\tdraftIds.forEach( ( id ) => invalidateDocumentData( id ) );\n}\n\nfunction isInsufficientPermissionsError( error: unknown ): boolean {\n\treturn error instanceof AxiosError && error.response?.data?.code === INSUFFICIENT_PERMISSIONS_ERROR_CODE;\n}\n\nfunction notifyPublishUpgrade() {\n\tnotify( {\n\t\ttype: 'promotion',\n\t\tid: PUBLISH_UPGRADE_NOTIFICATION_ID,\n\t\tmessage: __(\n\t\t\t'You have unpublished component on this page. You need a pro version to publish it.',\n\t\t\t'elementor'\n\t\t),\n\t\tadditionalActionProps: [\n\t\t\t{\n\t\t\t\tsize: 'small',\n\t\t\t\tvariant: 'contained',\n\t\t\t\tcolor: 'promotion',\n\t\t\t\thref: PUBLISH_UPGRADE_URL,\n\t\t\t\ttarget: '_blank',\n\t\t\t\tchildren: __( 'Upgrade Now', 'elementor' ),\n\t\t\t},\n\t\t],\n\t} );\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 { publishDraftComponentsInPageBeforeSave } from './publish-draft-components-in-page-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 publishDraftComponentsInPageBeforeSave( { elements, status } );\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"],"mappings":"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","names":["settingsTransformersRegistry","registerDataHook","__","createTransformer","createTransformer","React","Stack","useSelector","useSelector","React","React","ComponentsIcon","Box","Stack","Typography","__","React","Box","React","Box","Stack","Stack","ComponentsIcon","Typography","__","Box","React","__","React","CrownFilledIcon","Box","Typography","__","UPGRADE_URL","__","React","__","React","Alert","AlertAction","AlertTitle","Box","Typography","__","UPDATE_PLUGINS_URL","__","Stack","React","__","React","closeDialog","openDialog","InfoCircleFilledIcon","Box","Button","Stack","Typography","__","React","PencilIcon","Box","Stack","__","React","createContext","useContext","React","__","dispatch","getState","__","createPropUtils","z","createPropUtils","z","createPropUtils","z","createPropUtils","z","createPropUtils","z","getState","getState","generateElementId","generateElementId","getState","dispatch","__","React","EllipsisWithTooltip","ComponentsIcon","Stack","Icon","__","React","Button","Stack","Typography","__","EmptyState","__","Stack","Typography","Button","React","Divider","Stack","React","Box","ListItemButton","Stack","React","getElementType","Box","React","createContext","useContext","dispatch","dispatch","getState","getStore","getStore","getState","getContainer","React","Stack","useSelector","getState","getState","useSelector","elType","widgetType","propKey","elementId","getElementType","Box","Box","ListItemButton","Stack","Stack","Divider","useElement","useElement","__","Stack","PencilIcon","Box","EmptyState","document","dispatch","getState","getState","dispatch","dispatch","getState","getState","document","dispatch","notify","getState","hasProInstalled","__","isComponentInstance","COMPONENT_WIDGET_TYPE","UPDATE_PLUGINS_URL","notify","__","hasProInstalled","getState","useEffect","dispatch","useEffect","dispatch","notify","getState","__","__","getState","notify","dispatch","dispatch","getState","getState","invalidateDocumentData","isDocumentDirty","notify","__","isDocumentDirty","document","invalidateDocumentData","notify","__","COMPONENT_WIDGET_TYPE","__","registerDataHook","settingsTransformersRegistry"]}