← All changes
|
assets/js/packages/editor-variables/editor-variables.min.js
+1
-1
4.2.0-dev2
→
4.1.0-beta1
View file →
| @@ -1 +1 @@ | ||
| 1 | -!function(){"use strict";var e={2020:function(e){e.exports=window.elementorV2.editorProps},5527:function(e){e.exports=window.elementorV2.editorV1Adapters},18998:function(e){e.exports=window.elementorV2.httpClient},22444:function(e){e.exports=window.elementorV2.utils},22504:function(e){e.exports=window.elementorV2.editor},24413:function(e){e.exports=window.elementorV2.icons},27723:function(e){e.exports=window.wp.i18n},27987:function(e){e.exports=window.elementorV2.menus},33176:function(e){e.exports=window.elementorV2.events},36714:function(e,t,a){var r,n=Object.create,l=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,a,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of i(t))c.call(e,n)||n===a||l(e,n,{get:()=>t[n],enumerable:!(r=o(t,n))||r.enumerable});return e},__toESM=(e,t,a)=>(a=null!=e?n(s(e)):{},__copyProps(!t&&e&&e.__esModule?a:l(a,"default",{value:e,enumerable:!0}),e)),u={};((e,t)=>{for(var a in t)l(e,a,{get:t[a],enumerable:!0})})(u,{GLOBAL_VARIABLES_URI:()=>wr,Utils:()=>vn,VariablesManagerPanelEmbedded:()=>VariablesManagerPanelEmbedded,getMenuActionsForVariable:()=>getMenuActionsForVariable,hasVariable:()=>hasVariable,init:()=>init,registerVariableType:()=>Y,registerVariableTypes:()=>registerVariableTypes,service:()=>W,sizeVariablePropTypeUtil:()=>Yr,trackVariablesManagerEvent:()=>trackVariablesManagerEvent}),e.exports=(r=u,__copyProps(l({},"__esModule",{value:!0}),r));var p=__toESM(a(97557)),d=a(97557),m=a(46400),b=a(51061),v=a(70374),g=a(24413),y=a(79513),h=a(27723),f=a(33176),trackVariableEvent=({varType:e,controlPath:t,action:a,executedBy:r})=>{const{dispatchEvent:n,config:l}=(0,f.getMixpanel)();if(!l?.names?.variables?.[a])return;const o=l.names.variables[a];let i={var_type:e,action_type:o};r&&(i.executed_by=r);r&&"mcp_tool"===r||(i={...{location:l?.locations?.variables||"",secondaryLocation:l?.secondaryLocations?.variablesPopover||"",trigger:l?.triggers?.click||""},...i}),t&&(i.control_path=t),n?.(o,i)},trackVariablesManagerEvent=({action:e,source:t,varType:a,controlPath:r})=>{const{dispatchEvent:n,config:l}=(0,f.getMixpanel)();if(!l?.names?.variables?.[e])return;const o=l.names.variables[e],i={location:l?.locations?.variablesManager||"",trigger:l?.triggers?.click||"",action_type:o};t&&(i.source=t),a&&(i.var_type=a),r&&(i.style_control_path=r),n?.(o,i)},trackVariableSyncToV3=({variableLabel:e,action:t})=>{const{dispatchEvent:a,config:r}=(0,f.getMixpanel)();if(!r?.names?.variables?.variableSyncToV3)return;const n=r.names.variables.variableSyncToV3,l="sync"===t;a?.(n,{interaction_type:"click",target_type:e,target_name:l?"sync_to_v3":"unsync_to_v3",interaction_result:l?"var_is_synced_to_V3":"var_is_unsynced_from_V3",target_location:"widget_panel",location_l1:"var_manager",interaction_description:l?`user_synced_${e}_to_v3`:`user_unsync_${e}_from_v3`})},E=a(24413),C=a(27723),_={MISSING_VARIABLE_NAME:(0,C.__)("Give your variable a name.","elementor"),MISSING_VARIABLE_VALUE:(0,C.__)("Add a value to complete your variable.","elementor"),INVALID_CHARACTERS:(0,C.__)("Use letters, numbers, dashes (-), or underscores (_) for the name.","elementor"),NO_NON_SPECIAL_CHARACTER:(0,C.__)("Names have to include at least one non-special character.","elementor"),VARIABLE_LABEL_MAX_LENGTH:(0,C.__)("Keep names up to 50 characters.","elementor"),DUPLICATED_LABEL:(0,C.__)("This variable name already exists. Please choose a unique name.","elementor"),UNEXPECTED_ERROR:(0,C.__)("There was a glitch. Try saving your variable again.","elementor"),BATCH:{DUPLICATED_LABELS:(e,t)=>(0,C.sprintf)((0,C.__)("We found %1$d duplicated %2$s.","elementor"),e,t),UNEXPECTED_ERROR:(0,C.__)("There was a glitch.","elementor"),DUPLICATED_LABEL_ACTION:(0,C.__)("Take me there","elementor"),DUPLICATED_LABEL_ACTION_MESSAGE:(0,C.__)("Please rename the variables.","elementor"),UNEXPECTED_ERROR_ACTION_MESSAGE:(0,C.__)("Try saving your variables again.","elementor")}},mapServerError=e=>{if("duplicated_label"===e?.response?.data?.code)return{field:"label",message:_.DUPLICATED_LABEL};if("batch_duplicated_label"===e?.response?.data?.code){const t=e?.response?.data?.data??{},a=Object.keys(t).length,r=1===a?"name":"names",n=Object.keys(t);return{field:"label",message:_.BATCH.DUPLICATED_LABELS(a,r),severity:"error",IconComponent:E.AlertTriangleFilledIcon,action:{label:_.BATCH.DUPLICATED_LABEL_ACTION,message:_.BATCH.DUPLICATED_LABEL_ACTION_MESSAGE,data:{duplicatedIds:n}}}}return"batch_operation_failed"===e?.response?.data?.code?{field:"label",message:_.BATCH.UNEXPECTED_ERROR,severity:"secondary",IconComponent:E.InfoCircleFilledIcon,action:{message:_.BATCH.UNEXPECTED_ERROR_ACTION_MESSAGE}}:void 0},validateLabel=(e,t)=>{if(!e.trim())return _.MISSING_VARIABLE_NAME;if(!/^[a-zA-Z0-9_-]+$/.test(e))return _.INVALID_CHARACTERS;return/[a-zA-Z0-9]/.test(e)?50<e.length?_.VARIABLE_LABEL_MAX_LENGTH:Object.values(t??{}).some(t=>t.label===e)?_.DUPLICATED_LABEL:"":_.NO_NON_SPECIAL_CHARACTER},labelHint=e=>39<e.length?_.VARIABLE_LABEL_MAX_LENGTH:"",validateValue=e=>e.trim()?"":_.MISSING_VARIABLE_VALUE,T=a(82148),S=__toESM(a(97557)),w=a(82148),x=a(79513),k=a(27723),V=a(79513),P=(0,V.styled)(V.UnstableColorIndicator)(({theme:e})=>({borderRadius:e.shape.borderRadius/2+"px",marginRight:e.spacing(.25)})),I=a(2020),A=a(59618),z=(0,I.createPropUtils)("global-color-variable",A.z.string()),L=a(27723),D=a(18998),R="elementor/v1/variables",apiClient_list=()=>(0,D.httpService)().get(R+"/list"),apiClient_create=(e,t,a)=>(0,D.httpService)().post(R+"/create",{type:e,label:t,value:a}),apiClient_update=(e,t,a,r)=>(0,D.httpService)().put(R+"/update",{id:e,label:t,value:a,type:r}),apiClient_delete=e=>(0,D.httpService)().post(R+"/delete",{id:e}),apiClient_restore=(e,t,a,r)=>{const n={id:e};return t&&(n.label=t),a&&(n.value=a),r&&(n.type=r),(0,D.httpService)().post(R+"/restore",n)},apiClient_batch=e=>(0,D.httpService)().post(R+"/batch",e),generateTempId=()=>`tmp-${Date.now().toString(36)}-${Math.random().toString(36).substring(2,8)}`,isTempId=e=>e.startsWith("tmp-"),U="elementor-global-variables",F="elementor-global-variables-watermark",B="variables:updated",O="RW",M=a(5527),N=a(2020),j=a(59618),$=(0,N.createPropUtils)("global-font-variable",j.z.string()),G=(()=>{const e={};let t;const shouldUpdate=(t,a)=>!(t in e)||(e[t].label!==a.label||(e[t].value!==a.value||(!(e[t]?.deleted||!a?.deleted)||!(!e[t]?.deleted||a?.deleted)))),fontEnqueue=e=>{if(e)try{(0,M.enqueueFont)(e)}catch{}};return{subscribe:e=>(t=e,()=>{t=()=>{}}),update:a=>{(t=>{let a=!1;for(const[r,n]of Object.entries(t))shouldUpdate(r,n)&&(e[r]=n,n.type===$.key&&fontEnqueue(n.value),a=!0);return a})(a)&&"function"==typeof t&&t({...e})}}})(),H=new class{state;notifyChange(){window.dispatchEvent(new Event(B))}constructor(){this.state={watermark:-1,variables:{}}}load(){return this.state.watermark=parseInt(localStorage.getItem(F)||"-1"),this.state.variables=JSON.parse(localStorage.getItem(U)||"{}"),this.state.variables}fill(e,t){this.state.variables={},e&&Object.keys(e).length&&(this.state.variables=e),this.state.watermark=t,localStorage.setItem(F,this.state.watermark.toString()),localStorage.setItem(U,JSON.stringify(this.state.variables)),this.notifyChange()}add(e,t){this.load(),this.state.variables[e]=t,localStorage.setItem(U,JSON.stringify(this.state.variables)),this.notifyChange()}update(e,t){this.load(),this.state.variables[e]=t,localStorage.setItem(U,JSON.stringify(this.state.variables)),this.notifyChange()}watermark(e){this.state.watermark=e,localStorage.setItem(F,this.state.watermark.toString())}watermarkDiff(e,t){const a=t-this.state.watermark;return O===e?1!==a:"RO"===e&&0!==a}},W={variables:()=>H.load(),findIdByLabel(e){const t=Object.entries(this.variables()).find(([,t])=>t.label===e);if(!t)throw new Error(`Variable with label ${e} not found`);return t[0]},findVariableByLabel(e){return Object.values(this.variables()).find(t=>t.label===e)||null},getWatermark:()=>H.state.watermark,init:()=>W.load(),load:()=>apiClient_list().then(e=>{const{success:t,data:a}=e.data;if(!t)throw new Error("Unexpected response from server");return a}).then(e=>{const{variables:t,watermark:a}=e;return H.fill(t,a),G.update(t),t}),create:({type:e,label:t,value:a},r={})=>apiClient_create(e,t,a).then(e=>{const{success:t,data:a}=e.data;if(!t){const e=a?.message||(0,L.__)("Unexpected response from server","elementor");throw new Error(e)}return a}).then(t=>{const{variable:a,watermark:n}=t;handleWatermark(O,n);const{id:l,...o}=a;return H.add(l,o),G.update({[l]:o}),trackVariableEvent({varType:e,action:"save",...r.eventData}),{id:l,variable:o}}),update:(e,{label:t,value:a,type:r},n={})=>apiClient_update(e,t,a,r).then(e=>{const{success:t,data:a}=e.data;if(!t){const e=a?.message||(0,L.__)("Unexpected response from server","elementor");throw new Error(e)}return a}).then(e=>{const{variable:t,watermark:a}=e;handleWatermark(O,a);const{id:r,...l}=t;return H.update(r,l),G.update({[r]:l}),trackVariableEvent({varType:l.type,action:"update",...n.eventData}),{id:r,variable:l}}),delete:e=>apiClient_delete(e).then(e=>{const{success:t,data:a}=e.data;if(!t)throw new Error("Unexpected response from server");return a}).then(e=>{const{variable:t,watermark:a}=e;handleWatermark(O,a);const{id:r,...n}=t;return H.update(r,n),G.update({[r]:n}),{id:r,variable:n}}),restore:(e,t,a,r)=>apiClient_restore(e,t,a,r).then(e=>{const{success:t,data:a}=e.data;if(!t)throw new Error("Unexpected response from server");return a}).then(e=>{const{variable:t,watermark:a}=e;handleWatermark(O,a);const{id:r,...n}=t;return H.update(r,n),G.update({[r]:n}),{id:r,variable:n}}),batchSave:(e,t,a)=>{const r=((e,t,a)=>{const r=[];return Object.entries(t).forEach(([t,a])=>{if(isTempId(t))r.push({type:"create",variable:{...a,id:t}});else if(e[t]){const n=e[t],l=n.sync_to_v3!==a.sync_to_v3;n.deleted&&!a.deleted?r.push({type:"restore",id:t,...n.label!==a.label&&{label:a.label},...n.value!==a.value&&{value:a.value}}):a.deleted||n.label===a.label&&n.value===a.value&&n.order===a.order&&n.type===a.type&&!l||r.push({type:"update",id:t,variable:{...n.label!==a.label&&{label:a.label},...n.value!==a.value&&{value:a.value},...n.order!==a.order&&{order:a.order},...n.type!==a.type&&{type:a.type},...l&&{sync_to_v3:a.sync_to_v3}}})}}),a.forEach(e=>{r.push({type:"delete",id:e})}),r.filter(e=>{const a=e.id||e.variable?.id;return a&&!(isTempId(a)&&t[a]?.deleted)})})(e,t,a),n={operations:r,watermark:H.state.watermark};return 0===r.length?Promise.resolve({success:!0,watermark:H.state.watermark,operations:0}):apiClient_batch(n).then(e=>{const{success:t,data:a}=e.data;if(!t)throw new Error("Unexpected response from server");return a}).then(e=>{const{results:t,watermark:a}=e;return handleWatermark(O,a),t&&t.forEach(e=>{const t=e.id;e.variable&&("create"===e.type?H.add(t,e.variable):H.update(t,e.variable),G.update({[t]:e.variable}))}),{success:!0,watermark:a,operations:r.length}})}},handleWatermark=(e,t)=>{H.watermarkDiff(e,t)&&setTimeout(()=>W.load(),500),H.watermark(t)},resolveCssVariable=(e,t)=>{let a=e,r="";if(t&&(r=t.value),t&&!t.deleted&&(a=t.label),!a.trim())return null;const n=`--${a}`;return r.trim()?`var(${n}, ${r})`:`var(${n})`},K=(0,w.createTransformer)(e=>{const t=W.variables()[e];if(!t)return S.createElement("span",null,(0,k.__)("Missing variable","elementor"));const a=t.type===z.key,r=resolveCssVariable(e,t);return S.createElement(x.Stack,{direction:"row",spacing:.5,sx:{paddingInline:"1px"},alignItems:"center"},a&&S.createElement(P,{size:"inherit",value:t.value}),S.createElement(x.Typography,{variant:"caption",overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},r))}),q=a(82148),X=(0,q.createTransformer)((e,{key:t})=>{const a=W.variables()[e]||W.findVariableByLabel(e);if(!a)return null;if((0,q.isGridTrackProperty)(t)){const e=parseInt((a.value??"").trim(),10);return(0,q.formatGridTrackRepeat)(e)}const r=W.findIdByLabel(a.label);return resolveCssVariable(r,a)});var{registerVariableType:Y,getVariableType:J,getVariableTypes:Q,hasVariableType:Z}=function createVariableTypeRegistry(){const e={},registerTransformer=(e,t)=>{T.styleTransformersRegistry.register(e,t??X)},registerInheritanceTransformer=e=>{T.stylesInheritanceTransformersRegistry.register(e,K)};return{registerVariableType:({key:t,icon:a,startIcon:r,valueField:n,propTypeUtil:l,variableType:o,defaultValue:i,selectionFilter:s,valueTransformer:c,styleTransformer:u,fallbackPropTypeUtil:p,isCompatible:d,emptyState:m,isActive:b=!0,menuActionsFactory:v})=>{const g=t??l.key;d||(d=(e,t)=>"union"===e.kind&&t.type in e.prop_types),e[g]={icon:a,startIcon:r,valueField:n,propTypeUtil:l,variableType:o,defaultValue:i,selectionFilter:s,valueTransformer:c,fallbackPropTypeUtil:p,isCompatible:d,emptyState:m,isActive:b,menuActionsFactory:v},registerTransformer(l.key,u),registerInheritanceTransformer(l.key)},getVariableType:t=>e[t],getVariableTypes:()=>e,hasVariableType:t=>t in e&&!!e[t].isActive}}();function getMenuActionsForVariable(e,t){const a=J(e);return a?.menuActionsFactory?a.menuActionsFactory(t):[]}var ee=__toESM(a(97557)),te=a(70374),ae=a(79513),re=a(27723),DeleteConfirmationDialog=({open:e,label:t,closeDialog:a,onConfirm:r})=>ee.createElement(te.ConfirmationDialog,{open:e,onClose:a},ee.createElement(te.ConfirmationDialog.Title,null,(0,re.__)("Delete this variable?","elementor")),ee.createElement(te.ConfirmationDialog.Content,null,ee.createElement(te.ConfirmationDialog.ContentText,null,(0,re.__)("All elements using","elementor")," ",ee.createElement(ae.Typography,{variant:"subtitle2",component:"span",sx:{lineBreak:"anywhere"}},t)," ",(0,re.__)("will keep their current values, but the variable itself will be removed.","elementor"))),ee.createElement(te.ConfirmationDialog.Actions,{onClose:a,onConfirm:r})),ne=__toESM(a(97557)),le=a(79513),oe=a(27723),ie=a(46400),usePermissions=()=>{const{canUser:e,isAdmin:t}=(0,ie.useCurrentUserCapabilities)();return{canAssign:()=>e("edit_posts"),canUnlink:()=>e("edit_posts"),canAdd:()=>t,canDelete:()=>t,canEdit:()=>t,canRestore:()=>t,canManageSettings:()=>t}},EmptyState=({icon:e,title:t,message:a,onAdd:r,children:n})=>{const l=usePermissions().canAdd(),o=l?t:(0,oe.__)("There are no variables","elementor"),i=l?a:(0,oe.__)("With your current role, you can only connect and detach variables.","elementor");return ne.createElement(Content,{title:o,message:i,icon:e},n||r&&ne.createElement(le.Button,{variant:"outlined",color:"secondary",size:"small",onClick:r},(0,oe.__)("Create a variable","elementor")))};function Content({title:e,message:t,icon:a,children:r}){return ne.createElement(le.Stack,{gap:1,alignItems:"center",justifyContent:"flex-start",height:"100%",color:"text.secondary",sx:{p:2.5,pt:8,pb:5.5}},a,ne.createElement(le.Typography,{align:"center",variant:"subtitle2"},e),ne.createElement(le.Typography,{align:"center",variant:"caption",maxWidth:"180px"},t),r)}var se=__toESM(a(97557)),ce=a(79513),ue=a(27723),NoSearchResults=({searchValue:e,onClear:t,icon:a})=>se.createElement(ce.Stack,{gap:1,alignItems:"center",justifyContent:"center",p:2.5,color:"text.secondary",sx:{pb:3.5,pt:8}},a,se.createElement(ce.Typography,{align:"center",variant:"subtitle2"},(0,ue.__)("Sorry, nothing matched","elementor"),se.createElement("br",null),"“",e,"”."),se.createElement(ce.Typography,{align:"center",variant:"caption",sx:{display:"flex",flexDirection:"column"}},(0,ue.__)("Try something else.","elementor"),se.createElement(ce.Link,{color:"text.secondary",variant:"caption",component:"button",onClick:t},(0,ue.__)("Clear & try again","elementor")))),pe=a(97557),useAutoEdit=()=>{const[e,t]=(0,pe.useState)(void 0);return{autoEditVariableId:e,startAutoEdit:(0,pe.useCallback)(e=>{t(e)},[]),handleAutoEditComplete:(0,pe.useCallback)(()=>{setTimeout(()=>{t(void 0)},100)},[])}},de=a(97557),useErrorNavigation=()=>{const e=(0,de.useRef)(0);return{createNavigationCallback:(0,de.useCallback)((t,a,r)=>()=>{if(!t?.length)return;const n=e.current,l=t[n];if(l){a(l);const o=n+1;o>=t.length?(r(),e.current=0):e.current=o}},[]),resetNavigation:(0,de.useCallback)(()=>{e.current=0},[])}},me=a(97557),be=a(97557),ve=a(77394),ge=__toESM(a(97557)),ye=a(97557),he=(0,ye.createContext)(null);function VariableTypeProvider({children:e,propTypeKey:t}){return ge.createElement(he.Provider,{value:t},e)}function useVariableType(){const e=(0,ye.useContext)(he);if(null===e)throw new Error("useVariableType must be used within a VariableTypeProvider");return J(e)}function filterBySearch(e,t){const a=t.toLowerCase();return e.filter(e=>e.label.toLowerCase().includes(a))}var variablesToList=e=>Object.entries(e).map(([e,t])=>({key:e,...t})),toNormalizedVariable=({key:e,label:t,value:a,order:r,sync_to_v3:n})=>({key:e,label:t,value:a,order:r,sync_to_v3:n}),getVariables=(e=!0)=>{const t=W.variables();return e?t:Object.fromEntries(Object.entries(t).filter(([,e])=>!e.deleted))},hasVariable=e=>void 0!==getVariables()[e],useVariable=e=>getVariable(e);function getVariable(e){const t=getVariables();return t?.[e]?{...t[e],key:e}:null}var useVariableSelectionFilter=e=>{const{selectionFilter:t}=useVariableType(),{propType:a}=(0,ve.useBoundProp)();return t?t(e,a):e},usePropVariables=e=>(0,be.useMemo)(()=>normalizeVariables(e),[e]),normalizeVariables=e=>{const t=getVariables(!1),a=(e=>{const t=[],a=Q(),r=J(e);return Object.entries(a).forEach(([e,a])=>{r.variableType===a.variableType&&t.push(e)}),t})(e);return variablesToList(t).filter(e=>a.includes(e.type)).map(toNormalizedVariable)},extractId=({id:e})=>e,restoreVariable=(e,t,a,r)=>W.restore(e,t,a,r).then(extractId),fe="-Copy",trimToFit=(e,t)=>{const a=e+t;return a.length<=50?a:e.slice(0,50-t.length)+t},generateDuplicateLabel=(e,t)=>{const a=new Set(t),r=trimToFit(e,fe);if(!a.has(r))return r;for(let t=2;t<=a.size+1;t++){const r=trimToFit(e,`${fe}-${t}`);if(!a.has(r))return r}return r},useVariablesManagerState=()=>{const[e,t]=(0,me.useState)(()=>getVariables(!1)),[a,r]=(0,me.useState)([]),[n,l]=(0,me.useState)(!1),[o,i]=(0,me.useState)(!1),[s,c]=(0,me.useState)(!1),[u,p]=(0,me.useState)("");(0,me.useEffect)(()=>{const handleStorageUpdated=()=>{t(getVariables(!1)),r([]),i(!1)};return window.addEventListener(B,handleStorageUpdated),()=>{window.removeEventListener(B,handleStorageUpdated)}},[]);const d=(0,me.useCallback)(a=>{Object.entries(a).some(([t,a])=>{const r=e[t];return!r||(r.label!==a.label||r.value!==a.value||r.order!==a.order||r.type!==a.type||(r.sync_to_v3??!1)!==(a.sync_to_v3??!1))})&&(t({...e,...a}),i(!0))},[e]),m=(0,me.useCallback)((e,a,r)=>{const n=generateTempId(),l={id:n,label:a.trim(),value:r.trim(),type:e};return t(e=>({...e,[n]:l})),i(!0),n},[]),b=(0,me.useCallback)(e=>{const a=generateTempId();return t(t=>{const r=t[e];if(!r||r.deleted)return t;const n=Object.values(t).filter(e=>!e.deleted).map(e=>e.label);return{...t,[a]:{label:generateDuplicateLabel(r.label,n),value:r.value,type:r.type}}}),i(!0),a},[]),v=(0,me.useCallback)(e=>{r(t=>[...t,e]),t(t=>({...t,[e]:{...t[e],deleted:!0}})),i(!0)},[]),g=(0,me.useCallback)(e=>{t(t=>({...t,[e]:{...t[e],sync_to_v3:!0}})),i(!0)},[]),y=(0,me.useCallback)(e=>{t(t=>({...t,[e]:{...t[e],sync_to_v3:!1}})),i(!0)},[]),h=(0,me.useCallback)(async()=>{const n=getVariables(!1);c(!0);const l=await W.batchSave(n,e,a);if(l.success){await W.load();const e=W.variables();t(e),r([]),i(!1)}return{success:l.success}},[e,a]),f=(0,me.useCallback)(()=>{const t=((e,t)=>{const a={};return e.forEach(e=>(a[e.type]??=[]).push(e)),Object.entries(a).flatMap(([e,a])=>{const r=t[e]?.selectionFilter,n=a.map(toNormalizedVariable);return(r?.(n)??n).map(t=>({...t,type:e}))})})(variablesToList(e).filter(e=>!e.deleted),Q()),a=filterBySearch(t,u);return Object.fromEntries(a.map(({key:e,...t})=>[e,t]))},[e,u]);return{variables:f(),deletedVariables:a,isDirty:o,isSaveDisabled:n,handleOnChange:d,createVariable:m,duplicateVariable:b,handleDeleteVariable:v,handleStartSync:g,handleStopSync:y,handleSave:h,isSaving:s,handleSearch:e=>{p(e)},searchValue:u,setIsSaving:c,setIsSaveDisabled:l}},Ee=__toESM(a(97557)),Ce=a(97557),_e=a(24413),Te=a(79513),Se=a(22444),we=a(27723),useQuotaPermissions=e=>{const t={...window.ElementorVariablesQuotaConfig??{},...window.ElementorVariablesQuotaConfigExtended??{}},a=void 0===t[e]&&window.elementorPro,r=t[e]||0,n=a||r>0;return{canAdd:()=>n,canEdit:()=>n}},xe=__toESM(a(97557)),ke=a(97557),Ve=a(77394),Pe=a(70374),Ie=a(79513),Ae=a(22444),ze=a(27723),Le=(0,ke.forwardRef)(({variableType:e,upgradeUrl:t,trackingData:a},r)=>{const[n,l]=(0,ke.useState)(!1);(0,Pe.useCanvasClickHandler)(n,()=>l(!1));const o=(0,ke.useCallback)(()=>{l(e=>(e||(0,Ve.trackViewPromotion)(a),!e))},[a]);(0,ke.useImperativeHandle)(r,()=>({toggle:o}),[o]);const i=(0,ze.sprintf)((0,ze.__)("%s variables","elementor"),(0,Ae.capitalize)(e)),s=(0,ze.sprintf)((0,ze.__)("Upgrade to continue creating and editing %s variables.","elementor"),e);return xe.createElement(Pe.PromotionPopover,{open:n,title:i,content:s,ctaText:(0,ze.__)("Upgrade now","elementor"),ctaUrl:t,onClose:e=>{e.stopPropagation(),l(!1)},onCtaClick:()=>(0,Ve.trackUpgradePromotionClick)(a)},xe.createElement(Ie.Box,{onClick:e=>{e.stopPropagation(),o()},sx:{cursor:"pointer",display:"inline-flex"}},xe.createElement(Pe.PromotionChip,null)))}),De={target_name:"variables_manager",target_location:"variables_manager",location_l1:"create variable menu"},Re="tiny",VariableManagerCreateMenu=({variables:e,onCreate:t,menuState:a,outlinedTrigger:r=!1})=>{const n=(0,Ce.useRef)(null),l=Q(),o=(0,Ce.useMemo)(()=>Object.entries(l).filter(([,e])=>!!e.defaultValue).map(([e,t])=>({key:e,propTypeKey:t.propTypeUtil.key,variableType:t.variableType,defaultValue:t.defaultValue||"",icon:t.icon})),[l]);return Ee.createElement(Ee.Fragment,null,Ee.createElement(Te.IconButton,{...(0,Te.bindTrigger)(a),ref:n,size:Re,variant:r?"outlined":void 0,"aria-label":(0,we.__)("Add variable","elementor")},Ee.createElement(_e.PlusIcon,{fontSize:Re})),Ee.createElement(Te.Menu,{disablePortal:!0,MenuListProps:{dense:!0},PaperProps:{elevation:6},...(0,Te.bindMenu)(a),anchorEl:n.current,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},"data-testid":"variable-manager-create-menu"},o.map(r=>Ee.createElement(MenuOption,{key:r.key,config:r,variables:e,onCreate:t,onClose:a.close}))))},MenuOption=({config:e,variables:t,onCreate:a,onClose:r})=>{const n=(0,Ce.useRef)(null),l=useQuotaPermissions(e.propTypeKey),o=(0,Se.capitalize)(e.variableType),i=!l.canAdd();return Ee.createElement(Te.MenuItem,{onClick:()=>{if(i)return void n.current?.toggle();const l=getDefaultName(t,e.variableType);a(e.key,l,e.defaultValue),trackVariablesManagerEvent({action:"add",varType:e.variableType}),r()},sx:{gap:1.5,cursor:"pointer"}},(0,Ce.createElement)(e.icon,{fontSize:Re,color:i?"disabled":"action"}),Ee.createElement(Te.Typography,{variant:"caption",color:i?"text.disabled":"text.primary"},o),i&&Ee.createElement(Le,{variableType:e.variableType,upgradeUrl:`https://go.elementor.com/go-pro-manager-${e.variableType}-variable/`,ref:n,trackingData:De}))},getDefaultName=(e,t)=>{const a=new RegExp(`^${t}-(\\d+)$`,"i"),r=new Set;Object.values(e).forEach(e=>{const t=e.label.match(a);t&&r.add(parseInt(t[1],10))});let n=1;for(;r.has(n);)n++;return`${t}-${n}`},Ue=__toESM(a(97557)),Fe=a(97557),Be=a(79513),Oe=a(27723),Me=__toESM(a(97557)),Ne=a(79513),VariableTableCell=({children:e,isHeader:t,width:a,maxWidth:r,align:n,noPadding:l,sx:o})=>{const i={maxWidth:r??150,cursor:"initial",typography:"caption",...t&&{color:"text.primary",fontWeight:"bold"},...t&&!l&&{padding:"10px 16px"},...a&&{width:a},...o};return Me.createElement(Ne.TableCell,{size:"small",padding:l?"none":void 0,align:n,sx:i},e)},je=__toESM(a(97557)),$e=a(97557),Ge=a(70374),He=a(24413),We=a(79513),Ke=__toESM(a(97557)),qe=a(97557),Xe=a(70374),Ye=a(79513);function isLabelEqual(e,t){return e.trim().toLowerCase()===t.trim().toLowerCase()}var useLabelError=e=>{const[t,a]=(0,qe.useState)(e??{value:"",message:""});return{labelFieldError:t,setLabelFieldError:a}},LabelField=({value:e,error:t,onChange:a,id:r,onErrorChange:n,size:l="tiny",focusOnShow:o=!1,selectOnShow:i=!1,showWarningInfotip:s=!1,variables:c,onKeyDown:u})=>{const[p,d]=(0,qe.useState)(e),[m,b]=(0,qe.useState)(""),v=(0,qe.useRef)(null);let g=m;isLabelEqual(p,t?.value??"")&&t?.message&&(g=t.message);const y=g?"":labelHint(p),h=Ke.createElement(Ye.TextField,{ref:v,id:r,size:l,fullWidth:!0,value:p,error:!!g,onChange:e=>(e=>{d(e);const r=validateLabel(e,c);b(r),n?.(r),a(isLabelEqual(e,t?.value??"")||r?"":e)})(e.target.value),inputProps:{maxLength:50,...i&&{onFocus:e=>e.target.select()},"aria-label":"Name",onKeyDown:u},autoFocus:o});if(s){const e=Math.max(240,v.current?.getBoundingClientRect().width??240);return Ke.createElement(Xe.WarningInfotip,{open:Boolean(g||y),text:g||y,placement:"bottom-start",width:e,offset:[0,-15],...y&&{hasError:!1}},h)}return h},Je=__toESM(a(97557)),Qe=a(97557),Ze=a(79513),et=Je.memo(({initialValue:e,children:t,editableElement:a,onChange:r,prefixElement:n,autoEdit:l=!1,onRowRef:o,onAutoEditComplete:i,gap:s=1,fieldType:c,disabled:u=!1})=>{const[p,d]=(0,Qe.useState)(e),[m,b]=(0,Qe.useState)(!1),{labelFieldError:v,setLabelFieldError:g}=useLabelError(),[y,h]=(0,Qe.useState)(""),f=(0,Qe.useRef)(null),E=(0,Qe.useCallback)(()=>{"label"===c&&v?.message||"value"===c&&y||r(p),b(!1)},[p,r,c,v,y]);(0,Qe.useEffect)(()=>{o?.(f?.current)},[o]),(0,Qe.useEffect)(()=>{!l||m||u||(b(!0),i?.())},[l,m,i,u]);const handleDoubleClick=()=>{u||b(!0)},handleKeyDown=e=>{u||("Enter"===e.key?E():"Escape"===e.key&&b(!1)," "!==e.key||m||(e.preventDefault(),b(!0)))},C=(0,Qe.useCallback)(e=>{d(e)},[]),_=(0,Qe.useCallback)(e=>{"label"===c?g({value:p,message:e}):h(e)},[c,p,g,h]);let T;"label"===c?T=v:"value"===c&&(T={value:p,message:y});const S=a({value:p,onChange:C,onValidationChange:_,error:T});return m?Je.createElement(Ze.ClickAwayListener,{onClickAway:E},Je.createElement(Ze.Stack,{ref:f,direction:"row",alignItems:"center",gap:s,onDoubleClick:handleDoubleClick,onKeyDown:handleKeyDown,tabIndex:0,role:"button","aria-label":"Double click or press Space to edit"},n,S)):Je.createElement(Ze.Stack,{ref:f,direction:"row",alignItems:"center",gap:s,onDoubleClick:handleDoubleClick,onKeyDown:handleKeyDown,tabIndex:u?-1:0,role:"button","aria-label":u?"":"Double click or press Space to edit"},n,t)}),tt=__toESM(a(97557)),at=a(97557),rt=a(24413),nt=a(79513),VariableEditMenu=({menuActions:e,disabled:t,itemId:a})=>{const r=(0,nt.usePopupState)({variant:"popover"}),n=(0,nt.bindTrigger)(r);return tt.createElement(tt.Fragment,null,tt.createElement(nt.IconButton,{...n,disabled:t,size:"tiny",onClick:e=>{e.stopPropagation(),n.onClick?.(e)}},tt.createElement(rt.DotsVerticalIcon,{fontSize:"tiny"})),tt.createElement(nt.Menu,{disablePortal:!0,MenuListProps:{dense:!0},PaperProps:{elevation:6},...(0,nt.bindMenu)(r),anchorEl:r.anchorEl,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},open:r.isOpen,onClose:r.close},e.map(e=>tt.createElement(nt.MenuItem,{key:e.name,onClick:t=>{t.stopPropagation(),e.onClick?.(a),r.close()},sx:{color:e.color,gap:1}},e.icon&&(0,at.createElement)(e.icon,{fontSize:"inherit"})," ",e.name))))},lt={target_name:"variables_manager",target_location:"variables_manager"},VariableRow=e=>{const{row:t,variables:a,handleOnChange:r,autoEditVariableId:n,onAutoEditComplete:l,onFieldError:o,menuActions:i,handleRowRef:s,itemProps:c,showDropIndication:u,triggerProps:p,itemStyle:d,triggerStyle:m,isDragged:b,dropPosition:v,setTriggerRef:g,isSorting:y}=e,h=(0,$e.useRef)(null),f=!useQuotaPermissions(t.type).canEdit(),E=u&&"before"===v,C=u&&"after"===v;return je.createElement(We.TableRow,{...c,ref:c.ref,selected:b,sx:{...f&&{"& td, & th":{color:"text.disabled"}},...E&&{"& td, & th":{borderTop:"2px solid",borderTopColor:"primary.main"}},...C&&{"& td, & th":{borderBottom:"2px solid",borderBottomColor:"primary.main"}},"&:hover, &:focus-within":{backgroundColor:"action.hover",'& [role="toolbar"], & [draggable]':{opacity:1}},'& [role="toolbar"], & [draggable]':{opacity:0}},style:{...d,...m},onClick:()=>{f&&h.current?.toggle()}},je.createElement(VariableTableCell,{noPadding:!0,width:10,maxWidth:10},je.createElement(We.IconButton,{size:"small",ref:g,...p,disabled:y,draggable:!0},je.createElement(He.GripVerticalIcon,{fontSize:"inherit"}))),je.createElement(VariableTableCell,null,je.createElement(et,{initialValue:t.name,onChange:e=>{e===t.name||f||r({...a,[t.id]:{...a[t.id],label:e}})},prefixElement:(0,$e.createElement)(t.icon,{fontSize:"inherit",color:f?"disabled":"inherit"}),editableElement:({value:e,onChange:r,onValidationChange:l,error:i})=>je.createElement(LabelField,{id:"variable-label-"+t.id,size:"tiny",value:e,onChange:r,onErrorChange:e=>{l?.(e),o?.(!!e)},error:i,focusOnShow:!0,selectOnShow:n===t.id,showWarningInfotip:!0,variables:a}),autoEdit:n===t.id&&!f,onRowRef:s(t.id),onAutoEditComplete:n===t.id?l:void 0,fieldType:"label",disabled:f},je.createElement(Ge.EllipsisWithTooltip,{title:t.name,sx:{border:"4px solid transparent"}},t.name))),je.createElement(VariableTableCell,null,je.createElement(et,{initialValue:t.value,onChange:e=>{e===t.value||f||r({...a,[t.id]:{...a[t.id],value:e}})},editableElement:({value:e,onChange:n,onValidationChange:l,error:i})=>t.valueField?.({value:e,onChange:n,onPropTypeKeyChange:e=>{f||e===t.type||r({...a,[t.id]:{...a[t.id],type:e}})},propTypeKey:t.type,onValidationChange:e=>{l?.(e),o?.(!!e)},error:i})??je.createElement(je.Fragment,null),onRowRef:s(t.id),gap:.25,fieldType:"value",disabled:f},t.startIcon&&t.startIcon({value:t.value}),je.createElement(Ge.EllipsisWithTooltip,{title:t.value,sx:{border:"4px solid transparent",lineHeight:"1",pt:.25}},t.value))),je.createElement(VariableTableCell,{align:"right",noPadding:!0,width:16,maxWidth:16,sx:{paddingInlineEnd:1}},je.createElement(We.Stack,{role:"toolbar",direction:"row",justifyContent:"flex-end",alignItems:"center"},f&&je.createElement(Le,{variableType:t.variableType,upgradeUrl:`https://go.elementor.com/renew-license-manager-${t.variableType}-variable`,ref:h,trackingData:lt}),je.createElement(VariableEditMenu,{menuActions:i(t.id),disabled:y,itemId:t.id}))))},VariablesManagerTable=({menuActions:e,variables:t,onChange:a,autoEditVariableId:r,onAutoEditComplete:n,onFieldError:l})=>{const o=(0,Fe.useRef)(null),i=(0,Fe.useRef)(new Map);(0,Fe.useEffect)(()=>{if(r&&o.current){const e=i.current.get(r);e&&setTimeout(()=>{e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})},100)}},[r]);const handleRowRef=e=>t=>{t?i.current.set(e,t):i.current.delete(e)},s=Object.keys(t).sort(function sortVariablesOrder(e){return(t,a)=>(e[t]?.order??Number.MAX_SAFE_INTEGER)-(e[a]?.order??Number.MAX_SAFE_INTEGER)}(t)),c=s.map(e=>{const a=t[e],r=J(a.type);return r?{id:e,type:a.type,name:a.label,value:a.value,...r}:null}).filter(Boolean),u={minWidth:250,tableLayout:"fixed"};return Ue.createElement(Be.TableContainer,{ref:o,sx:{overflow:"initial"}},Ue.createElement(Be.Table,{sx:u,"aria-label":"Variables manager list with drag and drop reordering",stickyHeader:!0},Ue.createElement(Be.TableHead,null,Ue.createElement(Be.TableRow,null,Ue.createElement(VariableTableCell,{isHeader:!0,noPadding:!0,width:10,maxWidth:10}),Ue.createElement(VariableTableCell,{isHeader:!0},(0,Oe.__)("Name","elementor")),Ue.createElement(VariableTableCell,{isHeader:!0},(0,Oe.__)("Value","elementor")),Ue.createElement(VariableTableCell,{isHeader:!0,noPadding:!0,width:16,maxWidth:16}))),Ue.createElement(Be.TableBody,null,Ue.createElement(Be.UnstableSortableProvider,{value:s,onChange:e=>{const r={...t};e.forEach((e,t)=>{const a=r[e];a&&(r[e]=Object.assign({},a,{order:t+1}))}),a(r)},variant:"static",restrictAxis:!0,dragOverlay:({children:e,...t})=>Ue.createElement(Be.Table,{sx:u,...t},Ue.createElement(Be.TableBody,null,e))},c.map(o=>Ue.createElement(Be.UnstableSortableItem,{key:o.id,id:o.id,render:i=>Ue.createElement(VariableRow,{...i,row:o,variables:t,handleOnChange:a,autoEditVariableId:r,onAutoEditComplete:n,onFieldError:l,menuActions:e,handleRowRef:handleRowRef})}))))))};var ot="stop-sync-variable";function VariablesManagerPanelEmbedded({onRequestClose:e,onExposeCloseAttempt:t}){return p.createElement(VariablesManagerPanelContent,{onRequestClose:e,onExposeCloseAttempt:t})}function VariablesManagerPanelContent({onRequestClose:e,onExposeCloseAttempt:t}){const{open:a,close:r,isOpen:n}=(0,v.useDialog)(),[l]=(0,m.useSuppressedMessage)(ot),o=(0,y.usePopupState)({variant:"popover"}),{variables:i,isDirty:s,searchValue:c,isSaveDisabled:u,handleOnChange:f,createVariable:E,duplicateVariable:C,handleDeleteVariable:_,handleStartSync:T,handleStopSync:S,handleSave:w,isSaving:x,handleSearch:k,setIsSaving:V,setIsSaveDisabled:P}=useVariablesManagerState(),{autoEditVariableId:I,startAutoEdit:A,handleAutoEditComplete:z}=useAutoEdit(),{createNavigationCallback:L,resetNavigation:D}=useErrorNavigation(),[R,U]=(0,d.useState)(null),[F,B]=(0,d.useState)(null),[O,M]=(0,d.useState)(null);usePreventUnload(s);const N=(0,d.useCallback)(()=>{s?a():e()},[s,a,e]);(0,d.useEffect)(()=>{if(t)return t(()=>N()),()=>t(null)},[t,N]);const j=(0,d.useCallback)((e,t,a)=>{const r=E(e,t,a);r&&A(r)},[E,A]),handleSaveClick=async()=>{try{M(null),D();const e=await w();return trackVariablesManagerEvent({action:"saveChanges"}),e}catch(e){const t=mapServerError(e),a=t?.action?.data?.duplicatedIds;return t&&"label"===t.field&&(a&&t.action&&(t.action.callback=L(a,A,()=>{P(!1)})),M(t),P(!0),D()),{success:!1,error:t}}finally{V(!1)}},$=(0,d.useCallback)(e=>{_(e),U(null)},[_]),G=(0,d.useCallback)(e=>{S(e);const t=i[e];t&&trackVariableSyncToV3({variableLabel:t.label,action:"unsync"})},[S,i]),H=(0,d.useCallback)(e=>{T(e);const t=i[e];t&&trackVariableSyncToV3({variableLabel:t.label,action:"sync"})},[T,i]),W=(0,d.useCallback)(e=>{l?G(e):B(e)},[l,G]),K=(0,d.useCallback)(e=>{const t=i[e];if(!t)return[];return[...getMenuActionsForVariable(t.type,{variable:t,variableId:e,handlers:{onStartSync:H,onStopSync:W}}),{name:(0,h.__)("Duplicate","elementor"),icon:g.CopyIcon,color:"text.primary",onClick:e=>{const a=C(e);A(a);const r=J(t.type);trackVariablesManagerEvent({action:"duplicate",varType:r?.variableType})}},{name:(0,h.__)("Delete","elementor"),icon:g.TrashIcon,color:"error.main",onClick:e=>{const t=i[e];if(t){U({id:e,label:t.label});const a=J(t.type);trackVariablesManagerEvent({action:"delete",varType:a?.variableType})}}}]},[i,H,W,C,A]),q=Object.keys(i).length>0;return p.createElement(p.Fragment,null,p.createElement(y.Stack,{direction:"column",sx:{height:"100%",width:"100%",flex:1,minHeight:0,overflow:"hidden"}},p.createElement(y.Stack,{direction:"row",alignItems:"center",spacing:1,width:"100%",sx:{flexShrink:0,px:2,pb:1}},p.createElement(v.SearchField,{placeholder:(0,h.__)("Search","elementor"),value:c,onSearch:k,sx:{flex:1,minWidth:0,px:0,py:0,display:"flex",alignItems:"center",alignSelf:"stretch"}}),p.createElement(y.Box,{sx:{display:"flex",flexShrink:0,alignItems:"center"}},p.createElement(VariableManagerCreateMenu,{outlinedTrigger:!0,onCreate:j,variables:i,menuState:o}))),p.createElement(y.Divider,{sx:{width:"100%"}}),p.createElement(b.PanelBody,{sx:{display:"flex",flexDirection:"column",flex:1,minHeight:0}},q&&p.createElement(VariablesManagerTable,{menuActions:K,variables:i,onChange:f,autoEditVariableId:I,onAutoEditComplete:z,onFieldError:P}),!q&&c&&p.createElement(NoSearchResults,{searchValue:c,onClear:()=>k(""),icon:p.createElement(g.ColorFilterIcon,{fontSize:"large"})}),!q&&!c&&p.createElement(EmptyState,{title:(0,h.__)("Create your first variable","elementor"),message:(0,h.__)("Variables are saved attributes that you can apply anywhere on your site.","elementor"),icon:p.createElement(g.ColorFilterIcon,{fontSize:"large"}),onAdd:o.open})),p.createElement(b.PanelFooter,null,p.createElement(y.Infotip,{placement:"right",open:!!O,content:O?p.createElement(y.Alert,{severity:O.severity??"error",action:O.action?.label?p.createElement(y.AlertAction,{onClick:O.action.callback},O.action.label):void 0,onClose:O.action?.label?void 0:()=>{M(null),P(!1)},icon:O.IconComponent?p.createElement(O.IconComponent,null):p.createElement(g.AlertTriangleFilledIcon,null)},p.createElement(y.AlertTitle,null,O.message),O.action?.message):null,arrow:!1,slotProps:{popper:{modifiers:[{name:"offset",options:{offset:[-10,10]}}]}}},p.createElement(y.Button,{fullWidth:!0,size:"small",color:"global",variant:"contained",disabled:u||!s||x,onClick:handleSaveClick,loading:x},(0,h.__)("Save changes","elementor"))))),R&&p.createElement(DeleteConfirmationDialog,{open:!0,label:R.label,onConfirm:()=>$(R.id),closeDialog:()=>U(null)}),F&&p.createElement(StopSyncConfirmationDialog,{open:!0,onClose:()=>B(null),onConfirm:()=>{G(F),B(null)}}),n&&p.createElement(v.SaveChangesDialog,null,p.createElement(v.SaveChangesDialog.Title,{onClose:r},(0,h.__)("You have unsaved changes","elementor")),p.createElement(v.SaveChangesDialog.Content,null,p.createElement(v.SaveChangesDialog.ContentText,null,(0,h.__)("You have unsaved changes in the Variables Manager.","elementor")),p.createElement(v.SaveChangesDialog.ContentText,null,(0,h.__)("To avoid losing your updates, save your changes before leaving.","elementor"))),p.createElement(v.SaveChangesDialog.Actions,{actions:{discard:{label:(0,h.__)("Discard","elementor"),action:()=>{r(),e()}},confirm:{label:(0,h.__)("Save","elementor"),action:async()=>{const t=await handleSaveClick();r(),t?.success&&e()}}}})))}var usePreventUnload=e=>{(0,d.useEffect)(()=>{const handleBeforeUnload=t=>{e&&t.preventDefault()};return window.addEventListener("beforeunload",handleBeforeUnload),()=>{window.removeEventListener("beforeunload",handleBeforeUnload)}},[e])},StopSyncConfirmationDialog=({open:e,onClose:t,onConfirm:a})=>{const[,r]=(0,m.useSuppressedMessage)(ot);return p.createElement(v.ConfirmationDialog,{open:e,onClose:t},p.createElement(v.ConfirmationDialog.Title,{icon:g.ColorFilterIcon,iconColor:"primary"},(0,h.__)("Stop syncing variable color","elementor")),p.createElement(v.ConfirmationDialog.Content,null,p.createElement(v.ConfirmationDialog.ContentText,null,(0,h.__)("This will disconnect the variable color from Global Colors. Existing uses on your site will automatically switch to a default color.","elementor"))),p.createElement(v.ConfirmationDialog.Actions,{onClose:t,onConfirm:a,cancelLabel:(0,h.__)("Cancel","elementor"),confirmLabel:(0,h.__)("Got it","elementor"),color:"primary",onSuppressMessage:r,suppressLabel:(0,h.__)("Don't show again","elementor")}))},it=a(22504),st=a(77394),ct=a(55534),ut=a(2020),pt=a(27987),dt=a(97557),mt=a(82148);function GlobalStylesImportListener(){return(0,dt.useEffect)(()=>{const handleGlobalStylesImported=()=>{W.load()};return window.addEventListener(mt.GLOBAL_STYLES_IMPORTED_EVENT,handleGlobalStylesImported),()=>{window.removeEventListener(mt.GLOBAL_STYLES_IMPORTED_EVENT,handleGlobalStylesImported)}},[]),null}var bt=a(97557),vt=a(55534),gt=a(2020),yt=["global-color-variable","global-font-variable","global-size-variable","global-custom-size-variable"];function traverse(e,t,a){const r=function tryExtractVariable(e){for(const t of yt){const a=(0,gt.getPropSchemaFromCache)(t);if(a?.isValid(e))return{type:t,variableId:a.extract(e)}}return null}(e);if(r)a.push({...r,controlPath:t.join(".")});else if((0,gt.isTransformable)(e))traverse(e.value,t,a);else if(e&&"object"==typeof e)for(const[r,n]of Object.entries(e))traverse(n,[...t,r],a)}function McpVariableConnectListener(){return(0,bt.useEffect)(()=>{const handleMcpStylesApplied=e=>{const{styleValue:t}=e.detail,a=function extractVariablesFromStyleValue(e){const t=[];return traverse(e,[],t),t}(t);a.forEach(({type:e,controlPath:t})=>{trackVariableEvent({varType:e,controlPath:t,action:"connect",executedBy:"mcp_tool"})})};return window.addEventListener(vt.MCP_STYLES_APPLIED_EVENT,handleMcpStylesApplied),()=>{window.removeEventListener(vt.MCP_STYLES_APPLIED_EVENT,handleMcpStylesApplied)}},[]),null}var ht=__toESM(a(97557)),ft=a(77394),Et=a(97557),Ct=__toESM(a(97557)),_t=a(77394),Tt=a(24413),St=a(79513);function createUnlinkHandler(e,t,a){return()=>{const{fallbackPropTypeUtil:r}=J(t),n=function transformValueBeforeUnlink(e,t){const{valueTransformer:a}=J(t);return a?a(e.value,e.type):e.value}(e,t);a(r.create(n))}}var wt=__toESM(a(97557)),xt=a(97557),kt=a(5527),Vt=__toESM(a(97557)),Pt=a(97557),It=a(79513),At=(0,Pt.createContext)(null),PopoverContentRefContextProvider=({children:e})=>{const[t,a]=(0,Pt.useState)(null);return Vt.createElement(At.Provider,{value:t},Vt.createElement(It.Box,{ref:a},e))},usePopoverContentRef=()=>(0,Pt.useContext)(At),zt=__toESM(a(97557)),Lt=a(97557),Dt=a(77394),Rt=a(70374),Ut=a(24413),Ft=a(79513),Bt=a(27723),Ot=a(77394),Mt=a(77394),Nt=a(2020),useVariableBoundProp=()=>{const{propTypeUtil:e}=useVariableType(),t=(0,Mt.useBoundProp)(e);return{...t,setVariableValue:e=>resolveBoundPropAndSetValue(e,t),variableId:t.value??t.placeholder}},resolveBoundPropAndSetValue=(e,t)=>{const a=unwrapValue(t.value),r=unwrapValue(t.placeholder),n=unwrapValue(e);return a||r!==n?t.setValue(e):t.setValue(null)},unwrapValue=e=>(0,Nt.isTransformable)(e)?e.value:e,jt=__toESM(a(97557)),$t=a(79513),FormField=({id:e,label:t,errorMsg:a,noticeMsg:r,children:n})=>jt.createElement($t.Grid,{container:!0,gap:.75,alignItems:"center"},jt.createElement($t.Grid,{item:!0,xs:12},jt.createElement($t.FormLabel,{htmlFor:e,size:"tiny"},t)),jt.createElement($t.Grid,{item:!0,xs:12},n,a&&jt.createElement($t.FormHelperText,{error:!0},a),r&&jt.createElement($t.FormHelperText,null,r))),Gt="tiny",VariableCreation=({onGoBack:e,onClose:t})=>{const{icon:a,valueField:r,propTypeUtil:n}=useVariableType(),{setVariableValue:l,path:o}=useVariableBoundProp(),{propType:i}=(0,Dt.useBoundProp)(),s=(()=>{const{value:e}=(0,Ot.useBoundProp)(),t=Z(e?.$$type)&&Boolean(e?.value),a=useVariable(t?e.value:"");return t?a?a.value:"":e?.value??""})(),[c,u]=(0,Lt.useState)(s),[p,d]=(0,Lt.useState)(""),[m,b]=(0,Lt.useState)(""),[v,g]=(0,Lt.useState)(""),[y,h]=(0,Lt.useState)(n.key),{labelFieldError:f,setLabelFieldError:E}=useLabelError(),closePopover=()=>{u(""),d(""),b(""),g(""),t()},handleCreateAndTrack=()=>{var e,t;(e={value:c,label:p,type:y},t={eventData:{controlPath:o.join(".")}},W.create(e,t).then(extractId)).then(e=>{l(e),closePopover()}).catch(e=>{const t=mapServerError(e);if(t&&"label"===t.field)return d(""),void E({value:p,message:t.message});b(_.UNEXPECTED_ERROR)})},C=""===p.trim()||("string"==typeof c?""===c.trim():!1===Boolean(c))||!!m,handleKeyDown=e=>{"Enter"!==e.key||C||(e.preventDefault(),handleCreateAndTrack())};return zt.createElement(Rt.SectionPopoverBody,{height:"auto"},zt.createElement(Rt.PopoverHeader,{icon:zt.createElement(zt.Fragment,null,e&&zt.createElement(Ft.IconButton,{size:Gt,"aria-label":(0,Bt.__)("Go Back","elementor"),onClick:e},zt.createElement(Ut.ArrowLeftIcon,{fontSize:Gt})),zt.createElement(a,{fontSize:Gt})),title:(0,Bt.__)("Create variable","elementor"),onClose:closePopover}),zt.createElement(Ft.Divider,null),zt.createElement(Dt.PopoverContent,{p:2},zt.createElement(FormField,{id:"variable-label",label:(0,Bt.__)("Name","elementor"),errorMsg:f?.message,noticeMsg:labelHint(p)},zt.createElement(LabelField,{id:"variable-label",value:p,error:f,onChange:e=>{d(e),b("")},onErrorChange:e=>{E({value:"",message:e})},onKeyDown:handleKeyDown,focusOnShow:!0})),r&&zt.createElement(FormField,{errorMsg:v,label:(0,Bt.__)("Value","elementor")},zt.createElement(Ft.Typography,{variant:"h5",id:"variable-value-wrapper"},zt.createElement(r,{value:c,onPropTypeKeyChange:e=>h(e),onChange:e=>{u(e),b(""),g("")},onValidationChange:g,propType:i,onKeyDown:handleKeyDown}))),m&&zt.createElement(Ft.FormHelperText,{error:!0},m)),zt.createElement(Ft.CardActions,{sx:{pt:.5,pb:1}},zt.createElement(Ft.Button,{id:"create-variable-button",size:"small",variant:"contained",disabled:C,onClick:handleCreateAndTrack},(0,Bt.__)("Create","elementor"))))},Ht=__toESM(a(97557)),Wt=a(97557),Kt=a(77394),qt=a(46400),Xt=a(70374),Yt=a(24413),Jt=a(79513),Qt=a(27723),Zt=__toESM(a(97557)),ea=a(97557),ta=a(24413),aa=a(79513),ra=a(27723),EditConfirmationDialog=({closeDialog:e,onConfirm:t,onSuppressMessage:a})=>{const[r,n]=(0,ea.useState)(!1);return Zt.createElement(aa.Dialog,{open:!0,onClose:e,maxWidth:"xs"},Zt.createElement(aa.DialogTitle,{display:"flex",alignItems:"center",gap:1},Zt.createElement(ta.AlertTriangleFilledIcon,{color:"secondary"}),(0,ra.__)("Changes to variables go live right away.","elementor")),Zt.createElement(aa.DialogContent,null,Zt.createElement(aa.DialogContentText,{variant:"body2",color:"textPrimary"},(0,ra.__)("Don't worry - all other changes you make will wait until you publish your site.","elementor"))),Zt.createElement(aa.DialogActions,{sx:{justifyContent:"space-between",alignItems:"center"}},Zt.createElement(aa.FormControlLabel,{control:Zt.createElement(aa.Checkbox,{checked:r,onChange:e=>n(e.target.checked),size:"small"}),label:Zt.createElement(aa.Typography,{variant:"body2"},(0,ra.__)("Don't show me again","elementor"))}),Zt.createElement("div",null,Zt.createElement(aa.Button,{color:"secondary",onClick:e},(0,ra.__)("Keep editing","elementor")),Zt.createElement(aa.Button,{variant:"contained",color:"secondary",onClick:()=>{r&&a?.(),t?.()},sx:{ml:1}},(0,ra.__)("Save","elementor")))))},na="tiny",la=(0,Qt.__)("Delete variable","elementor"),VariableEdit=({onClose:e,onGoBack:t,onSubmit:a,editId:r})=>{const{icon:n,valueField:l,variableType:o,propTypeUtil:i}=useVariableType(),{setVariableValue:s,variableId:c,path:u}=useVariableBoundProp(),{propType:p}=(0,Kt.useBoundProp)(),[d,m]=(0,qt.useSuppressedMessage)("edit-confirmation-dialog"),[b,v]=(0,Wt.useState)(!1),[g,y]=(0,Wt.useState)(!1),[h,f]=(0,Wt.useState)(""),[E,C]=(0,Wt.useState)(""),{labelFieldError:T,setLabelFieldError:S}=useLabelError(),w=useVariable(r),[x,k]=(0,Wt.useState)(w?.type??i.key);if(!w)throw new Error(`Global ${o} variable not found`);const V=usePermissions(),[P,I]=(0,Wt.useState)(()=>w.value),[A,z]=(0,Wt.useState)(()=>w.label);(0,Wt.useEffect)(()=>(G.update({[r]:{...w,value:P}}),()=>{G.update({[r]:{...w}})}),[r,P,w]);const handleUpdate=()=>{d?handleSaveVariable():y(!0)},handleSaveVariable=()=>{const e=x!==w.type;((e,{value:t,label:a,type:r},n)=>W.update(e,{value:t,label:a,type:r},n).then(extractId))(r,e?{value:P,label:A,type:x}:{value:P,label:A},{eventData:{controlPath:u.join(".")}}).then(()=>{maybeTriggerBoundPropChange(),a?.()}).catch(e=>{const t=mapServerError(e);if(t&&"label"===t.field)return z(""),void S({value:A,message:t.message});f(_.UNEXPECTED_ERROR)})},maybeTriggerBoundPropChange=()=>{r===c&&s(r)},handleDeleteConfirmation=()=>{v(!0)},L=[];V.canDelete()&&L.push(Ht.createElement(Jt.Tooltip,{key:"delete",placement:"top",title:la},Ht.createElement(Jt.IconButton,{size:na,onClick:handleDeleteConfirmation,"aria-label":la},Ht.createElement(Yt.TrashIcon,{fontSize:na}))));const D=P===w.value&&A===w.label||""===A.trim()||("string"==typeof P?""===P.trim():!1===Boolean(P))||!!h,handleKeyDown=e=>{"Enter"!==e.key||D||(e.preventDefault(),handleUpdate())};return Ht.createElement(Ht.Fragment,null,Ht.createElement(Xt.SectionPopoverBody,{height:"auto"},Ht.createElement(Xt.PopoverHeader,{title:(0,Qt.__)("Edit variable","elementor"),onClose:e,icon:Ht.createElement(Ht.Fragment,null,t&&Ht.createElement(Jt.IconButton,{size:na,"aria-label":(0,Qt.__)("Go Back","elementor"),onClick:t},Ht.createElement(Yt.ArrowLeftIcon,{fontSize:na})),Ht.createElement(n,{fontSize:na})),actions:L}),Ht.createElement(Jt.Divider,null),Ht.createElement(Kt.PopoverContent,{p:2},Ht.createElement(FormField,{id:"variable-label",label:(0,Qt.__)("Name","elementor"),errorMsg:T?.message,noticeMsg:labelHint(A)},Ht.createElement(LabelField,{id:"variable-label",value:A,error:T,onChange:e=>{z(e),f("")},onErrorChange:e=>{S({value:"",message:e})},onKeyDown:handleKeyDown,focusOnShow:!0})),l&&Ht.createElement(FormField,{errorMsg:E,label:(0,Qt.__)("Value","elementor")},Ht.createElement(Jt.Typography,{variant:"h5"},Ht.createElement(l,{propTypeKey:w.type,onPropTypeKeyChange:e=>k(e),value:P,onChange:e=>{I(e),f(""),C("")},onKeyDown:handleKeyDown,onValidationChange:C,propType:p}))),h&&Ht.createElement(Jt.FormHelperText,{error:!0},h)),Ht.createElement(Jt.CardActions,{sx:{pt:.5,pb:1}},Ht.createElement(Jt.Button,{size:"small",variant:"contained",disabled:D,onClick:handleUpdate},(0,Qt.__)("Save","elementor")))),b&&Ht.createElement(DeleteConfirmationDialog,{open:!0,label:A,onConfirm:()=>{var e;(e=r,W.delete(e).then(extractId)).then(()=>{maybeTriggerBoundPropChange(),a?.()})},closeDialog:()=>{v(!1)}}),g&&!d&&Ht.createElement(EditConfirmationDialog,{closeDialog:()=>{y(!1)},onConfirm:handleSaveVariable,onSuppressMessage:m}))},oa=a(97557),ia=__toESM(a(97557)),sa=a(77394),ca=a(70374),ua=a(70374),pa=a(24413),da=a(79513),ma=a(27723),ba=__toESM(a(97557)),va=a(70374),ga=a(24413),ya=a(79513),ha=a(27723),fa=(0,ha.__)("Edit variable","elementor"),MenuItemContent=({item:e,disabled:t=!1})=>{const a=e.onEdit;return ba.createElement(ba.Fragment,null,ba.createElement(ya.ListItemIcon,{sx:{color:t?"text.disabled":"inherit"}},e.icon),ba.createElement(ya.Box,{sx:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:1}},ba.createElement(va.EllipsisWithTooltip,{title:e.label||e.value,as:ya.Typography,variant:"caption",color:t?"text.disabled":"text.primary",sx:{marginTop:"1px",lineHeight:"2"},maxWidth:"50%"}),e.secondaryText&&ba.createElement(va.EllipsisWithTooltip,{title:e.secondaryText,as:ya.Typography,variant:"caption",color:t?"text.disabled":"text.tertiary",sx:{marginTop:"1px",lineHeight:"1"},maxWidth:"50%"})),!!a&&!t&&ba.createElement(ya.Tooltip,{placement:"top",title:fa},ba.createElement(ya.IconButton,{sx:{mx:1,opacity:"0"},onClick:t=>{t.stopPropagation(),a(e.value)},"aria-label":fa},ba.createElement(ga.EditIcon,{color:"action",fontSize:"tiny"}))))},Ea=a(79513),Ca=(0,Ea.styled)(Ea.MenuList)(({theme:e,disabled:t})=>({"& > li":{height:32,width:"100%",display:"flex",alignItems:"center"},'& > [role="option"]':{...e.typography.caption,lineHeight:"inherit",padding:e.spacing(.5,1,.5,2),...!t&&{"&:hover, &:focus":{backgroundColor:e.palette.action.hover},cursor:"pointer"},'&[aria-selected="true"]':{backgroundColor:e.palette.action.selected},textOverflow:"ellipsis",position:"absolute",top:0,left:0,"&:hover .MuiIconButton-root, .MuiIconButton-root:focus":{opacity:1}},width:"100%",position:"relative"})),_a="tiny",Ta=(0,ma.__)("Create variable","elementor"),Sa=(0,ma.__)("Variables Manager","elementor"),getProUpgradeUrl=e=>`https://go.elementor.com/renew-license-panel-${e}-variable`,VariablesSelection=({closePopover:e,onAdd:t,onEdit:a,onSettings:r,disabled:n=!1})=>{const{icon:l,startIcon:o,variableType:i,propTypeUtil:s,emptyState:c}=useVariableType(),{value:u,setValue:p,path:d}=useVariableBoundProp(),[m,b]=(0,oa.useState)(""),{list:v,hasMatches:g,isSourceNotEmpty:y,hasNoCompatibleVariables:h}=((e,t)=>{const a=usePropVariables(t),r=useVariableSelectionFilter(a),n=filterBySearch(r,e);return{list:n.sort((e,t)=>(e.order??Number.MAX_SAFE_INTEGER)-(t.order??Number.MAX_SAFE_INTEGER)),hasMatches:n.length>0,isSourceNotEmpty:r.length>0,hasNoCompatibleVariables:a.length>0&&0===r.length}})(m,s.key),onAddAndTrack=()=>{t?.(),trackVariableEvent({varType:i,controlPath:d.join("."),action:"add"})},f=[];if(t&&f.push(ia.createElement(da.Tooltip,{key:"add",placement:"top",title:Ta},ia.createElement("span",null,ia.createElement(da.IconButton,{id:"add-variable-button",size:_a,onClick:onAddAndTrack,"aria-label":Ta,disabled:n},ia.createElement(pa.PlusIcon,{fontSize:_a}))))),r){const handleOpenManager=()=>{r(),trackVariablesManagerEvent({action:"openManager",source:"vars-popover",varType:i,controlPath:d.join(".")})};f.push(ia.createElement(da.Tooltip,{key:"settings",placement:"top",title:Sa},ia.createElement(da.IconButton,{id:"variables-manager-button",size:_a,onClick:handleOpenManager,"aria-label":Sa},ia.createElement(pa.SettingsIcon,{fontSize:_a}))))}const E=o||(()=>ia.createElement(l,{fontSize:_a})),C=v.map(({value:e,label:t,key:r})=>({type:"item",value:r,label:t,icon:ia.createElement(E,{value:e}),secondaryText:e,onEdit:a?()=>a?.(r):void 0}));return(0,oa.useEffect)(()=>{n&&(0,sa.trackViewPromotion)({target_name:"variables_popover",target_location:"widget_panel",location_l1:"variables_list"})},[n]),ia.createElement(ca.SectionPopoverBody,null,ia.createElement(ca.PopoverHeader,{title:(0,ma.__)("Variables","elementor"),icon:ia.createElement(pa.ColorFilterIcon,{fontSize:_a}),onClose:e,actions:f}),y&&ia.createElement(ca.SearchField,{value:m,onSearch:e=>{b(e)},placeholder:(0,ma.__)("Search","elementor")}),ia.createElement(da.Divider,null),y&&g&&ia.createElement(ia.Fragment,null,ia.createElement(ca.PopoverMenuList,{items:C,onSelect:n?()=>{}:t=>{p(t),trackVariableEvent({varType:i,controlPath:d.join("."),action:"connect"}),e()},onClose:()=>{},selectedValue:u,"data-testid":`${i}-variables-list`,menuListTemplate:e=>ia.createElement(Ca,{...e,disabled:n}),menuItemContentTemplate:e=>ia.createElement(MenuItemContent,{item:e,disabled:n})}),n&&ia.createElement(ua.PromotionAlert,{message:(0,ma.sprintf)((0,ma.__)("Upgrade to continue creating and editing %s variables.","elementor"),i),upgradeUrl:getProUpgradeUrl(i),onCtaClick:()=>(0,sa.trackUpgradePromotionClick)({target_name:"variables_popover",location_l1:"variables_list"})})),!g&&y&&ia.createElement(NoSearchResults,{searchValue:m,onClear:()=>{b("")},icon:ia.createElement(l,{fontSize:"large"})}),n&&!y&&ia.createElement(EmptyState,{title:(0,ma.sprintf)((0,ma.__)("No %s variables yet","elementor"),i),message:(0,ma.sprintf)((0,ma.__)("Upgrade to create %s variables and maintain consistent element sizing.","elementor"),i),icon:ia.createElement(l,{fontSize:"large"})},c),!y&&!h&&!n&&ia.createElement(EmptyState,{title:(0,ma.sprintf)((0,ma.__)("Create your first %s variable","elementor"),i),message:(0,ma.__)("Variables are saved attributes that you can apply anywhere on your site.","elementor"),icon:ia.createElement(l,{fontSize:"large"}),onAdd:t}),h&&!n&&ia.createElement(EmptyState,{title:(0,ma.__)("No compatible variables","elementor"),message:(0,ma.__)("Looks like none of your variables work with this control. Create a new variable to use it here.","elementor"),icon:ia.createElement(l,{fontSize:"large"}),onAdd:t}))},wa="list",xa="add",ka="edit",VariableSelectionPopover=({closePopover:e,propTypeKey:t,selectedVariable:a})=>{const[r,n]=(0,xt.useState)(wa),[l,o]=(0,xt.useState)(""),i=(0,kt.isExperimentActive)("e_variables_manager")?()=>{window.dispatchEvent(new CustomEvent("elementor/toggle-design-system",{detail:{tab:"variables"}}))}:void 0;return wt.createElement(VariableTypeProvider,{propTypeKey:t},wt.createElement(PopoverContentRefContextProvider,null,function RenderView(e){const t=usePermissions(),a=useQuotaPermissions(e.propTypeKey),r={onClose:()=>{e.closePopover()},onGoBack:()=>{e.setCurrentView(wa)}};t.canAdd()&&(r.onAdd=()=>{e.setCurrentView(xa)});t.canEdit()&&(r.onEdit=t=>{e.setEditId(t),e.setCurrentView(ka)});t.canManageSettings()&&e.onSettings&&(r.onSettings=()=>{e.closePopover(),e.onSettings?.()});const handleSubmitOnEdit=()=>{e?.selectedVariable?.key===e.editId?r.onClose():r.onGoBack?.()};if(wa===e.currentView)return wt.createElement(VariablesSelection,{closePopover:r.onClose,onAdd:r.onAdd,onEdit:r.onEdit,onSettings:r.onSettings,disabled:!a.canAdd()});if(xa===e.currentView)return wt.createElement(VariableCreation,{onGoBack:r.onGoBack,onClose:r.onClose});if(ka===e.currentView)return wt.createElement(VariableEdit,{editId:e.editId,onGoBack:r.onGoBack,onClose:r.onClose,onSubmit:handleSubmitOnEdit});return null}({propTypeKey:t,currentView:r,selectedVariable:a,editId:l,setEditId:o,setCurrentView:n,closePopover:e,onSettings:i})))};var Va=__toESM(a(97557)),Pa=a(24413),Ia=a(79513),Aa=a(27723),za="tiny",La=(0,Aa.__)("Unlink variable","elementor"),AssignedTag=({startIcon:e,label:t,onUnlink:a,...r})=>{const n=[];return a&&n.push(Va.createElement(Ia.Tooltip,{key:"unlink",title:La,placement:"bottom"},Va.createElement(Ia.IconButton,{size:za,onClick:a,"aria-label":La},Va.createElement(Pa.DetachIcon,{fontSize:za})))),Va.createElement(Ia.Tooltip,{title:t,placement:"top"},Va.createElement(Ia.UnstableTag,{fullWidth:!0,showActionsOnHover:!0,startIcon:Va.createElement(Ia.Stack,{gap:.5,direction:"row",alignItems:"center"},e),label:Va.createElement(Ia.Box,{sx:{display:"inline-grid",minWidth:0}},Va.createElement(Ia.Typography,{sx:{lineHeight:1.34},variant:"caption",noWrap:!0},t)),actions:n,...r}))},AssignedVariable=({variable:e,propTypeKey:t})=>{const{startIcon:a,propTypeUtil:r}=J(t),{setValue:n}=(0,_t.useBoundProp)(),l=(0,Et.useRef)(null),o=(0,Et.useId)(),i=(0,St.usePopupState)({variant:"popover",popupId:`elementor-variables-list-${o}`}),s=createUnlinkHandler(e,t,n),c=a||(()=>null);return Ct.createElement(St.Box,{ref:l},Ct.createElement(AssignedTag,{label:e.label,startIcon:Ct.createElement(Ct.Fragment,null,Ct.createElement(Tt.ColorFilterIcon,{fontSize:za}),Ct.createElement(c,{value:e.value})),onUnlink:s,...(0,St.bindTrigger)(i)}),Ct.createElement(St.Popover,{disableScrollLock:!0,anchorEl:l.current,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{my:1}},...(0,St.bindPopover)(i)},Ct.createElement(VariableSelectionPopover,{selectedVariable:e,closePopover:i.close,propTypeKey:r.key})))},Da=__toESM(a(97557)),Ra=a(97557),Ua=a(77394),Fa=a(79513),Ba=a(27723),Oa=__toESM(a(97557)),Ma=a(97557),Na=a(77394),ja=a(70374),$a=a(79513),Ga=a(27723),VariableRestore=({variableId:e,onClose:t,onSubmit:a})=>{const{icon:r,valueField:n,variableType:l,propTypeUtil:o}=useVariableType(),{setVariableValue:i}=useVariableBoundProp(),{propType:s}=(0,Na.useBoundProp)(),c=useVariable(e);if(!c)throw new Error(`Global ${l} variable not found`);const[u,p]=(0,Ma.useState)(""),[d,m]=(0,Ma.useState)(""),[b,v]=(0,Ma.useState)(c.label),[g,y]=(0,Ma.useState)(c.value),[h,f]=(0,Ma.useState)(c?.type??o.key),{labelFieldError:E,setLabelFieldError:C}=useLabelError({value:c.label,message:_.DUPLICATED_LABEL}),handleRestore=()=>{(h!==c.type?restoreVariable(e,b,g,h):restoreVariable(e,b,g)).then(()=>{i(e),a?.()}).catch(e=>{const t=mapServerError(e);if(t&&"label"===t.field)return v(""),void C({value:b,message:t.message});p(_.UNEXPECTED_ERROR)})},T=g===c.value&&b===c.label||""===b.trim()||("string"==typeof g?""===g.trim():!1===Boolean(g))||!!u,handleKeyDown=e=>{"Enter"!==e.key||T||(e.preventDefault(),handleRestore())};return Oa.createElement(PopoverContentRefContextProvider,null,Oa.createElement(ja.SectionPopoverBody,{height:"auto"},Oa.createElement(ja.PopoverHeader,{icon:Oa.createElement(r,{fontSize:"tiny"}),title:(0,Ga.__)("Restore variable","elementor"),onClose:t}),Oa.createElement($a.Divider,null),Oa.createElement(Na.PopoverContent,{p:2},Oa.createElement(FormField,{id:"variable-label",label:(0,Ga.__)("Name","elementor"),errorMsg:E?.message,noticeMsg:labelHint(b)},Oa.createElement(LabelField,{id:"variable-label",value:b,error:E,onChange:e=>{v(e),p("")},onErrorChange:e=>{C({value:"",message:e})},onKeyDown:handleKeyDown,focusOnShow:!0})),n&&Oa.createElement(FormField,{errorMsg:d,label:(0,Ga.__)("Value","elementor")},Oa.createElement($a.Typography,{variant:"h5"},Oa.createElement(n,{propTypeKey:h,onPropTypeKeyChange:e=>f(e),value:g,onChange:e=>{y(e),p(""),m("")},onValidationChange:m,propType:s,onKeyDown:handleKeyDown}))),u&&Oa.createElement($a.FormHelperText,{error:!0},u)),Oa.createElement($a.CardActions,{sx:{pt:.5,pb:1}},Oa.createElement($a.Button,{size:"small",variant:"contained",disabled:T,onClick:handleRestore},(0,Ga.__)("Restore","elementor")))))},Ha=__toESM(a(97557)),Wa=a(79513),Ka=a(27723),DeletedVariableAlert=({onClose:e,onUnlink:t,onRestore:a,label:r})=>Ha.createElement(Wa.ClickAwayListener,{onClickAway:e},Ha.createElement(Wa.Alert,{variant:"standard",severity:"warning",onClose:e,action:Ha.createElement(Ha.Fragment,null,t&&Ha.createElement(Wa.AlertAction,{variant:"contained",onClick:t},(0,Ka.__)("Unlink","elementor")),a&&Ha.createElement(Wa.AlertAction,{variant:"outlined",onClick:a},(0,Ka.__)("Restore","elementor"))),sx:{maxWidth:300}},Ha.createElement(Wa.AlertTitle,null,(0,Ka.__)("Deleted variable","elementor")),Ha.createElement(Wa.Typography,{variant:"body2",color:"textPrimary"},(0,Ka.__)("The variable","elementor")," '",Ha.createElement(Wa.Typography,{variant:"body2",component:"span",sx:{lineBreak:"anywhere"}},r),"' ",(0,Ka.__)("has been deleted, but it is still referenced in this location. You may restore the variable or unlink it to assign a different value.","elementor")))),qa=__toESM(a(97557)),Xa=a(24413),Ya=a(79513),Ja=qa.forwardRef(({label:e,suffix:t,onClick:a,icon:r,...n},l)=>{const o=t?`${e} (${t})`:e;return qa.createElement(Ya.Chip,{ref:l,size:"tiny",color:"warning",shape:"rounded",variant:"standard",onClick:a,icon:qa.createElement(Xa.AlertTriangleFilledIcon,null),label:qa.createElement(Ya.Tooltip,{title:o,placement:"top"},qa.createElement(Ya.Box,{sx:{display:"inline-grid",minWidth:0}},qa.createElement(Ya.Typography,{variant:"caption",noWrap:!0,sx:{lineHeight:1.34}},o))),sx:{height:e=>e.spacing(3.5),borderRadius:e=>e.spacing(1),justifyContent:"flex-start",width:"100%"},...n})});Ja.displayName="WarningVariableTag";var DeletedVariable=({variable:e,propTypeKey:t})=>{const{propTypeUtil:a}=J(t),r=(0,Ua.useBoundProp)(),n=usePermissions(),[l,o]=(0,Ra.useState)(!1),closeInfotip=()=>o(!1),i=(0,Ra.useRef)(null),s=(0,Ra.useId)(),c=(0,Fa.usePopupState)({variant:"popover",popupId:`elementor-variables-restore-${s}`}),u={};n.canUnlink()&&(u.onUnlink=createUnlinkHandler(e,t,r.setValue)),n.canRestore()&&(u.onRestore=()=>{e.key&&restoreVariable(e.key).then(e=>{resolveBoundPropAndSetValue(a.create(e),r),closeInfotip()}).catch(()=>{closeInfotip(),c.setAnchorEl(i.current),c.open()})});return Da.createElement(Da.Fragment,null,Da.createElement(Fa.Box,{ref:i},l&&Da.createElement(Fa.Backdrop,{open:!0,onClick:closeInfotip,invisible:!0}),Da.createElement(Fa.Infotip,{color:"warning",placement:"right-start",open:l,disableHoverListener:!0,onClose:closeInfotip,content:Da.createElement(DeletedVariableAlert,{onClose:closeInfotip,onUnlink:u.onUnlink,onRestore:u.onRestore,label:e.label}),slotProps:{popper:{modifiers:[{name:"offset",options:{offset:[0,24]}}]}}},Da.createElement(Ja,{label:e.label,onClick:()=>o(e=>!e),suffix:(0,Ba.__)("deleted","elementor")})),Da.createElement(Fa.Popover,{disableScrollLock:!0,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{my:1}},...(0,Fa.bindPopover)(c)},Da.createElement(VariableTypeProvider,{propTypeKey:t},Da.createElement(VariableRestore,{variableId:e.key??"",onClose:c.close,onSubmit:()=>{c.close()}})))))},Qa=__toESM(a(97557)),Za=a(97557),er=a(77394),tr=a(79513),ar=a(27723),rr=__toESM(a(97557)),nr=a(79513),lr=a(27723),or={title:(0,lr.__)("Variable has changed","elementor"),message:(0,lr.__)("This variable is no longer compatible with this property. You can clear it or select a different one.","elementor"),buttons:{clear:(0,lr.__)("Clear","elementor"),select:(0,lr.__)("Select variable","elementor")}},MismatchVariableAlert=({onClose:e,onClear:t,triggerSelect:a})=>rr.createElement(nr.ClickAwayListener,{onClickAway:e},rr.createElement(nr.Alert,{variant:"standard",severity:"warning",onClose:e,action:rr.createElement(rr.Fragment,null,t&&rr.createElement(nr.AlertAction,{variant:"contained",onClick:t},or.buttons.clear),a&&rr.createElement(nr.AlertAction,{variant:"outlined",onClick:a},or.buttons.select)),sx:{maxWidth:300}},rr.createElement(nr.AlertTitle,null,or.title),rr.createElement(nr.Typography,{variant:"body2",color:"textPrimary"},or.message))),MismatchVariable=({variable:e})=>{const{setValue:t,value:a}=(0,er.useBoundProp)(),r=(0,Za.useRef)(null),n=(0,Za.useId)(),l=(0,tr.usePopupState)({variant:"popover",popupId:`elementor-variables-list-${n}`}),[o,i]=(0,Za.useState)(!1),closeInfotip=()=>i(!1),s=!!a;return Qa.createElement(tr.Box,{ref:r},o&&Qa.createElement(tr.Backdrop,{open:!0,onClick:closeInfotip,invisible:!0}),Qa.createElement(tr.Infotip,{color:"warning",placement:"right-start",open:o,disableHoverListener:!0,onClose:closeInfotip,content:Qa.createElement(MismatchVariableAlert,{onClose:closeInfotip,onClear:s?()=>{closeInfotip(),t(null)}:void 0,triggerSelect:()=>{closeInfotip(),l.setAnchorEl(r.current),l.open()}}),slotProps:{popper:{modifiers:[{name:"offset",options:{offset:[0,24]}}]}}},Qa.createElement(Ja,{label:e.label,onClick:()=>i(e=>!e),suffix:(0,ar.__)("changed","elementor")})),Qa.createElement(tr.Popover,{disableScrollLock:!0,anchorEl:r.current,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{my:1}},...(0,tr.bindPopover)(l)},Qa.createElement(VariableSelectionPopover,{selectedVariable:e,closePopover:l.close,propTypeKey:e.type})))},ir=__toESM(a(97557)),sr=a(97557),cr=a(77394),ur=a(79513),pr=a(27723),dr=__toESM(a(97557)),mr=a(79513),br=a(27723),MissingVariableAlert=({onClose:e,onClear:t})=>dr.createElement(mr.ClickAwayListener,{onClickAway:e},dr.createElement(mr.Alert,{variant:"standard",severity:"warning",onClose:e,action:dr.createElement(dr.Fragment,null,t&&dr.createElement(mr.AlertAction,{variant:"contained",onClick:t},(0,br.__)("Clear","elementor"))),sx:{maxWidth:300}},dr.createElement(mr.AlertTitle,null,(0,br.__)("This variable is missing","elementor")),dr.createElement(mr.Typography,{variant:"body2",color:"textPrimary"},(0,br.__)("It may have been deleted. Try clearing this field and select a different value or variable.","elementor")))),MissingVariable=()=>{const{setValue:e}=(0,cr.useBoundProp)(),[t,a]=(0,sr.useState)(!1),closeInfotip=()=>a(!1);return ir.createElement(ir.Fragment,null,t&&ir.createElement(ur.Backdrop,{open:!0,onClick:closeInfotip,invisible:!0}),ir.createElement(ur.Infotip,{color:"warning",placement:"right-start",open:t,disableHoverListener:!0,onClose:closeInfotip,content:ir.createElement(MissingVariableAlert,{onClose:closeInfotip,onClear:()=>e(null)}),slotProps:{popper:{modifiers:[{name:"offset",options:{offset:[0,24]}}]}}},ir.createElement(Ja,{label:(0,pr.__)("Missing variable","elementor"),onClick:()=>a(e=>!e)})))},VariableControl=()=>{const e=(0,ft.useBoundProp)(),t=e.value??e.placeholder,a=useVariable(t?.value);if(!a)return ht.createElement(MissingVariable,null);const{$$type:r}=t;if(a?.deleted)return ht.createElement(DeletedVariable,{variable:a,propTypeKey:r});const{isCompatible:n}=J(a.type);return n&&!n(e?.propType,a)?ht.createElement(MismatchVariable,{variable:a}):ht.createElement(AssignedVariable,{variable:a,propTypeKey:r})},vr=__toESM(a(97557)),gr=a(77394),yr=a(24413),hr=a(27723),usePropVariableAction=()=>{const{propType:e,path:t}=(0,gr.useBoundProp)(),a=resolveVariableFromPropType(e);return{visible:Boolean(a),icon:yr.ColorFilterIcon,title:(0,hr.__)("Variables","elementor"),content:({close:e})=>a?(trackOpenVariablePopover(t,a.variableType),vr.createElement(VariableSelectionPopover,{closePopover:e,propTypeKey:a.propTypeUtil.key})):null}},resolveVariableFromPropType=e=>{if("union"===e.kind)for(const t of Object.keys(e.prop_types)){const e=J(t);if(e)return e}},trackOpenVariablePopover=(e,t)=>{trackVariableEvent({varType:t,controlPath:e.join("."),action:"open"})},fr=a(59618),Er=a(22444),Cr=a(55534),_r=a(22444),Tr="elementor://variables/tools/manage-global-variable-guide",generateVariablesPrompt=()=>{const e=(0,Cr.toolPrompts)("manage-global-variable"),t=(0,_r.isProActive)()?"- **global-size-variable** — A simple CSS length with a unit (Elementor Pro). Use this for fixed spacing, font sizes, or layout values. Example: `16px`, `1.5rem`, `2em`, `10vh`\n- **global-custom-size-variable** — Any CSS size expression that goes beyond a simple number + unit (Elementor Pro). Use this when the value is a CSS function, a keyword, or a combination of units that `global-size-variable` cannot represent. Example: `auto`, `clamp(1rem, 2vw, 2rem)`, `calc(100% - 32px)`, `min(50vw, 600px)`, `300ms`, `2ch`. When in doubt: if the value contains a function call or a keyword, use `global-custom-size-variable`.":"- ~~global-size-variable~~ — requires Elementor Pro (not available on this site)\n- ~~global-custom-size-variable~~ — requires Elementor Pro (not available on this site)";return e.description(`\n# Purpose\nCreate, update, or delete V4 global CSS variables. These are distinct from legacy v3 globals and map 1:1 to \`--css-var: VALUE\`.\n\n# Available Types\n- **global-color-variable** — CSS color value. Example: \`#FF0000\`, \`rgba(255,0,0,1)\`, \`hsl(0,100%,50%)\`\n- **global-font-variable** — Font family name ONLY — NOT a size or px value. Example: \`Roboto\`, \`Open Sans\`. NEVER pass px/rem here.\n${t}\n\n# Naming Rules\n- Labels must be **lowercase**, using only letters (a-z), numbers, digits (0-9), dashes (-), or underscores (_)\n- No spaces, no special characters\n- Example: "Headline Primary" → \`headline-primary\`\n- Labels must be unique — always check [elementor://global-variables] first\n\n# Value Rules\n- Provide a **plain CSS value** only — do NOT pass JSON, legacy-globals object structures, or variable references\n- Values are inserted as-is: \`--css-var: <value>\`\n- NEVER store a px/rem value inside a \`global-font-variable\` — use \`global-size-variable\` (Pro) instead\n\n# Operations\n- **create** — requires \`type\`, \`label\`, \`value\`. Label must be unique.\n- **update** — requires \`id\`, \`label\`, \`value\`. Get \`id\` from [elementor://global-variables]. When renaming: keep existing value. When changing value: keep exact existing label.\n- **delete** — requires \`id\`. DESTRUCTIVE — always confirm with user before executing.\n`),e.parameter("action",'"create", "update", or "delete".'),e.parameter("type","Variable type. Required for create. See Available Types above."),e.parameter("label","Variable name (lowercase, dash-separated). Required for create/update."),e.parameter("value","Plain CSS value matching the variable type. Required for create/update. Do NOT pass JSON."),e.parameter("id","Variable ID. Required for update/delete. Obtain from [elementor://global-variables]."),e.example('\nCreate a brand color:\n{ "action": "create", "type": "global-color-variable", "label": "brand-primary", "value": "#1A73E8" }\n\nCreate a heading font:\n{ "action": "create", "type": "global-font-variable", "label": "font-heading", "value": "Playfair Display" }\n\nCreate a simple spacing size:\n{ "action": "create", "type": "global-size-variable", "label": "spacing-md", "value": "16px" }\n\nCreate a fluid/responsive size using a CSS function (use global-custom-size-variable, NOT global-size-variable):\n{ "action": "create", "type": "global-custom-size-variable", "label": "spacing-fluid", "value": "clamp(1rem, 2vw, 2rem)" }\n\nCreate a size that is a keyword:\n{ "action": "create", "type": "global-custom-size-variable", "label": "width-auto", "value": "auto" }\n\nCreate a size using calc():\n{ "action": "create", "type": "global-custom-size-variable", "label": "sidebar-width", "value": "calc(100% - 32px)" }\n\nUpdate a variable\'s value (keep exact label):\n{ "action": "update", "id": "abc123", "label": "brand-primary", "value": "#0D47A1" }\n\nRename a variable (keep existing value):\n{ "action": "update", "id": "abc123", "label": "brand-secondary", "value": "#1A73E8" }\n\nDelete a variable:\n{ "action": "delete", "id": "abc123" }\n'),e.instruction("Always read [elementor://global-variables] before creating to check existing variables and avoid duplicate labels."),e.prompt()},Sr=a(5527),wr="elementor://global-variables",initVariablesResource=(e,t)=>{[t,e].forEach(e=>{const{resource:t,sendResourceUpdated:a}=e,notifyGlobalVariablesUpdated=()=>{a({uri:wr})};t("global-variables",wr,{description:"Global variables available (v4)"},async()=>{const e=await(async()=>{const e={};return Object.entries(W.variables()).forEach(([t,a])=>{a.deleted||(e[t]={...a,version:"v4"})}),e})();return{contents:[{uri:wr,mimeType:"application/json",text:JSON.stringify(e)}]}}),window.addEventListener(B,notifyGlobalVariablesUpdated),(0,Sr.__privateListenTo)((0,Sr.commandEndEvent)("document/save/update"),notifyGlobalVariablesUpdated)})},xr="global-color-variable",kr="global-font-variable",Vr="global-size-variable",Pr="global-custom-size-variable",Ir=/^(auto|\d+(\.\d+)?(px|rem|em|vh|vw|%|ch|s|ms))$/i,Ar=/^(#[0-9a-f]{3,8}|rgba?\(|hsl)/i;function validateValueForType(e,t){return e===kr&&Ir.test(t.trim())?`Font variable value must be a font family name (e.g. "Roboto"), not a size value like "${t}". Use "global-size-variable" or "global-custom-size-variable" for spacing/size values.`:e!==xr||Ar.test(t.trim())?e!==Vr||Ir.test(t.trim())?e!==kr||function isFontAvailable(e){const t=window.elementor?.config?.controls?.font?.options??{},a=e.trim();return!!t?.[a]}(t)?null:`Font "${t}" is not supported in WordPress. Please choose one of the available font families.`:`Size variable value should include a CSS unit (e.g. "16px") or be "auto", got "${t}".`:`Color variable value should be a CSS color (e.g. "#FF0000"), got "${t}".`}var initManageVariableTool=e=>{const{addTool:t,resource:a}=e,r=(0,Er.isProActive)()?[xr,kr,Vr,Pr]:[xr,kr];a("manage-global-variable-guide",Tr,{title:"Manage Global Variable Guide",description:"Detailed guide for using the manage-global-variable tool",mimeType:"text/plain"},async e=>({contents:[{uri:e.href,mimeType:"text/plain",text:generateVariablesPrompt()}]})),t({name:"manage-global-variable",description:"Manage V4 global variables (color, font, size, custom-size). Read the guide resource before use. font = font-famliy, size = measured unit, custom-size = calculated values",schema:{action:fr.z.enum(["create","update","delete"]),id:fr.z.string().optional().describe("Variable id — required for update/delete. Get from the global-variables resource."),type:fr.z.enum(r),label:fr.z.string().describe("Variable label (lowercase, dash-separated) — required for create/update."),value:fr.z.string().optional().describe('Plain CSS value — required for create/update. Color: hex/rgba/hsl. Font: family name only. Size: value with unit e.g. "16px", or "auto" (Pro). Do NOT pass JSON.')},outputSchema:{status:fr.z.enum(["ok"]).describe("Operation status"),message:fr.z.string().optional().describe("Error details if status is error")},requiredResources:[{uri:Tr,description:"Full guide for variable types, naming rules, and usage"},{uri:wr,description:"Current global variables — check before creating to avoid duplicates"}],isDestructive:!0,handler:async e=>{const t=function getServiceActions(e){return{create({type:t,label:a,value:r}){if(!t||!a||!r)throw new Error("Create requires type, label, and value");if((t===Vr||t===Pr)&&!(0,Er.isProActive)())throw new Error("Creating size variables requires Elementor Pro.");const n=validateLabel(a);if(n)throw new Error(n);const l=validateValueForType(t,r);if(l)throw new Error(l);return e.create({type:t,label:a,value:r},{eventData:{executedBy:"mcp_tool"}})},update({id:t,label:a,value:r}){if(!t||!a||!r)throw new Error("Update requires id, label, and value");const n=validateLabel(a);if(n)throw new Error(n);const l=e.variables()[t];if(l){const e=validateValueForType(l.type,r);if(e)throw new Error(e)}return e.update(t,{label:a,value:r},{eventData:{executedBy:"mcp_tool"}})},delete({id:t}){if(!t)throw new Error("delete requires id");return e.delete(t)}}}(W)[e.action];if(t)return await t(e),{status:"ok"};throw new Error(`Unknown action ${e.action}`)}})};var zr=__toESM(a(97557)),Lr=a(77394),Dr=a(2020),Rr=a(70374),Ur=a(24413),Fr=a(27723),Br=__toESM(a(97557)),Or=a(97557),Mr=a(79513),ColorField=({value:e,onChange:t,onValidationChange:a})=>{const[r,n]=(0,Or.useState)(e),[l,o]=(0,Or.useState)(""),i=(0,Or.useRef)(null),s=usePopoverContentRef()??i.current;return Br.createElement(Mr.UnstableColorField,{id:"color-variable-field",size:"tiny",fullWidth:!0,value:r,onChange:e=>{n(e);const r=validateValue(e);o(r),a?.(r),t(r?"":e)},error:l||void 0,slotProps:{colorPicker:{anchorEl:s,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:-10},slotProps:{colorIndicator:{size:"inherit",sx:{borderRadius:.5}}}}}})},Nr=__toESM(a(97557)),jr=a(97557),$r=a(77394),Gr=a(70374),Hr=a(24413),Wr=a(79513),Kr=a(27723),FontField=({value:e,onChange:t,onValidationChange:a})=>{const[r,n]=(0,jr.useState)(e),l=(0,jr.useRef)(null),o=usePopoverContentRef()??l.current,i=(0,Wr.usePopupState)({variant:"popover"}),s=(0,$r.useFontFamilies)(),c=(0,Gr.useSectionWidth)(),u=(0,jr.useMemo)(()=>s.map(({label:e,fonts:t})=>({label:e,items:t})),[s]),p=(0,jr.useId)();return Nr.createElement(Nr.Fragment,null,Nr.createElement(Wr.UnstableTag,{id:p,variant:"outlined",label:r,endIcon:Nr.createElement(Hr.ChevronDownIcon,{fontSize:"tiny"}),...(0,Wr.bindTrigger)(i),fullWidth:!0}),Nr.createElement(Wr.Popover,{disablePortal:!0,disableScrollLock:!0,anchorEl:o,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:-28},...(0,Wr.bindPopover)(i)},Nr.createElement($r.ItemSelector,{id:"font-family-variables-selector",itemsList:u,selectedItem:r,onItemChange:e=>{(e=>{n(e);const r=validateValue(e);a?.(r),t(r?"":e)})(e),i.close()},onClose:i.close,sectionWidth:c,title:(0,Kr.__)("Font family","elementor"),itemStyle:e=>({fontFamily:e.value}),onDebounce:$r.enqueueFont,icon:Hr.TextIcon})))},qr=a(2020),Xr=a(59618),Yr=(0,qr.createPropUtils)("global-size-variable",Xr.z.string()),Jr=(0,a(82148).createTransformer)(e=>null);function registerVariableTypes(){Y({key:z.key,valueField:ColorField,icon:Ur.BrushIcon,propTypeUtil:z,fallbackPropTypeUtil:Dr.colorPropTypeUtil,variableType:"color",startIcon:({value:e})=>zr.createElement(P,{size:"inherit",component:"span",value:e}),defaultValue:"#ffffff",menuActionsFactory:({variable:e,variableId:t,handlers:a})=>{const r=[];return e.sync_to_v3?r.push({name:(0,Fr.__)("Stop syncing to Global Colors","elementor"),icon:Ur.RefreshOffIcon,color:"text.primary",onClick:()=>a.onStopSync(t)}):r.push({name:(0,Fr.__)("Sync to Global Colors","elementor"),icon:Ur.RefreshIcon,color:"text.primary",onClick:()=>a.onStartSync(t)}),r}}),Y({key:$.key,valueField:FontField,icon:Ur.TextIcon,propTypeUtil:$,fallbackPropTypeUtil:Dr.stringPropTypeUtil,variableType:"font",defaultValue:"Roboto"});const e={isActive:!1,icon:Ur.ExpandDiagonalIcon,propTypeUtil:Yr,fallbackPropTypeUtil:Dr.sizePropTypeUtil,styleTransformer:Jr,variableType:"size",selectionFilter:()=>[],emptyState:zr.createElement(Rr.CtaButton,{size:"small",href:"https://go.elementor.com/go-pro-panel-size-variable/",onClick:()=>(0,Lr.trackUpgradePromotionClick)({target_name:"variables_popover",location_l1:"variables_list"})})};Y({...e,key:Yr.key,defaultValue:"0px"}),Y({...e,key:"global-custom-size-variable"})}var Qr=__toESM(a(97557)),Zr=a(97557),en=a(5527),tn=a(79513),an=":root";function StyleVariablesRenderer(){const e=function usePortalContainer(){return(0,en.__privateUseListenTo)((0,en.commandEndEvent)("editor/documents/attach-preview"),()=>(0,en.getCanvasIframeDocument)()?.head)}(),t=function useStyleVariables(){const[e,t]=(0,Zr.useState)({});return(0,Zr.useEffect)(()=>{const e=G.subscribe(t);return()=>{e()}},[]),e}(),a=Object.keys(t).length>0;if(!e||!a)return null;const r=function convertToCssVariables(e){return Object.entries(e).map(([e,t])=>function cssVariableDeclaration(e,t){const a=t?.deleted?e:t.label,r=t.value;return`--${a}:${r};`}(e,t)).join("")}(t),n=`${an}{${r}}`;return Qr.createElement(tn.Portal,{container:e},Qr.createElement("style",{"data-e-style-id":"e-variables",key:n},n))}var rn=a(77394),nn=a(2020),ln=__toESM(a(97557)),on=a(2020),sn=a(79513),cn=a(27723),un=a(2020),pn=a(2020),dn=a(59618),mn=(0,pn.createPropUtils)("global-custom-size-variable",dn.z.string());function sizeValue(e){if(Yr.isValid(e)||mn.isValid(e)){const t=getVariable(e?.value);return t?.value}if(un.sizePropTypeUtil.isValid(e)){const{size:t,unit:a}=e.value;return"custom"!==a?`${t??0}${a??"px"}`:t||"fx"}return""}var useColorVariable=e=>{const t=e?.value?.color?.value;return getVariable(t||"")},BackgroundRepeaterColorIndicator=({value:e})=>{const t=useColorVariable(e);return ln.createElement(P,{component:"span",size:"inherit",value:t?.value})},BackgroundRepeaterLabel=({value:e})=>{const t=useColorVariable(e);return ln.createElement(sn.Box,{component:"span"},t?.label)},BoxShadowRepeaterColorIndicator=({value:e})=>{const t=useColorVariable(e);return ln.createElement(P,{component:"span",size:"inherit",value:t?.value})},FilterDropShadowIconIndicator=({value:e})=>{const{args:t}=on.cssFilterFunctionPropUtil.extract(e)||{},{color:a}=on.dropShadowFilterPropTypeUtil.extract(t)||{},r=getVariable(a?.value||"");return ln.createElement(P,{component:"span",size:"inherit",value:r?.value})},FilterSingleSizeRepeaterLabel=({value:e})=>{const t=on.cssFilterFunctionPropUtil.extract(e);if(on.dropShadowFilterPropTypeUtil.isValid(t?.args))return null;const a=t?.args,r=t?.func?.value??"",n=sizeValue(a?.value?.size);return ln.createElement(ln.Fragment,null,ln.createElement(sn.Box,{component:"span",style:{textTransform:"capitalize"}},`${r}: `),ln.createElement(sn.Box,{component:"span"},n))},FilterDropShadowRepeaterLabel=({value:e})=>{const{args:t}=on.cssFilterFunctionPropUtil.extract(e)||{},{xAxis:a,yAxis:r,blur:n}=on.dropShadowFilterPropTypeUtil.extract(t)||{},l=[];for(const e of[a,r,n]){const t=sizeValue(e);t&&l.push(t)}return ln.createElement(sn.Box,{component:"span"},(0,cn.__)("Drop shadow:","elementor")," ",l.join(" "))},BoxShadowRepeaterLabel=({value:e})=>{const{position:t,hOffset:a,vOffset:r,blur:n,spread:l}=on.shadowPropTypeUtil.extract(e)||{},o=[];for(const e of[a,r,n,l]){const t=sizeValue(e);t&&o.push(t)}const i=t?.value||"outset";return ln.createElement(sn.Box,{component:"span",style:{textTransform:"capitalize"}},i,": ",o.join(" "))},TransformRepeaterLabel=({value:e})=>{const t=[];if(on.moveTransformPropTypeUtil.isValid(e)){t.push((0,cn.__)("Move:","elementor"));const{x:a,y:r,z:n}=on.moveTransformPropTypeUtil.extract(e)||{};for(const e of[a,r,n]){const a=sizeValue(e);a&&t.push(a)}}return ln.createElement(sn.Box,{component:"span"},t.join(" "))},TransitionsSizeVariableLabel=({value:e})=>{let t="";const a=getVariable(e?.value?.size?.value||"");if(a&&on.selectionSizePropTypeUtil.isValid(e)){const r=e.value?.selection?.value?.key?.value;r&&(t+=`${r}: `),t+=a?.value}return ln.createElement(sn.Box,{component:"span"},t)};function registerRepeaterInjections(){!function backgroundOverlayRepeaterInjections(){(0,rn.injectIntoRepeaterItemIcon)({id:"background-color-variables-icon",component:BackgroundRepeaterColorIndicator,condition:({value:e})=>hasAssignedColorVariable(nn.backgroundColorOverlayPropTypeUtil.extract(e)?.color)}),(0,rn.injectIntoRepeaterItemLabel)({id:"background-color-variables-label",component:BackgroundRepeaterLabel,condition:({value:e})=>hasAssignedColorVariable(nn.backgroundColorOverlayPropTypeUtil.extract(e)?.color)})}(),function boxShadowRepeaterInjections(){(0,rn.injectIntoRepeaterItemIcon)({id:"box-shadow-color-variables-icon",component:BoxShadowRepeaterColorIndicator,condition:({value:e})=>{const{color:t}=nn.shadowPropTypeUtil.extract(e)||{};return hasAssignedColorVariable(t)}}),(0,rn.injectIntoRepeaterItemLabel)({id:"color-variables-box-shadow-label",component:BoxShadowRepeaterLabel,condition:({value:e})=>{const{hOffset:t,vOffset:a,blur:r,spread:n}=nn.shadowPropTypeUtil.extract(e)||{};return hasAssignedSizeVariable(t)||hasAssignedSizeVariable(a)||hasAssignedSizeVariable(r)||hasAssignedSizeVariable(n)}})}(),function transitionsRepeaterInjections(){(0,rn.injectIntoRepeaterItemLabel)({id:"transition-size-variables-label",component:TransitionsSizeVariableLabel,condition:({value:e})=>hasAssignedSizeVariable(nn.selectionSizePropTypeUtil.extract(e)?.size)})}(),function transformRepeaterInjections(){(0,rn.injectIntoRepeaterItemLabel)({id:"transform-size-variables-label",component:TransformRepeaterLabel,condition:({value:e})=>{if(nn.moveTransformPropTypeUtil.isValid(e)){const{x:t,y:a,z:r}=nn.moveTransformPropTypeUtil.extract(e)||{};return hasAssignedSizeVariable(t)||hasAssignedSizeVariable(a)||hasAssignedSizeVariable(r)}return!1}})}(),function filterRepeaterInjections(){(0,rn.injectIntoRepeaterItemIcon)({id:"filters-color-variables-icon",component:FilterDropShadowIconIndicator,condition:({value:e})=>{if(!nn.cssFilterFunctionPropUtil.isValid(e))return!1;const t=nn.cssFilterFunctionPropUtil.extract(e)?.args;return!!nn.dropShadowFilterPropTypeUtil.isValid(t)&&hasAssignedColorVariable(nn.dropShadowFilterPropTypeUtil.extract(t)?.color)}}),(0,rn.injectIntoRepeaterItemLabel)({id:"filters-drop-shadow-size-variables-label",component:FilterDropShadowRepeaterLabel,condition:({value:e})=>{if(!nn.cssFilterFunctionPropUtil.isValid(e))return!1;const t=nn.cssFilterFunctionPropUtil.extract(e)?.args;if(nn.dropShadowFilterPropTypeUtil.isValid(t)){const{xAxis:e,yAxis:a,blur:r}=nn.dropShadowFilterPropTypeUtil.extract(t)||{};return hasAssignedSizeVariable(e)||hasAssignedSizeVariable(a)||hasAssignedSizeVariable(r)}return!1}}),(0,rn.injectIntoRepeaterItemLabel)({id:"filters-size-variables-label",component:FilterSingleSizeRepeaterLabel,condition:({value:e})=>{if(!nn.cssFilterFunctionPropUtil.isValid(e))return!1;const t=nn.cssFilterFunctionPropUtil.extract(e)?.args;return hasAssignedSizeVariable(t?.value?.size)}})}()}function hasAssignedSizeVariable(e){return!!Yr.isValid(e)||!!mn.isValid(e)}function hasAssignedColorVariable(e){return!!z.isValid(e)}var{registerPopoverAction:bn}=pt.controlActionsMenu;function init(){registerVariableTypes(),registerRepeaterInjections(),(0,st.registerControlReplacement)({component:VariableControl,condition:({value:e,placeholder:t})=>!!hasVariableAssigned(e)||!e&&hasVariableAssigned(t)}),bn({id:"variables",priority:40,useProps:usePropVariableAction}),W.init();!function initMcp(e,t){window.addEventListener("elementor/init",()=>{initManageVariableTool(e),initVariablesResource(e,t)},{once:!0})}((0,ct.getMCPByDomain)("variables",{instructions:"Everything related to V4 ( Atomic ) variables.\n# Global variables\n- Create/update/delete global variables\n- Get list of global variables\n- Get details of a global variable\n"}),(0,ct.getMCPByDomain)("canvas")),(0,it.injectIntoTop)({id:"canvas-style-variables-render",component:StyleVariablesRenderer}),(0,it.injectIntoLogic)({id:"variables-import-listener",component:GlobalStylesImportListener}),(0,it.injectIntoLogic)({id:"mcp-variable-connect-listener",component:McpVariableConnectListener})}function hasVariableAssigned(e){return!!(0,ut.isTransformable)(e)&&Z(e.$$type)}var defaultResolver=e=>t=>{const a=String(t);return{$$type:e,value:W.variables()[a]?a:W.findIdByLabel(a)}},vn={globalVariablesLLMResolvers:{"global-color-variable":defaultResolver("global-color-variable"),"global-font-variable":defaultResolver("global-font-variable"),"global-size-variable":defaultResolver("global-size-variable")}}},46400:function(e){e.exports=window.elementorV2.editorCurrentUser},51061:function(e){e.exports=window.elementorV2.editorPanels},55534:function(e){e.exports=window.elementorV2.editorMcp},59618:function(e){e.exports=window.elementorV2.schema},70374:function(e){e.exports=window.elementorV2.editorUi},77394:function(e){e.exports=window.elementorV2.editorControls},79513:function(e){e.exports=window.elementorV2.ui},82148:function(e){e.exports=window.elementorV2.editorCanvas},97557:function(e){e.exports=window.React}},t={};var a=function __webpack_require__(a){var r=t[a];if(void 0!==r)return r.exports;var n=t[a]={exports:{}};return e[a](n,n.exports,__webpack_require__),n.exports}(36714);(window.elementorV2=window.elementorV2||{}).editorVariables=a}(),window.elementorV2.editorVariables?.init?.(); | |
| 1 | +!function(){"use strict";var e={d:function(t,a){for(var n in a)e.o(a,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:a[n]})},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,{GLOBAL_VARIABLES_URI:function(){return Yt},Utils:function(){return ka},VariablesManagerPanelEmbedded:function(){return Ne},getMenuActionsForVariable:function(){return $},hasVariable:function(){return le},init:function(){return wa},registerVariableType:function(){return M},registerVariableTypes:function(){return oa},service:function(){return U},sizeVariablePropTypeUtil:function(){return na}});var a=window.React,n=window.elementorV2.editorCurrentUser,r=window.elementorV2.editorPanels,o=window.elementorV2.editorUi,l=window.elementorV2.editorV1Adapters,i=window.elementorV2.icons,s=window.elementorV2.ui,c=window.wp.i18n,u=window.elementorV2.events;const p=({varType:e,controlPath:t,action:a})=>{const{dispatchEvent:n,config:r}=(0,u.getMixpanel)();if(!r?.names?.variables?.[a])return;const o=r.names.variables[a];n?.(o,{location:r?.locations?.variables||"",secondaryLocation:r?.secondaryLocations?.variablesPopover||"",trigger:r?.triggers?.click||"",var_type:e,control_path:t,action_type:o})},d=({action:e,varType:t,controlPath:a})=>{const{dispatchEvent:n,config:r}=(0,u.getMixpanel)();if(!r?.names?.variables?.[e])return;const o=r.names.variables[e],l={location:r?.locations?.variablesManager||"",trigger:r?.triggers?.click||"",action_type:o};t&&(l.var_type=t),a&&(l.style_control_path=a),n?.(o,l)},m=({variableLabel:e,action:t})=>{try{const{dispatchEvent:a,config:n}=(0,u.getMixpanel)();if(!n?.names?.variables?.variableSyncToV3)return;const r=n.names.variables.variableSyncToV3,o="sync"===t;a?.(r,{interaction_type:"click",target_type:e,target_name:o?"sync_to_v3":"unsync_to_v3",interaction_result:o?"var_is_synced_to_V3":"var_is_unsynced_from_V3",target_location:"widget_panel",location_l1:"var_manager",interaction_description:o?`user_synced_${e}_to_v3`:`user_unsync_${e}_from_v3`})}catch{}},b={MISSING_VARIABLE_NAME:(0,c.__)("Give your variable a name.","elementor"),MISSING_VARIABLE_VALUE:(0,c.__)("Add a value to complete your variable.","elementor"),INVALID_CHARACTERS:(0,c.__)("Use letters, numbers, dashes (-), or underscores (_) for the name.","elementor"),NO_NON_SPECIAL_CHARACTER:(0,c.__)("Names have to include at least one non-special character.","elementor"),VARIABLE_LABEL_MAX_LENGTH:(0,c.__)("Keep names up to 50 characters.","elementor"),DUPLICATED_LABEL:(0,c.__)("This variable name already exists. Please choose a unique name.","elementor"),UNEXPECTED_ERROR:(0,c.__)("There was a glitch. Try saving your variable again.","elementor"),BATCH:{DUPLICATED_LABELS:(e,t)=>(0,c.sprintf)((0,c.__)("We found %1$d duplicated %2$s.","elementor"),e,t),UNEXPECTED_ERROR:(0,c.__)("There was a glitch.","elementor"),DUPLICATED_LABEL_ACTION:(0,c.__)("Take me there","elementor"),DUPLICATED_LABEL_ACTION_MESSAGE:(0,c.__)("Please rename the variables.","elementor"),UNEXPECTED_ERROR_ACTION_MESSAGE:(0,c.__)("Try saving your variables again.","elementor")}},v=e=>{if("duplicated_label"===e?.response?.data?.code)return{field:"label",message:b.DUPLICATED_LABEL};if("batch_duplicated_label"===e?.response?.data?.code){const t=e?.response?.data?.data??{},a=Object.keys(t).length,n=1===a?"name":"names",r=Object.keys(t);return{field:"label",message:b.BATCH.DUPLICATED_LABELS(a,n),severity:"error",IconComponent:i.AlertTriangleFilledIcon,action:{label:b.BATCH.DUPLICATED_LABEL_ACTION,message:b.BATCH.DUPLICATED_LABEL_ACTION_MESSAGE,data:{duplicatedIds:r}}}}return"batch_operation_failed"===e?.response?.data?.code?{field:"label",message:b.BATCH.UNEXPECTED_ERROR,severity:"secondary",IconComponent:i.InfoCircleFilledIcon,action:{message:b.BATCH.UNEXPECTED_ERROR_ACTION_MESSAGE}}:void 0},g=(e,t)=>e.trim()?/^[a-zA-Z0-9_-]+$/.test(e)?/[a-zA-Z0-9]/.test(e)?50<e.length?b.VARIABLE_LABEL_MAX_LENGTH:Object.values(t??{}).some(t=>t.label===e)?b.DUPLICATED_LABEL:"":b.NO_NON_SPECIAL_CHARACTER:b.INVALID_CHARACTERS:b.MISSING_VARIABLE_NAME,y=e=>39<e.length?b.VARIABLE_LABEL_MAX_LENGTH:"",h=e=>e.trim()?"":b.MISSING_VARIABLE_VALUE;var E=window.elementorV2.editorCanvas;const f=(0,s.styled)(s.UnstableColorIndicator)(({theme:e})=>({borderRadius:e.shape.borderRadius/2+"px",marginRight:e.spacing(.25)}));var _=window.elementorV2.editorProps,C=window.elementorV2.schema;const w=(0,_.createPropUtils)("global-color-variable",C.z.string());var T=window.elementorV2.httpClient;const S="elementor/v1/variables",k=()=>`tmp-${Date.now().toString(36)}-${Math.random().toString(36).substring(2,8)}`,x=e=>e.startsWith("tmp-"),P="elementor-global-variables",I="elementor-global-variables-watermark",A="variables:updated",V="RW",O=(0,_.createPropUtils)("global-font-variable",C.z.string()),L=(()=>{const e={};let t;const a=(t,a)=>!(t in e)||e[t].label!==a.label||e[t].value!==a.value||!(e[t]?.deleted||!a?.deleted)||!(!e[t]?.deleted||a?.deleted),n=e=>{if(e)try{(0,l.enqueueFont)(e)}catch{}};return{subscribe:e=>(t=e,()=>{t=()=>{}}),update:r=>{(t=>{let r=!1;for(const[o,l]of Object.entries(t))a(o,l)&&(e[o]=l,l.type===O.key&&n(l.value),r=!0);return r})(r)&&"function"==typeof t&&t({...e})}}})(),D=new class{notifyChange(){window.dispatchEvent(new Event(A))}constructor(){this.state={watermark:-1,variables:{}}}load(){return this.state.watermark=parseInt(localStorage.getItem(I)||"-1"),this.state.variables=JSON.parse(localStorage.getItem(P)||"{}"),this.state.variables}fill(e,t){this.state.variables={},e&&Object.keys(e).length&&(this.state.variables=e),this.state.watermark=t,localStorage.setItem(I,this.state.watermark.toString()),localStorage.setItem(P,JSON.stringify(this.state.variables)),this.notifyChange()}add(e,t){this.load(),this.state.variables[e]=t,localStorage.setItem(P,JSON.stringify(this.state.variables)),this.notifyChange()}update(e,t){this.load(),this.state.variables[e]=t,localStorage.setItem(P,JSON.stringify(this.state.variables)),this.notifyChange()}watermark(e){this.state.watermark=e,localStorage.setItem(I,this.state.watermark.toString())}watermarkDiff(e,t){const a=t-this.state.watermark;return V===e?1!==a:"RO"===e&&0!==a}},U={variables:()=>D.load(),findIdByLabel(e){const t=Object.entries(this.variables()).find(([,t])=>t.label===e);if(!t)throw new Error(`Variable with label ${e} not found`);return t[0]},findVariableByLabel(e){return Object.values(this.variables()).find(t=>t.label===e)||null},getWatermark:()=>D.state.watermark,init:()=>U.load(),load:()=>(0,T.httpService)().get(S+"/list").then(e=>{const{success:t,data:a}=e.data;if(!t)throw new Error("Unexpected response from server");return a}).then(e=>{const{variables:t,watermark:a}=e;return D.fill(t,a),L.update(t),t}),create:({type:e,label:t,value:a})=>((e,t,a)=>(0,T.httpService)().post(S+"/create",{type:e,label:t,value:a}))(e,t,a).then(e=>{const{success:t,data:a}=e.data;if(!t){const e=a?.message||(0,c.__)("Unexpected response from server","elementor");throw new Error(e)}return a}).then(e=>{const{variable:t,watermark:a}=e;B(V,a);const{id:n,...r}=t;return D.add(n,r),L.update({[n]:r}),{id:n,variable:r}}),update:(e,{label:t,value:a,type:n})=>((e,t,a,n)=>(0,T.httpService)().put(S+"/update",{id:e,label:t,value:a,type:n}))(e,t,a,n).then(e=>{const{success:t,data:a}=e.data;if(!t){const e=a?.message||(0,c.__)("Unexpected response from server","elementor");throw new Error(e)}return a}).then(e=>{const{variable:t,watermark:a}=e;B(V,a);const{id:n,...r}=t;return D.update(n,r),L.update({[n]:r}),{id:n,variable:r}}),delete:e=>(e=>(0,T.httpService)().post(S+"/delete",{id:e}))(e).then(e=>{const{success:t,data:a}=e.data;if(!t)throw new Error("Unexpected response from server");return a}).then(e=>{const{variable:t,watermark:a}=e;B(V,a);const{id:n,...r}=t;return D.update(n,r),L.update({[n]:r}),{id:n,variable:r}}),restore:(e,t,a,n)=>((e,t,a,n)=>{const r={id:e};return t&&(r.label=t),a&&(r.value=a),n&&(r.type=n),(0,T.httpService)().post(S+"/restore",r)})(e,t,a,n).then(e=>{const{success:t,data:a}=e.data;if(!t)throw new Error("Unexpected response from server");return a}).then(e=>{const{variable:t,watermark:a}=e;B(V,a);const{id:n,...r}=t;return D.update(n,r),L.update({[n]:r}),{id:n,variable:r}}),batchSave:(e,t,a)=>{const n=((e,t,a)=>{const n=[];return Object.entries(t).forEach(([t,a])=>{if(x(t))n.push({type:"create",variable:{...a,id:t}});else if(e[t]){const r=e[t],o=r.sync_to_v3!==a.sync_to_v3;r.deleted&&!a.deleted?n.push({type:"restore",id:t,...r.label!==a.label&&{label:a.label},...r.value!==a.value&&{value:a.value}}):a.deleted||r.label===a.label&&r.value===a.value&&r.order===a.order&&r.type===a.type&&!o||n.push({type:"update",id:t,variable:{...r.label!==a.label&&{label:a.label},...r.value!==a.value&&{value:a.value},...r.order!==a.order&&{order:a.order},...r.type!==a.type&&{type:a.type},...o&&{sync_to_v3:a.sync_to_v3}}})}}),a.forEach(e=>{n.push({type:"delete",id:e})}),n.filter(e=>{const a=e.id||e.variable?.id;return a&&!(x(a)&&t[a]?.deleted)})})(e,t,a),r={operations:n,watermark:D.state.watermark};return 0===n.length?Promise.resolve({success:!0,watermark:D.state.watermark,operations:0}):(o=r,(0,T.httpService)().post(S+"/batch",o)).then(e=>{const{success:t,data:a}=e.data;if(!t)throw new Error("Unexpected response from server");return a}).then(e=>{const{results:t,watermark:a}=e;return B(V,a),t&&t.forEach(e=>{const t=e.id;e.variable&&("create"===e.type?D.add(t,e.variable):D.update(t,e.variable),L.update({[t]:e.variable}))}),{success:!0,watermark:a,operations:n.length}});var o}},B=(e,t)=>{D.watermarkDiff(e,t)&&setTimeout(()=>U.load(),500),D.watermark(t)},R=(e,t)=>{let a=e,n="";if(t&&(n=t.value),t&&!t.deleted&&(a=t.label),!a.trim())return null;const r=`--${a}`;return n.trim()?`var(${r}, ${n})`:`var(${r})`},F=(0,E.createTransformer)(e=>{const t=U.variables()[e];if(!t)return a.createElement("span",null,(0,c.__)("Missing variable","elementor"));const n=t.type===w.key,r=R(e,t);return a.createElement(s.Stack,{direction:"row",spacing:.5,sx:{paddingInline:"1px"},alignItems:"center"},n&&a.createElement(f,{size:"inherit",value:t.value}),a.createElement(s.Typography,{variant:"caption",overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},r))}),z=(0,E.createTransformer)(e=>{const t=U.variables()[e]||U.findVariableByLabel(e);if(!t)return null;const a=U.findIdByLabel(t.label);return R(a,t)}),{registerVariableType:M,getVariableType:j,getVariableTypes:N,hasVariableType:H}=function(){const e={};return{registerVariableType:({key:t,icon:a,startIcon:n,valueField:r,propTypeUtil:o,variableType:l,defaultValue:i,selectionFilter:s,valueTransformer:c,styleTransformer:u,fallbackPropTypeUtil:p,isCompatible:d,emptyState:m,isActive:b=!0,menuActionsFactory:v})=>{const g=t??o.key;d||(d=(e,t)=>"union"===e.kind&&t.type in e.prop_types),e[g]={icon:a,startIcon:n,valueField:r,propTypeUtil:o,variableType:l,defaultValue:i,selectionFilter:s,valueTransformer:c,fallbackPropTypeUtil:p,isCompatible:d,emptyState:m,isActive:b,menuActionsFactory:v},((e,t)=>{E.styleTransformersRegistry.register(e,t??z)})(o.key,u),(e=>{E.stylesInheritanceTransformersRegistry.register(e,F)})(o.key)},getVariableType:t=>e[t],getVariableTypes:()=>e,hasVariableType:t=>t in e&&!!e[t].isActive}}();function $(e,t){const a=j(e);return a?.menuActionsFactory?a.menuActionsFactory(t):[]}const G=({open:e,label:t,closeDialog:n,onConfirm:r})=>a.createElement(o.ConfirmationDialog,{open:e,onClose:n},a.createElement(o.ConfirmationDialog.Title,null,(0,c.__)("Delete this variable?","elementor")),a.createElement(o.ConfirmationDialog.Content,null,a.createElement(o.ConfirmationDialog.ContentText,null,(0,c.__)("All elements using","elementor")," ",a.createElement(s.Typography,{variant:"subtitle2",component:"span",sx:{lineBreak:"anywhere"}},t)," ",(0,c.__)("will keep their current values, but the variable itself will be removed.","elementor"))),a.createElement(o.ConfirmationDialog.Actions,{onClose:n,onConfirm:r})),W=()=>{const{canUser:e,isAdmin:t}=(0,n.useCurrentUserCapabilities)();return{canAssign:()=>e("edit_posts"),canUnlink:()=>e("edit_posts"),canAdd:()=>t,canDelete:()=>t,canEdit:()=>t,canRestore:()=>t,canManageSettings:()=>t}},K=({icon:e,title:t,message:n,onAdd:r,children:o})=>{const l=W().canAdd(),i=l?t:(0,c.__)("There are no variables","elementor"),u=l?n:(0,c.__)("With your current role, you can only connect and detach variables.","elementor");return a.createElement(q,{title:i,message:u,icon:e},o||r&&a.createElement(s.Button,{variant:"outlined",color:"secondary",size:"small",onClick:r},(0,c.__)("Create a variable","elementor")))};function q({title:e,message:t,icon:n,children:r}){return a.createElement(s.Stack,{gap:1,alignItems:"center",justifyContent:"flex-start",height:"100%",color:"text.secondary",sx:{p:2.5,pt:8,pb:5.5}},n,a.createElement(s.Typography,{align:"center",variant:"subtitle2"},e),a.createElement(s.Typography,{align:"center",variant:"caption",maxWidth:"180px"},t),r)}const X=({searchValue:e,onClear:t,icon:n})=>a.createElement(s.Stack,{gap:1,alignItems:"center",justifyContent:"center",p:2.5,color:"text.secondary",sx:{pb:3.5,pt:8}},n,a.createElement(s.Typography,{align:"center",variant:"subtitle2"},(0,c.__)("Sorry, nothing matched","elementor"),a.createElement("br",null),"“",e,"”."),a.createElement(s.Typography,{align:"center",variant:"caption",sx:{display:"flex",flexDirection:"column"}},(0,c.__)("Try something else.","elementor"),a.createElement(s.Link,{color:"text.secondary",variant:"caption",component:"button",onClick:t},(0,c.__)("Clear & try again","elementor")))),J=()=>{const[e,t]=(0,a.useState)(void 0);return{autoEditVariableId:e,startAutoEdit:(0,a.useCallback)(e=>{t(e)},[]),handleAutoEditComplete:(0,a.useCallback)(()=>{setTimeout(()=>{t(void 0)},100)},[])}},Y=()=>{const e=(0,a.useRef)(0);return{createNavigationCallback:(0,a.useCallback)((t,a,n)=>()=>{if(!t?.length)return;const r=e.current,o=t[r];if(o){a(o);const l=r+1;l>=t.length?(n(),e.current=0):e.current=l}},[]),resetNavigation:(0,a.useCallback)(()=>{e.current=0},[])}};var Q=window.elementorV2.editorControls;const Z=(0,a.createContext)(null);function ee({children:e,propTypeKey:t}){return a.createElement(Z.Provider,{value:t},e)}function te(){const e=(0,a.useContext)(Z);if(null===e)throw new Error("useVariableType must be used within a VariableTypeProvider");return j(e)}function ae(e,t){const a=t.toLowerCase();return e.filter(e=>e.label.toLowerCase().includes(a))}const ne=e=>Object.entries(e).map(([e,t])=>({key:e,...t})),re=({key:e,label:t,value:a,order:n,sync_to_v3:r})=>({key:e,label:t,value:a,order:n,sync_to_v3:r}),oe=(e=!0)=>{const t=U.variables();return e?t:Object.fromEntries(Object.entries(t).filter(([,e])=>!e.deleted))},le=e=>void 0!==oe()[e],ie=e=>se(e);function se(e){const t=oe();return t?.[e]?{...t[e],key:e}:null}const ce=e=>{const t=oe(!1),a=(e=>{const t=[],a=N(),n=j(e);return Object.entries(a).forEach(([e,a])=>{n.variableType===a.variableType&&t.push(e)}),t})(e);return ne(t).filter(e=>a.includes(e.type)).map(re)},ue=({id:e})=>e,pe=(e,t,a,n)=>U.restore(e,t,a,n).then(ue),de="-Copy",me=(e,t)=>{const a=e+t;return a.length<=50?a:e.slice(0,50-t.length)+t},be=(e,t)=>{const a=new Set(t),n=me(e,de);if(!a.has(n))return n;for(let t=2;t<=a.size+1;t++){const n=me(e,`${de}-${t}`);if(!a.has(n))return n}return n},ve=()=>{const[e,t]=(0,a.useState)(()=>oe(!1)),[n,r]=(0,a.useState)([]),[o,l]=(0,a.useState)(!1),[i,s]=(0,a.useState)(!1),[c,u]=(0,a.useState)(!1),[p,d]=(0,a.useState)("");(0,a.useEffect)(()=>{const e=()=>{t(oe(!1)),r([]),s(!1)};return window.addEventListener(A,e),()=>{window.removeEventListener(A,e)}},[]);const m=(0,a.useCallback)(a=>{t({...e,...a}),s(!0)},[e]),b=(0,a.useCallback)((e,a,n)=>{const r=k(),o={id:r,label:a.trim(),value:n.trim(),type:e};return t(e=>({...e,[r]:o})),s(!0),r},[]),v=(0,a.useCallback)(e=>{const a=k();return t(t=>{const n=t[e];if(!n||n.deleted)return t;const r=Object.values(t).filter(e=>!e.deleted).map(e=>e.label);return{...t,[a]:{label:be(n.label,r),value:n.value,type:n.type}}}),s(!0),a},[]),g=(0,a.useCallback)(e=>{r(t=>[...t,e]),t(t=>({...t,[e]:{...t[e],deleted:!0}})),s(!0)},[]),y=(0,a.useCallback)(e=>{t(t=>({...t,[e]:{...t[e],sync_to_v3:!0}})),s(!0)},[]),h=(0,a.useCallback)(e=>{t(t=>({...t,[e]:{...t[e],sync_to_v3:!1}})),s(!0)},[]),E=(0,a.useCallback)(async()=>{const a=oe(!1);u(!0);const o=await U.batchSave(a,e,n);if(o.success){await U.load();const e=U.variables();t(e),r([]),s(!1)}return{success:o.success}},[e,n]),f=(0,a.useCallback)(()=>{const t=((e,t)=>{const a={};return e.forEach(e=>(a[e.type]??=[]).push(e)),Object.entries(a).flatMap(([e,a])=>{const n=t[e]?.selectionFilter,r=a.map(re);return(n?.(r)??r).map(t=>({...t,type:e}))})})(ne(e).filter(e=>!e.deleted),N()),a=ae(t,p);return Object.fromEntries(a.map(({key:e,...t})=>[e,t]))},[e,p]);return{variables:f(),deletedVariables:n,isDirty:i,isSaveDisabled:o,handleOnChange:m,createVariable:b,duplicateVariable:v,handleDeleteVariable:g,handleStartSync:y,handleStopSync:h,handleSave:E,isSaving:c,handleSearch:e=>{d(e)},searchValue:p,setIsSaving:u,setIsSaveDisabled:l}};var ge=window.elementorV2.utils;const ye=e=>{const t={...window.ElementorVariablesQuotaConfig??{},...window.ElementorVariablesQuotaConfigExtended??{}},a=void 0===t[e]&&window.elementorPro,n=t[e]||0,r=a||n>0;return{canAdd:()=>r,canEdit:()=>r}},he=(0,a.forwardRef)(({variableType:e,upgradeUrl:t,trackingData:n},r)=>{const[l,i]=(0,a.useState)(!1);(0,o.useCanvasClickHandler)(l,()=>i(!1));const u=(0,a.useCallback)(()=>{i(e=>(e||(0,Q.trackViewPromotion)(n),!e))},[n]);(0,a.useImperativeHandle)(r,()=>({toggle:u}),[u]);const p=(0,c.sprintf)((0,c.__)("%s variables","elementor"),(0,ge.capitalize)(e)),d=(0,c.sprintf)((0,c.__)("Upgrade to continue creating and editing %s variables.","elementor"),e);return a.createElement(o.PromotionPopover,{open:l,title:p,content:d,ctaText:(0,c.__)("Upgrade now","elementor"),ctaUrl:t,onClose:e=>{e.stopPropagation(),i(!1)},onCtaClick:()=>(0,Q.trackUpgradePromotionClick)(n)},a.createElement(s.Box,{onClick:e=>{e.stopPropagation(),u()},sx:{cursor:"pointer",display:"inline-flex"}},a.createElement(o.PromotionChip,null)))});function Ee(){return Ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},Ee.apply(null,arguments)}const fe={target_name:"variables_manager",target_location:"variables_manager",location_l1:"create variable menu"},_e="tiny",Ce=({variables:e,onCreate:t,menuState:n,outlinedTrigger:r=!1})=>{const o=(0,a.useRef)(null),l=N(),u=(0,a.useMemo)(()=>Object.entries(l).filter(([,e])=>!!e.defaultValue).map(([e,t])=>({key:e,propTypeKey:t.propTypeUtil.key,variableType:t.variableType,defaultValue:t.defaultValue||"",icon:t.icon})),[l]);return a.createElement(a.Fragment,null,a.createElement(s.IconButton,Ee({},(0,s.bindTrigger)(n),{ref:o,size:_e,variant:r?"outlined":void 0,"aria-label":(0,c.__)("Add variable","elementor")}),a.createElement(i.PlusIcon,{fontSize:_e})),a.createElement(s.Menu,Ee({disablePortal:!0,MenuListProps:{dense:!0},PaperProps:{elevation:6}},(0,s.bindMenu)(n),{anchorEl:o.current,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},"data-testid":"variable-manager-create-menu"}),u.map(r=>a.createElement(we,{key:r.key,config:r,variables:e,onCreate:t,onClose:n.close}))))},we=({config:e,variables:t,onCreate:n,onClose:r})=>{const o=(0,a.useRef)(null),l=ye(e.propTypeKey),i=(0,ge.capitalize)(e.variableType),c=!l.canAdd();return a.createElement(s.MenuItem,{onClick:()=>{if(c)return void o.current?.toggle();const a=Te(t,e.variableType);n(e.key,a,e.defaultValue),d({action:"add",varType:e.variableType}),r()},sx:{gap:1.5,cursor:"pointer"}},(0,a.createElement)(e.icon,{fontSize:_e,color:c?"disabled":"action"}),a.createElement(s.Typography,{variant:"caption",color:c?"text.disabled":"text.primary"},i),c&&a.createElement(he,{variableType:e.variableType,upgradeUrl:`https://go.elementor.com/go-pro-manager-${e.variableType}-variable/`,ref:o,trackingData:fe}))},Te=(e,t)=>{const a=new RegExp(`^${t}-(\\d+)$`,"i"),n=new Set;Object.values(e).forEach(e=>{const t=e.label.match(a);t&&n.add(parseInt(t[1],10))});let r=1;for(;n.has(r);)r++;return`${t}-${r}`},Se=({children:e,isHeader:t,width:n,maxWidth:r,align:o,noPadding:l,sx:i})=>{const c={maxWidth:r??150,cursor:"initial",typography:"caption",...t&&{color:"text.primary",fontWeight:"bold"},...t&&!l&&{padding:"10px 16px"},...n&&{width:n},...i};return a.createElement(s.TableCell,{size:"small",padding:l?"none":void 0,align:o,sx:c},e)};function ke(){return ke=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},ke.apply(null,arguments)}function xe(e,t){return e.trim().toLowerCase()===t.trim().toLowerCase()}const Pe=e=>{const[t,n]=(0,a.useState)(e??{value:"",message:""});return{labelFieldError:t,setLabelFieldError:n}},Ie=({value:e,error:t,onChange:n,id:r,onErrorChange:l,size:i="tiny",focusOnShow:c=!1,selectOnShow:u=!1,showWarningInfotip:p=!1,variables:d,onKeyDown:m})=>{const[b,v]=(0,a.useState)(e),[h,E]=(0,a.useState)(""),f=(0,a.useRef)(null);let _=h;xe(b,t?.value??"")&&t?.message&&(_=t.message);const C=_?"":y(b),w=a.createElement(s.TextField,{ref:f,id:r,size:i,fullWidth:!0,value:b,error:!!_,onChange:e=>(e=>{v(e);const a=g(e,d);E(a),l?.(a),n(xe(e,t?.value??"")||a?"":e)})(e.target.value),inputProps:{maxLength:50,...u&&{onFocus:e=>e.target.select()},"aria-label":"Name",onKeyDown:m},autoFocus:c});if(p){const e=Math.max(240,f.current?.getBoundingClientRect().width??240);return a.createElement(o.WarningInfotip,ke({open:Boolean(_||C),text:_||C,placement:"bottom-start",width:e,offset:[0,-15]},C&&{hasError:!1}),w)}return w},Ae=a.memo(({initialValue:e,children:t,editableElement:n,onChange:r,prefixElement:o,autoEdit:l=!1,onRowRef:i,onAutoEditComplete:c,gap:u=1,fieldType:p,disabled:d=!1})=>{const[m,b]=(0,a.useState)(e),[v,g]=(0,a.useState)(!1),{labelFieldError:y,setLabelFieldError:h}=Pe(),[E,f]=(0,a.useState)(""),_=(0,a.useRef)(null),C=(0,a.useCallback)(()=>{"label"===p&&y?.message||"value"===p&&E||r(m),g(!1)},[m,r,p,y,E]);(0,a.useEffect)(()=>{i?.(_?.current)},[i]),(0,a.useEffect)(()=>{!l||v||d||(g(!0),c?.())},[l,v,c,d]);const w=()=>{d||g(!0)},T=e=>{d||("Enter"===e.key?C():"Escape"===e.key&&g(!1)," "!==e.key||v||(e.preventDefault(),g(!0)))},S=(0,a.useCallback)(e=>{b(e)},[]),k=(0,a.useCallback)(e=>{"label"===p?h({value:m,message:e}):f(e)},[p,m,h,f]);let x;"label"===p?x=y:"value"===p&&(x={value:m,message:E});const P=n({value:m,onChange:S,onValidationChange:k,error:x});return v?a.createElement(s.ClickAwayListener,{onClickAway:C},a.createElement(s.Stack,{ref:_,direction:"row",alignItems:"center",gap:u,onDoubleClick:w,onKeyDown:T,tabIndex:0,role:"button","aria-label":"Double click or press Space to edit"},o,P)):a.createElement(s.Stack,{ref:_,direction:"row",alignItems:"center",gap:u,onDoubleClick:w,onKeyDown:T,tabIndex:d?-1:0,role:"button","aria-label":d?"":"Double click or press Space to edit"},o,t)});function Ve(){return Ve=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},Ve.apply(null,arguments)}const Oe=({menuActions:e,disabled:t,itemId:n})=>{const r=(0,s.usePopupState)({variant:"popover"}),o=(0,s.bindTrigger)(r);return a.createElement(a.Fragment,null,a.createElement(s.IconButton,Ve({},o,{disabled:t,size:"tiny",onClick:e=>{e.stopPropagation(),o.onClick?.(e)}}),a.createElement(i.DotsVerticalIcon,{fontSize:"tiny"})),a.createElement(s.Menu,Ve({disablePortal:!0,MenuListProps:{dense:!0},PaperProps:{elevation:6}},(0,s.bindMenu)(r),{anchorEl:r.anchorEl,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},open:r.isOpen,onClose:r.close}),e.map(e=>a.createElement(s.MenuItem,{key:e.name,onClick:t=>{t.stopPropagation(),e.onClick?.(n),r.close()},sx:{color:e.color,gap:1}},e.icon&&(0,a.createElement)(e.icon,{fontSize:"inherit"})," ",e.name))))};function Le(){return Le=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},Le.apply(null,arguments)}const De={target_name:"variables_manager",target_location:"variables_manager"},Ue=e=>{const{row:t,variables:n,handleOnChange:r,autoEditVariableId:l,onAutoEditComplete:c,onFieldError:u,menuActions:p,handleRowRef:d,itemProps:m,showDropIndication:b,triggerProps:v,itemStyle:g,triggerStyle:y,isDragged:h,dropPosition:E,setTriggerRef:f,isSorting:_}=e,C=(0,a.useRef)(null),w=!ye(t.type).canEdit(),T=b&&"before"===E,S=b&&"after"===E;return a.createElement(s.TableRow,Le({},m,{ref:m.ref,selected:h,sx:{...w&&{"& td, & th":{color:"text.disabled"}},...T&&{"& td, & th":{borderTop:"2px solid",borderTopColor:"primary.main"}},...S&&{"& td, & th":{borderBottom:"2px solid",borderBottomColor:"primary.main"}},"&:hover, &:focus-within":{backgroundColor:"action.hover",'& [role="toolbar"], & [draggable]':{opacity:1}},'& [role="toolbar"], & [draggable]':{opacity:0}},style:{...g,...y},onClick:()=>{w&&C.current?.toggle()}}),a.createElement(Se,{noPadding:!0,width:10,maxWidth:10},a.createElement(s.IconButton,Le({size:"small",ref:f},v,{disabled:_,draggable:!0}),a.createElement(i.GripVerticalIcon,{fontSize:"inherit"}))),a.createElement(Se,null,a.createElement(Ae,{initialValue:t.name,onChange:e=>{e===t.name||w||r({...n,[t.id]:{...n[t.id],label:e}})},prefixElement:(0,a.createElement)(t.icon,{fontSize:"inherit",color:w?"disabled":"inherit"}),editableElement:({value:e,onChange:r,onValidationChange:o,error:i})=>a.createElement(Ie,{id:"variable-label-"+t.id,size:"tiny",value:e,onChange:r,onErrorChange:e=>{o?.(e),u?.(!!e)},error:i,focusOnShow:!0,selectOnShow:l===t.id,showWarningInfotip:!0,variables:n}),autoEdit:l===t.id&&!w,onRowRef:d(t.id),onAutoEditComplete:l===t.id?c:void 0,fieldType:"label",disabled:w},a.createElement(o.EllipsisWithTooltip,{title:t.name,sx:{border:"4px solid transparent"}},t.name))),a.createElement(Se,null,a.createElement(Ae,{initialValue:t.value,onChange:e=>{e===t.value||w||r({...n,[t.id]:{...n[t.id],value:e}})},editableElement:({value:e,onChange:o,onValidationChange:l,error:i})=>t.valueField?.({value:e,onChange:o,onPropTypeKeyChange:e=>{w||r({...n,[t.id]:{...n[t.id],type:e}})},propTypeKey:t.type,onValidationChange:e=>{l?.(e),u?.(!!e)},error:i})??a.createElement(a.Fragment,null),onRowRef:d(t.id),gap:.25,fieldType:"value",disabled:w},t.startIcon&&t.startIcon({value:t.value}),a.createElement(o.EllipsisWithTooltip,{title:t.value,sx:{border:"4px solid transparent",lineHeight:"1",pt:.25}},t.value))),a.createElement(Se,{align:"right",noPadding:!0,width:16,maxWidth:16,sx:{paddingInlineEnd:1}},a.createElement(s.Stack,{role:"toolbar",direction:"row",justifyContent:"flex-end",alignItems:"center"},w&&a.createElement(he,{variableType:t.variableType,upgradeUrl:`https://go.elementor.com/renew-license-manager-${t.variableType}-variable`,ref:C,trackingData:De}),a.createElement(Oe,{menuActions:p(t.id),disabled:_,itemId:t.id}))))};function Be(){return Be=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},Be.apply(null,arguments)}const Re=({menuActions:e,variables:t,onChange:n,autoEditVariableId:r,onAutoEditComplete:o,onFieldError:l})=>{const i=(0,a.useRef)(null),u=(0,a.useRef)(new Map);(0,a.useEffect)(()=>{if(r&&i.current){const e=u.current.get(r);e&&setTimeout(()=>{e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})},100)}},[r]);const p=e=>t=>{t?u.current.set(e,t):u.current.delete(e)},d=Object.keys(t).sort(function(e){return(t,a)=>(e[t]?.order??Number.MAX_SAFE_INTEGER)-(e[a]?.order??Number.MAX_SAFE_INTEGER)}(t)),m=d.map(e=>{const a=t[e],n=j(a.type);return n?{id:e,type:a.type,name:a.label,value:a.value,...n}:null}).filter(Boolean),b={minWidth:250,tableLayout:"fixed"};return a.createElement(s.TableContainer,{ref:i,sx:{overflow:"initial"}},a.createElement(s.Table,{sx:b,"aria-label":"Variables manager list with drag and drop reordering",stickyHeader:!0},a.createElement(s.TableHead,null,a.createElement(s.TableRow,null,a.createElement(Se,{isHeader:!0,noPadding:!0,width:10,maxWidth:10}),a.createElement(Se,{isHeader:!0},(0,c.__)("Name","elementor")),a.createElement(Se,{isHeader:!0},(0,c.__)("Value","elementor")),a.createElement(Se,{isHeader:!0,noPadding:!0,width:16,maxWidth:16}))),a.createElement(s.TableBody,null,a.createElement(s.UnstableSortableProvider,{value:d,onChange:e=>{const a={...t};e.forEach((e,t)=>{const n=a[e];n&&(a[e]=Object.assign({},n,{order:t+1}))}),n(a)},variant:"static",restrictAxis:!0,dragOverlay:({children:e,...t})=>a.createElement(s.Table,Be({sx:b},t),a.createElement(s.TableBody,null,e))},m.map(i=>a.createElement(s.UnstableSortableItem,{key:i.id,id:i.id,render:s=>a.createElement(Ue,Be({},s,{row:i,variables:t,handleOnChange:n,autoEditVariableId:r,onAutoEditComplete:o,onFieldError:l,menuActions:e,handleRowRef:p}))}))))))},Fe="variables-manager",ze="stop-sync-variable",{panel:Me,usePanelActions:je}=(0,r.__createPanel)({id:Fe,component:function(){return a.createElement(He,null)},allowedEditModes:["edit",Fe],onOpen:()=>{(0,l.changeEditMode)(Fe)},onClose:async()=>{(0,l.changeEditMode)("edit")},isOpenPreviousElement:!0});function Ne({onRequestClose:e,onExposeCloseAttempt:t}){return a.createElement(He,{embedded:!0,onRequestClose:e,onExposeCloseAttempt:t})}function He({embedded:e=!1,onRequestClose:t,onExposeCloseAttempt:l}={}){const{close:u}=je(),p=(0,a.useMemo)(()=>e?t??(async()=>{}):u,[e,t,u]),{open:b,close:g,isOpen:y}=(0,o.useDialog)(),[h]=(0,n.useSuppressedMessage)(ze),E=(0,s.usePopupState)({variant:"popover"}),{variables:f,isDirty:_,searchValue:C,isSaveDisabled:w,handleOnChange:T,createVariable:S,duplicateVariable:k,handleDeleteVariable:x,handleStartSync:P,handleStopSync:I,handleSave:A,isSaving:V,handleSearch:O,setIsSaving:L,setIsSaveDisabled:D}=ve(),{autoEditVariableId:U,startAutoEdit:B,handleAutoEditComplete:R}=J(),{createNavigationCallback:F,resetNavigation:z}=Y(),[M,N]=(0,a.useState)(null),[H,W]=(0,a.useState)(null),[q,Q]=(0,a.useState)(null);$e(_);const Z=(0,a.useCallback)(()=>{_?b():p()},[_,b,p]);(0,a.useEffect)(()=>{if(e&&l)return l(()=>Z()),()=>l(null)},[e,l,Z]);const ee=(0,a.useCallback)((e,t,a)=>{const n=S(e,t,a);n&&B(n)},[S,B]),te=async()=>{try{Q(null),z();const e=await A();return d({action:"saveChanges"}),e}catch(e){const t=v(e),a=t?.action?.data?.duplicatedIds;return t&&"label"===t.field&&(a&&t.action&&(t.action.callback=F(a,B,()=>{D(!1)})),Q(t),D(!0),z()),{success:!1,error:t}}finally{L(!1)}},ae=(0,a.useCallback)(e=>{x(e),N(null)},[x]),ne=(0,a.useCallback)(e=>{I(e);const t=f[e];t&&m({variableLabel:t.label,action:"unsync"})},[I,f]),re=(0,a.useCallback)(e=>{P(e);const t=f[e];t&&m({variableLabel:t.label,action:"sync"})},[P,f]),oe=(0,a.useCallback)(e=>{h?ne(e):W(e)},[h,ne]),le=(0,a.useCallback)(e=>{const t=f[e];return t?[...$(t.type,{variable:t,variableId:e,handlers:{onStartSync:re,onStopSync:oe}}),{name:(0,c.__)("Duplicate","elementor"),icon:i.CopyIcon,color:"text.primary",onClick:e=>{const a=k(e);B(a);const n=j(t.type);d({action:"duplicate",varType:n?.variableType})}},{name:(0,c.__)("Delete","elementor"),icon:i.TrashIcon,color:"error.main",onClick:e=>{const t=f[e];if(t){N({id:e,label:t.label});const a=j(t.type);d({action:"delete",varType:a?.variableType})}}}]:[]},[f,re,oe,k,B]),ie=Object.keys(f).length>0,se=e?{flex:1,minWidth:0,px:0,py:0,display:"flex",alignItems:"center",alignSelf:"stretch"}:{display:"flex",flex:1},ce=a.createElement(o.SearchField,{placeholder:(0,c.__)("Search","elementor"),value:C,onSearch:O,sx:se}),ue=a.createElement(a.Fragment,null,ie&&a.createElement(Re,{menuActions:le,variables:f,onChange:T,autoEditVariableId:U,onAutoEditComplete:R,onFieldError:D}),!ie&&C&&a.createElement(X,{searchValue:C,onClear:()=>O(""),icon:a.createElement(i.ColorFilterIcon,{fontSize:"large"})}),!ie&&!C&&a.createElement(K,{title:(0,c.__)("Create your first variable","elementor"),message:(0,c.__)("Variables are saved attributes that you can apply anywhere on your site.","elementor"),icon:a.createElement(i.ColorFilterIcon,{fontSize:"large"}),onAdd:E.open})),pe=a.createElement(r.PanelFooter,null,a.createElement(s.Infotip,{placement:"right",open:!!q,content:q?a.createElement(s.Alert,{severity:q.severity??"error",action:q.action?.label?a.createElement(s.AlertAction,{onClick:q.action.callback},q.action.label):void 0,onClose:q.action?.label?void 0:()=>{Q(null),D(!1)},icon:q.IconComponent?a.createElement(q.IconComponent,null):a.createElement(i.AlertTriangleFilledIcon,null)},a.createElement(s.AlertTitle,null,q.message),q.action?.message):null,arrow:!1,slotProps:{popper:{modifiers:[{name:"offset",options:{offset:[-10,10]}}]}}},a.createElement(s.Button,{fullWidth:!0,size:"small",color:"global",variant:"contained",disabled:w||!_||V,onClick:te,loading:V},(0,c.__)("Save changes","elementor")))),de=a.createElement(a.Fragment,null,M&&a.createElement(G,{open:!0,label:M.label,onConfirm:()=>ae(M.id),closeDialog:()=>N(null)}),H&&a.createElement(Ge,{open:!0,onClose:()=>W(null),onConfirm:()=>{ne(H),W(null)}}),y&&a.createElement(o.SaveChangesDialog,null,a.createElement(o.SaveChangesDialog.Title,{onClose:g},(0,c.__)("You have unsaved changes","elementor")),a.createElement(o.SaveChangesDialog.Content,null,a.createElement(o.SaveChangesDialog.ContentText,null,(0,c.__)("To avoid losing your updates, save your changes before leaving.","elementor"))),a.createElement(o.SaveChangesDialog.Actions,{actions:{discard:{label:(0,c.__)("Discard","elementor"),action:()=>{g(),p()}},confirm:{label:(0,c.__)("Save","elementor"),action:async()=>{const e=await te();g(),e?.success&&p()}}}}))),me=e?a.createElement(s.Stack,{direction:"column",sx:{height:"100%",width:"100%",flex:1,minHeight:0,overflow:"hidden"}},a.createElement(s.Stack,{direction:"row",alignItems:"center",spacing:1,width:"100%",sx:{flexShrink:0,px:2,pb:1}},ce,a.createElement(s.Box,{sx:{display:"flex",flexShrink:0,alignItems:"center"}},a.createElement(Ce,{outlinedTrigger:!0,onCreate:ee,variables:f,menuState:E}))),a.createElement(s.Divider,{sx:{width:"100%"}}),a.createElement(r.PanelBody,{sx:{display:"flex",flexDirection:"column",flex:1,minHeight:0}},ue),pe):a.createElement(r.Panel,null,a.createElement(r.PanelHeader,{sx:{height:"unset"}},a.createElement(s.Stack,{width:"100%",direction:"column",alignItems:"center"},a.createElement(s.Stack,{p:1,pl:2,width:"100%",direction:"row",alignItems:"center"},a.createElement(s.Stack,{width:"100%",direction:"row",gap:1},a.createElement(r.PanelHeaderTitle,{sx:{display:"flex",alignItems:"center",gap:.5}},a.createElement(i.ColorFilterIcon,{fontSize:"inherit"}),(0,c.__)("Variables Manager","elementor"))),a.createElement(s.Stack,{direction:"row",gap:.5,alignItems:"center"},a.createElement(Ce,{onCreate:ee,variables:f,menuState:E}),a.createElement(s.CloseButton,{"aria-label":"Close",slotProps:{icon:{fontSize:_e}},onClick:()=>{Z()}}))),a.createElement(s.Stack,{width:"100%",direction:"row",gap:1},ce),a.createElement(s.Divider,{sx:{width:"100%"}}))),a.createElement(r.PanelBody,{sx:{display:"flex",flexDirection:"column",height:"100%"}},ue),pe),be=a.createElement(a.Fragment,null,me,de);return e?be:a.createElement(o.ThemeProvider,null,be)}const $e=e=>{(0,a.useEffect)(()=>{const t=t=>{e&&t.preventDefault()};return window.addEventListener("beforeunload",t),()=>{window.removeEventListener("beforeunload",t)}},[e])},Ge=({open:e,onClose:t,onConfirm:r})=>{const[,l]=(0,n.useSuppressedMessage)(ze);return a.createElement(o.ConfirmationDialog,{open:e,onClose:t},a.createElement(o.ConfirmationDialog.Title,{icon:i.ColorFilterIcon,iconColor:"primary"},(0,c.__)("Stop syncing variable color","elementor")),a.createElement(o.ConfirmationDialog.Content,null,a.createElement(o.ConfirmationDialog.ContentText,null,(0,c.__)("This will disconnect the variable color from Global Colors. Existing uses on your site will automatically switch to a default color.","elementor"))),a.createElement(o.ConfirmationDialog.Actions,{onClose:t,onConfirm:r,cancelLabel:(0,c.__)("Cancel","elementor"),confirmLabel:(0,c.__)("Got it","elementor"),color:"primary",onSuppressMessage:l,suppressLabel:(0,c.__)("Don't show again","elementor")}))};var We=window.elementorV2.editor,Ke=window.elementorV2.editorMcp,qe=window.elementorV2.menus;function Xe(){return(0,a.useEffect)(()=>{const e=()=>{U.load()};return window.addEventListener(E.GLOBAL_STYLES_IMPORTED_EVENT,e),()=>{window.removeEventListener(E.GLOBAL_STYLES_IMPORTED_EVENT,e)}},[]),null}const Je="elementor/open-variables-manager",Ye="panel/elements/categories";function Qe(){const{open:e}=je(),t=(0,a.useRef)(!1),[n,r]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{n&&(r(!1),e())},[n,e]),(0,a.useEffect)(()=>(0,l.__privateListenTo)((0,l.routeOpenEvent)(Ye),()=>{t.current&&(t.current=!1,r(!0))}),[]),(0,a.useEffect)(()=>{const e=()=>{t.current=!0,(0,l.__privateOpenRoute)(Ye)};return window.addEventListener(Je,e),()=>window.removeEventListener(Je,e)},[]),null}const Ze="active-panel",et="variables-manager",tt="panel/elements";function at(){const{open:e}=je(),t=(0,a.useRef)(!1);return(0,a.useEffect)(()=>{if(new URLSearchParams(window.location.search).get(Ze)===et)return(0,l.__privateListenTo)((0,l.routeOpenEvent)(tt),()=>{t.current||(t.current=!0,requestAnimationFrame(()=>{e()}))})},[e]),null}function nt(e,t,a){return()=>{const{fallbackPropTypeUtil:n}=j(t),r=function(e,t){const{valueTransformer:a}=j(t);return a?a(e.value,e.type):e.value}(e,t);a(n.create(r))}}const rt=(0,a.createContext)(null),ot=({children:e})=>{const[t,n]=(0,a.useState)(null);return a.createElement(rt.Provider,{value:t},a.createElement(s.Box,{ref:n},e))},lt=()=>(0,a.useContext)(rt),it=()=>{const{propTypeUtil:e}=te(),t=(0,Q.useBoundProp)(e);return{...t,setVariableValue:e=>st(e,t),variableId:t.value??t.placeholder}},st=(e,t)=>{const a=ct(t.value),n=ct(t.placeholder),r=ct(e);return a||n!==r?t.setValue(e):t.setValue(null)},ct=e=>(0,_.isTransformable)(e)?e.value:e,ut=({id:e,label:t,errorMsg:n,noticeMsg:r,children:o})=>a.createElement(s.Grid,{container:!0,gap:.75,alignItems:"center"},a.createElement(s.Grid,{item:!0,xs:12},a.createElement(s.FormLabel,{htmlFor:e,size:"tiny"},t)),a.createElement(s.Grid,{item:!0,xs:12},o,n&&a.createElement(s.FormHelperText,{error:!0},n),r&&a.createElement(s.FormHelperText,null,r))),pt="tiny",dt=({onGoBack:e,onClose:t})=>{const{icon:n,valueField:r,variableType:l,propTypeUtil:u}=te(),{setVariableValue:d,path:m}=it(),{propType:g}=(0,Q.useBoundProp)(),h=(()=>{const{value:e}=(0,Q.useBoundProp)(),t=H(e?.$$type)&&Boolean(e?.value),a=ie(t?e.value:"");return t?a?a.value:"":e?.value??""})(),[E,f]=(0,a.useState)(h),[_,C]=(0,a.useState)(""),[w,T]=(0,a.useState)(""),[S,k]=(0,a.useState)(""),[x,P]=(0,a.useState)(u.key),{labelFieldError:I,setLabelFieldError:A}=Pe(),V=()=>{f(""),C(""),T(""),k(""),t()},O=()=>{var e;(e={value:E,label:_,type:x},U.create(e).then(ue)).then(e=>{d(e),V()}).catch(e=>{const t=v(e);if(t&&"label"===t.field)return C(""),void A({value:_,message:t.message});T(b.UNEXPECTED_ERROR)}),p({varType:l,controlPath:m.join("."),action:"save"})},L=""===_.trim()||("string"==typeof E?""===E.trim():!1===Boolean(E))||!!w,D=e=>{"Enter"!==e.key||L||(e.preventDefault(),O())};return a.createElement(o.SectionPopoverBody,{height:"auto"},a.createElement(o.PopoverHeader,{icon:a.createElement(a.Fragment,null,e&&a.createElement(s.IconButton,{size:pt,"aria-label":(0,c.__)("Go Back","elementor"),onClick:e},a.createElement(i.ArrowLeftIcon,{fontSize:pt})),a.createElement(n,{fontSize:pt})),title:(0,c.__)("Create variable","elementor"),onClose:V}),a.createElement(s.Divider,null),a.createElement(Q.PopoverContent,{p:2},a.createElement(ut,{id:"variable-label",label:(0,c.__)("Name","elementor"),errorMsg:I?.message,noticeMsg:y(_)},a.createElement(Ie,{id:"variable-label",value:_,error:I,onChange:e=>{C(e),T("")},onErrorChange:e=>{A({value:"",message:e})},onKeyDown:D,focusOnShow:!0})),r&&a.createElement(ut,{errorMsg:S,label:(0,c.__)("Value","elementor")},a.createElement(s.Typography,{variant:"h5",id:"variable-value-wrapper"},a.createElement(r,{value:E,onPropTypeKeyChange:e=>P(e),onChange:e=>{f(e),T(""),k("")},onValidationChange:k,propType:g,onKeyDown:D}))),w&&a.createElement(s.FormHelperText,{error:!0},w)),a.createElement(s.CardActions,{sx:{pt:.5,pb:1}},a.createElement(s.Button,{id:"create-variable-button",size:"small",variant:"contained",disabled:L,onClick:O},(0,c.__)("Create","elementor"))))},mt=({closeDialog:e,onConfirm:t,onSuppressMessage:n})=>{const[r,o]=(0,a.useState)(!1);return a.createElement(s.Dialog,{open:!0,onClose:e,maxWidth:"xs"},a.createElement(s.DialogTitle,{display:"flex",alignItems:"center",gap:1},a.createElement(i.AlertTriangleFilledIcon,{color:"secondary"}),(0,c.__)("Changes to variables go live right away.","elementor")),a.createElement(s.DialogContent,null,a.createElement(s.DialogContentText,{variant:"body2",color:"textPrimary"},(0,c.__)("Don't worry - all other changes you make will wait until you publish your site.","elementor"))),a.createElement(s.DialogActions,{sx:{justifyContent:"space-between",alignItems:"center"}},a.createElement(s.FormControlLabel,{control:a.createElement(s.Checkbox,{checked:r,onChange:e=>o(e.target.checked),size:"small"}),label:a.createElement(s.Typography,{variant:"body2"},(0,c.__)("Don't show me again","elementor"))}),a.createElement("div",null,a.createElement(s.Button,{color:"secondary",onClick:e},(0,c.__)("Keep editing","elementor")),a.createElement(s.Button,{variant:"contained",color:"secondary",onClick:()=>{r&&n?.(),t?.()},sx:{ml:1}},(0,c.__)("Save","elementor")))))},bt="tiny",vt=(0,c.__)("Delete variable","elementor"),gt=({onClose:e,onGoBack:t,onSubmit:r,editId:l})=>{const{icon:u,valueField:p,variableType:d,propTypeUtil:m}=te(),{setVariableValue:g,variableId:h}=it(),{propType:E}=(0,Q.useBoundProp)(),[f,_]=(0,n.useSuppressedMessage)("edit-confirmation-dialog"),[C,w]=(0,a.useState)(!1),[T,S]=(0,a.useState)(!1),[k,x]=(0,a.useState)(""),[P,I]=(0,a.useState)(""),{labelFieldError:A,setLabelFieldError:V}=Pe(),O=ie(l),[D,B]=(0,a.useState)(O?.type??m.key);if(!O)throw new Error(`Global ${d} variable not found`);const R=W(),[F,z]=(0,a.useState)(()=>O.value),[M,j]=(0,a.useState)(()=>O.label);(0,a.useEffect)(()=>(L.update({[l]:{...O,value:F}}),()=>{L.update({[l]:{...O}})}),[l,F,O]);const N=()=>{f?H():S(!0)},H=()=>{const e=D!==O.type;((e,{value:t,label:a,type:n})=>U.update(e,{value:t,label:a,type:n}).then(ue))(l,e?{value:F,label:M,type:D}:{value:F,label:M}).then(()=>{$(),r?.()}).catch(e=>{const t=v(e);if(t&&"label"===t.field)return j(""),void V({value:M,message:t.message});x(b.UNEXPECTED_ERROR)})},$=()=>{l===h&&g(l)},K=[];R.canDelete()&&K.push(a.createElement(s.Tooltip,{key:"delete",placement:"top",title:vt},a.createElement(s.IconButton,{size:bt,onClick:()=>{w(!0)},"aria-label":vt},a.createElement(i.TrashIcon,{fontSize:bt}))));const q=F===O.value&&M===O.label||""===M.trim()||("string"==typeof F?""===F.trim():!1===Boolean(F))||!!k,X=e=>{"Enter"!==e.key||q||(e.preventDefault(),N())};return a.createElement(a.Fragment,null,a.createElement(o.SectionPopoverBody,{height:"auto"},a.createElement(o.PopoverHeader,{title:(0,c.__)("Edit variable","elementor"),onClose:e,icon:a.createElement(a.Fragment,null,t&&a.createElement(s.IconButton,{size:bt,"aria-label":(0,c.__)("Go Back","elementor"),onClick:t},a.createElement(i.ArrowLeftIcon,{fontSize:bt})),a.createElement(u,{fontSize:bt})),actions:K}),a.createElement(s.Divider,null),a.createElement(Q.PopoverContent,{p:2},a.createElement(ut,{id:"variable-label",label:(0,c.__)("Name","elementor"),errorMsg:A?.message,noticeMsg:y(M)},a.createElement(Ie,{id:"variable-label",value:M,error:A,onChange:e=>{j(e),x("")},onErrorChange:e=>{V({value:"",message:e})},onKeyDown:X,focusOnShow:!0})),p&&a.createElement(ut,{errorMsg:P,label:(0,c.__)("Value","elementor")},a.createElement(s.Typography,{variant:"h5"},a.createElement(p,{propTypeKey:O.type,onPropTypeKeyChange:e=>B(e),value:F,onChange:e=>{z(e),x(""),I("")},onKeyDown:X,onValidationChange:I,propType:E}))),k&&a.createElement(s.FormHelperText,{error:!0},k)),a.createElement(s.CardActions,{sx:{pt:.5,pb:1}},a.createElement(s.Button,{size:"small",variant:"contained",disabled:q,onClick:N},(0,c.__)("Save","elementor")))),C&&a.createElement(G,{open:!0,label:M,onConfirm:()=>{var e;(e=l,U.delete(e).then(ue)).then(()=>{$(),r?.()})},closeDialog:()=>{w(!1)}}),T&&!f&&a.createElement(mt,{closeDialog:()=>{S(!1)},onConfirm:H,onSuppressMessage:_}))},yt=(0,c.__)("Edit variable","elementor"),ht=({item:e,disabled:t=!1})=>{const n=e.onEdit;return a.createElement(a.Fragment,null,a.createElement(s.ListItemIcon,{sx:{color:t?"text.disabled":"inherit"}},e.icon),a.createElement(s.Box,{sx:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:1}},a.createElement(o.EllipsisWithTooltip,{title:e.label||e.value,as:s.Typography,variant:"caption",color:t?"text.disabled":"text.primary",sx:{marginTop:"1px",lineHeight:"2"},maxWidth:"50%"}),e.secondaryText&&a.createElement(o.EllipsisWithTooltip,{title:e.secondaryText,as:s.Typography,variant:"caption",color:t?"text.disabled":"text.tertiary",sx:{marginTop:"1px",lineHeight:"1"},maxWidth:"50%"})),!!n&&!t&&a.createElement(s.Tooltip,{placement:"top",title:yt},a.createElement(s.IconButton,{sx:{mx:1,opacity:"0"},onClick:t=>{t.stopPropagation(),n(e.value)},"aria-label":yt},a.createElement(i.EditIcon,{color:"action",fontSize:"tiny"}))))},Et=(0,s.styled)(s.MenuList)(({theme:e,disabled:t})=>({"& > li":{height:32,width:"100%",display:"flex",alignItems:"center"},'& > [role="option"]':{...e.typography.caption,lineHeight:"inherit",padding:e.spacing(.5,1,.5,2),...!t&&{"&:hover, &:focus":{backgroundColor:e.palette.action.hover},cursor:"pointer"},'&[aria-selected="true"]':{backgroundColor:e.palette.action.selected},textOverflow:"ellipsis",position:"absolute",top:0,left:0,"&:hover .MuiIconButton-root, .MuiIconButton-root:focus":{opacity:1}},width:"100%",position:"relative"}));function ft(){return ft=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},ft.apply(null,arguments)}const _t="tiny",Ct=(0,c.__)("Create variable","elementor"),wt=(0,c.__)("Variables Manager","elementor"),Tt=e=>`https://go.elementor.com/renew-license-panel-${e}-variable`,St=({closePopover:e,onAdd:t,onEdit:n,onSettings:r,disabled:l=!1})=>{const{icon:u,startIcon:m,variableType:b,propTypeUtil:v,emptyState:g}=te(),{value:y,setValue:h,path:E}=it(),[f,_]=(0,a.useState)(""),{list:C,hasMatches:w,isSourceNotEmpty:T,hasNoCompatibleVariables:S}=((e,t)=>{const n=(l=t,(0,a.useMemo)(()=>ce(l),[l])),r=(e=>{const{selectionFilter:t}=te(),{propType:a}=(0,Q.useBoundProp)();return t?t(e,a):e})(n),o=ae(r,e);var l;return{list:o.sort((e,t)=>(e.order??Number.MAX_SAFE_INTEGER)-(t.order??Number.MAX_SAFE_INTEGER)),hasMatches:o.length>0,isSourceNotEmpty:r.length>0,hasNoCompatibleVariables:n.length>0&&0===r.length}})(f,v.key),k=[];if(t&&k.push(a.createElement(s.Tooltip,{key:"add",placement:"top",title:Ct},a.createElement("span",null,a.createElement(s.IconButton,{id:"add-variable-button",size:_t,onClick:()=>{t?.(),p({varType:b,controlPath:E.join("."),action:"add"})},"aria-label":Ct,disabled:l},a.createElement(i.PlusIcon,{fontSize:_t}))))),r){const e=()=>{r(),d({action:"openManager",varType:b,controlPath:E.join(".")})};k.push(a.createElement(s.Tooltip,{key:"settings",placement:"top",title:wt},a.createElement(s.IconButton,{id:"variables-manager-button",size:_t,onClick:e,"aria-label":wt},a.createElement(i.SettingsIcon,{fontSize:_t}))))}const x=m||(()=>a.createElement(u,{fontSize:_t})),P=C.map(({value:e,label:t,key:r})=>({type:"item",value:r,label:t,icon:a.createElement(x,{value:e}),secondaryText:e,onEdit:n?()=>n?.(r):void 0}));return(0,a.useEffect)(()=>{l&&(0,Q.trackViewPromotion)({target_name:"variables_popover",target_location:"widget_panel",location_l1:"variables_list"})},[l]),a.createElement(o.SectionPopoverBody,null,a.createElement(o.PopoverHeader,{title:(0,c.__)("Variables","elementor"),icon:a.createElement(i.ColorFilterIcon,{fontSize:_t}),onClose:e,actions:k}),T&&a.createElement(o.SearchField,{value:f,onSearch:e=>{_(e)},placeholder:(0,c.__)("Search","elementor")}),a.createElement(s.Divider,null),T&&w&&a.createElement(a.Fragment,null,a.createElement(o.PopoverMenuList,{items:P,onSelect:l?()=>{}:t=>{h(t),p({varType:b,controlPath:E.join("."),action:"connect"}),e()},onClose:()=>{},selectedValue:y,"data-testid":`${b}-variables-list`,menuListTemplate:e=>a.createElement(Et,ft({},e,{disabled:l})),menuItemContentTemplate:e=>a.createElement(ht,{item:e,disabled:l})}),l&&a.createElement(o.PromotionAlert,{message:(0,c.sprintf)((0,c.__)("Upgrade to continue creating and editing %s variables.","elementor"),b),upgradeUrl:Tt(b),onCtaClick:()=>(0,Q.trackUpgradePromotionClick)({target_name:"variables_popover",location_l1:"variables_list"})})),!w&&T&&a.createElement(X,{searchValue:f,onClear:()=>{_("")},icon:a.createElement(u,{fontSize:"large"})}),l&&!T&&a.createElement(K,{title:(0,c.sprintf)((0,c.__)("No %s variables yet","elementor"),b),message:(0,c.sprintf)((0,c.__)("Upgrade to create %s variables and maintain consistent element sizing.","elementor"),b),icon:a.createElement(u,{fontSize:"large"})},g),!T&&!S&&!l&&a.createElement(K,{title:(0,c.sprintf)((0,c.__)("Create your first %s variable","elementor"),b),message:(0,c.__)("Variables are saved attributes that you can apply anywhere on your site.","elementor"),icon:a.createElement(u,{fontSize:"large"}),onAdd:t}),S&&!l&&a.createElement(K,{title:(0,c.__)("No compatible variables","elementor"),message:(0,c.__)("Looks like none of your variables work with this control. Create a new variable to use it here.","elementor"),icon:a.createElement(u,{fontSize:"large"}),onAdd:t}))},kt="list",xt="edit",Pt=({closePopover:e,propTypeKey:t,selectedVariable:n})=>{const[r,o]=(0,a.useState)(kt),[i,s]=(0,a.useState)(""),{open:c}=je(),u=(0,l.isExperimentActive)("e_variables_manager")?()=>{(0,l.isExperimentActive)("e_editor_design_system_panel")?window.dispatchEvent(new CustomEvent("elementor/toggle-design-system",{detail:{tab:"variables"}})):c()}:void 0;return a.createElement(ee,{propTypeKey:t},a.createElement(ot,null,function(e){const t=W(),n=ye(e.propTypeKey),r={onClose:()=>{e.closePopover()},onGoBack:()=>{e.setCurrentView(kt)}};t.canAdd()&&(r.onAdd=()=>{e.setCurrentView("add")}),t.canEdit()&&(r.onEdit=t=>{e.setEditId(t),e.setCurrentView(xt)}),t.canManageSettings()&&e.onSettings&&(r.onSettings=()=>{e.closePopover(),e.onSettings?.()});return kt===e.currentView?a.createElement(St,{closePopover:r.onClose,onAdd:r.onAdd,onEdit:r.onEdit,onSettings:r.onSettings,disabled:!n.canAdd()}):"add"===e.currentView?a.createElement(dt,{onGoBack:r.onGoBack,onClose:r.onClose}):xt===e.currentView?a.createElement(gt,{editId:e.editId,onGoBack:r.onGoBack,onClose:r.onClose,onSubmit:()=>{e?.selectedVariable?.key===e.editId?r.onClose():r.onGoBack?.()}}):null}({propTypeKey:t,currentView:r,selectedVariable:n,editId:i,setEditId:s,setCurrentView:o,closePopover:e,onSettings:u})))};function It(){return It=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},It.apply(null,arguments)}const At="tiny",Vt=(0,c.__)("Unlink variable","elementor"),Ot=({startIcon:e,label:t,onUnlink:n,...r})=>{const o=[];return n&&o.push(a.createElement(s.Tooltip,{key:"unlink",title:Vt,placement:"bottom"},a.createElement(s.IconButton,{size:At,onClick:n,"aria-label":Vt},a.createElement(i.DetachIcon,{fontSize:At})))),a.createElement(s.Tooltip,{title:t,placement:"top"},a.createElement(s.UnstableTag,It({fullWidth:!0,showActionsOnHover:!0,startIcon:a.createElement(s.Stack,{gap:.5,direction:"row",alignItems:"center"},e),label:a.createElement(s.Box,{sx:{display:"inline-grid",minWidth:0}},a.createElement(s.Typography,{sx:{lineHeight:1.34},variant:"caption",noWrap:!0},t)),actions:o},r)))};function Lt(){return Lt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},Lt.apply(null,arguments)}const Dt=({variable:e,propTypeKey:t})=>{const{startIcon:n,propTypeUtil:r}=j(t),{setValue:o}=(0,Q.useBoundProp)(),l=(0,a.useRef)(null),c=(0,a.useId)(),u=(0,s.usePopupState)({variant:"popover",popupId:`elementor-variables-list-${c}`}),p=nt(e,t,o),d=n||(()=>null);return a.createElement(s.Box,{ref:l},a.createElement(Ot,Lt({label:e.label,startIcon:a.createElement(a.Fragment,null,a.createElement(i.ColorFilterIcon,{fontSize:At}),a.createElement(d,{value:e.value})),onUnlink:p},(0,s.bindTrigger)(u))),a.createElement(s.Popover,Lt({disableScrollLock:!0,anchorEl:l.current,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{my:1}}},(0,s.bindPopover)(u)),a.createElement(Pt,{selectedVariable:e,closePopover:u.close,propTypeKey:r.key})))},Ut=({variableId:e,onClose:t,onSubmit:n})=>{const{icon:r,valueField:l,variableType:i,propTypeUtil:u}=te(),{setVariableValue:p}=it(),{propType:d}=(0,Q.useBoundProp)(),m=ie(e);if(!m)throw new Error(`Global ${i} variable not found`);const[g,h]=(0,a.useState)(""),[E,f]=(0,a.useState)(""),[_,C]=(0,a.useState)(m.label),[w,T]=(0,a.useState)(m.value),[S,k]=(0,a.useState)(m?.type??u.key),{labelFieldError:x,setLabelFieldError:P}=Pe({value:m.label,message:b.DUPLICATED_LABEL}),I=()=>{(S!==m.type?pe(e,_,w,S):pe(e,_,w)).then(()=>{p(e),n?.()}).catch(e=>{const t=v(e);if(t&&"label"===t.field)return C(""),void P({value:_,message:t.message});h(b.UNEXPECTED_ERROR)})},A=w===m.value&&_===m.label||""===_.trim()||("string"==typeof w?""===w.trim():!1===Boolean(w))||!!g,V=e=>{"Enter"!==e.key||A||(e.preventDefault(),I())};return a.createElement(ot,null,a.createElement(o.SectionPopoverBody,{height:"auto"},a.createElement(o.PopoverHeader,{icon:a.createElement(r,{fontSize:"tiny"}),title:(0,c.__)("Restore variable","elementor"),onClose:t}),a.createElement(s.Divider,null),a.createElement(Q.PopoverContent,{p:2},a.createElement(ut,{id:"variable-label",label:(0,c.__)("Name","elementor"),errorMsg:x?.message,noticeMsg:y(_)},a.createElement(Ie,{id:"variable-label",value:_,error:x,onChange:e=>{C(e),h("")},onErrorChange:e=>{P({value:"",message:e})},onKeyDown:V,focusOnShow:!0})),l&&a.createElement(ut,{errorMsg:E,label:(0,c.__)("Value","elementor")},a.createElement(s.Typography,{variant:"h5"},a.createElement(l,{propTypeKey:S,onPropTypeKeyChange:e=>k(e),value:w,onChange:e=>{T(e),h(""),f("")},onValidationChange:f,propType:d,onKeyDown:V}))),g&&a.createElement(s.FormHelperText,{error:!0},g)),a.createElement(s.CardActions,{sx:{pt:.5,pb:1}},a.createElement(s.Button,{size:"small",variant:"contained",disabled:A,onClick:I},(0,c.__)("Restore","elementor")))))},Bt=({onClose:e,onUnlink:t,onRestore:n,label:r})=>a.createElement(s.ClickAwayListener,{onClickAway:e},a.createElement(s.Alert,{variant:"standard",severity:"warning",onClose:e,action:a.createElement(a.Fragment,null,t&&a.createElement(s.AlertAction,{variant:"contained",onClick:t},(0,c.__)("Unlink","elementor")),n&&a.createElement(s.AlertAction,{variant:"outlined",onClick:n},(0,c.__)("Restore","elementor"))),sx:{maxWidth:300}},a.createElement(s.AlertTitle,null,(0,c.__)("Deleted variable","elementor")),a.createElement(s.Typography,{variant:"body2",color:"textPrimary"},(0,c.__)("The variable","elementor")," '",a.createElement(s.Typography,{variant:"body2",component:"span",sx:{lineBreak:"anywhere"}},r),"' ",(0,c.__)("has been deleted, but it is still referenced in this location. You may restore the variable or unlink it to assign a different value.","elementor"))));function Rt(){return Rt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},Rt.apply(null,arguments)}const Ft=a.forwardRef(({label:e,suffix:t,onClick:n,icon:r,...o},l)=>{const c=t?`${e} (${t})`:e;return a.createElement(s.Chip,Rt({ref:l,size:"tiny",color:"warning",shape:"rounded",variant:"standard",onClick:n,icon:a.createElement(i.AlertTriangleFilledIcon,null),label:a.createElement(s.Tooltip,{title:c,placement:"top"},a.createElement(s.Box,{sx:{display:"inline-grid",minWidth:0}},a.createElement(s.Typography,{variant:"caption",noWrap:!0,sx:{lineHeight:1.34}},c))),sx:{height:e=>e.spacing(3.5),borderRadius:e=>e.spacing(1),justifyContent:"flex-start",width:"100%"}},o))});function zt(){return zt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},zt.apply(null,arguments)}Ft.displayName="WarningVariableTag";const Mt=({variable:e,propTypeKey:t})=>{const{propTypeUtil:n}=j(t),r=(0,Q.useBoundProp)(),o=W(),[l,i]=(0,a.useState)(!1),u=()=>i(!1),p=(0,a.useRef)(null),d=(0,a.useId)(),m=(0,s.usePopupState)({variant:"popover",popupId:`elementor-variables-restore-${d}`}),b={};return o.canUnlink()&&(b.onUnlink=nt(e,t,r.setValue)),o.canRestore()&&(b.onRestore=()=>{e.key&&pe(e.key).then(e=>{st(n.create(e),r),u()}).catch(()=>{u(),m.setAnchorEl(p.current),m.open()})}),a.createElement(a.Fragment,null,a.createElement(s.Box,{ref:p},l&&a.createElement(s.Backdrop,{open:!0,onClick:u,invisible:!0}),a.createElement(s.Infotip,{color:"warning",placement:"right-start",open:l,disableHoverListener:!0,onClose:u,content:a.createElement(Bt,{onClose:u,onUnlink:b.onUnlink,onRestore:b.onRestore,label:e.label}),slotProps:{popper:{modifiers:[{name:"offset",options:{offset:[0,24]}}]}}},a.createElement(Ft,{label:e.label,onClick:()=>i(e=>!e),suffix:(0,c.__)("deleted","elementor")})),a.createElement(s.Popover,zt({disableScrollLock:!0,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{my:1}}},(0,s.bindPopover)(m)),a.createElement(ee,{propTypeKey:t},a.createElement(Ut,{variableId:e.key??"",onClose:m.close,onSubmit:()=>{m.close()}})))))},jt={title:(0,c.__)("Variable has changed","elementor"),message:(0,c.__)("This variable is no longer compatible with this property. You can clear it or select a different one.","elementor"),buttons:{clear:(0,c.__)("Clear","elementor"),select:(0,c.__)("Select variable","elementor")}},Nt=({onClose:e,onClear:t,triggerSelect:n})=>a.createElement(s.ClickAwayListener,{onClickAway:e},a.createElement(s.Alert,{variant:"standard",severity:"warning",onClose:e,action:a.createElement(a.Fragment,null,t&&a.createElement(s.AlertAction,{variant:"contained",onClick:t},jt.buttons.clear),n&&a.createElement(s.AlertAction,{variant:"outlined",onClick:n},jt.buttons.select)),sx:{maxWidth:300}},a.createElement(s.AlertTitle,null,jt.title),a.createElement(s.Typography,{variant:"body2",color:"textPrimary"},jt.message)));function Ht(){return Ht=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},Ht.apply(null,arguments)}const $t=({variable:e})=>{const{setValue:t,value:n}=(0,Q.useBoundProp)(),r=(0,a.useRef)(null),o=(0,a.useId)(),l=(0,s.usePopupState)({variant:"popover",popupId:`elementor-variables-list-${o}`}),[i,u]=(0,a.useState)(!1),p=()=>u(!1),d=!!n;return a.createElement(s.Box,{ref:r},i&&a.createElement(s.Backdrop,{open:!0,onClick:p,invisible:!0}),a.createElement(s.Infotip,{color:"warning",placement:"right-start",open:i,disableHoverListener:!0,onClose:p,content:a.createElement(Nt,{onClose:p,onClear:d?()=>{p(),t(null)}:void 0,triggerSelect:()=>{p(),l.setAnchorEl(r.current),l.open()}}),slotProps:{popper:{modifiers:[{name:"offset",options:{offset:[0,24]}}]}}},a.createElement(Ft,{label:e.label,onClick:()=>u(e=>!e),suffix:(0,c.__)("changed","elementor")})),a.createElement(s.Popover,Ht({disableScrollLock:!0,anchorEl:r.current,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{my:1}}},(0,s.bindPopover)(l)),a.createElement(Pt,{selectedVariable:e,closePopover:l.close,propTypeKey:e.type})))},Gt=({onClose:e,onClear:t})=>a.createElement(s.ClickAwayListener,{onClickAway:e},a.createElement(s.Alert,{variant:"standard",severity:"warning",onClose:e,action:a.createElement(a.Fragment,null,t&&a.createElement(s.AlertAction,{variant:"contained",onClick:t},(0,c.__)("Clear","elementor"))),sx:{maxWidth:300}},a.createElement(s.AlertTitle,null,(0,c.__)("This variable is missing","elementor")),a.createElement(s.Typography,{variant:"body2",color:"textPrimary"},(0,c.__)("It may have been deleted. Try clearing this field and select a different value or variable.","elementor")))),Wt=()=>{const{setValue:e}=(0,Q.useBoundProp)(),[t,n]=(0,a.useState)(!1),r=()=>n(!1);return a.createElement(a.Fragment,null,t&&a.createElement(s.Backdrop,{open:!0,onClick:r,invisible:!0}),a.createElement(s.Infotip,{color:"warning",placement:"right-start",open:t,disableHoverListener:!0,onClose:r,content:a.createElement(Gt,{onClose:r,onClear:()=>e(null)}),slotProps:{popper:{modifiers:[{name:"offset",options:{offset:[0,24]}}]}}},a.createElement(Ft,{label:(0,c.__)("Missing variable","elementor"),onClick:()=>n(e=>!e)})))},Kt=()=>{const e=(0,Q.useBoundProp)(),t=e.value??e.placeholder,n=ie(t?.value);if(!n)return a.createElement(Wt,null);const{$$type:r}=t;if(n?.deleted)return a.createElement(Mt,{variable:n,propTypeKey:r});const{isCompatible:o}=j(n.type);return o&&!o(e?.propType,n)?a.createElement($t,{variable:n}):a.createElement(Dt,{variable:n,propTypeKey:r})},qt=()=>{const{propType:e,path:t}=(0,Q.useBoundProp)(),n=Xt(e);return{visible:Boolean(n),icon:i.ColorFilterIcon,title:(0,c.__)("Variables","elementor"),content:({close:e})=>n?(Jt(t,n.variableType),a.createElement(Pt,{closePopover:e,propTypeKey:n.propTypeUtil.key})):null}},Xt=e=>{if("union"===e.kind)for(const t of Object.keys(e.prop_types)){const e=j(t);if(e)return e}},Jt=(e,t)=>{p({varType:t,controlPath:e.join("."),action:"open"})},Yt="elementor://global-variables",Qt=(e,t)=>{[t,e].forEach(e=>{const{resource:t,sendResourceUpdated:a}=e,n=()=>{a({uri:Yt})};t("global-variables",Yt,{description:"Global variables available (v4)"},async()=>{const e=await(async()=>{const e={};return Object.entries(U.variables()).forEach(([t,a])=>{a.deleted||(e[t]={...a,version:"v4"})}),e})();return{contents:[{uri:Yt,mimeType:"application/json",text:JSON.stringify(e)}]}}),window.addEventListener(A,n),(0,l.__privateListenTo)((0,l.commandEndEvent)("document/save/update"),n)})},Zt=e=>{const{addTool:t}=e;t({name:"manage-global-variable",schema:{action:C.z.enum(["create","update","delete"]).describe("Operation to perform"),id:C.z.string().optional().describe("Variable id (required for update/delete). Get from list-global-variables."),type:C.z.string().optional().describe('Variable type: "global-color-variable" or "global-font-variable" (required for create)'),label:C.z.string().optional().describe("Variable label (required for create/update)"),value:C.z.string().optional().describe("The variable value (required for create/update). Provide a plain CSS value matching the variable type (font: family name; color: CSS color; size: value with unit). Never JSON.")},outputSchema:{status:C.z.enum(["ok"]).describe("Operation status"),message:C.z.string().optional().describe("Error details if status is error")},modelPreferences:{intelligencePriority:.75,speedPriority:.75},requiredResources:[{uri:Yt,description:"Global variables"}],description:'Create, update, or delete V4 global variables (distinct from legacy "globals").\n- Values: any valid CSS value, inserted as-is (1:1 with `--css-var: VALUE`). Do NOT pass JSON or legacy-globals object structures.\n- Names: lowercase, dash-separated (e.g. "Headline Primary" → "headline-primary").\n- Update: when renaming, keep the existing value; when updating value, keep the exact label.\n- Delete: destructive — confirm with user first.',handler:async e=>{const t=(a=U,{create({type:e,label:t,value:n}){if(!e||!t||!n)throw new Error("Create requires type, label, and value");const r=g(t);if(r)throw new Error(r);return a.create({type:e,label:t,value:n})},update({id:e,label:t,value:n}){if(!e||!t||!n)throw new Error("Update requires id, label, and value");const r=g(t);if(r)throw new Error(r);return a.update(e,{label:t,value:n})},delete({id:e}){if(!e)throw new Error("delete requires id");return a.delete(e)}});var a;const n=t[e.action];if(n)return await n(e),{status:"ok"};throw new Error(`Unknown action ${e.action}`)},isDestructive:!0})},ea=({value:e,onChange:t,onValidationChange:n})=>{const[r,o]=(0,a.useState)(e),[l,i]=(0,a.useState)(""),c=(0,a.useRef)(null),u=lt()??c.current;return a.createElement(s.UnstableColorField,{id:"color-variable-field",size:"tiny",fullWidth:!0,value:r,onChange:e=>{o(e);const a=h(e);i(a),n?.(a),t(a?"":e)},error:l||void 0,slotProps:{colorPicker:{anchorEl:u,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:-10},slotProps:{colorIndicator:{size:"inherit",sx:{borderRadius:.5}}}}}})};function ta(){return ta=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},ta.apply(null,arguments)}const aa=({value:e,onChange:t,onValidationChange:n})=>{const[r,l]=(0,a.useState)(e),u=(0,a.useRef)(null),p=lt()??u.current,d=(0,s.usePopupState)({variant:"popover"}),m=(0,Q.useFontFamilies)(),b=(0,o.useSectionWidth)(),v=(0,a.useMemo)(()=>m.map(({label:e,fonts:t})=>({label:e,items:t})),[m]),g=(0,a.useId)();return a.createElement(a.Fragment,null,a.createElement(s.UnstableTag,ta({id:g,variant:"outlined",label:r,endIcon:a.createElement(i.ChevronDownIcon,{fontSize:"tiny"})},(0,s.bindTrigger)(d),{fullWidth:!0})),a.createElement(s.Popover,ta({disablePortal:!0,disableScrollLock:!0,anchorEl:p,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:-28}},(0,s.bindPopover)(d)),a.createElement(Q.ItemSelector,{id:"font-family-variables-selector",itemsList:v,selectedItem:r,onItemChange:e=>{(e=>{l(e);const a=h(e);n?.(a),t(a?"":e)})(e),d.close()},onClose:d.close,sectionWidth:b,title:(0,c.__)("Font family","elementor"),itemStyle:e=>({fontFamily:e.value}),onDebounce:Q.enqueueFont,icon:i.TextIcon})))},na=(0,_.createPropUtils)("global-size-variable",C.z.string()),ra=(0,E.createTransformer)(e=>null);function oa(){M({key:w.key,valueField:ea,icon:i.BrushIcon,propTypeUtil:w,fallbackPropTypeUtil:_.colorPropTypeUtil,variableType:"color",startIcon:({value:e})=>a.createElement(f,{size:"inherit",component:"span",value:e}),defaultValue:"#ffffff",menuActionsFactory:({variable:e,variableId:t,handlers:a})=>{const n=[];return e.sync_to_v3?n.push({name:(0,c.__)("Stop syncing to Global Colors","elementor"),icon:i.RefreshOffIcon,color:"text.primary",onClick:()=>a.onStopSync(t)}):n.push({name:(0,c.__)("Sync to Global Colors","elementor"),icon:i.RefreshIcon,color:"text.primary",onClick:()=>a.onStartSync(t)}),n}}),M({key:O.key,valueField:aa,icon:i.TextIcon,propTypeUtil:O,fallbackPropTypeUtil:_.stringPropTypeUtil,variableType:"font",defaultValue:"Roboto"});const e={isActive:!1,icon:i.ExpandDiagonalIcon,propTypeUtil:na,fallbackPropTypeUtil:_.sizePropTypeUtil,styleTransformer:ra,variableType:"size",selectionFilter:()=>[],emptyState:a.createElement(o.CtaButton,{size:"small",href:"https://go.elementor.com/go-pro-panel-size-variable/",onClick:()=>(0,Q.trackUpgradePromotionClick)({target_name:"variables_popover",location_l1:"variables_list"})})};M({...e,key:na.key,defaultValue:"0px"}),M({...e,key:"global-custom-size-variable"})}const la=":root";function ia(){const e=(0,l.__privateUseListenTo)((0,l.commandEndEvent)("editor/documents/attach-preview"),()=>(0,l.getCanvasIframeDocument)()?.head),t=function(){const[e,t]=(0,a.useState)({});return(0,a.useEffect)(()=>{const e=L.subscribe(t);return()=>{e()}},[]),e}(),n=Object.keys(t).length>0;if(!e||!n)return null;const r=(o=t,Object.entries(o).map(([e,t])=>function(e,t){return`--${t?.deleted?e:t.label}:${t.value};`}(e,t)).join(""));var o;const i=`${la}{${r}}`;return a.createElement(s.Portal,{container:e},a.createElement("style",{"data-e-style-id":"e-variables",key:i},i))}const sa=(0,_.createPropUtils)("global-custom-size-variable",C.z.string());function ca(e){if(na.isValid(e)||sa.isValid(e)){const t=se(e?.value);return t?.value}if(_.sizePropTypeUtil.isValid(e)){const{size:t,unit:a}=e.value;return"custom"!==a?`${t??0}${a??"px"}`:t||"fx"}return""}const ua=e=>{const t=e?.value?.color?.value;return se(t||"")},pa=({value:e})=>{const t=ua(e);return a.createElement(f,{component:"span",size:"inherit",value:t?.value})},da=({value:e})=>{const t=ua(e);return a.createElement(s.Box,{component:"span"},t?.label)},ma=({value:e})=>{const t=ua(e);return a.createElement(f,{component:"span",size:"inherit",value:t?.value})},ba=({value:e})=>{const{args:t}=_.cssFilterFunctionPropUtil.extract(e)||{},{color:n}=_.dropShadowFilterPropTypeUtil.extract(t)||{},r=se(n?.value||"");return a.createElement(f,{component:"span",size:"inherit",value:r?.value})},va=({value:e})=>{const t=_.cssFilterFunctionPropUtil.extract(e);if(_.dropShadowFilterPropTypeUtil.isValid(t?.args))return null;const n=t?.args,r=t?.func?.value??"",o=ca(n?.value?.size);return a.createElement(a.Fragment,null,a.createElement(s.Box,{component:"span",style:{textTransform:"capitalize"}},`${r}: `),a.createElement(s.Box,{component:"span"},o))},ga=({value:e})=>{const{args:t}=_.cssFilterFunctionPropUtil.extract(e)||{},{xAxis:n,yAxis:r,blur:o}=_.dropShadowFilterPropTypeUtil.extract(t)||{},l=[];for(const e of[n,r,o]){const t=ca(e);t&&l.push(t)}return a.createElement(s.Box,{component:"span"},(0,c.__)("Drop shadow:","elementor")," ",l.join(" "))},ya=({value:e})=>{const{position:t,hOffset:n,vOffset:r,blur:o,spread:l}=_.shadowPropTypeUtil.extract(e)||{},i=[];for(const e of[n,r,o,l]){const t=ca(e);t&&i.push(t)}const c=t?.value||"outset";return a.createElement(s.Box,{component:"span",style:{textTransform:"capitalize"}},c,": ",i.join(" "))},ha=({value:e})=>{const t=[];if(_.moveTransformPropTypeUtil.isValid(e)){t.push((0,c.__)("Move:","elementor"));const{x:a,y:n,z:r}=_.moveTransformPropTypeUtil.extract(e)||{};for(const e of[a,n,r]){const a=ca(e);a&&t.push(a)}}return a.createElement(s.Box,{component:"span"},t.join(" "))},Ea=({value:e})=>{let t="";const n=se(e?.value?.size?.value||"");if(n&&_.selectionSizePropTypeUtil.isValid(e)){const a=e.value?.selection?.value?.key?.value;a&&(t+=`${a}: `),t+=n?.value}return a.createElement(s.Box,{component:"span"},t)};function fa(e){return!!na.isValid(e)||!!sa.isValid(e)}function _a(e){return!!w.isValid(e)}const{registerPopoverAction:Ca}=qe.controlActionsMenu;function wa(){oa(),(0,Q.injectIntoRepeaterItemIcon)({id:"background-color-variables-icon",component:pa,condition:({value:e})=>_a(_.backgroundColorOverlayPropTypeUtil.extract(e)?.color)}),(0,Q.injectIntoRepeaterItemLabel)({id:"background-color-variables-label",component:da,condition:({value:e})=>_a(_.backgroundColorOverlayPropTypeUtil.extract(e)?.color)}),(0,Q.injectIntoRepeaterItemIcon)({id:"box-shadow-color-variables-icon",component:ma,condition:({value:e})=>{const{color:t}=_.shadowPropTypeUtil.extract(e)||{};return _a(t)}}),(0,Q.injectIntoRepeaterItemLabel)({id:"color-variables-box-shadow-label",component:ya,condition:({value:e})=>{const{hOffset:t,vOffset:a,blur:n,spread:r}=_.shadowPropTypeUtil.extract(e)||{};return fa(t)||fa(a)||fa(n)||fa(r)}}),(0,Q.injectIntoRepeaterItemLabel)({id:"transition-size-variables-label",component:Ea,condition:({value:e})=>fa(_.selectionSizePropTypeUtil.extract(e)?.size)}),(0,Q.injectIntoRepeaterItemLabel)({id:"transform-size-variables-label",component:ha,condition:({value:e})=>{if(_.moveTransformPropTypeUtil.isValid(e)){const{x:t,y:a,z:n}=_.moveTransformPropTypeUtil.extract(e)||{};return fa(t)||fa(a)||fa(n)}return!1}}),(0,Q.injectIntoRepeaterItemIcon)({id:"filters-color-variables-icon",component:ba,condition:({value:e})=>{if(!_.cssFilterFunctionPropUtil.isValid(e))return!1;const t=_.cssFilterFunctionPropUtil.extract(e)?.args;return!!_.dropShadowFilterPropTypeUtil.isValid(t)&&_a(_.dropShadowFilterPropTypeUtil.extract(t)?.color)}}),(0,Q.injectIntoRepeaterItemLabel)({id:"filters-drop-shadow-size-variables-label",component:ga,condition:({value:e})=>{if(!_.cssFilterFunctionPropUtil.isValid(e))return!1;const t=_.cssFilterFunctionPropUtil.extract(e)?.args;if(_.dropShadowFilterPropTypeUtil.isValid(t)){const{xAxis:e,yAxis:a,blur:n}=_.dropShadowFilterPropTypeUtil.extract(t)||{};return fa(e)||fa(a)||fa(n)}return!1}}),(0,Q.injectIntoRepeaterItemLabel)({id:"filters-size-variables-label",component:va,condition:({value:e})=>{if(!_.cssFilterFunctionPropUtil.isValid(e))return!1;const t=_.cssFilterFunctionPropUtil.extract(e)?.args;return fa(t?.value?.size)}}),(0,Q.registerControlReplacement)({component:Kt,condition:({value:e,placeholder:t})=>!!Ta(e)||!e&&Ta(t)}),Ca({id:"variables",priority:40,useProps:qt}),U.init().then(()=>{var e,t;e=(0,Ke.getMCPByDomain)("variables",{instructions:"Everything related to V4 ( Atomic ) variables.\n# Global variables\n- Create/update/delete global variables\n- Get list of global variables\n- Get details of a global variable\n"}),t=(0,Ke.getMCPByDomain)("canvas"),Zt(e),Qt(e,t)}),(0,We.injectIntoTop)({id:"canvas-style-variables-render",component:ia}),(0,We.injectIntoLogic)({id:"variables-import-listener",component:Xe}),(0,l.isExperimentActive)("e_editor_design_system_panel")||((0,We.injectIntoLogic)({id:"variables-open-panel-from-url",component:at}),(0,We.injectIntoLogic)({id:"variables-open-panel-from-event",component:Qe}),(0,r.__registerPanel)(Me))}function Ta(e){return!!(0,_.isTransformable)(e)&&H(e.$$type)}const Sa=e=>t=>{const a=String(t);return{$$type:e,value:U.variables()[a]?a:U.findIdByLabel(a)}},ka={globalVariablesLLMResolvers:{"global-color-variable":Sa("global-color-variable"),"global-font-variable":Sa("global-font-variable"),"global-size-variable":Sa("global-size-variable")}};(window.elementorV2=window.elementorV2||{}).editorVariables=t}(),window.elementorV2.editorVariables?.init?.(); | |