← All changes
|
assets/js/packages/editor-components/editor-components.min.js
+50
-18
4.3.1
→
3.34.0-beta1
View file →
| @@ -1,21 +1,53 @@ | ||
| 1 | -(function(){var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__copyProps=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},__toESM=(n,r,a)=>(a=n==null?{}:e(i(n)),__copyProps(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),o=__toESM(__commonJSMin(((e,t)=>{var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},__copyProps=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let c of a(t))!s.call(e,c)&&c!==n&&r(e,c,{get:()=>t[c],enumerable:!(o=i(t,c))||o.enumerable});return e},__toESM=(e,t,i)=>(i=e==null?{}:n(o(e)),__copyProps(t||!e||!e.__esModule?r(i,`default`,{value:e,enumerable:!0}):i,e)),__toCommonJS=e=>__copyProps(r({},`__esModule`,{value:!0}),e),c={};__export(c,{COMPONENT_WIDGET_TYPE:()=>tr,ComponentInstanceProvider:()=>ComponentInstanceProvider,ComponentItem:()=>Je,ComponentName:()=>ComponentName,ComponentSearch:()=>ComponentSearch,ComponentsList:()=>ComponentsList,DetachAction:()=>DetachAction,EditComponentAction:()=>EditComponentAction,EmptySearchResult:()=>EmptySearchResult,InstanceEmptyState:()=>EmptyState2,InstancePanelBody:()=>InstancePanelBody,InstancePanelHeader:()=>InstancePanelHeader,LoadingComponents:()=>LoadingComponents,OverridablePropProvider:()=>OverridablePropProvider,SLICE_NAME:()=>g,SearchProvider:()=>SearchProvider,apiClient:()=>y,componentInstanceOverridePropTypeUtil:()=>z,componentInstanceOverridesPropTypeUtil:()=>H,componentInstancePropTypeUtil:()=>U,componentOverridablePropTypeUtil:()=>V,componentsActions:()=>vn,componentsSelectors:()=>yn,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,selectComponentByUid:()=>selectComponentByUid,selectCreatedThisSession:()=>he,selectOverridableProps:()=>_e,selectPath:()=>ye,slice:()=>b,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}),t.exports=__toCommonJS(c);var l=globalThis.elementorV2.editor,u=globalThis.elementorV2.editorCanvas,d=globalThis.elementorV2.editorDocuments,ee=globalThis.elementorV2.editorEditingPanel,f=globalThis.elementorV2.editorElementsPanel,p=globalThis.elementorV2.editorEmbeddedDocumentsManager,m=globalThis.elementorV2.editorV1Adapters,te=globalThis.elementorV2.store,ne=globalThis.wp.i18n,re=globalThis.elementorV2.editorCanvas,ie=globalThis.elementorV2.store,h=globalThis.elementorV2.store,ae={data:[],unpublishedData:[],loadStatus:`idle`,createdThisSession:[],archivedThisSession:[],path:[],currentComponentId:null,updatedComponentNames:{},sanitized:{}},g=`components`,oe=globalThis.elementorV2.store,se=globalThis.elementorV2.store,ce=globalThis.elementorV2.editorV1Adapters,_=globalThis.elementorV2.httpClient,v=`elementor/v1/components`,getParams=e=>({action:`get_document_config`,unique_id:`document-config-${e}`,data:{id:e}}),y={get:()=>(0,_.httpService)().get(`${v}`).then(e=>e.data.data),create:e=>(0,_.httpService)().post(`${v}`,e).then(e=>e.data.data),updateStatuses:(e,t)=>(0,_.httpService)().put(`${v}/status`,{ids:e,status:t}),getComponentConfig:e=>ce.ajax.load(getParams(e)),invalidateComponentConfigCache:e=>ce.ajax.invalidateCache(getParams(e)),getComponentLockStatus:async e=>await(0,_.httpService)().get(`${v}/lock-status`,{params:{componentId:e}}).then(e=>{let{is_current_user_allow_to_edit:t,locked_by:n}=e.data.data;return{isAllowedToSwitchDocument:t,lockedBy:n||``}}),lockComponent:async e=>await(0,_.httpService)().post(`${v}/lock`,{componentId:e}).then(e=>e.data),unlockComponent:async e=>await(0,_.httpService)().post(`${v}/unlock`,{componentId:e}).then(e=>e.data),getOverridableProps:async e=>await(0,_.httpService)().get(`${v}/overridable-props`,{params:{"componentIds[]":e}}).then(e=>e.data),updateArchivedComponents:async(e,t)=>await(0,_.httpService)().post(`${v}/archive`,{componentIds:e,status:t}).then(e=>e.data.data),updateComponentTitle:(e,t)=>(0,_.httpService)().post(`${v}/update-titles`,{components:e,status:t}).then(e=>e.data.data),validate:async e=>await(0,_.httpService)().post(`${v}/create-validate`,e).then(e=>e.data)},le=(0,se.__createAsyncThunk)(`components/load`,async()=>await y.get()),ue=new Map;function registerComponentsReducer(e,t){ue.set(`${g}/${e}`,t)}function createComponentsAction(e){let t=(0,oe.__createAction)(`${g}/${e}`);return{action:t,register(t){registerComponentsReducer(e,t)},dispatch(e){(0,oe.__dispatch)(t(e))}}}var de=(0,oe.__createSlice)({name:g,initialState:ae,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})=>{let 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})=>{let 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})=>{let n=e.data.find(e=>e.id===t.componentId);n&&(n.overridableProps=t.overridableProps)},loadOverridableProps:(e,{payload:t})=>{Object.keys(t).forEach(n=>{let r=Number(n),i=t[r],a=e.data.find(e=>e.id===r);!a||!i||(a.overridableProps=i)})},rename:(e,{payload:t})=>{let 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(le.fulfilled,(e,{payload:t})=>{e.data=t,e.loadStatus=`idle`}),e.addCase(le.pending,e=>{e.loadStatus=`pending`}),e.addCase(le.rejected,e=>{e.loadStatus=`error`})}}),b={...de,reducer(e,t){let n=de.reducer(e,t),r=ue.get(t.type);if(!r||!n)return n;let i=structuredClone(n);return r(i,t),i}},selectData=e=>e[g].data,selectArchivedThisSession=e=>e[g].archivedThisSession,selectLoadStatus=e=>e[g].loadStatus,selectUnpublishedData=e=>e[g].unpublishedData,getCreatedThisSession=e=>e[g].createdThisSession,getPath=e=>e[g].path,getCurrentComponentId=e=>e[g].currentComponentId,selectComponent=(e,t)=>e[g].data.find(e=>e.id===t),useComponent=e=>(0,h.__useSelector)(t=>e?selectComponent(t,e):null),selectComponentByUid=(e,t)=>e[g].data.find(e=>e.uid===t)??e[g].unpublishedData.find(e=>e.uid===t),fe=(0,h.__createSelector)(selectData,selectUnpublishedData,(e,t)=>[...t.map(e=>({uid:e.uid,name:e.name,overridableProps:e.overridableProps})),...e.filter(e=>!e.isArchived)]),pe=(0,h.__createSelector)(selectUnpublishedData,e=>e),me=(0,h.__createSelector)(selectLoadStatus,e=>e===`pending`);(0,h.__createSelector)(selectLoadStatus,e=>e===`error`);var he=(0,h.__createSelector)(getCreatedThisSession,e=>e),ge={props:{},groups:{items:{},order:[]}},_e=(0,h.__createSelector)(selectComponent,e=>{if(e)return e.overridableProps??ge}),useOverridableProps=e=>(0,h.__useSelector)(t=>e?_e(t,e):null),ve=(0,h.__createSelector)(selectComponent,e=>!!e?.overridableProps),ye=(0,h.__createSelector)(getPath,e=>e),be=(0,h.__createSelector)(getCurrentComponentId,e=>e),xe=(0,h.__createSelector)(selectData,getCurrentComponentId,(e,t)=>e.find(e=>e.id===t)),useCurrentComponentId=()=>(0,h.__useSelector)(be),useCurrentComponent=()=>(0,h.__useSelector)(xe),Se=(0,h.__createSelector)(e=>e[g].updatedComponentNames,e=>Object.entries(e).map(([e,t])=>({componentId:Number(e),title:t}))),useSanitizedComponents=()=>(0,h.__useSelector)(e=>e[g].sanitized),useIsSanitizedComponent=(e,t)=>{let n=useSanitizedComponents();return e?!!n[e]?.[t]:!1},Ce=globalThis.elementorV2.editorV1Adapters,getComponentDocumentParams=e=>({action:`get_document_config`,unique_id:`document-${e}`,data:{id:e}}),we=new Map,getComponentDocumentData=e=>{let t=we.get(e);if(t)return t;let n=Ce.ajax.load(getComponentDocumentParams(e)).catch(()=>null).finally(()=>we.delete(e));return we.set(e,n),n},Te=(0,re.createTransformer)(async({component_id:e,overrides:t})=>{let n=pe((0,ie.__getState)()).find(({uid:t})=>t===e),r=t?.reduce((e,t)=>({...e,...t}),{});if(n)return{elements:structuredClone(n.elements),overrides:r};if(typeof e!=`number`)throw Error(`Component ID "${e}" not valid.`);return{elements:(await getComponentDocumentData(e))?.elements??[],overrides:r}}),Ee=globalThis.elementorV2.editorCanvas,De=(0,Ee.createTransformer)((e,t)=>{let{overrides:n}=t.renderContext??{},r=n?.[e.override_key];return r?isOriginValueOverride(e.origin_value)?transformOverride(e,t,r):r:e.origin_value});function transformOverride(e,t,n){let r=Ee.settingsTransformersRegistry.get(`override`);if(!r)return null;let i=r(e.origin_value.value,t);if(!i)return null;let[a]=Object.keys(i);return{[a]:n}}function isOriginValueOverride(e){return e.$$type===`override`}var Oe=(0,globalThis.elementorV2.editorCanvas.createTransformer)(e=>{let{override_key:t,override_value:n}=e;return{[t]:n}}),x=__toESM(globalThis.React),ke=globalThis.React,Ae=globalThis.elementorV2.editorUi,je=globalThis.elementorV2.ui,Me=globalThis.elementorV2.store,useComponents=()=>({components:(0,Me.__useSelector)(fe),isLoading:(0,Me.__useSelector)(me)}),Ne=globalThis.elementorV2.utils,Pe=`4.0`;function isProComponentsSupported(){return(0,Ne.hasProInstalled)()&&(0,Ne.isProAtLeast)(Pe)}function isProOutdatedForComponents(){return(0,Ne.hasProInstalled)()&&!(0,Ne.isProAtLeast)(Pe)}var Fe=__toESM(globalThis.React),Ie=globalThis.elementorV2.icons,Le=globalThis.elementorV2.ui,Re=globalThis.wp.i18n,ze=__toESM(globalThis.React),Be=globalThis.React,Ve=globalThis.elementorV2.utils,He=(0,Be.createContext)(void 0),SearchProvider=({children:e,localStorageKey:t})=>{let{debouncedValue:n,handleChange:r,inputValue:i}=(0,Ve.useSearchState)({localStorageKey:t}),clearSearch=()=>{r(``)};return ze.createElement(He.Provider,{value:{handleChange:r,clearSearch,searchValue:n,inputValue:i}},e)},useSearch=()=>{let e=(0,Be.useContext)(He);if(!e)throw Error(`useSearch must be used within a SearchProvider`);return e},ComponentSearch=()=>{let{inputValue:e,handleChange:t}=useSearch();return Fe.createElement(Le.Stack,{direction:`row`,gap:.5,sx:{width:`100%`,px:2,py:1.5}},Fe.createElement(Le.Box,{sx:{flexGrow:1}},Fe.createElement(Le.TextField,{role:`search`,fullWidth:!0,size:`tiny`,value:e,placeholder:(0,Re.__)(`Search`,`elementor`),onChange:e=>t(e.target.value),InputProps:{startAdornment:Fe.createElement(Le.InputAdornment,{position:`start`},Fe.createElement(Ie.SearchIcon,{fontSize:`tiny`}))}})))},S=__toESM(globalThis.React),Ue=globalThis.elementorV2.icons,C=globalThis.elementorV2.ui,w=globalThis.wp.i18n,We=globalThis.elementorV2.editorCurrentUser,useComponentsPermissions=()=>{let{isAdmin:e}=(0,We.useCurrentUserCapabilities)();return{canCreate:e,canEdit:e,canDelete:e,canRename:e}},T=__toESM(globalThis.React),Ge=globalThis.React,Ke=globalThis.elementorV2.editorUi,qe=globalThis.elementorV2.icons,E=globalThis.elementorV2.ui,Je=(0,Ge.forwardRef)(({component:e,disabled:t=!0,draggable:n,onDragStart:r,onDragEnd:i,onClick:a,isEditing:o=!1,error:s=null,nameSlot:c,endSlot:l,...u},d)=>T.createElement(E.ListItemButton,{disabled:t,draggable:n,onDragStart:r,onDragEnd:i,shape:`rounded`,ref:d,sx:{border:`solid 1px`,borderColor:`divider`,py:.5,px:1,display:`flex`,width:`100%`,alignItems:`center`,gap:1},...u},T.createElement(E.Box,{display:`flex`,alignItems:`center`,gap:1,minWidth:0,flexGrow:1,onClick:a},T.createElement(E.ListItemIcon,{size:`tiny`},T.createElement(qe.ComponentsIcon,{fontSize:`tiny`})),T.createElement(Ye,{isActive:o,isError:!!s},T.createElement(E.Box,{display:`flex`,flex:1,minWidth:0,flexGrow:1},c??T.createElement(ComponentName,{name:e.name})))),l)),Ye=(0,E.styled)(E.Box,{shouldForwardProp:e=>e!==`isActive`&&e!==`isError`})(({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?T.createElement(Ke.EditableField,{ref:t.ref,as:E.Typography,variant:`caption`,...t.getProps()}):T.createElement(Ke.EllipsisWithTooltip,{title:e,as:E.Typography,variant:`caption`,color:`text.primary`})}var Xe=__toESM(globalThis.React),Ze=globalThis.elementorV2.ui,Qe=Array.from({length:3},(e,t)=>t),$e=80,LoadingComponents=()=>Xe.createElement(Ze.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}}},Qe.map(e=>Xe.createElement(Ze.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 ${e*$e}ms forwards`,"@keyframes e-loading-fade-in":{from:{opacity:0,transform:`translateY(4px)`},to:{opacity:1,transform:`translateY(0)`}}}},Xe.createElement(Ze.Skeleton,{animation:`wave`,variant:`rounded`,width:24,height:24}),Xe.createElement(Ze.Skeleton,{animation:`wave`,variant:`rounded`,width:`60%`,height:14})))),et=`http://go.elementor.com/components-guide-article`,tt=`https://go.elementor.com/go-pro-components/`,nt=`/wp-admin/plugins.php`,D={fontSize:`0.875rem !important`,fontWeight:`500 !important`};function ComponentsList(){let{components:e,isLoading:t,searchValue:n}=useFilteredComponents();return t?S.createElement(LoadingComponents,null):e?.length?S.createElement(C.List,{sx:{display:`flex`,flexDirection:`column`,gap:1,px:2}},e.map(e=>S.createElement(Je,{key:e.uid,component:e}))):n.length?S.createElement(EmptySearchResult,null):isProOutdatedForComponents()?S.createElement(ProOutdatedEmptyState,null):isProComponentsSupported()?S.createElement(EmptyState,null):S.createElement(ProUpgradeEmptyState,null)}var ProUpgradeEmptyState=()=>S.createElement(C.Stack,{alignItems:`center`,justifyContent:`start`,height:`100%`,sx:{px:2,py:4},gap:2,overflow:`hidden`},S.createElement(C.Stack,{alignItems:`center`,gap:1},S.createElement(Ue.ComponentsIcon,{fontSize:`large`,sx:{color:`text.secondary`}}),S.createElement(C.Typography,{align:`center`,variant:`subtitle2`,color:`text.secondary`,sx:D},(0,w.__)(`Create Reusable Components`,`elementor`)),S.createElement(C.Typography,{align:`center`,variant:`caption`,color:`secondary`,sx:{maxWidth:200}},(0,w.__)(`Create design elements that sync across your entire site.`,`elementor`))),S.createElement(C.Button,{variant:`contained`,color:`promotion`,size:`small`,startIcon:S.createElement(Ue.CrownFilledIcon,null),href:tt,target:`_blank`,rel:`noopener noreferrer`},(0,w.__)(`Upgrade now`,`elementor`))),ProOutdatedEmptyState=()=>S.createElement(C.Stack,{alignItems:`center`,justifyContent:`start`,height:`100%`,sx:{px:2,py:4,maxWidth:268,m:`auto`},gap:2,overflow:`hidden`},S.createElement(C.Stack,{alignItems:`center`,gap:1},S.createElement(Ue.ComponentsIcon,{fontSize:`large`,sx:{color:`text.secondary`}}),S.createElement(C.Typography,{align:`center`,variant:`subtitle2`,color:`text.secondary`,sx:D},(0,w.__)(`Create Reusable Components`,`elementor`)),S.createElement(C.Typography,{align:`center`,variant:`caption`,color:`secondary`},(0,w.__)(`Create design elements that sync across your entire site.`,`elementor`)),S.createElement(C.Typography,{align:`center`,variant:`caption`,color:`secondary`,sx:{mt:1}},(0,w.__)(`To create components, update Elementor Pro to the latest version.`,`elementor`))),S.createElement(C.Button,{variant:`text`,color:`info`,size:`small`,href:nt,target:`_blank`,rel:`noopener noreferrer`},(0,w.__)(`Update Elementor Pro`,`elementor`))),EmptyState=()=>{let{canCreate:e}=useComponentsPermissions();return S.createElement(C.Stack,{alignItems:`center`,justifyContent:`start`,height:`100%`,sx:{px:2,py:4},gap:2,overflow:`hidden`},S.createElement(C.Stack,{alignItems:`center`,gap:1},S.createElement(Ue.ComponentsIcon,{fontSize:`large`,sx:{color:`text.secondary`}}),S.createElement(C.Typography,{align:`center`,variant:`subtitle2`,color:`text.secondary`,sx:D},(0,w.__)(`No components yet`,`elementor`)),S.createElement(C.Typography,{align:`center`,variant:`caption`,color:`secondary`,sx:{maxWidth:200}},(0,w.__)(`Components are reusable blocks that sync across your site.`,`elementor`),S.createElement(`br`,null),e?(0,w.__)(`Create once, use everywhere.`,`elementor`):(0,w.__)(`With your current role, you cannot create components. Contact an administrator to create one.`,`elementor`)),S.createElement(C.Link,{href:et,target:`_blank`,rel:`noopener noreferrer`,variant:`caption`,color:`info.main`},(0,w.__)(`Learn more about components`,`elementor`))),e&&S.createElement(S.Fragment,null,S.createElement(C.Divider,{sx:{width:`100%`}}),S.createElement(C.Stack,{alignItems:`center`,gap:1,width:`100%`},S.createElement(C.Typography,{align:`center`,variant:`subtitle2`,color:`text.secondary`,sx:D},(0,w.__)(`Create your first one:`,`elementor`)),S.createElement(C.Typography,{align:`center`,variant:`caption`,color:`secondary`,sx:{maxWidth:228}},(0,w.__)(`Right-click any div-block or flexbox on your canvas or structure and select "Create component"`,`elementor`)))))},EmptySearchResult=()=>{let{searchValue:e,clearSearch:t}=useSearch();return S.createElement(C.Stack,{color:`text.secondary`,pt:5,alignItems:`center`,gap:1,overflow:`hidden`,justifySelf:`center`},S.createElement(Ue.ComponentsIcon,null),S.createElement(C.Box,{sx:{width:`100%`}},S.createElement(C.Typography,{align:`center`,variant:`subtitle2`,color:`inherit`,sx:D},(0,w.__)(`Sorry, nothing matched`,`elementor`)),e&&S.createElement(C.Typography,{variant:`subtitle2`,color:`inherit`,sx:{...D,display:`flex`,width:`100%`,justifyContent:`center`}},S.createElement(`span`,null,`“`),S.createElement(`span`,{style:{maxWidth:`80%`,overflow:`hidden`,textOverflow:`ellipsis`}},e),S.createElement(`span`,null,`”.`))),S.createElement(C.Typography,{align:`center`,variant:`caption`,color:`inherit`},(0,w.__)(`Try something else.`,`elementor`)),S.createElement(C.Typography,{align:`center`,variant:`caption`,color:`inherit`},S.createElement(C.Link,{color:`secondary`,variant:`caption`,component:`button`,onClick:t},(0,w.__)(`Clear & try again`,`elementor`))))},useFilteredComponents=()=>{let{components:e,isLoading:t}=useComponents(),{searchValue:n}=useSearch();return{components:e.filter(e=>e.name.toLowerCase().includes(n.toLowerCase())),isLoading:t,searchValue:n}},rt=__toESM(globalThis.React),it=globalThis.wp.i18n,O=__toESM(globalThis.React),at=globalThis.elementorV2.icons,k=globalThis.elementorV2.ui,ot=globalThis.wp.i18n;function ComponentsUpgradeAlert({title:e,description:t,upgradeUrl:n}){return O.createElement(k.Box,{sx:{mt:`auto`,position:`sticky`,bottom:0}},O.createElement(k.Alert,{variant:`standard`,color:`promotion`,icon:O.createElement(at.CrownFilledIcon,{fontSize:`tiny`}),role:`status`,size:`small`,action:O.createElement(k.AlertAction,{variant:`contained`,color:`promotion`,href:n,target:`_blank`,rel:`noopener noreferrer`},(0,ot.__)(`Upgrade now`,`elementor`)),sx:{m:2,mt:1}},O.createElement(k.AlertTitle,null,e),O.createElement(k.Typography,{variant:`caption`},t)))}var st=`https://go.elementor.com/go-pro-components-exist-footer/`;function ComponentsProNotification(){return rt.createElement(ComponentsUpgradeAlert,{title:(0,it.__)(`Create new components`,`elementor`),description:(0,it.__)(`Creating new components requires an active Pro subscription.`,`elementor`),upgradeUrl:st})}var ct=__toESM(globalThis.React),lt=globalThis.wp.i18n,A=__toESM(globalThis.React),ut=globalThis.elementorV2.icons,dt=globalThis.elementorV2.ui,ft=globalThis.wp.i18n,pt=`/wp-admin/plugins.php`;function ComponentsUpdateAlert({title:e,description:t}){return A.createElement(dt.Box,{sx:{mt:`auto`,position:`sticky`,bottom:0}},A.createElement(dt.Alert,{variant:`standard`,color:`info`,icon:A.createElement(ut.InfoCircleFilledIcon,{fontSize:`tiny`}),role:`status`,size:`small`,action:A.createElement(dt.AlertAction,{variant:`contained`,color:`info`,href:pt,target:`_blank`,rel:`noopener noreferrer`},(0,ft.__)(`Upgrade Now`,`elementor`)),sx:{m:2,mt:1}},A.createElement(dt.AlertTitle,null,e),A.createElement(dt.Typography,{variant:`caption`},t)))}function ComponentsUpdateNotification(){return ct.createElement(ComponentsUpdateAlert,{title:(0,lt.__)(`Create new Components`,`elementor`),description:(0,lt.__)(`To create new components, update Elementor Pro to the latest version.`,`elementor`)})}var mt=`components-full-height-panel`,ht=` | |
| 2 | -#elementor-panel-page-elements { | |
| 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 mt}});var n=window.elementorV2.editor,o=window.elementorV2.editorCanvas,r=window.elementorV2.editorDocuments,a=window.elementorV2.editorEditingPanel,i=window.elementorV2.editorElementsPanel,s=window.elementorV2.editorStylesRepository,l=window.elementorV2.editorV1Adapters,c=window.elementorV2.store,d=window.wp.i18n,m=window.elementorV2.httpClient;const u="elementor/v1/components",p=`${u}/lock`,g=`${u}/unlock`,h=`${u}/lock-status`,y=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=>l.ajax.load(y(e)),invalidateComponentConfigCache:e=>l.ajax.invalidateCache(y(e)),getComponentLockStatus:async e=>await(0,m.httpService)().get(`${h}`,{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(p,{componentId:e}).then(e=>e.data),unlockComponent:async e=>await(0,m.httpService)().post(g,{componentId:e}).then(e=>e.data)},_=(0,c.__createAsyncThunk)("components/load",async()=>await f.get()),v="components",w=(0,c.__createSlice)({name:v,initialState:{data:[],unpublishedData:[],loadStatus:"idle",styles:{},createdThisSession:[],path:[],currentComponentId:null},reducers:{add:(e,{payload:t})=>{Array.isArray(t)?e.data=[...e.data,...t]:e.data.unshift(t)},load:(e,{payload:t})=>{e.data=t},addUnpublished:(e,{payload:t})=>{e.unpublishedData.unshift(t)},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)},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)}},extraReducers:e=>{e.addCase(_.fulfilled,(e,{payload:t})=>{e.data=t,e.loadStatus="idle"}),e.addCase(_.pending,e=>{e.loadStatus="pending"}),e.addCase(_.rejected,e=>{e.loadStatus="error"})}}),E=e=>e[v].loadStatus,b=e=>e[v].unpublishedData,C=(0,c.__createSelector)(e=>e[v].data,b,(e,t)=>[...t.map(e=>({uid:e.uid,name:e.name})),...e]),S=(0,c.__createSelector)(b,e=>e),x=(0,c.__createSelector)(E,e=>"pending"===e),I=((0,c.__createSelector)(E,e=>"error"===e),e=>e[v].styles??{}),T=(0,c.__createSelector)(e=>e[v].styles??{},e=>Object.values(e).flat()),k=(0,c.__createSelector)(e=>e[v].createdThisSession,e=>e),D={props:{},groups:{items:{},order:[]}},P=(0,c.__createSelector)((e,t)=>e[v].data.find(e=>e.id===t),e=>{if(e)return e.overridableProps??D}),$=(0,c.__createSelector)(e=>e[v].path,e=>e),V=(0,c.__createSelector)(e=>e[v].currentComponentId,e=>e),L=async e=>{const t=(0,r.getV1DocumentsManager)();try{return await t.request(e)}catch{return null}},O=(0,o.createTransformer)(async({component_id:e})=>{const t=S((0,c.__getState)()).find(({uid:t})=>t===e);if(t)return structuredClone(t.elements);if("number"!=typeof e)throw new Error(`Component ID "${e}" not found.`);const n=await L(e);return n?.elements??[]}),M=(0,o.createTransformer)(async(e,t)=>await async function(e,t){if(!e.origin_value||!e.origin_value.value||!e.origin_value.$$type)return null;const n=o.settingsTransformersRegistry.get(e.origin_value.$$type);if(!n)return null;try{return await n(e.origin_value.value,t)}catch{return null}}(e,t));var z=window.React,j=window.elementorV2.editorUi,N=window.elementorV2.icons,B=window.elementorV2.ui,F=window.elementorV2.utils;const U=(0,z.createContext)(void 0),A=({children:e,localStorageKey:t})=>{const{debouncedValue:n,handleChange:o,inputValue:r}=(0,F.useSearchState)({localStorageKey:t});return z.createElement(U.Provider,{value:{handleChange:o,clearSearch:()=>{o("")},searchValue:n,inputValue:r}},e)},R=()=>{const e=(0,z.useContext)(U);if(!e)throw new Error("useSearch must be used within a SearchProvider");return e},G=()=>{const{inputValue:e,handleChange:t}=R();return z.createElement(B.Stack,{direction:"row",gap:.5,sx:{width:"100%",px:2,py:1.5}},z.createElement(B.Box,{sx:{flexGrow:1}},z.createElement(B.TextField,{role:"search",fullWidth:!0,size:"tiny",value:e,placeholder:(0,d.__)("Search","elementor"),onChange:e=>t(e.target.value),InputProps:{startAdornment:z.createElement(B.InputAdornment,{position:"start"},z.createElement(N.SearchIcon,{fontSize:"tiny"}))}})))},K=()=>({components:(0,c.__useSelector)(C),isLoading:(0,c.__useSelector)(x)});var W=window.elementorV2.editorElements,q=window.elementorV2.mixpanel;const H=({action:e,...t})=>{const{dispatchEvent:n,config:o}=(0,q.getMixpanel)();if(!o?.names?.components?.[e])return;const r=o.names.components[e];n?.(r,t)},Y=(e,t)=>{if("e-component"!==t.model.get("widgetType"))return;const n=t.model.get("editor_settings"),o=n?.title,r=n?.component_uid,a=t.id,i=k((0,c.__getState)()),s=r&&i.includes(r),l=window.elementorCommon.eventsManager.config,{locations:d,secondaryLocations:m}=l;H({action:"instanceAdded",instance_id:a,component_uid:r,component_name:o,is_same_session_reuse:s,location:d.widgetPanel,secondary_location:m.componentsTab})},J="e-component";function Z(e){const t=e.get("editSettings");t&&t.set("inactive",!0);const n=e.get("elements");n&&n.forEach(e=>{Z(e)})}const Q=async e=>{const t=e.map(async({widgetType:e,elType:t,elements:n,settings:o})=>{const r=[];if([e,t].includes(J)){const e=o?.component_instance?.value?.component_id,t=await L(e);n=t?.elements,Boolean(e)&&r.push(e)}return n?.length&&r.push(...await Q(n)),r}),n=(await Promise.all(t)).flat();return Array.from(new Set(n))};function X(e){return[...Object.values(e.styles??{}),...(e.elements??[]).flatMap(X)]}async function ee(e){const t=await Q(e);return async function(e){(await Promise.all(e.map(L))).filter(e=>!!e).some(r.isDocumentDirty)&&(0,r.setDocumentModifiedStatus)(!0)}(t),async function(e){if(!e.length)return;const t=I((0,c.__getState)()),n=e.filter(e=>!t[e]);n.length&&async function(e){!function(e){const t=Object.fromEntries(e.map(([e,t])=>[e,X(t)]));(0,c.__dispatch)(w.actions.addStyles(t))}(await async function(e){return Promise.all(e.map(async e=>[e,await f.getComponentConfig(e)]))}(e))}(n)}(t)}const te=(e,t)=>{(0,W.replaceElement)({currentElement:e,newElement:ne(t),withHistory:!1})},ne=e=>({elType:"widget",widgetType:"e-component",settings:{component_instance:{$$type:"component-instance",value:{component_id:e.id??e.uid}}},editor_settings:{title:e.name,component_uid:e.uid}}),oe=({component:e})=>{const t=ne(e);return z.createElement(B.ListItemButton,{draggable:!0,onDragStart:()=>(0,o.startDragElementFromPanel)(t),onDragEnd:()=>{ee([t]),(0,o.endDragElementFromPanel)()},shape:"rounded",sx:{border:"solid 1px",borderColor:"divider",py:.5,px:1}},z.createElement(B.Box,{sx:{display:"flex",width:"100%",alignItems:"center",gap:1},onClick:()=>{re(t)}},z.createElement(B.ListItemIcon,{size:"tiny"},z.createElement(N.ComponentsIcon,{fontSize:"tiny"})),z.createElement(B.ListItemText,{primary:z.createElement(B.Typography,{variant:"caption",sx:{color:"text.primary"}},e.name)})))},re=e=>{const{container:t,options:n}=(()=>{const e=(0,W.getCurrentDocumentContainer)(),t=function(){const e=(0,W.getSelectedElements)();if(1===e.length)return(0,W.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");ee([e]),(0,W.dropElement)({containerId:t.id,model:e,options:{...n,useHistory:!1,scrollIntoView:!0}})},ae=Array.from({length:6},(e,t)=>t),ie=()=>z.createElement(B.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"}}},ae.map(e=>z.createElement(B.ListItemButton,{key:e,sx:{border:"solid 1px",borderColor:"divider",py:.5,px:1},shape:"rounded"},z.createElement(B.Box,{display:"flex",gap:1,width:"100%"},z.createElement(B.Skeleton,{variant:"text",width:"24px",height:"36px"}),z.createElement(B.Skeleton,{variant:"text",width:"100%",height:"36px"})))));function se(){const{components:e,isLoading:t,searchValue:n}=de();return t?z.createElement(ie,null):e&&0!==e.length?z.createElement(B.List,{sx:{display:"flex",flexDirection:"column",gap:1,px:2}},e.map(e=>z.createElement(oe,{key:e.uid,component:e}))):n.length>0?z.createElement(ce,null):z.createElement(le,null)}const le=()=>z.createElement(B.Stack,{alignItems:"center",justifyContent:"center",height:"100%",sx:{px:2.5,pt:10},gap:1.75,overflow:"hidden"},z.createElement(B.Icon,{fontSize:"large"},z.createElement(N.EyeIcon,{fontSize:"large"})),z.createElement(B.Typography,{align:"center",variant:"subtitle2",color:"text.secondary",fontWeight:"bold"},(0,d.__)("Text that explains that there are no Components yet.","elementor")),z.createElement(B.Typography,{variant:"caption",align:"center",color:"text.secondary"},(0,d.__)("Once you have Components, this is where you can manage them—rearrange, duplicate, rename and delete irrelevant classes.","elementor")),z.createElement(B.Divider,{sx:{width:"100%"},color:"text.secondary"}),z.createElement(B.Typography,{align:"left",variant:"caption",color:"text.secondary"},(0,d.__)("To create a component, first design it, then choose one of three options:","elementor")),z.createElement(B.Typography,{align:"left",variant:"caption",color:"text.secondary",sx:{display:"flex",flexDirection:"column"}},z.createElement("span",null,(0,d.__)("1. Right-click and select Create Component","elementor")),z.createElement("span",null,(0,d.__)("2. Use the component icon in the Structure panel","elementor")),z.createElement("span",null,(0,d.__)("3. Use the component icon in the Edit panel header","elementor")))),ce=()=>{const{searchValue:e,clearSearch:t}=R();return z.createElement(B.Stack,{color:"text.secondary",pt:5,alignItems:"center",gap:1,overflow:"hidden",justifySelf:"center"},z.createElement(N.ComponentsIcon,null),z.createElement(B.Box,{sx:{width:"100%"}},z.createElement(B.Typography,{align:"center",variant:"subtitle2",color:"inherit"},(0,d.__)("Sorry, nothing matched","elementor")),e&&z.createElement(B.Typography,{variant:"subtitle2",color:"inherit",sx:{display:"flex",width:"100%",justifyContent:"center"}},z.createElement("span",null,"“"),z.createElement("span",{style:{maxWidth:"80%",overflow:"hidden",textOverflow:"ellipsis"}},e),z.createElement("span",null,"”."))),z.createElement(B.Typography,{align:"center",variant:"caption",color:"inherit"},(0,d.__)("Try something else.","elementor")),z.createElement(B.Typography,{align:"center",variant:"caption",color:"inherit"},z.createElement(B.Link,{color:"secondary",variant:"caption",component:"button",onClick:t},(0,d.__)("Clear & try again","elementor"))))},de=()=>{const{components:e,isLoading:t}=K(),{searchValue:n}=R();return{components:e.filter(e=>e.name.toLowerCase().includes(n.toLowerCase())),isLoading:t,searchValue:n}},me=()=>z.createElement(j.ThemeProvider,null,z.createElement(A,{localStorageKey:"elementor-components-search"},z.createElement(G,null),z.createElement(se,null))),ue="elementor_component";function pe(e,t,n){const o=(0,F.generateUniqueId)("component"),r={uid:o,name:e};return(0,c.__dispatch)(w.actions.addUnpublished({...r,elements:[t]})),(0,c.__dispatch)(w.actions.addCreatedThisSession(o)),te(t,r),H({action:"created",component_uid:o,component_name:e,...n}),(0,l.__privateRunCommand)("document/save/auto"),o}const ge=e=>{const[t,n]=(0,z.useState)(e),[o,r]=(0,z.useState)({}),a=(0,z.useMemo)(()=>!Object.values(o).some(e=>e),[o]);return{values:t,errors:o,isValid:a,handleChange:(e,o,a)=>{const i={...t,[o]:e.target.value};n(i);const{success:s,errors:l}=he(i,a);r(s?{}:l)},validateForm:e=>{const{success:n,errors:o,parsedValues:a}=he(t,e);return n?(r({}),{success:n,parsedValues:a}):(r(o),{success:n})}}},he=(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}};var ye=window.elementorV2.schema;const fe=e=>ye.z.object({componentName:ye.z.string().trim().max(50,(0,d.__)("Component name is too long. Please keep it under 50 characters.","elementor")).refine(t=>!e.includes(t),{message:(0,d.__)("Component name already exists","elementor")})}),_e=(e,t)=>{const{elementsCount:n,componentsCount:o}=ve(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 ve(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}=ve(o);t+=e,n+=r}return{elementsCount:t,componentsCount:n}}function we(){const[e,t]=(0,z.useState)(null),[n,o]=(0,z.useState)(),[r,a]=(0,z.useState)(null),i=(0,z.useRef)(null);(0,z.useEffect)(()=>{const e="elementor/editor/open-save-as-component-form",n=e=>{t({element:e.detail.element,elementLabel:(0,W.getElementLabel)(e.detail.element.id)}),o(e.detail.anchorPosition),i.current=_e(e.detail.element,e.detail.options),H({action:"createClicked",...i.current})};return window.addEventListener(e,n),()=>{window.removeEventListener(e,n)}},[]);const s=()=>{t(null),o(void 0)},l=()=>{s(),H({action:"createCancelled",...i.current})};return z.createElement(j.ThemeProvider,null,z.createElement(B.Popover,{open:null!==e,onClose:l,anchorReference:"anchorPosition",anchorPosition:n},null!==e&&z.createElement(be,{initialValues:{componentName:e.elementLabel},handleSave:t=>{try{if(!e)throw new Error("Can't save element as component: element not found");const n=pe(t.componentName,e.element,i.current);a({show:!0,message:(0,d.__)("Component saved successfully as: %1$s (UID: %2$s)","elementor").replace("%1$s",t.componentName).replace("%2$s",n),type:"success"}),s()}catch{const e=(0,d.__)("Failed to save component. Please try again.","elementor");a({show:!0,message:e,type:"error"})}},closePopup:l})),z.createElement(B.Snackbar,{open:r?.show,onClose:()=>a(null)},z.createElement(B.Alert,{onClose:()=>a(null),severity:r?.type,sx:{width:"100%"}},r?.message)))}const Ee="tiny",be=({initialValues:e,handleSave:t,closePopup:n})=>{const{values:o,errors:r,isValid:a,handleChange:i,validateForm:s}=ge(e),{components:l}=K(),c=(0,z.useMemo)(()=>l?.map(e=>e.name)??[],[l]),m=(0,z.useMemo)(()=>fe(c),[c]),u=(0,z.useMemo)(()=>(e=>{const t=fe(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")})})})(c),[c]),p={heading:(0,d.__)("Save as a component","elementor"),name:(0,d.__)("Name","elementor"),cancel:(0,d.__)("Cancel","elementor"),create:(0,d.__)("Create","elementor")},g="component-name";return z.createElement(j.Form,{onSubmit:()=>{const{success:e,parsedValues:n}=s(u);e&&t(n)}},z.createElement(B.Stack,{alignItems:"start",width:"268px"},z.createElement(B.Stack,{direction:"row",alignItems:"center",py:1,px:1.5,sx:{columnGap:.5,borderBottom:"1px solid",borderColor:"divider",width:"100%"}},z.createElement(N.StarIcon,{fontSize:Ee}),z.createElement(B.Typography,{variant:"caption",sx:{color:"text.primary",fontWeight:"500",lineHeight:1}},p.heading)),z.createElement(B.Grid,{container:!0,gap:.75,alignItems:"start",p:1.5},z.createElement(B.Grid,{item:!0,xs:12},z.createElement(B.FormLabel,{htmlFor:g,size:"tiny"},p.name)),z.createElement(B.Grid,{item:!0,xs:12},z.createElement(B.TextField,{id:g,size:Ee,fullWidth:!0,value:o.componentName,onChange:e=>i(e,"componentName",m),inputProps:{style:{color:"text.primary",fontWeight:"600"}},error:Boolean(r.componentName),helperText:r.componentName}))),z.createElement(B.Stack,{direction:"row",justifyContent:"flex-end",alignSelf:"end",py:1,px:1.5},z.createElement(B.Button,{onClick:n,color:"secondary",variant:"text",size:"small"},p.cancel),z.createElement(B.Button,{type:"submit",disabled:!a,variant:"contained",color:"primary",size:"small"},p.create))))};function Ce({path:e,currentComponentId:t}){const n=(0,c.__getStore)()?.dispatch;n&&(n(w.actions.setPath(e)),n(w.actions.setCurrentComponentId(t)))}var Se=window.ReactDOM;function xe(e){const[t,n]=(0,z.useState)(new DOMRect(0,0,0,0)),o=(0,F.throttle)(()=>{n(e?.getBoundingClientRect()??new DOMRect(0,0,0,0))},20,!0);return function({element:e,onChange:t}){(0,z.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,z.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,z.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,z.useEffect)(()=>()=>{o.cancel()},[o]),t}function Ie({element:e,onClose:t}){const n=(0,l.__privateUseListenTo)((0,l.commandEndEvent)("editor/documents/attach-preview"),()=>(0,o.getCanvasIframeDocument)());return(0,z.useEffect)(()=>{const e=e=>{"Escape"===e.key&&t()};return n?.body.addEventListener("keydown",e),()=>{n?.body.removeEventListener("keydown",e)}},[n,t]),n?.body?(0,Se.createPortal)(z.createElement(z.Fragment,null,z.createElement(De,null),z.createElement(Te,{canvas:n,element:e,onClose:t})),n.body):null}function Te({canvas:e,element:t,onClose:n}){const o={position:"fixed",top:0,left:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:999,pointerEvents:"painted",cursor:"pointer",clipPath:ke(xe(t),e.defaultView,5)};return z.createElement("div",{style:o,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 ke(e,t,n){const o=n/2,{x:r,y:a,width:i,height:s}=e,l=r-o,c=a-o,d=i+2*o,m=s+2*o,u=Math.min(n,d/2,m/2),{innerWidth:p,innerHeight:g}=t;return`path(evenodd, 'M 0 0 \n\t\tL ${p} 0\n\t\tL ${p} ${g}\n\t\tL 0 ${g}\n\t\tZ\n\t\tM ${l+u} ${c}\n\t\tL ${l+d-u} ${c}\n\t\tA ${u} ${u} 0 0 1 ${l+d} ${c+u}\n\t\tL ${l+d} ${c+m-u}\n\t\tA ${u} ${u} 0 0 1 ${l+d-u} ${c+m}\n\t\tL ${l+u} ${c+m}\n\t\tA ${u} ${u} 0 0 1 ${l} ${c+m-u}\n\t\tL ${l} ${c+u}\n\t\tA ${u} ${u} 0 0 1 ${l+u} ${c}\n \tZ'\n\t)`.replace(/\s{2,}/g," ")}function De(){return z.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 Pe(){const{path:e,currentComponentId:t}=Ve();!function(){const e=(0,r.getV1DocumentsManager)(),{path:t,currentComponentId:n}=Ve();(0,z.useEffect)(()=>(0,l.__privateListenTo)((0,l.commandEndEvent)("editor/documents/attach-preview"),()=>{const o=e.getCurrent();o.id!==n&&(n&&f.unlockComponent(n),o.config.type===ue?Ce({path:$e(t,o),currentComponentId:o.id}):Ce({path:[],currentComponentId:null}))}),[t,e,n])}();const n=function(e){const t=(0,r.getV1DocumentsManager)();return(0,z.useCallback)(()=>{const{componentId:n,instanceId:o}=e.at(-2)??{},r=(e,t)=>{(0,l.__privateRunCommand)("editor/documents/switch",{id:e,selector:t,mode:"autosave",setAsInitial:!1,shouldScroll:!1})};n&&o?r(n,`[data-id="${o}"]`):r(t.getInitialId())},[e,t])}(e),o=function(e){if(!e)return null;const t=(0,r.getV1DocumentsManager)().get(e),n=t?.container,o=n?.children?.[0].view?.el;return o??null}(t??void 0);return o?z.createElement(Ie,{element:o,onClose:n}):null}function $e(e,t){const n=e.findIndex(({componentId:e})=>e===t.id);return n>=0?e.slice(0,n+1):[...e,{instanceId:t?.container.view?.el?.dataset.id,componentId:t.id}]}function Ve(){return{path:(0,c.__useSelector)($),currentComponentId:(0,c.__useSelector)(V)}}const Le=e=>{(0,j.openDialog)({component:z.createElement(Oe,{lockedBy:e})})},Oe=({lockedBy:e})=>{const t=(0,d.__)("%s is currently editing this document","elementor").replace("%s",e);return z.createElement(z.Fragment,null,z.createElement(B.DialogHeader,{logo:!1},z.createElement(B.Box,{display:"flex",alignItems:"center",gap:1},z.createElement(B.Icon,{color:"secondary"},z.createElement(N.InfoCircleFilledIcon,{fontSize:"medium"})),z.createElement(B.Typography,{variant:"subtitle1"},t))),z.createElement(B.DialogContent,null,z.createElement(B.Stack,{spacing:2,direction:"column"},z.createElement(B.Typography,{variant:"body2"},(0,d.__)("You can wait for them to finish or reach out to coordinate your changes together.","elementor")),z.createElement(B.DialogActions,null,z.createElement(B.Button,{color:"secondary",variant:"contained",onClick:j.closeDialog},(0,d.__)("Close","elementor"))))))};var Me=window.elementorV2.editorControls;const ze=(0,window.elementorV2.editorProps.createPropUtils)("overridable",ye.z.object({override_key:ye.z.string(),origin_value:ye.z.object({$$type:ye.z.string(),value:ye.z.unknown()}).nullable()}));function je(e,t){const n=t||(0,F.generateUniqueId)("group");return{groups:{...e,items:{...e.items,[n]:{id:n,label:(0,d.__)("Default","elementor"),props:[]}},order:[...e.order,n]},currentGroupId:n}}function Ne(e,t,n){const o={...e.items[t]};return o.props.includes(n.overrideKey)||(o.props=[...o.props,n.overrideKey]),o}function Be(){return Be=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},Be.apply(null,arguments)}const Fe="tiny",Ue=(0,B.styled)(B.Box)` | |
| 2 | + pointer-events: none; | |
| 3 | + opacity: 0; | |
| 4 | + transition: opacity 0.2s ease-in-out; | |
| 5 | + | |
| 6 | + & > svg { | |
| 7 | + position: absolute; | |
| 8 | + top: 50%; | |
| 9 | + left: 50%; | |
| 10 | + transform: translate( -50%, -50% ); | |
| 11 | + width: 10px; | |
| 12 | + height: 10px; | |
| 13 | + fill: ${({theme:e})=>e.palette.primary.contrastText}; | |
| 14 | + stroke: ${({theme:e})=>e.palette.primary.contrastText}; | |
| 15 | + stroke-width: 2px; | |
| 16 | + } | |
| 17 | +`,Ae=(0,B.styled)(B.Box)` | |
| 18 | + position: relative; | |
| 3 | 19 | display: flex; |
| 4 | - flex-direction: column; | |
| 5 | - height: 100%; | |
| 6 | -} | |
| 20 | + align-items: center; | |
| 21 | + justify-content: center; | |
| 22 | + cursor: pointer; | |
| 23 | + width: 16px; | |
| 24 | + height: 16px; | |
| 25 | + margin-inline: ${({theme:e})=>e.spacing(.5)}; | |
| 7 | 26 | |
| 8 | -#elementor-panel-elements { | |
| 9 | - display: flex; | |
| 10 | - flex-direction: column; | |
| 11 | - flex: 1; | |
| 12 | - min-height: 0; | |
| 13 | -} | |
| 27 | + &:before { | |
| 28 | + content: ''; | |
| 29 | + display: block; | |
| 30 | + position: absolute; | |
| 31 | + top: 50%; | |
| 32 | + left: 50%; | |
| 33 | + transform: translate( -50%, -50% ) rotate( 45deg ); | |
| 34 | + width: 5px; | |
| 35 | + height: 5px; | |
| 36 | + border-radius: 1px; | |
| 37 | + background-color: ${({theme:e})=>e.palette.primary.main}; | |
| 38 | + transition: all 0.1s ease-in-out; | |
| 39 | + } | |
| 14 | 40 | |
| 15 | -#elementor-panel-elements-wrapper { | |
| 16 | - display: flex; | |
| 17 | - flex-direction: column; | |
| 18 | - flex: 1; | |
| 19 | - min-height: 0; | |
| 20 | -} | |
| 21 | -`,useFullHeightPanel=()=>{(0,ke.useLayoutEffect)(()=>{let e=document.getElementById(mt);return e||(e=document.createElement(`style`),e.id=mt,e.textContent=ht,document.head.appendChild(e)),()=>{document.getElementById(mt)?.remove()}},[])},ComponentsContent=()=>{let{components:e,isLoading:t}=useComponents(),n=!t&&e.length>0,r=!isProComponentsSupported()&&n,i=isProOutdatedForComponents();return useFullHeightPanel(),x.createElement(je.Stack,{justifyContent:`space-between`,sx:{flex:1,minHeight:0}},n&&x.createElement(ComponentSearch,null),x.createElement(ComponentsList,null),r&&(i?x.createElement(ComponentsUpdateNotification,null):x.createElement(ComponentsProNotification,null)))},Components=()=>x.createElement(Ae.ThemeProvider,null,x.createElement(SearchProvider,{localStorageKey:`elementor-components-search`},x.createElement(ComponentsContent,null))),j=__toESM(globalThis.React),M=globalThis.elementorV2.editorUi,gt=globalThis.elementorV2.icons,_t=globalThis.wp.i18n;function DetachInstanceConfirmationDialog({open:e,onClose:t,onConfirm:n}){return j.createElement(M.ConfirmationDialog,{open:e,onClose:t},j.createElement(M.ConfirmationDialog.Title,{icon:gt.AlertTriangleFilledIcon,iconColor:`secondary`},(0,_t.__)(`Detach from Component?`,`elementor`)),j.createElement(M.ConfirmationDialog.Content,null,j.createElement(M.ConfirmationDialog.ContentText,null,(0,_t.__)(`Detaching this instance will break its link to the Component. Changes to the Component will no longer apply. Continue?`,`elementor`))),j.createElement(M.ConfirmationDialog.Actions,{onClose:t,onConfirm:n,confirmLabel:(0,_t.__)(`Detach`,`elementor`),color:`primary`}))}function openDetachConfirmDialog(e){let handleConfirm=()=>{(0,M.closeDialog)(),e()};(0,M.openDialog)({component:j.createElement(DetachInstanceConfirmationDialog,{open:!0,onClose:M.closeDialog,onConfirm:handleConfirm})})}var N=__toESM(globalThis.React),vt=globalThis.elementorV2.editorUi,yt=globalThis.elementorV2.icons,P=globalThis.elementorV2.ui,bt=globalThis.wp.i18n,openEditModeDialog=e=>{(0,vt.openDialog)({component:N.createElement(EditModeDialog,{lockedBy:e})})},EditModeDialog=({lockedBy:e})=>{let t=(0,bt.__)(`%s is currently editing this document`,`elementor`).replace(`%s`,e);return N.createElement(N.Fragment,null,N.createElement(P.DialogHeader,{logo:!1},N.createElement(P.Box,{display:`flex`,alignItems:`center`,gap:1},N.createElement(P.Icon,{color:`secondary`},N.createElement(yt.InfoCircleFilledIcon,{fontSize:`medium`})),N.createElement(P.Typography,{variant:`subtitle1`},t))),N.createElement(P.DialogContent,null,N.createElement(P.Stack,{spacing:2,direction:`column`},N.createElement(P.Typography,{variant:`body2`},(0,bt.__)(`You can wait for them to finish or reach out to coordinate your changes together.`,`elementor`)),N.createElement(P.DialogActions,null,N.createElement(P.Button,{color:`secondary`,variant:`contained`,onClick:vt.closeDialog},(0,bt.__)(`Close`,`elementor`))))))},F=__toESM(globalThis.React),xt=globalThis.elementorV2.icons,St=globalThis.elementorV2.ui,I=globalThis.wp.i18n,Ct=__toESM(globalThis.React),wt=globalThis.React,Tt=(0,wt.createContext)(null);function ComponentInstanceProvider({children:e,...t}){return Ct.createElement(Tt.Provider,{value:t},e)}function useComponentInstanceContext(){let e=(0,wt.useContext)(Tt);if(!e)throw Error(`useComponentInstanceContext must be used within a ComponentInstanceProvider`);return e}var useComponentId=()=>useComponentInstanceContext().componentId,useComponentInstanceOverrides=()=>useComponentInstanceContext().overrides,useComponentOverridableProps=()=>useComponentInstanceContext().overridableProps,Et=__toESM(globalThis.React),Dt=globalThis.React,Ot=globalThis.elementorV2.editorNotifications,kt=globalThis.elementorV2.icons,At=globalThis.wp.i18n,jt=globalThis.elementorV2.editorCanvas,L=globalThis.elementorV2.editorElements,Mt=globalThis.elementorV2.editorV1Adapters,Nt=globalThis.elementorV2.store,Pt=globalThis.wp.i18n,Ft=globalThis.elementorV2.editorProps,It=globalThis.elementorV2.schema,Lt=globalThis.elementorV2.editorProps,R=globalThis.elementorV2.schema,z=(0,Lt.createPropUtils)(`override`,R.z.object({override_key:R.z.string(),override_value:R.z.unknown(),schema_source:R.z.object({type:R.z.literal(`component`),id:R.z.number()})})),Rt=globalThis.elementorV2.editorProps,B=globalThis.elementorV2.schema,V=(0,Rt.createPropUtils)(`overridable`,B.z.object({override_key:B.z.string(),origin_value:B.z.object({$$type:B.z.string(),value:B.z.unknown()}).nullable()})),H=(0,Ft.createPropUtils)(`overrides`,It.z.array(It.z.union([z.schema,V.schema])).optional().default([])),zt=globalThis.elementorV2.editorProps,Bt=globalThis.elementorV2.schema,U=(0,zt.createPropUtils)(`component-instance`,Bt.z.object({component_id:zt.numberPropTypeUtil.schema,overrides:Bt.z.optional(H.schema)})),Vt=globalThis.elementorV2.events,Ht=globalThis.elementorV2.store,Ut=`Components`,trackComponentEvent=({action:e,source:t,executedBy:n,...r})=>{if(t===`system`||n===`system`)return;let{dispatchEvent:i,config:a}=(0,Vt.getMixpanel)();if(!a?.names?.components?.[e])return;let o=a.names.components[e];i?.(o,{...r,executed_by:n??t,"Feature name":Ut})},onElementDrop=(e,t)=>{if(t?.model?.get(`widgetType`)!==`e-component`)return;let n=t.model.get(`editor_settings`),r=n?.title,i=n?.component_uid,a=t.id,o=he((0,Ht.__getState)()),s=i&&o.includes(i),{locations:c,secondaryLocations:l}=window.elementorCommon.eventsManager.config;trackComponentEvent({action:`instanceAdded`,executedBy:`user`,instance_id:a,component_uid:i,component_name:r,is_same_session_reuse:s,location:c.widgetPanel,secondary_location:l.componentsTab})},Wt=globalThis.elementorV2.editorElements,Gt=globalThis.elementorV2.editorElements,Kt=globalThis.elementorV2.editorProps;function regenerateLocalStyleIds(e){let t=e.styles;if(!t||Object.keys(t).length===0)return{styles:void 0,settings:void 0};let n={},r={};for(let[i,a]of Object.entries(t)){let t=generateLocalStyleId(e.id);n[t]={...a,id:t},r[i]=t}let i=e.settings;if(!i||Object.keys(i).length===0)return{styles:n,settings:void 0};let a={...i};for(let[e,t]of Object.entries(a))if(isClassesProp(t)&&t.value.length>0){let n=t.value.map(e=>r[e]??e);a[e]=Kt.classesPropTypeUtil.create(n)}return{styles:n,settings:a}}function isClassesProp(e){return Kt.classesPropTypeUtil.isValid(e)}function generateLocalStyleId(e){return`e-${e}-${(0,Gt.generateElementId)()}`}var qt=`e-component`;function isComponentInstance(e){return[e.widgetType,e.elType].includes(qt)}function resolveOverridableSettings(e,t){return isComponentInstance({widgetType:e.widgetType,elType:e.elType})?resolveOverridableSettingsForComponentInstance(e,t):resolveOverridableSettingsForElement(e,t)}function resolveOverridableSettingsForElement(e,t){let n=e.settings?{...e.settings}:{};for(let[r,i]of Object.entries(e.settings??{}))n[r]=resolvePropValue(i,t);return n}function resolveOverridableSettingsForComponentInstance(e,t){let n=e.settings?.component_instance;if(!U.isValid(n))return e.settings??{};let r=n.value.overrides?.value;if(!r?.length)return e.settings??{};let i=r.map(e=>resolvePropValue(e,t,{isOverridableOverride:!0}));return{...e.settings,component_instance:{...n,value:{...n.value,overrides:{...n.value.overrides,value:i}}}}}function resolvePropValue(e,t,n){let{isOverridableOverride:r=!1}=n??{};if(!V.isValid(e))return e;let i=e.value.override_key,a=t.get(i),o=V.extract(e)?.origin_value;return a?r?resolveOverridableOverride(a,o):z.extract(a)?.override_value??o:o}function resolveOverridableOverride(e,t){return!t||!z.isValid(t)?null:z.create({override_value:e.value.override_value,override_key:t.value.override_key,schema_source:t.value.schema_source})}function resolveDetachedInstance(e,t){let n=createOverrideMap(t);return resolveElementRecursive(structuredClone(e),n)}function resolveElementRecursive(e,t){if(e.id=(0,Wt.generateElementId)(),e.styles){let{styles:t,settings:n}=regenerateLocalStyleIds(e);e.styles=t,n&&(e.settings={...e.settings,...n})}return e.settings&&=resolveOverridableSettings(e,t),e.elements?.length&&(e.elements=e.elements.map(e=>resolveElementRecursive(e,t))),e}function createOverrideMap(e){let t=new Map;return e.forEach(e=>{let n=null;if(z.isValid(e)?n=e:V.isValid(e)&&(n=getOverridableOverride(e)),n){let e=n.value.override_key;t.set(e,n)}}),t}function getOverridableOverride(e){if(!V.isValid(e))return null;let t=V.extract(e)?.origin_value;return z.isValid(t)?t:null}var Jt=`elementor/components/detach-instance`,Yt=`elementor/components/undo-detach-instance`,Xt=`elementor/components/redo-detach-instance`;async function detachComponentInstance({instanceId:e,componentId:t,trackingInfo:n}){let r=(0,L.getContainer)(e);if(!r)throw Error(`Instance container with ID "${e}" not found.`);let i=await getComponentDocumentData(t);if(!i)throw Error(`Component with ID "${t}" not found.`);let a=i.elements?.[0];if(!a)throw Error(`Component with ID "${t}" has no root element.`);return(0,Mt.undoable)({do:()=>{let i=extractInstanceOverrides(r),o=resolveDetachedInstance(a,i),s=r.model.toJSON(),c=new Date().getTime();window.dispatchEvent(new CustomEvent(Jt,{detail:{detachedInstanceId:e,detachActionId:c}}));let l=(0,L.replaceElement)({currentElementId:e,newElement:o,withHistory:!1});(0,L.selectElement)(l.id);let u=selectComponent((0,Nt.__getState)(),t)?.uid;return trackComponentEvent({action:`detached`,executedBy:`user`,component_uid:u,instance_id:e,location:n.location,secondary_location:n.secondaryLocation,trigger:n.trigger}),{detachedElement:l,detachedInstanceElementData:o,originalInstanceModel:s,actionId:c}},undo:(e,{detachedElement:t,originalInstanceModel:n,actionId:r})=>{let i=(0,L.replaceElement)({currentElementId:t.id,newElement:n,withHistory:!1});return window.dispatchEvent(new CustomEvent(Yt,{detail:{restoredInstanceId:i.id,detachActionId:r}})),(0,jt.doAfterRender)([i.id],()=>{(0,L.selectElement)(i.id)}),i},redo:(e,t,n)=>{let{detachedInstanceElementData:r,actionId:i}=t,a=(0,L.replaceElement)({currentElementId:n.id,newElement:r,withHistory:!1});return window.dispatchEvent(new CustomEvent(Xt,{detail:{detachedInstanceId:a.id,detachActionId:i}})),(0,L.selectElement)(a.id),{...t,detachedElement:a}}},{title:(0,Pt.__)(`Detach from Component`,`elementor`),subtitle:(0,Pt.__)(`Instance detached`,`elementor`)})()}function extractInstanceOverrides(e){let t=e.model.toJSON().settings,n=U.extract(t?.component_instance);return H.extract(n?.overrides)??[]}var W=__toESM(globalThis.React),Zt=globalThis.elementorV2.editorPanels,Qt=globalThis.elementorV2.editorUi,$t=globalThis.elementorV2.icons,en=globalThis.elementorV2.ui;function InstancePanelHeader({componentName:e,actions:t}){return W.createElement(Zt.PanelHeader,{sx:{justifyContent:`start`,px:2}},W.createElement(en.Stack,{direction:`row`,alignItems:`center`,flexGrow:1,gap:1,maxWidth:`100%`},W.createElement($t.ComponentsIcon,{fontSize:`small`,sx:{color:`text.tertiary`}}),W.createElement(Qt.EllipsisWithTooltip,{title:e,as:Zt.PanelHeaderTitle,sx:{flexGrow:1}}),t))}function EditComponentAction({label:e,onClick:t,disabled:n=!1,icon:r}){return W.createElement(en.Tooltip,{title:e},W.createElement(en.IconButton,{size:`tiny`,onClick:t,"aria-label":e,disabled:n},W.createElement(r,{fontSize:`tiny`})))}var DetachAction=({componentInstanceId:e,componentId:t})=>{let[n,r]=(0,Dt.useState)(!1),handleDetachConfirm=async()=>{r(!1);try{await detachComponentInstance({instanceId:e,componentId:t,trackingInfo:getDetachTrackingInfo()})}catch{(0,Ot.notify)({type:`error`,message:(0,At.__)(`Failed to detach component instance.`,`elementor`),id:`detach-component-instance-failed`})}},handleDetachCancel=()=>{r(!1)},handleDetachClick=()=>{r(!0)},i=(0,At.__)(`Detach from Component`,`elementor`);return Et.createElement(Et.Fragment,null,Et.createElement(EditComponentAction,{label:i,icon:kt.DetachIcon,onClick:handleDetachClick}),Et.createElement(DetachInstanceConfirmationDialog,{open:n,onClose:handleDetachCancel,onConfirm:handleDetachConfirm}))};function getDetachTrackingInfo(){let e=window?.elementorCommon?.eventsManager?.config;return e?{location:e.locations.components.instanceEditingPanel,trigger:e.triggers.click}:{location:``,trigger:``}}var G=__toESM(globalThis.React),tn=globalThis.elementorV2.icons,nn=globalThis.elementorV2.ui,rn=globalThis.wp.i18n,EmptyState2=({onEditComponent:e})=>{let{canEdit:t}=useComponentsPermissions(),n=t?(0,rn.__)(`Edit the component to add properties, manage them or update the design across all instances.`,`elementor`):(0,rn.__)(`With your current role, you cannot edit this component. Contact an administrator to add properties.`,`elementor`);return G.createElement(nn.Stack,{alignItems:`center`,justifyContent:`start`,height:`100%`,color:`text.secondary`,sx:{p:2.5,pt:8,pb:5.5,mt:1},gap:1.5},G.createElement(tn.ComponentPropListIcon,{fontSize:`large`}),G.createElement(nn.Typography,{align:`center`,variant:`subtitle2`},(0,rn.__)(`No properties yet`,`elementor`)),G.createElement(nn.Typography,{align:`center`,variant:`caption`,maxWidth:`170px`},n),t&&G.createElement(nn.Button,{variant:`outlined`,color:`secondary`,size:`small`,sx:{mt:1},disabled:!e,onClick:e},G.createElement(tn.PencilIcon,{fontSize:`small`}),(0,rn.__)(`Edit component`,`elementor`)))},K=__toESM(globalThis.React),an=globalThis.elementorV2.editorControls,on=globalThis.elementorV2.editorEditingPanel,sn=globalThis.elementorV2.editorPanels,cn=globalThis.elementorV2.ui,q=__toESM(globalThis.React),ln=globalThis.React,un=globalThis.elementorV2.editorEditingPanel,dn=globalThis.elementorV2.editorUi,J=globalThis.elementorV2.ui,Y=__toESM(globalThis.React),fn=globalThis.elementorV2.editorControls,X=globalThis.elementorV2.editorEditingPanel,pn=globalThis.elementorV2.ui,mn=globalThis.elementorV2.editorElements;function useControlsByWidgetType(e){let t=(0,mn.getElementType)(e);return t?getControlsByBind(iterateControls(t.controls)):{}}function iterateControls(e){return e.map(e=>e.type===`control`&&`bind`in e.value?e:e.type===`section`?iterateControls(e.value.items):null).filter(Boolean).flat()}function getControlsByBind(e){return e.reduce((e,t)=>({...e,[t.value.bind]:t}),{})}var hn=__toESM(globalThis.React),gn=globalThis.React,_n=(0,gn.createContext)(null);function OverridablePropProvider({children:e,...t}){return hn.createElement(_n.Provider,{value:t},e)}var useOverridablePropValue=()=>(0,gn.useContext)(_n)?.value,useComponentInstanceElement=()=>(0,gn.useContext)(_n)?.componentInstanceElement,resolveOverridePropValue=e=>V.isValid(e)?getOverridableValue(e):z.isValid(e)?getOverrideValue(e):e;function getOverridableValue(e){let t=V.extract(e);return t?z.isValid(t.origin_value)?getOverrideValue(t.origin_value):t.origin_value:null}function getOverrideValue(e){let t=z.extract(e);return t?t.override_value:null}var Z=globalThis.elementorV2.store;function safeDispatch(){return(0,Z.__getStore)()?.dispatch}var vn={add(e){(0,Z.__dispatch)(b.actions.add(e))},load(e){(0,Z.__dispatch)(b.actions.load(e))},addUnpublished(e){(0,Z.__dispatch)(b.actions.addUnpublished(e))},removeUnpublished(e){(0,Z.__dispatch)(b.actions.removeUnpublished(e))},resetUnpublished(){(0,Z.__dispatch)(b.actions.resetUnpublished())},addCreatedThisSession(e){(0,Z.__dispatch)(b.actions.addCreatedThisSession(e))},removeCreatedThisSession(e){(0,Z.__dispatch)(b.actions.removeCreatedThisSession(e))},archive(e){(0,Z.__dispatch)(b.actions.archive(e))},setCurrentComponentId(e){safeDispatch()?.(b.actions.setCurrentComponentId(e))},setPath(e){safeDispatch()?.(b.actions.setPath(e))},setOverridableProps(e,t){(0,Z.__dispatch)(b.actions.setOverridableProps({componentId:e,overridableProps:t}))},rename(e,t){(0,Z.__dispatch)(b.actions.rename({componentUid:e,name:t}))},cleanUpdatedComponentNames(){(0,Z.__dispatch)(b.actions.cleanUpdatedComponentNames())},updateComponentSanitizedAttribute(e,t){(0,Z.__dispatch)(b.actions.updateComponentSanitizedAttribute({componentId:e,attribute:t}))},resetSanitizedComponents(){(0,Z.__dispatch)(b.actions.resetSanitizedComponents())}},Q=globalThis.elementorV2.store;function safeGetState(){return(0,Q.__getStore)()?.getState()}var yn={getOverridableProps(e){return _e((0,Q.__getState)(),e)},getCurrentComponent(){return xe((0,Q.__getState)())},getCurrentComponentId(){let e=safeGetState();return e?be(e):null},getUnpublishedComponents(){return pe((0,Q.__getState)())},getUpdatedComponentNames(){return Se((0,Q.__getState)())},getArchivedThisSession(){return selectArchivedThisSession((0,Q.__getState)())},getCreatedThisSession(){return he((0,Q.__getState)())},getComponents(){return fe((0,Q.__getState)())},getComponentByUid(e){return selectComponentByUid((0,Q.__getState)(),e)}};function updateOverridableProp(e,t,n){let r=yn.getOverridableProps(e);if(!r)return;let i=r.props[t.override_key];if(!i)return;let a=resolveOverridePropValue(t.origin_value),o=n?{originValue:a,originPropFields:n}:{originValue:a},s={...r,props:{...r.props,[i.overrideKey]:{...i,...o}}};vn.setOverridableProps(e,s)}var bn=globalThis.elementorV2.editorElements,getPropTypeForComponentOverride=e=>{if(e.originPropFields)return getPropType(e.originPropFields);let{widgetType:t,propKey:n}=e;return getPropType({widgetType:t,propKey:n})};function getPropType({widgetType:e,propKey:t}){return(0,bn.getWidgetsCache)()?.[e]?.atomic_props_schema?.[t]}function getMatchingOverride(e,t){return e?.find(e=>{let n=V.extract(e);return n?z.extract(n.origin_value)?.override_key===t:e.value.override_key===t})??null}var xn=__toESM(globalThis.React),Sn=globalThis.elementorV2.editorControls,Cn=globalThis.elementorV2.ui,ControlLabel=({children:e,...t})=>xn.createElement(Cn.Stack,{direction:`row`,alignItems:`center`,justifyItems:`start`,gap:.25},xn.createElement(Sn.ControlFormLabel,{...t},e),xn.createElement(Sn.ControlAdornments,null)),wn=globalThis.elementorV2.utils,Tn=(0,wn.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.`}),En=(0,wn.createError)({code:`override_control_prop_type_not_found`,message:`Prop type not found for override control.`});function correctExposedEmptyOverride(e,t){let n=V.extract(e);return n&&t===null?V.create({override_key:n.override_key,origin_value:null}):e}function applyOverridesToSettings(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=V.extract(i);if(!e){n[r]=i;continue}let a=t[e.override_key];if(!a){n[r]=i;continue}if(a.outermostKey&&a.outermostKey!==e.override_key){let t=e.origin_value;n[r]=V.create({override_key:a.outermostKey,origin_value:a.value??t})}else n[r]=a.value??i}return n}function unwrapOverridableSettings(e){let t={};for(let[n,r]of Object.entries(e)){let e=V.extract(r);if(!e){t[n]=r;continue}t[n]=e.origin_value}return t}var Dn=globalThis.React,On=globalThis.elementorV2.editorEditingPanel;function useOverrideControlDependencies({existingOverride:e,resolvedElementSettings:t,elementId:n,elementType:r,propKey:i}){return(0,Dn.useMemo)(()=>{let{isDisabled:a,isHidden:o}=(0,On.extractDependencyEffect)(i,r.propsSchema,t),s=e?resolveOverridePropValue(e):null,c={...t,[i]:s},l=(0,On.getElementSettingsWithDefaults)(r.propsSchema,c),u=(0,On.extractOrderedDependencies)(r.dependenciesPerTargetMapping??{});return{overrideValue:(0,On.getUpdatedValues)({[i]:s},u,r.propsSchema,l,n)[i],isDisabled:a,isHidden:o}},[e,t,i,r.propsSchema,r.dependenciesPerTargetMapping,n])}var kn=globalThis.React,An=globalThis.elementorV2.editorEditingPanel,jn=globalThis.elementorV2.editorElements,Mn=globalThis.elementorV2.editorElements;function getContainerByOriginId(e,t){if(!t)return(0,Mn.getContainer)(e);let n=(0,Mn.getContainer)(t);return n?window.elementor?.getContainerByKeyValue?.({key:`originId`,value:e,parent:n.view})??null:null}var Nn=globalThis.elementorV2.store;function getOverridableProp({componentId:e,overrideKey:t}){let n=_e((0,Nn.__getState)(),e);if(n)return n.props[t]}function resolveOverridesChain({outerOverridableProp:e,outerInstanceId:t,overridesMapping:n={}}){if(!e.originPropFields){let r=getContainerByOriginId(e.elementId,t);if(!r)throw Error(`Inner element not found inside instance. elementId: ${e.elementId}, instanceId: ${t}`);return{isChainBroken:!1,innerElement:r,overridesMapping:n}}let r=getContainerByOriginId(e.elementId,t);if(!r)return{isChainBroken:!0};let{componentId:i,overrides:a}=extractComponentInstanceSettings(r);if(!i)throw Error(`Component ID not found for current instance. currentInstanceId: ${r.id}. outerInstanceId: ${t}`);let o=buildOverridesMap(n,a??[]),s=findOverrideByOuterKey(a,e.overrideKey),c=z.extract(s)?.override_key;if(!s||!c)return{isChainBroken:!0};let l=getOverridableProp({componentId:i,overrideKey:c});if(!l)throw Error(`Overridable prop not found. componentId: ${i}, overrideKey: ${c}`);return resolveOverridesChain({outerOverridableProp:l,outerInstanceId:r.id,overridesMapping:o})}function buildOverridesMap(e,t){let n={...e};for(let r of t){let t=V.extract(r);if(t){let r=z.extract(t.origin_value);if(!r)continue;let i=t.override_key,a=r.override_key,o=r.override_value,s=e[i];if(s){n[a]={value:s.value??o,outermostKey:s.outermostKey??i};continue}n[a]={value:o,outermostKey:i}}else{let e=z.extract(r);if(!e)continue;let t=e.override_key;n[t]={value:e.override_value}}}return n}function extractComponentInstanceSettings(e){let t=e.settings?.get(`component_instance`),n=U.extract(t);return{componentId:n?.component_id?.value,overrides:H.extract(n?.overrides)}}function findOverrideByOuterKey(e,t){if(!e)return null;let n=e.find(e=>{let n=V.extract(e);return n?n.override_key===t:!1}),r=V.extract(n)?.origin_value;return!r||!z.isValid(r)?null:r}function useResolvedInnerElement(e){let t=(0,An.useElement)(),n=useComponentId(),r=useComponentInstanceOverrides(),{elementId:i,widgetType:a,elType:o}=e.originPropFields??e,s=o===`widget`?a:o,c=(0,jn.getElementType)(s);if(!c)throw Error(`Element type not found for ${s}`);let{elementId:l,overridesMapping:u}=(0,kn.useMemo)(()=>{let r=resolveOverridesChain({outerOverridableProp:e,outerInstanceId:t.element.id});if(r.isChainBroken)throw new Tn({context:{componentId:n,elementId:i}});return{elementId:r.innerElement.id,overridesMapping:r.overridesMapping}},[e,t.element.id,n,i]),d=(0,kn.useMemo)(()=>applyOverridesToSettings((0,jn.getElementSettings)(l,Object.keys(c?.propsSchema??{})),u),[l,c?.propsSchema,u]);return{elementId:l,elementType:c,resolvedOriginValues:d,resolvedElementSettings:(0,kn.useMemo)(()=>unwrapOverridableSettings(applyOverridesToSettings(d,formatOverridesToApply(r))),[d,r])}}function formatOverridesToApply(e){if(!e)return{};let t={};for(let n of e){let e=V.extract(n),r=n;e&&(r=e.origin_value);let i=z.extract(r);i&&(t[i.override_key]={value:i.override_value})}return t}function OverridePropControl({overrideKey:e}){let t=useComponentOverridableProps().props[e];return t?Y.createElement(X.SettingsField,{bind:`component_instance`,propDisplayName:t.label},Y.createElement(OverrideControl,{overridableProp:t})):null}function OverrideControl({overridableProp:e}){let t=(0,X.useElement)(),{value:n,setValue:r}=(0,fn.useBoundProp)(U),i=useCurrentComponentId(),a=useComponentId(),o=useComponentOverridableProps(),s=useComponentInstanceOverrides(),c=useControlsByWidgetType(e.originPropFields?.widgetType??e.widgetType),l=(0,fn.getControlReplacements)(),u=getMatchingOverride(s,e.overrideKey),{propKey:d}=e.originPropFields??e,ee=getPropTypeForComponentOverride(e);if(!ee)throw new En({context:{overridableProp:e}});let{elementId:f,elementType:p,resolvedElementSettings:m,resolvedOriginValues:te}=useResolvedInnerElement(e),{overrideValue:ne,isDisabled:re,isHidden:ie}=useOverrideControlDependencies({existingOverride:u,resolvedElementSettings:m,elementType:p,elementId:f,propKey:d});if(ie)return null;let{propValue:h,baseValue:ae}=resolveOverrideValues(ne,te,d),g={[e.overrideKey]:h},oe={[e.overrideKey]:ae},{control:se,controlProps:ce,layout:_}=getControlParams(c,e.originPropFields??e,e.label),v=(0,X.createTopLevelObjectType)({schema:{[e.overrideKey]:ee}}),setValue=(t,c,l)=>{let d=getTempNewValueForDynamicProp(ee,h,t[e.overrideKey]);d=correctExposedEmptyOverride(d,u);let f=createOverrideValue({matchingOverride:u,overrideKey:e.overrideKey,overrideValue:d,componentId:a}),p=(s??[]).filter(e=>isValidOverride(o,e)).map(e=>e===u?f:e);u||(p=[...p,f]),r({...n,overrides:H.create(p)},c,l);let m=V.extract(f);if(m&&i){if(e.originPropFields){updateOverridableProp(i,m,e.originPropFields);return}let t={elType:e.elType,widgetType:e.widgetType,propKey:e.propKey,elementId:e.elementId};updateOverridableProp(i,m,t)}};return Y.createElement(OverridablePropProvider,{value:V.extract(u)??void 0,componentInstanceElement:t},Y.createElement(X.ElementProvider,{element:{id:f,type:p.key},elementType:p,settings:m},Y.createElement(fn.PropProvider,{propType:v,value:g,setValue,baseValue:oe,isDisabled:re},Y.createElement(fn.PropKeyProvider,{bind:e.overrideKey},Y.createElement(fn.ControlReplacementsProvider,{replacements:l},Y.createElement(pn.Box,{mb:1.5},Y.createElement(X.ControlTypeContainer,{layout:_},_!==`custom`&&Y.createElement(ControlLabel,null,e.label),Y.createElement(OriginalControl,{control:se,controlProps:ce}))))))))}function resolveOverrideValues(e,t,n){let r=unwrapOverridableSettings(t)[n]??null,i=(0,X.isDynamicPropValue)(r);return{propValue:i&&!e?r:e,baseValue:e||i?null:r}}function getTempNewValueForDynamicProp(e,t,n){return n===null&&(0,X.isDynamicPropValue)(t)?e.default??null:n}function createOverrideValue({matchingOverride:e,overrideKey:t,overrideValue:n,componentId:r}){let i=V.extract(e),a=V.extract(n)??i;if(a){let e=z.create({override_key:t,override_value:resolveOverridePropValue(n),schema_source:{type:`component`,id:r}});return V.create({override_key:a.override_key,origin_value:e})}return z.create({override_key:t,override_value:n,schema_source:{type:`component`,id:r}})}function getControlParams(e,t,n){let r=e[t.propKey],{value:i}=r,a=getControlLayout(r),o=populateChildControlProps(i.props);return a===`custom`&&(o.label=n??i.label),{control:r,controlProps:o,layout:a}}function OriginalControl({control:e,controlProps:t}){let{value:n}=e;return Y.createElement(X.BaseControl,{type:n.type,props:t})}function getControlLayout(e){return e.value.meta?.layout||X.controlsRegistry.getLayout(e.value.type)}function populateChildControlProps(e){if(e.childControlType){let t=X.controlsRegistry.get(e.childControlType),n=X.controlsRegistry.getPropTypeUtil(e.childControlType);e={...e,childControlConfig:{component:t,props:e.childControlProps||{},propTypeUtil:n}}}return e}function isValidOverride(e,t){let n=V.isValid(t)?t.value.origin_value?.value.override_key:t.value.override_key;return!!e.props[n]}function OverridePropsGroup({group:e}){let[t,n]=(0,un.useStateByElement)(e.id,!0),handleClick=()=>{n(!t)},r=(0,ln.useId)(),i=`label-${r}`,a=`content-${r}`,o=e.label;return q.createElement(J.Box,{"aria-label":`${o} section`},q.createElement(J.ListItemButton,{id:i,"aria-controls":a,"aria-label":`${o} section`,onClick:handleClick,p:0,sx:{"&:hover":{backgroundColor:`transparent`}}},q.createElement(J.Stack,{direction:`row`,alignItems:`center`,justifyItems:`start`,flexGrow:1,gap:.5},q.createElement(J.ListItemText,{secondary:o,secondaryTypographyProps:{color:`text.primary`,variant:`caption`,fontWeight:`bold`},sx:{flexGrow:0,flexShrink:1,marginInlineEnd:1}})),q.createElement(dn.CollapseIcon,{open:t,color:`secondary`,fontSize:`tiny`})),q.createElement(J.Collapse,{id:a,"aria-labelledby":i,in:t,timeout:`auto`},q.createElement(J.Stack,{direction:`column`,gap:1,p:2},e.props.map(e=>q.createElement(OverridePropControl,{key:e,overrideKey:e})))))}function InstancePanelBody({groups:e,isEmpty:t,emptyState:n,componentInstanceId:r}){return K.createElement(sn.PanelBody,null,K.createElement(an.ControlAdornmentsProvider,{items:(0,on.getFieldIndicators)(`settings`)},t?n:K.createElement(cn.Stack,{direction:`column`,alignItems:`stretch`},e.map(e=>K.createElement(K.Fragment,{key:e.id+r},K.createElement(OverridePropsGroup,{group:e}),K.createElement(cn.Divider,null))))))}var Pn=globalThis.elementorV2.editorEditingPanel;function filterValidOverridableProps(e,t){let n={};for(let[r,i]of Object.entries(e.props))isExposedPropValid(i,t)&&(n[r]=i);let r=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=>r.has(e))}])),order:e.groups.order}}}function isExposedPropValid(e,t){let{isChainBroken:n}=resolveOverridesChain({outerOverridableProp:e,outerInstanceId:t});return!n}function useSanitizeOverridableProps(e,t){let n=useOverridableProps(e),r=useIsSanitizedComponent(e,`overridableProps`);if(!(!n||!e))return r?n:filterValidOverridableProps(n,t)}function useInstancePanelData(){let{element:e,settings:t}=useComponentInstanceSettings(),n=t?.component_id?.value,r=t?.overrides?.value,i=useComponent(n??null),a=e?.id,o=useSanitizeOverridableProps(n??null,a);if(!n||!o||!i||!a)return null;let isNonEmptyGroup=e=>e!==null&&e.props.length>0,s=o.groups.order.map(e=>o.groups.items[e]??null).filter(isNonEmptyGroup);return{componentId:n,component:i,overrides:r,overridableProps:o,groups:s,isEmpty:s.length===0||Object.keys(o.props).length===0,componentInstanceId:a}}function useComponentInstanceSettings(){let{element:e,settings:t}=(0,Pn.useElement)();return{element:e,settings:U.extract(t.component_instance)}}var Fn=`https://go.elementor.com/go-pro-components-Instance-edit-footer/`;function InstanceEditingPanel(){let{canEdit:e}=useComponentsPermissions(),t=useInstancePanelData();if(!t)return null;let{componentId:n,component:r,overrides:i,overridableProps:a,groups:o,isEmpty:s,componentInstanceId:c}=t,l=(0,I.__)(`Edit %s`,`elementor`).replace(`%s`,r.name),u=F.createElement(St.Stack,{direction:`row`,gap:.5},F.createElement(DetachAction,{componentInstanceId:c,componentId:n}),e&&F.createElement(EditComponentAction,{disabled:!0,label:l,icon:xt.PencilIcon}));return F.createElement(St.Box,{"data-testid":`instance-editing-panel`,sx:{display:`flex`,flexDirection:`column`,height:`100%`}},F.createElement(ComponentInstanceProvider,{componentId:n,overrides:i,overridableProps:a},F.createElement(InstancePanelHeader,{componentName:r.name,actions:u}),F.createElement(InstancePanelBody,{groups:o,isEmpty:s,emptyState:F.createElement(EmptyState2,null),componentInstanceId:c})),!isProComponentsSupported()&&(isProOutdatedForComponents()?F.createElement(ComponentsUpdateAlert,{title:(0,I.__)(`Edit Component`,`elementor`),description:(0,I.__)(`To edit components, update Elementor Pro to the latest version.`,`elementor`)}):F.createElement(ComponentsUpgradeAlert,{title:(0,I.__)(`Edit components`,`elementor`),description:(0,I.__)(`Editing components requires an active Pro subscription.`,`elementor`),upgradeUrl:Fn})))}var In=__toESM(globalThis.React),Ln=globalThis.React,Rn=globalThis.elementorV2.editorTemplates,zn=globalThis.elementorV2.editorDocuments,Bn=globalThis.elementorV2.editorEmbeddedDocumentsManager;async function getComponentDocuments({elements:e,cache:t=new Map,isRecursive:n=!0}){return getDocumentsMap(await getComponentIds(e,t,n),t)}async function getComponentIds(e,t,n){let r=await Promise.all(e.filter(Boolean).map(async({widgetType:e,elType:r,elements:i,settings:a})=>{let o=[];if(isComponentInstance({widgetType:e,elType:r})){let e=a?.component_instance?.value?.component_id.value;if(!e)return o;o.push(e),t.has(e)||t.set(e,getComponentDocumentData(e)),n&&(i=(await t.get(e))?.elements)}if(i?.length){let e=await getComponentIds(i,t,n);o.push(...e)}return o}));return[...new Set(r.flat())]}async function getDocumentsMap(e,t){let n=await Promise.all(e.map(async e=>{let n=await t.get(e);return n?[e,n]:null}));return new Map(n.filter(e=>e!==null))}var Vn=globalThis.elementorV2.store;async function loadComponentsOverridableProps(e,{force:t=!1}={}){let n=t?e:e.filter(e=>!ve((0,Vn.__getState)(),e));if(!n.length)return;let{data:r}=await y.getOverridableProps(n);(0,Vn.__dispatch)(b.actions.loadOverridableProps(r))}async function loadComponentsAssets(e){if(!e.length)return;let t=await getComponentDocuments({elements:e,isRecursive:!1});updateDocumentState(t),t.forEach((e,t)=>{Bn.embeddedDocumentsManager.setDocument(t,e)}),await loadComponentsOverridableProps([...t.keys()])}function updateDocumentState(e){[...e.values()].some(zn.isDocumentDirty)&&(0,zn.setDocumentModifiedStatus)(!0)}var LoadTemplateComponents=()=>(0,Rn.isHandlingTemplateStyles)()?In.createElement(LoadTemplateComponentsInternal,null):null;function LoadTemplateComponentsInternal(){let e=(0,Rn.useLoadedTemplates)();return(0,Ln.useEffect)(()=>{loadComponentsAssets(e.flatMap(e=>e??[]))},[e]),null}var Hn=globalThis.elementorV2.editorCanvas,Un=globalThis.elementorV2.editorDocuments,Wn=globalThis.elementorV2.editorNotifications,Gn=globalThis.elementorV2.store,Kn=globalThis.elementorV2.utils,$=globalThis.wp.i18n,qn=globalThis.elementorV2.utils,Jn=7;function formatComponentElementsId(e,t){return e.map(e=>{let n=[...t,e.id],r=(0,qn.hashString)(n.join(`_`),Jn);return{...e,id:r,originId:e.id,elements:e.elements?formatComponentElementsId(e.elements,n):void 0}})}var Yn=globalThis.elementorV2.editorElements,Xn=globalThis.elementorV2.utils,Zn=7;function overridesRecordToMapping(e){let t={};for(let[n,r]of Object.entries(e))t[n]={value:r};return t}function getElementConfig(e){let t=e.elType===`widget`?e.widgetType:e.elType;if(t)return(0,Yn.getWidgetsCache)()?.[t]}function deriveIds(e,t){let n=(0,Xn.hashString)(t,Zn);return{...e,id:n,elements:(e.elements??[]).map((e,t)=>deriveIds(e,`${n}_${t}`))}}function reconcileElementTree(e,t){let n=getElementConfig(e),r=unwrapOverridableSettings(applyOverridesToSettings(e.settings??{},t)),i=e.elements??[],a=new Set(i.map(e=>e.id)),o={elements:[...i],settings:r};n?.children_dependencies?.length&&(0,Yn.reconcileInitialChildren)({elementId:e.id,elementConfig:n,attributes:o});let s=(o.elements??[]).map(t=>a.has(t.id)?t:deriveIds(t,`${e.id}_${t.elType}`)).map(e=>reconcileElementTree(e,t));return{...e,elements:s}}function reconcileComponentInstanceElements(e,t={}){let n=overridesRecordToMapping(t);return e.map(e=>reconcileElementTree(e,n))}var Qn=globalThis.elementorV2.editorDocuments,$n=globalThis.elementorV2.editorElements,er=globalThis.elementorV2.editorV1Adapters;async function switchToComponent(e,t,n){let r=getSelector(n,t);(0,Qn.invalidateDocumentData)(e),await(0,Qn.switchToDocument)(e,{selector:r,mode:`autosave`,setAsInitial:!1,shouldScroll:!1}),await loadComponentsOverridableProps([e],{force:!0});let i=(0,$n.getCurrentDocumentContainer)()?.children?.[0];i&&((0,$n.selectElement)(i.id),expandNavigator())}async function expandNavigator(){await(0,er.__privateRunCommand)(`navigator/expand-all`)}function getSelector(e,t){if(e)return buildUniqueSelector(e);if(t)return`[data-id="${t}"]`}function buildUniqueSelector(e){let t=[],n=e.closest(`[data-id]`);for(;n;){let e=n.dataset.id;n.hasAttribute(`data-elementor-id`)&&t.unshift(`[data-id="${e}"]`),n=n.parentElement?.closest(`[data-id]`)??null}if(t.length===0){let t=e.closest(`[data-id]`);if(t?.dataset?.id)return`[data-id="${t.dataset.id}"]`}return t.join(` `)}var tr=`e-component`,nr=`https://go.elementor.com/go-pro-components-Instance-edit-canvas-double-click/`,rr=`https://go.elementor.com/go-pro-components-Instance-edit-context-menu/`,ir=`/wp-admin/plugins.php`,ar=`component-edit-upgrade`,or=`component-edit-update`,sr=2e3;function notifyComponentEditUpgrade(){(0,Wn.notify)({type:`promotion`,id:ar,message:(0,$.__)(`Editing components requires an active Pro subscription.`,`elementor`),autoHideDuration:sr,additionalActionProps:[{size:`small`,variant:`contained`,color:`promotion`,href:nr,target:`_blank`,children:(0,$.__)(`Upgrade Now`,`elementor`)}]})}function notifyComponentEditUpdate(){(0,Wn.notify)({type:`info`,id:or,message:(0,$.__)(`To edit components, update Elementor Pro to the latest version.`,`elementor`),additionalActionProps:[{size:`small`,variant:`contained`,color:`info`,href:ir,target:`_blank`,children:(0,$.__)(`Update Now`,`elementor`)}]})}var updateGroups=(e,t)=>{let n=new Map(Object.entries(t.disable??{})),r=new Map(Object.entries(t.add??{}));return e.map(e=>{let t=n.get(e.name)??[],i=r.get(e.name),a=e.actions.map(e=>t.includes(e.name)?{...e,isEnabled:()=>!1}:e);return i&&a.splice(i.index,0,...i.actions),{...e,actions:a}})};function createComponentType(e){let t=window.elementor.modules.elements.types.Widget,n=createComponentView({...e});return class extends t{getType(){return e.type}getView(){return n}getModel(){return createComponentModel()}}}function createComponentView(e){let t=window;return class extends (0,Hn.createTemplatedElementView)(e){eventsManagerConfig=t.elementorCommon.eventsManager.config;#e;isComponentCurrentlyEdited(){return(0,Un.getCurrentDocument)()?.id===this.getComponentId()}getRenderContext(){let e=this.getNamespaceKey(),t=this._parent?.getRenderContext?.(),n=t?.[e];if(!this.#e)return t;let r=this.#e.overrides??{},i=n?.overrides??{};return{...t,[e]:{overrides:{...i,...r}}}}getResolverRenderContext(){let e=this.getNamespaceKey(),t=this.getRenderContext()?.[e];return t?{...this._parent?.getResolverRenderContext?.(),...t}:this._parent?.getResolverRenderContext?.()}afterSettingsResolve(e){let n=e.component_instance;if(n){this.#e={overrides:n.overrides??{}};let r=this.model.get(`id`),i=formatComponentElementsId(reconcileComponentInstanceElements(n.elements??[],n.overrides??{}),[r]);this.collection=t.elementor.createBackboneElementsCollection(i),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){let n=e.$el.find(`[data-children-placeholder]`).get(0);if(!n){super.attachBuffer(e,t);return}n.replaceWith(t)}getComponentId(){return(this.options?.model?.get(`settings`)?.get(`component_instance`)?.value).component_id.value}getContextMenuGroups(){let e=super.getContextMenuGroups().filter(e=>e.name!==`save`);return this.getComponentId()?updateGroups(e,this._getContextMenuConfig()):e}_getContextMenuConfig(){let e=isUserAdministrator(),t=(0,Kn.hasProInstalled)(),n=isProOutdatedForComponents(),r=!t&&!n,i=`<a href="${rr}" target="_blank" onclick="event.stopPropagation()" class="elementor-context-menu-list__item__shortcut__promotion-badge"><i class="eicon-upgrade-crown"></i></a>`,a={name:`edit component`,icon:`eicon-edit`,title:()=>(0,$.__)(`Edit Component`,`elementor`),...r&&{shortcut:i,hasShortcutAction:!0},isEnabled:()=>isProComponentsSupported()||n,callback:(e,t)=>this.editComponent(t)},o={name:`detach instance`,icon:`eicon-chain-broken`,title:()=>(0,$.__)(`Detach from Component`,`elementor`),isEnabled:()=>!0,callback:(e,t)=>this.detachInstance(t)};return{add:{general:{index:1,actions:e?[a,o]:[o]}},disable:{clipboard:[`pasteStyle`,`resetStyle`]}}}async switchDocument(){let{isAllowedToSwitchDocument:t,lockedBy:n}=await y.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()){notifyComponentEditUpdate();return}if(!isProComponentsSupported()||this.isComponentCurrentlyEdited())return;this.switchDocument();let r=this.model.get(`editor_settings`);trackComponentEvent({action:`edited`,executedBy:`user`,component_uid:r?.component_uid,component_name:r?.title,location:t,secondary_location:n,trigger:e})}detachInstance({trigger:t,location:n,secondaryLocation:r}){let i=this.getComponentId(),a=this.model.get(`id`);if(!i||!a)return;let handleConfirm=async()=>{try{await detachComponentInstance({instanceId:a,componentId:i,trackingInfo:{location:n,secondaryLocation:r,trigger:t}})}catch{(0,Wn.notify)({type:`error`,message:(0,$.__)(`Failed to detach component instance.`,`elementor`),id:`detach-component-instance-failed`})}};e.showDetachConfirmDialog?.(handleConfirm)}handleDblClick(e){if(e.stopPropagation(),!isUserAdministrator())return;if(isProOutdatedForComponents()){notifyComponentEditUpdate();return}if(!(0,Kn.hasProInstalled)()){notifyComponentEditUpgrade();return}let{triggers:t,locations:n,secondaryLocations:r}=this.eventsManagerConfig;this.editComponent({trigger:t.doubleClick,location:n.canvas,secondaryLocation:r.canvasElement})}events(){return{...super.events(),dblclick:this.handleDblClick}}attributes(){return{...super.attributes(),"data-elementor-id":this.getComponentId()}}}}function setInactiveRecursively(e){let t=e.get(`editSettings`);t&&t.set(`inactive`,!0);let n=e.get(`elements`);n&&n.forEach(e=>{setInactiveRecursively(e)})}function isUserAdministrator(){return window.elementor.config?.user?.is_administrator??!1}function createComponentModel(){let e=window.elementor.modules.elements.types.Widget,t=new e().getModel();return t.extend({initialize(e,n){t.prototype.initialize.call(this,e,n);let r=this.get(`settings`)?.get(`component_instance`);if(r?.value){let e=r.value.component_id?.value;e&&typeof e==`number`&&this.set(`componentId`,e)}this.set(`isGlobal`,!0)},getTitle(){let e=this.get(`editor_settings`),t=e?.title;if(t)return t;let n=e?.component_uid;if(n){let e=selectComponentByUid((0,Gn.__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(){return this.get(`editor_settings`)?.component_uid||null}})}var cr=globalThis.React,lr=globalThis.elementorV2.store;function PopulateStore(){return(0,cr.useEffect)(()=>{(0,lr.__dispatch)(le())},[]),null}var ur=globalThis.elementorV2.editorElements,dr=globalThis.elementorV2.editorNotifications,fr=globalThis.elementorV2.editorV1Adapters,pr=globalThis.elementorV2.store,mr=globalThis.wp.i18n,hr=`e-component`,gr={type:`default`,message:(0,mr.__)(`Can't add this component - components that contain each other can't be nested.`,`elementor`),id:`circular-component-nesting-blocked`};function initCircularNestingPrevention(){(0,fr.blockCommand)({command:`document/elements/create`,condition:blockCircularCreate}),(0,fr.blockCommand)({command:`document/elements/move`,condition:blockCircularMove}),(0,fr.blockCommand)({command:`document/elements/paste`,condition:blockCircularPaste})}function wouldCreateCircularNesting(e){if(e===void 0)return!1;let t=(0,pr.__getState)(),n=be(t),r=ye(t);return n===null?!1:e===n||r.some(t=>t.componentId===e)}function extractComponentIdFromModel(e){return!e||e.widgetType!==hr?null:e.settings?.component_instance?.value?.component_id?.value??null}function extractComponentIdFromElement(e){return e.widgetType===hr?e.settings?.component_instance?.value?.component_id?.value??null:null}function extractComponentIdsFromElements(e){let t=[];for(let n of e){let e=extractComponentIdFromElement(n);e!==null&&t.push(e),n.elements?.length&&t.push(...extractComponentIdsFromElements(n.elements))}return t}function extractComponentIdFromContainer(e){return e.model?.get?.(`widgetType`)===hr?((e.model?.get?.(`settings`))?.get?.(`component_instance`))?.value?.component_id?.value??null:null}function blockCircularCreate(e){let t=extractComponentIdFromModel(e.model);if(t===null)return!1;let n=wouldCreateCircularNesting(t);return n&&(0,dr.notify)(gr),n}function blockCircularMove(e){let{containers:t=[e.container]}=e,n=t.some(e=>e?(0,ur.getAllDescendants)(e).some(e=>{let t=extractComponentIdFromContainer(e);return t!==null&&wouldCreateCircularNesting(t)}):!1);return n&&(0,dr.notify)(gr),n}function blockCircularPaste(e){let{storageType:t}=e;if(t!==`localstorage`)return!1;let n=window?.elementorCommon?.storage?.get();if(!n?.clipboard?.elements)return!1;let r=extractComponentIdsFromElements(n.clipboard.elements).some(wouldCreateCircularNesting);return r&&(0,dr.notify)(gr),r}function removeComponentStyles(e){y.invalidateComponentConfigCache(e)}var _r=globalThis.elementorV2.editorDocuments,vr=globalThis.elementorV2.editorNotifications,yr=globalThis.elementorV2.httpClient,br=globalThis.wp.i18n,xr=`insufficient_permissions`,Sr=`https://go.elementor.com/go-pro-components-Instance-draft-failure/`,Cr=`component-publish-upgrade`;async function publishDraftComponentsInPageBeforeSave({status:e,elements:t}){if(e!==`publish`)return;let n=[...(await getComponentDocuments({elements:t})).values()].filter(_r.isDocumentDirty).map(e=>e.id);if(n.length!==0){try{await y.updateStatuses(n,`publish`)}catch(e){if(isInsufficientPermissionsError(e)){notifyPublishUpgrade();return}throw e}n.forEach(e=>(0,_r.invalidateDocumentData)(e))}}function isInsufficientPermissionsError(e){return e instanceof yr.AxiosError&&e.response?.data?.code===xr}function notifyPublishUpgrade(){(0,vr.notify)({type:`promotion`,id:Cr,message:(0,br.__)(`You have unpublished component on this page. You need a pro version to publish it.`,`elementor`),additionalActionProps:[{size:`small`,variant:`contained`,color:`promotion`,href:Sr,target:`_blank`,children:(0,br.__)(`Upgrade Now`,`elementor`)}]})}var beforeSave=({container:e,status:t})=>publishDraftComponentsInPageBeforeSave({elements:e?.model.get(`elements`).toJSON?.()??[],status:t}),wr=globalThis.elementorV2.editorV1Adapters;function initLoadComponentDataAfterInstanceAdded(){(0,wr.registerDataHook)(`after`,`document/elements/paste`,(e,t)=>{load(t)}),(0,wr.registerDataHook)(`after`,`document/elements/import`,(e,t)=>{load(t)})}function load(e){e&&loadComponentsAssets((Array.isArray(e)?e:[e]).map(e=>e.model?.toJSON()).filter(e=>!!e))}function init(){(0,te.__registerSlice)(b),(0,u.registerElementType)(tr,e=>createComponentType({...e,showLockedByModal:openEditModeDialog,showDetachConfirmDialog:openDetachConfirmDialog})),window.elementorCommon.__beforeSave=beforeSave,(0,f.injectTab)({id:`components`,label:(0,ne.__)(`Components`,`elementor`),component:Components,position:1}),(0,l.injectIntoLogic)({id:`components-populate-store`,component:PopulateStore}),(0,m.registerDataHook)(`after`,`editor/documents/attach-preview`,()=>{let{id:e,config:t}=(0,d.getV1CurrentDocument)()??{};e&&(removeComponentStyles(e),loadComponentsAssets(t?.elements??[]))}),p.embeddedDocumentsManager.onDocumentLoad((e,t)=>{loadComponentsAssets(t.elements??[])}),(0,l.injectIntoLogic)({id:`templates`,component:LoadTemplateComponents}),(0,ee.registerEditingPanelReplacement)({id:`component-instance-edit-panel`,condition:(e,t)=>t.key===`e-component`,component:InstanceEditingPanel}),u.settingsTransformersRegistry.register(`component-instance`,Te),u.settingsTransformersRegistry.register(`overridable`,De),u.settingsTransformersRegistry.register(`override`,Oe),initCircularNestingPrevention(),initLoadComponentDataAfterInstanceAdded()}0&&(t.exports={COMPONENT_WIDGET_TYPE:qt,ComponentInstanceProvider,ComponentItem:Je,ComponentName,ComponentSearch,ComponentsList,DetachAction,EditComponentAction,EmptySearchResult,InstanceEmptyState,InstancePanelBody,InstancePanelHeader,LoadingComponents,OverridablePropProvider,SLICE_NAME:g,SearchProvider,apiClient:y,componentInstanceOverridePropTypeUtil:z,componentInstanceOverridesPropTypeUtil:H,componentInstancePropTypeUtil:U,componentOverridablePropTypeUtil:V,componentsActions:vn,componentsSelectors:yn,createComponentsAction,filterValidOverridableProps,getComponentDocumentData,getContainerByOriginId,getOverridableProp,getPropTypeForComponentOverride,init,isComponentInstance,loadComponentsAssets,onElementDrop,publishDraftComponentsInPageBeforeSave,registerComponentsReducer,resolveOverridePropValue,selectComponentByUid,selectCreatedThisSession:he,selectOverridableProps:_e,selectPath:ye,slice:b,switchToComponent,trackComponentEvent,updateOverridableProp,useComponentInstanceElement,useComponents,useComponentsPermissions,useCurrentComponent,useCurrentComponentId,useFilteredComponents,useInstancePanelData,useIsSanitizedComponent,useOverridablePropValue,useOverridableProps,useSanitizeOverridableProps})}))());(window.elementorV2=window.elementorV2||{}).editorComponents=o})(),window.elementorV2.editorComponents?.init?.(); | |
| 41 | + &:hover, | |
| 42 | + &.enlarged { | |
| 43 | + &:before { | |
| 44 | + width: 12px; | |
| 45 | + height: 12px; | |
| 46 | + border-radius: 2px; | |
| 47 | + } | |
| 48 | + | |
| 49 | + .icon { | |
| 50 | + opacity: 1; | |
| 51 | + } | |
| 52 | + } | |
| 53 | +`,Re=(0,z.forwardRef)(({triggerProps:e,isOpen:t,isOverridable:n},o)=>z.createElement(Ae,Be({ref:o},e,{className:t||n?"enlarged":""}),z.createElement(Ue,{className:"icon","aria-label":n?(0,d.__)("Overridable property","elementor"):(0,d.__)("Make prop overridable","elementor")},n?z.createElement(N.CheckIcon,{fontSize:Fe}):z.createElement(N.PlusIcon,{fontSize:Fe}))));function Ge(){return Ge=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},Ge.apply(null,arguments)}const Ke="tiny",We={value:null,label:(0,d.__)("Default","elementor")};function qe({onSubmit:e,groups:t,currentValue:n}){const[o,r]=(0,z.useState)(n?.label??null),[a,i]=(0,z.useState)(n?.groupId??t?.[0]?.value??null),s=(0,d.__)("Name","elementor"),l=(0,d.__)("Group Name","elementor"),c=void 0===n,m=c?(0,d.__)("Create new property","elementor"):(0,d.__)("Update property","elementor"),u=c?(0,d.__)("Create","elementor"):(0,d.__)("Update","elementor");return z.createElement(j.Form,{onSubmit:()=>e({label:o??"",group:a})},z.createElement(B.Stack,{alignItems:"start",width:"268px"},z.createElement(B.Stack,{direction:"row",alignItems:"center",py:1,px:1.5,sx:{columnGap:.5,borderBottom:"1px solid",borderColor:"divider",width:"100%",mb:1.5}},z.createElement(B.Typography,{variant:"caption",sx:{color:"text.primary",fontWeight:"500",lineHeight:1}},m)),z.createElement(B.Grid,{container:!0,gap:.75,alignItems:"start",px:1.5,mb:1.5},z.createElement(B.Grid,{item:!0,xs:12},z.createElement(B.FormLabel,{size:"tiny"},s)),z.createElement(B.Grid,{item:!0,xs:12},z.createElement(B.TextField,{name:s,size:Ke,fullWidth:!0,placeholder:(0,d.__)("Enter value","elementor"),value:o??"",onChange:e=>r(e.target.value)}))),z.createElement(B.Grid,{container:!0,gap:.75,alignItems:"start",px:1.5,mb:1.5},z.createElement(B.Grid,{item:!0,xs:12},z.createElement(B.FormLabel,{size:"tiny"},l)),z.createElement(B.Grid,{item:!0,xs:12},z.createElement(B.Select,{name:l,size:Ke,fullWidth:!0,value:a??null,onChange:i,displayEmpty:!0,renderValue:e=>{if(!e||""===e){const[e=We]=t??[];return e.label}return t?.find(({value:t})=>t===e)?.label??e}},(t??[We]).map(({label:e,...t})=>z.createElement(j.MenuListItem,Ge({key:t.value},t,{value:t.value??""}),e))))),z.createElement(B.Stack,{direction:"row",justifyContent:"flex-end",alignSelf:"end",mt:1.5,py:1,px:1.5},z.createElement(B.Button,{type:"submit",disabled:!o,variant:"contained",color:"primary",size:"small"},u))))}function He(){return He=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},He.apply(null,arguments)}const Ye=["_cssid","attributes"];function Je(){const{bind:e}=(0,Me.useBoundProp)(),t=(0,r.getV1CurrentDocument)();if(t.config.type!==ue||!t.id)return null;if(!function(e){return!Ye.includes(e)}(e))return null;const n=P((0,c.__getState)(),t.id);return z.createElement(Ze,{componentId:t.id,overridableProps:n})}function Ze({componentId:e,overridableProps:t}){const{element:{id:n},elementType:o}=(0,a.useElement)(),{value:r,bind:i}=(0,Me.useBoundProp)(),{value:s,setValue:l}=(0,Me.useBoundProp)(ze),m=(0,B.usePopupState)({variant:"popover"}),u=(0,B.bindTrigger)(m),p=(0,B.bindPopover)(m),{elType:g}=(0,W.getWidgetsCache)()?.[o.key]??{elType:"widget"},h=s?function({componentId:e,overrideKey:t}){const n=P((0,c.__getState)(),e);if(n)return n.props[t]}({componentId:e,overrideKey:s.override_key}):void 0;return z.createElement(z.Fragment,null,z.createElement(B.Tooltip,{placement:"top",title:(0,d.__)("Override Property","elementor")},z.createElement(Re,{triggerProps:u,isOpen:!!p.open,isOverridable:!!s})),z.createElement(B.Popover,He({disableScrollLock:!0,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{my:2.5}}},p),z.createElement(qe,{onSubmit:({label:t,group:a})=>{const d=s?s?.origin_value??{}:r,u=function({componentId:e,overrideKey:t,elementId:n,label:o,groupId:r,propKey:a,elType:i,widgetType:s,originValue:l}){const d=P((0,c.__getState)(),e);if(!d)return;const m=t?d.props[t]:null,{props:u,groups:p}={...d},{groups:g,currentGroupId:h}=function(e,t){return t?e.items[t]?{groups:e,currentGroupId:t}:je(e,t):e.order.length>0?{groups:e,currentGroupId:e.order[0]}:je(e)}(p,r||m?.groupId),y={overrideKey:m?.overrideKey||(0,F.generateUniqueId)("prop"),label:o,elementId:n,propKey:a,widgetType:s,elType:i,originValue:l,groupId:h},f={...u,[y.overrideKey]:y},_={items:{...g.items,[h]:Ne(g,h,y)},order:g.order.includes(h)?g.order:[...g.order,h]};return m&&m.groupId!==h&&(_.items[m.groupId]=function(e,t,n){const o={...e.items[t]};return o&&(o.props=o.props.filter(e=>e!==n.overrideKey)),o}(g,m.groupId,y)),(0,c.__dispatch)(w.actions.setOverridableProps({componentId:e,overridableProps:{props:f,groups:_}})),y}({componentId:e,overrideKey:s?.override_key??null,elementId:n,label:t,groupId:a,propKey:i,elType:g??"widget",widgetType:o.key,originValue:d});!s&&u&&l({override_key:u.overrideKey,origin_value:d}),m.close()},groups:t?.groups.order.map(e=>({value:e,label:t.groups.items[e].label})),currentValue:h})))}var Qe=window.elementorV2.editorMcp;const Xe={element_id:ye.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:ye.z.string().describe("The name for the new component. Should be descriptive and unique among existing components.")},et={message:ye.z.string().optional().describe("Additional information about the operation result"),component_uid:ye.z.string().optional().describe("The unique identifier of the newly created component (only present on success)")},tt=["e-div-block","e-flexbox","e-tabs"],nt={ELEMENT_NOT_FOUND:"Element not found. Use 'list-elements' to get valid element IDs.",ELEMENT_NOT_ONE_OF_TYPES:`Element is not one of the following types: ${tt.join(", ")}`,ELEMENT_IS_LOCKED:"Cannot save a locked element as a component."},ot=async e=>{const{element_id:t,component_name:n}=e,o=(0,W.getContainer)(t);if(!o)throw new Error(nt.ELEMENT_NOT_FOUND);const r=o.model.get("elType");if(!tt.includes(r))throw new Error(nt.ELEMENT_NOT_ONE_OF_TYPES);const a=o.model.toJSON({remove:["default"]});if(a?.isLocked)throw new Error(nt.ELEMENT_IS_LOCKED);return{status:"ok",message:`Component "${n}" created successfully.`,component_uid:pe(n,a,null)}},rt=()=>(0,Qe.getMCPByDomain)("components").addTool({name:"save-as-component",schema:Xe,outputSchema:et,description:`Save an existing element as a reusable component in the Elementor editor.\n\n## When NOT to use this tool:\n- Do not use for elements that are already components (widgetType: 'e-component').\n- Do not use for locked elements.\n- Do not guess element IDs. Always use "list-elements" first to get valid IDs.\n\n## Prerequisites:\n- **Verify element type**: Ensure the element is not already a component (widgetType should not be 'e-component').\n- **Check if element is unlocked**: Locked elements cannot be saved as components.\n- **Check that the element is one of the following types**: ${tt.join(", ")}\n\n## Required parameters:\n- **element_id**: The unique ID of the element to save.\n- **component_name**: A descriptive name for the component (2-50 characters).\n\n## Example tool call:\n\`\`\`json\n{ "element_id": "abc123", "component_name": "Hero Section" }\n\`\`\`\n`,handler:ot});function at(){return(0,z.useEffect)(()=>{(0,c.__dispatch)(_())},[]),null}const it=(0,s.createStylesProvider)({key:"components-styles",priority:100,subscribe:e=>(0,c.__subscribeWithSelector)(e=>e[v],()=>{e()}),actions:{all:()=>T((0,c.__getState)()),get:e=>T((0,c.__getState)()).find(t=>t.id===e)??null}});async function st({container:e,status:t}){const n=S((0,c.__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}))}),o=new Map;return Object.entries(n).forEach(([e,t])=>{o.set(e,t)}),o}(n,t);lt(e.model.get("elements").toJSON(),o),(0,c.__dispatch)(w.actions.add(n.map(e=>({id:o.get(e.uid),name:e.name,uid:e.uid})))),(0,c.__dispatch)(w.actions.resetUnpublished())}catch(e){throw new Error(`Failed to publish components and update component instances: ${e}`)}}function lt(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;if(n&&t.has(n))return{shouldUpdate:!0,newComponentId:t.get(n)}}return{shouldUpdate:!1,newComponentId:null}}(e,t);var r,a;n&&(r=e.id,a=o,(0,W.updateElementSettings)({id:r,props:{component_instance:{$$type:"component-instance",value:{component_id:a}}},withHistory:!1})),e.elements&<(e.elements,t)})}async function ct({status:e,container:t}){if("publish"!==e)return;const n=t.model.get("elements").toJSON(),o=await Q(n),a=(await Promise.all(o.map(L))).filter(e=>!!e).filter(r.isDocumentDirty).map(e=>e.id);0!==a.length&&(await f.updateStatuses(a,"publish"),a.forEach(e=>(e=>{(0,r.getV1DocumentsManager)().invalidateCache(e)})(e)))}const dt=({container:e,status:t})=>Promise.all([st({container:e,status:t}),ct({container:e,status:t})]);function mt(){s.stylesRepository.register(it),(0,c.__registerSlice)(w),(0,o.registerElementType)(J,e=>function(e){const t=window;return class extends t.elementor.modules.elements.types.Widget{getType(){return e.type}getView(){return function(e){return class extends((0,o.createTemplatedElementView)(e)){legacyWindow=window;eventsManagerConfig=this.legacyWindow.elementorCommon.eventsManager.config;isComponentCurrentlyEdited(){const e=(0,r.getCurrentDocument)();return e?.id===this.getComponentId()}afterSettingsResolve(e){return e.component_instance&&(this.collection=this.legacyWindow.elementor.createBackboneElementsCollection(e.component_instance),this.collection.models.forEach(Z),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}getContextMenuGroups(){const e=super.getContextMenuGroups().filter(e=>"save"!==e.name);if(!this.getComponentId())return e;const t=[{name:"edit component",actions:[{name:"edit component",icon:"eicon-edit",title:()=>(0,d.__)("Edit Component","elementor"),isEnabled:()=>!0,callback:(e,t)=>this.editComponent(t)}]}];return[...e,...t]}async switchDocument(){const{isAllowedToSwitchDocument:t,lockedBy:n}=await f.getComponentLockStatus(this.getComponentId());t?(0,l.__privateRunCommand)("editor/documents/switch",{id:this.getComponentId(),mode:"autosave",selector:`[data-id="${this.model.get("id")}"]`,shouldScroll:!1}):e.showLockedByModal?.(n||"")}editComponent({trigger:e,location:t,secondaryLocation:n}){if(this.isComponentCurrentlyEdited())return;this.switchDocument();const o=this.model.get("editor_settings");H({action:"edited",component_uid:o?.component_uid,component_name:o?.title,location:t,secondary_location:n,trigger:e})}handleDblClick(e){e.stopPropagation();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)}}}({...e,showLockedByModal:Le})),(0,l.registerDataHook)("dependency","editor/documents/close",e=>((0,r.getV1CurrentDocument)().config.type===ue&&(e.mode="autosave"),!0)),(0,l.registerDataHook)("after","preview/drop",Y),window.elementorCommon.__beforeSave=dt,(0,i.injectTab)({id:"components",label:(0,d.__)("Components","elementor"),component:me}),(0,n.injectIntoTop)({id:"create-component-popup",component:we}),(0,n.injectIntoLogic)({id:"components-populate-store",component:at}),(0,n.injectIntoTop)({id:"edit-component",component:Pe}),(0,l.registerDataHook)("after","editor/documents/attach-preview",async()=>{const{id:e,config:t}=(0,r.getV1CurrentDocument)();e&&function(e){f.invalidateComponentConfigCache(e),(0,c.__dispatch)(w.actions.removeStyles({id:e}))}(e),await ee(t?.elements??[])}),(0,a.registerFieldIndicator)({fieldType:a.FIELD_TYPE.SETTINGS,id:"component-overridable-prop",priority:1,indicator:Je}),o.settingsTransformersRegistry.register("component-instance",O),o.settingsTransformersRegistry.register("overridable",M),function(){const{setMCPDescription:e}=(0,Qe.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."),rt()}()}(window.elementorV2=window.elementorV2||{}).editorComponents=t}(),window.elementorV2.editorComponents?.init?.(); | |