/** * Copyright 2022 Design Barn Inc. */ import { createRef, useEffect, useMemo, useState } from '@wordpress/element'; import clsx from 'clsx'; import * as React from 'react'; import { DotLottieUtils } from "@lottiefiles/dotlottie-js"; import { DotLottiePlayer, Controls as DLControls } from '@lottiefiles/dotlottie-react-player'; import { useInteractivity } from '../../hooks'; import { IHostAppProps, ILottieProps } from '../../interfaces'; import { Mode } from '../../utils/enums'; export const LottiePlayer: React.FC = ({ attributes, setAttributes }: IHostAppProps) => { const lottieRef = createRef(); const [settings, setSettings] = useState(attributes); const { loopHack } = attributes; const { loop = true, controls = true, autoplay = true } = JSON.parse(loopHack); useInteractivity(lottieRef, attributes, setAttributes); useEffect(() => { setTimeout(() => { setSettings(attributes); }, 10); }, [attributes]); const formattedHeight = useMemo(() => { if (settings.height.includes('px')) { return settings.height; } return `${settings.height}px`; }, [settings.height]); const formattedWidth = useMemo(() => { if (settings.width.includes('px')) { return settings.width; } return `${settings.width}px`; }, [settings.width]); return ( // Interactivity works fine with this one ); };