@elementor/editor-interactions 3.33.0-230 → 3.33.0-232

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -365,10 +365,10 @@ function InteractionsList({ onSelectInteraction, selectedInteraction, defaultSta
365
365
  });
366
366
  const { openByDefault, resetDefaultOpen } = usePopupStateContext();
367
367
  (0, import_react4.useEffect)(() => {
368
- if (interactionId) {
368
+ if (interactionId && interactionId !== selectedInteraction) {
369
369
  onSelectInteraction(interactionId);
370
370
  }
371
- }, [interactionId, onSelectInteraction]);
371
+ }, [interactionId, selectedInteraction, onSelectInteraction]);
372
372
  (0, import_react4.useEffect)(() => {
373
373
  if (openByDefault && anchorEl.current) {
374
374
  popupState.open();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/empty-state.tsx","../src/components/interactions-tab.tsx","../src/contexts/interactions-context.tsx","../src/contexts/popup-state-context.tsx","../src/components/interactions-list.tsx","../src/utils/get-interactions-config.ts","../src/components/header.tsx","../src/components/interaction-details.tsx","../src/components/controls/direction.tsx","../src/components/controls/effect.tsx","../src/components/controls/effect-type.tsx","../src/components/controls/time-frame-indicator.tsx","../src/components/controls/trigger.tsx"],"sourcesContent":["export * from './components/empty-state';\nexport * from './components/interactions-tab';\nexport * from './types';\nexport * from './utils/get-interactions-config';\n","import * as React from 'react';\nimport { SwipeIcon } from '@elementor/icons';\nimport { Button, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const EmptyState = ( { onCreateInteraction }: { onCreateInteraction: () => void } ) => {\n\treturn (\n\t\t<Stack\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { p: 2.5, pt: 8, pb: 5.5 } }\n\t\t\tgap={ 1.5 }\n\t\t>\n\t\t\t<SwipeIcon fontSize=\"large\" />\n\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Animate elements with Interactions', 'elementor' ) }\n\t\t\t</Typography>\n\n\t\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"170px\">\n\t\t\t\t{ __(\n\t\t\t\t\t'Add entrance animations and effects triggered by user interactions such as click, hover, or scroll.',\n\t\t\t\t\t'elementor'\n\t\t\t\t) }\n\t\t\t</Typography>\n\n\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" sx={ { mt: 1 } } onClick={ onCreateInteraction }>\n\t\t\t\t{ __( 'Create an interaction', 'elementor' ) }\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useElementInteractions } from '@elementor/editor-elements';\nimport { SessionStorageProvider } from '@elementor/session';\n\nimport { InteractionsProvider, useInteractionsContext } from '../contexts/interactions-context';\nimport { PopupStateProvider, usePopupStateContext } from '../contexts/popup-state-context';\nimport { EmptyState } from './empty-state';\nimport { PredefinedInteractionsList } from './interactions-list';\n\nexport const InteractionsTab = ( { elementId }: { elementId: string } ) => {\n\treturn (\n\t\t<PopupStateProvider>\n\t\t\t<InteractionsTabContent elementId={ elementId } />\n\t\t</PopupStateProvider>\n\t);\n};\n\nfunction InteractionsTabContent( { elementId }: { elementId: string } ) {\n\tconst existingInteractions = useElementInteractions( elementId );\n\tconst { triggerDefaultOpen } = usePopupStateContext();\n\n\tconst [ showInteractions, setShowInteractions ] = useState( () => {\n\t\treturn !! JSON.parse( existingInteractions || '[]' ).length;\n\t} );\n\n\treturn (\n\t\t<SessionStorageProvider prefix={ elementId }>\n\t\t\t{ showInteractions ? (\n\t\t\t\t<InteractionsProvider elementId={ elementId }>\n\t\t\t\t\t<InteractionsContent />\n\t\t\t\t</InteractionsProvider>\n\t\t\t) : (\n\t\t\t\t<EmptyState\n\t\t\t\t\tonCreateInteraction={ () => {\n\t\t\t\t\t\tsetShowInteractions( true );\n\t\t\t\t\t\ttriggerDefaultOpen();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</SessionStorageProvider>\n\t);\n}\n\nfunction InteractionsContent() {\n\tconst { interactions, setInteractions } = useInteractionsContext();\n\n\tconst applyInteraction = useCallback(\n\t\t( interaction: string ) => {\n\t\t\tconst newInteractions = [\n\t\t\t\t{\n\t\t\t\t\tanimation: {\n\t\t\t\t\t\tanimation_type: 'full-preset',\n\t\t\t\t\t\tanimation_id: interaction,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tsetInteractions( JSON.stringify( newInteractions ) );\n\t\t},\n\t\t[ setInteractions ]\n\t);\n\n\tconst selectedInteraction = useMemo( () => {\n\t\ttry {\n\t\t\tconst parsed = JSON.parse( interactions || '[]' );\n\t\t\treturn parsed[ 0 ]?.animation?.animation_id || '';\n\t\t} catch {\n\t\t\treturn '';\n\t\t}\n\t}, [ interactions ] );\n\n\treturn (\n\t\t<>\n\t\t\t<PredefinedInteractionsList\n\t\t\t\tselectedInteraction={ selectedInteraction }\n\t\t\t\tonSelectInteraction={ applyInteraction }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { createContext, type ReactNode, useContext } from 'react';\nimport { updateElementInteractions, useElementInteractions } from '@elementor/editor-elements';\n\ntype InteractionsContextValue = {\n\tinteractions: string;\n\tsetInteractions: ( value: string ) => void;\n};\n\nconst InteractionsContext = createContext< InteractionsContextValue | null >( null );\n\nexport const InteractionsProvider = ( { children, elementId }: { children: ReactNode; elementId: string } ) => {\n\tconst interactions = useElementInteractions( elementId );\n\n\tconst setInteractions = ( value: string ) => {\n\t\tupdateElementInteractions( {\n\t\t\telementId,\n\t\t\tinteractions: value,\n\t\t} );\n\t};\n\n\tconst contextValue: InteractionsContextValue = {\n\t\tinteractions: interactions || '',\n\t\tsetInteractions,\n\t};\n\n\treturn <InteractionsContext.Provider value={ contextValue }>{ children }</InteractionsContext.Provider>;\n};\n\nexport const useInteractionsContext = () => {\n\tconst context = useContext( InteractionsContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'useInteractionsContext must be used within InteractionsProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { createContext, useCallback, useContext, useState } from 'react';\n\ntype PopupStateContextType = {\n\topenByDefault: boolean;\n\ttriggerDefaultOpen: () => void;\n\tresetDefaultOpen: () => void;\n};\n\nconst PopupStateContext = createContext< PopupStateContextType | undefined >( undefined );\n\nexport const PopupStateProvider = ( { children }: { children: React.ReactNode } ) => {\n\tconst [ openByDefault, setOpenByDefault ] = useState( false );\n\n\tconst triggerDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( true );\n\t}, [] );\n\n\tconst resetDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( false );\n\t}, [] );\n\n\treturn (\n\t\t<PopupStateContext.Provider value={ { openByDefault, triggerDefaultOpen, resetDefaultOpen } }>\n\t\t\t{ children }\n\t\t</PopupStateContext.Provider>\n\t);\n};\n\nexport const usePopupStateContext = () => {\n\tconst context = useContext( PopupStateContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'usePopupStateContext must be used within PopupStateProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { EyeIcon, XIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, IconButton, Popover, Stack, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePopupStateContext } from '../contexts/popup-state-context';\nimport { getInteractionsConfig } from '../utils/get-interactions-config';\nimport { Header } from './header';\nimport { InteractionDetails } from './interaction-details';\n\ntype PredefinedInteractionsListProps = {\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tonDelete?: () => void;\n};\n\nexport const PredefinedInteractionsList = ( {\n\tonSelectInteraction,\n\tselectedInteraction,\n\tonDelete,\n}: PredefinedInteractionsListProps ) => {\n\treturn (\n\t\t<Stack sx={ { m: 1, p: 1.5 } } gap={ 2 }>\n\t\t\t<Header label={ __( 'Interactions', 'elementor' ) } />\n\t\t\t<InteractionsList\n\t\t\t\tonDelete={ () => onDelete?.() }\n\t\t\t\tselectedInteraction={ selectedInteraction }\n\t\t\t\tonSelectInteraction={ onSelectInteraction }\n\t\t\t/>\n\t\t</Stack>\n\t);\n};\n\ntype InteractionListProps = {\n\tonDelete: () => void;\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tdefaultStateRef?: React.MutableRefObject< boolean | undefined >;\n};\n\nfunction InteractionsList( { onSelectInteraction, selectedInteraction, defaultStateRef }: InteractionListProps ) {\n\tconst [ interactionId, setInteractionId ] = useState( selectedInteraction );\n\n\tconst anchorEl = useRef< HTMLDivElement | null >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-interactions-list-${ popupId }`,\n\t} );\n\n\tconst { openByDefault, resetDefaultOpen } = usePopupStateContext();\n\n\tuseEffect( () => {\n\t\tif ( interactionId ) {\n\t\t\tonSelectInteraction( interactionId );\n\t\t}\n\t}, [ interactionId, onSelectInteraction ] );\n\n\tuseEffect( () => {\n\t\tif ( openByDefault && anchorEl.current ) {\n\t\t\tpopupState.open();\n\t\t\tresetDefaultOpen();\n\t\t}\n\t}, [ defaultStateRef, openByDefault, popupState, resetDefaultOpen ] );\n\n\tconst displayLabel = useMemo( () => {\n\t\tif ( ! interactionId ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst animationOptions = getInteractionsConfig()?.animationOptions;\n\t\tconst option = animationOptions.find( ( opt ) => opt.value === interactionId );\n\n\t\treturn option?.label || interactionId;\n\t}, [ interactionId ] );\n\n\treturn (\n\t\t<Stack gap={ 1.5 } ref={ anchorEl }>\n\t\t\t<UnstableTag\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\tfullWidth\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ displayLabel }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t\t\t\t<EyeIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton size=\"tiny\">\n\t\t\t\t\t\t\t<XIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorEl.current }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\tonClose={ () => {\n\t\t\t\t\tpopupState.close();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<InteractionDetails\n\t\t\t\t\tinteraction={ selectedInteraction }\n\t\t\t\t\tonChange={ ( newValue: string ) => {\n\t\t\t\t\t\tsetInteractionId( newValue );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Stack>\n\t);\n}\n","import { type InteractionsConfig } from '../types';\n\nconst DEFAULT_CONFIG: InteractionsConfig = {\n\tconstants: {\n\t\tdefaultDuration: 300,\n\t\tdefaultDelay: 0,\n\t\tslideDistance: 100,\n\t\tscaleStart: 0.5,\n\t\teasing: 'linear',\n\t},\n\tanimationOptions: [],\n};\n\nexport function getInteractionsConfig(): InteractionsConfig {\n\treturn window.ElementorInteractionsConfig || DEFAULT_CONFIG;\n}\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { IconButton, Stack, Typography } from '@elementor/ui';\n\nexport const Header = ( { label }: { label: string } ) => {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"space-between\"\n\t\t\tgap={ 1 }\n\t\t\tsx={ { marginInlineEnd: -0.75, py: 0.25 } }\n\t\t>\n\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\" sx={ { lineHeight: 1 } }>\n\t\t\t\t{ label }\n\t\t\t</Typography>\n\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t<PlusIcon fontSize=\"tiny\" />\n\t\t\t</IconButton>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { Divider, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { Direction } from './controls/direction';\nimport { Effect } from './controls/effect';\nimport { EffectType } from './controls/effect-type';\nimport { TimeFrameIndicator } from './controls/time-frame-indicator';\nimport { Trigger } from './controls/trigger';\n\nconst DELIMITER = '-';\n\ntype InteractionDetailsProps = {\n\tinteraction: string;\n\tonChange: ( interaction: string ) => void;\n};\n\nexport const InteractionDetails = ( { interaction, onChange }: InteractionDetailsProps ) => {\n\tconst [ interactionDetails, setInteractionDetails ] = useState( () => {\n\t\tconst [ trigger, effect, type, direction, duration, delay ] = interaction.split( DELIMITER );\n\n\t\treturn {\n\t\t\ttrigger: trigger || 'load',\n\t\t\teffect: effect || 'fade',\n\t\t\ttype: type || 'in',\n\t\t\tdirection: direction || '',\n\t\t\tduration: duration || '300',\n\t\t\tdelay: delay || '0',\n\t\t};\n\t} );\n\n\tuseEffect( () => {\n\t\tconst newValue = Object.values( interactionDetails ).join( DELIMITER );\n\t\tonChange( newValue );\n\t}, [ interactionDetails, onChange ] );\n\n\tconst handleChange = < K extends keyof typeof interactionDetails >(\n\t\tkey: K,\n\t\tvalue: ( typeof interactionDetails )[ K ]\n\t) => {\n\t\tsetInteractionDetails( ( prev ) => ( { ...prev, [ key ]: value } ) );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Trigger value={ interactionDetails.trigger } onChange={ ( v ) => handleChange( 'trigger', v ) } />\n\t\t\t</Grid>\n\t\t\t<Divider />\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Effect value={ interactionDetails.effect } onChange={ ( v ) => handleChange( 'effect', v ) } />\n\t\t\t\t<EffectType value={ interactionDetails.type } onChange={ ( v ) => handleChange( 'type', v ) } />\n\t\t\t\t<Direction\n\t\t\t\t\tvalue={ interactionDetails.direction ?? '' }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'direction', v ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.duration }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'duration', v ) }\n\t\t\t\t\tlabel={ __( 'Duration', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.delay }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'delay', v ) }\n\t\t\t\t\tlabel={ __( 'Delay', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Direction( { value, onChange }: FieldProps ) {\n\tconst availableDirections = [\n\t\t{ key: 'top', label: __( 'Up', 'elementor' ), icon: <ArrowUpSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'bottom', label: __( 'Down', 'elementor' ), icon: <ArrowDownSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'left', label: __( 'Left', 'elementor' ), icon: <ArrowLeftIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'right', label: __( 'Right', 'elementor' ), icon: <ArrowRightIcon fontSize=\"tiny\" /> },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Direction', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableDirections.map( ( direction ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ direction.key } title={ direction.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ direction.key } value={ direction.key }>\n\t\t\t\t\t\t\t\t\t{ direction.icon }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\nexport function Effect( { value, onChange }: FieldProps ) {\n\tconst availableEffects = [\n\t\t{ key: 'fade', label: __( 'Fade', 'elementor' ) },\n\t\t{ key: 'slide', label: __( 'Slide', 'elementor' ) },\n\t\t{ key: 'scale', label: __( 'Scale', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Effect', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffects.map( ( effect ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ effect.key } value={ effect.key }>\n\t\t\t\t\t\t\t\t{ effect.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function EffectType( { value, onChange }: FieldProps ) {\n\tconst availableEffectTypes = [\n\t\t{ key: 'in', label: __( 'In', 'elementor' ) },\n\t\t{ key: 'out', label: __( 'Out', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Type', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffectTypes.map( ( effectType ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ effectType.key } title={ effectType.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ effectType.key } value={ effectType.key }>\n\t\t\t\t\t\t\t\t\t{ effectType.label }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function TimeFrameIndicator( { value, onChange, label }: FieldProps ) {\n\tconst availableTimeFrames = [ '0', '100', '200', '300', '400', '500', '750', '1000', '1250', '1500' ].map(\n\t\t( key ) => ( {\n\t\t\tkey,\n\t\t\t// translators: %s: time in milliseconds\n\t\t\tlabel: __( '%s MS', 'elementor' ).replace( '%s', key ),\n\t\t} )\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableTimeFrames.map( ( timeFrame ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ timeFrame.key } value={ timeFrame.key }>\n\t\t\t\t\t\t\t\t{ timeFrame.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Trigger( { value, onChange }: FieldProps ) {\n\tconst availableTriggers = Object.entries( {\n\t\tload: __( 'Page load', 'elementor' ),\n\t\tscrollIn: __( 'Scroll into view', 'elementor' ),\n\t\tscrollOut: __( 'Scroll out of view', 'elementor' ),\n\t} ).map( ( [ key, label ] ) => ( {\n\t\tkey,\n\t\tlabel,\n\t} ) );\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Trigger', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableTriggers.map( ( trigger ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ trigger.key } value={ trigger.key }>\n\t\t\t\t\t\t\t\t{ trigger.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n"],"mappings":"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","names":["React","import_react","import_editor_elements","React","React","import_react","React","import_react","import_icons","import_ui","import_i18n","React","import_icons","import_ui","React","import_react","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_ui","import_i18n","React","import_ui","import_i18n","React","import_editor_ui","import_ui","import_i18n","React","import_editor_ui","import_ui","import_i18n"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/empty-state.tsx","../src/components/interactions-tab.tsx","../src/contexts/interactions-context.tsx","../src/contexts/popup-state-context.tsx","../src/components/interactions-list.tsx","../src/utils/get-interactions-config.ts","../src/components/header.tsx","../src/components/interaction-details.tsx","../src/components/controls/direction.tsx","../src/components/controls/effect.tsx","../src/components/controls/effect-type.tsx","../src/components/controls/time-frame-indicator.tsx","../src/components/controls/trigger.tsx"],"sourcesContent":["export * from './components/empty-state';\nexport * from './components/interactions-tab';\nexport * from './types';\nexport * from './utils/get-interactions-config';\n","import * as React from 'react';\nimport { SwipeIcon } from '@elementor/icons';\nimport { Button, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const EmptyState = ( { onCreateInteraction }: { onCreateInteraction: () => void } ) => {\n\treturn (\n\t\t<Stack\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { p: 2.5, pt: 8, pb: 5.5 } }\n\t\t\tgap={ 1.5 }\n\t\t>\n\t\t\t<SwipeIcon fontSize=\"large\" />\n\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Animate elements with Interactions', 'elementor' ) }\n\t\t\t</Typography>\n\n\t\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"170px\">\n\t\t\t\t{ __(\n\t\t\t\t\t'Add entrance animations and effects triggered by user interactions such as click, hover, or scroll.',\n\t\t\t\t\t'elementor'\n\t\t\t\t) }\n\t\t\t</Typography>\n\n\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" sx={ { mt: 1 } } onClick={ onCreateInteraction }>\n\t\t\t\t{ __( 'Create an interaction', 'elementor' ) }\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useElementInteractions } from '@elementor/editor-elements';\nimport { SessionStorageProvider } from '@elementor/session';\n\nimport { InteractionsProvider, useInteractionsContext } from '../contexts/interactions-context';\nimport { PopupStateProvider, usePopupStateContext } from '../contexts/popup-state-context';\nimport { EmptyState } from './empty-state';\nimport { PredefinedInteractionsList } from './interactions-list';\n\nexport const InteractionsTab = ( { elementId }: { elementId: string } ) => {\n\treturn (\n\t\t<PopupStateProvider>\n\t\t\t<InteractionsTabContent elementId={ elementId } />\n\t\t</PopupStateProvider>\n\t);\n};\n\nfunction InteractionsTabContent( { elementId }: { elementId: string } ) {\n\tconst existingInteractions = useElementInteractions( elementId );\n\tconst { triggerDefaultOpen } = usePopupStateContext();\n\n\tconst [ showInteractions, setShowInteractions ] = useState( () => {\n\t\treturn !! JSON.parse( existingInteractions || '[]' ).length;\n\t} );\n\n\treturn (\n\t\t<SessionStorageProvider prefix={ elementId }>\n\t\t\t{ showInteractions ? (\n\t\t\t\t<InteractionsProvider elementId={ elementId }>\n\t\t\t\t\t<InteractionsContent />\n\t\t\t\t</InteractionsProvider>\n\t\t\t) : (\n\t\t\t\t<EmptyState\n\t\t\t\t\tonCreateInteraction={ () => {\n\t\t\t\t\t\tsetShowInteractions( true );\n\t\t\t\t\t\ttriggerDefaultOpen();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</SessionStorageProvider>\n\t);\n}\n\nfunction InteractionsContent() {\n\tconst { interactions, setInteractions } = useInteractionsContext();\n\n\tconst applyInteraction = useCallback(\n\t\t( interaction: string ) => {\n\t\t\tconst newInteractions = [\n\t\t\t\t{\n\t\t\t\t\tanimation: {\n\t\t\t\t\t\tanimation_type: 'full-preset',\n\t\t\t\t\t\tanimation_id: interaction,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tsetInteractions( JSON.stringify( newInteractions ) );\n\t\t},\n\t\t[ setInteractions ]\n\t);\n\n\tconst selectedInteraction = useMemo( () => {\n\t\ttry {\n\t\t\tconst parsed = JSON.parse( interactions || '[]' );\n\t\t\treturn parsed[ 0 ]?.animation?.animation_id || '';\n\t\t} catch {\n\t\t\treturn '';\n\t\t}\n\t}, [ interactions ] );\n\n\treturn (\n\t\t<>\n\t\t\t<PredefinedInteractionsList\n\t\t\t\tselectedInteraction={ selectedInteraction }\n\t\t\t\tonSelectInteraction={ applyInteraction }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { createContext, type ReactNode, useContext } from 'react';\nimport { updateElementInteractions, useElementInteractions } from '@elementor/editor-elements';\n\ntype InteractionsContextValue = {\n\tinteractions: string;\n\tsetInteractions: ( value: string ) => void;\n};\n\nconst InteractionsContext = createContext< InteractionsContextValue | null >( null );\n\nexport const InteractionsProvider = ( { children, elementId }: { children: ReactNode; elementId: string } ) => {\n\tconst interactions = useElementInteractions( elementId );\n\n\tconst setInteractions = ( value: string ) => {\n\t\tupdateElementInteractions( {\n\t\t\telementId,\n\t\t\tinteractions: value,\n\t\t} );\n\t};\n\n\tconst contextValue: InteractionsContextValue = {\n\t\tinteractions: interactions || '',\n\t\tsetInteractions,\n\t};\n\n\treturn <InteractionsContext.Provider value={ contextValue }>{ children }</InteractionsContext.Provider>;\n};\n\nexport const useInteractionsContext = () => {\n\tconst context = useContext( InteractionsContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'useInteractionsContext must be used within InteractionsProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { createContext, useCallback, useContext, useState } from 'react';\n\ntype PopupStateContextType = {\n\topenByDefault: boolean;\n\ttriggerDefaultOpen: () => void;\n\tresetDefaultOpen: () => void;\n};\n\nconst PopupStateContext = createContext< PopupStateContextType | undefined >( undefined );\n\nexport const PopupStateProvider = ( { children }: { children: React.ReactNode } ) => {\n\tconst [ openByDefault, setOpenByDefault ] = useState( false );\n\n\tconst triggerDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( true );\n\t}, [] );\n\n\tconst resetDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( false );\n\t}, [] );\n\n\treturn (\n\t\t<PopupStateContext.Provider value={ { openByDefault, triggerDefaultOpen, resetDefaultOpen } }>\n\t\t\t{ children }\n\t\t</PopupStateContext.Provider>\n\t);\n};\n\nexport const usePopupStateContext = () => {\n\tconst context = useContext( PopupStateContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'usePopupStateContext must be used within PopupStateProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { EyeIcon, XIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, IconButton, Popover, Stack, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePopupStateContext } from '../contexts/popup-state-context';\nimport { getInteractionsConfig } from '../utils/get-interactions-config';\nimport { Header } from './header';\nimport { InteractionDetails } from './interaction-details';\n\ntype PredefinedInteractionsListProps = {\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tonDelete?: () => void;\n};\n\nexport const PredefinedInteractionsList = ( {\n\tonSelectInteraction,\n\tselectedInteraction,\n\tonDelete,\n}: PredefinedInteractionsListProps ) => {\n\treturn (\n\t\t<Stack sx={ { m: 1, p: 1.5 } } gap={ 2 }>\n\t\t\t<Header label={ __( 'Interactions', 'elementor' ) } />\n\t\t\t<InteractionsList\n\t\t\t\tonDelete={ () => onDelete?.() }\n\t\t\t\tselectedInteraction={ selectedInteraction }\n\t\t\t\tonSelectInteraction={ onSelectInteraction }\n\t\t\t/>\n\t\t</Stack>\n\t);\n};\n\ntype InteractionListProps = {\n\tonDelete: () => void;\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tdefaultStateRef?: React.MutableRefObject< boolean | undefined >;\n};\n\nfunction InteractionsList( { onSelectInteraction, selectedInteraction, defaultStateRef }: InteractionListProps ) {\n\tconst [ interactionId, setInteractionId ] = useState( selectedInteraction );\n\n\tconst anchorEl = useRef< HTMLDivElement | null >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-interactions-list-${ popupId }`,\n\t} );\n\n\tconst { openByDefault, resetDefaultOpen } = usePopupStateContext();\n\n\tuseEffect( () => {\n\t\tif ( interactionId && interactionId !== selectedInteraction ) {\n\t\t\tonSelectInteraction( interactionId );\n\t\t}\n\t}, [ interactionId, selectedInteraction, onSelectInteraction ] );\n\n\tuseEffect( () => {\n\t\tif ( openByDefault && anchorEl.current ) {\n\t\t\tpopupState.open();\n\t\t\tresetDefaultOpen();\n\t\t}\n\t}, [ defaultStateRef, openByDefault, popupState, resetDefaultOpen ] );\n\n\tconst displayLabel = useMemo( () => {\n\t\tif ( ! interactionId ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst animationOptions = getInteractionsConfig()?.animationOptions;\n\t\tconst option = animationOptions.find( ( opt ) => opt.value === interactionId );\n\n\t\treturn option?.label || interactionId;\n\t}, [ interactionId ] );\n\n\treturn (\n\t\t<Stack gap={ 1.5 } ref={ anchorEl }>\n\t\t\t<UnstableTag\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\tfullWidth\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ displayLabel }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t\t\t\t<EyeIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton size=\"tiny\">\n\t\t\t\t\t\t\t<XIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorEl.current }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\tonClose={ () => {\n\t\t\t\t\tpopupState.close();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<InteractionDetails\n\t\t\t\t\tinteraction={ selectedInteraction }\n\t\t\t\t\tonChange={ ( newValue: string ) => {\n\t\t\t\t\t\tsetInteractionId( newValue );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Stack>\n\t);\n}\n","import { type InteractionsConfig } from '../types';\n\nconst DEFAULT_CONFIG: InteractionsConfig = {\n\tconstants: {\n\t\tdefaultDuration: 300,\n\t\tdefaultDelay: 0,\n\t\tslideDistance: 100,\n\t\tscaleStart: 0.5,\n\t\teasing: 'linear',\n\t},\n\tanimationOptions: [],\n};\n\nexport function getInteractionsConfig(): InteractionsConfig {\n\treturn window.ElementorInteractionsConfig || DEFAULT_CONFIG;\n}\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { IconButton, Stack, Typography } from '@elementor/ui';\n\nexport const Header = ( { label }: { label: string } ) => {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"space-between\"\n\t\t\tgap={ 1 }\n\t\t\tsx={ { marginInlineEnd: -0.75, py: 0.25 } }\n\t\t>\n\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\" sx={ { lineHeight: 1 } }>\n\t\t\t\t{ label }\n\t\t\t</Typography>\n\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t<PlusIcon fontSize=\"tiny\" />\n\t\t\t</IconButton>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { Divider, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { Direction } from './controls/direction';\nimport { Effect } from './controls/effect';\nimport { EffectType } from './controls/effect-type';\nimport { TimeFrameIndicator } from './controls/time-frame-indicator';\nimport { Trigger } from './controls/trigger';\n\nconst DELIMITER = '-';\n\ntype InteractionDetailsProps = {\n\tinteraction: string;\n\tonChange: ( interaction: string ) => void;\n};\n\nexport const InteractionDetails = ( { interaction, onChange }: InteractionDetailsProps ) => {\n\tconst [ interactionDetails, setInteractionDetails ] = useState( () => {\n\t\tconst [ trigger, effect, type, direction, duration, delay ] = interaction.split( DELIMITER );\n\n\t\treturn {\n\t\t\ttrigger: trigger || 'load',\n\t\t\teffect: effect || 'fade',\n\t\t\ttype: type || 'in',\n\t\t\tdirection: direction || '',\n\t\t\tduration: duration || '300',\n\t\t\tdelay: delay || '0',\n\t\t};\n\t} );\n\n\tuseEffect( () => {\n\t\tconst newValue = Object.values( interactionDetails ).join( DELIMITER );\n\t\tonChange( newValue );\n\t}, [ interactionDetails, onChange ] );\n\n\tconst handleChange = < K extends keyof typeof interactionDetails >(\n\t\tkey: K,\n\t\tvalue: ( typeof interactionDetails )[ K ]\n\t) => {\n\t\tsetInteractionDetails( ( prev ) => ( { ...prev, [ key ]: value } ) );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Trigger value={ interactionDetails.trigger } onChange={ ( v ) => handleChange( 'trigger', v ) } />\n\t\t\t</Grid>\n\t\t\t<Divider />\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Effect value={ interactionDetails.effect } onChange={ ( v ) => handleChange( 'effect', v ) } />\n\t\t\t\t<EffectType value={ interactionDetails.type } onChange={ ( v ) => handleChange( 'type', v ) } />\n\t\t\t\t<Direction\n\t\t\t\t\tvalue={ interactionDetails.direction ?? '' }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'direction', v ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.duration }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'duration', v ) }\n\t\t\t\t\tlabel={ __( 'Duration', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.delay }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'delay', v ) }\n\t\t\t\t\tlabel={ __( 'Delay', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Direction( { value, onChange }: FieldProps ) {\n\tconst availableDirections = [\n\t\t{ key: 'top', label: __( 'Up', 'elementor' ), icon: <ArrowUpSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'bottom', label: __( 'Down', 'elementor' ), icon: <ArrowDownSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'left', label: __( 'Left', 'elementor' ), icon: <ArrowLeftIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'right', label: __( 'Right', 'elementor' ), icon: <ArrowRightIcon fontSize=\"tiny\" /> },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Direction', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableDirections.map( ( direction ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ direction.key } title={ direction.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ direction.key } value={ direction.key }>\n\t\t\t\t\t\t\t\t\t{ direction.icon }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\nexport function Effect( { value, onChange }: FieldProps ) {\n\tconst availableEffects = [\n\t\t{ key: 'fade', label: __( 'Fade', 'elementor' ) },\n\t\t{ key: 'slide', label: __( 'Slide', 'elementor' ) },\n\t\t{ key: 'scale', label: __( 'Scale', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Effect', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffects.map( ( effect ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ effect.key } value={ effect.key }>\n\t\t\t\t\t\t\t\t{ effect.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function EffectType( { value, onChange }: FieldProps ) {\n\tconst availableEffectTypes = [\n\t\t{ key: 'in', label: __( 'In', 'elementor' ) },\n\t\t{ key: 'out', label: __( 'Out', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Type', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffectTypes.map( ( effectType ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ effectType.key } title={ effectType.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ effectType.key } value={ effectType.key }>\n\t\t\t\t\t\t\t\t\t{ effectType.label }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function TimeFrameIndicator( { value, onChange, label }: FieldProps ) {\n\tconst availableTimeFrames = [ '0', '100', '200', '300', '400', '500', '750', '1000', '1250', '1500' ].map(\n\t\t( key ) => ( {\n\t\t\tkey,\n\t\t\t// translators: %s: time in milliseconds\n\t\t\tlabel: __( '%s MS', 'elementor' ).replace( '%s', key ),\n\t\t} )\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableTimeFrames.map( ( timeFrame ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ timeFrame.key } value={ timeFrame.key }>\n\t\t\t\t\t\t\t\t{ timeFrame.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Trigger( { value, onChange }: FieldProps ) {\n\tconst availableTriggers = Object.entries( {\n\t\tload: __( 'Page load', 'elementor' ),\n\t\tscrollIn: __( 'Scroll into view', 'elementor' ),\n\t\tscrollOut: __( 'Scroll out of view', 'elementor' ),\n\t} ).map( ( [ key, label ] ) => ( {\n\t\tkey,\n\t\tlabel,\n\t} ) );\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Trigger', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableTriggers.map( ( trigger ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ trigger.key } value={ trigger.key }>\n\t\t\t\t\t\t\t\t{ trigger.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n"],"mappings":"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","names":["React","import_react","import_editor_elements","React","React","import_react","React","import_react","import_icons","import_ui","import_i18n","React","import_icons","import_ui","React","import_react","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_ui","import_i18n","React","import_ui","import_i18n","React","import_editor_ui","import_ui","import_i18n","React","import_editor_ui","import_ui","import_i18n"]}
package/dist/index.mjs CHANGED
@@ -327,10 +327,10 @@ function InteractionsList({ onSelectInteraction, selectedInteraction, defaultSta
327
327
  });
328
328
  const { openByDefault, resetDefaultOpen } = usePopupStateContext();
329
329
  useEffect2(() => {
330
- if (interactionId) {
330
+ if (interactionId && interactionId !== selectedInteraction) {
331
331
  onSelectInteraction(interactionId);
332
332
  }
333
- }, [interactionId, onSelectInteraction]);
333
+ }, [interactionId, selectedInteraction, onSelectInteraction]);
334
334
  useEffect2(() => {
335
335
  if (openByDefault && anchorEl.current) {
336
336
  popupState.open();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/empty-state.tsx","../src/components/interactions-tab.tsx","../src/contexts/interactions-context.tsx","../src/contexts/popup-state-context.tsx","../src/components/interactions-list.tsx","../src/utils/get-interactions-config.ts","../src/components/header.tsx","../src/components/interaction-details.tsx","../src/components/controls/direction.tsx","../src/components/controls/effect.tsx","../src/components/controls/effect-type.tsx","../src/components/controls/time-frame-indicator.tsx","../src/components/controls/trigger.tsx"],"sourcesContent":["import * as React from 'react';\nimport { SwipeIcon } from '@elementor/icons';\nimport { Button, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const EmptyState = ( { onCreateInteraction }: { onCreateInteraction: () => void } ) => {\n\treturn (\n\t\t<Stack\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { p: 2.5, pt: 8, pb: 5.5 } }\n\t\t\tgap={ 1.5 }\n\t\t>\n\t\t\t<SwipeIcon fontSize=\"large\" />\n\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Animate elements with Interactions', 'elementor' ) }\n\t\t\t</Typography>\n\n\t\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"170px\">\n\t\t\t\t{ __(\n\t\t\t\t\t'Add entrance animations and effects triggered by user interactions such as click, hover, or scroll.',\n\t\t\t\t\t'elementor'\n\t\t\t\t) }\n\t\t\t</Typography>\n\n\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" sx={ { mt: 1 } } onClick={ onCreateInteraction }>\n\t\t\t\t{ __( 'Create an interaction', 'elementor' ) }\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useElementInteractions } from '@elementor/editor-elements';\nimport { SessionStorageProvider } from '@elementor/session';\n\nimport { InteractionsProvider, useInteractionsContext } from '../contexts/interactions-context';\nimport { PopupStateProvider, usePopupStateContext } from '../contexts/popup-state-context';\nimport { EmptyState } from './empty-state';\nimport { PredefinedInteractionsList } from './interactions-list';\n\nexport const InteractionsTab = ( { elementId }: { elementId: string } ) => {\n\treturn (\n\t\t<PopupStateProvider>\n\t\t\t<InteractionsTabContent elementId={ elementId } />\n\t\t</PopupStateProvider>\n\t);\n};\n\nfunction InteractionsTabContent( { elementId }: { elementId: string } ) {\n\tconst existingInteractions = useElementInteractions( elementId );\n\tconst { triggerDefaultOpen } = usePopupStateContext();\n\n\tconst [ showInteractions, setShowInteractions ] = useState( () => {\n\t\treturn !! JSON.parse( existingInteractions || '[]' ).length;\n\t} );\n\n\treturn (\n\t\t<SessionStorageProvider prefix={ elementId }>\n\t\t\t{ showInteractions ? (\n\t\t\t\t<InteractionsProvider elementId={ elementId }>\n\t\t\t\t\t<InteractionsContent />\n\t\t\t\t</InteractionsProvider>\n\t\t\t) : (\n\t\t\t\t<EmptyState\n\t\t\t\t\tonCreateInteraction={ () => {\n\t\t\t\t\t\tsetShowInteractions( true );\n\t\t\t\t\t\ttriggerDefaultOpen();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</SessionStorageProvider>\n\t);\n}\n\nfunction InteractionsContent() {\n\tconst { interactions, setInteractions } = useInteractionsContext();\n\n\tconst applyInteraction = useCallback(\n\t\t( interaction: string ) => {\n\t\t\tconst newInteractions = [\n\t\t\t\t{\n\t\t\t\t\tanimation: {\n\t\t\t\t\t\tanimation_type: 'full-preset',\n\t\t\t\t\t\tanimation_id: interaction,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tsetInteractions( JSON.stringify( newInteractions ) );\n\t\t},\n\t\t[ setInteractions ]\n\t);\n\n\tconst selectedInteraction = useMemo( () => {\n\t\ttry {\n\t\t\tconst parsed = JSON.parse( interactions || '[]' );\n\t\t\treturn parsed[ 0 ]?.animation?.animation_id || '';\n\t\t} catch {\n\t\t\treturn '';\n\t\t}\n\t}, [ interactions ] );\n\n\treturn (\n\t\t<>\n\t\t\t<PredefinedInteractionsList\n\t\t\t\tselectedInteraction={ selectedInteraction }\n\t\t\t\tonSelectInteraction={ applyInteraction }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { createContext, type ReactNode, useContext } from 'react';\nimport { updateElementInteractions, useElementInteractions } from '@elementor/editor-elements';\n\ntype InteractionsContextValue = {\n\tinteractions: string;\n\tsetInteractions: ( value: string ) => void;\n};\n\nconst InteractionsContext = createContext< InteractionsContextValue | null >( null );\n\nexport const InteractionsProvider = ( { children, elementId }: { children: ReactNode; elementId: string } ) => {\n\tconst interactions = useElementInteractions( elementId );\n\n\tconst setInteractions = ( value: string ) => {\n\t\tupdateElementInteractions( {\n\t\t\telementId,\n\t\t\tinteractions: value,\n\t\t} );\n\t};\n\n\tconst contextValue: InteractionsContextValue = {\n\t\tinteractions: interactions || '',\n\t\tsetInteractions,\n\t};\n\n\treturn <InteractionsContext.Provider value={ contextValue }>{ children }</InteractionsContext.Provider>;\n};\n\nexport const useInteractionsContext = () => {\n\tconst context = useContext( InteractionsContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'useInteractionsContext must be used within InteractionsProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { createContext, useCallback, useContext, useState } from 'react';\n\ntype PopupStateContextType = {\n\topenByDefault: boolean;\n\ttriggerDefaultOpen: () => void;\n\tresetDefaultOpen: () => void;\n};\n\nconst PopupStateContext = createContext< PopupStateContextType | undefined >( undefined );\n\nexport const PopupStateProvider = ( { children }: { children: React.ReactNode } ) => {\n\tconst [ openByDefault, setOpenByDefault ] = useState( false );\n\n\tconst triggerDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( true );\n\t}, [] );\n\n\tconst resetDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( false );\n\t}, [] );\n\n\treturn (\n\t\t<PopupStateContext.Provider value={ { openByDefault, triggerDefaultOpen, resetDefaultOpen } }>\n\t\t\t{ children }\n\t\t</PopupStateContext.Provider>\n\t);\n};\n\nexport const usePopupStateContext = () => {\n\tconst context = useContext( PopupStateContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'usePopupStateContext must be used within PopupStateProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { EyeIcon, XIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, IconButton, Popover, Stack, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePopupStateContext } from '../contexts/popup-state-context';\nimport { getInteractionsConfig } from '../utils/get-interactions-config';\nimport { Header } from './header';\nimport { InteractionDetails } from './interaction-details';\n\ntype PredefinedInteractionsListProps = {\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tonDelete?: () => void;\n};\n\nexport const PredefinedInteractionsList = ( {\n\tonSelectInteraction,\n\tselectedInteraction,\n\tonDelete,\n}: PredefinedInteractionsListProps ) => {\n\treturn (\n\t\t<Stack sx={ { m: 1, p: 1.5 } } gap={ 2 }>\n\t\t\t<Header label={ __( 'Interactions', 'elementor' ) } />\n\t\t\t<InteractionsList\n\t\t\t\tonDelete={ () => onDelete?.() }\n\t\t\t\tselectedInteraction={ selectedInteraction }\n\t\t\t\tonSelectInteraction={ onSelectInteraction }\n\t\t\t/>\n\t\t</Stack>\n\t);\n};\n\ntype InteractionListProps = {\n\tonDelete: () => void;\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tdefaultStateRef?: React.MutableRefObject< boolean | undefined >;\n};\n\nfunction InteractionsList( { onSelectInteraction, selectedInteraction, defaultStateRef }: InteractionListProps ) {\n\tconst [ interactionId, setInteractionId ] = useState( selectedInteraction );\n\n\tconst anchorEl = useRef< HTMLDivElement | null >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-interactions-list-${ popupId }`,\n\t} );\n\n\tconst { openByDefault, resetDefaultOpen } = usePopupStateContext();\n\n\tuseEffect( () => {\n\t\tif ( interactionId ) {\n\t\t\tonSelectInteraction( interactionId );\n\t\t}\n\t}, [ interactionId, onSelectInteraction ] );\n\n\tuseEffect( () => {\n\t\tif ( openByDefault && anchorEl.current ) {\n\t\t\tpopupState.open();\n\t\t\tresetDefaultOpen();\n\t\t}\n\t}, [ defaultStateRef, openByDefault, popupState, resetDefaultOpen ] );\n\n\tconst displayLabel = useMemo( () => {\n\t\tif ( ! interactionId ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst animationOptions = getInteractionsConfig()?.animationOptions;\n\t\tconst option = animationOptions.find( ( opt ) => opt.value === interactionId );\n\n\t\treturn option?.label || interactionId;\n\t}, [ interactionId ] );\n\n\treturn (\n\t\t<Stack gap={ 1.5 } ref={ anchorEl }>\n\t\t\t<UnstableTag\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\tfullWidth\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ displayLabel }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t\t\t\t<EyeIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton size=\"tiny\">\n\t\t\t\t\t\t\t<XIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorEl.current }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\tonClose={ () => {\n\t\t\t\t\tpopupState.close();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<InteractionDetails\n\t\t\t\t\tinteraction={ selectedInteraction }\n\t\t\t\t\tonChange={ ( newValue: string ) => {\n\t\t\t\t\t\tsetInteractionId( newValue );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Stack>\n\t);\n}\n","import { type InteractionsConfig } from '../types';\n\nconst DEFAULT_CONFIG: InteractionsConfig = {\n\tconstants: {\n\t\tdefaultDuration: 300,\n\t\tdefaultDelay: 0,\n\t\tslideDistance: 100,\n\t\tscaleStart: 0.5,\n\t\teasing: 'linear',\n\t},\n\tanimationOptions: [],\n};\n\nexport function getInteractionsConfig(): InteractionsConfig {\n\treturn window.ElementorInteractionsConfig || DEFAULT_CONFIG;\n}\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { IconButton, Stack, Typography } from '@elementor/ui';\n\nexport const Header = ( { label }: { label: string } ) => {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"space-between\"\n\t\t\tgap={ 1 }\n\t\t\tsx={ { marginInlineEnd: -0.75, py: 0.25 } }\n\t\t>\n\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\" sx={ { lineHeight: 1 } }>\n\t\t\t\t{ label }\n\t\t\t</Typography>\n\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t<PlusIcon fontSize=\"tiny\" />\n\t\t\t</IconButton>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { Divider, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { Direction } from './controls/direction';\nimport { Effect } from './controls/effect';\nimport { EffectType } from './controls/effect-type';\nimport { TimeFrameIndicator } from './controls/time-frame-indicator';\nimport { Trigger } from './controls/trigger';\n\nconst DELIMITER = '-';\n\ntype InteractionDetailsProps = {\n\tinteraction: string;\n\tonChange: ( interaction: string ) => void;\n};\n\nexport const InteractionDetails = ( { interaction, onChange }: InteractionDetailsProps ) => {\n\tconst [ interactionDetails, setInteractionDetails ] = useState( () => {\n\t\tconst [ trigger, effect, type, direction, duration, delay ] = interaction.split( DELIMITER );\n\n\t\treturn {\n\t\t\ttrigger: trigger || 'load',\n\t\t\teffect: effect || 'fade',\n\t\t\ttype: type || 'in',\n\t\t\tdirection: direction || '',\n\t\t\tduration: duration || '300',\n\t\t\tdelay: delay || '0',\n\t\t};\n\t} );\n\n\tuseEffect( () => {\n\t\tconst newValue = Object.values( interactionDetails ).join( DELIMITER );\n\t\tonChange( newValue );\n\t}, [ interactionDetails, onChange ] );\n\n\tconst handleChange = < K extends keyof typeof interactionDetails >(\n\t\tkey: K,\n\t\tvalue: ( typeof interactionDetails )[ K ]\n\t) => {\n\t\tsetInteractionDetails( ( prev ) => ( { ...prev, [ key ]: value } ) );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Trigger value={ interactionDetails.trigger } onChange={ ( v ) => handleChange( 'trigger', v ) } />\n\t\t\t</Grid>\n\t\t\t<Divider />\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Effect value={ interactionDetails.effect } onChange={ ( v ) => handleChange( 'effect', v ) } />\n\t\t\t\t<EffectType value={ interactionDetails.type } onChange={ ( v ) => handleChange( 'type', v ) } />\n\t\t\t\t<Direction\n\t\t\t\t\tvalue={ interactionDetails.direction ?? '' }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'direction', v ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.duration }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'duration', v ) }\n\t\t\t\t\tlabel={ __( 'Duration', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.delay }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'delay', v ) }\n\t\t\t\t\tlabel={ __( 'Delay', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Direction( { value, onChange }: FieldProps ) {\n\tconst availableDirections = [\n\t\t{ key: 'top', label: __( 'Up', 'elementor' ), icon: <ArrowUpSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'bottom', label: __( 'Down', 'elementor' ), icon: <ArrowDownSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'left', label: __( 'Left', 'elementor' ), icon: <ArrowLeftIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'right', label: __( 'Right', 'elementor' ), icon: <ArrowRightIcon fontSize=\"tiny\" /> },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Direction', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableDirections.map( ( direction ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ direction.key } title={ direction.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ direction.key } value={ direction.key }>\n\t\t\t\t\t\t\t\t\t{ direction.icon }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\nexport function Effect( { value, onChange }: FieldProps ) {\n\tconst availableEffects = [\n\t\t{ key: 'fade', label: __( 'Fade', 'elementor' ) },\n\t\t{ key: 'slide', label: __( 'Slide', 'elementor' ) },\n\t\t{ key: 'scale', label: __( 'Scale', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Effect', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffects.map( ( effect ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ effect.key } value={ effect.key }>\n\t\t\t\t\t\t\t\t{ effect.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function EffectType( { value, onChange }: FieldProps ) {\n\tconst availableEffectTypes = [\n\t\t{ key: 'in', label: __( 'In', 'elementor' ) },\n\t\t{ key: 'out', label: __( 'Out', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Type', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffectTypes.map( ( effectType ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ effectType.key } title={ effectType.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ effectType.key } value={ effectType.key }>\n\t\t\t\t\t\t\t\t\t{ effectType.label }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function TimeFrameIndicator( { value, onChange, label }: FieldProps ) {\n\tconst availableTimeFrames = [ '0', '100', '200', '300', '400', '500', '750', '1000', '1250', '1500' ].map(\n\t\t( key ) => ( {\n\t\t\tkey,\n\t\t\t// translators: %s: time in milliseconds\n\t\t\tlabel: __( '%s MS', 'elementor' ).replace( '%s', key ),\n\t\t} )\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableTimeFrames.map( ( timeFrame ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ timeFrame.key } value={ timeFrame.key }>\n\t\t\t\t\t\t\t\t{ timeFrame.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Trigger( { value, onChange }: FieldProps ) {\n\tconst availableTriggers = Object.entries( {\n\t\tload: __( 'Page load', 'elementor' ),\n\t\tscrollIn: __( 'Scroll into view', 'elementor' ),\n\t\tscrollOut: __( 'Scroll out of view', 'elementor' ),\n\t} ).map( ( [ key, label ] ) => ( {\n\t\tkey,\n\t\tlabel,\n\t} ) );\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Trigger', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableTriggers.map( ( trigger ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ trigger.key } value={ trigger.key }>\n\t\t\t\t\t\t\t\t{ trigger.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n"],"mappings":"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","names":["React","useCallback","useMemo","useState","useElementInteractions","React","React","createContext","useContext","React","useEffect","useState","IconButton","Stack","__","React","Stack","Typography","React","useState","Grid","__","React","Typography","__","React","Grid","Typography","__","React","Grid","ToggleButton","ToggleButtonGroup","Tooltip","Typography","__","React","MenuListItem","Grid","Select","Typography","__","React","MenuListItem","Grid","Select","Typography","__","useState","Grid","__","Stack","__","useState","useEffect","IconButton","useElementInteractions","useState","useCallback","useMemo"]}
1
+ {"version":3,"sources":["../src/components/empty-state.tsx","../src/components/interactions-tab.tsx","../src/contexts/interactions-context.tsx","../src/contexts/popup-state-context.tsx","../src/components/interactions-list.tsx","../src/utils/get-interactions-config.ts","../src/components/header.tsx","../src/components/interaction-details.tsx","../src/components/controls/direction.tsx","../src/components/controls/effect.tsx","../src/components/controls/effect-type.tsx","../src/components/controls/time-frame-indicator.tsx","../src/components/controls/trigger.tsx"],"sourcesContent":["import * as React from 'react';\nimport { SwipeIcon } from '@elementor/icons';\nimport { Button, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const EmptyState = ( { onCreateInteraction }: { onCreateInteraction: () => void } ) => {\n\treturn (\n\t\t<Stack\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { p: 2.5, pt: 8, pb: 5.5 } }\n\t\t\tgap={ 1.5 }\n\t\t>\n\t\t\t<SwipeIcon fontSize=\"large\" />\n\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Animate elements with Interactions', 'elementor' ) }\n\t\t\t</Typography>\n\n\t\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"170px\">\n\t\t\t\t{ __(\n\t\t\t\t\t'Add entrance animations and effects triggered by user interactions such as click, hover, or scroll.',\n\t\t\t\t\t'elementor'\n\t\t\t\t) }\n\t\t\t</Typography>\n\n\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" sx={ { mt: 1 } } onClick={ onCreateInteraction }>\n\t\t\t\t{ __( 'Create an interaction', 'elementor' ) }\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useElementInteractions } from '@elementor/editor-elements';\nimport { SessionStorageProvider } from '@elementor/session';\n\nimport { InteractionsProvider, useInteractionsContext } from '../contexts/interactions-context';\nimport { PopupStateProvider, usePopupStateContext } from '../contexts/popup-state-context';\nimport { EmptyState } from './empty-state';\nimport { PredefinedInteractionsList } from './interactions-list';\n\nexport const InteractionsTab = ( { elementId }: { elementId: string } ) => {\n\treturn (\n\t\t<PopupStateProvider>\n\t\t\t<InteractionsTabContent elementId={ elementId } />\n\t\t</PopupStateProvider>\n\t);\n};\n\nfunction InteractionsTabContent( { elementId }: { elementId: string } ) {\n\tconst existingInteractions = useElementInteractions( elementId );\n\tconst { triggerDefaultOpen } = usePopupStateContext();\n\n\tconst [ showInteractions, setShowInteractions ] = useState( () => {\n\t\treturn !! JSON.parse( existingInteractions || '[]' ).length;\n\t} );\n\n\treturn (\n\t\t<SessionStorageProvider prefix={ elementId }>\n\t\t\t{ showInteractions ? (\n\t\t\t\t<InteractionsProvider elementId={ elementId }>\n\t\t\t\t\t<InteractionsContent />\n\t\t\t\t</InteractionsProvider>\n\t\t\t) : (\n\t\t\t\t<EmptyState\n\t\t\t\t\tonCreateInteraction={ () => {\n\t\t\t\t\t\tsetShowInteractions( true );\n\t\t\t\t\t\ttriggerDefaultOpen();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</SessionStorageProvider>\n\t);\n}\n\nfunction InteractionsContent() {\n\tconst { interactions, setInteractions } = useInteractionsContext();\n\n\tconst applyInteraction = useCallback(\n\t\t( interaction: string ) => {\n\t\t\tconst newInteractions = [\n\t\t\t\t{\n\t\t\t\t\tanimation: {\n\t\t\t\t\t\tanimation_type: 'full-preset',\n\t\t\t\t\t\tanimation_id: interaction,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tsetInteractions( JSON.stringify( newInteractions ) );\n\t\t},\n\t\t[ setInteractions ]\n\t);\n\n\tconst selectedInteraction = useMemo( () => {\n\t\ttry {\n\t\t\tconst parsed = JSON.parse( interactions || '[]' );\n\t\t\treturn parsed[ 0 ]?.animation?.animation_id || '';\n\t\t} catch {\n\t\t\treturn '';\n\t\t}\n\t}, [ interactions ] );\n\n\treturn (\n\t\t<>\n\t\t\t<PredefinedInteractionsList\n\t\t\t\tselectedInteraction={ selectedInteraction }\n\t\t\t\tonSelectInteraction={ applyInteraction }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { createContext, type ReactNode, useContext } from 'react';\nimport { updateElementInteractions, useElementInteractions } from '@elementor/editor-elements';\n\ntype InteractionsContextValue = {\n\tinteractions: string;\n\tsetInteractions: ( value: string ) => void;\n};\n\nconst InteractionsContext = createContext< InteractionsContextValue | null >( null );\n\nexport const InteractionsProvider = ( { children, elementId }: { children: ReactNode; elementId: string } ) => {\n\tconst interactions = useElementInteractions( elementId );\n\n\tconst setInteractions = ( value: string ) => {\n\t\tupdateElementInteractions( {\n\t\t\telementId,\n\t\t\tinteractions: value,\n\t\t} );\n\t};\n\n\tconst contextValue: InteractionsContextValue = {\n\t\tinteractions: interactions || '',\n\t\tsetInteractions,\n\t};\n\n\treturn <InteractionsContext.Provider value={ contextValue }>{ children }</InteractionsContext.Provider>;\n};\n\nexport const useInteractionsContext = () => {\n\tconst context = useContext( InteractionsContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'useInteractionsContext must be used within InteractionsProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { createContext, useCallback, useContext, useState } from 'react';\n\ntype PopupStateContextType = {\n\topenByDefault: boolean;\n\ttriggerDefaultOpen: () => void;\n\tresetDefaultOpen: () => void;\n};\n\nconst PopupStateContext = createContext< PopupStateContextType | undefined >( undefined );\n\nexport const PopupStateProvider = ( { children }: { children: React.ReactNode } ) => {\n\tconst [ openByDefault, setOpenByDefault ] = useState( false );\n\n\tconst triggerDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( true );\n\t}, [] );\n\n\tconst resetDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( false );\n\t}, [] );\n\n\treturn (\n\t\t<PopupStateContext.Provider value={ { openByDefault, triggerDefaultOpen, resetDefaultOpen } }>\n\t\t\t{ children }\n\t\t</PopupStateContext.Provider>\n\t);\n};\n\nexport const usePopupStateContext = () => {\n\tconst context = useContext( PopupStateContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'usePopupStateContext must be used within PopupStateProvider' );\n\t}\n\treturn context;\n};\n","import * as React from 'react';\nimport { useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { EyeIcon, XIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, IconButton, Popover, Stack, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePopupStateContext } from '../contexts/popup-state-context';\nimport { getInteractionsConfig } from '../utils/get-interactions-config';\nimport { Header } from './header';\nimport { InteractionDetails } from './interaction-details';\n\ntype PredefinedInteractionsListProps = {\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tonDelete?: () => void;\n};\n\nexport const PredefinedInteractionsList = ( {\n\tonSelectInteraction,\n\tselectedInteraction,\n\tonDelete,\n}: PredefinedInteractionsListProps ) => {\n\treturn (\n\t\t<Stack sx={ { m: 1, p: 1.5 } } gap={ 2 }>\n\t\t\t<Header label={ __( 'Interactions', 'elementor' ) } />\n\t\t\t<InteractionsList\n\t\t\t\tonDelete={ () => onDelete?.() }\n\t\t\t\tselectedInteraction={ selectedInteraction }\n\t\t\t\tonSelectInteraction={ onSelectInteraction }\n\t\t\t/>\n\t\t</Stack>\n\t);\n};\n\ntype InteractionListProps = {\n\tonDelete: () => void;\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tdefaultStateRef?: React.MutableRefObject< boolean | undefined >;\n};\n\nfunction InteractionsList( { onSelectInteraction, selectedInteraction, defaultStateRef }: InteractionListProps ) {\n\tconst [ interactionId, setInteractionId ] = useState( selectedInteraction );\n\n\tconst anchorEl = useRef< HTMLDivElement | null >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-interactions-list-${ popupId }`,\n\t} );\n\n\tconst { openByDefault, resetDefaultOpen } = usePopupStateContext();\n\n\tuseEffect( () => {\n\t\tif ( interactionId && interactionId !== selectedInteraction ) {\n\t\t\tonSelectInteraction( interactionId );\n\t\t}\n\t}, [ interactionId, selectedInteraction, onSelectInteraction ] );\n\n\tuseEffect( () => {\n\t\tif ( openByDefault && anchorEl.current ) {\n\t\t\tpopupState.open();\n\t\t\tresetDefaultOpen();\n\t\t}\n\t}, [ defaultStateRef, openByDefault, popupState, resetDefaultOpen ] );\n\n\tconst displayLabel = useMemo( () => {\n\t\tif ( ! interactionId ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst animationOptions = getInteractionsConfig()?.animationOptions;\n\t\tconst option = animationOptions.find( ( opt ) => opt.value === interactionId );\n\n\t\treturn option?.label || interactionId;\n\t}, [ interactionId ] );\n\n\treturn (\n\t\t<Stack gap={ 1.5 } ref={ anchorEl }>\n\t\t\t<UnstableTag\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\tfullWidth\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ displayLabel }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t\t\t\t<EyeIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton size=\"tiny\">\n\t\t\t\t\t\t\t<XIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorEl.current }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\tonClose={ () => {\n\t\t\t\t\tpopupState.close();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<InteractionDetails\n\t\t\t\t\tinteraction={ selectedInteraction }\n\t\t\t\t\tonChange={ ( newValue: string ) => {\n\t\t\t\t\t\tsetInteractionId( newValue );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Stack>\n\t);\n}\n","import { type InteractionsConfig } from '../types';\n\nconst DEFAULT_CONFIG: InteractionsConfig = {\n\tconstants: {\n\t\tdefaultDuration: 300,\n\t\tdefaultDelay: 0,\n\t\tslideDistance: 100,\n\t\tscaleStart: 0.5,\n\t\teasing: 'linear',\n\t},\n\tanimationOptions: [],\n};\n\nexport function getInteractionsConfig(): InteractionsConfig {\n\treturn window.ElementorInteractionsConfig || DEFAULT_CONFIG;\n}\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { IconButton, Stack, Typography } from '@elementor/ui';\n\nexport const Header = ( { label }: { label: string } ) => {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"space-between\"\n\t\t\tgap={ 1 }\n\t\t\tsx={ { marginInlineEnd: -0.75, py: 0.25 } }\n\t\t>\n\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\" sx={ { lineHeight: 1 } }>\n\t\t\t\t{ label }\n\t\t\t</Typography>\n\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t<PlusIcon fontSize=\"tiny\" />\n\t\t\t</IconButton>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { Divider, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { Direction } from './controls/direction';\nimport { Effect } from './controls/effect';\nimport { EffectType } from './controls/effect-type';\nimport { TimeFrameIndicator } from './controls/time-frame-indicator';\nimport { Trigger } from './controls/trigger';\n\nconst DELIMITER = '-';\n\ntype InteractionDetailsProps = {\n\tinteraction: string;\n\tonChange: ( interaction: string ) => void;\n};\n\nexport const InteractionDetails = ( { interaction, onChange }: InteractionDetailsProps ) => {\n\tconst [ interactionDetails, setInteractionDetails ] = useState( () => {\n\t\tconst [ trigger, effect, type, direction, duration, delay ] = interaction.split( DELIMITER );\n\n\t\treturn {\n\t\t\ttrigger: trigger || 'load',\n\t\t\teffect: effect || 'fade',\n\t\t\ttype: type || 'in',\n\t\t\tdirection: direction || '',\n\t\t\tduration: duration || '300',\n\t\t\tdelay: delay || '0',\n\t\t};\n\t} );\n\n\tuseEffect( () => {\n\t\tconst newValue = Object.values( interactionDetails ).join( DELIMITER );\n\t\tonChange( newValue );\n\t}, [ interactionDetails, onChange ] );\n\n\tconst handleChange = < K extends keyof typeof interactionDetails >(\n\t\tkey: K,\n\t\tvalue: ( typeof interactionDetails )[ K ]\n\t) => {\n\t\tsetInteractionDetails( ( prev ) => ( { ...prev, [ key ]: value } ) );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Trigger value={ interactionDetails.trigger } onChange={ ( v ) => handleChange( 'trigger', v ) } />\n\t\t\t</Grid>\n\t\t\t<Divider />\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Effect value={ interactionDetails.effect } onChange={ ( v ) => handleChange( 'effect', v ) } />\n\t\t\t\t<EffectType value={ interactionDetails.type } onChange={ ( v ) => handleChange( 'type', v ) } />\n\t\t\t\t<Direction\n\t\t\t\t\tvalue={ interactionDetails.direction ?? '' }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'direction', v ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.duration }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'duration', v ) }\n\t\t\t\t\tlabel={ __( 'Duration', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.delay }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'delay', v ) }\n\t\t\t\t\tlabel={ __( 'Delay', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Direction( { value, onChange }: FieldProps ) {\n\tconst availableDirections = [\n\t\t{ key: 'top', label: __( 'Up', 'elementor' ), icon: <ArrowUpSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'bottom', label: __( 'Down', 'elementor' ), icon: <ArrowDownSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'left', label: __( 'Left', 'elementor' ), icon: <ArrowLeftIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'right', label: __( 'Right', 'elementor' ), icon: <ArrowRightIcon fontSize=\"tiny\" /> },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Direction', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableDirections.map( ( direction ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ direction.key } title={ direction.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ direction.key } value={ direction.key }>\n\t\t\t\t\t\t\t\t\t{ direction.icon }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\nexport function Effect( { value, onChange }: FieldProps ) {\n\tconst availableEffects = [\n\t\t{ key: 'fade', label: __( 'Fade', 'elementor' ) },\n\t\t{ key: 'slide', label: __( 'Slide', 'elementor' ) },\n\t\t{ key: 'scale', label: __( 'Scale', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Effect', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffects.map( ( effect ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ effect.key } value={ effect.key }>\n\t\t\t\t\t\t\t\t{ effect.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function EffectType( { value, onChange }: FieldProps ) {\n\tconst availableEffectTypes = [\n\t\t{ key: 'in', label: __( 'In', 'elementor' ) },\n\t\t{ key: 'out', label: __( 'Out', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Type', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffectTypes.map( ( effectType ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ effectType.key } title={ effectType.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ effectType.key } value={ effectType.key }>\n\t\t\t\t\t\t\t\t\t{ effectType.label }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function TimeFrameIndicator( { value, onChange, label }: FieldProps ) {\n\tconst availableTimeFrames = [ '0', '100', '200', '300', '400', '500', '750', '1000', '1250', '1500' ].map(\n\t\t( key ) => ( {\n\t\t\tkey,\n\t\t\t// translators: %s: time in milliseconds\n\t\t\tlabel: __( '%s MS', 'elementor' ).replace( '%s', key ),\n\t\t} )\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableTimeFrames.map( ( timeFrame ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ timeFrame.key } value={ timeFrame.key }>\n\t\t\t\t\t\t\t\t{ timeFrame.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Trigger( { value, onChange }: FieldProps ) {\n\tconst availableTriggers = Object.entries( {\n\t\tload: __( 'Page load', 'elementor' ),\n\t\tscrollIn: __( 'Scroll into view', 'elementor' ),\n\t\tscrollOut: __( 'Scroll out of view', 'elementor' ),\n\t} ).map( ( [ key, label ] ) => ( {\n\t\tkey,\n\t\tlabel,\n\t} ) );\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Trigger', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableTriggers.map( ( trigger ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ trigger.key } value={ trigger.key }>\n\t\t\t\t\t\t\t\t{ trigger.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n"],"mappings":"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","names":["React","useCallback","useMemo","useState","useElementInteractions","React","React","createContext","useContext","React","useEffect","useState","IconButton","Stack","__","React","Stack","Typography","React","useState","Grid","__","React","Typography","__","React","Grid","Typography","__","React","Grid","ToggleButton","ToggleButtonGroup","Tooltip","Typography","__","React","MenuListItem","Grid","Select","Typography","__","React","MenuListItem","Grid","Select","Typography","__","useState","Grid","__","Stack","__","useState","useEffect","IconButton","useElementInteractions","useState","useCallback","useMemo"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elementor/editor-interactions",
3
- "version": "3.33.0-230",
3
+ "version": "3.33.0-232",
4
4
  "private": false,
5
5
  "author": "Elementor Team",
6
6
  "homepage": "https://elementor.com/",
@@ -39,10 +39,10 @@
39
39
  "dev": "tsup --config=../../tsup.dev.ts"
40
40
  },
41
41
  "dependencies": {
42
- "@elementor/editor-elements": "3.33.0-230",
43
- "@elementor/editor-ui": "3.33.0-230",
42
+ "@elementor/editor-elements": "3.33.0-232",
43
+ "@elementor/editor-ui": "3.33.0-232",
44
44
  "@elementor/icons": "1.56.0",
45
- "@elementor/session": "3.33.0-230",
45
+ "@elementor/session": "3.33.0-232",
46
46
  "@elementor/ui": "1.36.15",
47
47
  "@wordpress/i18n": "^5.13.0"
48
48
  },
@@ -53,10 +53,10 @@ function InteractionsList( { onSelectInteraction, selectedInteraction, defaultSt
53
53
  const { openByDefault, resetDefaultOpen } = usePopupStateContext();
54
54
 
55
55
  useEffect( () => {
56
- if ( interactionId ) {
56
+ if ( interactionId && interactionId !== selectedInteraction ) {
57
57
  onSelectInteraction( interactionId );
58
58
  }
59
- }, [ interactionId, onSelectInteraction ] );
59
+ }, [ interactionId, selectedInteraction, onSelectInteraction ] );
60
60
 
61
61
  useEffect( () => {
62
62
  if ( openByDefault && anchorEl.current ) {