← All changes
|
assets/js/packages/editor-interactions/editor-interactions.min.js
+68
-1
4.1.0-dev2
→
4.3.2
View file →
| @@ -1 +1,68 @@ | ||
| 1 | -!function(){"use strict";var e={d:function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{BASE_EASINGS:function(){return He},BASE_EFFECTS:function(){return Ze},BASE_REPLAY:function(){return ut},BASE_TRIGGERS:function(){return ft},DEFAULT_VALUES:function(){return be},EASING_OPTIONS:function(){return Ye},EFFECT_OPTIONS:function(){return Qe},ELEMENTS_INTERACTIONS_PROVIDER_KEY_PREFIX:function(){return je},EmptyState:function(){return a},InteractionsTab:function(){return $e},REPEAT_OPTIONS:function(){return it},REPEAT_TOOLTIPS:function(){return at},REPLAY_OPTIONS:function(){return st},SCROLL_INTERACTION_EVENT:function(){return se},TRIGGER_OPTIONS:function(){return pt},buildDisplayLabel:function(){return H},createAnimationPreset:function(){return L},createBoolean:function(){return D},createConfig:function(){return R},createDefaultInteractionItem:function(){return F},createDefaultInteractions:function(){return N},createExcludedBreakpoints:function(){return j},createInteractionBreakpoints:function(){return V},createInteractionItem:function(){return G},createInteractionsProvider:function(){return Ue},createNumber:function(){return $},createString:function(){return P},createTimingConfig:function(){return A},dispatchScrollInteraction:function(){return ue},extractBoolean:function(){return U},extractExcludedBreakpoints:function(){return M},extractScrollOverlayParams:function(){return me},extractSize:function(){return W},extractString:function(){return q},formatSizeValue:function(){return h},generateTempInteractionId:function(){return z},getInteractionsConfig:function(){return k},init:function(){return kt},interactionsRepository:function(){return Re},isTempId:function(){return S},parseSizeValue:function(){return v},registerInteractionsControl:function(){return m},resolveDirection:function(){return ve},syncGridOverlay:function(){return de},useElementInteractions:function(){return Z}});var n=window.React,r=window.elementorV2.icons,o=window.elementorV2.ui,i=window.wp.i18n;const a=({onCreateInteraction:e})=>n.createElement(o.Stack,{alignItems:"center",justifyContent:"center",height:"100%",color:"text.secondary",sx:{p:2.5,pt:8,pb:5.5},gap:1.5},n.createElement(r.SwipeIcon,{fontSize:"large"}),n.createElement(o.Typography,{align:"center",variant:"subtitle2"},(0,i.__)("Animate elements with Interactions","elementor")),n.createElement(o.Typography,{align:"center",variant:"caption",maxWidth:"170px"},(0,i.__)("Add entrance animations and effects triggered by user interactions such as page load or scroll.","elementor")),n.createElement(o.Button,{variant:"outlined",color:"secondary",size:"small",sx:{mt:1},onClick:e},(0,i.__)("Create an interaction","elementor")));var l=window.elementorV2.session,c=window.elementorV2.editorElements,s=window.elementorV2.editorV1Adapters;const u=new Map;function m({type:e,component:t,options:n}){u.set(e,{type:e,component:t,options:n})}var d=window.elementorV2.editorProps;const p=["s","ms"],f="ms",g=/^(?:(-?\d*\.?\d+)([a-z%]+)|([a-z%]+))$/i,v=(e,t,n,r)=>{if("number"==typeof e)return{size:e,unit:r};const o=y(e,t,r);if(o)return o;if(n){const e=y(n,t,r);if(e)return e}return b(null,r)},y=(e,t,n)=>{if("number"==typeof e)return b(e,n);const r=e&&e.match(g);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)?b(o,i):null},h=({size:e,unit:t})=>`${e??""}${t}`,b=(e,t)=>({size:e,unit:t}),E="deg",_=(e,t="%")=>({$$type:"size",value:{size:e,unit:t}}),I=e=>({$$type:"number",value:e}),w=(e,t,n,r)=>({$$type:e,value:{x:_(t.x??n.x,r),y:_(t.y??n.y,r),z:_(t.z??n.z,r)}}),T=e=>{const t={};if(void 0!==e.opacity){const n=e.opacity<=1?Math.round(100*e.opacity):e.opacity;t.opacity=_(n)}return void 0!==e.scale&&(t.scale=((e,t,n)=>({$$type:"transform-scale",value:{x:I(t.x??n.x),y:I(t.y??n.y),z:I(t.z??n.z)}}))(0,e.scale,{x:1,y:1,z:1})),void 0!==e.rotate&&(t.rotate=w("transform-rotate",e.rotate,{x:0,y:0,z:0},E)),void 0!==e.move&&(t.move=w("transform-move",e.move,{x:0,y:0,z:0},"px")),void 0!==e.skew&&(t.skew=(e=>({$$type:"transform-skew",value:{x:_(e.x??0,E),y:_(e.y??0,E)}}))(e.skew)),{$$type:"keyframe-stop-settings",value:t}},C=e=>{return"object"==typeof(t=e)&&null!==t&&"stop"in t&&"value"in t&&!("$$type"in t)?{$$type:"keyframe-stop",value:{stop:_(e.stop),settings:T(e.value)}}:e;var t};function k(){return window.ElementorInteractionsConfig??{}}const x="temp-",O=/^temp-[a-z0-9]+$/i;function z(){return`${x}${Math.random().toString(36).substring(2,11)}`}function S(e){return!!e&&O.test(e)}const P=e=>({$$type:"string",value:e}),$=e=>({$$type:"number",value:e}),A=(e,t)=>({$$type:"timing-config",value:{duration:d.sizePropTypeUtil.create(v(e,p,void 0,f)),delay:d.sizePropTypeUtil.create(v(t,p,void 0,f))}}),D=e=>({$$type:"boolean",value:e}),R=({replay:e,easing:t="easeIn",relativeTo:n="viewport",repeat:r="",times:o=1,start:i=85,end:a=15})=>({$$type:"config",value:{replay:D(e),easing:P(t),relativeTo:P(n),repeat:P(r),times:$(o),start:B(i,"%"),end:B(a,"%")}}),B=(e,t,n)=>{if(e)return d.sizePropTypeUtil.create(v(e,["%"],n,t))},U=(e,t=!1)=>e?.value??t,j=e=>({$$type:"excluded-breakpoints",value:e.map(P)}),V=e=>({$$type:"interaction-breakpoints",value:{excluded:j(e)}}),M=e=>e?.value.excluded.value.map(e=>e.value)??[],L=({effect:e,type:t,direction:n,duration:r,delay:o,replay:i=!1,easing:a="easeIn",relativeTo:l,repeat:c,times:s,start:u,end:m,customEffects:d})=>{const p=(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(C)})}}:e})(d);return{$$type:"animation-preset-props",value:{effect:P(e),...void 0!==p&&{custom_effect:p},type:P(t),direction:P(n??""),timing_config:A(r,o),config:R({replay:i,easing:a,relativeTo:l,repeat:c,times:s,start:u,end:m})}}},G=({trigger:e,effect:t,type:n,direction:r,duration:o,delay:i,interactionId:a,replay:l=!1,easing:c="easeIn",relativeTo:s,repeat:u,times:m,start:d,end:p,excludedBreakpoints:f,customEffects:g})=>({$$type:"interaction-item",value:{...a&&{interaction_id:P(a)},trigger:P(e??""),animation:L({effect:t??"",type:n??"",direction:r,duration:o??0,delay:i??0,replay:l,easing:c,relativeTo:s,repeat:u,times:m,start:d,end:p,customEffects:g}),...f&&f.length>0&&{breakpoints:V(f)}}}),F=()=>{const{constants:e}=k();return G({trigger:"load",effect:"fade",type:"in",duration:e.defaultDuration,delay:e.defaultDelay,replay:!1,easing:e.defaultEasing,interactionId:z()})},N=()=>({version:1,items:[F()]}),q=(e,t="")=>e?.value??t,W=(e,t)=>e?.value?h(e.value):t,K={load:"On page load",scrollIn:"Scroll into view",scrollOut:"Scroll out of view",scrollOn:"While scrolling"},Y=e=>e.charAt(0).toUpperCase()+e.slice(1),H=e=>{const t=q(e.trigger),n=q(e.animation.value.effect),r=q(e.animation.value.type);return`${K[t]||Y(t)}: ${Y(n)} ${"custom"===n?"":Y(r)}`};function J(e){const t=e.value;return!0===U(t.animation.value.config?.value.replay)?X("replay","yes"):[["trigger",q(t.trigger)],["easing",q(t.animation.value.config?.value.easing)],["effect",q(t.animation.value.effect)]].every(([e,t])=>""===t||null===t||X(e,t))}function X(e,t){const n=(r=e,u.get(r)?.options??[]);var r;return 1>n.length||n.includes(t)}const Q=e=>e.filter(e=>J(e)),Z=e=>{const[t,r]=(0,n.useState)(()=>{const t=(0,c.getElementInteractions)(e),n=Q(t?.items??[]);return{version:t?.version??1,items:n}});return(0,s.__privateUseListenTo)((0,s.windowEvent)("elementor/element/update_interactions"),()=>{const t=(0,c.getElementInteractions)(e),n=Q(t?.items??[]);r({version:t?.version??1,items:n})},[e]),t},ee=(0,n.createContext)(null),te={version:1,items:[]},ne=({children:e,elementId:t})=>{const r=Z(t);(0,n.useEffect)(()=>{window.dispatchEvent(new CustomEvent("elementor/element/update_interactions"))},[]);const o=r??te,a=(0,n.useMemo)(()=>(0,s.undoable)({do:({interactions:e})=>{const n=(0,c.getElementInteractions)(t);return(0,c.updateElementInteractions)({elementId:t,interactions:e}),n},undo:(e,n)=>{(0,c.updateElementInteractions)({elementId:t,interactions:n?.items?.length?n:void 0})}},{title:(0,c.getElementLabel)(t),subtitle:({operationType:e})=>"apply"===e?(0,i.__)("Interaction Applied","elementor"):(0,i.__)("Interaction Deleted","elementor")}),[t]),l={elementId:t,interactions:o,setInteractions:e=>{const n=e&&0===e.items?.length?void 0:e,r=o.items?.length??0,i=n?.items?.length??0;i>r?a({interactions:n,operationType:"apply"}):i<r?a({interactions:n,operationType:"delete"}):(0,c.updateElementInteractions)({elementId:t,interactions:n})},playInteractions:e=>{(0,c.playElementInteractions)(t,e)}};return n.createElement(ee.Provider,{value:l},e)},re=()=>{const e=(0,n.useContext)(ee);if(!e)throw new Error("useInteractionsContext must be used within InteractionsProvider");return e},oe=(0,n.createContext)(void 0),ie=({children:e})=>{const[t,r]=(0,n.useState)(!1),o=(0,n.useCallback)(()=>{r(!0)},[]),i=(0,n.useCallback)(()=>{r(!1)},[]);return n.createElement(oe.Provider,{value:{openByDefault:t,triggerDefaultOpen:o,resetDefaultOpen:i}},e)};var ae=window.elementorV2.editorControls;const le=(0,n.createContext)(null);function ce({value:e,children:t}){return n.createElement(le.Provider,{value:e},t)}const se="elementor/interactions/scroll-change";function ue(e){window.dispatchEvent(new CustomEvent(se,{detail:e}))}function me(e,t){return{trigger:q(e.trigger,t.trigger),start:W(e.animation.value.config?.value.start,t.start),end:W(e.animation.value.config?.value.end,t.end),relativeTo:q(e.animation.value.config?.value.relativeTo,t.relativeTo)}}function de(e,t,n,r){ue("scrollOn"===e?{start:t,end:n,relativeTo:r}:null)}var pe=window.elementorV2.events;const fe={load:"On page load",scrollIn:"Scroll into view",scrollOut:"Scroll out of view",scrollOn:"While scrolling",hover:"Hover",click:"Click"},ge=e=>e.charAt(0).toUpperCase()+e.slice(1),ve=(e,t,n,r,o)=>"slide"!==t||n?"slide"===o&&e?n||"top":e?n:r:"top";function ye({value:e,onChange:t,defaultValue:r}){const o=v(e,p,r,f),i=(0,n.useCallback)(e=>{t(h(e))},[t]);return n.createElement(ae.SizeComponent,{units:p,value:o,setValue:i,onBlur:e=>{e.target.value||i(v(r,p,void 0,f))},InputProps:{inputProps:{min:0}}})}const he=({label:e,children:t})=>n.createElement(o.Grid,{item:!0,xs:12,"aria-label":`${e} control`},n.createElement(ae.PopoverGridContainer,null,n.createElement(o.Grid,{item:!0,xs:6},n.createElement(ae.ControlFormLabel,null,e)),n.createElement(o.Grid,{item:!0,xs:6},t))),be={trigger:"load",effect:"fade",type:"in",direction:"",duration:600,delay:0,replay:!1,easing:"easeIn",relativeTo:"viewport",repeat:"",times:1,start:85,end:15},Ee=["load","scrollOn","hover","click"],_e=e=>"scrollOn"===e.trigger;function Ie(e,t){const n=Number(e);return Number.isFinite(n)?Math.max(1,Math.floor(n)):t}function we(e,t=!0){return(0,n.useMemo)(()=>{return t?(n=e,u.get(n))?.component??null:null;var n},[e,t])}const Te=({interaction:e,onChange:t,onPlayInteraction:r})=>{const a=q(e.trigger,be.trigger),l=q(e.animation.value.effect,be.effect),c=e.animation.value.custom_effect,s=q(e.animation.value.type,be.type),u=q(e.animation.value.direction,be.direction),m=W(e.animation.value.timing_config.value.duration),d=W(e.animation.value.timing_config.value.delay),p=U(e.animation.value.config?.value.replay,be.replay),f=q(e.animation.value.config?.value.easing,be.easing),g=q(e.animation.value.config?.value.relativeTo,be.relativeTo),y=e.animation.value.config?.value,h=q(y?.repeat,be.repeat),b=Ie(y?.times?.value,be.times),E=W(e.animation.value.config?.value.start,be.start),_=W(e.animation.value.config?.value.end,be.end),I={trigger:a,effect:l,type:s,direction:u,duration:m,delay:d,easing:f,replay:p,relativeTo:g,repeat:h,times:b,start:E,end:_,customEffects:c},w=we("trigger",!0),T=we("effect"),C=we("replay",(j=I,!Ee.includes(j.trigger))),k=we("relativeTo",_e(I)),x=we("start",(e=>"scrollOn"===e.trigger)(I)),O=we("end",(e=>"scrollOn"===e.trigger)(I)),z=we("customEffects",(e=>"custom"===e.effect)(I)),S=we("effectType",(e=>"custom"!==e.effect)(I)),$=we("direction",(e=>"custom"!==e.effect)(I)),A=we("repeat",(e=>"scrollOn"!==e.trigger)(I)),D=we("times",(e=>"scrollOn"!==e.trigger&&"times"===e.repeat)(I)),R=we("easing"),B=n=>{const o=ve("direction"in n,n.effect,n.direction,u,l),i={...e,interaction_id:e.interaction_id,trigger:P(n.trigger??a),animation:L({effect:n.effect??l,type:n.type??s,direction:o,duration:n.duration??m,delay:n.delay??d,replay:n.replay??p,easing:n.easing??f,relativeTo:n.relativeTo??g,repeat:n.repeat??h,times:n.times??b,start:n.start??E,end:n.end??_,customEffects:n.customEffects??c})};t(i),de(n.trigger??a,n.start??E,n.end??_,n.relativeTo??g);const v=q(i.interaction_id);setTimeout(()=>{r(v)},0)};var j;return n.createElement(ae.PopoverContent,{p:1.5},n.createElement(o.Grid,{container:!0,spacing:1.5},w&&n.createElement(he,{label:(0,i.__)("Trigger","elementor")},n.createElement(w,{value:a,onChange:e=>B({trigger:e})})),C&&n.createElement(he,{label:(0,i.__)("Replay","elementor")},n.createElement(C,{value:p,onChange:e=>B({replay:e}),disabled:!0}))),n.createElement(o.Divider,null),n.createElement(o.Grid,{container:!0,spacing:1.5},T&&n.createElement(he,{label:(0,i.__)("Effect","elementor")},n.createElement(T,{value:l,onChange:e=>B({effect:e})})),z&&n.createElement(he,{label:(0,i.__)("Custom Effect","elementor")},n.createElement(z,{value:c,onChange:e=>B({customEffects:e})})),S&&n.createElement(he,{label:(0,i.__)("Type","elementor")},n.createElement(S,{value:s,onChange:e=>B({type:e})})),$&&n.createElement(he,{label:(0,i.__)("Direction","elementor")},n.createElement($,{value:u,onChange:e=>B({direction:e}),interactionType:s})),A&&n.createElement(he,{label:(0,i.__)("Repeat","elementor")},n.createElement(A,{value:h,onChange:e=>B({repeat:e})})),D&&n.createElement(he,{label:(0,i.__)("Times","elementor")},n.createElement(D,{value:b,onChange:e=>B({times:Ie(e,be.times)})})),(e=>!("scrollOn"===e.trigger))(I)&&n.createElement(he,{label:(0,i.__)("Duration","elementor")},n.createElement(ye,{value:String(m),onChange:e=>B({duration:e}),defaultValue:be.duration})),(e=>!("scrollOn"===e.trigger))(I)&&n.createElement(he,{label:(0,i.__)("Delay","elementor")},n.createElement(ye,{value:String(d),onChange:e=>B({delay:e}),defaultValue:be.delay}))),_e(I)&&k&&n.createElement(n.Fragment,null,n.createElement(o.Divider,null),n.createElement(o.Grid,{container:!0,spacing:1.5},x&&n.createElement(he,{label:(0,i.__)("Start","elementor")},n.createElement(x,{value:v(E,["%"]).size?.toString()??"",onChange:e=>B({start:e})})),O&&n.createElement(he,{label:(0,i.__)("End","elementor")},n.createElement(O,{value:v(_,["%"]).size?.toString()??"",onChange:e=>B({end:e})})),n.createElement(he,{label:(0,i.__)("Relative To","elementor")},n.createElement(k,{value:g,onChange:e=>B({relativeTo:e})}))),n.createElement(o.Divider,null)),R&&n.createElement(o.Grid,{container:!0,spacing:1.5},n.createElement(he,{label:(0,i.__)("Easing","elementor")},n.createElement(R,{value:f,onChange:e=>{B({easing:e})}}))))};var Ce=window.elementorV2.editorResponsive;function ke(){return ke=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ke.apply(null,arguments)}const xe="tiny",Oe=({interaction:e,onChange:t})=>{const r=(0,Ce.useBreakpoints)(),a=(0,n.useMemo)(()=>r.map(e=>({label:e.label,value:String(e.id)})),[r]),[l,c]=(0,n.useState)(()=>{const t=M(e.breakpoints).filter(e=>a.some(({value:t})=>t===e));return a.filter(({value:e})=>!t.includes(e))}),s=(0,n.useCallback)((n,r)=>{c(r);const o=r.map(e=>e.value),i=a.filter(e=>!o.includes(e.value)).map(e=>e.value),l={...e,...i.length>0&&{breakpoints:V(i)}};0===i.length&&delete l.breakpoints,t(l)},[e,a,t]);return n.createElement(ae.PopoverContent,{p:1.5},n.createElement(o.Grid,{container:!0,spacing:1.5},n.createElement(o.Grid,{item:!0,xs:12},n.createElement(o.Stack,{direction:"column",gap:1},n.createElement(ae.ControlFormLabel,{sx:{width:"100%"}},(0,i.__)("Trigger on","elementor")),n.createElement(o.Autocomplete,{fullWidth:!0,multiple:!0,value:l,onChange:s,size:xe,options:a,isOptionEqualToValue:(e,t)=>e.value===t.value,renderInput:e=>n.createElement(o.TextField,e),renderTags:(e,t)=>e.map((e,r)=>{const{key:i,...a}=t({index:r});return n.createElement(o.Chip,ke({key:i,size:xe,label:e.label},a))})})))))};function ze(){return ze=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ze.apply(null,arguments)}const Se=({index:e,value:t})=>{const{getTabsProps:r,getTabProps:a,getTabPanelProps:l}=(0,o.useTabs)("details"),c=function(){const e=(0,n.useContext)(le);if(!e)throw new Error("useInteractionItemContext must be used within InteractionItemContextProvider");return e}(),s=(0,n.useCallback)(t=>{c?.onInteractionChange(e,t)},[c,e]),u=(0,n.useCallback)(e=>{c?.onPlayInteraction(e)},[c]),m=q(t.value.interaction_id);return n.createElement(n.Fragment,null,n.createElement(o.Tabs,ze({size:"small",variant:"fullWidth","aria-label":(0,i.__)("Interaction","elementor")},r()),n.createElement(o.Tab,ze({label:(0,i.__)("Details","elementor")},a("details"))),n.createElement(o.Tab,ze({label:(0,i.__)("Settings","elementor")},a("settings")))),n.createElement(o.Divider,null),n.createElement(o.TabPanel,ze({sx:{p:0}},l("details")),n.createElement(Te,{key:m,interaction:t.value,onChange:s,onPlayInteraction:u})),n.createElement(o.TabPanel,ze({sx:{p:0}},l("settings")),n.createElement(Oe,{key:m,interaction:t.value,onChange:s})))};function Pe(e){const{interactions:t,onSelectInteractions:a,onPlayInteraction:l,triggerCreateOnShowEmpty:s}=e,{elementId:u}=re(),m=(0,n.useRef)(!1),d=(0,n.useRef)(new Set),p=(0,n.useCallback)(e=>{a(e)},[a]);(0,n.useEffect)(()=>{if(s&&!m.current&&(!t.items||0===t.items?.length)){m.current=!0;const e=F();d.current.add(q(e.value.interaction_id)),p({version:1,items:[e]})}},[s,t.items,p]);const f=(0,n.useMemo)(()=>t.items?.length>=5,[t.items?.length]),g=f?n.createElement(o.Alert,{color:"secondary",icon:n.createElement(r.InfoCircleFilledIcon,null),size:"small"},n.createElement(o.AlertTitle,null,(0,i.__)("Interactions","elementor")),n.createElement(o.Box,{component:"span"},(0,i.__)("You've reached the limit of 5 interactions for this element. Please remove an interaction before creating a new one.","elementor"))):void 0,v=(0,n.useCallback)((e,n,r)=>{if(p({...t,items:e}),"add"===r?.action?.type){const e=r.action.payload[0]?.item;e&&d.current.add(q(e.value.interaction_id))}},[t,p]),y=(0,n.useCallback)((e,n)=>{const r=structuredClone(t.items);r[e]={$$type:"interaction-item",value:n},p({...t,items:r})},[t,p]),h=(0,n.useMemo)(()=>({onInteractionChange:y,onPlayInteraction:l}),[y,l]);return n.createElement(ce,{value:h},n.createElement(ae.Repeater,{openOnAdd:!0,openItem:s?0:void 0,label:(0,i.__)("Interactions","elementor"),values:t.items,setValues:v,showDuplicate:!1,showToggle:!1,isSortable:!1,disableAddItemButton:f,addButtonInfotipContent:g,itemSettings:{initialValues:F(),Label:({value:e})=>H(e.value),Icon:()=>null,Content:Se,onPopoverOpen:e=>{const{trigger:t,start:n,end:r,relativeTo:o}=me(e.value,be);de(t,n,r,o)},onPopoverClose:e=>{ue(null);const t=q(e.value.interaction_id);d.current.has(t)&&(d.current.delete(t),((e,t)=>{const{dispatchEvent:n,config:r}=(0,pe.getMixpanel)();if(!r?.names?.interactions?.created)return;const o=q(t.value.trigger),i=q(t.value.animation.value.effect),a=q(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,c.getElementLabel)(e),interaction_result:"interaction_created",target_location:r?.locations?.widgetPanel,location_l1:(0,c.getElementLabel)(e),location_l2:"interactions",interaction_description:"interaction_created",interaction_trigger:fe[o]??ge(o),interaction_effect:"custom"===i?ge(i):`${ge(i)} ${ge(a)}`})})(u,e))},actions:e=>n.createElement(o.Tooltip,{key:"preview",placement:"top",title:(0,i.__)("Preview","elementor")},n.createElement(o.IconButton,{"aria-label":(0,i.__)("Play interaction","elementor"),size:"tiny",onClick:()=>l(q(e.value.interaction_id))},n.createElement(r.PlayerPlayIcon,{fontSize:"tiny"})))}}))}const $e=({elementId:e})=>n.createElement(ie,null,n.createElement(Ae,{elementId:e}));function Ae({elementId:e}){const t=Z(e),r=(0,n.useState)(!1),o=t?.items?.length||r[0];return n.createElement(l.SessionStorageProvider,{prefix:e},o?n.createElement(ne,{elementId:e},n.createElement(De,{firstInteractionState:r})):n.createElement(a,{onCreateInteraction:()=>{r[1](!0)}}))}function De({firstInteractionState:e}){const{interactions:t,setInteractions:r,playInteractions:i}=re(),a=(0,n.useCallback)(t=>{e[1](!1),r(t||void 0)},[r,e]);return n.createElement(o.Stack,{sx:{m:1,p:1.5},gap:2},n.createElement(Pe,{triggerCreateOnShowEmpty:e[0],interactions:t,onSelectInteractions:a,onPlayInteraction:i}))}const Re=(()=>{const e=[],t=()=>e.slice(0).sort((e,t)=>e.priority>t.priority?-1:1);return{all:()=>t().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:t,getProviderByKey:t=>e.find(e=>{try{return e.getKey()===t}catch{return!1}})}})(),Be=10;function Ue({key:e,priority:t=Be,subscribe:n=()=>()=>{},actions:r}){return{getKey:"string"==typeof e?()=>e:e,priority:t,subscribe:n,actions:{all:r.all}}}const je="document-elements-interactions-",Ve=Ue({key:()=>{const e=(0,c.getCurrentDocumentId)();return e?`${je}${e}`:`${je}pending`},priority:50,subscribe:e=>(0,s.__privateListenTo)([(0,s.windowEvent)("elementor/element/update_interactions")],()=>e()),actions:{all:()=>(0,c.getElements)().filter(e=>{const t=(0,c.getElementInteractions)(e.id);return!!t&&t?.items?.length>0}).map(e=>{const t=(0,c.getElementInteractions)(e.id);return{elementId:e.id,dataId:e.id,interactions:t||{version:1,items:[]}}})}});var Me=window.elementorV2.editorMcp;function Le(e){const t=e?.model.get("widgetType")||e?.model.get("elType"),n=(0,c.getWidgetsCache)(),r=n?.[t];return Boolean(r?.atomic_props_schema)}const Ge={top:"vertical",bottom:"vertical",left:"horizontal",right:"horizontal"};function Fe({value:e,onChange:t,interactionType:a}){const l="in"===a,c=(0,n.useMemo)(()=>[{dir:"top",label:l?(0,i.__)("From top","elementor"):(0,i.__)("To top","elementor"),Icon:l?r.ArrowDownSmallIcon:r.ArrowUpSmallIcon},{dir:"bottom",label:l?(0,i.__)("From bottom","elementor"):(0,i.__)("To bottom","elementor"),Icon:l?r.ArrowUpSmallIcon:r.ArrowDownSmallIcon},{dir:"left",label:l?(0,i.__)("From left","elementor"):(0,i.__)("To left","elementor"),Icon:l?r.ArrowRightIcon:r.ArrowLeftIcon},{dir:"right",label:l?(0,i.__)("From right","elementor"):(0,i.__)("To right","elementor"),Icon:l?r.ArrowLeftIcon:r.ArrowRightIcon}],[l]),s=(0,n.useMemo)(()=>function(e){return e.split("-").filter(Boolean)}(e),[e]);return n.createElement(ae.StyledToggleButtonGroup,{size:"tiny",justify:"end",sx:{display:"grid",gridTemplateColumns:"repeat(4, minmax(0, 25%))",width:"100%"}},c.map(({dir:e,label:r,Icon:i})=>n.createElement(o.Tooltip,{key:e,title:r,disableFocusListener:!0,placement:"top"},n.createElement(ae.StyledToggleButton,{value:e,selected:s.includes(e),"aria-label":r,size:"tiny",isPlaceholder:!1,onChange:()=>{const n=(o=e,(r=s).includes(o)?r.filter(e=>e!==o):[...r.filter(e=>Ge[e]!==Ge[o]),o]);var r,o;t(function(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))}},n.createElement(i,{fontSize:"tiny"})))))}var Ne=window.elementorV2.editorUi;const qe=(0,n.forwardRef)(({content:e,upgradeUrl:t,anchorRef:r,trackingData:a},l)=>{const[c,s]=(0,n.useState)(!1);(0,Ne.useCanvasClickHandler)(c,()=>s(!1));const u=(0,n.useCallback)(()=>{s(e=>(e||(0,ae.trackViewPromotion)(a),!e))},[a]);return(0,n.useImperativeHandle)(l,()=>({toggle:u}),[u]),n.createElement(Ne.PromotionPopover,{open:c,title:(0,i.__)("Interactions","elementor"),content:e,ctaText:(0,i.__)("Upgrade now","elementor"),ctaUrl:t,anchorRef:r,placement:r?"right-start":void 0,onClose:e=>{e.stopPropagation(),s(!1)},onCtaClick:()=>(0,ae.trackUpgradePromotionClick)(a)},n.createElement(o.Box,{onMouseDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),u()},sx:{cursor:"pointer",display:"inline-flex",mr:1}},n.createElement(Ne.PromotionChip,null)))});function We({value:e,onChange:t,baseOptions:r,disabledOptions:a,promotionLabel:l,promotionContent:c,upgradeUrl:s,trackingData:u}){const m=(0,n.useRef)(null),d=(0,n.useRef)(null);return n.createElement(o.Select,{value:e,onChange:e=>t?.(e.target.value),fullWidth:!0,displayEmpty:!0,size:"tiny",MenuProps:{disablePortal:!0}},Object.entries(r).map(([e,t])=>n.createElement(Ne.MenuListItem,{key:e,value:e},t)),n.createElement(o.MenuSubheader,{ref:d,sx:{cursor:"pointer",color:"text.tertiary",fontWeight:"400",display:"flex",alignItems:"center"},onMouseDown:e=>{e.stopPropagation(),m.current?.toggle()}},l??(0,i.__)("PRO features","elementor"),n.createElement(qe,{content:c,upgradeUrl:s,ref:m,anchorRef:d,trackingData:u})),Object.entries(a).map(([e,t])=>n.createElement(Ne.MenuListItem,{key:e,value:e,disabled:!0,sx:{pl:3}},t)))}const Ke={target_name:"interactions_easing",location_l2:"interactions"},Ye={easeIn:(0,i.__)("Ease In","elementor"),easeInOut:(0,i.__)("Ease In Out","elementor"),easeOut:(0,i.__)("Ease Out","elementor"),backIn:(0,i.__)("Back In","elementor"),backInOut:(0,i.__)("Back In Out","elementor"),backOut:(0,i.__)("Back Out","elementor"),linear:(0,i.__)("Linear","elementor")},He=["easeIn"];function Je({}){const e=Object.fromEntries(Object.entries(Ye).filter(([e])=>He.includes(e))),t=Object.fromEntries(Object.entries(Ye).filter(([e])=>!He.includes(e)));return n.createElement(We,{value:be.easing,baseOptions:e,disabledOptions:t,promotionContent:(0,i.__)("Upgrade to control the smoothness of the interaction.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-interactions-easing-modal/",trackingData:Ke})}const Xe={target_name:"interactions_effect",location_l2:"interactions"},Qe={fade:(0,i.__)("Fade","elementor"),slide:(0,i.__)("Slide","elementor"),scale:(0,i.__)("Scale","elementor"),custom:(0,i.__)("Custom","elementor")},Ze=["fade","slide","scale"];function et({value:e,onChange:t}){const r=Object.fromEntries(Object.entries(Qe).filter(([e])=>Ze.includes(e))),o=Object.fromEntries(Object.entries(Qe).filter(([e])=>!Ze.includes(e)));return n.createElement(We,{value:e in r?e:be.effect,onChange:t,baseOptions:r,disabledOptions:o,promotionLabel:(0,i.__)("PRO effects","elementor"),promotionContent:(0,i.__)("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:Xe})}function tt({value:e,onChange:t}){const r=[{value:"in",label:(0,i.__)("In","elementor"),renderContent:()=>(0,i.__)("In","elementor"),showTooltip:!0},{value:"out",label:(0,i.__)("Out","elementor"),renderContent:()=>(0,i.__)("Out","elementor"),showTooltip:!0}];return n.createElement(ae.ToggleButtonGroupUi,{items:r,exclusive:!0,onChange:t,value:e})}const nt="1 / 1",rt=(0,n.forwardRef)(({children:e,promotionChip:t},r)=>n.createElement(o.Box,{ref:r,sx:{display:"grid",alignItems:"center"}},n.createElement(o.Box,{sx:{gridArea:nt}},e),n.createElement(o.Box,{sx:{gridArea:nt,marginInlineEnd:"50%",justifySelf:"end"}},t))),ot={target_name:"interactions_repeat",location_l2:"interactions"},it={times:(0,i.__)("times","elementor"),loop:(0,i.__)("loop","elementor")},at={times:(0,i.__)("Enable number","elementor"),loop:(0,i.__)("Infinite repeat","elementor")};function lt(){const e=(0,n.useRef)(null),t=[{value:it.times,disabled:!0,label:at.times,renderContent:({size:e})=>n.createElement(r.Number123Icon,{fontSize:e}),showTooltip:!0},{value:it.loop,disabled:!0,label:at.loop,renderContent:({size:e})=>n.createElement(r.RepeatIcon,{fontSize:e}),showTooltip:!0}];return n.createElement(rt,{ref:e,promotionChip:n.createElement(qe,{content:(0,i.__)("Upgrade to control how many times the animation repeats.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-interactions-repeat-modal/",anchorRef:e,trackingData:ot})},n.createElement(ae.ToggleButtonGroupUi,{items:t,exclusive:!0,onChange:()=>{},value:""}))}const ct={target_name:"interactions_replay",location_l2:"interactions"},st={no:(0,i.__)("No","elementor"),yes:(0,i.__)("Yes","elementor")},ut=["no"];function mt({onChange:e}){const t=(0,n.useRef)(null),o=[{value:!1,disabled:!1,label:st.no,renderContent:({size:e})=>n.createElement(r.MinusIcon,{fontSize:e}),showTooltip:!0},{value:!0,disabled:!0,label:st.yes,renderContent:({size:e})=>n.createElement(r.CheckIcon,{fontSize:e}),showTooltip:!0}];return n.createElement(rt,{ref:t,promotionChip:n.createElement(qe,{content:(0,i.__)("Upgrade to run the animation every time its trigger occurs.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-interactions-replay-modal/",anchorRef:t,trackingData:ct})},n.createElement(ae.ToggleButtonGroupUi,{items:o,exclusive:!0,onChange:e,value:!1}))}const dt={target_name:"interactions_trigger",location_l2:"interactions"},pt={load:(0,i.__)("Page load","elementor"),scrollIn:(0,i.__)("Scroll into view","elementor"),scrollOn:(0,i.__)("While scrolling","elementor"),hover:(0,i.__)("On hover","elementor"),click:(0,i.__)("On click","elementor")},ft=["load","scrollIn"];function gt({value:e,onChange:t}){const r=Object.fromEntries(Object.entries(pt).filter(([e])=>ft.includes(e))),o=Object.fromEntries(Object.entries(pt).filter(([e])=>!ft.includes(e)));return n.createElement(We,{value:e in r?e:be.trigger,onChange:t,baseOptions:r,disabledOptions:o,promotionLabel:(0,i.__)("PRO triggers","elementor"),promotionContent:(0,i.__)("Upgrade to unlock more interactions triggers.","elementor"),upgradeUrl:"https://go.elementor.com/go-pro-interactions-triggers-modal/",trackingData:dt})}var vt=window.elementorV2.utils,yt=window.elementorV2.schema;const ht={trigger:yt.z.enum(["load","scrollIn"]).optional().describe("Event that triggers the animation"),effect:yt.z.enum(["fade","slide","scale"]).optional().describe("Animation effect type"),effectType:yt.z.enum(["in","out"]).optional().describe("Whether the animation plays in or out"),direction:yt.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:yt.z.number().min(0).max(1e4).optional().describe("Animation duration in milliseconds"),delay:yt.z.number().min(0).max(1e4).optional().describe("Animation delay in milliseconds"),easing:yt.z.enum(["easeIn"]).optional().describe('Easing function for the animation. Use "easeIn" for free tier.'),excludedBreakpoints:yt.z.array(yt.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.')},bt={trigger:yt.z.enum(["load","scrollIn","scrollOut","scrollOn","hover","click"]).optional().describe("Event that triggers the animation"),effect:yt.z.enum(["fade","slide","scale","custom"]).optional().describe("Animation effect type"),easing:yt.z.enum(["easeIn","easeInOut","easeOut","backIn","backInOut","backOut","linear"]).optional().describe("Easing function for the animation."),customEffects:yt.z.object({keyframes:yt.z.array(yt.z.object({stop:yt.z.number().describe("The stop of the keyframe in percent, can be either 0 or 100"),value:yt.z.object({opacity:yt.z.number().min(0).max(1).describe("The opacity of the keyframe"),scale:yt.z.object({x:yt.z.number().min(0).max(1).describe("The x scale of the keyframe"),y:yt.z.number().min(0).max(1).describe("The y scale of the keyframe")}).optional().describe("The scale of the keyframe"),rotate:yt.z.object({x:yt.z.number().min(0).max(360).describe("The x rotate of the keyframe"),y:yt.z.number().min(0).max(360).describe("The y rotate of the keyframe"),z:yt.z.number().min(0).max(360).describe("The z rotate of the keyframe")}).optional().describe("The rotate of the keyframe"),move:yt.z.object({x:yt.z.number().min(0).max(1).describe("The x move of the keyframe"),y:yt.z.number().min(0).max(1).describe("The y move of the keyframe"),z:yt.z.number().min(0).max(1).describe("The z move of the keyframe")}).optional().describe("The move of the keyframe"),skew:yt.z.object({x:yt.z.number().min(0).max(360).describe("The x skew of the keyframe"),y:yt.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")},Et="elementor://interactions/schema",_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",It='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}',wt={version:1,items:[]},Tt=["custom"],Ct=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,vt.isProActive)()?{...ht,...bt}:ht;t("interactions-schema",Et,{description:"Schema describing all available options for element interactions."},async()=>({contents:[{uri:Et,mimeType:"application/json",text:JSON.stringify(n)}]}))})(e),(e=>{const{addTool:t}=e,n=(0,vt.isProActive)()?{...ht,...bt}:ht;t({name:"manage-element-interaction",description:"Manage the element interaction.",schema:{elementId:yt.z.string().describe("The ID of the element to read or modify interactions on"),action:yt.z.enum(["get","add","update","delete","clear"]).describe('Operation to perform. Use "get" first to inspect existing interactions.'),interactionId:yt.z.string().optional().describe('Interaction ID — required for update and delete. Obtain from a prior "get" call.'),...n},requiredResources:[{uri:Et,description:"Interactions schema with all available options"},{uri:"elementor://breakpoints/list",description:"Available breakpoint IDs for excludedBreakpoints"}],isDestructive:!0,outputSchema:{success:yt.z.boolean().describe("Whether the action was successful"),action:yt.z.enum(["get","add","update","delete","clear"]).describe('Operation to perform. Use "get" first to inspect existing interactions.'),elementId:yt.z.string().optional().describe("The ID of the element to read or modify interactions on"),interactions:yt.z.array(yt.z.any()).optional().describe("The interactions on the element"),count:yt.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,s=i??(l&&!Tt.includes(l)?"in":void 0),u=Re.all().find(e=>e.elementId===t),m=u?.interactions??wt;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:q(t.interaction_id),trigger:q(t.trigger),effect:q(n.effect),effectType:q(n.type),direction:q(n.direction),duration:W(r.duration),delay:W(r.delay),easing:q(o.easing),excludedBreakpoints:M(t.breakpoints)}});return{success:!0,elementId:t,action:n,interactions:e,count:e.length}}let d=[...m.items];switch(n){case"add":{if(d.length>=5)throw new Error(`Cannot add more than 5 interactions per element. Current count: ${d.length}. Delete an existing interaction first.`);const e=G({interactionId:z(),...a,type:s});d=[...d,e];break}case"update":{if(!r)throw new Error("interactionId is required for the update action.");const e=d.findIndex(e=>q(e.value.interaction_id)===r);if(-1===e)throw new Error(`Interaction with ID "${r}" not found on element "${t}".`);const n=G({interactionId:r,...a,type:s});d=[...d.slice(0,e),n,...d.slice(e+1)];break}case"delete":{if(!r)throw new Error("interactionId is required for the delete action.");const e=d.length;if(d=d.filter(e=>q(e.value.interaction_id)!==r),d.length===e)throw new Error(`Interaction with ID "${r}" not found on element "${t}".`);break}case"clear":d=[]}const p={...m,items:d};try{(0,c.updateElementInteractions)({elementId:t,interactions:p})}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:d.length}}})})(e)};function kt(){try{Re.register(Ve),(0,s.registerDataHook)("after","document/elements/duplicate",(e,t)=>{!t||"boolean"==typeof t&&!1===t||((Array.isArray(t)?t:[t]).forEach(e=>{!function(e){const t=(0,c.getContainer)(e);t&&(0,c.getAllDescendants)(t).forEach(e=>{!function(e){const t=(0,c.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=P(z()))}),t.model.set("interactions",r)}(e.id)})}(e.id)}),window.dispatchEvent(new CustomEvent("elementor/element/update_interactions")))}),function(){const e=(0,s.undoable)({do:({containers:e,newInteractions:t})=>{const n=function(e){const t=structuredClone(e);return t.items?.forEach(e=>{"interaction-item"===e.$$type&&e.value&&(e.value.interaction_id=P(z()))}),t}(t);return e.map(e=>{const t=e.id,r=(0,c.getElementInteractions)(t);return(0,c.updateElementInteractions)({elementId:t,interactions:n}),{elementId:t,previous:r??{version:1,items:[]}}})},undo:(e,t)=>{t.forEach(({elementId:e,previous:t})=>{(0,c.updateElementInteractions)({elementId:e,interactions:t.items?.length?t:void 0})})}},{title:({containers:e})=>function(e){return e.length>1?(0,i.__)("Elements","elementor"):(0,c.getElementLabel)(e[0].id)}(e),subtitle:(0,i.__)("Interactions Pasted","elementor")});(0,s.__privateListenTo)((0,s.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(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(e){if(!e)return null;const t="string"==typeof e?JSON.parse(e):e,n={version:t?.version??1,items:t?.items?.filter(e=>J(e))??[]};return n.items.length?n:null}(a.interactions);if(!l)return;const s=r.filter(e=>(0,c.getContainer)(e.id)).filter(Le);s.length&&e({containers:s,newInteractions:l})})}(),m({type:"trigger",component:gt,options:["load","scrollIn"]}),m({type:"easing",component:Je,options:["easeIn"]}),m({type:"replay",component:mt,options:["no"]}),m({type:"effectType",component:tt,options:["in","out"]}),m({type:"direction",component:Fe,options:["top","bottom","left","right"]}),m({type:"effect",component:et,options:["fade","slide","scale"]}),m({type:"repeat",component:lt}),Ct((0,Me.getMCPByDomain)("interactions",{docs:It,instructions:_t}))}catch(e){throw e}}(window.elementorV2=window.elementorV2||{}).editorInteractions=t}(),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?.(); | |