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