PluginProbe
Elementor Website Builder – more than just a page builder / 3.35.0-dev2
Elementor Website Builder – more than just a page builder v3.35.0-dev2
4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 All 455 releases
← All changes | assets/js/packages/editor-components/editor-components.min.js +64 -1 4.2.0-beta1 → 3.35.0-dev2 View file →
@@ -1 +1,64 @@
1 -!function(){"use strict";var e={2020:function(e){e.exports=window.elementorV2.editorProps},5527:function(e){e.exports=window.elementorV2.editorV1Adapters},6125:function(e,t,n){var o,r=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,l=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,n,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of s(t))c.call(e,r)||r===n||i(e,r,{get:()=>t[r],enumerable:!(o=a(t,r))||o.enumerable});return e},__toESM=(e,t,n)=>(n=null!=e?r(l(e)):{},__copyProps(!t&&e&&e.__esModule?n:i(n,"default",{value:e,enumerable:!0}),e)),d={};((e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})})(d,{COMPONENT_WIDGET_TYPE:()=>Wn,ComponentInstanceProvider:()=>ComponentInstanceProvider,ComponentItem:()=>Ee,ComponentName:()=>ComponentName,ComponentSearch:()=>ComponentSearch,ComponentsList:()=>ComponentsList,DetachAction:()=>DetachAction,EditComponentAction:()=>EditComponentAction,EmptySearchResult:()=>EmptySearchResult,InstanceEmptyState:()=>EmptyState2,InstancePanelBody:()=>InstancePanelBody,InstancePanelHeader:()=>InstancePanelHeader,LoadingComponents:()=>LoadingComponents,OverridablePropProvider:()=>OverridablePropProvider,SLICE_NAME:()=>I,SearchProvider:()=>SearchProvider,apiClient:()=>O,componentInstanceOverridePropTypeUtil:()=>ht,componentInstanceOverridesPropTypeUtil:()=>Et,componentInstancePropTypeUtil:()=>wt,componentOverridablePropTypeUtil:()=>_t,componentsActions:()=>cn,componentsSelectors:()=>pn,createComponentsAction:()=>createComponentsAction,filterValidOverridableProps:()=>filterValidOverridableProps,getComponentDocumentData:()=>getComponentDocumentData,getContainerByOriginId:()=>getContainerByOriginId,getOverridableProp:()=>getOverridableProp,getPropTypeForComponentOverride:()=>getPropTypeForComponentOverride,init:()=>init,isComponentInstance:()=>isComponentInstance,loadComponentsAssets:()=>loadComponentsAssets,onElementDrop:()=>onElementDrop,publishDraftComponentsInPageBeforeSave:()=>publishDraftComponentsInPageBeforeSave,registerComponentsReducer:()=>registerComponentsReducer,resolveOverridePropValue:()=>resolveOverridePropValue,selectOverridableProps:()=>j,selectPath:()=>F,slice:()=>A,switchToComponent:()=>switchToComponent,trackComponentEvent:()=>trackComponentEvent,updateOverridableProp:()=>updateOverridableProp,useComponentInstanceElement:()=>useComponentInstanceElement,useComponents:()=>useComponents,useComponentsPermissions:()=>useComponentsPermissions,useCurrentComponent:()=>useCurrentComponent,useCurrentComponentId:()=>useCurrentComponentId,useFilteredComponents:()=>useFilteredComponents,useInstancePanelData:()=>useInstancePanelData,useIsSanitizedComponent:()=>useIsSanitizedComponent,useOverridablePropValue:()=>useOverridablePropValue,useOverridableProps:()=>useOverridableProps,useSanitizeOverridableProps:()=>useSanitizeOverridableProps}),e.exports=(o=d,__copyProps(i({},"__esModule",{value:!0}),o));var p=n(22504),m=n(82148),u=n(46280),g=n(78098),v=n(51485),f=n(64301),h=n(5527),y=n(56384),C=n(27723),_=n(82148),E=n(56384),b=n(56384),I="components",w=n(56384),x=n(56384),P=n(5527),S=n(18998),T="elementor/v1/components",getParams=e=>({action:"get_document_config",unique_id:`document-config-${e}`,data:{id:e}}),O={get:()=>(0,S.httpService)().get(`${T}`).then(e=>e.data.data),create:e=>(0,S.httpService)().post(`${T}`,e).then(e=>e.data.data),updateStatuses:(e,t)=>(0,S.httpService)().put(`${T}/status`,{ids:e,status:t}),getComponentConfig:e=>P.ajax.load(getParams(e)),invalidateComponentConfigCache:e=>P.ajax.invalidateCache(getParams(e)),getComponentLockStatus:async e=>await(0,S.httpService)().get(`${T}/lock-status`,{params:{componentId:e}}).then(e=>{const{is_current_user_allow_to_edit:t,locked_by:n}=e.data.data;return{isAllowedToSwitchDocument:t,lockedBy:n||""}}),lockComponent:async e=>await(0,S.httpService)().post(`${T}/lock`,{componentId:e}).then(e=>e.data),unlockComponent:async e=>await(0,S.httpService)().post(`${T}/unlock`,{componentId:e}).then(e=>e.data),getOverridableProps:async e=>await(0,S.httpService)().get(`${T}/overridable-props`,{params:{"componentIds[]":e}}).then(e=>e.data),updateArchivedComponents:async(e,t)=>await(0,S.httpService)().post(`${T}/archive`,{componentIds:e,status:t}).then(e=>e.data.data),updateComponentTitle:(e,t)=>(0,S.httpService)().post(`${T}/update-titles`,{components:e,status:t}).then(e=>e.data.data),validate:async e=>await(0,S.httpService)().post(`${T}/create-validate`,e).then(e=>e.data)},k=(0,x.__createAsyncThunk)("components/load",async()=>await O.get()),D=new Map;function registerComponentsReducer(e,t){D.set(`${I}/${e}`,t)}function createComponentsAction(e){const t=(0,w.__createAction)(`${I}/${e}`);return{action:t,register(t){registerComponentsReducer(e,t)},dispatch(e){(0,w.__dispatch)(t(e))}}}var V=(0,w.__createSlice)({name:I,initialState:{data:[],unpublishedData:[],loadStatus:"idle",createdThisSession:[],archivedThisSession:[],path:[],currentComponentId:null,updatedComponentNames:{},sanitized:{}},reducers:{add:(e,{payload:t})=>{Array.isArray(t)?e.data=[...t,...e.data]:e.data.unshift(t)},load:(e,{payload:t})=>{e.data=t},addUnpublished:(e,{payload:t})=>{e.unpublishedData.unshift(t)},removeUnpublished:(e,{payload:t})=>{const n=Array.isArray(t)?t:[t];e.unpublishedData=e.unpublishedData.filter(e=>!n.includes(e.uid))},resetUnpublished:e=>{e.unpublishedData=[]},addCreatedThisSession:(e,{payload:t})=>{e.createdThisSession.push(t)},removeCreatedThisSession:(e,{payload:t})=>{e.createdThisSession=e.createdThisSession.filter(e=>e!==t)},archive:(e,{payload:t})=>{const n=e.data.find(e=>e.id===t);n&&(n.isArchived=!0,e.archivedThisSession.push(t))},setCurrentComponentId:(e,{payload:t})=>{e.currentComponentId=t},setPath:(e,{payload:t})=>{e.path=t},setOverridableProps:(e,{payload:t})=>{const n=e.data.find(e=>e.id===t.componentId);n&&(n.overridableProps=t.overridableProps)},loadOverridableProps:(e,{payload:t})=>{Object.keys(t).forEach(n=>{const o=Number(n),r=t[o],i=e.data.find(e=>e.id===o);i&&r&&(i.overridableProps=r)})},rename:(e,{payload:t})=>{const n=e.data.find(e=>e.uid===t.componentUid);n&&(n.id&&(e.updatedComponentNames[n.id]=t.name),n.name=t.name)},cleanUpdatedComponentNames:e=>{e.updatedComponentNames={}},updateComponentSanitizedAttribute:(e,{payload:{componentId:t,attribute:n}})=>{e.sanitized[t]||(e.sanitized[t]={}),e.sanitized[t][n]=!0},resetSanitizedComponents:e=>{e.sanitized={}}},extraReducers:e=>{e.addCase(k.fulfilled,(e,{payload:t})=>{e.data=t,e.loadStatus="idle"}),e.addCase(k.pending,e=>{e.loadStatus="pending"}),e.addCase(k.rejected,e=>{e.loadStatus="error"})}}),A={...V,reducer(e,t){const n=V.reducer(e,t),o=D.get(t.type);if(!o||!n)return n;const r=structuredClone(n);return o(r,t),r}},selectData=e=>e[I].data,selectLoadStatus=e=>e[I].loadStatus,selectUnpublishedData=e=>e[I].unpublishedData,getCurrentComponentId=e=>e[I].currentComponentId,selectComponent=(e,t)=>e[I].data.find(e=>e.id===t),useComponent=e=>(0,b.__useSelector)(t=>e?selectComponent(t,e):null),selectComponentByUid=(e,t)=>e[I].data.find(e=>e.uid===t)??e[I].unpublishedData.find(e=>e.uid===t),U=(0,b.__createSelector)(selectData,selectUnpublishedData,(e,t)=>[...t.map(e=>({uid:e.uid,name:e.name,overridableProps:e.overridableProps})),...e.filter(e=>!e.isArchived)]),B=(0,b.__createSelector)(selectUnpublishedData,e=>e),z=(0,b.__createSelector)(selectLoadStatus,e=>"pending"===e),L=((0,b.__createSelector)(selectLoadStatus,e=>"error"===e),(0,b.__createSelector)(e=>e[I].createdThisSession,e=>e)),M={props:{},groups:{items:{},order:[]}},j=(0,b.__createSelector)(selectComponent,e=>{if(e)return e.overridableProps??M}),useOverridableProps=e=>(0,b.__useSelector)(t=>e?j(t,e):null),R=(0,b.__createSelector)(selectComponent,e=>!!e?.overridableProps),F=(0,b.__createSelector)(e=>e[I].path,e=>e),$=(0,b.__createSelector)(getCurrentComponentId,e=>e),N=(0,b.__createSelector)(selectData,getCurrentComponentId,(e,t)=>e.find(e=>e.id===t)),useCurrentComponentId=()=>(0,b.__useSelector)($),useCurrentComponent=()=>(0,b.__useSelector)(N),K=(0,b.__createSelector)(e=>e[I].updatedComponentNames,e=>Object.entries(e).map(([e,t])=>({componentId:Number(e),title:t}))),useIsSanitizedComponent=(e,t)=>{const n=(0,b.__useSelector)(e=>e[I].sanitized);return!!e&&!!n[e]?.[t]},W=n(46280),getComponentDocumentData=async e=>{const t=(0,W.getV1DocumentsManager)();try{return await t.request(e)}catch{return null}},H=(0,_.createTransformer)(async({component_id:e,overrides:t})=>{const n=B((0,E.__getState)()).find(({uid:t})=>t===e),o=t?.reduce((e,t)=>({...e,...t}),{});if(n)return{elements:structuredClone(n.elements),overrides:o};if("number"!=typeof e)throw new Error(`Component ID "${e}" not valid.`);const r=await getComponentDocumentData(e);return{elements:r?.elements??[],overrides:o}}),G=n(82148),q=(0,G.createTransformer)((e,t)=>{const{overrides:n}=t.renderContext??{},o=n?.[e.override_key];if(o){return function isOriginValueOverride(e){return"override"===e.$$type}(e.origin_value)?function transformOverride(e,t,n){const o=G.settingsTransformersRegistry.get("override");if(!o)return null;const r=o(e.origin_value.value,t);if(!r)return null;const[i]=Object.keys(r);return{[i]:n}}(e,t,o):o}return e.origin_value});var Y=(0,n(82148).createTransformer)(e=>{const{override_key:t,override_value:n}=e;return{[t]:n}}),J=__toESM(n(97557)),Q=n(97557),X=n(70374),Z=n(79513),ee=n(56384),useComponents=()=>({components:(0,ee.__useSelector)(U),isLoading:(0,ee.__useSelector)(z)}),te=n(22444),ne="4.0";function isProComponentsSupported(){return(0,te.hasProInstalled)()&&(0,te.isProAtLeast)(ne)}function isProOutdatedForComponents(){return(0,te.hasProInstalled)()&&!(0,te.isProAtLeast)(ne)}var oe=__toESM(n(97557)),re=n(24413),ie=n(79513),ae=n(27723),se=__toESM(n(97557)),le=n(97557),ce=n(22444),de=(0,le.createContext)(void 0),SearchProvider=({children:e,localStorageKey:t})=>{const{debouncedValue:n,handleChange:o,inputValue:r}=(0,ce.useSearchState)({localStorageKey:t});return se.createElement(de.Provider,{value:{handleChange:o,clearSearch:()=>{o("")},searchValue:n,inputValue:r}},e)},useSearch=()=>{const e=(0,le.useContext)(de);if(!e)throw new Error("useSearch must be used within a SearchProvider");return e},ComponentSearch=()=>{const{inputValue:e,handleChange:t}=useSearch();return oe.createElement(ie.Stack,{direction:"row",gap:.5,sx:{width:"100%",px:2,py:1.5}},oe.createElement(ie.Box,{sx:{flexGrow:1}},oe.createElement(ie.TextField,{role:"search",fullWidth:!0,size:"tiny",value:e,placeholder:(0,ae.__)("Search","elementor"),onChange:e=>t(e.target.value),InputProps:{startAdornment:oe.createElement(ie.InputAdornment,{position:"start"},oe.createElement(re.SearchIcon,{fontSize:"tiny"}))}})))},pe=__toESM(n(97557)),me=n(24413),ue=n(79513),ge=n(27723),ve=n(46400),useComponentsPermissions=()=>{const{isAdmin:e}=(0,ve.useCurrentUserCapabilities)();return{canCreate:e,canEdit:e,canDelete:e,canRename:e}},fe=__toESM(n(97557)),he=n(97557),ye=n(70374),Ce=n(24413),_e=n(79513),Ee=(0,he.forwardRef)(({component:e,disabled:t=!0,draggable:n,onDragStart:o,onDragEnd:r,onClick:i,isEditing:a=!1,error:s=null,nameSlot:l,endSlot:c,...d},p)=>fe.createElement(_e.ListItemButton,{disabled:t,draggable:n,onDragStart:o,onDragEnd:r,shape:"rounded",ref:p,sx:{border:"solid 1px",borderColor:"divider",py:.5,px:1,display:"flex",width:"100%",alignItems:"center",gap:1},...d},fe.createElement(_e.Box,{display:"flex",alignItems:"center",gap:1,minWidth:0,flexGrow:1,onClick:i},fe.createElement(_e.ListItemIcon,{size:"tiny"},fe.createElement(Ce.ComponentsIcon,{fontSize:"tiny"})),fe.createElement(be,{isActive:a,isError:!!s},fe.createElement(_e.Box,{display:"flex",flex:1,minWidth:0,flexGrow:1},l??fe.createElement(ComponentName,{name:e.name})))),c)),be=(0,_e.styled)(_e.Box,{shouldForwardProp:e=>"isActive"!==e&&"isError"!==e})(({theme:e,isActive:t,isError:n})=>({display:"flex",width:"100%",flexGrow:1,borderRadius:e.spacing(.5),border:getIndicatorBorder({isActive:t,isError:n,theme:e}),padding:`0 ${e.spacing(1)}`,marginLeft:t?e.spacing(1):0,minWidth:0})),getIndicatorBorder=({isActive:e,isError:t,theme:n})=>t?`2px solid ${n.palette.error.main}`:e?`2px solid ${n.palette.secondary.main}`:"none";function ComponentName({name:e,editable:t}){return t?.isEditing?fe.createElement(ye.EditableField,{ref:t.ref,as:_e.Typography,variant:"caption",...t.getProps()}):fe.createElement(ye.EllipsisWithTooltip,{title:e,as:_e.Typography,variant:"caption",color:"text.primary"})}var Ie=__toESM(n(97557)),we=n(79513),xe=Array.from({length:3},(e,t)=>t),LoadingComponents=()=>Ie.createElement(we.Stack,{"aria-label":"Loading components",gap:1.5,sx:{pointerEvents:"none",position:"relative",maxHeight:"300px",overflow:"hidden",px:1,"&:after":{position:"absolute",bottom:0,content:'""',left:0,width:"100%",height:"40%",pointerEvents:"none",zIndex:1}}},xe.map(e=>Ie.createElement(we.Box,{key:e,display:"flex",alignItems:"center",gap:1.5,sx:{py:.75,px:1.5,opacity:0,animation:`e-loading-fade-in 0.4s ease-out ${80*e}ms forwards`,"@keyframes e-loading-fade-in":{from:{opacity:0,transform:"translateY(4px)"},to:{opacity:1,transform:"translateY(0)"}}}},Ie.createElement(we.Skeleton,{animation:"wave",variant:"rounded",width:24,height:24}),Ie.createElement(we.Skeleton,{animation:"wave",variant:"rounded",width:"60%",height:14})))),Pe={fontSize:"0.875rem !important",fontWeight:"500 !important"};function ComponentsList(){const{components:e,isLoading:t,searchValue:n}=useFilteredComponents();if(t)return pe.createElement(LoadingComponents,null);return!e?.length?n.length?pe.createElement(EmptySearchResult,null):isProOutdatedForComponents()?pe.createElement(ProOutdatedEmptyState,null):isProComponentsSupported()?pe.createElement(EmptyState,null):pe.createElement(ProUpgradeEmptyState,null):pe.createElement(ue.List,{sx:{display:"flex",flexDirection:"column",gap:1,px:2}},e.map(e=>pe.createElement(Ee,{key:e.uid,component:e})))}var ProUpgradeEmptyState=()=>pe.createElement(ue.Stack,{alignItems:"center",justifyContent:"start",height:"100%",sx:{px:2,py:4},gap:2,overflow:"hidden"},pe.createElement(ue.Stack,{alignItems:"center",gap:1},pe.createElement(me.ComponentsIcon,{fontSize:"large",sx:{color:"text.secondary"}}),pe.createElement(ue.Typography,{align:"center",variant:"subtitle2",color:"text.secondary",sx:Pe},(0,ge.__)("Create Reusable Components","elementor")),pe.createElement(ue.Typography,{align:"center",variant:"caption",color:"secondary",sx:{maxWidth:200}},(0,ge.__)("Create design elements that sync across your entire site.","elementor"))),pe.createElement(ue.Button,{variant:"contained",color:"promotion",size:"small",startIcon:pe.createElement(me.CrownFilledIcon,null),href:"https://go.elementor.com/go-pro-components/",target:"_blank",rel:"noopener noreferrer"},(0,ge.__)("Upgrade now","elementor"))),ProOutdatedEmptyState=()=>pe.createElement(ue.Stack,{alignItems:"center",justifyContent:"start",height:"100%",sx:{px:2,py:4,maxWidth:268,m:"auto"},gap:2,overflow:"hidden"},pe.createElement(ue.Stack,{alignItems:"center",gap:1},pe.createElement(me.ComponentsIcon,{fontSize:"large",sx:{color:"text.secondary"}}),pe.createElement(ue.Typography,{align:"center",variant:"subtitle2",color:"text.secondary",sx:Pe},(0,ge.__)("Create Reusable Components","elementor")),pe.createElement(ue.Typography,{align:"center",variant:"caption",color:"secondary"},(0,ge.__)("Create design elements that sync across your entire site.","elementor")),pe.createElement(ue.Typography,{align:"center",variant:"caption",color:"secondary",sx:{mt:1}},(0,ge.__)("To create components, update Elementor Pro to the latest version.","elementor"))),pe.createElement(ue.Button,{variant:"text",color:"info",size:"small",href:"/wp-admin/plugins.php",target:"_blank",rel:"noopener noreferrer"},(0,ge.__)("Update Elementor Pro","elementor"))),EmptyState=()=>{const{canCreate:e}=useComponentsPermissions();return pe.createElement(ue.Stack,{alignItems:"center",justifyContent:"start",height:"100%",sx:{px:2,py:4},gap:2,overflow:"hidden"},pe.createElement(ue.Stack,{alignItems:"center",gap:1},pe.createElement(me.ComponentsIcon,{fontSize:"large",sx:{color:"text.secondary"}}),pe.createElement(ue.Typography,{align:"center",variant:"subtitle2",color:"text.secondary",sx:Pe},(0,ge.__)("No components yet","elementor")),pe.createElement(ue.Typography,{align:"center",variant:"caption",color:"secondary",sx:{maxWidth:200}},(0,ge.__)("Components are reusable blocks that sync across your site.","elementor"),pe.createElement("br",null),e?(0,ge.__)("Create once, use everywhere.","elementor"):(0,ge.__)("With your current role, you cannot create components. Contact an administrator to create one.","elementor")),pe.createElement(ue.Link,{href:"http://go.elementor.com/components-guide-article",target:"_blank",rel:"noopener noreferrer",variant:"caption",color:"info.main"},(0,ge.__)("Learn more about components","elementor"))),e&&pe.createElement(pe.Fragment,null,pe.createElement(ue.Divider,{sx:{width:"100%"}}),pe.createElement(ue.Stack,{alignItems:"center",gap:1,width:"100%"},pe.createElement(ue.Typography,{align:"center",variant:"subtitle2",color:"text.secondary",sx:Pe},(0,ge.__)("Create your first one:","elementor")),pe.createElement(ue.Typography,{align:"center",variant:"caption",color:"secondary",sx:{maxWidth:228}},(0,ge.__)('Right-click any div-block or flexbox on your canvas or structure and select "Create component"',"elementor")))))},EmptySearchResult=()=>{const{searchValue:e,clearSearch:t}=useSearch();return pe.createElement(ue.Stack,{color:"text.secondary",pt:5,alignItems:"center",gap:1,overflow:"hidden",justifySelf:"center"},pe.createElement(me.ComponentsIcon,null),pe.createElement(ue.Box,{sx:{width:"100%"}},pe.createElement(ue.Typography,{align:"center",variant:"subtitle2",color:"inherit",sx:Pe},(0,ge.__)("Sorry, nothing matched","elementor")),e&&pe.createElement(ue.Typography,{variant:"subtitle2",color:"inherit",sx:{...Pe,display:"flex",width:"100%",justifyContent:"center"}},pe.createElement("span",null,"“"),pe.createElement("span",{style:{maxWidth:"80%",overflow:"hidden",textOverflow:"ellipsis"}},e),pe.createElement("span",null,"”."))),pe.createElement(ue.Typography,{align:"center",variant:"caption",color:"inherit"},(0,ge.__)("Try something else.","elementor")),pe.createElement(ue.Typography,{align:"center",variant:"caption",color:"inherit"},pe.createElement(ue.Link,{color:"secondary",variant:"caption",component:"button",onClick:t},(0,ge.__)("Clear & try again","elementor"))))},useFilteredComponents=()=>{const{components:e,isLoading:t}=useComponents(),{searchValue:n}=useSearch();return{components:e.filter(e=>e.name.toLowerCase().includes(n.toLowerCase())),isLoading:t,searchValue:n}},Se=__toESM(n(97557)),Te=n(27723),Oe=__toESM(n(97557)),ke=n(24413),De=n(79513),Ve=n(27723);function ComponentsUpgradeAlert({title:e,description:t,upgradeUrl:n}){return Oe.createElement(De.Box,{sx:{mt:"auto",position:"sticky",bottom:0}},Oe.createElement(De.Alert,{variant:"standard",color:"promotion",icon:Oe.createElement(ke.CrownFilledIcon,{fontSize:"tiny"}),role:"status",size:"small",action:Oe.createElement(De.AlertAction,{variant:"contained",color:"promotion",href:n,target:"_blank",rel:"noopener noreferrer"},(0,Ve.__)("Upgrade now","elementor")),sx:{m:2,mt:1}},Oe.createElement(De.AlertTitle,null,e),Oe.createElement(De.Typography,{variant:"caption"},t)))}function ComponentsProNotification(){return Se.createElement(ComponentsUpgradeAlert,{title:(0,Te.__)("Create new components","elementor"),description:(0,Te.__)("Creating new components requires an active Pro subscription.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-components-exist-footer/"})}var Ae=__toESM(n(97557)),Ue=n(27723),Be=__toESM(n(97557)),ze=n(24413),Le=n(79513),Me=n(27723),je="/wp-admin/plugins.php";function ComponentsUpdateAlert({title:e,description:t}){return Be.createElement(Le.Box,{sx:{mt:"auto",position:"sticky",bottom:0}},Be.createElement(Le.Alert,{variant:"standard",color:"info",icon:Be.createElement(ze.InfoCircleFilledIcon,{fontSize:"tiny"}),role:"status",size:"small",action:Be.createElement(Le.AlertAction,{variant:"contained",color:"info",href:je,target:"_blank",rel:"noopener noreferrer"},(0,Me.__)("Upgrade Now","elementor")),sx:{m:2,mt:1}},Be.createElement(Le.AlertTitle,null,e),Be.createElement(Le.Typography,{variant:"caption"},t)))}function ComponentsUpdateNotification(){return Ae.createElement(ComponentsUpdateAlert,{title:(0,Ue.__)("Create new Components","elementor"),description:(0,Ue.__)("To create new components, update Elementor Pro to the latest version.","elementor")})}var Re="components-full-height-panel",ComponentsContent=()=>{const{components:e,isLoading:t}=useComponents(),n=!t&&e.length>0,o=!isProComponentsSupported()&&n,r=isProOutdatedForComponents();return(0,Q.useLayoutEffect)(()=>{let e=document.getElementById(Re);return e||(e=document.createElement("style"),e.id=Re,e.textContent="\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",document.head.appendChild(e)),()=>{document.getElementById(Re)?.remove()}},[]),J.createElement(Z.Stack,{justifyContent:"space-between",sx:{flex:1,minHeight:0}},n&&J.createElement(ComponentSearch,null),J.createElement(ComponentsList,null),o&&(r?J.createElement(ComponentsUpdateNotification,null):J.createElement(ComponentsProNotification,null)))},Components=()=>J.createElement(X.ThemeProvider,null,J.createElement(SearchProvider,{localStorageKey:"elementor-components-search"},J.createElement(ComponentsContent,null))),Fe=__toESM(n(97557)),$e=n(70374),Ne=n(24413),Ke=n(27723);function DetachInstanceConfirmationDialog({open:e,onClose:t,onConfirm:n}){return Fe.createElement($e.ConfirmationDialog,{open:e,onClose:t},Fe.createElement($e.ConfirmationDialog.Title,{icon:Ne.AlertTriangleFilledIcon,iconColor:"secondary"},(0,Ke.__)("Detach from Component?","elementor")),Fe.createElement($e.ConfirmationDialog.Content,null,Fe.createElement($e.ConfirmationDialog.ContentText,null,(0,Ke.__)("Detaching this instance will break its link to the Component. Changes to the Component will no longer apply. Continue?","elementor"))),Fe.createElement($e.ConfirmationDialog.Actions,{onClose:t,onConfirm:n,confirmLabel:(0,Ke.__)("Detach","elementor"),color:"primary"}))}function openDetachConfirmDialog(e){(0,$e.openDialog)({component:Fe.createElement(DetachInstanceConfirmationDialog,{open:!0,onClose:$e.closeDialog,onConfirm:()=>{(0,$e.closeDialog)(),e()}})})}var We=__toESM(n(97557)),He=n(70374),Ge=n(24413),qe=n(79513),Ye=n(27723),openEditModeDialog=e=>{(0,He.openDialog)({component:We.createElement(EditModeDialog,{lockedBy:e})})},EditModeDialog=({lockedBy:e})=>{const t=(0,Ye.__)("%s is currently editing this document","elementor").replace("%s",e);return We.createElement(We.Fragment,null,We.createElement(qe.DialogHeader,{logo:!1},We.createElement(qe.Box,{display:"flex",alignItems:"center",gap:1},We.createElement(qe.Icon,{color:"secondary"},We.createElement(Ge.InfoCircleFilledIcon,{fontSize:"medium"})),We.createElement(qe.Typography,{variant:"subtitle1"},t))),We.createElement(qe.DialogContent,null,We.createElement(qe.Stack,{spacing:2,direction:"column"},We.createElement(qe.Typography,{variant:"body2"},(0,Ye.__)("You can wait for them to finish or reach out to coordinate your changes together.","elementor")),We.createElement(qe.DialogActions,null,We.createElement(qe.Button,{color:"secondary",variant:"contained",onClick:He.closeDialog},(0,Ye.__)("Close","elementor"))))))},Je=__toESM(n(97557)),Qe=n(24413),Xe=n(79513),Ze=n(27723),et=__toESM(n(97557)),tt=n(97557),nt=(0,tt.createContext)(null);function ComponentInstanceProvider({children:e,...t}){return et.createElement(nt.Provider,{value:t},e)}function useComponentInstanceContext(){const e=(0,tt.useContext)(nt);if(!e)throw new Error("useComponentInstanceContext must be used within a ComponentInstanceProvider");return e}var useComponentId=()=>useComponentInstanceContext().componentId,useComponentInstanceOverrides=()=>useComponentInstanceContext().overrides,useComponentOverridableProps=()=>useComponentInstanceContext().overridableProps,ot=__toESM(n(97557)),rt=n(97557),it=n(24778),at=n(24413),st=n(27723),lt=n(82148),ct=n(70975),dt=n(5527),pt=n(56384),mt=n(27723),ut=n(2020),gt=n(59618),vt=n(2020),ft=n(59618),ht=(0,vt.createPropUtils)("override",ft.z.object({override_key:ft.z.string(),override_value:ft.z.unknown(),schema_source:ft.z.object({type:ft.z.literal("component"),id:ft.z.number()})})),yt=n(2020),Ct=n(59618),_t=(0,yt.createPropUtils)("overridable",Ct.z.object({override_key:Ct.z.string(),origin_value:Ct.z.object({$$type:Ct.z.string(),value:Ct.z.unknown()}).nullable()})),Et=(0,ut.createPropUtils)("overrides",gt.z.array(gt.z.union([ht.schema,_t.schema])).optional().default([])),bt=n(2020),It=n(59618),wt=(0,bt.createPropUtils)("component-instance",It.z.object({component_id:bt.numberPropTypeUtil.schema,overrides:It.z.optional(Et.schema)})),xt=n(33176),Pt=n(56384),trackComponentEvent=({action:e,source:t,...n})=>{if("system"===t)return;const{dispatchEvent:o,config:r}=(0,xt.getMixpanel)();if(!r?.names?.components?.[e])return;const i=r.names.components[e];o?.(i,{...n,source:t,"Feature name":"Components"})},onElementDrop=(e,t)=>{if("e-component"!==t?.model?.get("widgetType"))return;const n=t.model.get("editor_settings"),o=n?.title,r=n?.component_uid,i=t.id,a=L((0,Pt.__getState)()),s=r&&a.includes(r),l=window.elementorCommon.eventsManager.config,{locations:c,secondaryLocations:d}=l;trackComponentEvent({action:"instanceAdded",source:"user",instance_id:i,component_uid:r,component_name:o,is_same_session_reuse:s,location:c.widgetPanel,secondary_location:d.componentsTab})},St=n(70975),Tt=n(70975),Ot=n(2020);function isClassesProp(e){return Ot.classesPropTypeUtil.isValid(e)}function generateLocalStyleId(e){return`e-${e}-${(0,Tt.generateElementId)()}`}var kt="e-component";function isComponentInstance(e){return[e.widgetType,e.elType].includes(kt)}function resolveOverridableSettings(e,t){return isComponentInstance({widgetType:e.widgetType,elType:e.elType})?function resolveOverridableSettingsForComponentInstance(e,t){const n=e.settings?.component_instance;if(!wt.isValid(n))return e.settings??{};const o=n.value.overrides?.value;if(!o?.length)return e.settings??{};const r=o.map(e=>resolvePropValue(e,t,{isOverridableOverride:!0}));return{...e.settings,component_instance:{...n,value:{...n.value,overrides:{...n.value.overrides,value:r}}}}}(e,t):function resolveOverridableSettingsForElement(e,t){const n=e.settings?{...e.settings}:{};for(const[o,r]of Object.entries(e.settings??{}))n[o]=resolvePropValue(r,t);return n}(e,t)}function resolvePropValue(e,t,n){const{isOverridableOverride:o=!1}=n??{};if(!_t.isValid(e))return e;const r=e.value.override_key,i=t.get(r),a=_t.extract(e)?.origin_value;if(!i)return a;if(o)return function resolveOverridableOverride(e,t){if(!t||!ht.isValid(t))return null;return ht.create({override_value:e.value.override_value,override_key:t.value.override_key,schema_source:t.value.schema_source})}(i,a);const s=ht.extract(i)?.override_value;return s??a}function resolveDetachedInstance(e,t){const n=function createOverrideMap(e){const t=new Map;return e.forEach(e=>{let n=null;if(ht.isValid(e)?n=e:_t.isValid(e)&&(n=function getOverridableOverride(e){if(!_t.isValid(e))return null;const t=_t.extract(e)?.origin_value;if(!ht.isValid(t))return null;return t}(e)),n){const e=n.value.override_key;t.set(e,n)}}),t}(t);return resolveElementRecursive(structuredClone(e),n)}function resolveElementRecursive(e,t){if(e.id=(0,St.generateElementId)(),e.styles){const{styles:t,settings:n}=function regenerateLocalStyleIds(e){const t=e.styles;if(!t||0===Object.keys(t).length)return{styles:void 0,settings:void 0};const n={},o={};for(const[r,i]of Object.entries(t)){const t=generateLocalStyleId(e.id);n[t]={...i,id:t},o[r]=t}const r=e.settings;if(!r||0===Object.keys(r).length)return{styles:n,settings:void 0};const i={...r};for(const[e,t]of Object.entries(i))if(isClassesProp(t)&&t.value.length>0){const n=t.value.map(e=>o[e]??e);i[e]=Ot.classesPropTypeUtil.create(n)}return{styles:n,settings:i}}(e);e.styles=t,n&&(e.settings={...e.settings,...n})}return e.settings&&(e.settings=resolveOverridableSettings(e,t)),e.elements?.length&&(e.elements=e.elements.map(e=>resolveElementRecursive(e,t))),e}var Dt="elementor/components/detach-instance",Vt="elementor/components/undo-detach-instance",At="elementor/components/redo-detach-instance";async function detachComponentInstance({instanceId:e,componentId:t,trackingInfo:n}){const o=(0,ct.getContainer)(e);if(!o)throw new Error(`Instance container with ID "${e}" not found.`);const r=await getComponentDocumentData(t);if(!r)throw new Error(`Component with ID "${t}" not found.`);const i=r.elements?.[0];if(!i)throw new Error(`Component with ID "${t}" has no root element.`);const a=(0,dt.undoable)({do:()=>{const r=function extractInstanceOverrides(e){const t=e.model.toJSON().settings,n=wt.extract(t?.component_instance),o=Et.extract(n?.overrides);return o??[]}(o),a=resolveDetachedInstance(i,r),s=o.model.toJSON(),l=(new Date).getTime();window.dispatchEvent(new CustomEvent(Dt,{detail:{detachedInstanceId:e,detachActionId:l}}));const c=(0,ct.replaceElement)({currentElementId:e,newElement:a,withHistory:!1});(0,ct.selectElement)(c.id);const d=selectComponent((0,pt.__getState)(),t)?.uid;return trackComponentEvent({action:"detached",source:"user",component_uid:d,instance_id:e,location:n.location,secondary_location:n.secondaryLocation,trigger:n.trigger}),{detachedElement:c,detachedInstanceElementData:a,originalInstanceModel:s,actionId:l}},undo:(e,{detachedElement:t,originalInstanceModel:n,actionId:o})=>{const r=(0,ct.replaceElement)({currentElementId:t.id,newElement:n,withHistory:!1});return window.dispatchEvent(new CustomEvent(Vt,{detail:{restoredInstanceId:r.id,detachActionId:o}})),(0,lt.doAfterRender)([r.id],()=>{(0,ct.selectElement)(r.id)}),r},redo:(e,t,n)=>{const{detachedInstanceElementData:o,actionId:r}=t,i=(0,ct.replaceElement)({currentElementId:n.id,newElement:o,withHistory:!1});return window.dispatchEvent(new CustomEvent(At,{detail:{detachedInstanceId:i.id,detachActionId:r}})),(0,ct.selectElement)(i.id),{...t,detachedElement:i}}},{title:(0,mt.__)("Detach from Component","elementor"),subtitle:(0,mt.__)("Instance detached","elementor")});return a()}var Ut=__toESM(n(97557)),Bt=n(51061),zt=n(70374),Lt=n(24413),Mt=n(79513);function InstancePanelHeader({componentName:e,actions:t}){return Ut.createElement(Bt.PanelHeader,{sx:{justifyContent:"start",px:2}},Ut.createElement(Mt.Stack,{direction:"row",alignItems:"center",flexGrow:1,gap:1,maxWidth:"100%"},Ut.createElement(Lt.ComponentsIcon,{fontSize:"small",sx:{color:"text.tertiary"}}),Ut.createElement(zt.EllipsisWithTooltip,{title:e,as:Bt.PanelHeaderTitle,sx:{flexGrow:1}}),t))}function EditComponentAction({label:e,onClick:t,disabled:n=!1,icon:o}){return Ut.createElement(Mt.Tooltip,{title:e},Ut.createElement(Mt.IconButton,{size:"tiny",onClick:t,"aria-label":e,disabled:n},Ut.createElement(o,{fontSize:"tiny"})))}var DetachAction=({componentInstanceId:e,componentId:t})=>{const[n,o]=(0,rt.useState)(!1),r=(0,st.__)("Detach from Component","elementor");return ot.createElement(ot.Fragment,null,ot.createElement(EditComponentAction,{label:r,icon:at.DetachIcon,onClick:()=>{o(!0)}}),ot.createElement(DetachInstanceConfirmationDialog,{open:n,onClose:()=>{o(!1)},onConfirm:async()=>{o(!1);try{await detachComponentInstance({instanceId:e,componentId:t,trackingInfo:getDetachTrackingInfo()})}catch{(0,it.notify)({type:"error",message:(0,st.__)("Failed to detach component instance.","elementor"),id:"detach-component-instance-failed"})}}}))};function getDetachTrackingInfo(){const e=window,t=e?.elementorCommon?.eventsManager?.config;return t?{location:t.locations.components.instanceEditingPanel,trigger:t.triggers.click}:{location:"",trigger:""}}var jt=__toESM(n(97557)),Rt=n(24413),Ft=n(79513),$t=n(27723),EmptyState2=({onEditComponent:e})=>{const{canEdit:t}=useComponentsPermissions(),n=t?(0,$t.__)("Edit the component to add properties, manage them or update the design across all instances.","elementor"):(0,$t.__)("With your current role, you cannot edit this component. Contact an administrator to add properties.","elementor");return jt.createElement(Ft.Stack,{alignItems:"center",justifyContent:"start",height:"100%",color:"text.secondary",sx:{p:2.5,pt:8,pb:5.5,mt:1},gap:1.5},jt.createElement(Rt.ComponentPropListIcon,{fontSize:"large"}),jt.createElement(Ft.Typography,{align:"center",variant:"subtitle2"},(0,$t.__)("No properties yet","elementor")),jt.createElement(Ft.Typography,{align:"center",variant:"caption",maxWidth:"170px"},n),t&&jt.createElement(Ft.Button,{variant:"outlined",color:"secondary",size:"small",sx:{mt:1},disabled:!e,onClick:e},jt.createElement(Rt.PencilIcon,{fontSize:"small"}),(0,$t.__)("Edit component","elementor")))},Nt=__toESM(n(97557)),Kt=n(77394),Wt=n(78098),Ht=n(51061),Gt=n(79513),qt=__toESM(n(97557)),Yt=n(97557),Jt=n(78098),Qt=n(70374),Xt=n(79513),Zt=__toESM(n(97557)),en=n(77394),tn=n(78098),nn=n(79513),on=n(70975);function useControlsByWidgetType(e){const t=(0,on.getElementType)(e);if(!t)return{};return function getControlsByBind(e){return e.reduce((e,t)=>({...e,[t.value.bind]:t}),{})}(iterateControls(t.controls))}function iterateControls(e){return e.map(e=>"control"===e.type&&"bind"in e.value?e:"section"===e.type?iterateControls(e.value.items):null).filter(Boolean).flat()}var rn=__toESM(n(97557)),an=n(97557),sn=(0,an.createContext)(null);function OverridablePropProvider({children:e,...t}){return rn.createElement(sn.Provider,{value:t},e)}var useOverridablePropValue=()=>(0,an.useContext)(sn)?.value,useComponentInstanceElement=()=>(0,an.useContext)(sn)?.componentInstanceElement,resolveOverridePropValue=e=>{if(_t.isValid(e))return function getOverridableValue(e){const t=_t.extract(e);if(!t)return null;const n=ht.isValid(t.origin_value);if(n)return getOverrideValue(t.origin_value);return t.origin_value}(e);return ht.isValid(e)?getOverrideValue(e):e};function getOverrideValue(e){const t=ht.extract(e);return t?t.override_value:null}var ln=n(56384);function safeDispatch(){return(0,ln.__getStore)()?.dispatch}var cn={add(e){(0,ln.__dispatch)(A.actions.add(e))},load(e){(0,ln.__dispatch)(A.actions.load(e))},addUnpublished(e){(0,ln.__dispatch)(A.actions.addUnpublished(e))},removeUnpublished(e){(0,ln.__dispatch)(A.actions.removeUnpublished(e))},resetUnpublished(){(0,ln.__dispatch)(A.actions.resetUnpublished())},addCreatedThisSession(e){(0,ln.__dispatch)(A.actions.addCreatedThisSession(e))},removeCreatedThisSession(e){(0,ln.__dispatch)(A.actions.removeCreatedThisSession(e))},archive(e){(0,ln.__dispatch)(A.actions.archive(e))},setCurrentComponentId(e){safeDispatch()?.(A.actions.setCurrentComponentId(e))},setPath(e){safeDispatch()?.(A.actions.setPath(e))},setOverridableProps(e,t){(0,ln.__dispatch)(A.actions.setOverridableProps({componentId:e,overridableProps:t}))},rename(e,t){(0,ln.__dispatch)(A.actions.rename({componentUid:e,name:t}))},cleanUpdatedComponentNames(){(0,ln.__dispatch)(A.actions.cleanUpdatedComponentNames())},updateComponentSanitizedAttribute(e,t){(0,ln.__dispatch)(A.actions.updateComponentSanitizedAttribute({componentId:e,attribute:t}))},resetSanitizedComponents(){(0,ln.__dispatch)(A.actions.resetSanitizedComponents())}},dn=n(56384);var pn={getOverridableProps(e){return j((0,dn.__getState)(),e)},getCurrentComponent(){return N((0,dn.__getState)())},getCurrentComponentId(){const e=function safeGetState(){return(0,dn.__getStore)()?.getState()}();return e?$(e):null},getUnpublishedComponents(){return B((0,dn.__getState)())},getUpdatedComponentNames(){return K((0,dn.__getState)())},getArchivedThisSession(){return(0,dn.__getState)()[I].archivedThisSession},getCreatedThisSession(){return L((0,dn.__getState)())},getComponents(){return U((0,dn.__getState)())},getComponentByUid(e){return selectComponentByUid((0,dn.__getState)(),e)}};function updateOverridableProp(e,t,n){const o=pn.getOverridableProps(e);if(!o)return;const r=o.props[t.override_key];if(!r)return;const i=resolveOverridePropValue(t.origin_value),a=n?{originValue:i,originPropFields:n}:{originValue:i},s={...o,props:{...o.props,[r.overrideKey]:{...r,...a}}};cn.setOverridableProps(e,s)}var mn=n(70975),getPropTypeForComponentOverride=e=>{if(e.originPropFields)return getPropType(e.originPropFields);const{widgetType:t,propKey:n}=e;return getPropType({widgetType:t,propKey:n})};function getPropType({widgetType:e,propKey:t}){const n=(0,mn.getWidgetsCache)()?.[e]?.atomic_props_schema;return n?.[t]}var un=__toESM(n(97557)),gn=n(77394),vn=n(79513),ControlLabel=({children:e,...t})=>un.createElement(vn.Stack,{direction:"row",alignItems:"center",justifyItems:"start",gap:.25},un.createElement(gn.ControlFormLabel,{...t},e),un.createElement(gn.ControlAdornments,null)),fn=n(22444),hn=(0,fn.createError)({code:"override_control_inner_element_not_found",message:"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."}),yn=(0,fn.createError)({code:"override_control_prop_type_not_found",message:"Prop type not found for override control."});function applyOverridesToSettings(e,t){const n={};for(const[o,r]of Object.entries(e)){const e=_t.extract(r);if(!e){n[o]=r;continue}const i=t[e.override_key];if(i)if(i.outermostKey&&i.outermostKey!==e.override_key){const t=e.origin_value;n[o]=_t.create({override_key:i.outermostKey,origin_value:i.value??t})}else n[o]=i.value??r;else n[o]=r}return n}function unwrapOverridableSettings(e){const t={};for(const[n,o]of Object.entries(e)){const e=_t.extract(o);e?t[n]=e.origin_value:t[n]=o}return t}var Cn=n(97557),_n=n(78098);var En=n(97557),bn=n(78098),In=n(70975),wn=n(70975);function getContainerByOriginId(e,t){if(!t)return(0,wn.getContainer)(e);const n=(0,wn.getContainer)(t);if(!n)return null;const o=window;return o.elementor?.getContainerByKeyValue?.({key:"originId",value:e,parent:n.view})??null}var xn=n(56384);function getOverridableProp({componentId:e,overrideKey:t}){const n=j((0,xn.__getState)(),e);if(n)return n.props[t]}function resolveOverridesChain({outerOverridableProp:e,outerInstanceId:t,overridesMapping:n={}}){if(!e.originPropFields){const o=getContainerByOriginId(e.elementId,t);if(!o)throw new Error(`Inner element not found inside instance. elementId: ${e.elementId}, instanceId: ${t}`);return{isChainBroken:!1,innerElement:o,overridesMapping:n}}const o=getContainerByOriginId(e.elementId,t);if(!o)return{isChainBroken:!0};const{componentId:r,overrides:i}=function extractComponentInstanceSettings(e){const t=e.settings?.get("component_instance"),n=wt.extract(t),o=n?.component_id?.value,r=Et.extract(n?.overrides);return{componentId:o,overrides:r}}(o);if(!r)throw new Error(`Component ID not found for current instance. currentInstanceId: ${o.id}. outerInstanceId: ${t}`);const a=function buildOverridesMap(e,t){const n={...e};for(const o of t){const t=_t.extract(o);if(t){const o=ht.extract(t.origin_value);if(!o)continue;const r=t.override_key,i=o.override_key,a=o.override_value,s=e[r];if(s){const e=s.value;n[i]={value:e??a,outermostKey:s.outermostKey??r};continue}n[i]={value:a,outermostKey:r}}else{const e=ht.extract(o);if(!e)continue;const t=e.override_key,r=e.override_value;n[t]={value:r}}}return n}(n,i??[]),s=function findOverrideByOuterKey(e,t){if(!e)return null;const n=e.find(e=>{const n=_t.extract(e);return!!n&&n.override_key===t}),o=_t.extract(n)?.origin_value;if(!o||!ht.isValid(o))return null;return o}(i,e.overrideKey),l=ht.extract(s)?.override_key;if(!s||!l)return{isChainBroken:!0};const c=getOverridableProp({componentId:r,overrideKey:l});if(!c)throw new Error(`Overridable prop not found. componentId: ${r}, overrideKey: ${l}`);return resolveOverridesChain({outerOverridableProp:c,outerInstanceId:o.id,overridesMapping:a})}function useResolvedInnerElement(e){const t=(0,bn.useElement)(),n=useComponentId(),o=useComponentInstanceOverrides(),{elementId:r,widgetType:i,elType:a}=e.originPropFields??e,s="widget"===a?i:a,l=(0,In.getElementType)(s);if(!l)throw new Error(`Element type not found for ${s}`);const{elementId:c,overridesMapping:d}=(0,En.useMemo)(()=>{const o=resolveOverridesChain({outerOverridableProp:e,outerInstanceId:t.element.id});if(o.isChainBroken)throw new hn({context:{componentId:n,elementId:r}});return{elementId:o.innerElement.id,overridesMapping:o.overridesMapping}},[e,t.element.id,n,r]),p=(0,En.useMemo)(()=>applyOverridesToSettings((0,In.getElementSettings)(c,Object.keys(l?.propsSchema??{})),d),[c,l?.propsSchema,d]),m=(0,En.useMemo)(()=>{const e=applyOverridesToSettings(p,function formatOverridesToApply(e){if(!e)return{};const t={};for(const n of e){const e=_t.extract(n);let o=n;e&&(o=e.origin_value);const r=ht.extract(o);r&&(t[r.override_key]={value:r.override_value})}return t}(o));return unwrapOverridableSettings(e)},[p,o]);return{elementId:c,elementType:l,resolvedOriginValues:p,resolvedElementSettings:m}}function OverridePropControl({overrideKey:e}){const t=useComponentOverridableProps().props[e];return t?Zt.createElement(tn.SettingsField,{bind:"component_instance",propDisplayName:t.label},Zt.createElement(OverrideControl,{overridableProp:t})):null}function OverrideControl({overridableProp:e}){const t=(0,tn.useElement)(),{value:n,setValue:o}=(0,en.useBoundProp)(wt),r=useCurrentComponentId(),i=useComponentId(),a=useComponentOverridableProps(),s=useComponentInstanceOverrides(),l=useControlsByWidgetType(e.originPropFields?.widgetType??e.widgetType),c=(0,en.getControlReplacements)(),d=function getMatchingOverride(e,t){return e?.find(e=>{const n=_t.extract(e);if(n){const e=ht.extract(n.origin_value);return e?.override_key===t}return e.value.override_key===t})??null}(s,e.overrideKey),{propKey:p}=e.originPropFields??e,m=getPropTypeForComponentOverride(e);if(!m)throw new yn({context:{overridableProp:e}});const{elementId:u,elementType:g,resolvedElementSettings:v,resolvedOriginValues:f}=useResolvedInnerElement(e),{overrideValue:h,isDisabled:y,isHidden:C}=function useOverrideControlDependencies({existingOverride:e,resolvedElementSettings:t,elementId:n,elementType:o,propKey:r}){return(0,Cn.useMemo)(()=>{const{isDisabled:i,isHidden:a}=(0,_n.extractDependencyEffect)(r,o.propsSchema,t),s=e?resolveOverridePropValue(e):null,l={...t,[r]:s},c=(0,_n.getElementSettingsWithDefaults)(o.propsSchema,l),d=(0,_n.extractOrderedDependencies)(o.dependenciesPerTargetMapping??{});return{overrideValue:(0,_n.getUpdatedValues)({[r]:s},d,o.propsSchema,c,n)[r],isDisabled:i,isHidden:a}},[e,t,r,o.propsSchema,o.dependenciesPerTargetMapping,n])}({existingOverride:d,resolvedElementSettings:v,elementType:g,elementId:u,propKey:p});if(C)return null;const{propValue:_,baseValue:E}=function resolveOverrideValues(e,t,n){const o=unwrapOverridableSettings(t),r=o[n]??null,i=(0,tn.isDynamicPropValue)(r),a=i&&!e,s=a?r:e,l=e||i?null:r;return{propValue:s,baseValue:l}}(h,f,p),b={[e.overrideKey]:_},I={[e.overrideKey]:E},{control:w,controlProps:x,layout:P}=function getControlParams(e,t,n){const o=e[t.propKey],{value:r}=o,i=function getControlLayout(e){return e.value.meta?.layout||tn.controlsRegistry.getLayout(e.value.type)}(o),a=function populateChildControlProps(e){if(e.childControlType){const t=tn.controlsRegistry.get(e.childControlType),n=tn.controlsRegistry.getPropTypeUtil(e.childControlType);e={...e,childControlConfig:{component:t,props:e.childControlProps||{},propTypeUtil:n}}}return e}(r.props);"custom"===i&&(a.label=n??r.label);return{control:o,controlProps:a,layout:i}}(l,e.originPropFields??e,e.label),S=(0,tn.createTopLevelObjectType)({schema:{[e.overrideKey]:m}});return Zt.createElement(OverridablePropProvider,{value:_t.extract(d)??void 0,componentInstanceElement:t},Zt.createElement(tn.ElementProvider,{element:{id:u,type:g.key},elementType:g,settings:v},Zt.createElement(en.PropProvider,{propType:S,value:b,setValue:(t,l,c)=>{let p=function getTempNewValueForDynamicProp(e,t,n){const o=null===n;if(o&&(0,tn.isDynamicPropValue)(t))return e.default??null;return n}(m,_,t[e.overrideKey]);p=function correctExposedEmptyOverride(e,t){const n=_t.extract(e);return n&&null===t?_t.create({override_key:n.override_key,origin_value:null}):e}(p,d);const u=function createOverrideValue({matchingOverride:e,overrideKey:t,overrideValue:n,componentId:o}){const r=_t.extract(e),i=_t.extract(n),a=i??r;if(a){const e=ht.create({override_key:t,override_value:resolveOverridePropValue(n),schema_source:{type:"component",id:o}});return _t.create({override_key:a.override_key,origin_value:e})}return ht.create({override_key:t,override_value:n,schema_source:{type:"component",id:o}})}({matchingOverride:d,overrideKey:e.overrideKey,overrideValue:p,componentId:i});let g=(s??[]).filter(e=>function isValidOverride(e,t){const n=_t.isValid(t)?t.value.origin_value?.value.override_key:t.value.override_key;return!!e.props[n]}(a,e)).map(e=>e===d?u:e);d||(g=[...g,u]),o({...n,overrides:Et.create(g)},l,c);const v=_t.extract(u);if(v&&r){if(e.originPropFields)return void updateOverridableProp(r,v,e.originPropFields);const t={elType:e.elType,widgetType:e.widgetType,propKey:e.propKey,elementId:e.elementId};updateOverridableProp(r,v,t)}},baseValue:I,isDisabled:y},Zt.createElement(en.PropKeyProvider,{bind:e.overrideKey},Zt.createElement(en.ControlReplacementsProvider,{replacements:c},Zt.createElement(nn.Box,{mb:1.5},Zt.createElement(tn.ControlTypeContainer,{layout:P},"custom"!==P&&Zt.createElement(ControlLabel,null,e.label),Zt.createElement(OriginalControl,{control:w,controlProps:x}))))))))}function OriginalControl({control:e,controlProps:t}){const{value:n}=e;return Zt.createElement(tn.BaseControl,{type:n.type,props:t})}function OverridePropsGroup({group:e}){const[t,n]=(0,Jt.useStateByElement)(e.id,!0),o=(0,Yt.useId)(),r=`label-${o}`,i=`content-${o}`,a=e.label;return qt.createElement(Xt.Box,{"aria-label":`${a} section`},qt.createElement(Xt.ListItemButton,{id:r,"aria-controls":i,"aria-label":`${a} section`,onClick:()=>{n(!t)},p:0,sx:{"&:hover":{backgroundColor:"transparent"}}},qt.createElement(Xt.Stack,{direction:"row",alignItems:"center",justifyItems:"start",flexGrow:1,gap:.5},qt.createElement(Xt.ListItemText,{secondary:a,secondaryTypographyProps:{color:"text.primary",variant:"caption",fontWeight:"bold"},sx:{flexGrow:0,flexShrink:1,marginInlineEnd:1}})),qt.createElement(Qt.CollapseIcon,{open:t,color:"secondary",fontSize:"tiny"})),qt.createElement(Xt.Collapse,{id:i,"aria-labelledby":r,in:t,timeout:"auto"},qt.createElement(Xt.Stack,{direction:"column",gap:1,p:2},e.props.map(e=>qt.createElement(OverridePropControl,{key:e,overrideKey:e})))))}function InstancePanelBody({groups:e,isEmpty:t,emptyState:n,componentInstanceId:o}){return Nt.createElement(Ht.PanelBody,null,Nt.createElement(Kt.ControlAdornmentsProvider,{items:(0,Wt.getFieldIndicators)("settings")},t?n:Nt.createElement(Gt.Stack,{direction:"column",alignItems:"stretch"},e.map(e=>Nt.createElement(Nt.Fragment,{key:e.id+o},Nt.createElement(OverridePropsGroup,{group:e}),Nt.createElement(Gt.Divider,null))))))}var Pn=n(78098);function filterValidOverridableProps(e,t){const n={};for(const[o,r]of Object.entries(e.props))isExposedPropValid(r,t)&&(n[o]=r);const o=new Set(Object.keys(n));return{props:n,groups:{items:Object.fromEntries(Object.entries(e.groups.items).map(([e,t])=>[e,{...t,props:t.props.filter(e=>o.has(e))}])),order:e.groups.order}}}function isExposedPropValid(e,t){const{isChainBroken:n}=resolveOverridesChain({outerOverridableProp:e,outerInstanceId:t});return!n}function useSanitizeOverridableProps(e,t){const n=useOverridableProps(e),o=useIsSanitizedComponent(e,"overridableProps");if(n&&e)return o?n:filterValidOverridableProps(n,t)}function useInstancePanelData(){const{element:e,settings:t}=function useComponentInstanceSettings(){const{element:e,settings:t}=(0,Pn.useElement)();return{element:e,settings:wt.extract(t.component_instance)}}(),n=t?.component_id?.value,o=t?.overrides?.value,r=useComponent(n??null),i=e?.id,a=useSanitizeOverridableProps(n??null,i);if(!(n&&a&&r&&i))return null;const s=a.groups.order.map(e=>a.groups.items[e]??null).filter(e=>null!==e&&e.props.length>0),l=0===s.length||0===Object.keys(a.props).length;return{componentId:n,component:r,overrides:o,overridableProps:a,groups:s,isEmpty:l,componentInstanceId:i}}var Sn="https://go.elementor.com/go-pro-components-Instance-edit-footer/";function InstanceEditingPanel(){const{canEdit:e}=useComponentsPermissions(),t=useInstancePanelData();if(!t)return null;const{componentId:n,component:o,overrides:r,overridableProps:i,groups:a,isEmpty:s,componentInstanceId:l}=t,c=(0,Ze.__)("Edit %s","elementor").replace("%s",o.name),d=Je.createElement(Xe.Stack,{direction:"row",gap:.5},Je.createElement(DetachAction,{componentInstanceId:l,componentId:n}),e&&Je.createElement(EditComponentAction,{disabled:!0,label:c,icon:Qe.PencilIcon}));return Je.createElement(Xe.Box,{"data-testid":"instance-editing-panel",sx:{display:"flex",flexDirection:"column",height:"100%"}},Je.createElement(ComponentInstanceProvider,{componentId:n,overrides:r,overridableProps:i},Je.createElement(InstancePanelHeader,{componentName:o.name,actions:d}),Je.createElement(InstancePanelBody,{groups:a,isEmpty:s,emptyState:Je.createElement(EmptyState2,null),componentInstanceId:l})),!isProComponentsSupported()&&(isProOutdatedForComponents()?Je.createElement(ComponentsUpdateAlert,{title:(0,Ze.__)("Edit Component","elementor"),description:(0,Ze.__)("To edit components, update Elementor Pro to the latest version.","elementor")}):Je.createElement(ComponentsUpgradeAlert,{title:(0,Ze.__)("Edit components","elementor"),description:(0,Ze.__)("Editing components requires an active Pro subscription.","elementor"),upgradeUrl:Sn})))}var Tn=__toESM(n(97557)),On=n(97557),kn=n(44267),Dn=n(46280),Vn=n(64301);async function getComponentDocuments({elements:e,cache:t=new Map,isRecursive:n=!0}){return async function getDocumentsMap(e,t){const n=await Promise.all(e.map(async e=>{const n=await t.get(e);return n?[e,n]:null}));return new Map(n.filter(e=>null!==e))}(await getComponentIds(e,t,n),t)}async function getComponentIds(e,t,n){const o=await Promise.all(e.map(async({widgetType:e,elType:o,elements:r,settings:i})=>{const a=[];if(isComponentInstance({widgetType:e,elType:o})){const e=i?.component_instance?.value?.component_id.value;if(!e)return a;if(a.push(e),t.has(e)||t.set(e,getComponentDocumentData(e)),n){const n=await t.get(e);r=n?.elements}}if(r?.length){const e=await getComponentIds(r,t,n);a.push(...e)}return a}));return[...new Set(o.flat())]}var An=n(56384);async function loadComponentsAssets(e){const t=await getComponentDocuments({elements:e,isRecursive:!1});!function updateDocumentState(e){const t=[...e.values()].some(Dn.isDocumentDirty);t&&(0,Dn.setDocumentModifiedStatus)(!0)}(t),t.forEach((e,t)=>{Vn.embeddedDocumentsManager.setDocument(t,e)}),await async function loadComponentsOverridableProps(e){const t=e.filter(e=>!R((0,An.__getState)(),e));if(!t.length)return;const{data:n}=await O.getOverridableProps(t);(0,An.__dispatch)(A.actions.loadOverridableProps(n))}([...t.keys()])}var LoadTemplateComponents=()=>(0,kn.isHandlingTemplateStyles)()?Tn.createElement(LoadTemplateComponentsInternal,null):null;function LoadTemplateComponentsInternal(){const e=(0,kn.useLoadedTemplates)();return(0,On.useEffect)(()=>{loadComponentsAssets(e.flatMap(e=>e??[]))},[e]),null}var Un=n(82148),Bn=n(46280),zn=n(24778),Ln=n(56384),Mn=n(22444),jn=n(27723),Rn=n(22444),Fn=7;function formatComponentElementsId(e,t){return e.map(e=>{const n=[...t,e.id],o=(0,Rn.hashString)(n.join("_"),Fn);return{...e,id:o,originId:e.id,elements:e.elements?formatComponentElementsId(e.elements,n):void 0}})}var $n=n(46280),Nn=n(70975),Kn=n(5527);async function switchToComponent(e,t,n){const o=function getSelector(e,t){if(e)return function buildUniqueSelector(e){const t=[];let n=e.closest("[data-id]");for(;n;){const e=n.dataset.id;n.hasAttribute("data-elementor-id")&&t.unshift(`[data-id="${e}"]`),n=n.parentElement?.closest("[data-id]")??null}if(0===t.length){const t=e.closest("[data-id]");if(t?.dataset?.id)return`[data-id="${t.dataset.id}"]`}return t.join(" ")}(e);if(t)return`[data-id="${t}"]`;return}(n,t);(0,$n.invalidateDocumentData)(e),await(0,$n.switchToDocument)(e,{selector:o,mode:"autosave",setAsInitial:!1,shouldScroll:!1});const r=(0,Nn.getCurrentDocumentContainer)(),i=r?.children?.[0];i&&((0,Nn.selectElement)(i.id),async function expandNavigator(){await(0,Kn.__privateRunCommand)("navigator/expand-all")}())}var Wn="e-component",Hn="https://go.elementor.com/go-pro-components-Instance-edit-canvas-double-click/",Gn="https://go.elementor.com/go-pro-components-Instance-edit-context-menu/",qn="/wp-admin/plugins.php",Yn="component-edit-upgrade",Jn="component-edit-update",Qn=2e3;function notifyComponentEditUpdate(){(0,zn.notify)({type:"info",id:Jn,message:(0,jn.__)("To edit components, update Elementor Pro to the latest version.","elementor"),additionalActionProps:[{size:"small",variant:"contained",color:"info",href:qn,target:"_blank",children:(0,jn.__)("Update Now","elementor")}]})}var updateGroups=(e,t)=>{const n=new Map(Object.entries(t.disable??{})),o=new Map(Object.entries(t.add??{}));return e.map(e=>{const t=n.get(e.name)??[],r=o.get(e.name),i=e.actions.map(e=>t.includes(e.name)?{...e,isEnabled:()=>!1}:e);return r&&i.splice(r.index,0,...r.actions),{...e,actions:i}})};function createComponentType(e){const t=window.elementor.modules.elements.types.Widget,n=function createComponentView(e){const t=window;return class extends((0,Un.createTemplatedElementView)(e)){eventsManagerConfig=t.elementorCommon.eventsManager.config;#e;isComponentCurrentlyEdited(){const e=(0,Bn.getCurrentDocument)();return e?.id===this.getComponentId()}getRenderContext(){const e=this.getNamespaceKey(),t=this._parent?.getRenderContext?.(),n=t?.[e];if(!this.#e)return t;const o=this.#e.overrides??{},r=n?.overrides??{};return{...t,[e]:{overrides:{...r,...o}}}}getResolverRenderContext(){const e=this.getNamespaceKey(),t=this.getRenderContext(),n=t?.[e];if(!n)return this._parent?.getResolverRenderContext?.();const o=this._parent?.getResolverRenderContext?.();return{...o,...n}}afterSettingsResolve(e){const n=e.component_instance;if(n){this.#e={overrides:n.overrides??{}};const o=this.model.get("id"),r=formatComponentElementsId(n.elements??[],[o]);this.collection=t.elementor.createBackboneElementsCollection(r),this.collection.models.forEach(setInactiveRecursively),e.component_instance="<template data-children-placeholder></template>"}return e}getDomElement(){return this.children.findByIndex(0)?.getDomElement()??this.$el}attachBuffer(e,t){const n=e.$el.find("[data-children-placeholder]").get(0);n?n.replaceWith(t):super.attachBuffer(e,t)}getComponentId(){const e=this.options?.model?.get("settings")?.get("component_instance")?.value;return e.component_id.value}getContextMenuGroups(){const e=super.getContextMenuGroups().filter(e=>"save"!==e.name);if(!this.getComponentId())return e;return updateGroups(e,this._getContextMenuConfig())}_getContextMenuConfig(){const e=isUserAdministrator(),t=(0,Mn.hasProInstalled)(),n=isProOutdatedForComponents(),o={name:"edit component",icon:"eicon-edit",title:()=>(0,jn.__)("Edit Component","elementor"),...!t&&!n&&{shortcut:`<a href="${Gn}" target="_blank" onclick="event.stopPropagation()" class="${"elementor-context-menu-list__item__shortcut__promotion-badge"}"><i class="eicon-upgrade-crown"></i></a>`,hasShortcutAction:!0},isEnabled:()=>isProComponentsSupported()||n,callback:(e,t)=>this.editComponent(t)},r={name:"detach instance",icon:"eicon-chain-broken",title:()=>(0,jn.__)("Detach from Component","elementor"),isEnabled:()=>!0,callback:(e,t)=>this.detachInstance(t)};return{add:{general:{index:1,actions:e?[o,r]:[r]}},disable:{clipboard:["pasteStyle","resetStyle"]}}}async switchDocument(){const{isAllowedToSwitchDocument:t,lockedBy:n}=await O.getComponentLockStatus(this.getComponentId());t?switchToComponent(this.getComponentId(),this.model.get("id"),this.el):e.showLockedByModal?.(n||"")}editComponent({trigger:e,location:t,secondaryLocation:n}){if(isProOutdatedForComponents())return void notifyComponentEditUpdate();if(!isProComponentsSupported()||this.isComponentCurrentlyEdited())return;this.switchDocument();const o=this.model.get("editor_settings");trackComponentEvent({action:"edited",source:"user",component_uid:o?.component_uid,component_name:o?.title,location:t,secondary_location:n,trigger:e})}detachInstance({trigger:t,location:n,secondaryLocation:o}){const r=this.getComponentId(),i=this.model.get("id");if(!r||!i)return;const handleConfirm=async()=>{try{await detachComponentInstance({instanceId:i,componentId:r,trackingInfo:{location:n,secondaryLocation:o,trigger:t}})}catch{(0,zn.notify)({type:"error",message:(0,jn.__)("Failed to detach component instance.","elementor"),id:"detach-component-instance-failed"})}};e.showDetachConfirmDialog?.(handleConfirm)}handleDblClick(e){if(e.stopPropagation(),!isUserAdministrator())return;if(isProOutdatedForComponents())return void notifyComponentEditUpdate();if(!(0,Mn.hasProInstalled)())return void function notifyComponentEditUpgrade(){(0,zn.notify)({type:"promotion",id:Yn,message:(0,jn.__)("Editing components requires an active Pro subscription.","elementor"),autoHideDuration:Qn,additionalActionProps:[{size:"small",variant:"contained",color:"promotion",href:Hn,target:"_blank",children:(0,jn.__)("Upgrade Now","elementor")}]})}();const{triggers:t,locations:n,secondaryLocations:o}=this.eventsManagerConfig;this.editComponent({trigger:t.doubleClick,location:n.canvas,secondaryLocation:o.canvasElement})}events(){return{...super.events(),dblclick:this.handleDblClick}}attributes(){return{...super.attributes(),"data-elementor-id":this.getComponentId()}}}}({...e});return class extends t{getType(){return e.type}getView(){return n}getModel(){return function createComponentModel(){const e=window,t=e.elementor.modules.elements.types.Widget,n=new t,o=n.getModel();return o.extend({initialize(e,t){o.prototype.initialize.call(this,e,t);const n=this.get("settings")?.get("component_instance");if(n?.value){const e=n.value.component_id?.value;e&&"number"==typeof e&&this.set("componentId",e)}this.set("isGlobal",!0)},getTitle(){const e=this.get("editor_settings"),t=e?.title;if(t)return t;const n=e?.component_uid;if(n){const e=selectComponentByUid((0,Ln.__getState)(),n);if(e?.name)return e.name}return window.elementor.getElementData(this).title},getComponentId(){return this.get("componentId")||null},getComponentName(){return this.getTitle()},getComponentUid(){const e=this.get("editor_settings");return e?.component_uid||null}})}()}}}function setInactiveRecursively(e){const t=e.get("editSettings");t&&t.set("inactive",!0);const n=e.get("elements");n&&n.forEach(e=>{setInactiveRecursively(e)})}function isUserAdministrator(){const e=window;return e.elementor.config?.user?.is_administrator??!1}var Xn=n(97557),Zn=n(56384);function PopulateStore(){return(0,Xn.useEffect)(()=>{(0,Zn.__dispatch)(k())},[]),null}var eo=n(70975),to=n(24778),no=n(5527),oo=n(56384),ro=n(27723),io="e-component",ao={type:"default",message:(0,ro.__)("Can't add this component - components that contain each other can't be nested.","elementor"),id:"circular-component-nesting-blocked"};function wouldCreateCircularNesting(e){if(void 0===e)return!1;const t=(0,oo.__getState)(),n=$(t),o=F(t);return null!==n&&(e===n||o.some(t=>t.componentId===e))}function extractComponentIdFromElement(e){return e.widgetType!==io?null:e.settings?.component_instance?.value?.component_id?.value??null}function extractComponentIdsFromElements(e){const t=[];for(const n of e){const e=extractComponentIdFromElement(n);null!==e&&t.push(e),n.elements?.length&&t.push(...extractComponentIdsFromElements(n.elements))}return t}function blockCircularCreate(e){const t=function extractComponentIdFromModel(e){return e&&e.widgetType===io?e.settings?.component_instance?.value?.component_id?.value??null:null}(e.model);if(null===t)return!1;const n=wouldCreateCircularNesting(t);return n&&(0,to.notify)(ao),n}function blockCircularMove(e){const{containers:t=[e.container]}=e,n=t.some(e=>{if(!e)return!1;return(0,eo.getAllDescendants)(e).some(e=>{const t=function extractComponentIdFromContainer(e){const t=e.model?.get?.("widgetType");if(t!==io)return null;const n=e.model?.get?.("settings"),o=n?.get?.("component_instance");return o?.value?.component_id?.value??null}(e);return null!==t&&wouldCreateCircularNesting(t)})});return n&&(0,to.notify)(ao),n}function blockCircularPaste(e){const{storageType:t}=e;if("localstorage"!==t)return!1;const n=window?.elementorCommon?.storage?.get();if(!n?.clipboard?.elements)return!1;const o=extractComponentIdsFromElements(n.clipboard.elements).some(wouldCreateCircularNesting);return o&&(0,to.notify)(ao),o}var so=n(46280),lo=n(24778),co=n(18998),po=n(27723),mo="insufficient_permissions",uo="https://go.elementor.com/go-pro-components-Instance-draft-failure/",go="component-publish-upgrade";async function publishDraftComponentsInPageBeforeSave({status:e,elements:t}){if("publish"!==e)return;const n=[...(await getComponentDocuments({elements:t})).values()].filter(so.isDocumentDirty).map(e=>e.id);if(0!==n.length){try{await O.updateStatuses(n,"publish")}catch(e){if(function isInsufficientPermissionsError(e){return e instanceof co.AxiosError&&e.response?.data?.code===mo}(e))return void function notifyPublishUpgrade(){(0,lo.notify)({type:"promotion",id:go,message:(0,po.__)("You have unpublished component on this page. You need a pro version to publish it.","elementor"),additionalActionProps:[{size:"small",variant:"contained",color:"promotion",href:uo,target:"_blank",children:(0,po.__)("Upgrade Now","elementor")}]})}();throw e}n.forEach(e=>(0,so.invalidateDocumentData)(e))}}var beforeSave=({container:e,status:t})=>publishDraftComponentsInPageBeforeSave({elements:e?.model.get("elements").toJSON?.()??[],status:t}),vo=n(5527);function load(e){loadComponentsAssets((Array.isArray(e)?e:[e]).map(e=>e.model.toJSON()))}function init(){(0,y.__registerSlice)(A),(0,m.registerElementType)(Wn,e=>createComponentType({...e,showLockedByModal:openEditModeDialog,showDetachConfirmDialog:openDetachConfirmDialog})),window.elementorCommon.__beforeSave=beforeSave,(0,v.injectTab)({id:"components",label:(0,C.__)("Components","elementor"),component:Components,position:1}),(0,p.injectIntoLogic)({id:"components-populate-store",component:PopulateStore}),(0,h.registerDataHook)("after","editor/documents/attach-preview",()=>{const{id:e,config:t}=(0,u.getV1CurrentDocument)()??{};e&&(!function removeComponentStyles(e){O.invalidateComponentConfigCache(e)}(e),loadComponentsAssets(t?.elements??[]))}),f.embeddedDocumentsManager.onDocumentLoad((e,t)=>{loadComponentsAssets(t.elements??[])}),(0,p.injectIntoLogic)({id:"templates",component:LoadTemplateComponents}),(0,g.registerEditingPanelReplacement)({id:"component-instance-edit-panel",condition:(e,t)=>"e-component"===t.key,component:InstanceEditingPanel}),m.settingsTransformersRegistry.register("component-instance",H),m.settingsTransformersRegistry.register("overridable",q),m.settingsTransformersRegistry.register("override",Y),function initCircularNestingPrevention(){(0,no.blockCommand)({command:"document/elements/create",condition:blockCircularCreate}),(0,no.blockCommand)({command:"document/elements/move",condition:blockCircularMove}),(0,no.blockCommand)({command:"document/elements/paste",condition:blockCircularPaste})}(),function initLoadComponentDataAfterInstanceAdded(){(0,vo.registerDataHook)("after","document/elements/paste",(e,t)=>{load(t)}),(0,vo.registerDataHook)("after","document/elements/import",(e,t)=>{load(t)})}()}},18998:function(e){e.exports=window.elementorV2.httpClient},22444:function(e){e.exports=window.elementorV2.utils},22504:function(e){e.exports=window.elementorV2.editor},24413:function(e){e.exports=window.elementorV2.icons},24778:function(e){e.exports=window.elementorV2.editorNotifications},27723:function(e){e.exports=window.wp.i18n},33176:function(e){e.exports=window.elementorV2.events},44267:function(e){e.exports=window.elementorV2.editorTemplates},46280:function(e){e.exports=window.elementorV2.editorDocuments},46400:function(e){e.exports=window.elementorV2.editorCurrentUser},51061:function(e){e.exports=window.elementorV2.editorPanels},51485:function(e){e.exports=window.elementorV2.editorElementsPanel},56384:function(e){e.exports=window.elementorV2.store},59618:function(e){e.exports=window.elementorV2.schema},64301:function(e){e.exports=window.elementorV2.editorEmbeddedDocumentsManager},70374:function(e){e.exports=window.elementorV2.editorUi},70975:function(e){e.exports=window.elementorV2.editorElements},77394:function(e){e.exports=window.elementorV2.editorControls},78098:function(e){e.exports=window.elementorV2.editorEditingPanel},79513:function(e){e.exports=window.elementorV2.ui},82148:function(e){e.exports=window.elementorV2.editorCanvas},97557:function(e){e.exports=window.React}},t={};var n=function __webpack_require__(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,__webpack_require__),r.exports}(6125);(window.elementorV2=window.elementorV2||{}).editorComponents=n}(),window.elementorV2.editorComponents?.init?.();
1 +!function(){"use strict";var e={d:function(t,n){for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{init:function(){return bo}});var n=window.elementorV2.editor,o=window.elementorV2.editorCanvas,r=window.elementorV2.editorDocuments,i=window.elementorV2.editorEditingPanel,a=window.elementorV2.editorElementsPanel,s=window.elementorV2.editorPanels,l=window.elementorV2.editorStylesRepository,c=window.elementorV2.editorV1Adapters,p=window.elementorV2.store,d=window.wp.i18n,m=window.elementorV2.httpClient;const u="elementor/v1/components",g=e=>({action:"get_document_config",unique_id:`document-config-${e}`,data:{id:e}}),f={get:()=>(0,m.httpService)().get(`${u}`).then(e=>e.data.data),create:e=>(0,m.httpService)().post(`${u}`,e).then(e=>e.data.data),updateStatuses:(e,t)=>(0,m.httpService)().put(`${u}/status`,{ids:e,status:t}),getComponentConfig:e=>c.ajax.load(g(e)),invalidateComponentConfigCache:e=>c.ajax.invalidateCache(g(e)),getComponentLockStatus:async e=>await(0,m.httpService)().get(`${u}/lock-status`,{params:{componentId:e}}).then(e=>{const{is_current_user_allow_to_edit:t,locked_by:n}=e.data.data;return{isAllowedToSwitchDocument:t,lockedBy:n||""}}),lockComponent:async e=>await(0,m.httpService)().post(`${u}/lock`,{componentId:e}).then(e=>e.data),unlockComponent:async e=>await(0,m.httpService)().post(`${u}/unlock`,{componentId:e}).then(e=>e.data),getOverridableProps:async e=>await(0,m.httpService)().get(`${u}/overridable-props`,{params:{componentId:e.toString()}}).then(e=>e.data.data),updateArchivedComponents:async(e,t)=>await(0,m.httpService)().post(`${u}/archive`,{componentIds:e,status:t}).then(e=>e.data.data),updateComponentTitle:(e,t)=>(0,m.httpService)().post(`${u}/update-titles`,{components:e,status:t}).then(e=>e.data.data),validate:async e=>await(0,m.httpService)().post(`${u}/create-validate`,e).then(e=>e.data)},h=(0,p.__createAsyncThunk)("components/load",async()=>await f.get()),y="components",v=(0,p.__createSlice)({name:y,initialState:{data:[],unpublishedData:[],loadStatus:"idle",styles:{},createdThisSession:[],archivedThisSession:[],path:[],currentComponentId:null,updatedComponentNames:{}},reducers:{add:(e,{payload:t})=>{Array.isArray(t)?e.data=[...t,...e.data]:e.data.unshift(t)},load:(e,{payload:t})=>{e.data=t},addUnpublished:(e,{payload:t})=>{e.unpublishedData.unshift(t)},removeUnpublished:(e,{payload:t})=>{const n=Array.isArray(t)?t:[t];e.unpublishedData=e.unpublishedData.filter(e=>!n.includes(e.uid))},resetUnpublished:e=>{e.unpublishedData=[]},removeStyles(e,{payload:t}){const{[t.id]:n,...o}=e.styles;e.styles=o},addStyles:(e,{payload:t})=>{e.styles={...e.styles,...t}},addCreatedThisSession:(e,{payload:t})=>{e.createdThisSession.push(t)},removeCreatedThisSession:(e,{payload:t})=>{e.createdThisSession=e.createdThisSession.filter(e=>e!==t)},archive:(e,{payload:t})=>{const n=e.data.find(e=>e.id===t);n&&(n.isArchived=!0,e.archivedThisSession.push(t))},setCurrentComponentId:(e,{payload:t})=>{e.currentComponentId=t},setPath:(e,{payload:t})=>{e.path=t},setOverridableProps:(e,{payload:t})=>{const n=e.data.find(e=>e.id===t.componentId);n&&(n.overridableProps=t.overridableProps)},rename:(e,{payload:t})=>{const n=e.data.find(e=>e.uid===t.componentUid);n&&(n.id&&(e.updatedComponentNames[n.id]=t.name),n.name=t.name)},cleanUpdatedComponentNames:e=>{e.updatedComponentNames={}}},extraReducers:e=>{e.addCase(h.fulfilled,(e,{payload:t})=>{e.data=t,e.loadStatus="idle"}),e.addCase(h.pending,e=>{e.loadStatus="pending"}),e.addCase(h.rejected,e=>{e.loadStatus="error"})}}),_=e=>e[y].data,b=e=>e[y].loadStatus,E=e=>e[y].unpublishedData,w=e=>e[y].currentComponentId,C=(e,t)=>e[y].data.find(e=>e.id===t),x=e=>(0,p.__useSelector)(t=>e?C(t,e):null),S=(e,t)=>e[y].data.find(e=>e.uid===t)??e[y].unpublishedData.find(e=>e.uid===t),I=(0,p.__createSelector)(_,E,(e,t)=>[...t.map(e=>({uid:e.uid,name:e.name,overridableProps:e.overridableProps})),...e.filter(e=>!e.isArchived)]),T=(0,p.__createSelector)(E,e=>e),P=(0,p.__createSelector)(b,e=>"pending"===e),k=((0,p.__createSelector)(b,e=>"error"===e),e=>e[y].styles??{}),D=(0,p.__createSelector)(e=>e[y].styles??{},e=>Object.values(e).flat()),O=(0,p.__createSelector)(e=>e[y].createdThisSession,e=>e),M={props:{},groups:{items:{},order:[]}},R=(0,p.__createSelector)(C,e=>{if(e)return e.overridableProps??M}),L=e=>(0,p.__useSelector)(t=>e?R(t,e):null),z=(0,p.__createSelector)(C,e=>!!e?.overridableProps),V=(0,p.__createSelector)(e=>e[y].path,e=>e),j=(0,p.__createSelector)(w,e=>e),A=(0,p.__createSelector)(_,w,(e,t)=>e.find(e=>e.id===t)),$=()=>(0,p.__useSelector)(j),B=(0,p.__createSelector)(e=>e[y].updatedComponentNames,e=>Object.entries(e).map(([e,t])=>({componentId:Number(e),title:t}))),U=async e=>{const t=(0,r.getV1DocumentsManager)();try{return await t.request(e)}catch{return null}},N=(0,o.createTransformer)(async({component_id:e,overrides:t})=>{const n=T((0,p.__getState)()).find(({uid:t})=>t===e),o=t?.reduce((e,t)=>({...e,...t}),{});if(n)return{elements:structuredClone(n.elements),overrides:o};if("number"!=typeof e)throw new Error(`Component ID "${e}" not valid.`);const r=await U(e);return{elements:r?.elements??[],overrides:o}}),K=(0,o.createTransformer)((e,t)=>{const{overrides:n}=t.renderContext??{},r=n?.[e.override_key];return r?"override"===e.origin_value.$$type?function(e,t,n){const r=o.settingsTransformersRegistry.get("override");if(!r)return null;const i=r(e.origin_value.value,t);if(!i)return null;const[a]=Object.keys(i);return{[a]:n}}(e,t,r):r:e.origin_value}),F=(0,o.createTransformer)(e=>{const{override_key:t,override_value:n}=e;return{[t]:n}});var W=window.React,G=window.elementorV2.editorCurrentUser,H=window.elementorV2.editorUi,q=window.elementorV2.icons,Y=window.elementorV2.ui,J=window.elementorV2.editorElements;async function X(e,t,n){const o=function(e,t){return e?function(e){const t=[];let n=e.closest("[data-id]");for(;n;){const e=n.dataset.id;n.hasAttribute("data-elementor-id")&&t.unshift(`[data-id="${e}"]`),n=n.parentElement?.closest("[data-id]")??null}if(0===t.length){const t=e.closest("[data-id]");if(t?.dataset?.id)return`[data-id="${t.dataset.id}"]`}return t.join(" ")}(e):t?`[data-id="${t}"]`:void 0}(n,t);(0,r.invalidateDocumentData)(e),await(0,r.switchToDocument)(e,{selector:o,mode:"autosave",setAsInitial:!1,shouldScroll:!1});const i=(0,J.getCurrentDocumentContainer)(),a=i?.children?.[0];a&&((0,J.selectElement)(a.id),async function(){await(0,c.__privateRunCommand)("navigator/expand-all")}())}function Z(){const e=(0,p.__useSelector)(V),t=(0,r.getV1DocumentsManager)();return(0,W.useCallback)(()=>{const{componentId:n,instanceId:o}=e.at(-2)??{};n&&o?X(n,o):X(t.getInitialId())},[e,t])}var Q=window.elementorV2.mixpanel;const ee=({action:e,source:t,...n})=>{const{dispatchEvent:o,config:r}=(0,Q.getMixpanel)();if(!r?.names?.components?.[e])return;const i=r.names.components[e];o?.(i,{...n,source:t,"Feature name":"Components"})},te=(e,t)=>{if("e-component"!==t?.model?.get("widgetType"))return;const n=t.model.get("editor_settings"),o=n?.title,r=n?.component_uid,i=t.id,a=O((0,p.__getState)()),s=r&&a.includes(r),l=window.elementorCommon.eventsManager.config,{locations:c,secondaryLocations:d}=l;ee({action:"instanceAdded",source:"user",instance_id:i,component_uid:r,component_name:o,is_same_session_reuse:s,location:c.widgetPanel,secondary_location:d.componentsTab})};var ne=window.elementorV2.utils;function oe(e,t){return{...e,items:Object.fromEntries(Object.entries(e.items).map(([e,n])=>[e,{...n,props:n.props.filter(e=>e!==t)}]))}}function re(e,t,n){const o=e.items[t];return o?o.props.includes(n)?e:{...e,items:{...e.items,[t]:{...o,props:[...o.props,n]}}}:e}function ie(e,t,n){const o=e.items[t];return o?{...e,items:{...e.items,[t]:{...o,props:o.props.filter(e=>e!==n)}}}:e}const ae="e-component",se=(e,t)=>{const n=new Map(Object.entries(t.disable??{})),o=new Map(Object.entries(t.add??{}));return e.map(e=>{const t=n.get(e.name)??[],r=o.get(e.name),i=e.actions.map(e=>t.includes(e.name)?{...e,isEnabled:()=>!1}:e);return r&&i.splice(r.index,0,r.action),{...e,actions:i}})};function le(e){const t=e.get("editSettings");t&&t.set("inactive",!0);const n=e.get("elements");n&&n.forEach(e=>{le(e)})}function ce(){const e=window;return e.elementor.config?.user?.is_administrator??!1}var pe=window.elementorV2.editorProps,de=window.elementorV2.schema;const me=(0,pe.createPropUtils)("override",de.z.object({override_key:de.z.string(),override_value:de.z.unknown(),schema_source:de.z.object({type:de.z.literal("component"),id:de.z.number()})})),ue=(0,pe.createPropUtils)("overridable",de.z.object({override_key:de.z.string(),origin_value:de.z.object({$$type:de.z.string(),value:de.z.unknown()}).nullable()})),ge=(0,pe.createPropUtils)("overrides",de.z.array(de.z.union([me.schema,ue.schema])).optional().default([])),fe=(0,pe.createPropUtils)("component-instance",de.z.object({component_id:pe.numberPropTypeUtil.schema,overrides:de.z.optional(ge.schema)}));function he(e){return[e.widgetType,e.elType].includes(ae)}function ye(e,t){return e.map(e=>ue.isValid(e)?me.isValid(e.value.origin_value)?t&&e.value.override_key!==t?e:e.value.origin_value:null:e).filter(e=>null!==e)}function ve(e){let t=!1;const n={};for(const[o,r]of Object.entries(e))ue.isValid(r)?(n[o]=r.value.origin_value,t=!0):n[o]=r;return{hasChanges:t,settings:n}}function _e(e){const t={...e};if(he({widgetType:e.widgetType,elType:e.elType}))t.settings=function(e){if(!e?.component_instance)return e;const t=fe.extract(e.component_instance),n=ge.extract(t?.overrides);if(!n?.length)return e;const o=ye(n);return{...e,component_instance:fe.create({...t,overrides:ge.create(o)})}}(e.settings);else if(t.settings){const{settings:e}=ve(t.settings);t.settings=e}return t.elements&&(t.elements=t.elements.map(_e)),t}function be(e){return(0,p.__useSelector)(t=>{if(e)return R(t,e)})}var Ee=window.elementorV2.editorControls;const we=({anchorRef:e,shouldShowIntroduction:t,onClose:n})=>e.current&&t?W.createElement(Y.Popover,{anchorEl:e.current,open:t,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:-30},onClose:n},W.createElement(Y.Box,{sx:{width:"296px"}},W.createElement(H.PopoverHeader,{title:(0,d.__)("Add your first property","elementor"),onClose:n}),W.createElement(Y.Image,{sx:{width:"296px",height:"160px"},src:"https://assets.elementor.com/packages/v1/images/components-properties-intro.png",alt:""}),W.createElement(Ee.PopoverContent,null,W.createElement(Y.Stack,{sx:{p:2}},W.createElement(Y.Typography,{variant:"body2"},(0,d.__)("Properties make instances flexible.","elementor")),W.createElement(Y.Typography,{variant:"body2"},(0,d.__)("Select any Element, then in the General tab, click next to any setting you want users to customize - like text, images, or links.","elementor")),W.createElement(Y.Typography,{variant:"body2",sx:{mt:2}},(0,d.__)("Your properties will appear in the Properties panel, where you can organize and manage them anytime.","elementor")),W.createElement(Y.Link,{href:"http://go.elementor.com/components-guide",target:"_blank",sx:{mt:2},color:"info.main",variant:"body2"},(0,d.__)("Learn more","elementor")),W.createElement(Y.Stack,{direction:"row",alignItems:"center",justifyContent:"flex-end",sx:{pt:1}},W.createElement(Y.Button,{size:"medium",variant:"contained",onClick:n},(0,d.__)("Got it","elementor"))))))):null;function Ce({introductionRef:e}){const[t,n]=(0,W.useState)(!1);return W.createElement(W.Fragment,null,W.createElement(Y.Stack,{alignItems:"center",justifyContent:"flex-start",height:"100%",color:"text.secondary",sx:{px:2.5,pt:10,pb:5.5},gap:1},W.createElement(q.ComponentPropListIcon,{fontSize:"large"}),W.createElement(Y.Typography,{align:"center",variant:"subtitle2"},(0,d.__)("Add your first property","elementor")),W.createElement(Y.Typography,{align:"center",variant:"caption"},(0,d.__)("Make instances flexible while keeping design synced.","elementor")),W.createElement(Y.Typography,{align:"center",variant:"caption"},(0,d.__)("Select any element, then click + next to a setting to expose it.","elementor")),W.createElement(Y.Link,{variant:"caption",color:"secondary",sx:{textDecorationLine:"underline"},onClick:()=>n(!0)},(0,d.__)("Learn more","elementor"))),W.createElement(we,{anchorRef:e,shouldShowIntroduction:t,onClose:()=>n(!1)}))}const xe={EMPTY_NAME:(0,d.__)("Property name is required","elementor"),DUPLICATE_NAME:(0,d.__)("Property name already exists","elementor")};function Se(e,t,n){const o=e.trim();if(!o)return{isValid:!1,errorMessage:xe.EMPTY_NAME};const r=o.toLowerCase(),i=n?.trim().toLowerCase();return t.some(e=>{const t=e.trim().toLowerCase();return(!i||t!==i)&&t===r})?{isValid:!1,errorMessage:xe.DUPLICATE_NAME}:{isValid:!0,errorMessage:null}}function Ie(){return Ie=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Ie.apply(null,arguments)}const Te="tiny",Pe={value:null,label:(0,d.__)("Default","elementor")};function ke({onSubmit:e,groups:t,currentValue:n,existingLabels:o=[],sx:r}){const i=t?.length?t:[Pe],[a,s]=(0,W.useState)(n?.label??null),[l,c]=(0,W.useState)(n?.groupId??i[0]?.value??null),[p,m]=(0,W.useState)(null),u=(0,d.__)("Name","elementor"),g=(0,d.__)("Group Name","elementor"),f=void 0===n,h=f?(0,d.__)("Create new property","elementor"):(0,d.__)("Update property","elementor"),y=f?(0,d.__)("Create","elementor"):(0,d.__)("Update","elementor");return W.createElement(H.Form,{onSubmit:()=>{const t=Se(a??"",o,n?.label);t.isValid?e({label:a??"",group:l}):m(t.errorMessage)}},W.createElement(Y.Stack,{alignItems:"start",sx:{width:"268px",...r}},W.createElement(Y.Stack,{direction:"row",alignItems:"center",py:1,px:1.5,sx:{columnGap:.5,borderBottom:"1px solid",borderColor:"divider",width:"100%",mb:1.5}},W.createElement(Y.Typography,{variant:"caption",sx:{color:"text.primary",fontWeight:"500",lineHeight:1}},h)),W.createElement(Y.Grid,{container:!0,gap:.75,alignItems:"start",px:1.5,mb:1.5},W.createElement(Y.Grid,{item:!0,xs:12},W.createElement(Y.FormLabel,{size:"tiny"},u)),W.createElement(Y.Grid,{item:!0,xs:12},W.createElement(Y.TextField,{name:u,size:Te,fullWidth:!0,placeholder:(0,d.__)("Enter value","elementor"),value:a??"",onChange:e=>{const t=e.target.value;s(t);const r=Se(t,o,n?.label);m(r.errorMessage)},error:Boolean(p),helperText:p}))),W.createElement(Y.Grid,{container:!0,gap:.75,alignItems:"start",px:1.5,mb:1.5},W.createElement(Y.Grid,{item:!0,xs:12},W.createElement(Y.FormLabel,{size:"tiny"},g)),W.createElement(Y.Grid,{item:!0,xs:12},W.createElement(Y.Select,{name:g,size:Te,fullWidth:!0,value:l??null,onChange:e=>c(e.target.value),displayEmpty:!0,renderValue:e=>e?i.find(({value:t})=>t===e)?.label??e:i[0].label},i.map(({label:e,...t})=>W.createElement(H.MenuListItem,Ie({key:t.value},t,{value:t.value??""}),e))))),W.createElement(Y.Stack,{direction:"row",justifyContent:"flex-end",alignSelf:"end",mt:1.5,py:1,px:1.5},W.createElement(Y.Button,{type:"submit",disabled:!a||Boolean(p),variant:"contained",color:"primary",size:"small"},y))))}function De(){return De=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},De.apply(null,arguments)}const Oe=e=>W.createElement(Y.UnstableSortableProvider,De({restrictAxis:!0,variant:"static",dragPlaceholderStyle:{opacity:"1"}},e)),Me=({triggerClassName:e,...t})=>W.createElement(Le,De({},t,{role:"button",className:`sortable-trigger ${e??""}`.trim(),"aria-label":"sort"}),W.createElement(q.GripVerticalIcon,{fontSize:"tiny"})),Re=({children:e,id:t})=>W.createElement(Y.UnstableSortableItem,{id:t,render:({itemProps:t,isDragged:n,triggerProps:o,itemStyle:r,triggerStyle:i,dropIndicationStyle:a,showDropIndication:s,isDragOverlay:l,isDragPlaceholder:c})=>W.createElement(Y.Box,De({},t,{style:r,component:"div",role:"listitem",sx:{backgroundColor:l?"background.paper":void 0}}),e({isDragged:n,isDragPlaceholder:c,triggerProps:o,triggerStyle:i}),s&&W.createElement(ze,{style:a}))}),Le=(0,Y.styled)("div")(({theme:e})=>({position:"absolute",left:"-2px",top:"50%",transform:`translate( -${e.spacing(1.5)}, -50% )`,color:e.palette.action.active,cursor:"grab"})),ze=(0,Y.styled)(Y.Box)`
2 + width: 100%;
3 + height: 1px;
4 + background-color: ${({theme:e})=>e.palette.text.primary};
5 +`;function Ve(){return Ve=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Ve.apply(null,arguments)}function je({prop:e,sortableTriggerProps:t,isDragPlaceholder:n,groups:o,existingLabels:r,onDelete:i,onUpdate:a}){const s=(0,Y.usePopupState)({variant:"popover"}),l=function(e){const t="widget"===e.elType?e.widgetType:e.elType,n=(0,J.getWidgetsCache)();if(!n)return"eicon-apps";const o=n[t];return o?.icon||"eicon-apps"}(e),c=(0,Y.bindPopover)(s);return W.createElement(W.Fragment,null,W.createElement(Y.Box,Ve({},(0,Y.bindTrigger)(s),{sx:{position:"relative",pl:.5,pr:1,py:.25,minHeight:28,borderRadius:1,border:"1px solid",borderColor:"divider",display:"flex",alignItems:"center",gap:.5,opacity:n?.5:1,cursor:"pointer","&:hover":{backgroundColor:"action.hover"},"&:hover .sortable-trigger":{visibility:"visible"},"& .sortable-trigger":{visibility:"hidden"},"&:hover .delete-button":{visibility:"visible"},"& .delete-button":{visibility:"hidden"}}}),W.createElement(Me,t),W.createElement(Y.Box,{sx:{display:"flex",alignItems:"center",color:"text.primary",fontSize:12,padding:.25}},W.createElement("i",{className:l})),W.createElement(Y.Typography,{variant:"caption",sx:{color:"text.primary",flexGrow:1,fontSize:10}},e.label),W.createElement(Y.IconButton,{size:"tiny",onClick:t=>{t.stopPropagation(),i(e.overrideKey)},"aria-label":"Delete property",sx:{p:.25}},W.createElement(q.XIcon,{fontSize:"tiny"}))),W.createElement(Y.Popover,Ve({},c,{anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},PaperProps:{sx:{width:s.anchorEl?.getBoundingClientRect().width}}}),W.createElement(ke,{onSubmit:e=>{a(e),s.close()},currentValue:e,groups:o,existingLabels:r,sx:{width:"100%"}})))}function Ae(){return Ae=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Ae.apply(null,arguments)}function $e({group:e,props:t,allGroups:n,sortableTriggerProps:o,isDragPlaceholder:r,onPropsReorder:i,onPropertyDelete:a,onPropertyUpdate:s,onGroupDelete:l,editableLabelProps:c}){const p=e.props.map(e=>t[e]).filter(e=>Boolean(e)),m=(0,Y.usePopupState)({variant:"popover",disableAutoFocus:!0}),{editableRef:u,isEditing:g,error:f,getEditableProps:h,setEditingGroupId:y,editingGroupId:v}=c,_=e.props.length>0,b=g&&v===e.id;return W.createElement(Y.Box,{sx:{opacity:r?.5:1}},W.createElement(Y.Stack,{gap:1},W.createElement(Y.Box,{className:"group-header",sx:{position:"relative","&:hover .group-sortable-trigger":{visibility:"visible"},"& .group-sortable-trigger":{visibility:"hidden"},"&:hover .group-menu":{visibility:"visible"},"& .group-menu":{visibility:"hidden"}}},W.createElement(Me,Ae({triggerClassName:"group-sortable-trigger"},o)),W.createElement(Y.Stack,{direction:"row",alignItems:"center",justifyContent:"space-between",gap:2},b?W.createElement(Y.Box,{sx:{height:28,display:"flex",alignItems:"center",border:2,borderColor:"text.secondary",borderRadius:1,pl:.5,flexGrow:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",width:"100%"}},W.createElement(H.EditableField,Ae({ref:u,as:Y.Typography,variant:"caption",error:f??void 0,sx:{color:"text.primary",fontWeight:400,lineHeight:1.66}},h()))):W.createElement(H.EllipsisWithTooltip,{title:e.label,as:Y.Typography,variant:"caption",sx:{color:"text.primary",fontWeight:400,lineHeight:1.66}}),W.createElement(Y.IconButton,Ae({className:"group-menu",size:"tiny",sx:{p:.25,visibility:b?"visible":void 0},"aria-label":(0,d.__)("Group actions","elementor")},(0,Y.bindTrigger)(m)),W.createElement(q.DotsVerticalIcon,{fontSize:"tiny"})))),W.createElement(Y.List,{sx:{p:0,display:"flex",flexDirection:"column",gap:1}},W.createElement(Oe,{value:e.props,onChange:i},p.map(e=>W.createElement(Re,{key:e.overrideKey,id:e.overrideKey},({triggerProps:o,triggerStyle:r,isDragPlaceholder:i})=>W.createElement(je,{prop:e,sortableTriggerProps:{...o,style:r},isDragPlaceholder:i,groups:n,existingLabels:Object.values(t).map(e=>e.label),onDelete:a,onUpdate:t=>s(e.overrideKey,t)})))))),W.createElement(Y.Menu,Ae({},(0,Y.bindMenu)(m),{anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}}),W.createElement(H.MenuListItem,{sx:{minWidth:"160px"},onClick:()=>{m.close(),y(e.id)}},W.createElement(Y.Typography,{variant:"caption",sx:{color:"text.primary"}},(0,d.__)("Rename","elementor"))),W.createElement(Y.Tooltip,{title:_?(0,d.__)("To delete the group, first remove all the properties","elementor"):"",placement:"right"},W.createElement("span",null,W.createElement(H.MenuListItem,{onClick:()=>{m.close(),l(e.id)},disabled:_},W.createElement(Y.Typography,{variant:"caption",sx:{color:_?"text.disabled":"error.light"}},(0,d.__)("Delete","elementor")))))))}const Be={EMPTY_NAME:(0,d.__)("Group name is required","elementor"),DUPLICATE_NAME:(0,d.__)("Group name already exists","elementor")};const Ue="New group";function Ne({onClose:e}){const t=$(),n=be(t),[o,i]=(0,W.useState)(!1),a=(0,W.useRef)(null),l=function(){const[e,t]=(0,W.useState)(null),n=$(),o=be(n),i=o?.groups?.items??{},a=e?i[e]:null,{ref:s,openEditMode:l,isEditing:c,error:m,getProps:u}=(0,H.useEditable)({value:a?.label??"",onSubmit:t=>{if(!e||!n)throw new Error((0,d.__)("Group ID or component ID is missing","elementor"));!function({componentId:e,groupId:t,label:n}){const o=R((0,p.__getState)(),e);if(!o)return!1;if(!o.groups.items[t])return!1;const r=function(e,t,n){const o=e.items[t];return o?{...e,items:{...e.items,[t]:{...o,label:n}}}:e}(o.groups,t,n);(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:{...o,groups:r}}))}({componentId:n,groupId:e,label:t}),(0,r.setDocumentModifiedStatus)(!0)},validation:t=>function(e,t){const n=e.trim();return n?Object.values(t).some(e=>e.label===n)?Be.DUPLICATE_NAME:"":Be.EMPTY_NAME}(t,Object.fromEntries(Object.entries(i).filter(([t])=>t!==e)))||null});return{editableRef:s,isEditing:c,error:m,getEditableProps:u,setEditingGroupId:e=>{t(e),l()},editingGroupId:e}}(),c=(0,W.useMemo)(()=>n?n.groups.order.map(e=>n.groups.items[e]??null).filter(Boolean):[],[n]),m=(0,W.useMemo)(()=>c.map(e=>({value:e.id,label:e.label})),[c]);if(!t||!n)return null;const u=!(c.length>0||o),g=n.groups.order,f=e=>{!function({componentId:e,propKey:t,source:n}){const o=R((0,p.__getState)(),e);if(!o)return;const r=o.props[t];if(!r)return;!function(e,t,n,o){const r=(0,J.getContainer)(e);r&&(he(r.model.toJSON())?function(e,t){const n=(0,J.getElementSetting)(e,"component_instance"),o=fe.extract(n),r=ge.extract(o?.overrides);if(!r?.length)return;const i=ye(r,t),a=fe.create({...o,overrides:ge.create(i)});(0,J.updateElementSettings)({id:e,props:{component_instance:a},withHistory:!1})}(e,o):(0,J.updateElementSettings)({id:e,props:{[t]:n??null},withHistory:!1}))}(r.elementId,r.propKey,r.originValue,t);const{[t]:i,...a}=o.props,s=oe(o.groups,t);(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:{...o,props:a,groups:s}}));const l=A((0,p.__getState)());ee({action:"propertyRemoved",source:n,component_uid:l?.uid,property_id:i.overrideKey,property_path:i.propKey,property_name:i.label,element_type:i.widgetType??i.elType})}({componentId:t,propKey:e,source:"user"}),(0,r.setDocumentModifiedStatus)(!0)},h=(e,n)=>{(function({componentId:e,overrideKey:t,label:n,groupId:o}){const r=R((0,p.__getState)(),e);if(!r)return;const i=r.props[t];if(!i)return;const a=i.groupId,s=o??a,l={...i,label:n,groupId:s},c=(d=r.groups,m=t,(u=a)===(g=s)?d:re(ie(d,u,m),g,m));var d,m,u,g;(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:{...r,props:{...r.props,[t]:l},groups:c}}))})({componentId:t,overrideKey:e,label:n.label,groupId:n.group}),(0,r.setDocumentModifiedStatus)(!0)},y=e=>{!function({componentId:e,groupId:t}){const n=R((0,p.__getState)(),e);if(!n)return!1;const o=n.groups.items[t];if(!o||o.props.length>0)return!1;const r=function(e,t){const{[t]:n,...o}=e.items;return{items:o,order:e.order.filter(e=>e!==t)}}(n.groups,t);(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:{...n,groups:r}}))}({componentId:t,groupId:e}),(0,r.setDocumentModifiedStatus)(!0)};return W.createElement(W.Fragment,null,W.createElement(s.PanelHeader,{sx:{justifyContent:"start",pl:1.5,pr:1,py:1}},W.createElement(Y.Stack,{direction:"row",alignItems:"center",gap:.5,flexGrow:1},W.createElement(q.ComponentPropListIcon,{fontSize:"tiny"}),W.createElement(s.PanelHeaderTitle,{variant:"subtitle2"},(0,d.__)("Component properties","elementor"))),!u&&W.createElement(Y.Tooltip,{title:(0,d.__)("Add new group","elementor")},W.createElement(Y.IconButton,{size:"tiny","aria-label":(0,d.__)("Add new group","elementor"),onClick:()=>{if(o)return;const e=(0,ne.generateUniqueId)("group"),n=function(e){const t=new Set(e.map(e=>e.label));if(!t.has(Ue))return Ue;let n=1,o=`${Ue}-${n}`;for(;t.has(o);)n++,o=`${Ue}-${n}`;return o}(c);!function({componentId:e,groupId:t,label:n,source:o}){const r=A((0,p.__getState)()),i=R((0,p.__getState)(),e);if(!i)return;const a={id:t,label:n,props:[]};(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:{...i,groups:{...i.groups,items:{...i.groups.items,[t]:a},order:[t,...i.groups.order]}}})),ee({action:"propertiesGroupCreated",source:o,component_uid:r?.uid,group_name:n})}({componentId:t,groupId:e,label:n,source:"user"}),(0,r.setDocumentModifiedStatus)(!0),i(!1),l.setEditingGroupId(e)}},W.createElement(q.FolderPlusIcon,{fontSize:"tiny"}))),W.createElement(Y.Tooltip,{title:(0,d.__)("Close panel","elementor")},W.createElement(Y.IconButton,{ref:a,size:"tiny","aria-label":(0,d.__)("Close panel","elementor"),onClick:e},W.createElement(q.XIcon,{fontSize:"tiny"})))),W.createElement(Y.Divider,null),W.createElement(s.PanelBody,null,u?W.createElement(Ce,{introductionRef:a}):W.createElement(Y.List,{sx:{p:2,display:"flex",flexDirection:"column",gap:2}},W.createElement(Oe,{value:g,onChange:e=>{!function({componentId:e,newOrder:t}){const n=R((0,p.__getState)(),e);n&&(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:{...n,groups:{...n.groups,order:t}}}))}({componentId:t,newOrder:e}),(0,r.setDocumentModifiedStatus)(!0)}},c.map(e=>W.createElement(Re,{key:e.id,id:e.id},({triggerProps:o,triggerStyle:a,isDragPlaceholder:s})=>W.createElement($e,{group:e,props:n.props,allGroups:m,allGroupsRecord:n.groups.items,sortableTriggerProps:{...o,style:a},isDragPlaceholder:s,setIsAddingGroup:i,onPropsReorder:n=>{return o=e.id,function({componentId:e,groupId:t,newPropsOrder:n}){const o=R((0,p.__getState)(),e);if(!o)return;const r=o.groups.items[t];r&&(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:{...o,groups:{...o.groups,items:{...o.groups.items,[t]:{...r,props:n}}}}}))}({componentId:t,groupId:o,newPropsOrder:n}),void(0,r.setDocumentModifiedStatus)(!0);var o},onPropertyDelete:f,onPropertyUpdate:h,editableLabelProps:l,onGroupDelete:y})))))))}const{panel:Ke,usePanelActions:Fe}=(0,s.__createPanel)({id:"component-properties-panel",component:function(){const{element:e,elementType:t}=(0,J.useSelectedElement)(),{close:n}=Fe(),{open:o}=(0,i.usePanelActions)();return e&&t?W.createElement(H.ThemeProvider,null,W.createElement(Y.ErrorBoundary,{fallback:W.createElement(We,null)},W.createElement(i.ElementProvider,{element:e,elementType:t},W.createElement(s.Panel,null,W.createElement(Ne,{onClose:()=>{n(),o()}}))))):null}}),We=()=>W.createElement(Y.Box,{role:"alert",sx:{minHeight:"100%",p:2}},W.createElement(Y.Alert,{severity:"error",sx:{mb:2,maxWidth:400,textAlign:"center"}},W.createElement("strong",null,(0,d.__)("Something went wrong","elementor")))),Ge=W.forwardRef(({overridablePropsCount:e,onClick:t},n)=>{const o=function(e){const t=(0,W.useRef)(e);return(0,W.useEffect)(()=>{t.current=e},[e]),t.current}(e),r=0===o&&1===e;return W.createElement(He,{ref:n,color:"primary",key:e,invisible:0===e,animate:r,anchorOrigin:{vertical:"top",horizontal:"right"},badgeContent:W.createElement(Y.Box,{sx:{animation:r?"none":`${Ye} 300ms ease-out`}},e)},W.createElement(Y.Tooltip,{title:(0,d.__)("Component properties","elementor")},W.createElement(Y.ToggleButton,{value:"exposed properties",size:"tiny",onClick:t,"aria-label":(0,d.__)("Component properties","elementor")},W.createElement(q.ComponentPropListIcon,{fontSize:"tiny"}))))}),He=(0,Y.styled)(Y.Badge,{shouldForwardProp:e=>"animate"!==e})(({theme:e,animate:t})=>({"& .MuiBadge-badge":{minWidth:e.spacing(2),height:e.spacing(2),minHeight:e.spacing(2),maxWidth:e.spacing(2),fontSize:e.typography.caption.fontSize,animation:t?`${qe} 300ms ease-out`:"none"}})),qe=Y.keyframes`
6 + 0% { transform: scale(0) translate(50%, 50%); opacity: 0; }
7 + 70% { transform: scale(1.1) translate(50%, -50%); opacity: 1; }
8 + 100% { transform: scale(1) translate(50%, -50%); opacity: 1; }
9 +`,Ye=Y.keyframes`
10 + from { transform: translateY(100%); opacity: 0; }
11 + to { transform: translateY(0); opacity: 1; }
12 +`,Je=()=>{const{id:e,uid:t}=(0,p.__useSelector)(A)??{id:null,uid:null},n=be(e),o=Z(),i=function(){const e=(0,p.__getState)()[y].path,{instanceTitle:t}=e.at(-1)??{};if(t)return t;const n=(0,r.getV1DocumentsManager)().getCurrent();return n?.container?.settings?.get("post_title")??""}(),[a,l]=(0,G.useSuppressedMessage)("components-properties-introduction"),[c,m]=W.useState(!a),{open:u}=Fe(),g=n?Object.keys(n.props).length:0,f=W.useRef(null);return e?W.createElement(Y.Box,null,W.createElement(s.PanelHeader,{sx:{justifyContent:"start",px:2}},W.createElement(Y.Tooltip,{title:(0,d.__)("Back","elementor")},W.createElement(Y.IconButton,{size:"tiny",onClick:o,"aria-label":(0,d.__)("Back","elementor")},W.createElement(q.ArrowLeftIcon,{fontSize:"tiny"}))),W.createElement(q.ComponentsFilledIcon,{fontSize:"tiny",stroke:"currentColor"}),W.createElement(H.EllipsisWithTooltip,{title:i,as:Y.Typography,variant:"caption",sx:{fontWeight:500,flexGrow:1}}),W.createElement(Ge,{overridablePropsCount:g,ref:f,onClick:()=>{u(),ee({action:"propertiesPanelOpened",source:"user",component_uid:t,properties_count:g})}})),W.createElement(Y.Divider,null),W.createElement(we,{anchorRef:f,shouldShowIntroduction:c,onClose:()=>{l(),m(!1)}})):null},Xe=()=>({components:(0,p.__useSelector)(I),isLoading:(0,p.__useSelector)(P)}),Ze=(0,W.createContext)(void 0),Qe=({children:e,localStorageKey:t})=>{const{debouncedValue:n,handleChange:o,inputValue:r}=(0,ne.useSearchState)({localStorageKey:t});return W.createElement(Ze.Provider,{value:{handleChange:o,clearSearch:()=>{o("")},searchValue:n,inputValue:r}},e)},et=()=>{const e=(0,W.useContext)(Ze);if(!e)throw new Error("useSearch must be used within a SearchProvider");return e},tt=()=>{const{inputValue:e,handleChange:t}=et();return W.createElement(Y.Stack,{direction:"row",gap:.5,sx:{width:"100%",px:2,py:1.5}},W.createElement(Y.Box,{sx:{flexGrow:1}},W.createElement(Y.TextField,{role:"search",fullWidth:!0,size:"tiny",value:e,placeholder:(0,d.__)("Search","elementor"),onChange:e=>t(e.target.value),InputProps:{startAdornment:W.createElement(Y.InputAdornment,{position:"start"},W.createElement(q.SearchIcon,{fontSize:"tiny"}))}})))},nt=()=>{const{isAdmin:e}=(0,G.useCurrentUserCapabilities)();return{canCreate:e,canEdit:e,canDelete:e,canRename:e}};var ot=window.elementorV2.editorNotifications;async function rt(e,t=new Map){return async function(e,t){const n=await Promise.all(e.map(async e=>{const n=await t.get(e);return n?[e,n]:null}));return new Map(n.filter(e=>null!==e))}(await it(e,t),t)}async function it(e,t){const n=await Promise.all(e.map(async({widgetType:e,elType:n,elements:o,settings:r})=>{const i=[];if(he({widgetType:e,elType:n})){const e=r?.component_instance?.value?.component_id.value;if(!e)return i;i.push(e),t.has(e)||t.set(e,U(e));const n=await t.get(e);o=n?.elements}if(o?.length){const e=await it(o,t);i.push(...e)}return i}));return[...new Set(n.flat())]}async function at(e){if(z((0,p.__getState)(),e))return;const t=await f.getOverridableProps(e);t&&(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:t}))}function st(e){return e.elements?.length?e.elements.flatMap(lt):[]}function lt(e){return[...Object.values(e.styles??{}),...(e.elements??[]).flatMap(lt)]}async function ct(e){const t=await rt(e);!function(e){[...e.values()].some(r.isDocumentDirty)&&(0,r.setDocumentModifiedStatus)(!0)}(t),function(e){if(!e.size)return;const t=k((0,p.__getState)()),n=new Map([...e.entries()].filter(([e])=>!t[e]));n.size&&function(e){const t=Object.fromEntries([...e.entries()].map(([e,t])=>[e,st(t)]));(0,p.__dispatch)(v.actions.addStyles(t))}(n)}(t),await function(e){if(e.length)return Promise.all(e.map(at))}([...t.keys()])}const pt=de.z.string().trim().max(50,(0,d.__)("Component name is too long. Please keep it under 50 characters.","elementor")),dt=e=>de.z.object({componentName:pt.refine(t=>!e.includes(t),{message:(0,d.__)("Component name already exists","elementor")})}),mt=e=>{const t=dt(e);return t.extend({componentName:t.shape.componentName.refine(e=>e.length>0,{message:(0,d.__)("Component name is required.","elementor")}).refine(e=>e.length>=2,{message:(0,d.__)("Component name is too short. Please enter at least 2 characters.","elementor")})})},ut=async(e,t)=>await(0,J.replaceElement)({currentElement:e,newElement:gt(t),withHistory:!1}),gt=e=>({elType:"widget",widgetType:"e-component",settings:{component_instance:{$$type:"component-instance",value:{component_id:{$$type:"number",value:e.id??e.uid}}}},editor_settings:{component_uid:e.uid}});function ft({open:e,onClose:t,onConfirm:n}){return W.createElement(H.ConfirmationDialog,{open:e,onClose:t},W.createElement(H.ConfirmationDialog.Title,null,(0,d.__)("Delete this component?","elementor")),W.createElement(H.ConfirmationDialog.Content,null,W.createElement(H.ConfirmationDialog.ContentText,null,(0,d.__)("Existing instances on your pages will remain functional. You will no longer find this component in your list.","elementor"))),W.createElement(H.ConfirmationDialog.Actions,{onClose:t,onConfirm:n}))}function ht(){return ht=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},ht.apply(null,arguments)}const yt=({component:e,renameComponent:t})=>{const n=(0,W.useRef)(null),[i,a]=(0,W.useState)(!1),{canRename:s,canDelete:l}=nt(),c=s||l,{ref:m,isEditing:u,openEditMode:g,error:f,getProps:h}=(0,H.useEditable)({value:e.name,onSubmit:t,validation:_t}),y=gt(e),_=(0,Y.usePopupState)({variant:"popover",disableAutoFocus:!0});return W.createElement(Y.Stack,null,W.createElement(H.WarningInfotip,{open:Boolean(f),text:f??"",placement:"bottom",width:n.current?.getBoundingClientRect().width,offset:[0,-15]},W.createElement(Y.ListItemButton,{draggable:!0,onDragStart:e=>(0,o.startDragElementFromPanel)(y,e),onDragEnd:()=>{ct([y]),(0,o.endDragElementFromPanel)()},shape:"rounded",ref:n,sx:{border:"solid 1px",borderColor:"divider",py:.5,px:1,display:"flex",width:"100%",alignItems:"center",gap:1}},W.createElement(Y.Box,{display:"flex",alignItems:"center",gap:1,minWidth:0,flexGrow:1,onClick:()=>{vt(y)}},W.createElement(Y.ListItemIcon,{size:"tiny"},W.createElement(q.ComponentsIcon,{fontSize:"tiny"})),W.createElement(bt,{isActive:u,isError:!!f},W.createElement(Y.Box,{display:"flex",flex:1,minWidth:0,flexGrow:1},u?W.createElement(H.EditableField,ht({ref:m,as:Y.Typography,variant:"caption"},h())):W.createElement(H.EllipsisWithTooltip,{title:e.name,as:Y.Typography,variant:"caption",color:"text.primary"})))),c&&W.createElement(Y.IconButton,ht({size:"tiny"},(0,Y.bindTrigger)(_),{"aria-label":"More actions"}),W.createElement(q.DotsVerticalIcon,{fontSize:"tiny"})))),c&&W.createElement(Y.Menu,ht({},(0,Y.bindMenu)(_),{anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}}),s&&W.createElement(H.MenuListItem,{sx:{minWidth:"160px"},primaryTypographyProps:{variant:"caption",color:"text.primary"},onClick:()=>{_.close(),g()}},(0,d.__)("Rename","elementor")),l&&W.createElement(H.MenuListItem,{sx:{minWidth:"160px"},primaryTypographyProps:{variant:"caption",color:"error.light"},onClick:()=>{a(!0),_.close()}},(0,d.__)("Delete","elementor"))),W.createElement(ft,{open:i,onClose:()=>{a(!1)},onConfirm:()=>{if(!e.id)throw new Error("Component ID is required");var t,n;a(!1),t=e.id,n=e.name,(0,p.__dispatch)(v.actions.archive(t)),(0,r.setDocumentModifiedStatus)(!0),(0,ot.notify)(((e,t)=>({type:"success",message:(0,d.__)("Successfully deleted component %s","elementor").replace("%s",t),id:`success-archived-components-notification-${e}`}))(t,n))}}))},vt=e=>{const{container:t,options:n}=(()=>{const e=(0,J.getCurrentDocumentContainer)(),t=function(){const e=(0,J.getSelectedElements)();if(1===e.length)return(0,J.getContainer)(e[0].id)}();let n,o;if(t)switch(t.model.get("elType")){case"widget":{n=t?.parent;const e=t.view?._index??-1;e>-1&&(o={at:e+1});break}case"section":n=t?.children?.[0];break;default:n=t}return{container:n??e,options:o}})();if(!t)throw new Error("Can't find container to drop new component instance at");ct([e]),(0,J.dropElement)({containerId:t.id,model:e,options:{...n,useHistory:!1,scrollIntoView:!0}})},_t=e=>{const t=function(e){const t=I((0,p.__getState)())?.map(({name:e})=>e)??[],n=mt(t).safeParse({componentName:e.toLowerCase()});if(n.success)return{isValid:!0,errorMessage:null};const o=n.error.format();return{isValid:!1,errorMessage:o.componentName?._errors[0]??o._errors[0]}}(e);return t.errorMessage?t.errorMessage:null},bt=(0,Y.styled)(Y.Box,{shouldForwardProp:e=>"isActive"!==e&&"isError"!==e})(({theme:e,isActive:t,isError:n})=>({display:"flex",width:"100%",flexGrow:1,borderRadius:e.spacing(.5),border:Et({isActive:t,isError:n,theme:e}),padding:`0 ${e.spacing(1)}`,marginLeft:t?e.spacing(1):0,minWidth:0})),Et=({isActive:e,isError:t,theme:n})=>t?`2px solid ${n.palette.error.main}`:e?`2px solid ${n.palette.secondary.main}`:"none",wt=Array.from({length:6},(e,t)=>t),Ct=()=>W.createElement(Y.Stack,{"aria-label":"Loading components",gap:1,sx:{pointerEvents:"none",position:"relative",maxHeight:"300px",overflow:"hidden","&:after":{position:"absolute",top:0,content:'""',left:0,width:"100%",height:"300px",background:"linear-gradient(to top, white, transparent)",pointerEvents:"none"}}},wt.map(e=>W.createElement(Y.ListItemButton,{key:e,sx:{border:"solid 1px",borderColor:"divider",py:.5,px:1},shape:"rounded"},W.createElement(Y.Box,{display:"flex",gap:1,width:"100%"},W.createElement(Y.Skeleton,{variant:"text",width:"24px",height:"36px"}),W.createElement(Y.Skeleton,{variant:"text",width:"100%",height:"36px"}))))),xt={fontSize:"0.875rem !important",fontWeight:"500 !important"};function St(){const{components:e,isLoading:t,searchValue:n}=Pt();return t?W.createElement(Ct,null):e&&0!==e.length?W.createElement(Y.List,{sx:{display:"flex",flexDirection:"column",gap:1,px:2}},e.map(e=>W.createElement(yt,{key:e.uid,component:e,renameComponent:t=>{((e,t)=>{(0,p.__dispatch)(v.actions.rename({componentUid:e,name:t})),(0,r.setDocumentModifiedStatus)(!0),function(e){const t=function(){const e=(0,r.getV1DocumentsManager)();return e?.getCurrent()?.container}();if(!t)return;const n=function(e,t){return(0,J.getAllDescendants)(e).filter(e=>{const n=e.model.get("widgetType"),o=e.model.get("editor_settings");return n===ae&&o?.component_uid===t})}(t,e);n.forEach(e=>{e.model.trigger?.("title_external_change")})}(e)})(e.uid,t)}}))):n.length>0?W.createElement(Tt,null):W.createElement(It,null)}const It=()=>{const{canCreate:e}=nt();return W.createElement(Y.Stack,{alignItems:"center",justifyContent:"start",height:"100%",sx:{px:2,py:4},gap:2,overflow:"hidden"},W.createElement(Y.Stack,{alignItems:"center",gap:1},W.createElement(q.ComponentsIcon,{fontSize:"large",sx:{color:"text.secondary"}}),W.createElement(Y.Typography,{align:"center",variant:"subtitle2",color:"text.secondary",sx:xt},(0,d.__)("No components yet","elementor")),W.createElement(Y.Typography,{align:"center",variant:"caption",color:"secondary",sx:{maxWidth:200}},(0,d.__)("Components are reusable blocks that sync across your site.","elementor"),W.createElement("br",null),e?(0,d.__)("Create once, use everywhere.","elementor"):(0,d.__)("With your current role, you cannot create components. Contact an administrator to create one.","elementor")),W.createElement(Y.Link,{href:"http://go.elementor.com/components-guide-article",target:"_blank",rel:"noopener noreferrer",variant:"caption",color:"info.main"},(0,d.__)("Learn more about components","elementor"))),e&&W.createElement(W.Fragment,null,W.createElement(Y.Divider,{sx:{width:"100%"}}),W.createElement(Y.Stack,{alignItems:"center",gap:1,width:"100%"},W.createElement(Y.Typography,{align:"center",variant:"subtitle2",color:"text.secondary",sx:xt},(0,d.__)("Create your first one:","elementor")),W.createElement(Y.Typography,{align:"center",variant:"caption",color:"secondary",sx:{maxWidth:228}},(0,d.__)('Right-click any div-block or flexbox on your canvas or structure and select "Create component"',"elementor")))))},Tt=()=>{const{searchValue:e,clearSearch:t}=et();return W.createElement(Y.Stack,{color:"text.secondary",pt:5,alignItems:"center",gap:1,overflow:"hidden",justifySelf:"center"},W.createElement(q.ComponentsIcon,null),W.createElement(Y.Box,{sx:{width:"100%"}},W.createElement(Y.Typography,{align:"center",variant:"subtitle2",color:"inherit",sx:xt},(0,d.__)("Sorry, nothing matched","elementor")),e&&W.createElement(Y.Typography,{variant:"subtitle2",color:"inherit",sx:{...xt,display:"flex",width:"100%",justifyContent:"center"}},W.createElement("span",null,"“"),W.createElement("span",{style:{maxWidth:"80%",overflow:"hidden",textOverflow:"ellipsis"}},e),W.createElement("span",null,"”."))),W.createElement(Y.Typography,{align:"center",variant:"caption",color:"inherit"},(0,d.__)("Try something else.","elementor")),W.createElement(Y.Typography,{align:"center",variant:"caption",color:"inherit"},W.createElement(Y.Link,{color:"secondary",variant:"caption",component:"button",onClick:t},(0,d.__)("Clear & try again","elementor"))))},Pt=()=>{const{components:e,isLoading:t}=Xe(),{searchValue:n}=et();return{components:e.filter(e=>e.name.toLowerCase().includes(n.toLowerCase())),isLoading:t,searchValue:n}};function kt(){return W.createElement(Y.Box,{sx:{px:2}},W.createElement(H.InfoAlert,null,W.createElement(Y.Typography,{variant:"caption",component:"span"},W.createElement(Y.Typography,{variant:"caption",component:"span",fontWeight:"bold"},(0,d.__)("Try Components for free:","elementor"))," ",(0,d.__)("Soon Components will be part of the Pro subscription, but what you create now will remain on your site.","elementor"))))}const Dt=()=>{const{components:e,isLoading:t}=Xe(),n=!t&&e.length>0;return W.createElement(W.Fragment,null,n&&W.createElement(tt,null),n&&!function(){const e=window;return!!e.elementor?.helpers?.hasPro?.()&&(e.elementorPro?.config?.isActive??!1)}()&&W.createElement(kt,null),W.createElement(St,null))},Ot=()=>W.createElement(H.ThemeProvider,null,W.createElement(Qe,{localStorageKey:"elementor-components-search"},W.createElement(Dt,null))),Mt="elementor_component",Rt="overridable-prop";function Lt(){const e=(0,p.__getStore)()?.getState();return!!e&&null!==j(e)}const zt={type:"default",message:(0,d.__)("This widget isn't compatible with components. Use atomic elements instead.","elementor"),id:"non-atomic-element-blocked"};function Vt(e){return null!==(0,J.getElementType)(e)}function jt(e){if(!Lt())return!1;const{model:t}=e,n=t?.widgetType||t?.elType;return!!n&&!Vt(n)&&((0,ot.notify)(zt),!0)}function At(e){if(!Lt())return!1;const{containers:t=[e.container]}=e,n=t.some(e=>!!e&&(0,J.getAllDescendants)(e).some(e=>!(0,o.isAtomicWidget)(e)));return n&&(0,ot.notify)(zt),n}function $t(e){if(!Lt())return!1;const{storageType:t}=e;if("localstorage"!==t)return!1;const n=window?.elementorCommon?.storage?.get();if(!n?.clipboard?.elements)return!1;const o=Bt(n.clipboard.elements);return o&&(0,ot.notify)(zt),o}function Bt(e){for(const t of e){const e=t.widgetType||t.elType;if(e&&!Vt(e))return!0;if(t.elements?.length&&Bt(t.elements))return!0}return!1}function Ut(e){const t=[],n=e.widgetType||e.elType;if(n&&!Vt(n)&&t.push(n),e.elements?.length)for(const n of e.elements)t.push(...Ut(n));return[...new Set(t)]}async function Nt({name:e,element:t,eventData:n,uid:o,overridableProps:r,source:i}){const a=o??(0,ne.generateUniqueId)("component"),s={uid:a,name:e},l=_e(t),m=(0,J.getContainer)(t.id),u=m?.model?.toJSON?.(),g={model:u??t,parentId:m?.parent?.id??"",index:m?.view?._index??0};(0,p.__dispatch)(v.actions.addUnpublished({...s,elements:[l],overridableProps:r})),(0,p.__dispatch)(v.actions.addCreatedThisSession(a));const f=await ut(t,s);ee({action:"created",source:i,component_uid:a,component_name:e,...n});try{await(0,c.__privateRunCommand)("document/save/auto")}catch(e){throw function(e,t){(0,J.deleteElement)({elementId:t,options:{useHistory:!1}});const n=structuredClone(e.model);(0,J.createElements)({title:(0,d.__)("Restore Element","elementor"),elements:[{containerId:e.parentId,model:n,options:{at:e.index}}]})}(g,f.id),(0,p.__dispatch)(v.actions.removeUnpublished(a)),(0,p.__dispatch)(v.actions.removeCreatedThisSession(a)),e}return{uid:a,instanceId:f.id}}const Kt=e=>{const[t,n]=(0,W.useState)(e),[o,r]=(0,W.useState)({}),i=(0,W.useMemo)(()=>!Object.values(o).some(e=>e),[o]);return{values:t,errors:o,isValid:i,handleChange:(e,o,i)=>{const a={...t,[o]:e.target.value};n(a);const{success:s,errors:l}=Ft(a,i);r(s?{}:l)},validateForm:e=>{const{success:n,errors:o,parsedValues:i}=Ft(t,e);return n?(r({}),{success:n,parsedValues:i}):(r(o),{success:n})}}},Ft=(e,t)=>{const n=t.safeParse(e);if(n.success)return{success:!0,parsedValues:n.data};const o={};return Object.entries(n.error.formErrors.fieldErrors).forEach(([e,t])=>{o[e]=t[0]}),{success:!1,errors:o}},Wt=(e,t)=>{const{elementsCount:n,componentsCount:o}=Gt(e);return{nested_elements_count:n,nested_components_count:o,top_element_type:e.elType,location:t?.location,secondary_location:t?.secondaryLocation,trigger:t?.trigger}};function Gt(e){if(!e.elements||0===e.elements.length)return{elementsCount:0,componentsCount:0};let t=e.elements.length,n=0;for(const o of e.elements){"e-component"===o.widgetType&&n++;const{elementsCount:e,componentsCount:r}=Gt(o);t+=e,n+=r}return{elementsCount:t,componentsCount:n}}const Ht=100;function qt(){const[e,t]=(0,W.useState)(null),[n,o]=(0,W.useState)(),{components:r}=Xe(),i=(0,W.useRef)(null);(0,W.useEffect)(()=>{const e="elementor/editor/open-save-as-component-form",n=e=>{const{shouldOpen:n,notification:a}=function(e,t){return Ut(e).length>0?{shouldOpen:!1,notification:{type:"default",message:(0,d.__)("Components require atomic elements only. Remove widgets to create this component.","elementor"),id:"non-atomic-element-save-blocked"}}:t>=Ht?{shouldOpen:!1,notification:{type:"default",message:(0,d.__)("You've reached the limit of %s components. Please remove an existing one to create a new component.","elementor").replace("%s",Ht.toString()),id:"maximum-number-of-components-exceeded"}}:{shouldOpen:!0,notification:null}}(e.detail.element,r?.length??0);n?(t({element:e.detail.element,elementLabel:(0,J.getElementLabel)(e.detail.element.id)}),o(e.detail.anchorPosition),i.current=Wt(e.detail.element,e.detail.options),ee({action:"createClicked",source:"user",...i.current})):(0,ot.notify)(a)};return window.addEventListener(e,n),()=>{window.removeEventListener(e,n)}},[r?.length]);const a=()=>{t(null),o(void 0)},s=()=>{a(),ee({action:"createCancelled",source:"user",...i.current})};return W.createElement(H.ThemeProvider,null,W.createElement(Y.Popover,{open:null!==e,onClose:s,anchorReference:"anchorPosition",anchorPosition:n},null!==e&&W.createElement(Jt,{initialValues:{componentName:e.elementLabel},handleSave:async t=>{try{if(!e)throw new Error("Can't save element as component: element not found");const{uid:n,instanceId:o}=await Nt({name:t.componentName,element:e.element,eventData:i.current,source:"user"}),r=S((0,p.__getState)(),n)?.id;if(!r)throw new Error("Failed to find published component");X(r,o),(0,ot.notify)({type:"success",message:(0,d.__)("Component created successfully.","elementor"),id:`component-saved-successfully-${n}`}),a()}catch{const e=(0,d.__)("Failed to create component. Please try again.","elementor");(0,ot.notify)({type:"error",message:e,id:"component-save-failed"}),a()}},closePopup:s})))}const Yt="tiny",Jt=({initialValues:e,handleSave:t,closePopup:n})=>{const{values:o,errors:r,isValid:i,handleChange:a,validateForm:s}=Kt(e),{components:l}=Xe(),c=(0,W.useMemo)(()=>l?.map(e=>e.name)??[],[l]),p=(0,W.useMemo)(()=>dt(c),[c]),m=(0,W.useMemo)(()=>mt(c),[c]),u={heading:(0,d.__)("Create component","elementor"),name:(0,d.__)("Name","elementor"),cancel:(0,d.__)("Cancel","elementor"),create:(0,d.__)("Create","elementor")},g="component-name";return W.createElement(H.Form,{onSubmit:()=>{const{success:e,parsedValues:n}=s(m);e&&t(n)}},W.createElement(Y.Stack,{alignItems:"start",width:"268px"},W.createElement(Y.Stack,{direction:"row",alignItems:"center",py:1,px:1.5,sx:{columnGap:.5,borderBottom:"1px solid",borderColor:"divider",width:"100%"}},W.createElement(q.ComponentsIcon,{fontSize:Yt}),W.createElement(Y.Typography,{variant:"caption",sx:{color:"text.primary",fontWeight:"500",lineHeight:1}},u.heading)),W.createElement(Y.Grid,{container:!0,gap:.75,alignItems:"start",p:1.5},W.createElement(Y.Grid,{item:!0,xs:12},W.createElement(Y.FormLabel,{htmlFor:g,size:"tiny"},u.name)),W.createElement(Y.Grid,{item:!0,xs:12},W.createElement(Y.TextField,{id:g,size:Yt,fullWidth:!0,value:o.componentName,onChange:e=>a(e,"componentName",p),inputProps:{style:{color:"text.primary",fontWeight:"600"}},error:Boolean(r.componentName),helperText:r.componentName}))),W.createElement(Y.Stack,{direction:"row",justifyContent:"flex-end",alignSelf:"end",py:1,px:1.5},W.createElement(Y.Button,{onClick:n,color:"secondary",variant:"text",size:"small"},u.cancel),W.createElement(Y.Button,{type:"submit",disabled:!i,variant:"contained",color:"primary",size:"small"},u.create))))};function Xt({path:e,currentComponentId:t}){const n=(0,p.__getStore)()?.dispatch;n&&(n(v.actions.setPath(e)),n(v.actions.setCurrentComponentId(t)))}var Zt=window.ReactDOM;function Qt({topLevelElementDom:e,onClose:t}){const n=(0,c.__privateUseListenTo)((0,c.commandEndEvent)("editor/documents/attach-preview"),()=>(0,c.getCanvasIframeDocument)());return(0,W.useEffect)(()=>{const e=e=>{"Escape"===e.key&&t()};return n?.body.addEventListener("keydown",e),()=>{n?.body.removeEventListener("keydown",e)}},[n,t]),n?.body?(0,Zt.createPortal)(W.createElement(W.Fragment,null,W.createElement(tn,null),W.createElement(en,{canvas:n,element:e,onClose:t})),n.body):null}function en({canvas:e,element:t,onClose:n}){const o=function(e){const[t,n]=(0,W.useState)(new DOMRect(0,0,0,0)),o=(0,ne.throttle)(()=>{n(e?.getBoundingClientRect()??new DOMRect(0,0,0,0))},20,!0);return function({element:e,onChange:t}){(0,W.useEffect)(()=>{if(!e)return;const n=e.ownerDocument?.defaultView;return n?.addEventListener("scroll",t,{passive:!0}),()=>{n?.removeEventListener("scroll",t)}},[e,t])}({element:e,onChange:o}),function({element:e,onChange:t}){(0,W.useEffect)(()=>{if(!e)return;const n=new ResizeObserver(t);n.observe(e);const o=e.ownerDocument?.defaultView;return o?.addEventListener("resize",t,{passive:!0}),()=>{n.disconnect(),o?.removeEventListener("resize",t)}},[e,t])}({element:e,onChange:o}),function({element:e,onChange:t}){(0,W.useEffect)(()=>{if(!e)return;const n=new MutationObserver(t);return n.observe(e,{childList:!0,subtree:!0}),()=>{n.disconnect()}},[e,t])}({element:e,onChange:o}),(0,W.useEffect)(()=>()=>{o.cancel()},[o]),t}(t),r=t?function(e,t){const{x:n,y:o,width:r,height:i}=e,{innerWidth:a,innerHeight:s}=t;return`path(evenodd, 'M 0 0 \n\t\tL ${a} 0\n\t\tL ${a} ${s}\n\t\tL 0 ${s}\n\t\tZ\n\t\tM ${n} ${o}\n\t\tL ${n+r} ${o}\n\t\tL ${n+r} ${o+i}\n\t\tL ${n} ${o+i}\n\t\tL ${n} ${o}\n \tZ'\n\t)`.replace(/\s{2,}/g," ")}(o,e.defaultView):void 0,i={position:"fixed",top:0,left:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:999,pointerEvents:"painted",cursor:"pointer",clipPath:r};return W.createElement("div",{style:i,onClick:n,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),n())},role:"button",tabIndex:0,"aria-label":(0,d.__)("Exit component editing mode","elementor")})}function tn(){return W.createElement("style",{"data-e-style-id":"e-block-v3-document-handles-styles"},"\n\t.elementor-editor-active {\n\t\t& .elementor-section-wrap.ui-sortable {\n\t\t\tdisplay: contents;\n\t\t}\n\n\t\t& *[data-editable-elementor-document]:not(.elementor-edit-mode):hover {\n\t\t\t& .elementor-document-handle:not(.elementor-document-save-back-handle) {\n\t\t\t\tdisplay: none;\n\n\t\t\t\t&::before,\n\t\t\t\t& .elementor-document-handle__inner {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t")}function nn(){const e=$();!function(){const e=(0,r.getV1DocumentsManager)(),t=$(),n=(0,p.__useSelector)(V);(0,W.useEffect)(()=>(0,c.__privateListenTo)((0,c.commandEndEvent)("editor/documents/open"),()=>{const o=e.getCurrent();o.id!==t&&(t&&f.unlockComponent(t),o.config.type===Mt?Xt({path:on(n,o),currentComponentId:o.id}):Xt({path:[],currentComponentId:null}))}),[n,e,t])}();const t=Z(),n=(0,ne.throttle)(t,100),o=function(e){const{componentContainerDomElement:t,topLevelElementDom:n}=function(e){if(!e)return{componentContainerDomElement:null,topLevelElementDom:null};const t=(0,r.getV1DocumentsManager)().get(e),n=t?.container,o=n?.view?.el?.children?.[0]??null;return{componentContainerDomElement:o,topLevelElementDom:o?.children[0]??null}}(e),[o,i]=(0,W.useState)(n);return(0,W.useEffect)(()=>{i(n)},[n]),(0,W.useEffect)(()=>{if(!t)return;const e=new MutationObserver(()=>{const e=t.children[0];i(e)});return e.observe(t,{childList:!0}),()=>{e.disconnect()}},[t]),o}(e??void 0);return e?W.createElement(Qt,{topLevelElementDom:o,onClose:n}):null}function on(e,t){const n=e.findIndex(({componentId:e})=>e===t.id);if(n>=0)return e.slice(0,n+1);const o=t?.container.view?.el?.dataset.id,i=function(e,t){if(!e)return;const n=(0,r.getV1DocumentsManager)(),o=t.at(-1)?.componentId??n.getInitialId(),i=n.get(o),a=i?.container,s=a?.children?.findRecursive?.(t=>t.id===e),l=s?.model?.get?.("editor_settings");return l?.title}(o,e);return[...e,{instanceId:o,instanceTitle:i,componentId:t.id}]}const rn=e=>{(0,H.openDialog)({component:W.createElement(an,{lockedBy:e})})},an=({lockedBy:e})=>{const t=(0,d.__)("%s is currently editing this document","elementor").replace("%s",e);return W.createElement(W.Fragment,null,W.createElement(Y.DialogHeader,{logo:!1},W.createElement(Y.Box,{display:"flex",alignItems:"center",gap:1},W.createElement(Y.Icon,{color:"secondary"},W.createElement(q.InfoCircleFilledIcon,{fontSize:"medium"})),W.createElement(Y.Typography,{variant:"subtitle1"},t))),W.createElement(Y.DialogContent,null,W.createElement(Y.Stack,{spacing:2,direction:"column"},W.createElement(Y.Typography,{variant:"body2"},(0,d.__)("You can wait for them to finish or reach out to coordinate your changes together.","elementor")),W.createElement(Y.DialogActions,null,W.createElement(Y.Button,{color:"secondary",variant:"contained",onClick:H.closeDialog},(0,d.__)("Close","elementor"))))))},sn=({onEditComponent:e})=>{const{canEdit:t}=nt(),n=t?(0,d.__)("Edit the component to add properties, manage them or update the design across all instances.","elementor"):(0,d.__)("With your current role, you cannot edit this component. Contact an administrator to add properties.","elementor");return W.createElement(Y.Stack,{alignItems:"center",justifyContent:"start",height:"100%",color:"text.secondary",sx:{p:2.5,pt:8,pb:5.5,mt:1},gap:1.5},W.createElement(q.ComponentPropListIcon,{fontSize:"large"}),W.createElement(Y.Typography,{align:"center",variant:"subtitle2"},(0,d.__)("No properties yet","elementor")),W.createElement(Y.Typography,{align:"center",variant:"caption",maxWidth:"170px"},n),t&&W.createElement(Y.Button,{variant:"outlined",color:"secondary",size:"small",sx:{mt:1},onClick:e},W.createElement(q.PencilIcon,{fontSize:"small"}),(0,d.__)("Edit component","elementor")))};function ln(e){const t=(0,J.getElementType)(e);return t?cn(t.controls).reduce((e,t)=>({...e,[t.value.bind]:t}),{}):{}}function cn(e){return e.map(e=>"control"===e.type&&"bind"in e.value?e:"section"===e.type?cn(e.value.items):null).filter(Boolean).flat()}const pn=(0,W.createContext)(null);function dn({children:e,...t}){return W.createElement(pn.Provider,{value:t},e)}const mn=()=>(0,W.useContext)(pn)?.value,un=()=>(0,W.useContext)(pn)?.componentInstanceElement,gn=e=>ue.isValid(e)?function(e){const t=ue.extract(e);if(!t)return null;return me.isValid(t.origin_value)?fn(t.origin_value):t.origin_value}(e):me.isValid(e)?fn(e):e;function fn(e){const t=me.extract(e);return t?t.override_value:null}function hn(e,t,n){const o=R((0,p.__getState)(),e);if(!o)return;const r=o.props[t.override_key];if(!r)return;const i=gn(t.origin_value),a=n?{originValue:i,originPropFields:n}:{originValue:i},s={...o,props:{...o.props,[r.overrideKey]:{...r,...a}}};(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:s}))}const yn=e=>{if(e.originPropFields)return vn(e.originPropFields);const{widgetType:t,propKey:n}=e;return vn({widgetType:t,propKey:n})};function vn({widgetType:e,propKey:t}){const n=(0,J.getWidgetsCache)()?.[e]?.atomic_props_schema;return n?.[t]}const _n=({children:e,...t})=>W.createElement(Y.Stack,{direction:"row",alignItems:"center",justifyItems:"start",gap:.25},W.createElement(Ee.ControlFormLabel,t,e),W.createElement(Ee.ControlAdornments,null)),bn=(0,ne.createError)({code:"override_control_inner_element_not_found",message:"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."});function En(e,t){return function(e,t,n){const{originValue:o,originPropFields:r}=n;if(xn(o))return o;if(t){const n=wn(e,t);if(xn(n))return n}const{elementId:i,propKey:a}=r??{};return i&&a?Cn(e,i,a):null}((0,p.__useSelector)(_),e,t)}function wn(e,t){const n=ue.extract(t),o=n?me.extract(n.origin_value):me.extract(t);if(!o)return null;const{schema_source:r,override_key:i,override_value:a}=o,s=r?.id;if(!s||!i)return null;const l=function(e,t,n){const o=e.find(({id:e})=>e===t);return o?.overridableProps?.props?.[n]}(e,s,i);if(xn(l?.originValue))return l.originValue;if(l?.originPropFields?.elementId){const t=l.originPropFields.propKey??l.propKey,n=Cn(e,l.originPropFields.elementId,t);if(xn(n))return n}const c=ue.extract(a);return c?wn(e,ue.create(c)):null}function Cn(e,t,n,o=new Set){for(const r of e){if(o.has(r.id))continue;o.add(r.id);const i=Object.values(r.overridableProps?.props??{}).find(({elementId:e,propKey:o})=>e===t&&o===n);if(i){if(xn(i.originValue))return i.originValue;if(i.originPropFields?.elementId){const t=i.originPropFields.propKey??n;return Cn(e,i.originPropFields.elementId,t,o)}}}return null}function xn(e){return null!=e}function Sn({overridableProp:e,overrides:t}){return W.createElement(i.SettingsField,{bind:"component_instance",propDisplayName:e.label},W.createElement(In,{overridableProp:e,overrides:t}))}function In({overridableProp:e,overrides:t}){const n=(0,i.useElement)(),o=$(),{value:r,setValue:a}=(0,Ee.useBoundProp)(fe),s=ln(e?.originPropFields?.widgetType??e.widgetType),l=(0,i.getControlReplacements)(),c=function(e,t){return e?.find(e=>{const n=ue.extract(e);let o=null;return o=n?n.origin_value?.value?.override_key:e.value.override_key,o===t})??null}(t,e.overrideKey),p=En(c,e),d=yn(e);if(!d)return null;const m=r.component_id?.value;if(!m)throw new Error("Component ID is required");const u=(c?gn(c):null)??p??e.originValue,g={[e.overrideKey]:u},{control:f,controlProps:h,layout:y}=function(e,t,n){const o=e[t.propKey],{value:r}=o,a=function(e){return e.value.meta?.layout||i.controlsRegistry.getLayout(e.value.type)}(o),s=function(e){if(e.childControlType){const t=i.controlsRegistry.get(e.childControlType),n=i.controlsRegistry.getPropTypeUtil(e.childControlType);e={...e,childControlConfig:{component:t,props:e.childControlProps||{},propTypeUtil:n}}}return e}(r.props);return"custom"===a&&(s.label=n??r.label),{control:o,controlProps:s,layout:a}}(s,e?.originPropFields??e,e.label),{elementId:v,widgetType:_,elType:b,propKey:E}=e.originPropFields??e;if(!(0,J.getContainer)(v))throw new bn({context:{componentId:m,elementId:v}});const w="widget"===b?_:b,C=(0,J.getElementType)(w);if(!C)return null;const x=(0,i.createTopLevelObjectType)({schema:{[e.overrideKey]:d}});return W.createElement(dn,{value:ue.extract(c)??void 0,componentInstanceElement:n},W.createElement(i.ElementProvider,{element:{id:v,type:w},elementType:C},W.createElement(i.SettingsField,{bind:E,propDisplayName:e.label},W.createElement(Ee.PropProvider,{propType:x,value:g,setValue:n=>{const s=function(e,t,n){return null===n&&(0,i.isDynamicPropValue)(t)?e.default??null:n}(d,u,n[e.overrideKey]),l=function({matchingOverride:e,overrideKey:t,overrideValue:n,componentId:o}){const r=ue.extract(e),i=ue.extract(n)??r;if(i){const e=me.create({override_key:t,override_value:gn(n),schema_source:{type:"component",id:o}});return ue.create({override_key:i.override_key,origin_value:e})}return me.create({override_key:t,override_value:n,schema_source:{type:"component",id:o}})}({matchingOverride:c,overrideKey:e.overrideKey,overrideValue:s,componentId:m});let p=t?.map(e=>e===c?l:e)??[];c||(p=[...p,l]),a({...r,overrides:ge.create(p)});const g=ue.extract(l);if(g&&o){if(e.originPropFields)return void hn(o,g,e.originPropFields);const{elType:t,widgetType:n,propKey:r,elementId:i}=e;hn(o,g,{elType:t,widgetType:n,propKey:r,elementId:i})}},isDisabled:()=>!1},W.createElement(Ee.PropKeyProvider,{bind:e.overrideKey},W.createElement(Ee.ControlReplacementsProvider,{replacements:l},W.createElement(Y.Stack,{direction:"column",gap:1,mb:1.5},"custom"!==y&&W.createElement(_n,null,e.label),W.createElement(Tn,{control:f,controlProps:h}))))))))}function Tn({control:e,controlProps:t}){const{value:n}=e;return W.createElement(i.BaseControl,{type:n.type,props:t})}function Pn({group:e,props:t,overrides:n}){const[o,r]=(0,i.useStateByElement)(e.id,!0),a=(0,W.useId)(),s=`label-${a}`,l=`content-${a}`,c=e.label;return W.createElement(Y.Box,{"aria-label":`${c} section`},W.createElement(Y.ListItemButton,{id:s,"aria-controls":l,"aria-label":`${c} section`,onClick:()=>{r(!o)},p:0,sx:{"&:hover":{backgroundColor:"transparent"}}},W.createElement(Y.Stack,{direction:"row",alignItems:"center",justifyItems:"start",flexGrow:1,gap:.5},W.createElement(Y.ListItemText,{secondary:c,secondaryTypographyProps:{color:"text.primary",variant:"caption",fontWeight:"bold"},sx:{flexGrow:0,flexShrink:1,marginInlineEnd:1}})),W.createElement(H.CollapseIcon,{open:o,color:"secondary",fontSize:"tiny"})),W.createElement(Y.Collapse,{id:l,"aria-labelledby":s,in:o,timeout:"auto"},W.createElement(Y.Stack,{direction:"column",gap:1,p:2},e.props.map(e=>W.createElement(Sn,{key:e,overridableProp:t[e],overrides:n})))))}function kn(){const{canEdit:e}=nt(),t=function(){const{element:e}=(0,i.useElement)(),t=(0,J.useElementSetting)(e.id,"component_instance");return fe.extract(t)}(),n=t?.component_id?.value,o=t?.overrides?.value,r=x(n??null),a=L(n??null),l=(0,J.useSelectedElement)()?.element?.id??null;if(!n||!a||!r)return null;const c=(0,d.__)("Edit %s","elementor").replace("%s",r.name),p=()=>X(n,l),m=a.groups.order.map(e=>a.groups.items[e]??null).filter(e=>null!==e&&e.props.length>0),u=0===m.length||0===Object.keys(a.props).length;return W.createElement(W.Fragment,null,W.createElement(s.PanelHeader,{sx:{justifyContent:"start",px:2}},W.createElement(Y.Stack,{direction:"row",alignItems:"center",flexGrow:1,gap:1,maxWidth:"100%"},W.createElement(q.ComponentsIcon,{fontSize:"small",sx:{color:"text.tertiary"}}),W.createElement(H.EllipsisWithTooltip,{title:r.name,as:s.PanelHeaderTitle,sx:{flexGrow:1}}),e&&W.createElement(Y.Tooltip,{title:c},W.createElement(Y.IconButton,{size:"tiny",onClick:p,"aria-label":c},W.createElement(q.PencilIcon,{fontSize:"tiny"}))))),W.createElement(s.PanelBody,null,W.createElement(Ee.ControlAdornmentsProvider,{items:(0,i.getFieldIndicators)("settings")},u?W.createElement(sn,{onEditComponent:p}):W.createElement(Y.Stack,{direction:"column",alignItems:"stretch"},m.map(e=>W.createElement(W.Fragment,{key:e.id+l},W.createElement(Pn,{group:e,props:a.props,overrides:o}),W.createElement(Y.Divider,null)))))))}function Dn(){return Dn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Dn.apply(null,arguments)}function On({OriginalControl:e,...t}){const{elementType:n}=(0,i.useElement)(),{value:o,bind:r,setValue:a,placeholder:s,...l}=(0,Ee.useBoundProp)(ue),c=$(),p=L(c),d=(0,i.getControlReplacements)().filter(e=>!e.id||e.id!==Rt);if(!c)return null;if(!o?.override_key)throw new Error("Override key is required");const m="e-component"===n.key,u=p?.props?.[o.override_key],g=n.propsSchema[r],f=(u?yn(u):void 0)??g;if(!f)return null;const h=(0,i.createTopLevelObjectType)({schema:{[r]:f}}),y=m?(o.origin_value?.value).override_value:o.origin_value,v=s?{[r]:s}:void 0;return W.createElement(dn,{value:o},W.createElement(Ee.PropProvider,Dn({},l,{propType:h,setValue:e=>{const t={...o,origin_value:e[r]};a(t),m||hn(c,t,u?.originPropFields)},value:{[r]:y},placeholder:v}),W.createElement(Ee.PropKeyProvider,{bind:r},W.createElement(Ee.ControlReplacementsProvider,{replacements:d},W.createElement(Mn,{OriginalControl:e,props:t})))))}function Mn({OriginalControl:e,props:t}){const{ControlToRender:n,isReplaced:o}=(0,Ee.useControlReplacement)(e);if(o){const o=n;return W.createElement(o,Dn({},t,{OriginalControl:e}))}return W.createElement(e,t)}function Rn({componentId:e,overrideKey:t,elementId:n,label:o,groupId:r,propKey:i,elType:a,widgetType:s,originValue:l,originPropFields:c,source:m}){const u=R((0,p.__getState)(),e);if(!u)return;const g=t?u.props[t]:null,f=Object.values(u.props).filter(e=>e.elementId===n&&e.propKey===i&&e!==g),{groups:h,groupId:y}=function(e,t){return t&&e.items[t]?{groups:e,groupId:t}:!t&&e.order.length>0?{groups:e,groupId:e.order[0]}:function(e,t){const n=t||(0,ne.generateUniqueId)("group"),o=(0,d.__)("Default","elementor");return{groups:{...e,items:{...e.items,[n]:{id:n,label:o,props:[]}},order:[...e.order,n]},groupId:n}}(e,t)}(u.groups,r||g?.groupId||void 0),_={overrideKey:g?.overrideKey||(0,ne.generateUniqueId)("prop"),label:o,elementId:n,propKey:i,widgetType:s,elType:a,originValue:l,groupId:y,originPropFields:c},b=function(e,t){const n=t.map(e=>e.overrideKey);return{props:Object.fromEntries(Object.entries(e.props).filter(([,e])=>!t.includes(e))),groups:{items:Object.fromEntries(Object.entries(e.groups.items).map(([e,t])=>[e,{...t,props:t.props.filter(e=>!n.includes(e))}])),order:e.groups.order.filter(e=>!n.includes(e))}}}({...u,groups:h},f),E={...b.props,[_.overrideKey]:_};let w=re(b.groups,y,_.overrideKey);if(w=function(e,t){return e.order.includes(t)?e:{...e,order:[...e.order,t]}}(w,y),g&&g.groupId!==y&&(w=ie(w,g.groupId,_.overrideKey)),(0,p.__dispatch)(v.actions.setOverridableProps({componentId:e,overridableProps:{props:E,groups:w}})),!g){const e=A((0,p.__getState)());ee({action:"propertyExposed",source:m,component_uid:e?.uid,property_id:_.overrideKey,property_path:i,property_name:o,element_type:s??a})}return _}function Ln(){return Ln=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Ln.apply(null,arguments)}const zn="tiny",Vn=(0,Y.styled)(Y.Box)`
13 + pointer-events: none;
14 + opacity: 0;
15 + transition: opacity 0.2s ease-in-out;
16 +
17 + & > svg {
18 + position: absolute;
19 + top: 50%;
20 + left: 50%;
21 + transform: translate( -50%, -50% );
22 + width: 10px;
23 + height: 10px;
24 + fill: ${({theme:e})=>e.palette.primary.contrastText};
25 + stroke: ${({theme:e})=>e.palette.primary.contrastText};
26 + stroke-width: 2px;
27 + }
28 +`,jn=(0,Y.styled)(Y.Box)`
29 + position: relative;
30 + display: flex;
31 + align-items: center;
32 + justify-content: center;
33 + cursor: pointer;
34 + width: 16px;
35 + height: 16px;
36 + margin-inline: ${({theme:e})=>e.spacing(.5)};
37 +
38 + &:before {
39 + content: '';
40 + display: block;
41 + position: absolute;
42 + top: 50%;
43 + left: 50%;
44 + transform: translate( -50%, -50% ) rotate( 45deg );
45 + width: 5px;
46 + height: 5px;
47 + border-radius: 1px;
48 + background-color: ${({theme:e})=>e.palette.primary.main};
49 + transition: all 0.1s ease-in-out;
50 + }
51 +
52 + &:hover,
53 + &.enlarged {
54 + &:before {
55 + width: 12px;
56 + height: 12px;
57 + border-radius: 2px;
58 + }
59 +
60 + .icon {
61 + opacity: 1;
62 + }
63 + }
64 +`,An=(0,W.forwardRef)(({isOpen:e,isOverridable:t,...n},o)=>W.createElement(jn,Ln({ref:o},n,{className:e||t?"enlarged":""}),W.createElement(Vn,{className:"icon","aria-label":t?(0,d.__)("Overridable property","elementor"):(0,d.__)("Make prop overridable","elementor")},t?W.createElement(q.CheckIcon,{fontSize:zn}):W.createElement(q.PlusIcon,{fontSize:zn}))));function $n(){return $n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},$n.apply(null,arguments)}function Bn(){const{propType:e}=(0,Ee.useBoundProp)(),t=$(),n=L(t);return function(e){return!1!==e.meta.overridable}(e)&&t&&n?W.createElement(Un,{componentId:t,overridableProps:n}):null}function Un({componentId:e,overridableProps:t}){const{element:{id:n},elementType:o}=(0,i.useElement)(),{value:r,bind:a,propType:s}=(0,Ee.useBoundProp)(),l=mn(),c=un(),{value:m,setValue:u}=(0,Ee.useBoundProp)(ue),g=m??l,f=(0,Y.usePopupState)({variant:"popover"}),h=(0,Y.bindTrigger)(f),y=(0,Y.bindPopover)(f),{elType:v}=(0,J.getWidgetsCache)()?.[o.key]??{elType:"widget"},_=g?function({componentId:e,overrideKey:t}){const n=R((0,p.__getState)(),e);if(n)return n.props[t]}({componentId:e,overrideKey:g.override_key}):void 0;return W.createElement(W.Fragment,null,W.createElement(Y.Tooltip,{placement:"top",title:(0,d.__)("Override Property","elementor")},W.createElement(An,$n({},h,{isOpen:!!y.open,isOverridable:!!g}))),W.createElement(Y.Popover,$n({disableScrollLock:!0,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{my:2.5}}},y),W.createElement(ke,{onSubmit:({label:i,group:l})=>{const p=s.default??{},d=gn(g?.origin_value)??r??p,m=g?t?.props?.[g.override_key]:void 0,h=Rn({componentId:e,overrideKey:g?.override_key??null,elementId:c?.element.id??n,label:i,groupId:l,propKey:a,elType:v??"widget",widgetType:c?.elementType.key??o.key,originValue:d,originPropFields:m?.originPropFields,source:"user"});!g&&h&&u({override_key:h.overrideKey,origin_value:d}),f.close()},groups:t?.groups.order.map(e=>({value:e,label:t.groups.items[e].label})),existingLabels:Object.values(t?.props??{}).map(e=>e.label),currentValue:_})))}var Nn=window.elementorV2.editorMcp;const Kn={element_id:de.z.string().describe('The unique identifier of the element to save as a component. Use the "list-elements" tool to find available element IDs in the current document.'),component_name:de.z.string().describe("The name for the new component. Should be descriptive and unique among existing components."),overridable_props:de.z.object({props:de.z.record(de.z.object({elementId:de.z.string().describe("The id of the child element that you want to override its settings"),propKey:de.z.string().describe('The property key of the child element that you want to override its settings (e.g., "text", "url", "tag"). To get the available propKeys for an element, use the "get-element-type-config" tool.'),label:de.z.string().describe('A unique, user-friendly display name for this property (e.g., "Hero Headline", "CTA Button Text"). Must be unique within the same component.')}))}).optional().describe('Overridable properties configuration. Specify which CHILD element properties can be customized. Only elementId and propKey are required; To get the available propKeys for a child element you must use the "get-element-type-config" tool.')},Fn={message:de.z.string().optional().describe("Additional information about the operation result"),component_uid:de.z.string().optional().describe("The unique identifier of the newly created component (only present on success)")},Wn=async e=>{const{element_id:t,component_name:n,overridable_props:o}=e,r=function(){const e=(0,J.getWidgetsCache)();return e?Object.entries(e).reduce((e,[t,n])=>n.atomic_props_schema&&n.show_in_panel&&"widget"!==n.elType?(e.push(t),e):e,[]):[]}(),i=(0,J.getContainer)(t);if(!i)throw new Error("Element not found. Use 'list-elements' to get valid element IDs.");const a=i.model.get("elType");if(!r.includes(a))throw new Error(`Element is not one of the following types: ${r.join(", ")}`);const s=i.model.toJSON({remove:["default"]});if(s?.isLocked)throw new Error("Cannot save a locked element as a component.");const l=o?function(e,t){const n={},o=(0,ne.generateUniqueId)("group");return Object.entries(e.props).forEach(([,e])=>{const{elementId:r,propKey:i,label:a}=e,s=Gn(t,r);if(!s)throw new Error(`Element with ID "${r}" not found in component`);const l=s.elType,c=s.widgetType||s.elType,p=(0,J.getElementType)(c);if(!p)throw new Error(`Element type "${c}" is not atomic or does not have a settings schema. Cannot expose property "${i}" for element "${r}".`);if(!p.propsSchema[i]){const e=Object.keys(p.propsSchema).join(", ");throw new Error(`Property "${i}" does not exist in element "${r}" (type: ${c}). Available properties: ${e}`)}const d=(0,ne.generateUniqueId)("prop"),m=s.settings?.[i]?s.settings[i]:p.propsSchema[i].default??null;n[d]={overrideKey:d,label:a,elementId:r,propKey:i,elType:l,widgetType:c,originValue:m,groupId:o}}),{props:n,groups:{items:{[o]:{id:o,label:"Default",props:Object.keys(n)}},order:[o]}}}(o,s):void 0;l&&function(e,t){Object.values(t.props).forEach(t=>{const n=Gn(e,t.elementId);n&&n.settings&&(n.settings[t.propKey]={$$type:"overridable",value:{override_key:t.overrideKey,origin_value:t.originValue}})})}(s,l);const c=(0,ne.generateUniqueId)("component");try{await f.validate({items:[{uid:c,title:n,elements:[s],settings:{overridable_props:l}}]})}catch(e){if(e instanceof m.AxiosError)throw new Error(e.response?.data.messge);throw new Error("Unknown error")}return await Nt({name:n,element:s,eventData:null,uid:c,overridableProps:l,source:"mcp_tool"}),{status:"ok",message:`Component "${n}" created successfully.`,component_uid:c}};function Gn(e,t){if(e.id===t)return e;if(e.elements)for(const n of e.elements){const e=Gn(n,t);if(e)return e}return null}const Hn=()=>{const e=(0,Nn.toolPrompts)("save-as-component");return e.description(`\nSave an existing element as a reusable component in the Elementor editor.\n\n# When to use this tool\nUse this tool when the user wants to:\n- Create a reusable component from an existing element structure\n- Make specific child element properties customizable in component instances\n- Build a library of reusable design patterns\n\n# When NOT to use this tool\n- Element is already a component (widgetType: 'e-component')\n- Element is locked\n- Element is not an atomic element (atomic_props_schema is not defined)\n- Element elType is a 'widget'\n\n# **CRITICAL - REQUIRED RESOURCES (Must read before using this tool)**\n1. [${o.DOCUMENT_STRUCTURE_URI}]\n **MANDATORY** - Required to understand the document structure and identify child elements for overridable properties.\n Use this resource to find element IDs and understand the element hierarchy.\n\n2. [${o.WIDGET_SCHEMA_URI}]\n **MANDATORY** - Required to understand which properties are available for each widget type.\n Use this to identify available propKeys in the atomic_props_schema for child elements.\n\n# Instructions - MUST FOLLOW IN ORDER\n## Step 1: Identify the Target Element\n1. Read the [${o.DOCUMENT_STRUCTURE_URI}] resource to understand the document structure\n2. Locate the element you want to save as a component by its element_id\n3. Verify the element type is a valid element type\n4. Ensure the element is not locked and is not already a component\n\n## Step 2: Define Overridable Properties\nDo this step to make child element properties customizable.\nSkip that step ONLY if the user explicitly requests to not make any properties customizable.\n\n1. **Identify Child Elements**\n - Use the [${o.DOCUMENT_STRUCTURE_URI}] resource to find all child elements\n - Note the elementId and widgetType/elType of each child element you want to customize\n\n2. **Find Available Properties**\n - Use the [${o.WIDGET_SCHEMA_URI}] resource to find the child element's widget type schema\n - Review the atomic_props_schema to find available propKeys (ONLY use top-level props)\n - Common propKeys include: "text", "url", "tag", "size", etc.\n - Use only the top level properties, do not use nested properties.\n\n3. **Build the overridable_props Object**\n - For each property you want to make overridable, add an entry:\n \`{ "elementId": "<child-element-id>", "propKey": "<property-key>", "label": "<user-friendly-name>" }\`\n - The label must be unique within the component and should be meaningful to the user (e.g., "Hero Headline", "CTA Button Text")\n - Group all entries under the "props" object\n\n## Step 3: Execute the Tool\nCall the tool with:\n- element_id: The ID of the parent element to save as component\n- component_name: A descriptive name for the component\n- overridable_props: (Optional) The properties configuration from Step 2\n\n# CONSTRAINTS\n- NEVER try to override properties of the parent element itself - ONLY child elements\n- NEVER use invalid propKeys - always verify against the widget's atomic_props_schema in [${o.WIDGET_SCHEMA_URI}]\n- Property keys must exist in the child element's atomic_props_schema\n- Element IDs must exist within the target element's children\n- When tool execution fails, read the error message and adjust accordingly\n- The element being saved must not be inside another component\n`),e.parameter("element_id",`**MANDATORY** The unique identifier of the element to save as a component.\nUse the [${o.DOCUMENT_STRUCTURE_URI}] resource to find available element IDs.`),e.parameter("component_name",'**MANDATORY** A descriptive name for the new component.\nShould be unique and clearly describe the component\'s purpose (e.g., "Hero Section", "Feature Card").'),e.parameter("overridable_props",`**OPTIONAL** Configuration for which child element properties can be customized in component instances.\n\nStructure:\n\`\`\`json\n{\n "props": {\n "<unique-key>": {\n "elementId": "<child-element-id>",\n "propKey": "<property-key>",\n "label": "<user-friendly-name>"\n }\n }\n}\n\`\`\`\n\nTo populate this correctly:\n1. Use [${o.DOCUMENT_STRUCTURE_URI}] to find child element IDs and their widgetType\n2. Use [${o.WIDGET_SCHEMA_URI}] to find the atomic_props_schema for each child element's widgetType\n3. Only include properties you want to be customizable in component instances\n4. Provide a unique, user-friendly label for each property (e.g., "Hero Headline", "CTA Button Text")`),e.example('\nBasic component without overridable properties:\n```json\n{\n "element_id": "abc123",\n "component_name": "Hero Section"\n}\n```\n\nComponent with overridable properties:\n```json\n{\n "element_id": "abc123",\n "component_name": "Feature Card",\n "overridable_props": {\n "props": {\n "heading-text": {\n "elementId": "heading-123",\n "propKey": "text",\n "label": "Card Title"\n },\n "button-text": {\n "elementId": "button-456",\n "propKey": "text",\n "label": "Button Text"\n },\n "button-link": {\n "elementId": "button-456",\n "propKey": "url",\n "label": "Button Link"\n }\n }\n }\n}\n```\n'),e.instruction("After successful creation, the component will be available in the components library and can be inserted into any page or template."),e.instruction("When overridable properties are defined, component instances will show customization controls for those specific properties in the editing panel."),e.prompt()},qn=()=>(0,Nn.getMCPByDomain)("components").addTool({name:"save-as-component",schema:Kn,outputSchema:Fn,description:Hn(),handler:Wn});function Yn(){return(0,W.useEffect)(()=>{(0,p.__dispatch)(h())},[]),null}const Jn="e-component",Xn={type:"default",message:(0,d.__)("Can't add this component - components that contain each other can't be nested.","elementor"),id:"circular-component-nesting-blocked"};function Zn(e){if(void 0===e)return!1;const t=(0,p.__getState)(),n=j(t),o=V(t);return null!==n&&(e===n||o.some(t=>t.componentId===e))}function Qn(e){return e.widgetType!==Jn?null:e.settings?.component_instance?.value?.component_id?.value??null}function eo(e){const t=[];for(const n of e){const e=Qn(n);null!==e&&t.push(e),n.elements?.length&&t.push(...eo(n.elements))}return t}function to(e){const t=(n=e.model)&&n.widgetType===Jn?n.settings?.component_instance?.value?.component_id?.value??null:null;var n;if(null===t)return!1;const o=Zn(t);return o&&(0,ot.notify)(Xn),o}function no(e){const{containers:t=[e.container]}=e,n=t.some(e=>!!e&&(0,J.getAllDescendants)(e).some(e=>{const t=function(e){const t=e.model?.get?.("widgetType");if(t!==Jn)return null;const n=e.model?.get?.("settings"),o=n?.get?.("component_instance");return o?.value?.component_id?.value??null}(e);return null!==t&&Zn(t)}));return n&&(0,ot.notify)(Xn),n}function oo(e){const{storageType:t}=e;if("localstorage"!==t)return!1;const n=window?.elementorCommon?.storage?.get();if(!n?.clipboard?.elements)return!1;const o=eo(n.clipboard.elements).some(Zn);return o&&(0,ot.notify)(Xn),o}const ro=(0,l.createStylesProvider)({key:"components-styles",priority:100,subscribe:e=>(0,p.__subscribeWithSelector)(e=>e[y],()=>{e()}),actions:{all:()=>D((0,p.__getState)()),get:e=>D((0,p.__getState)()).find(t=>t.id===e)??null}});async function io({elements:e,status:t}){const n=T((0,p.__getState)());if(n.length)try{const o=await async function(e,t){const n=await f.create({status:t,items:e.map(e=>({uid:e.uid,title:e.name,elements:e.elements,settings:e.overridableProps?{overridable_props:e.overridableProps}:void 0}))}),o=new Map;return Object.entries(n).forEach(([e,t])=>{o.set(e,t)}),o}(n,t);ao(e,o),(0,p.__dispatch)(v.actions.add(n.map(e=>({id:o.get(e.uid),name:e.name,uid:e.uid,overridableProps:e.overridableProps?e.overridableProps:void 0})))),(0,p.__dispatch)(v.actions.resetUnpublished())}catch(e){const t=n.map(e=>e.uid);throw(0,p.__dispatch)(v.actions.removeUnpublished(t)),new Error(`Failed to publish components: ${e}`)}}function ao(e,t){e.forEach(e=>{const{shouldUpdate:n,newComponentId:o}=function(e,t){if("e-component"===e.widgetType){const n=e.settings?.component_instance?.value?.component_id.value;if(n&&t.has(n.toString()))return{shouldUpdate:!0,newComponentId:t.get(n.toString())}}return{shouldUpdate:!1,newComponentId:null}}(e,t);var r,i;n&&(r=e.id,i=o,(0,J.updateElementSettings)({id:r,props:{component_instance:{$$type:"component-instance",value:{component_id:{$$type:"number",value:i}}}},withHistory:!1})),e.elements&&ao(e.elements,t)})}const so=({container:e})=>{const t=e.document;if(!t||t.config.type!==Mt)return;const n=R((0,p.__getState)(),t.id);n&&e.settings.set("overridable_props",n)},lo=({container:e,status:t})=>{const n=e?.model.get("elements").toJSON?.()??[];return Promise.all([co({elements:n,status:t}),so({container:e})])},co=async({elements:e,status:t})=>{await po({elements:e,status:t}),await io({elements:e,status:t})},po=async({elements:e,status:t})=>{await(async e=>{const t=B((0,p.__getState)());t.length&&0===(await f.updateComponentTitle(t,e)).failedIds.length&&(0,p.__dispatch)(v.actions.cleanUpdatedComponentNames())})(t),await(async e=>{try{const t=(0,p.__getState)()[y].archivedThisSession;if(!t.length)return;const n=(await f.updateArchivedComponents(t,e)).failedIds.join(", ");n&&(0,ot.notify)({type:"error",message:`Failed to archive components: ${n}`,id:"failed-archived-components-notification"})}catch(e){throw new Error(`Failed to update archived components: ${e}`)}})(t),await async function({status:e,elements:t}){if("publish"!==e)return;const n=[...(await rt(t)).values()].filter(r.isDocumentDirty).map(e=>e.id);0!==n.length&&(await f.updateStatuses(n,"publish"),n.forEach(e=>(0,r.invalidateDocumentData)(e)))}({elements:e,status:t})};const mo="e-flexbox";function uo(e){const t=(0,J.createElement)({containerId:e.id,model:{elType:mo}});(0,J.selectElement)(t.id)}function go(e){const t=e.children?.[0];return t?{shouldRedirect:!0,container:t}:{shouldRedirect:!1,container:e}}function fo(e){return!("document"!==e.id)&&e.document?.config.type===Mt}function ho(e){ct((Array.isArray(e)?e:[e]).map(e=>e.model.toJSON()))}function yo(e){(Array.isArray(e)?e:[e]).forEach(e=>{!function(e){const t=(0,J.getContainer)(e);t&&(0,J.getAllDescendants)(t).forEach(vo)}(e.id)})}function vo(e){if(!he(e.model.toJSON()))return;const t=e.settings?.toJSON()??{};if(!function(e){if(!fe.isValid(e?.component_instance))return!1;const t=fe.extract(e?.component_instance),n=t?.overrides;if(!ge.isValid(n))return!1;const o=n?.value;return!!o?.length}(t))return;const n=t.component_instance,o=n.value.overrides,r=o.value.map(e=>me.isValid(e)?{...e,value:{...e.value,override_key:(0,ne.generateUniqueId)("prop")}}:e),i={...n,value:{...n.value,overrides:{...o,value:r}}};(0,J.updateElementSettings)({id:e.id,props:{component_instance:i},withHistory:!1})}function _o(){(0,c.registerDataHook)("after","document/elements/duplicate",(e,t)=>{var n;Lt()&&(n=t,(Array.isArray(n)?n:[n]).forEach(e=>{!function(e){(0,J.getAllDescendants)(e).forEach(e=>{e.model.get("widgetType")===ae?function(e){const t=e.settings?.toJSON()??{},n=fe.extract(t.component_instance),o=ge.extract(n?.overrides);if(!o?.length)return;const r=ye(o),i=fe.create({...n,overrides:ge.create(r)});(0,J.updateElementSettings)({id:e.id,props:{component_instance:i},withHistory:!1})}(e):function(e){const t=e.settings?.toJSON()??{},{hasChanges:n,settings:o}=ve(t);n&&(0,J.updateElementSettings)({id:e.id,props:o,withHistory:!1})}(e)})}(e)}))}),(0,c.registerDataHook)("after","document/elements/copy",e=>{Lt()&&function(e){const t=window.elementorCommon?.storage;if(!t)return;const n=t.get(e);if(!n?.elements?.length)return;const o=n.elements.map(_e);t.set(e,{...n,elements:o})}(e.storageKey??"clipboard")})}function bo(){l.stylesRepository.register(ro),(0,p.__registerSlice)(v),(0,s.__registerPanel)(Ke),(0,o.registerElementType)(ae,e=>function(e){const t=window.elementor.modules.elements.types.Widget,n=function(e){const t=window;return class extends((0,o.createTemplatedElementView)(e)){eventsManagerConfig=t.elementorCommon.eventsManager.config;#e;isComponentCurrentlyEdited(){const e=(0,r.getCurrentDocument)();return e?.id===this.getComponentId()}getRenderContext(){const e=this.getNamespaceKey(),t=this._parent?.getRenderContext?.(),n=t?.[e];if(!this.#e)return t;const o=this.#e.overrides??{},r=n?.overrides??{};return{...t,[e]:{overrides:{...r,...o}}}}getResolverRenderContext(){const e=this.getNamespaceKey(),t=this.getRenderContext();return t?.[e]}afterSettingsResolve(e){const n=e.component_instance;return n&&(this.#e={overrides:n.overrides??{}},this.collection=t.elementor.createBackboneElementsCollection(n.elements),this.collection.models.forEach(le),e.component_instance="<template data-children-placeholder></template>"),e}getDomElement(){return this.children.findByIndex(0)?.getDomElement()??this.$el}attachBuffer(e,t){const n=e.$el.find("[data-children-placeholder]").get(0);n?n.replaceWith(t):super.attachBuffer(e,t)}getComponentId(){const e=this.options?.model?.get("settings")?.get("component_instance")?.value;return e.component_id.value}getContextMenuGroups(){const e=super.getContextMenuGroups().filter(e=>"save"!==e.name);return this.getComponentId()?se(e,this._getContextMenuConfig()):e}_getContextMenuConfig(){return{add:ce()?{general:{index:1,action:{name:"edit component",icon:"eicon-edit",title:()=>(0,d.__)("Edit Component","elementor"),isEnabled:()=>!0,callback:(e,t)=>this.editComponent(t)}}}:{},disable:{clipboard:["pasteStyle","resetStyle"]}}}async switchDocument(){const{isAllowedToSwitchDocument:t,lockedBy:n}=await f.getComponentLockStatus(this.getComponentId());t?X(this.getComponentId(),this.model.get("id"),this.el):e.showLockedByModal?.(n||"")}editComponent({trigger:e,location:t,secondaryLocation:n}){if(this.isComponentCurrentlyEdited())return;this.switchDocument();const o=this.model.get("editor_settings");ee({action:"edited",source:"user",component_uid:o?.component_uid,component_name:o?.title,location:t,secondary_location:n,trigger:e})}handleDblClick(e){if(e.stopPropagation(),!ce())return;const{triggers:t,locations:n,secondaryLocations:o}=this.eventsManagerConfig;this.editComponent({trigger:t.doubleClick,location:n.canvas,secondaryLocation:o.canvasElement})}events(){return{...super.events(),dblclick:this.handleDblClick}}attributes(){return{...super.attributes(),"data-elementor-id":this.getComponentId()}}}}({...e});return class extends t{getType(){return e.type}getView(){return n}getModel(){return function(){const e=(new(0,window.elementor.modules.elements.types.Widget)).getModel();return e.extend({initialize(t,n){e.prototype.initialize.call(this,t,n);const o=this.get("settings")?.get("component_instance");if(o?.value){const e=o.value.component_id?.value;e&&"number"==typeof e&&this.set("componentId",e)}this.set("isGlobal",!0)},getTitle(){const e=this.get("editor_settings"),t=e?.title;if(t)return t;const n=e?.component_uid;if(n){const e=S((0,p.__getState)(),n);if(e?.name)return e.name}return window.elementor.getElementData(this).title},getComponentId(){return this.get("componentId")||null},getComponentName(){return this.getTitle()},getComponentUid(){const e=this.get("editor_settings");return e?.component_uid||null}})}()}}}({...e,showLockedByModal:rn})),(0,c.registerDataHook)("dependency","editor/documents/close",e=>((0,r.getV1CurrentDocument)().config.type===Mt&&(e.mode="autosave"),!0)),(0,c.registerDataHook)("after","preview/drop",te),window.elementorCommon.__beforeSave=lo,(0,a.injectTab)({id:"components",label:(0,d.__)("Components","elementor"),component:Ot,position:1}),(0,n.injectIntoTop)({id:"create-component-popup",component:qt}),(0,n.injectIntoLogic)({id:"components-populate-store",component:Yn}),(0,n.injectIntoTop)({id:"edit-component",component:nn}),(0,i.injectIntoPanelHeaderTop)({id:"component-panel-header",component:Je}),(0,c.registerDataHook)("after","editor/documents/attach-preview",async()=>{const{id:e,config:t}=(0,r.getV1CurrentDocument)();e&&function(e){f.invalidateComponentConfigCache(e),(0,p.__dispatch)(v.actions.removeStyles({id:e}))}(e),await ct(t?.elements??[])}),(0,i.registerFieldIndicator)({fieldType:i.FIELD_TYPE.SETTINGS,id:"component-overridable-prop",priority:1,indicator:Bn}),(0,i.registerControlReplacement)({id:Rt,component:On,condition:({value:e})=>ue.isValid(e)}),(0,i.registerEditingPanelReplacement)({id:"component-instance-edit-panel",condition:(e,t)=>"e-component"===t.key,component:kn}),o.settingsTransformersRegistry.register("component-instance",N),o.settingsTransformersRegistry.register("overridable",K),o.settingsTransformersRegistry.register("override",F),(0,c.registerDataHook)("after","document/elements/duplicate",(e,t)=>{yo(t)}),(0,c.registerDataHook)("after","document/elements/paste",(e,t)=>{yo(t)}),(0,c.registerDataHook)("after","document/elements/import",(e,t)=>{yo(t)}),(0,c.registerDataHook)("dependency","document/elements/delete",e=>{const t=(0,p.__getState)();if(!t)return!0;const n=j(t);if(!n)return!0;const o=R(t,n);if(!o||0===Object.keys(o.props).length)return!0;const r=e.containers??(e.container?[e.container]:[]);if(0===r.length)return!0;const i=function(e){return e.filter(Boolean).flatMap(e=>[e,...(0,J.getAllDescendants)(e)]).map(e=>e.model?.get?.("id")??e.id).filter(e=>Boolean(e))}(r);if(0===i.length)return!0;const a=Object.entries(o.props).filter(([,e])=>i.includes(e.elementId)).map(([e])=>e);if(0===a.length)return!0;const s=Object.fromEntries(Object.entries(o.props).filter(([e])=>!a.includes(e)));let l=o.groups;for(const e of a)l=oe(l,e);return(0,p.__dispatch)(v.actions.setOverridableProps({componentId:n,overridableProps:{...o,props:s,groups:l}})),!0}),function(){const{setMCPDescription:e}=(0,Nn.getMCPByDomain)("components");e("Elementor Editor Components MCP - Tools for creating and managing reusable components. \n Components are reusable blocks of content that can be used multiple times across the pages, its a widget which contains a set of elements and styles."),qn()}(),(0,c.blockCommand)({command:"document/elements/create",condition:to}),(0,c.blockCommand)({command:"document/elements/move",condition:no}),(0,c.blockCommand)({command:"document/elements/paste",condition:oo}),(0,c.blockCommand)({command:"document/elements/create",condition:jt}),(0,c.blockCommand)({command:"document/elements/move",condition:At}),(0,c.blockCommand)({command:"document/elements/paste",condition:$t}),(0,c.registerDataHook)("after","document/elements/paste",(e,t)=>{ho(t)}),(0,c.registerDataHook)("after","document/elements/import",(e,t)=>{ho(t)}),(0,c.registerDataHook)("dependency","preview/drop",e=>{if(!Lt())return!0;const t=e.containers??(e.container?[e.container]:[]);for(const n of t){if(!fo(n))continue;const{shouldRedirect:t,container:o}=go(n);if(t)if(e.containers){const t=e.containers.indexOf(n);e.containers[t]=o}else e.container=o}return!0}),(0,c.registerDataHook)("after","document/elements/delete",e=>{if(!Lt())return;const t=e.containers??(e.container?[e.container]:[]);for(const e of t){if(!e.parent||!fo(e.parent))continue;const t=e.parent;0===t.children?.length&&uo(e.parent)}}),_o()}(window.elementorV2=window.elementorV2||{}).editorComponents=t}(),window.elementorV2.editorComponents?.init?.();