Sid Gifari File Manager
🏠Root
/
home2
/
iuywvcmy
/
public_html
/
wp-content
/
plugins
/
elementor
/
assets
/
js
/
packages
/
editor-components
/
Editing: editor-components.min.js
!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)` pointer-events: none; opacity: 0; transition: opacity 0.2s ease-in-out; & > svg { position: absolute; top: 50%; left: 50%; transform: translate( -50%, -50% ); width: 10px; height: 10px; fill: ${({theme:e})=>e.palette.primary.contrastText}; stroke: ${({theme:e})=>e.palette.primary.contrastText}; stroke-width: 2px; } `,Ae=(0,B.styled)(B.Box)` position: relative; display: flex; align-items: center; justify-content: center; cursor: pointer; width: 16px; height: 16px; margin-inline: ${({theme:e})=>e.spacing(.5)}; &:before { content: ''; display: block; position: absolute; top: 50%; left: 50%; transform: translate( -50%, -50% ) rotate( 45deg ); width: 5px; height: 5px; border-radius: 1px; background-color: ${({theme:e})=>e.palette.primary.main}; transition: all 0.1s ease-in-out; } &:hover, &.enlarged { &:before { width: 12px; height: 12px; border-radius: 2px; } .icon { opacity: 1; } } `,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?.();
Save
Cancel