PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.2
Elementor Website Builder – more than just a page builder v4.3.2
4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 All 456 releases
← All changes | assets/js/packages/editor-interactions/editor-interactions.min.js +68 -1 4.2.0-dev2 → 4.3.2 View file →
@@ -1 +1,68 @@
1 -!function(){"use strict";var e={2020:function(e){e.exports=window.elementorV2.editorProps},5527:function(e){e.exports=window.elementorV2.editorV1Adapters},22444:function(e){e.exports=window.elementorV2.utils},24413:function(e){e.exports=window.elementorV2.icons},27723:function(e){e.exports=window.wp.i18n},33176:function(e){e.exports=window.elementorV2.events},46514:function(e,t,n){var r,o=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,c=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,__copyProps=(e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of l(t))s.call(e,o)||o===n||i(e,o,{get:()=>t[o],enumerable:!(r=a(t,o))||r.enumerable});return e},__toESM=(e,t,n)=>(n=null!=e?o(c(e)):{},__copyProps(!t&&e&&e.__esModule?n:i(n,"default",{value:e,enumerable:!0}),e)),m={};((e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})})(m,{BASE_EASINGS:()=>rt,BASE_EFFECTS:()=>ct,BASE_REPLAY:()=>$t,BASE_TRIGGERS:()=>Ut,DEFAULT_VALUES:()=>ue,EASING_OPTIONS:()=>nt,EFFECT_OPTIONS:()=>lt,ELEMENTS_INTERACTIONS_PROVIDER_KEY_PREFIX:()=>Oe,EmptyState:()=>EmptyState,InteractionsTab:()=>InteractionsTab,REPEAT_OPTIONS:()=>Ct,REPEAT_TOOLTIPS:()=>Tt,REPLAY_OPTIONS:()=>Pt,SCROLL_INTERACTION_EVENT:()=>J,TRIGGER_OPTIONS:()=>Bt,buildDisplayLabel:()=>buildDisplayLabel,createAnimationPreset:()=>createAnimationPreset,createBoolean:()=>createBoolean,createConfig:()=>createConfig,createDefaultInteractionItem:()=>createDefaultInteractionItem,createDefaultInteractions:()=>createDefaultInteractions,createExcludedBreakpoints:()=>createExcludedBreakpoints,createInteractionBreakpoints:()=>createInteractionBreakpoints,createInteractionItem:()=>createInteractionItem,createInteractionsProvider:()=>createInteractionsProvider,createNumber:()=>createNumber,createString:()=>createString,createTimingConfig:()=>createTimingConfig,dispatchScrollInteraction:()=>dispatchScrollInteraction,extractBoolean:()=>extractBoolean,extractExcludedBreakpoints:()=>extractExcludedBreakpoints,extractScrollOverlayParams:()=>extractScrollOverlayParams,extractSize:()=>extractSize,extractString:()=>extractString,formatSizeValue:()=>formatSizeValue,generateTempInteractionId:()=>generateTempInteractionId,getInteractionsConfig:()=>getInteractionsConfig,init:()=>init,interactionsRepository:()=>Te,isTempId:()=>isTempId,parseSizeValue:()=>parseSizeValue,registerInteractionsControl:()=>registerInteractionsControl,resolveDirection:()=>resolveDirection,syncGridOverlay:()=>syncGridOverlay,useElementInteractions:()=>useElementInteractions}),e.exports=(r=m,__copyProps(i({},"__esModule",{value:!0}),r));var u=__toESM(n(97557)),d=n(24413),p=n(79513),f=n(27723),EmptyState=({onCreateInteraction:e})=>u.createElement(p.Stack,{alignItems:"center",justifyContent:"center",height:"100%",color:"text.secondary",sx:{p:2.5,pt:8,pb:5.5},gap:1.5},u.createElement(d.SwipeIcon,{fontSize:"large"}),u.createElement(p.Typography,{align:"center",variant:"subtitle2"},(0,f.__)("Animate elements with Interactions","elementor")),u.createElement(p.Typography,{align:"center",variant:"caption",maxWidth:"170px"},(0,f.__)("Add entrance animations and effects triggered by user interactions such as page load or scroll.","elementor")),u.createElement(p.Button,{variant:"outlined",color:"secondary",size:"small",sx:{mt:1},onClick:e},(0,f.__)("Create an interaction","elementor"))),g=__toESM(n(97557)),v=n(97557),y=n(78187),h=n(79513),I=__toESM(n(97557)),b=n(97557),E=n(70975),_=n(5527),C=n(27723),T=n(97557),w=n(70975),x=n(5527),k=new Map;function registerInteractionsControl({type:e,component:t,options:n}){k.set(e,{type:e,component:t,options:n})}var O=n(2020),S=["s","ms"],z="ms",P=/^(?:(-?\d*\.?\d+)([a-z%]+)|([a-z%]+))$/i,parseSizeValue=(e,t,n,r)=>{if("number"==typeof e)return{size:e,unit:r};const o=tryParse(e,t,r);if(o)return o;if(n){const e=tryParse(n,t,r);if(e)return e}return createSizeValue(null,r)},tryParse=(e,t,n)=>{if("number"==typeof e)return createSizeValue(e,n);const r=e&&e.match(P);if(!r)return e?{size:Number(e),unit:n}:null;const o=r[1]?parseFloat(r[1]):null,i=r[2]||r[3];return t.includes(i)?createSizeValue(o,i):null},formatSizeValue=({size:e,unit:t})=>`${e??""}${t}`,createSizeValue=(e,t)=>({size:e,unit:t}),$="deg",toSizePropValue=(e,t="%")=>({$$type:"size",value:{size:e,unit:t}}),toNumberPropValue=e=>({$$type:"number",value:e}),toDimensionalSizePropValue=(e,t,n,r)=>({$$type:e,value:{x:toSizePropValue(t.x??n.x,r),y:toSizePropValue(t.y??n.y,r),z:toSizePropValue(t.z??n.z,r)}}),toKeyframeStopSettingsPropValue=e=>{const t={};if(void 0!==e.opacity){const n=e.opacity<=1?Math.round(100*e.opacity):e.opacity;t.opacity=toSizePropValue(n)}return void 0!==e.scale&&(t.scale=((e,t,n)=>({$$type:e,value:{x:toNumberPropValue(t.x??n.x),y:toNumberPropValue(t.y??n.y),z:toNumberPropValue(t.z??n.z)}}))("transform-scale",e.scale,{x:1,y:1,z:1})),void 0!==e.rotate&&(t.rotate=toDimensionalSizePropValue("transform-rotate",e.rotate,{x:0,y:0,z:0},$)),void 0!==e.move&&(t.move=toDimensionalSizePropValue("transform-move",e.move,{x:0,y:0,z:0},"px")),void 0!==e.skew&&(t.skew=(e=>({$$type:"transform-skew",value:{x:toSizePropValue(e.x??0,$),y:toSizePropValue(e.y??0,$)}}))(e.skew)),{$$type:"keyframe-stop-settings",value:t}},toKeyframeStopPropValue=e=>{return"object"==typeof(t=e)&&null!==t&&"stop"in t&&"value"in t&&!("$$type"in t)?{$$type:"keyframe-stop",value:{stop:toSizePropValue(e.stop),settings:toKeyframeStopSettingsPropValue(e.value)}}:e;var t},toCustomEffectPropValue=e=>{var t,n;if(void 0!==e)return"object"==typeof(n=e)&&null!==n&&"keyframes"in n&&Array.isArray(n.keyframes)&&!("$$type"in n)?{$$type:"custom-effect",value:{keyframes:(t=e.keyframes,{$$type:"keyframes",value:t.map(toKeyframeStopPropValue)})}}:e};function getInteractionsConfig(){return window.ElementorInteractionsConfig??{}}var D="temp-",A=/^temp-[a-z0-9]+$/i;function generateTempInteractionId(){return`${D}${Math.random().toString(36).substring(2,11)}`}function isTempId(e){return!!e&&A.test(e)}var createString=e=>({$$type:"string",value:e}),createNumber=e=>({$$type:"number",value:e}),createTimingConfig=(e,t)=>({$$type:"timing-config",value:{duration:O.sizePropTypeUtil.create(parseSizeValue(e,S,void 0,z)),delay:O.sizePropTypeUtil.create(parseSizeValue(t,S,void 0,z))}}),createBoolean=e=>({$$type:"boolean",value:e}),createConfig=({replay:e,easing:t="easeIn",relativeTo:n="viewport",repeat:r="",times:o=1,start:i=85,end:a=15})=>({$$type:"config",value:{replay:createBoolean(e),easing:createString(t),relativeTo:createString(n),repeat:createString(r),times:createNumber(o),start:createSize(i,"%"),end:createSize(a,"%")}}),createSize=(e,t,n)=>{if(e)return O.sizePropTypeUtil.create(parseSizeValue(e,["%"],n,t))},extractBoolean=(e,t=!1)=>e?.value??t,createExcludedBreakpoints=e=>({$$type:"excluded-breakpoints",value:e.map(createString)}),createInteractionBreakpoints=e=>({$$type:"interaction-breakpoints",value:{excluded:createExcludedBreakpoints(e)}}),extractExcludedBreakpoints=e=>e?.value.excluded.value.map(e=>e.value)??[],createAnimationPreset=({effect:e,type:t,direction:n,duration:r,delay:o,replay:i=!1,easing:a="easeIn",relativeTo:l,repeat:c,times:s,start:m,end:u,customEffects:d})=>{const p=toCustomEffectPropValue(d);return{$$type:"animation-preset-props",value:{effect:createString(e),...void 0!==p&&{custom_effect:p},type:createString(t),direction:createString(n??""),timing_config:createTimingConfig(r,o),config:createConfig({replay:i,easing:a,relativeTo:l,repeat:c,times:s,start:m,end:u})}}},createInteractionItem=({trigger:e,effect:t,type:n,direction:r,duration:o,delay:i,interactionId:a,replay:l=!1,easing:c="easeIn",relativeTo:s,repeat:m,times:u,start:d,end:p,excludedBreakpoints:f,customEffects:g})=>({$$type:"interaction-item",value:{...a&&{interaction_id:createString(a)},trigger:createString(e??""),animation:createAnimationPreset({effect:t??"",type:n??"",direction:r,duration:o??0,delay:i??0,replay:l,easing:c,relativeTo:s,repeat:m,times:u,start:d,end:p,customEffects:g}),...f&&f.length>0&&{breakpoints:createInteractionBreakpoints(f)}}}),createDefaultInteractionItem=()=>{const{constants:e}=getInteractionsConfig();return createInteractionItem({trigger:"load",effect:"fade",type:"in",duration:e.defaultDuration,delay:e.defaultDelay,replay:!1,easing:e.defaultEasing,interactionId:generateTempInteractionId()})},createDefaultInteractions=()=>({version:1,items:[createDefaultInteractionItem()]}),extractString=(e,t="")=>e?.value??t,extractSize=(e,t)=>e?.value?formatSizeValue(e.value):t,R={load:"On page load",scrollIn:"Scroll into view",scrollOut:"Scroll out of view",scrollOn:"While scrolling"},capitalize=e=>e.charAt(0).toUpperCase()+e.slice(1),buildDisplayLabel=e=>{const t=extractString(e.trigger),n=extractString(e.animation.value.effect),r=extractString(e.animation.value.type);return`${R[t]||capitalize(t)}: ${capitalize(n)} ${"custom"===n?"":capitalize(r)}`};function isSupportedInteractionItem(e){const t=e.value;if(!0===extractBoolean(t.animation.value.config?.value.replay))return hasSupport("replay","yes");return[["trigger",extractString(t.trigger)],["easing",extractString(t.animation.value.config?.value.easing)],["effect",extractString(t.animation.value.effect)]].every(([e,t])=>""===t||null===t||hasSupport(e,t))}function hasSupport(e,t){const n=function getInteractionsControlOptions(e){return k.get(e)?.options??[]}(e);return 1>n.length||n.includes(t)}var filterInteractions=e=>e.filter(e=>isSupportedInteractionItem(e)),useElementInteractions=e=>{const[t,n]=(0,T.useState)(()=>{const t=(0,w.getElementInteractions)(e),n=filterInteractions(t?.items??[]);return{version:t?.version??1,items:n}});return(0,x.__privateUseListenTo)((0,x.windowEvent)("elementor/element/update_interactions"),()=>{const t=(0,w.getElementInteractions)(e),r=filterInteractions(t?.items??[]);n({version:t?.version??1,items:r})},[e]),t},B=(0,b.createContext)(null),U={version:1,items:[]},InteractionsProvider=({children:e,elementId:t})=>{const n=useElementInteractions(t);(0,b.useEffect)(()=>{window.dispatchEvent(new CustomEvent("elementor/element/update_interactions"))},[]);const r=n??U,o=(0,b.useMemo)(()=>(0,_.undoable)({do:({interactions:e})=>{const n=(0,E.getElementInteractions)(t);return(0,E.updateElementInteractions)({elementId:t,interactions:e}),n},undo:(e,n)=>{(0,E.updateElementInteractions)({elementId:t,interactions:n?.items?.length?n:void 0})}},{title:(0,E.getElementLabel)(t),subtitle:({operationType:e})=>"apply"===e?(0,C.__)("Interaction Applied","elementor"):(0,C.__)("Interaction Deleted","elementor")}),[t]),i={elementId:t,interactions:r,setInteractions:e=>{const n=e&&0===e.items?.length?void 0:e,i=r.items?.length??0,a=n?.items?.length??0;a>i?o({interactions:n,operationType:"apply"}):a<i?o({interactions:n,operationType:"delete"}):(0,E.updateElementInteractions)({elementId:t,interactions:n})},playInteractions:e=>{(0,E.playElementInteractions)(t,e)}};return I.createElement(B.Provider,{value:i},e)},useInteractionsContext=()=>{const e=(0,b.useContext)(B);if(!e)throw new Error("useInteractionsContext must be used within InteractionsProvider");return e},V=__toESM(n(97557)),j=n(97557),G=(0,j.createContext)(void 0),PopupStateProvider=({children:e})=>{const[t,n]=(0,j.useState)(!1),r=(0,j.useCallback)(()=>{n(!0)},[]),o=(0,j.useCallback)(()=>{n(!1)},[]);return V.createElement(G.Provider,{value:{openByDefault:t,triggerDefaultOpen:r,resetDefaultOpen:o}},e)},L=__toESM(n(97557)),M=n(97557),F=n(77394),N=n(24413),q=n(79513),W=n(27723),K=__toESM(n(97557)),Y=n(97557),H=(0,Y.createContext)(null);function InteractionItemContextProvider({value:e,children:t}){return K.createElement(H.Provider,{value:e},t)}var J="elementor/interactions/scroll-change";function dispatchScrollInteraction(e){window.dispatchEvent(new CustomEvent(J,{detail:e}))}function extractScrollOverlayParams(e,t){return{trigger:extractString(e.trigger,t.trigger),start:extractSize(e.animation.value.config?.value.start,t.start),end:extractSize(e.animation.value.config?.value.end,t.end),relativeTo:extractString(e.animation.value.config?.value.relativeTo,t.relativeTo)}}function syncGridOverlay(e,t,n,r){dispatchScrollInteraction("scrollOn"===e?{start:t,end:n,relativeTo:r}:null)}var X=n(70975),Q=n(33176),Z={load:"On page load",scrollIn:"Scroll into view",scrollOut:"Scroll out of view",scrollOn:"While scrolling",hover:"Hover",click:"Click"},capitalize2=e=>e.charAt(0).toUpperCase()+e.slice(1),ee=__toESM(n(97557)),te=n(97557),ne=n(77394),re=n(79513),oe=n(27723),resolveDirection=(e,t,n,r,o)=>"slide"!==t||n?"slide"===o&&e?n||"top":e?n:r:"top",ie=__toESM(n(97557)),ae=n(97557),le=n(77394);function TimeFrameIndicator({value:e,onChange:t,defaultValue:n}){const r=parseSizeValue(e,S,n,z),o=(0,ae.useCallback)(e=>{t(formatSizeValue(e))},[t]);return ie.createElement(le.SizeComponent,{units:S,value:r,setValue:o,onBlur:e=>{e.target.value||o(parseSizeValue(n,S,void 0,z))},InputProps:{inputProps:{min:0}}})}var ce=__toESM(n(97557)),se=n(77394),me=n(79513),Field=({label:e,children:t})=>ce.createElement(me.Grid,{item:!0,xs:12,"aria-label":`${e} control`},ce.createElement(se.PopoverGridContainer,null,ce.createElement(me.Grid,{item:!0,xs:6},ce.createElement(se.ControlFormLabel,null,e)),ce.createElement(me.Grid,{item:!0,xs:6},t))),ue={trigger:"load",effect:"fade",type:"in",direction:"",duration:600,delay:0,replay:!1,easing:"easeIn",relativeTo:"viewport",repeat:"",times:1,start:85,end:15},de=["load","scrollOn","hover","click"],controlVisibilityConfig_replay=e=>!de.includes(e.trigger),controlVisibilityConfig_custom=e=>"custom"===e.effect,controlVisibilityConfig_effectType=e=>"custom"!==e.effect,controlVisibilityConfig_direction=e=>"custom"!==e.effect,controlVisibilityConfig_relativeTo=e=>"scrollOn"===e.trigger,controlVisibilityConfig_start=e=>"scrollOn"===e.trigger,controlVisibilityConfig_end=e=>"scrollOn"===e.trigger,controlVisibilityConfig_repeat=e=>"scrollOn"!==e.trigger,controlVisibilityConfig_times=e=>"scrollOn"!==e.trigger&&"times"===e.repeat,controlVisibilityConfig_duration=e=>!("scrollOn"===e.trigger),controlVisibilityConfig_delay=e=>!("scrollOn"===e.trigger);function normalizeTimesValue(e,t){const n=Number(e);return Number.isFinite(n)?Math.max(1,Math.floor(n)):t}function useControlComponent(e,t=!0){return(0,te.useMemo)(()=>t?function getInteractionsControl(e){return k.get(e)}(e)?.component??null:null,[e,t])}var InteractionDetails=({interaction:e,onChange:t,onPlayInteraction:n})=>{const r=extractString(e.trigger,ue.trigger),o=extractString(e.animation.value.effect,ue.effect),i=e.animation.value.custom_effect,a=extractString(e.animation.value.type,ue.type),l=extractString(e.animation.value.direction,ue.direction),c=extractSize(e.animation.value.timing_config.value.duration),s=extractSize(e.animation.value.timing_config.value.delay),m=extractBoolean(e.animation.value.config?.value.replay,ue.replay),u=extractString(e.animation.value.config?.value.easing,ue.easing),d=extractString(e.animation.value.config?.value.relativeTo,ue.relativeTo),p=e.animation.value.config?.value,f=extractString(p?.repeat,ue.repeat),g=normalizeTimesValue(p?.times?.value,ue.times),v=extractSize(e.animation.value.config?.value.start,ue.start),y=extractSize(e.animation.value.config?.value.end,ue.end),h={trigger:r,effect:o,type:a,direction:l,duration:c,delay:s,easing:u,replay:m,relativeTo:d,repeat:f,times:g,start:v,end:y,customEffects:i},I=useControlComponent("trigger",!0),b=useControlComponent("effect"),E=useControlComponent("replay",controlVisibilityConfig_replay(h)),_=useControlComponent("relativeTo",controlVisibilityConfig_relativeTo(h)),C=useControlComponent("start",controlVisibilityConfig_start(h)),T=useControlComponent("end",controlVisibilityConfig_end(h)),w=useControlComponent("customEffects",controlVisibilityConfig_custom(h)),x=useControlComponent("effectType",controlVisibilityConfig_effectType(h)),k=useControlComponent("direction",controlVisibilityConfig_direction(h)),O=useControlComponent("repeat",controlVisibilityConfig_repeat(h)),S=useControlComponent("times",controlVisibilityConfig_times(h)),z=useControlComponent("easing"),updateInteraction=p=>{const h=resolveDirection("direction"in p,p.effect,p.direction,l,o),I={...e,interaction_id:e.interaction_id,trigger:createString(p.trigger??r),animation:createAnimationPreset({effect:p.effect??o,type:p.type??a,direction:h,duration:p.duration??c,delay:p.delay??s,replay:p.replay??m,easing:p.easing??u,relativeTo:p.relativeTo??d,repeat:p.repeat??f,times:p.times??g,start:p.start??v,end:p.end??y,customEffects:p.customEffects??i})};t(I),syncGridOverlay(p.trigger??r,p.start??v,p.end??y,p.relativeTo??d);const b=extractString(I.interaction_id);setTimeout(()=>{n(b)},0)};return ee.createElement(ne.PopoverContent,{p:1.5},ee.createElement(re.Grid,{container:!0,spacing:1.5},I&&ee.createElement(Field,{label:(0,oe.__)("Trigger","elementor")},ee.createElement(I,{value:r,onChange:e=>updateInteraction({trigger:e})})),E&&ee.createElement(Field,{label:(0,oe.__)("Replay","elementor")},ee.createElement(E,{value:m,onChange:e=>updateInteraction({replay:e}),disabled:!0}))),ee.createElement(re.Divider,null),ee.createElement(re.Grid,{container:!0,spacing:1.5},b&&ee.createElement(Field,{label:(0,oe.__)("Effect","elementor")},ee.createElement(b,{value:o,onChange:e=>updateInteraction({effect:e})})),w&&ee.createElement(Field,{label:(0,oe.__)("Custom Effect","elementor")},ee.createElement(w,{value:i,onChange:e=>updateInteraction({customEffects:e})})),x&&ee.createElement(Field,{label:(0,oe.__)("Type","elementor")},ee.createElement(x,{value:a,onChange:e=>updateInteraction({type:e})})),k&&ee.createElement(Field,{label:(0,oe.__)("Direction","elementor")},ee.createElement(k,{value:l,onChange:e=>updateInteraction({direction:e}),interactionType:a})),O&&ee.createElement(Field,{label:(0,oe.__)("Repeat","elementor")},ee.createElement(O,{value:f,onChange:e=>updateInteraction({repeat:e})})),S&&ee.createElement(Field,{label:(0,oe.__)("Times","elementor")},ee.createElement(S,{value:g,onChange:e=>updateInteraction({times:normalizeTimesValue(e,ue.times)})})),controlVisibilityConfig_duration(h)&&ee.createElement(Field,{label:(0,oe.__)("Duration","elementor")},ee.createElement(TimeFrameIndicator,{value:String(c),onChange:e=>updateInteraction({duration:e}),defaultValue:ue.duration})),controlVisibilityConfig_delay(h)&&ee.createElement(Field,{label:(0,oe.__)("Delay","elementor")},ee.createElement(TimeFrameIndicator,{value:String(s),onChange:e=>updateInteraction({delay:e}),defaultValue:ue.delay}))),controlVisibilityConfig_relativeTo(h)&&_&&ee.createElement(ee.Fragment,null,ee.createElement(re.Divider,null),ee.createElement(re.Grid,{container:!0,spacing:1.5},C&&ee.createElement(Field,{label:(0,oe.__)("Start","elementor")},ee.createElement(C,{value:parseSizeValue(v,["%"]).size?.toString()??"",onChange:e=>updateInteraction({start:e})})),T&&ee.createElement(Field,{label:(0,oe.__)("End","elementor")},ee.createElement(T,{value:parseSizeValue(y,["%"]).size?.toString()??"",onChange:e=>updateInteraction({end:e})})),ee.createElement(Field,{label:(0,oe.__)("Relative To","elementor")},ee.createElement(_,{value:d,onChange:e=>updateInteraction({relativeTo:e})}))),ee.createElement(re.Divider,null)),z&&ee.createElement(re.Grid,{container:!0,spacing:1.5},ee.createElement(Field,{label:(0,oe.__)("Easing","elementor")},ee.createElement(z,{value:u,onChange:e=>{updateInteraction({easing:e})}}))))},pe=__toESM(n(97557)),fe=n(97557),ge=n(79513),ve=n(27723),ye=__toESM(n(97557)),he=n(97557),Ie=n(77394),be=n(74518),Ee=n(79513),_e=n(27723),Ce="tiny",InteractionSettings=({interaction:e,onChange:t})=>{const n=(0,be.useBreakpoints)(),r=(0,he.useMemo)(()=>n.map(e=>({label:e.label,value:String(e.id)})),[n]),[o,i]=(0,he.useState)(()=>{const t=extractExcludedBreakpoints(e.breakpoints).filter(e=>r.some(({value:t})=>t===e));return r.filter(({value:e})=>!t.includes(e))}),a=(0,he.useCallback)((n,o)=>{i(o);const a=o.map(e=>e.value),l=r.filter(e=>!a.includes(e.value)).map(e=>e.value),c={...e,...l.length>0&&{breakpoints:createInteractionBreakpoints(l)}};0===l.length&&delete c.breakpoints,t(c)},[e,r,t]);return ye.createElement(Ie.PopoverContent,{p:1.5},ye.createElement(Ee.Grid,{container:!0,spacing:1.5},ye.createElement(Ee.Grid,{item:!0,xs:12},ye.createElement(Ee.Stack,{direction:"column",gap:1},ye.createElement(Ie.ControlFormLabel,{sx:{width:"100%"}},(0,_e.__)("Trigger on","elementor")),ye.createElement(Ee.Autocomplete,{fullWidth:!0,multiple:!0,value:o,onChange:a,size:Ce,options:r,isOptionEqualToValue:(e,t)=>e.value===t.value,renderInput:e=>ye.createElement(Ee.TextField,{...e}),renderTags:(e,t)=>e.map((e,n)=>{const{key:r,...o}=t({index:n});return ye.createElement(Ee.Chip,{key:r,size:Ce,label:e.label,...o})})})))))},InteractionsListItem=({index:e,value:t})=>{const{getTabsProps:n,getTabProps:r,getTabPanelProps:o}=(0,ge.useTabs)("details"),i=function useInteractionItemContext(){const e=(0,Y.useContext)(H);if(!e)throw new Error("useInteractionItemContext must be used within InteractionItemContextProvider");return e}(),a=(0,fe.useCallback)(t=>{i?.onInteractionChange(e,t)},[i,e]),l=(0,fe.useCallback)(e=>{i?.onPlayInteraction(e)},[i]),c=extractString(t.value.interaction_id);return pe.createElement(pe.Fragment,null,pe.createElement(ge.Tabs,{size:"small",variant:"fullWidth","aria-label":(0,ve.__)("Interaction","elementor"),...n()},pe.createElement(ge.Tab,{label:(0,ve.__)("Details","elementor"),...r("details")}),pe.createElement(ge.Tab,{label:(0,ve.__)("Settings","elementor"),...r("settings")})),pe.createElement(ge.Divider,null),pe.createElement(ge.TabPanel,{sx:{p:0},...o("details")},pe.createElement(InteractionDetails,{key:c,interaction:t.value,onChange:a,onPlayInteraction:l})),pe.createElement(ge.TabPanel,{sx:{p:0},...o("settings")},pe.createElement(InteractionSettings,{key:c,interaction:t.value,onChange:a})))};function InteractionsList(e){const{interactions:t,onSelectInteractions:n,onPlayInteraction:r,triggerCreateOnShowEmpty:o}=e,{elementId:i}=useInteractionsContext(),a=(0,M.useRef)(!1),l=(0,M.useRef)(new Set),c=(0,M.useCallback)(e=>{n(e)},[n]);(0,M.useEffect)(()=>{if(o&&!a.current&&(!t.items||0===t.items?.length)){a.current=!0;const e=createDefaultInteractionItem();l.current.add(extractString(e.value.interaction_id));c({version:1,items:[e]})}},[o,t.items,c]);const s=(0,M.useMemo)(()=>t.items?.length>=5,[t.items?.length]),m=s?L.createElement(q.Alert,{color:"secondary",icon:L.createElement(N.InfoCircleFilledIcon,null),size:"small"},L.createElement(q.AlertTitle,null,(0,W.__)("Interactions","elementor")),L.createElement(q.Box,{component:"span"},(0,W.__)("You've reached the limit of 5 interactions for this element. Please remove an interaction before creating a new one.","elementor"))):void 0,u=(0,M.useCallback)((e,n,r)=>{if(c({...t,items:e}),"add"===r?.action?.type){const e=r.action.payload[0]?.item;e&&l.current.add(extractString(e.value.interaction_id))}},[t,c]),d=(0,M.useCallback)((e,n)=>{const r=structuredClone(t.items);r[e]={$$type:"interaction-item",value:n},c({...t,items:r})},[t,c]),p=(0,M.useMemo)(()=>({onInteractionChange:d,onPlayInteraction:r}),[d,r]);return L.createElement(InteractionItemContextProvider,{value:p},L.createElement(F.Repeater,{openOnAdd:!0,openItem:o?0:void 0,label:(0,W.__)("Interactions","elementor"),values:t.items,setValues:u,showDuplicate:!1,showToggle:!1,isSortable:!1,disableAddItemButton:s,addButtonInfotipContent:m,itemSettings:{initialValues:createDefaultInteractionItem(),Label:({value:e})=>buildDisplayLabel(e.value),Icon:()=>null,Content:InteractionsListItem,onPopoverOpen:e=>{const{trigger:t,start:n,end:r,relativeTo:o}=extractScrollOverlayParams(e.value,ue);syncGridOverlay(t,n,r,o)},onPopoverClose:e=>{dispatchScrollInteraction(null);const t=extractString(e.value.interaction_id);l.current.has(t)&&(l.current.delete(t),((e,t)=>{const{dispatchEvent:n,config:r}=(0,Q.getMixpanel)();if(!r?.names?.interactions?.created)return;const o=extractString(t.value.trigger),i=extractString(t.value.animation.value.effect),a=extractString(t.value.animation.value.type);n?.(r.names.interactions.created,{app_type:r?.appTypes?.editor,window_name:r?.appTypes?.editor,interaction_type:r?.triggers?.click,target_name:(0,X.getElementLabel)(e),interaction_result:"interaction_created",target_location:r?.locations?.widgetPanel,location_l1:(0,X.getElementLabel)(e),location_l2:"interactions",interaction_description:"interaction_created",interaction_trigger:Z[o]??capitalize2(o),interaction_effect:"custom"===i?capitalize2(i):`${capitalize2(i)} ${capitalize2(a)}`})})(i,e))},actions:e=>L.createElement(q.Tooltip,{key:"preview",placement:"top",title:(0,W.__)("Preview","elementor")},L.createElement(q.IconButton,{"aria-label":(0,W.__)("Play interaction","elementor"),size:"tiny",onClick:()=>r(extractString(e.value.interaction_id))},L.createElement(N.PlayerPlayIcon,{fontSize:"tiny"})))}}))}var InteractionsTab=({elementId:e})=>g.createElement(PopupStateProvider,null,g.createElement(InteractionsTabContent,{elementId:e}));function InteractionsTabContent({elementId:e}){const t=useElementInteractions(e),n=(0,v.useState)(!1),r=t?.items?.length||n[0];return g.createElement(y.SessionStorageProvider,{prefix:e},r?g.createElement(InteractionsProvider,{elementId:e},g.createElement(InteractionsContent,{firstInteractionState:n})):g.createElement(EmptyState,{onCreateInteraction:()=>{n[1](!0)}}))}function InteractionsContent({firstInteractionState:e}){const{interactions:t,setInteractions:n,playInteractions:r}=useInteractionsContext(),o=(0,v.useCallback)(t=>{e[1](!1),n(t||void 0)},[n,e]);return g.createElement(h.Stack,{sx:{m:1,p:1.5},gap:2},g.createElement(InteractionsList,{triggerCreateOnShowEmpty:e[0],interactions:t,onSelectInteractions:o,onPlayInteraction:r}))}var Te=(()=>{const e=[],getProviders=()=>e.slice(0).sort((e,t)=>e.priority>t.priority?-1:1);return{all:()=>getProviders().flatMap(e=>e.actions.all()),register:t=>{e.push(t)},subscribe:t=>{const n=e.map(e=>e.subscribe(t));return()=>{n.forEach(e=>e())}},getProviders:getProviders,getProviderByKey:t=>e.find(e=>{try{return e.getKey()===t}catch{return!1}})}})(),we=10;function createInteractionsProvider({key:e,priority:t=we,subscribe:n=()=>()=>{},actions:r}){return{getKey:"string"==typeof e?()=>e:e,priority:t,subscribe:n,actions:{all:r.all}}}var xe=n(70975),ke=n(5527),Oe="document-elements-interactions-",Se=createInteractionsProvider({key:()=>{const e=(0,xe.getCurrentDocumentId)();if(!e){return`${Oe}pending`}return`${Oe}${e}`},priority:50,subscribe:e=>(0,ke.__privateListenTo)([(0,ke.windowEvent)("elementor/element/update_interactions")],()=>e()),actions:{all:()=>(0,xe.getElements)().filter(e=>{const t=(0,xe.getElementInteractions)(e.id);return!!t&&t?.items?.length>0}).map(e=>{const t=(0,xe.getElementInteractions)(e.id);return{elementId:e.id,dataId:e.id,interactions:t||{version:1,items:[]}}})}}),ze=n(55534),Pe=n(70975),$e=n(5527),De=n(27723);function isAtomicContainer(e){const t=e?.model.get("widgetType")||e?.model.get("elType"),n=(0,Pe.getWidgetsCache)(),r=n?.[t];return Boolean(r?.atomic_props_schema)}function initPasteInteractionsCommand(){const e=(0,$e.undoable)({do:({containers:e,newInteractions:t})=>{const n=function regenerateInteractionIds(e){const t=structuredClone(e);return t.items?.forEach(e=>{"interaction-item"===e.$$type&&e.value&&(e.value.interaction_id=createString(generateTempInteractionId()))}),t}(t);return e.map(e=>{const t=e.id,r=(0,Pe.getElementInteractions)(t);return(0,Pe.updateElementInteractions)({elementId:t,interactions:n}),{elementId:t,previous:r??{version:1,items:[]}}})},undo:(e,t)=>{t.forEach(({elementId:e,previous:t})=>{(0,Pe.updateElementInteractions)({elementId:e,interactions:t.items?.length?t:void 0})})}},{title:({containers:e})=>function getTitleForContainers(e){return e.length>1?(0,De.__)("Elements","elementor"):(0,Pe.getElementLabel)(e[0].id)}(e),subtitle:(0,De.__)("Interactions Pasted","elementor")});(0,$e.__privateListenTo)((0,$e.commandStartEvent)("document/elements/paste-interactions"),t=>{const n=t.args,r=n.containers??(n.container?[n.container]:[]),o=n.storageKey??"clipboard";if(!r.length)return;const i=function getClipboardElements(e="clipboard"){try{const t=JSON.parse(localStorage.getItem("elementor")??"{}");return t[e]?.elements}catch{return}}(o),[a]=i??[];if(!a)return;const l=function normalizeClipboardInteractions(e){if(!e)return null;const t="string"==typeof e?JSON.parse(e):e,n={version:t?.version??1,items:t?.items?.filter(e=>isSupportedInteractionItem(e))??[]};return n.items.length?n:null}(a.interactions);if(!l)return;const c=r.filter(e=>(0,Pe.getContainer)(e.id)).filter(isAtomicContainer);c.length&&e({containers:c,newInteractions:l})})}var Ae=__toESM(n(97557)),Re=n(97557),Be=n(77394),Ue=n(24413),Ve=n(79513),je=n(27723),Ge={top:"vertical",bottom:"vertical",left:"horizontal",right:"horizontal"};function Direction({value:e,onChange:t,interactionType:n}){const r="in"===n,o=(0,Re.useMemo)(()=>[{dir:"top",label:r?(0,je.__)("From top","elementor"):(0,je.__)("To top","elementor"),Icon:r?Ue.ArrowDownSmallIcon:Ue.ArrowUpSmallIcon},{dir:"bottom",label:r?(0,je.__)("From bottom","elementor"):(0,je.__)("To bottom","elementor"),Icon:r?Ue.ArrowUpSmallIcon:Ue.ArrowDownSmallIcon},{dir:"left",label:r?(0,je.__)("From left","elementor"):(0,je.__)("To left","elementor"),Icon:r?Ue.ArrowRightIcon:Ue.ArrowLeftIcon},{dir:"right",label:r?(0,je.__)("From right","elementor"):(0,je.__)("To right","elementor"),Icon:r?Ue.ArrowLeftIcon:Ue.ArrowRightIcon}],[r]),i=(0,Re.useMemo)(()=>function parseValue(e){return e.split("-").filter(Boolean)}(e),[e]);return Ae.createElement(Be.StyledToggleButtonGroup,{size:"tiny",justify:"end",sx:{display:"grid",gridTemplateColumns:"repeat(4, minmax(0, 25%))",width:"100%"}},o.map(({dir:e,label:n,Icon:r})=>Ae.createElement(Ve.Tooltip,{key:e,title:n,disableFocusListener:!0,placement:"top"},Ae.createElement(Be.StyledToggleButton,{value:e,selected:i.includes(e),"aria-label":n,size:"tiny",isPlaceholder:!1,onChange:()=>{const n=function toggleDirection(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e.filter(e=>Ge[e]!==Ge[t]),t]}(i,e);t(function serializeValue(e){const t=e.find(e=>"top"===e||"bottom"===e),n=e.find(e=>"left"===e||"right"===e);return t&&n?`${t}-${n}`:e[0]??""}(n))}},Ae.createElement(r,{fontSize:"tiny"})))))}var Le=__toESM(n(97557)),Me=n(27723),Fe=__toESM(n(97557)),Ne=n(97557),qe=n(70374),We=n(79513),Ke=n(27723),Ye=__toESM(n(97557)),He=n(97557),Je=n(77394),Xe=n(70374),Qe=n(79513),Ze=n(27723),et=(0,He.forwardRef)(({content:e,upgradeUrl:t,anchorRef:n,trackingData:r},o)=>{const[i,a]=(0,He.useState)(!1);(0,Xe.useCanvasClickHandler)(i,()=>a(!1));const l=(0,He.useCallback)(()=>{a(e=>(e||(0,Je.trackViewPromotion)(r),!e))},[r]);(0,He.useImperativeHandle)(o,()=>({toggle:l}),[l]);return Ye.createElement(Xe.PromotionPopover,{open:i,title:(0,Ze.__)("Interactions","elementor"),content:e,ctaText:(0,Ze.__)("Upgrade now","elementor"),ctaUrl:t,anchorRef:n,placement:n?"right-start":void 0,onClose:e=>{e.stopPropagation(),a(!1)},onCtaClick:()=>(0,Je.trackUpgradePromotionClick)(r)},Ye.createElement(Qe.Box,{onMouseDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),l()},sx:{cursor:"pointer",display:"inline-flex",mr:1}},Ye.createElement(Xe.PromotionChip,null)))});function PromotionSelect({value:e,onChange:t,baseOptions:n,disabledOptions:r,promotionLabel:o,promotionContent:i,upgradeUrl:a,trackingData:l}){const c=(0,Ne.useRef)(null),s=(0,Ne.useRef)(null);return Fe.createElement(We.Select,{value:e,onChange:e=>t?.(e.target.value),fullWidth:!0,displayEmpty:!0,size:"tiny",MenuProps:{disablePortal:!0}},Object.entries(n).map(([e,t])=>Fe.createElement(qe.MenuListItem,{key:e,value:e},t)),Fe.createElement(We.MenuSubheader,{ref:s,sx:{cursor:"pointer",color:"text.tertiary",fontWeight:"400",display:"flex",alignItems:"center"},onMouseDown:e=>{e.stopPropagation(),c.current?.toggle()}},o??(0,Ke.__)("PRO features","elementor"),Fe.createElement(et,{content:i,upgradeUrl:a,ref:c,anchorRef:s,trackingData:l})),Object.entries(r).map(([e,t])=>Fe.createElement(qe.MenuListItem,{key:e,value:e,disabled:!0,sx:{pl:3}},t)))}var tt={target_name:"interactions_easing",location_l2:"interactions"},nt={easeIn:(0,Me.__)("Ease In","elementor"),easeInOut:(0,Me.__)("Ease In Out","elementor"),easeOut:(0,Me.__)("Ease Out","elementor"),backIn:(0,Me.__)("Back In","elementor"),backInOut:(0,Me.__)("Back In Out","elementor"),backOut:(0,Me.__)("Back Out","elementor"),linear:(0,Me.__)("Linear","elementor")},rt=["easeIn"];function Easing({}){const e=Object.fromEntries(Object.entries(nt).filter(([e])=>rt.includes(e))),t=Object.fromEntries(Object.entries(nt).filter(([e])=>!rt.includes(e)));return Le.createElement(PromotionSelect,{value:ue.easing,baseOptions:e,disabledOptions:t,promotionContent:(0,Me.__)("Upgrade to control the smoothness of the interaction.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-interactions-easing-modal/",trackingData:tt})}var ot=__toESM(n(97557)),it=n(27723),at={target_name:"interactions_effect",location_l2:"interactions"},lt={fade:(0,it.__)("Fade","elementor"),slide:(0,it.__)("Slide","elementor"),scale:(0,it.__)("Scale","elementor"),custom:(0,it.__)("Custom","elementor")},ct=["fade","slide","scale"];function Effect({value:e,onChange:t}){const n=Object.fromEntries(Object.entries(lt).filter(([e])=>ct.includes(e))),r=Object.fromEntries(Object.entries(lt).filter(([e])=>!ct.includes(e)));return ot.createElement(PromotionSelect,{value:e in n?e:ue.effect,onChange:t,baseOptions:n,disabledOptions:r,promotionLabel:(0,it.__)("PRO effects","elementor"),promotionContent:(0,it.__)("Upgrade to further customize your animation with opacity, scale, move, rotate and more.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-interactions-custom-effect-modal/",trackingData:at})}var st=__toESM(n(97557)),mt=n(77394),ut=n(27723);function EffectType({value:e,onChange:t}){const n=[{value:"in",label:(0,ut.__)("In","elementor"),renderContent:()=>(0,ut.__)("In","elementor"),showTooltip:!0},{value:"out",label:(0,ut.__)("Out","elementor"),renderContent:()=>(0,ut.__)("Out","elementor"),showTooltip:!0}];return st.createElement(mt.ToggleButtonGroupUi,{items:n,exclusive:!0,onChange:t,value:e})}var dt=__toESM(n(97557)),pt=n(97557),ft=n(77394),gt=n(24413),vt=n(27723),yt=__toESM(n(97557)),ht=n(97557),It=n(79513),bt="1 / 1",Et=(0,ht.forwardRef)(({children:e,promotionChip:t},n)=>yt.createElement(It.Box,{ref:n,sx:{display:"grid",alignItems:"center"}},yt.createElement(It.Box,{sx:{gridArea:bt}},e),yt.createElement(It.Box,{sx:{gridArea:bt,marginInlineEnd:"50%",justifySelf:"end"}},t))),_t={target_name:"interactions_repeat",location_l2:"interactions"},Ct={times:(0,vt.__)("times","elementor"),loop:(0,vt.__)("loop","elementor")},Tt={times:(0,vt.__)("Enable number","elementor"),loop:(0,vt.__)("Infinite repeat","elementor")};function Repeat(){const e=(0,pt.useRef)(null),t=[{value:Ct.times,disabled:!0,label:Tt.times,renderContent:({size:e})=>dt.createElement(gt.Number123Icon,{fontSize:e}),showTooltip:!0},{value:Ct.loop,disabled:!0,label:Tt.loop,renderContent:({size:e})=>dt.createElement(gt.RepeatIcon,{fontSize:e}),showTooltip:!0}];return dt.createElement(Et,{ref:e,promotionChip:dt.createElement(et,{content:(0,vt.__)("Upgrade to control how many times the animation repeats.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-interactions-repeat-modal/",anchorRef:e,trackingData:_t})},dt.createElement(ft.ToggleButtonGroupUi,{items:t,exclusive:!0,onChange:()=>{},value:""}))}var wt=__toESM(n(97557)),xt=n(97557),kt=n(77394),Ot=n(24413),St=n(27723),zt={target_name:"interactions_replay",location_l2:"interactions"},Pt={no:(0,St.__)("No","elementor"),yes:(0,St.__)("Yes","elementor")},$t=["no"];function Replay({onChange:e}){const t=(0,xt.useRef)(null),n=[{value:!1,disabled:!1,label:Pt.no,renderContent:({size:e})=>wt.createElement(Ot.MinusIcon,{fontSize:e}),showTooltip:!0},{value:!0,disabled:!0,label:Pt.yes,renderContent:({size:e})=>wt.createElement(Ot.CheckIcon,{fontSize:e}),showTooltip:!0}];return wt.createElement(Et,{ref:t,promotionChip:wt.createElement(et,{content:(0,St.__)("Upgrade to run the animation every time its trigger occurs.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-interactions-replay-modal/",anchorRef:t,trackingData:zt})},wt.createElement(kt.ToggleButtonGroupUi,{items:n,exclusive:!0,onChange:e,value:!1}))}var Dt=__toESM(n(97557)),At=n(27723),Rt={target_name:"interactions_trigger",location_l2:"interactions"},Bt={load:(0,At.__)("Page load","elementor"),scrollIn:(0,At.__)("Scroll into view","elementor"),scrollOn:(0,At.__)("While scrolling","elementor"),hover:(0,At.__)("On hover","elementor"),click:(0,At.__)("On click","elementor")},Ut=["load","scrollIn"];function Trigger({value:e,onChange:t}){const n=Object.fromEntries(Object.entries(Bt).filter(([e])=>Ut.includes(e))),r=Object.fromEntries(Object.entries(Bt).filter(([e])=>!Ut.includes(e)));return Dt.createElement(PromotionSelect,{value:e in n?e:ue.trigger,onChange:t,baseOptions:n,disabledOptions:r,promotionLabel:(0,At.__)("PRO triggers","elementor"),promotionContent:(0,At.__)("Upgrade to unlock more interactions triggers.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-interactions-triggers-modal/",trackingData:Rt})}var Vt=n(70975),jt=n(5527);function initCleanInteractionIdsOnDuplicate(){(0,jt.registerDataHook)("after","document/elements/duplicate",(e,t)=>{if(!t||"boolean"==typeof t&&!1===t)return;(Array.isArray(t)?t:[t]).forEach(e=>{!function cleanInteractionIdsRecursive(e){const t=(0,Vt.getContainer)(e);if(!t)return;(0,Vt.getAllDescendants)(t).forEach(e=>{!function cleanInteractionIds(e){const t=(0,Vt.getContainer)(e);if(!t)return;const n=t.model.get("interactions");if(!n||!n.items)return;const r=structuredClone(n);r?.items?.forEach(e=>{"interaction-item"===e.$$type&&e.value&&(e.value.interaction_id=createString(generateTempInteractionId()))}),t.model.set("interactions",r)}(e.id)})}(e.id)}),window.dispatchEvent(new CustomEvent("elementor/element/update_interactions"))})}var Gt=n(22444),Lt=n(59618),Mt={trigger:Lt.z.enum(["load","scrollIn"]).optional().describe("Event that triggers the animation"),effect:Lt.z.enum(["fade","slide","scale"]).optional().describe("Animation effect type"),effectType:Lt.z.enum(["in","out"]).optional().describe("Whether the animation plays in or out"),direction:Lt.z.enum(["top","bottom","left","right","top-left","top-right","bottom-left","bottom-right"]).optional().describe("Direction of the Animation. Can be one of the following or empty if not needed. At slide effect, this is required field."),duration:Lt.z.number().min(0).max(1e4).optional().describe("Animation duration in milliseconds"),delay:Lt.z.number().min(0).max(1e4).optional().describe("Animation delay in milliseconds"),easing:Lt.z.enum(["easeIn"]).optional().describe('Easing function for the animation. Use "easeIn" for free tier.'),excludedBreakpoints:Lt.z.array(Lt.z.enum(["widescreen","desktop","laptop","tablet_extra","tablet","mobile_extra","mobile"])).optional().describe('Breakpoint IDs on which this interaction is disabled (e.g. ["mobile", "tablet"]). Fetch the "elementor://breakpoints/list" resource to get the valid IDs for the current site. Omit to enable on all breakpoints.')},Ft={trigger:Lt.z.enum(["load","scrollIn","scrollOut","scrollOn","hover","click"]).optional().describe("Event that triggers the animation"),effect:Lt.z.enum(["fade","slide","scale","custom"]).optional().describe("Animation effect type"),easing:Lt.z.enum(["easeIn","easeInOut","easeOut","backIn","backInOut","backOut","linear"]).optional().describe("Easing function for the animation."),customEffects:Lt.z.object({keyframes:Lt.z.array(Lt.z.object({stop:Lt.z.number().describe("The stop of the keyframe in percent, can be either 0 or 100"),value:Lt.z.object({opacity:Lt.z.number().min(0).max(1).describe("The opacity of the keyframe"),scale:Lt.z.object({x:Lt.z.number().min(0).max(1).describe("The x scale of the keyframe"),y:Lt.z.number().min(0).max(1).describe("The y scale of the keyframe")}).optional().describe("The scale of the keyframe"),rotate:Lt.z.object({x:Lt.z.number().min(0).max(360).describe("The x rotate of the keyframe"),y:Lt.z.number().min(0).max(360).describe("The y rotate of the keyframe"),z:Lt.z.number().min(0).max(360).describe("The z rotate of the keyframe")}).optional().describe("The rotate of the keyframe"),move:Lt.z.object({x:Lt.z.number().min(0).max(1).describe("The x move of the keyframe"),y:Lt.z.number().min(0).max(1).describe("The y move of the keyframe"),z:Lt.z.number().min(0).max(1).describe("The z move of the keyframe")}).optional().describe("The move of the keyframe"),skew:Lt.z.object({x:Lt.z.number().min(0).max(360).describe("The x skew of the keyframe"),y:Lt.z.number().min(0).max(360).describe("The y skew of the keyframe")}).optional().describe("The skew of the keyframe")})})).describe("The keyframes of the custom effect")}).optional().describe("The custom effect to use for the animation")},Nt="elementor://interactions/schema",qt=n(70975),Wt=n(59618),Kt=n(22444),Yt="Everything related to V4 ( Atomic ) interactions.\n# Interactions\n- Create/update/delete interactions\n- Get list of interactions\n- Get details of an interaction\n",Ht='MCP server for managing element interactions and animations. Use this to add, modify, or remove animations and motion effects triggered by user events such as page load or scroll-into-view.\n\t\t** IMPORTANT **\n\t\tUse the "interactions-schema" resource to get the schema of the interactions.\n\t\tActions:\n\t\t- get: Read the current interactions on the element.\n\t\t- add: Add a new interaction (max 5 per element).\n\t\t- update: Update an existing interaction by its interactionId.\n\t\t- delete: Remove a specific interaction by its interactionId.\n\t\t- clear: Remove all interactions from the element.\n\n\t\tFor add/update, provide: trigger, effect, effectType, direction (required for slide effect), duration, delay, easing.\n\t\tUse excludedBreakpoints to disable the animation on specific responsive breakpoints (e.g. ["mobile", "tablet"]).\n\t\tExample Get Request:\n\t\t{\n\t\t\t"elementId": "123",\n\t\t\t"action": "get",\n\t\t\t"interactionId": "123",\n\t\t\t"animationData": {\n\t\t\t\t"trigger": "click",\n\t\t\t\t"effect": "fade",\n\t\t\t}\n\t\t}\n\t\tExample Add Request:\n\t\t{\n\t\t\t"elementId": "123",\n\t\t\t"action": "add",\n\t\t\t"animationData": {\n\t\t\t\t"effectType": "in",\n\t\t\t\t"direction": "top",\n\t\t\t\t"trigger": "click",\n\t\t\t\t"effect": "fade",\n\t\t\t\t"duration": 1000,\n\t\t\t\t"delay": 0,\n\t\t\t\t"easing": "easeIn",\n\t\t\t\t"excludedBreakpoints": ["mobile", "tablet"],\n\t\t\t}\n\t\t}\n\t\tExample Update Request:\n\t\t{\n\t\t\t"elementId": "123",\n\t\t\t"action": "update",\n\t\t\t"interactionId": "123",\n\t\t\t"animationData": {\n\t\t\t\t"trigger": "click",\n\t\t\t\t"effect": "fade",\n\t\t\t}\n\t\t}\n\t\tExample Delete Request:\n\t\t{\n\t\t\t"elementId": "123",\n\t\t\t"action": "delete",\n\t\t\t"interactionId": "123",\n\t\t}\n\t\tExample Clear Request:\n\t\t{\n\t\t\t"elementId": "123",\n\t\t\t"action": "clear",\n\t\t}',Jt={version:1,items:[]},Xt=["custom"],initMcpInteractions=e=>{const{setMCPDescription:t}=e;t("Everything related to V4 ( Atomic ) interactions.\n# Interactions\n- Create/update/delete interactions\n- Get list of interactions\n- Get details of an interaction\n"),(e=>{const{resource:t}=e,n=(0,Gt.isProActive)()?{...Mt,...Ft}:Mt;t("interactions-schema",Nt,{description:"Schema describing all available options for element interactions."},async()=>({contents:[{uri:Nt,mimeType:"application/json",text:JSON.stringify(n)}]}))})(e),(e=>{const{addTool:t}=e,n=(0,Kt.isProActive)()?{...Mt,...Ft}:Mt;t({name:"manage-element-interaction",description:"Manage the element interaction.",schema:{elementId:Wt.z.string().describe("The ID of the element to read or modify interactions on"),action:Wt.z.enum(["get","add","update","delete","clear"]).describe('Operation to perform. Use "get" first to inspect existing interactions.'),interactionId:Wt.z.string().optional().describe('Interaction ID — required for update and delete. Obtain from a prior "get" call.'),...n},requiredResources:[{uri:Nt,description:"Interactions schema with all available options"},{uri:"elementor://breakpoints/list",description:"Available breakpoint IDs for excludedBreakpoints"}],isDestructive:!0,outputSchema:{success:Wt.z.boolean().describe("Whether the action was successful"),action:Wt.z.enum(["get","add","update","delete","clear"]).describe('Operation to perform. Use "get" first to inspect existing interactions.'),elementId:Wt.z.string().optional().describe("The ID of the element to read or modify interactions on"),interactions:Wt.z.array(Wt.z.any()).optional().describe("The interactions on the element"),count:Wt.z.number().optional().describe("The number of interactions on the element")},handler:e=>{const{elementId:t,action:n,interactionId:r,...o}=e,{effectType:i,...a}=o,l=a.effect,c=i??(l&&!Xt.includes(l)?"in":void 0),s=Te.all().find(e=>e.elementId===t),m=s?.interactions??Jt;if("get"===n){const e=m.items.map(e=>{const{value:t}=e,n=t.animation.value,r=n.timing_config.value,o=n.config.value;return{id:extractString(t.interaction_id),trigger:extractString(t.trigger),effect:extractString(n.effect),effectType:extractString(n.type),direction:extractString(n.direction),duration:extractSize(r.duration),delay:extractSize(r.delay),easing:extractString(o.easing),excludedBreakpoints:extractExcludedBreakpoints(t.breakpoints)}});return{success:!0,elementId:t,action:n,interactions:e,count:e.length}}let u=[...m.items];switch(n){case"add":{if(u.length>=5)throw new Error(`Cannot add more than 5 interactions per element. Current count: ${u.length}. Delete an existing interaction first.`);const e=createInteractionItem({interactionId:generateTempInteractionId(),...a,type:c});u=[...u,e];break}case"update":{if(!r)throw new Error("interactionId is required for the update action.");const e=u.findIndex(e=>extractString(e.value.interaction_id)===r);if(-1===e)throw new Error(`Interaction with ID "${r}" not found on element "${t}".`);const n=createInteractionItem({interactionId:r,...a,type:c});u=[...u.slice(0,e),n,...u.slice(e+1)];break}case"delete":{if(!r)throw new Error("interactionId is required for the delete action.");const e=u.length;if(u=u.filter(e=>extractString(e.value.interaction_id)!==r),u.length===e)throw new Error(`Interaction with ID "${r}" not found on element "${t}".`);break}case"clear":u=[]}const d={...m,items:u};try{(0,qt.updateElementInteractions)({elementId:t,interactions:d})}catch(e){throw new Error(`Failed to update interactions for element "${t}": ${e instanceof Error?e.message:"Unknown error"}`)}return{success:!0,action:n,elementId:t,count:u.length}}})})(e)};function init(){try{Te.register(Se),initCleanInteractionIdsOnDuplicate(),initPasteInteractionsCommand(),registerInteractionsControl({type:"trigger",component:Trigger,options:["load","scrollIn"]}),registerInteractionsControl({type:"easing",component:Easing,options:["easeIn"]}),registerInteractionsControl({type:"replay",component:Replay,options:["no"]}),registerInteractionsControl({type:"effectType",component:EffectType,options:["in","out"]}),registerInteractionsControl({type:"direction",component:Direction,options:["top","bottom","left","right"]}),registerInteractionsControl({type:"effect",component:Effect,options:["fade","slide","scale"]}),registerInteractionsControl({type:"repeat",component:Repeat}),initMcpInteractions((0,ze.getMCPByDomain)("interactions",{docs:Ht,instructions:Yt}))}catch(e){throw e}}},55534:function(e){e.exports=window.elementorV2.editorMcp},59618:function(e){e.exports=window.elementorV2.schema},70374:function(e){e.exports=window.elementorV2.editorUi},70975:function(e){e.exports=window.elementorV2.editorElements},74518:function(e){e.exports=window.elementorV2.editorResponsive},77394:function(e){e.exports=window.elementorV2.editorControls},78187:function(e){e.exports=window.elementorV2.session},79513:function(e){e.exports=window.elementorV2.ui},97557:function(e){e.exports=window.React}},t={};var n=function __webpack_require__(n){var r=t[n];if(void 0!==r)return r.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,__webpack_require__),o.exports}(46514);(window.elementorV2=window.elementorV2||{}).editorInteractions=n}(),window.elementorV2.editorInteractions?.init?.();
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,{BASE_EASINGS:()=>St,BASE_EFFECTS:()=>Et,BASE_REPLAY:()=>Jt,BASE_TRIGGERS:()=>Qt,DEFAULT_VALUES:()=>N,EASING_OPTIONS:()=>xt,EFFECT_OPTIONS:()=>Tt,ELEMENTS_INTERACTIONS_PROVIDER_KEY_PREFIX:()=>V,EmptyState:()=>EmptyState,InteractionsTab:()=>InteractionsTab,REPEAT_OPTIONS:()=>Bt,REPEAT_TOOLTIPS:()=>Vt,REPLAY_OPTIONS:()=>qt,SCROLL_INTERACTION_EVENT:()=>je,TRIGGER_OPTIONS:()=>Zt,buildDisplayLabel:()=>buildDisplayLabel,createAnimationPreset:()=>createAnimationPreset,createBoolean:()=>createBoolean,createConfig:()=>createConfig,createDefaultInteractionItem:()=>createDefaultInteractionItem,createDefaultInteractions:()=>createDefaultInteractions,createExcludedBreakpoints:()=>createExcludedBreakpoints,createInteractionBreakpoints:()=>createInteractionBreakpoints,createInteractionItem:()=>createInteractionItem,createInteractionsProvider:()=>createInteractionsProvider,createNumber:()=>createNumber,createString:()=>createString,createTimingConfig:()=>createTimingConfig,dispatchScrollInteraction:()=>dispatchScrollInteraction,extractBoolean:()=>extractBoolean,extractExcludedBreakpoints:()=>extractExcludedBreakpoints,extractScrollOverlayParams:()=>extractScrollOverlayParams,extractSize:()=>extractSize,extractString:()=>extractString,formatSizeValue:()=>formatSizeValue,generateTempInteractionId:()=>generateTempInteractionId,getInteractionsConfig:()=>getInteractionsConfig,init:()=>init,interactionsRepository:()=>z,isTempId:()=>isTempId,parseSizeValue:()=>parseSizeValue,registerInteractionsControl:()=>registerInteractionsControl,resolveDirection:()=>resolveDirection,syncGridOverlay:()=>syncGridOverlay,useElementInteractions:()=>useElementInteractions}),t.exports=__toCommonJS(c);var l=__toESM(globalThis.React),u=globalThis.elementorV2.icons,d=globalThis.elementorV2.ui,f=globalThis.wp.i18n,EmptyState=({onCreateInteraction:e})=>l.createElement(d.Stack,{alignItems:`center`,justifyContent:`center`,height:`100%`,color:`text.secondary`,sx:{p:2.5,pt:8,pb:5.5},gap:1.5},l.createElement(u.SwipeIcon,{fontSize:`large`}),l.createElement(d.Typography,{align:`center`,variant:`subtitle2`},(0,f.__)(`Animate elements with Interactions`,`elementor`)),l.createElement(d.Typography,{align:`center`,variant:`caption`,maxWidth:`170px`},(0,f.__)(`Add entrance animations and effects triggered by user interactions such as page load or scroll.`,`elementor`)),l.createElement(d.Button,{variant:`outlined`,color:`secondary`,size:`small`,sx:{mt:1},onClick:e},(0,f.__)(`Create an interaction`,`elementor`))),p=__toESM(globalThis.React),m=globalThis.React,h=globalThis.elementorV2.session,g=globalThis.elementorV2.ui,_=__toESM(globalThis.React),v=globalThis.React,y=globalThis.elementorV2.editorElements,ee=globalThis.elementorV2.editorV1Adapters,te=globalThis.wp.i18n,ne=globalThis.React,b=globalThis.elementorV2.editorElements,re=globalThis.elementorV2.editorV1Adapters,x=new Map;function registerInteractionsControl({type:e,component:t,options:n}){x.set(e,{type:e,component:t,options:n})}function getInteractionsControl(e){return x.get(e)}function getInteractionsControlOptions(e){return x.get(e)?.options??[]}var S=globalThis.elementorV2.editorProps,C=[`s`,`ms`],w=`ms`,ie=/^(?:(-?\d*\.?\d+)([a-z%]+)|([a-z%]+))$/i,parseSizeValue=(e,t,n,r)=>{if(typeof e==`number`)return{size:e,unit:r};let i=tryParse(e,t,r);if(i)return i;if(n){let e=tryParse(n,t,r);if(e)return e}return createSizeValue(null,r)},tryParse=(e,t,n)=>{if(typeof e==`number`)return createSizeValue(e,n);let r=e&&e.match(ie);if(!r)return e?{size:Number(e),unit:n}:null;let i=r[1]?parseFloat(r[1]):null,a=r[2]||r[3];return t.includes(a)?createSizeValue(i,a):null},formatSizeValue=({size:e,unit:t})=>`${e??``}${t}`,createSizeValue=(e,t)=>({size:e,unit:t}),ae=`custom-effect`,oe=`keyframes`,se=`keyframe-stop`,ce=`keyframe-stop-settings`,le=`size`,ue=`number`,de=`transform-scale`,fe=`transform-rotate`,pe=`transform-move`,me=`transform-skew`,he=`%`,ge=`deg`,_e=`px`,isPlainCustomEffect=e=>typeof e==`object`&&!!e&&`keyframes`in e&&Array.isArray(e.keyframes)&&!(`$$type`in e),toSizePropValue=(e,t=he)=>({$$type:le,value:{size:e,unit:t}}),toNumberPropValue=e=>({$$type:ue,value:e}),toDimensionalNumberPropValue=(e,t,n)=>({$$type:e,value:{x:toNumberPropValue(t.x??n.x),y:toNumberPropValue(t.y??n.y),z:toNumberPropValue(t.z??n.z)}}),toDimensionalSizePropValue=(e,t,n,r)=>({$$type:e,value:{x:toSizePropValue(t.x??n.x,r),y:toSizePropValue(t.y??n.y,r),z:toSizePropValue(t.z??n.z,r)}}),toSkewPropValue=e=>({$$type:me,value:{x:toSizePropValue(e.x??0,ge),y:toSizePropValue(e.y??0,ge)}}),toKeyframeStopSettingsPropValue=e=>{let t={};return e.opacity!==void 0&&(t.opacity=toSizePropValue(e.opacity<=1?Math.round(e.opacity*100):e.opacity)),e.scale!==void 0&&(t.scale=toDimensionalNumberPropValue(de,e.scale,{x:1,y:1,z:1})),e.rotate!==void 0&&(t.rotate=toDimensionalSizePropValue(fe,e.rotate,{x:0,y:0,z:0},ge)),e.move!==void 0&&(t.move=toDimensionalSizePropValue(pe,e.move,{x:0,y:0,z:0},_e)),e.skew!==void 0&&(t.skew=toSkewPropValue(e.skew)),{$$type:ce,value:t}},isPlainKeyframe=e=>typeof e==`object`&&!!e&&`stop`in e&&`value`in e&&!(`$$type`in e),toKeyframeStopPropValue=e=>isPlainKeyframe(e)?{$$type:se,value:{stop:toSizePropValue(e.stop),settings:toKeyframeStopSettingsPropValue(e.value)}}:e,toKeyframesPropValue=e=>({$$type:oe,value:e.map(toKeyframeStopPropValue)}),plainCustomEffectToPropValue=e=>({$$type:ae,value:{keyframes:toKeyframesPropValue(e.keyframes)}}),toCustomEffectPropValue=e=>{if(e!==void 0)return isPlainCustomEffect(e)?plainCustomEffectToPropValue(e):e};function getInteractionsConfig(){return window.ElementorInteractionsConfig??{}}var ve=`temp-`,ye=/^temp-[a-z0-9]+$/i;function generateTempInteractionId(){return`${ve}${Math.random().toString(36).substring(2,11)}`}function isTempId(e){return!!e&&ye.test(e)}var createString=e=>({$$type:`string`,value:e}),createNumber=e=>({$$type:`number`,value:e}),createTimingConfig=(e,t)=>({$$type:`timing-config`,value:{duration:S.sizePropTypeUtil.create(parseSizeValue(e,C,void 0,w)),delay:S.sizePropTypeUtil.create(parseSizeValue(t,C,void 0,w))}}),createBoolean=e=>({$$type:`boolean`,value:e}),createConfig=({replay:e,easing:t=`easeIn`,relativeTo:n=`viewport`,repeat:r=``,times:i=1,start:a=85,end:o=15})=>({$$type:`config`,value:{replay:createBoolean(e),easing:createString(t),relativeTo:createString(n),repeat:createString(r),times:createNumber(i),start:createSize(a,`%`),end:createSize(o,`%`)}}),createSize=(e,t,n)=>{if(e)return S.sizePropTypeUtil.create(parseSizeValue(e,[`%`],n,t))},extractBoolean=(e,t=!1)=>e?.value??t,createExcludedBreakpoints=e=>({$$type:`excluded-breakpoints`,value:e.map(createString)}),createInteractionBreakpoints=e=>({$$type:`interaction-breakpoints`,value:{excluded:createExcludedBreakpoints(e)}}),extractExcludedBreakpoints=e=>e?.value.excluded.value.map(e=>e.value)??[],createAnimationPreset=({effect:e,type:t,direction:n,duration:r,delay:i,replay:a=!1,easing:o=`easeIn`,relativeTo:s,repeat:c,times:l,start:u,end:d,customEffects:f})=>{let p=toCustomEffectPropValue(f);return{$$type:`animation-preset-props`,value:{effect:createString(e),...p!==void 0&&{custom_effect:p},type:createString(t),direction:createString(n??``),timing_config:createTimingConfig(r,i),config:createConfig({replay:a,easing:o,relativeTo:s,repeat:c,times:l,start:u,end:d})}}},createInteractionItem=({trigger:e,effect:t,type:n,direction:r,duration:i,delay:a,interactionId:o,replay:s=!1,easing:c=`easeIn`,relativeTo:l,repeat:u,times:d,start:f,end:p,excludedBreakpoints:m,customEffects:h})=>({$$type:`interaction-item`,value:{...o&&{interaction_id:createString(o)},trigger:createString(e??``),animation:createAnimationPreset({effect:t??``,type:n??``,direction:r,duration:i??0,delay:a??0,replay:s,easing:c,relativeTo:l,repeat:u,times:d,start:f,end:p,customEffects:h}),...m&&m.length>0&&{breakpoints:createInteractionBreakpoints(m)}}}),createDefaultInteractionItem=()=>{let{constants:e}=getInteractionsConfig();return createInteractionItem({trigger:`load`,effect:`fade`,type:`in`,duration:e.defaultDuration,delay:e.defaultDelay,replay:!1,easing:e.defaultEasing,interactionId:generateTempInteractionId()})},createDefaultInteractions=()=>({version:1,items:[createDefaultInteractionItem()]}),extractString=(e,t=``)=>e?.value??t,extractSize=(e,t)=>e?.value?formatSizeValue(e.value):t,be={load:`On page load`,scrollIn:`Scroll into view`,scrollOut:`Scroll out of view`,scrollOn:`While scrolling`},capitalize=e=>e.charAt(0).toUpperCase()+e.slice(1),buildDisplayLabel=e=>{let t=extractString(e.trigger),n=extractString(e.animation.value.effect),r=extractString(e.animation.value.type);return`${be[t]||capitalize(t)}: ${capitalize(n)} ${n===`custom`?``:capitalize(r)}`};function isSupportedInteractionItem(e){let t=e.value;if(!0===extractBoolean(t.animation.value.config?.value.replay))return hasSupport(`replay`,`yes`);let n=extractString(t.trigger),r=extractString(t.animation.value.config?.value.easing),i=extractString(t.animation.value.effect);return[[`trigger`,n],[`easing`,r],[`effect`,i]].every(([e,t])=>t===``||t===null||hasSupport(e,t))}function hasSupport(e,t){let n=getInteractionsControlOptions(e);return 1>n.length||n.includes(t)}var filterInteractions=e=>e.filter(e=>isSupportedInteractionItem(e)),useElementInteractions=e=>{let[t,n]=(0,ne.useState)(()=>{let t=(0,b.getElementInteractions)(e),n=filterInteractions(t?.items??[]);return{version:t?.version??1,items:n}});return(0,re.__privateUseListenTo)((0,re.windowEvent)(`elementor/element/update_interactions`),()=>{let t=(0,b.getElementInteractions)(e),r=filterInteractions(t?.items??[]);n({version:t?.version??1,items:r})},[e]),t},xe=(0,v.createContext)(null),Se={version:1,items:[]},InteractionsProvider=({children:e,elementId:t})=>{let n=useElementInteractions(t);(0,v.useEffect)(()=>{window.dispatchEvent(new CustomEvent(`elementor/element/update_interactions`))},[]);let r=n??Se,i=(0,v.useMemo)(()=>(0,ee.undoable)({do:({interactions:e})=>{let n=(0,y.getElementInteractions)(t);return(0,y.updateElementInteractions)({elementId:t,interactions:e}),n},undo:(e,n)=>{(0,y.updateElementInteractions)({elementId:t,interactions:n?.items?.length?n:void 0})}},{title:(0,y.getElementLabel)(t),subtitle:({operationType:e})=>e===`apply`?(0,te.__)(`Interaction Applied`,`elementor`):(0,te.__)(`Interaction Deleted`,`elementor`)}),[t]),setInteractions=e=>{let n=e&&e.items?.length===0?void 0:e,a=r.items?.length??0,o=n?.items?.length??0;o>a?i({interactions:n,operationType:`apply`}):o<a?i({interactions:n,operationType:`delete`}):(0,y.updateElementInteractions)({elementId:t,interactions:n})},playInteractions=e=>{(0,y.playElementInteractions)(t,e)},a={elementId:t,interactions:r,setInteractions,playInteractions};return _.createElement(xe.Provider,{value:a},e)},useInteractionsContext=()=>{let e=(0,v.useContext)(xe);if(!e)throw Error(`useInteractionsContext must be used within InteractionsProvider`);return e},Ce=__toESM(globalThis.React),we=globalThis.React,Te=(0,we.createContext)(void 0),PopupStateProvider=({children:e})=>{let[t,n]=(0,we.useState)(!1),r=(0,we.useCallback)(()=>{n(!0)},[]),i=(0,we.useCallback)(()=>{n(!1)},[]);return Ce.createElement(Te.Provider,{value:{openByDefault:t,triggerDefaultOpen:r,resetDefaultOpen:i}},e)},T=__toESM(globalThis.React),E=globalThis.React,Ee=globalThis.elementorV2.editorControls,De=globalThis.elementorV2.icons,D=globalThis.elementorV2.ui,O=globalThis.wp.i18n,Oe=__toESM(globalThis.React),ke=globalThis.React,Ae=(0,ke.createContext)(null);function InteractionItemContextProvider({value:e,children:t}){return Oe.createElement(Ae.Provider,{value:e},t)}function useInteractionItemContext(){let e=(0,ke.useContext)(Ae);if(!e)throw Error(`useInteractionItemContext must be used within InteractionItemContextProvider`);return e}var je=`elementor/interactions/scroll-change`;function dispatchScrollInteraction(e){window.dispatchEvent(new CustomEvent(je,{detail:e}))}function extractScrollOverlayParams(e,t){return{trigger:extractString(e.trigger,t.trigger),start:extractSize(e.animation.value.config?.value.start,t.start),end:extractSize(e.animation.value.config?.value.end,t.end),relativeTo:extractString(e.animation.value.config?.value.relativeTo,t.relativeTo)}}function syncGridOverlay(e,t,n,r){dispatchScrollInteraction(e===`scrollOn`?{start:t,end:n,relativeTo:r}:null)}var Me=globalThis.elementorV2.editorElements,Ne=globalThis.elementorV2.events,Pe={load:`On page load`,scrollIn:`Scroll into view`,scrollOut:`Scroll out of view`,scrollOn:`While scrolling`,hover:`Hover`,click:`Click`},capitalize2=e=>e.charAt(0).toUpperCase()+e.slice(1),trackInteractionCreated=(e,t)=>{let{dispatchEvent:n,config:r}=(0,Ne.getMixpanel)();if(!r?.names?.interactions?.created)return;let i=extractString(t.value.trigger),a=extractString(t.value.animation.value.effect),o=extractString(t.value.animation.value.type);n?.(r.names.interactions.created,{window_name:r?.appTypes?.editor,interaction_type:r?.triggers?.click,target_name:(0,Me.getElementLabel)(e),interaction_result:`interaction_created`,target_location:r?.locations?.widgetPanel,location_l1:(0,Me.getElementLabel)(e),location_l2:`interactions`,interaction_description:`interaction_created`,interaction_trigger:Pe[i]??capitalize2(i),interaction_effect:a===`custom`?capitalize2(a):`${capitalize2(a)} ${capitalize2(o)}`})},k=__toESM(globalThis.React),Fe=globalThis.React,Ie=globalThis.elementorV2.editorControls,A=globalThis.elementorV2.ui,j=globalThis.wp.i18n,resolveDirection=(e,t,n,r,i)=>t===`slide`&&!n?`top`:i===`slide`&&e?n||`top`:e?n:r,Le=__toESM(globalThis.React),Re=globalThis.React,ze=globalThis.elementorV2.editorControls;function TimeFrameIndicator({value:e,onChange:t,defaultValue:n}){let r=parseSizeValue(e,C,n,w),i=(0,Re.useCallback)(e=>{t(formatSizeValue(e))},[t]),handleBlur=e=>{e.target.value||i(parseSizeValue(n,C,void 0,w))};return Le.createElement(ze.SizeComponent,{units:C,value:r,setValue:i,onBlur:handleBlur,InputProps:{inputProps:{min:0}}})}var M=__toESM(globalThis.React),Be=globalThis.elementorV2.editorControls,Ve=globalThis.elementorV2.ui,Field=({label:e,children:t})=>M.createElement(Ve.Grid,{item:!0,xs:12,"aria-label":`${e} control`},M.createElement(Be.PopoverGridContainer,null,M.createElement(Ve.Grid,{item:!0,xs:6},M.createElement(Be.ControlFormLabel,null,e)),M.createElement(Ve.Grid,{item:!0,xs:6},t))),N={trigger:`load`,effect:`fade`,type:`in`,direction:``,duration:600,delay:0,replay:!1,easing:`easeIn`,relativeTo:`viewport`,repeat:``,times:1,start:85,end:15},He=[`load`,`scrollOn`,`hover`,`click`],P={replay:e=>!He.includes(e.trigger),custom:e=>e.effect===`custom`,effectType:e=>e.effect!==`custom`,direction:e=>e.effect!==`custom`,relativeTo:e=>e.trigger===`scrollOn`,start:e=>e.trigger===`scrollOn`,end:e=>e.trigger===`scrollOn`,repeat:e=>e.trigger!==`scrollOn`,times:e=>e.trigger!==`scrollOn`&&e.repeat===`times`,duration:e=>e.trigger!==`scrollOn`,delay:e=>e.trigger!==`scrollOn`};function normalizeTimesValue(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(1,Math.floor(n)):t}function useControlComponent(e,t=!0){return(0,Fe.useMemo)(()=>t?getInteractionsControl(e)?.component??null:null,[e,t])}var InteractionDetails=({interaction:e,onChange:t,onPlayInteraction:n})=>{let r=extractString(e.trigger,N.trigger),i=extractString(e.animation.value.effect,N.effect),a=e.animation.value.custom_effect,o=extractString(e.animation.value.type,N.type),s=extractString(e.animation.value.direction,N.direction),c=extractSize(e.animation.value.timing_config.value.duration),l=extractSize(e.animation.value.timing_config.value.delay),u=extractBoolean(e.animation.value.config?.value.replay,N.replay),d=extractString(e.animation.value.config?.value.easing,N.easing),f=extractString(e.animation.value.config?.value.relativeTo,N.relativeTo),p=e.animation.value.config?.value,m=extractString(p?.repeat,N.repeat),h=normalizeTimesValue(p?.times?.value,N.times),g=extractSize(e.animation.value.config?.value.start,N.start),_=extractSize(e.animation.value.config?.value.end,N.end),v={trigger:r,effect:i,type:o,direction:s,duration:c,delay:l,easing:d,replay:u,relativeTo:f,repeat:m,times:h,start:g,end:_,customEffects:a},y=useControlComponent(`trigger`,!0),ee=useControlComponent(`effect`),te=useControlComponent(`replay`,P.replay(v)),ne=useControlComponent(`relativeTo`,P.relativeTo(v)),b=useControlComponent(`start`,P.start(v)),re=useControlComponent(`end`,P.end(v)),x=useControlComponent(`customEffects`,P.custom(v)),S=useControlComponent(`effectType`,P.effectType(v)),C=useControlComponent(`direction`,P.direction(v)),w=useControlComponent(`repeat`,P.repeat(v)),ie=useControlComponent(`times`,P.times(v)),ae=useControlComponent(`easing`),updateInteraction=p=>{let v=resolveDirection(`direction`in p,p.effect,p.direction,s,i),y={...e,interaction_id:e.interaction_id,trigger:createString(p.trigger??r),animation:createAnimationPreset({effect:p.effect??i,type:p.type??o,direction:v,duration:p.duration??c,delay:p.delay??l,replay:p.replay??u,easing:p.easing??d,relativeTo:p.relativeTo??f,repeat:p.repeat??m,times:p.times??h,start:p.start??g,end:p.end??_,customEffects:p.customEffects??a})};t(y),syncGridOverlay(p.trigger??r,p.start??g,p.end??_,p.relativeTo??f);let ee=extractString(y.interaction_id);setTimeout(()=>{n(ee)},0)};return k.createElement(Ie.PopoverContent,{p:1.5},k.createElement(A.Grid,{container:!0,spacing:1.5},y&&k.createElement(Field,{label:(0,j.__)(`Trigger`,`elementor`)},k.createElement(y,{value:r,onChange:e=>updateInteraction({trigger:e})})),te&&k.createElement(Field,{label:(0,j.__)(`Replay`,`elementor`)},k.createElement(te,{value:u,onChange:e=>updateInteraction({replay:e}),disabled:!0}))),k.createElement(A.Divider,null),k.createElement(A.Grid,{container:!0,spacing:1.5},ee&&k.createElement(Field,{label:(0,j.__)(`Effect`,`elementor`)},k.createElement(ee,{value:i,onChange:e=>updateInteraction({effect:e})})),x&&k.createElement(Field,{label:(0,j.__)(`Custom Effect`,`elementor`)},k.createElement(x,{value:a,onChange:e=>updateInteraction({customEffects:e})})),S&&k.createElement(Field,{label:(0,j.__)(`Type`,`elementor`)},k.createElement(S,{value:o,onChange:e=>updateInteraction({type:e})})),C&&k.createElement(Field,{label:(0,j.__)(`Direction`,`elementor`)},k.createElement(C,{value:s,onChange:e=>updateInteraction({direction:e}),interactionType:o})),w&&k.createElement(Field,{label:(0,j.__)(`Repeat`,`elementor`)},k.createElement(w,{value:m,onChange:e=>updateInteraction({repeat:e})})),ie&&k.createElement(Field,{label:(0,j.__)(`Times`,`elementor`)},k.createElement(ie,{value:h,onChange:e=>updateInteraction({times:normalizeTimesValue(e,N.times)})})),P.duration(v)&&k.createElement(Field,{label:(0,j.__)(`Duration`,`elementor`)},k.createElement(TimeFrameIndicator,{value:String(c),onChange:e=>updateInteraction({duration:e}),defaultValue:N.duration})),P.delay(v)&&k.createElement(Field,{label:(0,j.__)(`Delay`,`elementor`)},k.createElement(TimeFrameIndicator,{value:String(l),onChange:e=>updateInteraction({delay:e}),defaultValue:N.delay}))),P.relativeTo(v)&&ne&&k.createElement(k.Fragment,null,k.createElement(A.Divider,null),k.createElement(A.Grid,{container:!0,spacing:1.5},b&&k.createElement(Field,{label:(0,j.__)(`Start`,`elementor`)},k.createElement(b,{value:parseSizeValue(g,[`%`]).size?.toString()??``,onChange:e=>updateInteraction({start:e})})),re&&k.createElement(Field,{label:(0,j.__)(`End`,`elementor`)},k.createElement(re,{value:parseSizeValue(_,[`%`]).size?.toString()??``,onChange:e=>updateInteraction({end:e})})),k.createElement(Field,{label:(0,j.__)(`Relative To`,`elementor`)},k.createElement(ne,{value:f,onChange:e=>updateInteraction({relativeTo:e})}))),k.createElement(A.Divider,null)),ae&&k.createElement(A.Grid,{container:!0,spacing:1.5},k.createElement(Field,{label:(0,j.__)(`Easing`,`elementor`)},k.createElement(ae,{value:d,onChange:e=>{updateInteraction({easing:e})}}))))},F=__toESM(globalThis.React),Ue=globalThis.React,I=globalThis.elementorV2.ui,We=globalThis.wp.i18n,L=__toESM(globalThis.React),Ge=globalThis.React,Ke=globalThis.elementorV2.editorControls,qe=globalThis.elementorV2.editorResponsive,R=globalThis.elementorV2.ui,Je=globalThis.wp.i18n,Ye=`tiny`,InteractionSettings=({interaction:e,onChange:t})=>{let n=(0,qe.useBreakpoints)(),r=(0,Ge.useMemo)(()=>n.map(e=>({label:e.label,value:String(e.id)})),[n]),[i,a]=(0,Ge.useState)(()=>{let t=extractExcludedBreakpoints(e.breakpoints).filter(e=>r.some(({value:t})=>t===e));return r.filter(({value:e})=>!t.includes(e))}),o=(0,Ge.useCallback)((n,i)=>{a(i);let o=i.map(e=>e.value),s=r.filter(e=>!o.includes(e.value)).map(e=>e.value),c={...e,...s.length>0&&{breakpoints:createInteractionBreakpoints(s)}};s.length===0&&delete c.breakpoints,t(c)},[e,r,t]);return L.createElement(Ke.PopoverContent,{p:1.5},L.createElement(R.Grid,{container:!0,spacing:1.5},L.createElement(R.Grid,{item:!0,xs:12},L.createElement(R.Stack,{direction:`column`,gap:1},L.createElement(Ke.ControlFormLabel,{sx:{width:`100%`}},(0,Je.__)(`Trigger on`,`elementor`)),L.createElement(R.Autocomplete,{fullWidth:!0,multiple:!0,value:i,onChange:o,size:Ye,options:r,isOptionEqualToValue:(e,t)=>e.value===t.value,renderInput:e=>L.createElement(R.TextField,{...e}),renderTags:(e,t)=>e.map((e,n)=>{let{key:r,...i}=t({index:n});return L.createElement(R.Chip,{key:r,size:Ye,label:e.label,...i})})})))))},InteractionsListItem=({index:e,value:t})=>{let{getTabsProps:n,getTabProps:r,getTabPanelProps:i}=(0,I.useTabs)(`details`),a=useInteractionItemContext(),o=(0,Ue.useCallback)(t=>{a?.onInteractionChange(e,t)},[a,e]),s=(0,Ue.useCallback)(e=>{a?.onPlayInteraction(e)},[a]),c=extractString(t.value.interaction_id);return F.createElement(F.Fragment,null,F.createElement(I.Tabs,{size:`small`,variant:`fullWidth`,"aria-label":(0,We.__)(`Interaction`,`elementor`),...n()},F.createElement(I.Tab,{label:(0,We.__)(`Details`,`elementor`),...r(`details`)}),F.createElement(I.Tab,{label:(0,We.__)(`Settings`,`elementor`),...r(`settings`)})),F.createElement(I.Divider,null),F.createElement(I.TabPanel,{sx:{p:0},...i(`details`)},F.createElement(InteractionDetails,{key:c,interaction:t.value,onChange:o,onPlayInteraction:s})),F.createElement(I.TabPanel,{sx:{p:0},...i(`settings`)},F.createElement(InteractionSettings,{key:c,interaction:t.value,onChange:o})))},Xe=5;function InteractionsList(e){let{interactions:t,onSelectInteractions:n,onPlayInteraction:r,triggerCreateOnShowEmpty:i}=e,{elementId:a}=useInteractionsContext(),o=(0,E.useRef)(!1),s=(0,E.useRef)(new Set),c=(0,E.useCallback)(e=>{n(e)},[n]);(0,E.useEffect)(()=>{if(i&&!o.current&&(!t.items||t.items?.length===0)){o.current=!0;let e=createDefaultInteractionItem();s.current.add(extractString(e.value.interaction_id)),c({version:1,items:[e]})}},[i,t.items,c]);let l=(0,E.useMemo)(()=>t.items?.length>=Xe,[t.items?.length]),u=l?T.createElement(D.Alert,{color:`secondary`,icon:T.createElement(De.InfoCircleFilledIcon,null),size:`small`},T.createElement(D.AlertTitle,null,(0,O.__)(`Interactions`,`elementor`)),T.createElement(D.Box,{component:`span`},(0,O.__)(`You've reached the limit of 5 interactions for this element. Please remove an interaction before creating a new one.`,`elementor`))):void 0,d=(0,E.useCallback)((e,n,r)=>{if(c({...t,items:e}),r?.action?.type===`add`){let e=r.action.payload[0]?.item;e&&s.current.add(extractString(e.value.interaction_id))}},[t,c]),f=(0,E.useCallback)((e,n)=>{let r=structuredClone(t.items);r[e]={$$type:`interaction-item`,value:n},c({...t,items:r})},[t,c]),p=(0,E.useMemo)(()=>({onInteractionChange:f,onPlayInteraction:r}),[f,r]);return T.createElement(InteractionItemContextProvider,{value:p},T.createElement(Ee.Repeater,{openOnAdd:!0,openItem:i?0:void 0,label:(0,O.__)(`Interactions`,`elementor`),values:t.items,setValues:d,showDuplicate:!1,showToggle:!1,isSortable:!1,disableAddItemButton:l,addButtonInfotipContent:u,itemSettings:{initialValues:createDefaultInteractionItem(),Label:({value:e})=>buildDisplayLabel(e.value),Icon:()=>null,Content:InteractionsListItem,onPopoverOpen:e=>{let{trigger:t,start:n,end:r,relativeTo:i}=extractScrollOverlayParams(e.value,N);syncGridOverlay(t,n,r,i)},onPopoverClose:e=>{dispatchScrollInteraction(null);let t=extractString(e.value.interaction_id);s.current.has(t)&&(s.current.delete(t),trackInteractionCreated(a,e))},actions:e=>T.createElement(D.Tooltip,{key:`preview`,placement:`top`,title:(0,O.__)(`Preview`,`elementor`)},T.createElement(D.IconButton,{"aria-label":(0,O.__)(`Play interaction`,`elementor`),size:`tiny`,onClick:()=>r(extractString(e.value.interaction_id))},T.createElement(De.PlayerPlayIcon,{fontSize:`tiny`})))}}))}var InteractionsTab=({elementId:e})=>p.createElement(PopupStateProvider,null,p.createElement(InteractionsTabContent,{elementId:e}));function InteractionsTabContent({elementId:e}){let t=useElementInteractions(e),n=(0,m.useState)(!1),r=t?.items?.length||n[0];return p.createElement(h.SessionStorageProvider,{prefix:e},r?p.createElement(InteractionsProvider,{elementId:e},p.createElement(InteractionsContent,{firstInteractionState:n})):p.createElement(EmptyState,{onCreateInteraction:()=>{n[1](!0)}}))}function InteractionsContent({firstInteractionState:e}){let{interactions:t,setInteractions:n,playInteractions:r}=useInteractionsContext(),i=(0,m.useCallback)(t=>{if(e[1](!1),!t){n(void 0);return}n(t)},[n,e]);return p.createElement(g.Stack,{sx:{m:1,p:1.5},gap:2},p.createElement(InteractionsList,{triggerCreateOnShowEmpty:e[0],interactions:t,onSelectInteractions:i,onPlayInteraction:r}))}var createInteractionsRepository=()=>{let e=[],getProviders=()=>e.slice(0).sort((e,t)=>e.priority>t.priority?-1:1),register=t=>{e.push(t)},all=()=>getProviders().flatMap(e=>e.actions.all()),subscribe=t=>{let n=e.map(e=>e.subscribe(t));return()=>{n.forEach(e=>e())}},getProviderByKey=t=>e.find(e=>{try{return e.getKey()===t}catch{return!1}});return{all,register,subscribe,getProviders,getProviderByKey}},z=createInteractionsRepository(),Ze=10;function createInteractionsProvider({key:e,priority:t=Ze,subscribe:n=()=>()=>{},actions:r}){return{getKey:typeof e==`string`?()=>e:e,priority:t,subscribe:n,actions:{all:r.all}}}var B=globalThis.elementorV2.editorElements,Qe=globalThis.elementorV2.editorV1Adapters,V=`document-elements-interactions-`,$e=createInteractionsProvider({key:()=>{let e=(0,B.getCurrentDocumentId)();return e?`${V}${e}`:`${V}pending`},priority:50,subscribe:e=>(0,Qe.__privateListenTo)([(0,Qe.windowEvent)(`elementor/element/update_interactions`)],()=>e()),actions:{all:()=>(0,B.getElements)().filter(e=>{let t=(0,B.getElementInteractions)(e.id);return t?t?.items?.length>0:!1}).map(e=>{let t=(0,B.getElementInteractions)(e.id);return{elementId:e.id,dataId:e.id,interactions:t||{version:1,items:[]}}})}}),et=globalThis.elementorV2.editorMcp,H=globalThis.elementorV2.editorElements,tt=globalThis.elementorV2.editorV1Adapters,nt=globalThis.wp.i18n;function getClipboardElements(e=`clipboard`){try{return JSON.parse(localStorage.getItem(`elementor`)??`{}`)[e]?.elements}catch{return}}function isAtomicContainer(e){let t=e?.model.get(`widgetType`)||e?.model.get(`elType`);return!!(0,H.getWidgetsCache)()?.[t]?.atomic_props_schema}function getTitleForContainers(e){return e.length>1?(0,nt.__)(`Elements`,`elementor`):(0,H.getElementLabel)(e[0].id)}function normalizeClipboardInteractions(e){if(!e)return null;let t=typeof e==`string`?JSON.parse(e):e,n={version:t?.version??1,items:t?.items?.filter(e=>isSupportedInteractionItem(e))??[]};return n.items.length?n:null}function regenerateInteractionIds(e){let t=structuredClone(e);return t.items?.forEach(e=>{e.$$type===`interaction-item`&&e.value&&(e.value.interaction_id=createString(generateTempInteractionId()))}),t}function initPasteInteractionsCommand(){let e=(0,tt.undoable)({do:({containers:e,newInteractions:t})=>{let n=regenerateInteractionIds(t);return e.map(e=>{let t=e.id,r=(0,H.getElementInteractions)(t);return(0,H.updateElementInteractions)({elementId:t,interactions:n}),{elementId:t,previous:r??{version:1,items:[]}}})},undo:(e,t)=>{t.forEach(({elementId:e,previous:t})=>{(0,H.updateElementInteractions)({elementId:e,interactions:t.items?.length?t:void 0})})}},{title:({containers:e})=>getTitleForContainers(e),subtitle:(0,nt.__)(`Interactions Pasted`,`elementor`)});(0,tt.__privateListenTo)((0,tt.commandStartEvent)(`document/elements/paste-interactions`),t=>{let n=t.args,r=n.containers??(n.container?[n.container]:[]),i=n.storageKey??`clipboard`;if(!r.length)return;let[a]=getClipboardElements(i)??[];if(!a)return;let o=normalizeClipboardInteractions(a.interactions);if(!o)return;let s=r.filter(e=>(0,H.getContainer)(e.id)).filter(isAtomicContainer);s.length&&e({containers:s,newInteractions:o})})}var rt=__toESM(globalThis.React),it=globalThis.React,at=globalThis.elementorV2.editorControls,U=globalThis.elementorV2.icons,ot=globalThis.elementorV2.ui,W=globalThis.wp.i18n,st={top:`vertical`,bottom:`vertical`,left:`horizontal`,right:`horizontal`};function parseValue(e){return e.split(`-`).filter(Boolean)}function serializeValue(e){let t=e.find(e=>e===`top`||e===`bottom`),n=e.find(e=>e===`left`||e===`right`);return t&&n?`${t}-${n}`:e[0]??``}function toggleDirection(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e.filter(e=>st[e]!==st[t]),t]}function Direction({value:e,onChange:t,interactionType:n}){let r=n===`in`,i=(0,it.useMemo)(()=>[{dir:`top`,label:r?(0,W.__)(`From top`,`elementor`):(0,W.__)(`To top`,`elementor`),Icon:r?U.ArrowDownSmallIcon:U.ArrowUpSmallIcon},{dir:`bottom`,label:r?(0,W.__)(`From bottom`,`elementor`):(0,W.__)(`To bottom`,`elementor`),Icon:r?U.ArrowUpSmallIcon:U.ArrowDownSmallIcon},{dir:`left`,label:r?(0,W.__)(`From left`,`elementor`):(0,W.__)(`To left`,`elementor`),Icon:r?U.ArrowRightIcon:U.ArrowLeftIcon},{dir:`right`,label:r?(0,W.__)(`From right`,`elementor`):(0,W.__)(`To right`,`elementor`),Icon:r?U.ArrowLeftIcon:U.ArrowRightIcon}],[r]),a=(0,it.useMemo)(()=>parseValue(e),[e]);return rt.createElement(at.StyledToggleButtonGroup,{size:`tiny`,justify:`end`,sx:{display:`grid`,gridTemplateColumns:`repeat(4, minmax(0, 25%))`,width:`100%`}},i.map(({dir:e,label:n,Icon:r})=>rt.createElement(ot.Tooltip,{key:e,title:n,disableFocusListener:!0,placement:`top`},rt.createElement(at.StyledToggleButton,{value:e,selected:a.includes(e),"aria-label":n,size:`tiny`,isPlaceholder:!1,onChange:()=>{t(serializeValue(toggleDirection(a,e)))}},rt.createElement(r,{fontSize:`tiny`})))))}var ct=__toESM(globalThis.React),G=globalThis.wp.i18n,K=__toESM(globalThis.React),lt=globalThis.React,ut=globalThis.elementorV2.editorUi,dt=globalThis.elementorV2.ui,ft=globalThis.wp.i18n,pt=__toESM(globalThis.React),mt=globalThis.React,ht=globalThis.elementorV2.editorControls,gt=globalThis.elementorV2.editorUi,_t=globalThis.elementorV2.ui,vt=globalThis.wp.i18n,yt=(0,mt.forwardRef)(({content:e,upgradeUrl:t,anchorRef:n,trackingData:r},i)=>{let[a,o]=(0,mt.useState)(!1);(0,gt.useCanvasClickHandler)(a,()=>o(!1));let s=(0,mt.useCallback)(()=>{o(e=>(e||(0,ht.trackViewPromotion)(r),!e))},[r]);(0,mt.useImperativeHandle)(i,()=>({toggle:s}),[s]);let handleToggle=e=>{e.stopPropagation(),s()};return pt.createElement(gt.PromotionPopover,{open:a,title:(0,vt.__)(`Interactions`,`elementor`),content:e,ctaText:(0,vt.__)(`Upgrade now`,`elementor`),ctaUrl:t,anchorRef:n,placement:n?`right-start`:void 0,onClose:e=>{e.stopPropagation(),o(!1)},onCtaClick:()=>(0,ht.trackUpgradePromotionClick)(r)},pt.createElement(_t.Box,{onMouseDown:e=>e.stopPropagation(),onClick:handleToggle,sx:{cursor:`pointer`,display:`inline-flex`,mr:1}},pt.createElement(gt.PromotionChip,null)))});function PromotionSelect({value:e,onChange:t,baseOptions:n,disabledOptions:r,promotionLabel:i,promotionContent:a,upgradeUrl:o,trackingData:s}){let c=(0,lt.useRef)(null),l=(0,lt.useRef)(null);return K.createElement(dt.Select,{value:e,onChange:e=>t?.(e.target.value),fullWidth:!0,displayEmpty:!0,size:`tiny`,MenuProps:{disablePortal:!0}},Object.entries(n).map(([e,t])=>K.createElement(ut.MenuListItem,{key:e,value:e},t)),K.createElement(dt.MenuSubheader,{ref:l,sx:{cursor:`pointer`,color:`text.tertiary`,fontWeight:`400`,display:`flex`,alignItems:`center`},onMouseDown:e=>{e.stopPropagation(),c.current?.toggle()}},i??(0,ft.__)(`PRO features`,`elementor`),K.createElement(yt,{content:a,upgradeUrl:o,ref:c,anchorRef:l,trackingData:s})),Object.entries(r).map(([e,t])=>K.createElement(ut.MenuListItem,{key:e,value:e,disabled:!0,sx:{pl:3}},t)))}var bt={target_name:`interactions_easing`,location_l2:`interactions`},xt={easeIn:(0,G.__)(`Ease In`,`elementor`),easeInOut:(0,G.__)(`Ease In Out`,`elementor`),easeOut:(0,G.__)(`Ease Out`,`elementor`),backIn:(0,G.__)(`Back In`,`elementor`),backInOut:(0,G.__)(`Back In Out`,`elementor`),backOut:(0,G.__)(`Back Out`,`elementor`),linear:(0,G.__)(`Linear`,`elementor`)},St=[`easeIn`];function Easing({}){let e=Object.fromEntries(Object.entries(xt).filter(([e])=>St.includes(e))),t=Object.fromEntries(Object.entries(xt).filter(([e])=>!St.includes(e)));return ct.createElement(PromotionSelect,{value:N.easing,baseOptions:e,disabledOptions:t,promotionContent:(0,G.__)(`Upgrade to control the smoothness of the interaction.`,`elementor`),upgradeUrl:`https://go.elementor.com/go-pro-interactions-easing-modal/`,trackingData:bt})}var Ct=__toESM(globalThis.React),q=globalThis.wp.i18n,wt={target_name:`interactions_effect`,location_l2:`interactions`},Tt={fade:(0,q.__)(`Fade`,`elementor`),slide:(0,q.__)(`Slide`,`elementor`),scale:(0,q.__)(`Scale`,`elementor`),custom:(0,q.__)(`Custom`,`elementor`)},Et=[`fade`,`slide`,`scale`];function Effect({value:e,onChange:t}){let n=Object.fromEntries(Object.entries(Tt).filter(([e])=>Et.includes(e))),r=Object.fromEntries(Object.entries(Tt).filter(([e])=>!Et.includes(e)));return Ct.createElement(PromotionSelect,{value:e in n?e:N.effect,onChange:t,baseOptions:n,disabledOptions:r,promotionLabel:(0,q.__)(`PRO effects`,`elementor`),promotionContent:(0,q.__)(`Upgrade to further customize your animation with opacity, scale, move, rotate and more.`,`elementor`),upgradeUrl:`https://go.elementor.com/go-pro-interactions-custom-effect-modal/`,trackingData:wt})}var Dt=__toESM(globalThis.React),Ot=globalThis.elementorV2.editorControls,kt=globalThis.wp.i18n;function EffectType({value:e,onChange:t}){let n=[{value:`in`,label:(0,kt.__)(`In`,`elementor`),renderContent:()=>(0,kt.__)(`In`,`elementor`),showTooltip:!0},{value:`out`,label:(0,kt.__)(`Out`,`elementor`),renderContent:()=>(0,kt.__)(`Out`,`elementor`),showTooltip:!0}];return Dt.createElement(Ot.ToggleButtonGroupUi,{items:n,exclusive:!0,onChange:t,value:e})}var J=__toESM(globalThis.React),At=globalThis.React,jt=globalThis.elementorV2.editorControls,Mt=globalThis.elementorV2.icons,Y=globalThis.wp.i18n,Nt=__toESM(globalThis.React),Pt=globalThis.React,Ft=globalThis.elementorV2.ui,It=`1 / 1`,Lt=`50%`,Rt=(0,Pt.forwardRef)(({children:e,promotionChip:t},n)=>Nt.createElement(Ft.Box,{ref:n,sx:{display:`grid`,alignItems:`center`}},Nt.createElement(Ft.Box,{sx:{gridArea:It}},e),Nt.createElement(Ft.Box,{sx:{gridArea:It,marginInlineEnd:Lt,justifySelf:`end`}},t))),zt={target_name:`interactions_repeat`,location_l2:`interactions`},Bt={times:(0,Y.__)(`times`,`elementor`),loop:(0,Y.__)(`loop`,`elementor`)},Vt={times:(0,Y.__)(`Enable number`,`elementor`),loop:(0,Y.__)(`Infinite repeat`,`elementor`)};function Repeat(){let e=(0,At.useRef)(null),t=[{value:Bt.times,disabled:!0,label:Vt.times,renderContent:({size:e})=>J.createElement(Mt.Number123Icon,{fontSize:e}),showTooltip:!0},{value:Bt.loop,disabled:!0,label:Vt.loop,renderContent:({size:e})=>J.createElement(Mt.RepeatIcon,{fontSize:e}),showTooltip:!0}];return J.createElement(Rt,{ref:e,promotionChip:J.createElement(yt,{content:(0,Y.__)(`Upgrade to control how many times the animation repeats.`,`elementor`),upgradeUrl:`https://go.elementor.com/go-pro-interactions-repeat-modal/`,anchorRef:e,trackingData:zt})},J.createElement(jt.ToggleButtonGroupUi,{items:t,exclusive:!0,onChange:()=>{},value:``}))}var X=__toESM(globalThis.React),Ht=globalThis.React,Ut=globalThis.elementorV2.editorControls,Wt=globalThis.elementorV2.icons,Gt=globalThis.wp.i18n,Kt={target_name:`interactions_replay`,location_l2:`interactions`},qt={no:(0,Gt.__)(`No`,`elementor`),yes:(0,Gt.__)(`Yes`,`elementor`)},Jt=[`no`];function Replay({onChange:e}){let t=(0,Ht.useRef)(null),n=[{value:!1,disabled:!1,label:qt.no,renderContent:({size:e})=>X.createElement(Wt.MinusIcon,{fontSize:e}),showTooltip:!0},{value:!0,disabled:!0,label:qt.yes,renderContent:({size:e})=>X.createElement(Wt.CheckIcon,{fontSize:e}),showTooltip:!0}];return X.createElement(Rt,{ref:t,promotionChip:X.createElement(yt,{content:(0,Gt.__)(`Upgrade to run the animation every time its trigger occurs.`,`elementor`),upgradeUrl:`https://go.elementor.com/go-pro-interactions-replay-modal/`,anchorRef:t,trackingData:Kt})},X.createElement(Ut.ToggleButtonGroupUi,{items:n,exclusive:!0,onChange:e,value:!1}))}var Yt=__toESM(globalThis.React),Z=globalThis.wp.i18n,Xt={target_name:`interactions_trigger`,location_l2:`interactions`},Zt={load:(0,Z.__)(`Page load`,`elementor`),scrollIn:(0,Z.__)(`Scroll into view`,`elementor`),scrollOn:(0,Z.__)(`While scrolling`,`elementor`),hover:(0,Z.__)(`On hover`,`elementor`),click:(0,Z.__)(`On click`,`elementor`)},Qt=[`load`,`scrollIn`];function Trigger({value:e,onChange:t}){let n=Object.fromEntries(Object.entries(Zt).filter(([e])=>Qt.includes(e))),r=Object.fromEntries(Object.entries(Zt).filter(([e])=>!Qt.includes(e)));return Yt.createElement(PromotionSelect,{value:e in n?e:N.trigger,onChange:t,baseOptions:n,disabledOptions:r,promotionLabel:(0,Z.__)(`PRO triggers`,`elementor`),promotionContent:(0,Z.__)(`Upgrade to unlock more interactions triggers.`,`elementor`),upgradeUrl:`https://go.elementor.com/go-pro-interactions-triggers-modal/`,trackingData:Xt})}var $t=globalThis.elementorV2.editorElements,en=globalThis.elementorV2.editorV1Adapters;function initCleanInteractionIdsOnDuplicate(){(0,en.registerDataHook)(`after`,`document/elements/duplicate`,(e,t)=>{!t||typeof t==`boolean`&&t===!1||((Array.isArray(t)?t:[t]).forEach(e=>{cleanInteractionIdsRecursive(e.id)}),window.dispatchEvent(new CustomEvent(`elementor/element/update_interactions`)))})}function cleanInteractionIdsRecursive(e){let t=(0,$t.getContainer)(e);t&&(0,$t.getAllDescendants)(t).forEach(e=>{cleanInteractionIds(e.id)})}function cleanInteractionIds(e){let t=(0,$t.getContainer)(e);if(!t)return;let n=t.model.get(`interactions`);if(!n||!n.items)return;let r=structuredClone(n);r?.items?.forEach(e=>{e.$$type===`interaction-item`&&e.value&&(e.value.interaction_id=createString(generateTempInteractionId()))}),t.model.set(`interactions`,r)}var tn=globalThis.elementorV2.utils,Q=globalThis.elementorV2.schema,nn={trigger:Q.z.enum([`load`,`scrollIn`]).optional().describe(`Event that triggers the animation`),effect:Q.z.enum([`fade`,`slide`,`scale`]).optional().describe(`Animation effect type`),effectType:Q.z.enum([`in`,`out`]).optional().describe(`Whether the animation plays in or out`),direction:Q.z.enum([`top`,`bottom`,`left`,`right`,`top-left`,`top-right`,`bottom-left`,`bottom-right`]).optional().describe(`Direction of the Animation. Can be one of the following or empty if not needed. At slide effect, this is required field.`),duration:Q.z.number().min(0).max(1e4).optional().describe(`Animation duration in milliseconds`),delay:Q.z.number().min(0).max(1e4).optional().describe(`Animation delay in milliseconds`),easing:Q.z.enum([`easeIn`]).optional().describe(`Easing function for the animation. Use "easeIn" for free tier.`),excludedBreakpoints:Q.z.array(Q.z.enum([`widescreen`,`desktop`,`laptop`,`tablet_extra`,`tablet`,`mobile_extra`,`mobile`])).optional().describe(`Breakpoint IDs on which this interaction is disabled (e.g. ["mobile", "tablet"]). Fetch the "elementor://breakpoints/list" resource to get the valid IDs for the current site. Omit to enable on all breakpoints.`)},rn={trigger:Q.z.enum([`load`,`scrollIn`,`scrollOut`,`scrollOn`,`hover`,`click`]).optional().describe(`Event that triggers the animation`),effect:Q.z.enum([`fade`,`slide`,`scale`,`custom`]).optional().describe(`Animation effect type`),easing:Q.z.enum([`easeIn`,`easeInOut`,`easeOut`,`backIn`,`backInOut`,`backOut`,`linear`]).optional().describe(`Easing function for the animation.`),customEffects:Q.z.object({keyframes:Q.z.array(Q.z.object({stop:Q.z.number().describe(`The stop of the keyframe in percent, can be either 0 or 100`),value:Q.z.object({opacity:Q.z.number().min(0).max(1).describe(`The opacity of the keyframe`),scale:Q.z.object({x:Q.z.number().min(0).max(1).describe(`The x scale of the keyframe`),y:Q.z.number().min(0).max(1).describe(`The y scale of the keyframe`)}).optional().describe(`The scale of the keyframe`),rotate:Q.z.object({x:Q.z.number().min(0).max(360).describe(`The x rotate of the keyframe`),y:Q.z.number().min(0).max(360).describe(`The y rotate of the keyframe`),z:Q.z.number().min(0).max(360).describe(`The z rotate of the keyframe`)}).optional().describe(`The rotate of the keyframe`),move:Q.z.object({x:Q.z.number().min(0).max(1).describe(`The x move of the keyframe`),y:Q.z.number().min(0).max(1).describe(`The y move of the keyframe`),z:Q.z.number().min(0).max(1).describe(`The z move of the keyframe`)}).optional().describe(`The move of the keyframe`),skew:Q.z.object({x:Q.z.number().min(0).max(360).describe(`The x skew of the keyframe`),y:Q.z.number().min(0).max(360).describe(`The y skew of the keyframe`)}).optional().describe(`The skew of the keyframe`)})})).describe(`The keyframes of the custom effect`)}).optional().describe(`The custom effect to use for the animation`)},an=`elementor://interactions/schema`,initInteractionsSchemaResource=e=>{let{resource:t}=e,n=(0,tn.isProActive)()?{...nn,...rn}:nn;t(`interactions-schema`,an,{description:`Schema describing all available options for element interactions.`},async()=>({contents:[{uri:an,mimeType:`application/json`,text:JSON.stringify(n)}]}))},on=globalThis.elementorV2.editorElements,$=globalThis.elementorV2.schema,sn=globalThis.elementorV2.utils,cn=5,ln=`Everything related to V4 ( Atomic ) interactions.
2 +# Interactions
3 +- Create/update/delete interactions
4 +- Get list of interactions
5 +- Get details of an interaction
6 +`,un=`MCP server for managing element interactions and animations. Use this to add, modify, or remove animations and motion effects triggered by user events such as page load or scroll-into-view.
7 + ** IMPORTANT **
8 + Use the "interactions-schema" resource to get the schema of the interactions.
9 + Actions:
10 + - get: Read the current interactions on the element.
11 + - add: Add a new interaction (max ${cn} per element).
12 + - update: Update an existing interaction by its interactionId.
13 + - delete: Remove a specific interaction by its interactionId.
14 + - clear: Remove all interactions from the element.
15 +
16 + For add/update, provide: trigger, effect, effectType, direction (required for slide effect), duration, delay, easing.
17 + Use excludedBreakpoints to disable the animation on specific responsive breakpoints (e.g. ["mobile", "tablet"]).
18 + Example Get Request:
19 + {
20 + "elementId": "123",
21 + "action": "get",
22 + "interactionId": "123",
23 + "animationData": {
24 + "trigger": "click",
25 + "effect": "fade",
26 + }
27 + }
28 + Example Add Request:
29 + {
30 + "elementId": "123",
31 + "action": "add",
32 + "animationData": {
33 + "effectType": "in",
34 + "direction": "top",
35 + "trigger": "click",
36 + "effect": "fade",
37 + "duration": 1000,
38 + "delay": 0,
39 + "easing": "easeIn",
40 + "excludedBreakpoints": ["mobile", "tablet"],
41 + }
42 + }
43 + Example Update Request:
44 + {
45 + "elementId": "123",
46 + "action": "update",
47 + "interactionId": "123",
48 + "animationData": {
49 + "trigger": "click",
50 + "effect": "fade",
51 + }
52 + }
53 + Example Delete Request:
54 + {
55 + "elementId": "123",
56 + "action": "delete",
57 + "interactionId": "123",
58 + }
59 + Example Clear Request:
60 + {
61 + "elementId": "123",
62 + "action": "clear",
63 + }`,dn={version:1,items:[]},fn=[`custom`],pn=`elementor://breakpoints/list`,initManageElementInteractionTool=e=>{let{addTool:t}=e,n=(0,sn.isProActive)()?{...nn,...rn}:nn;t({name:`manage-element-interaction`,description:`Manage the element interaction.`,schema:{elementId:$.z.string().describe(`The ID of the element to read or modify interactions on`),action:$.z.enum([`get`,`add`,`update`,`delete`,`clear`]).describe(`Operation to perform. Use "get" first to inspect existing interactions.`),interactionId:$.z.string().optional().describe(`Interaction ID — required for update and delete. Obtain from a prior "get" call.`),...n},requiredResources:[{uri:an,description:`Interactions schema with all available options`},{uri:pn,description:`Available breakpoint IDs for excludedBreakpoints`}],isDestructive:!0,outputSchema:{success:$.z.boolean().describe(`Whether the action was successful`),action:$.z.enum([`get`,`add`,`update`,`delete`,`clear`]).describe(`Operation to perform. Use "get" first to inspect existing interactions.`),elementId:$.z.string().optional().describe(`The ID of the element to read or modify interactions on`),interactions:$.z.array($.z.any()).optional().describe(`The interactions on the element`),count:$.z.number().optional().describe(`The number of interactions on the element`)},handler:e=>{let{elementId:t,action:n,interactionId:r,...i}=e,{effectType:a,...o}=i,s=o.effect,c=a??(s&&!fn.includes(s)?`in`:void 0),l=z.all().find(e=>e.elementId===t)?.interactions??dn;if(n===`get`){let e=l.items.map(e=>{let{value:t}=e,n=t.animation.value,r=n.timing_config.value,i=n.config.value;return{id:extractString(t.interaction_id),trigger:extractString(t.trigger),effect:extractString(n.effect),effectType:extractString(n.type),direction:extractString(n.direction),duration:extractSize(r.duration),delay:extractSize(r.delay),easing:extractString(i.easing),excludedBreakpoints:extractExcludedBreakpoints(t.breakpoints)}});return{success:!0,elementId:t,action:n,interactions:e,count:e.length}}let u=[...l.items];switch(n){case`add`:{if(u.length>=cn)throw Error(`Cannot add more than ${cn} interactions per element. Current count: ${u.length}. Delete an existing interaction first.`);let e=createInteractionItem({interactionId:generateTempInteractionId(),...o,type:c});u=[...u,e];break}case`update`:{if(!r)throw Error(`interactionId is required for the update action.`);let e=u.findIndex(e=>extractString(e.value.interaction_id)===r);if(e===-1)throw Error(`Interaction with ID "${r}" not found on element "${t}".`);let n=createInteractionItem({interactionId:r,...o,type:c});u=[...u.slice(0,e),n,...u.slice(e+1)];break}case`delete`:{if(!r)throw Error(`interactionId is required for the delete action.`);let e=u.length;if(u=u.filter(e=>extractString(e.value.interaction_id)!==r),u.length===e)throw Error(`Interaction with ID "${r}" not found on element "${t}".`);break}case`clear`:u=[];break}let d={...l,items:u};try{(0,on.updateElementInteractions)({elementId:t,interactions:d})}catch(e){throw Error(`Failed to update interactions for element "${t}": ${e instanceof Error?e.message:`Unknown error`}`)}return{success:!0,action:n,elementId:t,count:u.length}}})},initMcpInteractions=e=>{let{setMCPDescription:t}=e;t(`Everything related to V4 ( Atomic ) interactions.
64 +# Interactions
65 +- Create/update/delete interactions
66 +- Get list of interactions
67 +- Get details of an interaction
68 +`),initInteractionsSchemaResource(e),initManageElementInteractionTool(e)};function init(){try{z.register($e),initCleanInteractionIdsOnDuplicate(),initPasteInteractionsCommand(),registerInteractionsControl({type:`trigger`,component:Trigger,options:[`load`,`scrollIn`]}),registerInteractionsControl({type:`easing`,component:Easing,options:[`easeIn`]}),registerInteractionsControl({type:`replay`,component:Replay,options:[`no`]}),registerInteractionsControl({type:`effectType`,component:EffectType,options:[`in`,`out`]}),registerInteractionsControl({type:`direction`,component:Direction,options:[`top`,`bottom`,`left`,`right`]}),registerInteractionsControl({type:`effect`,component:Effect,options:[`fade`,`slide`,`scale`]}),registerInteractionsControl({type:`repeat`,component:Repeat}),initMcpInteractions((0,et.getMCPByDomain)(`interactions`,{docs:un,instructions:ln}))}catch(e){throw e}}0&&(t.exports={BASE_EASINGS:St,BASE_EFFECTS:Et,BASE_REPLAY:Jt,BASE_TRIGGERS:Qt,DEFAULT_VALUES:N,EASING_OPTIONS:xt,EFFECT_OPTIONS:Tt,ELEMENTS_INTERACTIONS_PROVIDER_KEY_PREFIX:V,EmptyState,InteractionsTab,REPEAT_OPTIONS:Bt,REPEAT_TOOLTIPS:Vt,REPLAY_OPTIONS:qt,SCROLL_INTERACTION_EVENT:je,TRIGGER_OPTIONS:Zt,buildDisplayLabel,createAnimationPreset,createBoolean,createConfig,createDefaultInteractionItem,createDefaultInteractions,createExcludedBreakpoints,createInteractionBreakpoints,createInteractionItem,createInteractionsProvider,createNumber,createString,createTimingConfig,dispatchScrollInteraction,extractBoolean,extractExcludedBreakpoints,extractScrollOverlayParams,extractSize,extractString,formatSizeValue,generateTempInteractionId,getInteractionsConfig,init,interactionsRepository:z,isTempId,parseSizeValue,registerInteractionsControl,resolveDirection,syncGridOverlay,useElementInteractions})}))());(window.elementorV2=window.elementorV2||{}).editorInteractions=o})(),window.elementorV2.editorInteractions?.init?.();