react-award
Version:
React component for rewarding users
1 lines • 18.2 kB
Source Map (JSON)
{"version":3,"file":"react-award.modern.mjs","sources":["../src/components/mask.tsx","../src/components/image.tsx","../src/components/player.tsx","../src/hocs/with-award-properties.ts","../src/hooks/use-hover.tsx","../src/components/award.tsx","../src/react-award.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\n\ninterface MaskProps {\n image: string;\n className: string;\n style?: CSSProperties;\n backgroundColor?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Mask component\n */\nexport const Mask = (props: MaskProps) => {\n const { backgroundColor, className, children, style = {} } = props;\n\n if (!props.image) {\n return null;\n }\n\n return (\n <div\n className={className}\n style={{\n WebkitMaskImage: `url(${props.image})`,\n maskImage: `url(${props.image})`,\n backgroundColor,\n ...style,\n }}\n >\n {children}\n </div>\n );\n};\n","import React, { CSSProperties } from 'react';\n\ninterface ImageProps {\n image: string;\n duration?: number;\n style?: CSSProperties;\n className?: string;\n}\n\n/**\n * Image component\n */\nexport const Image: React.FC<ImageProps> = props => {\n if (!props.image) {\n return null;\n }\n\n return (\n <img\n src={props.image}\n style={{\n transitionDuration: `${props.duration}ms`,\n ...(props.style || {}),\n }}\n className={props.className}\n />\n );\n};\n","import React, { CSSProperties, useEffect, useRef } from 'react';\nimport { LottiePlayer, AnimationItem } from 'lottie-web';\n\nexport interface PlayerProps {\n lottie: LottiePlayer;\n play: boolean;\n animation: any;\n segments?: [number, number];\n speed?: number;\n className?: string;\n style?: CSSProperties;\n onLoad?: () => any;\n onComplete?: () => any;\n}\n\n/**\n * A wrapper for the Lottie player that simplifies the event that is triggered when loading,\n * and allows you to play or stop the animation in a declarative way.\n */\nexport const Player = (props: PlayerProps) => {\n const { animation, play, segments, className, style, speed } = props;\n\n const animationRef = useRef<AnimationItem | null>(null);\n const containerRef = useRef<any>(null);\n\n // animation loader\n useEffect(() => {\n animationRef.current = props.lottie.loadAnimation({\n autoplay: false,\n loop: false,\n animationData: props.animation,\n renderer: 'svg',\n container: containerRef.current,\n });\n\n return () => {\n animationRef.current?.destroy();\n animationRef.current = null;\n };\n }, [animation]);\n\n // event handlers\n useEffect(() => {\n if (!animationRef.current) {\n return;\n }\n const onLoad = () => {\n animationRef.current?.hide();\n animationRef.current?.stop();\n props.onLoad?.call(null);\n };\n const onComplete = () => {\n animationRef.current?.hide();\n animationRef.current?.stop();\n props.onComplete?.call(null);\n };\n\n animationRef.current.addEventListener('DOMLoaded', onLoad);\n animationRef.current.addEventListener('complete', onComplete);\n\n return () => {\n animationRef.current?.removeEventListener('DOMLoaded', onLoad);\n animationRef.current?.removeEventListener('complete', onComplete);\n };\n }, [props.onLoad, props.onComplete]);\n\n useEffect(() => {\n if (play) {\n animationRef.current?.show();\n animationRef.current?.setSpeed(speed || 1);\n if (Array.isArray(segments)) {\n animationRef.current?.playSegments(segments, true);\n } else {\n animationRef.current?.play();\n }\n }\n }, [play, segments, speed]);\n\n return <div style={style} className={className} ref={containerRef} />;\n};\n","import React from 'react';\n\ninterface AwardChildProperties {\n duration?: number;\n className?: string;\n}\n\n/**\n * Inject award properties to custom child\n */\nexport const withAwardProperties = (WrappedComponent: React.ReactNode) => (\n props: AwardChildProperties\n) => {\n if (!React.isValidElement(WrappedComponent)) {\n return null;\n }\n return React.cloneElement(WrappedComponent as React.ReactElement, {\n className: `${props.className}`,\n style: {\n transitionDuration: `${props.duration}ms`,\n },\n });\n};\nexport default withAwardProperties;\n","import { useState, useRef, useEffect } from 'react';\n\n/**\n * The \"useHover\" hook allows you to detect if the mouse is hovering over a specific element in a React component.\n * It returns a reference to the element and a boolean value indicating whether the mouse is hovering over it or not.\n */\nexport function useHover(): [\n React.MutableRefObject<HTMLDivElement | null>,\n boolean\n] {\n const [hovered, setHovered] = useState(false);\n\n const ref = useRef<HTMLDivElement | null>(null);\n\n function handleMouseOver() {\n setHovered(true);\n }\n\n function handleMouseOut() {\n //setWasHovered(false);\n }\n\n useEffect(() => {\n const current = ref.current;\n if (current) {\n current.addEventListener('mouseover', handleMouseOver);\n current.addEventListener('mouseout', handleMouseOut);\n }\n return () => {\n if (current) {\n current.removeEventListener('mouseover', handleMouseOver);\n current.removeEventListener('mouseout', handleMouseOut);\n }\n };\n }, [ref]);\n\n return [ref, hovered];\n}\n","import React, { CSSProperties, useEffect, useMemo, useState } from 'react';\nimport { useTransition } from 'react-transition-state';\nimport { Mask } from './mask';\nimport { Image } from './image';\nimport { Player } from './player';\nimport { withAwardProperties } from '../hocs';\nimport { useHover } from '../hooks/use-hover';\nimport { LottiePlayer } from 'lottie-web';\n\nimport '../styles/transitions.css';\nimport '../styles/animations.css';\n\nexport interface AwardProps {\n /**\n * The 'source' property of an image. It can be an imported asset or a URL string.\n */\n image: string;\n /**\n * Lottie animation file. It can be an imported asset or a URL string.\n */\n animation: any;\n /**\n * Use this property to define the duration of the transition. It does not affect the duration of the animation.\n */\n duration?: number;\n /**\n * Set to 'true' to play the animation. This is ignored if 'playOnHover' is set to 'true'.\n */\n play?: boolean;\n /**\n * If this is set to 'true', the animation will be triggered when the user moves the mouse over the component.\n */\n playOnHover?: boolean;\n /**\n * Use this property to play only specific segments of the animation\n */\n segments?: [number, number];\n /**\n * To change the mask color.\n */\n backgroundColor?: string;\n /**\n * Set this property to 'true' to show a placeholder effect when the animation is not ready to be displayed.\n */\n showPlaceholder?: boolean;\n /**\n * Animation speed\n */\n speed?: any;\n /**\n * Container styles\n */\n style?: CSSProperties;\n /**\n * Image styles\n */\n imageStyle?: CSSProperties;\n /**\n * Mask styles\n */\n maskStyle?: CSSProperties;\n /**\n * Player styles\n */\n playerStyle?: CSSProperties;\n /**\n * Called when the lottie animation has finished\n */\n onComplete?: () => void;\n /**\n * Children. Use this if you want to replace the image\n */\n children?: React.ReactNode;\n}\n\n/** Allows to inject the lottie player dependency */\nexport const buildAward = (lottie: LottiePlayer) => {\n /** Award component */\n const Award: React.FC<AwardProps> = (props) => {\n const [ref, hovered] = useHover();\n const [loaded, setLoaded] = useState(false);\n const [transition, showImage] = useTransition({\n timeout: props.duration,\n preEnter: true,\n });\n\n // current status\n const showPlaceholder = props.showPlaceholder && !loaded;\n const play = loaded\n ? (props.playOnHover && hovered) || !!props.play\n : false;\n\n useEffect(() => {\n showImage(play);\n }, [play]);\n\n const CustomChild = useMemo(() => {\n return withAwardProperties(props.children);\n }, [props.children]);\n\n return (\n <div ref={ref} className=\"award-container\" style={props.style}>\n <Mask\n image={props.image}\n style={props.maskStyle}\n backgroundColor={props.backgroundColor}\n className={`award-mask ${showPlaceholder && 'placeholder'}`}\n >\n <Image\n image={props.image}\n style={props.imageStyle}\n duration={props.duration}\n className={`award-image ${transition.status}`}\n />\n </Mask>\n <CustomChild\n duration={props.duration}\n className={`award-image ${transition.status}`}\n />\n <Player\n lottie={lottie}\n play={play}\n speed={props.speed}\n segments={props.segments}\n style={props.playerStyle}\n animation={props.animation}\n onLoad={() => setLoaded(true)}\n onComplete={props.onComplete}\n className={`award-player ${transition.status}`}\n />\n </div>\n );\n };\n\n Award.defaultProps = {\n duration: 2000,\n backgroundColor: '#CCCCCC',\n showPlaceholder: false,\n };\n\n return Award;\n};\n","import lottie from 'lottie-web';\nimport { buildAward } from './components/award';\n\n/**\n * This React component displays a solid color mask with the silhouette of an image,\n * and when triggered, it performs a fade-in effect to reveal the image.\n *\n * The component also plays a confetti animation.\n * The user can specify different images or animation files for the component to display.\n */\nexport const Award = buildAward(lottie);\n"],"names":["Mask","props","backgroundColor","className","children","style","image","React","createElement","WebkitMaskImage","maskImage","Image","src","transitionDuration","duration","Player","animation","play","segments","speed","animationRef","useRef","containerRef","useEffect","current","lottie","loadAnimation","autoplay","loop","animationData","renderer","container","destroy","onLoad","hide","stop","call","onComplete","addEventListener","removeEventListener","show","setSpeed","Array","isArray","playSegments","ref","withAwardProperties","WrappedComponent","isValidElement","cloneElement","useHover","hovered","setHovered","useState","handleMouseOver","handleMouseOut","buildAward","Award","loaded","setLoaded","transition","showImage","useTransition","timeout","preEnter","showPlaceholder","playOnHover","CustomChild","useMemo","maskStyle","imageStyle","status","playerStyle","defaultProps"],"mappings":"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"}