{"version":3,"file":"InteractiveStars-CKgAOqNX.js","sources":["../../../app/javascript/components/BookReview/InteractiveStars.tsx"],"sourcesContent":["import { useRef, useState } from \"react\";\nimport { StarIcon } from \"@heroicons/react/solid\";\nimport classNames from \"lib/classNames\";\n// import useIsLoggedIn from \"hooks/user/useIsLoggedIn\";\n\nexport interface UserBookRatingProps {\n rating?: number;\n onRatingChanged?: any;\n onRatingHoverChange?: any;\n size?: number;\n}\n\nexport default function InteractiveStars(props: UserBookRatingProps) {\n const {\n rating = null,\n onRatingChanged,\n onRatingHoverChange,\n size = 6,\n } = props;\n const [hoverRating, setHoverRating] = useState(0);\n // const isLoggedIn = useIsLoggedIn();\n const halfSize = size / 2;\n\n // let party;\n // if (\n // isLoggedIn &&\n // onRatingChanged &&\n // typeof window !== \"undefined\" &&\n // typeof document !== \"undefined\"\n // ) {\n // // eslint-disable-next-line global-require\n // party = require(\"party-js\");\n // }\n const starsRef = useRef();\n\n const starClicked = (newRating) => {\n // if (party && newRating === 5) {\n // party.default.sparkles(starsRef.current, {\n // count: party.default.variation.range(20, 30),\n // speed: party.default.variation.range(50, 150),\n // size: party.default.variation.range(0.5, 1.5),\n // });\n // }\n if (onRatingChanged) {\n onRatingChanged(newRating);\n }\n if (onRatingHoverChange) {\n onRatingHoverChange(newRating);\n }\n };\n\n const onHover = (stars) => {\n if (onRatingChanged) {\n setHoverRating(stars);\n }\n if (onRatingHoverChange) {\n onRatingHoverChange(stars);\n }\n };\n\n return (\n
\n {[0, 1, 2, 3, 4].map((star) => (\n \n onHover(star + 1)}\n onMouseOut={() => (onRatingChanged ? onHover(null) : null)}\n onMouseDown={() => (onRatingChanged ? starClicked(star + 1) : null)}\n className={classNames(\n `absolute h-${size} w-${size}`,\n hoverRating >= star + 1 ? \"text-yellow-300\" : \"\",\n !hoverRating && rating >= star + 1 ? \"text-yellow-400\" : \"\",\n !hoverRating && rating < star + 1 ? \"text-gray-400\" : \"\"\n )}\n />\n \n onHover(star + 0.5)}\n onMouseOut={() => (onRatingChanged ? onHover(null) : null)}\n onMouseDown={() =>\n onRatingChanged ? starClicked(star + 0.5) : null\n }\n className={classNames(\n `absolute h-${size} w-${size}`,\n hoverRating >= star + 0.5 ? \"text-yellow-300\" : \"\",\n !hoverRating && rating >= star + 0.5 ? \"text-yellow-400\" : \"\",\n !hoverRating && rating < star + 0.5 ? \"text-gray-400\" : \"\"\n )}\n />\n \n
\n ))}\n \n );\n}\n"],"names":["InteractiveStars","props","rating","onRatingChanged","onRatingHoverChange","size","hoverRating","setHoverRating","useState","halfSize","starsRef","useRef","starClicked","newRating","onHover","stars","jsx","star","jsxs","classNames","StarIcon"],"mappings":"kIAYA,SAAwBA,EAAiBC,EAA4B,CAC7D,KAAA,CACJ,OAAAC,EAAS,KACT,gBAAAC,EACA,oBAAAC,EACA,KAAAC,EAAO,CACL,EAAAJ,EACE,CAACK,EAAaC,CAAc,EAAIC,WAAS,CAAC,EAE1CC,EAAWJ,EAAO,EAYlBK,EAAWC,EAAAA,SAEXC,EAAeC,GAAc,CAQ7BV,GACFA,EAAgBU,CAAS,EAEvBT,GACFA,EAAoBS,CAAS,CAC/B,EAGIC,EAAWC,GAAU,CACrBZ,GACFI,EAAeQ,CAAK,EAElBX,GACFA,EAAoBW,CAAK,CAC3B,EAGF,OACGC,EAAAA,IAAA,MAAA,CAAI,UAAU,yBAAyB,IAAKN,EAC1C,SAAA,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC,EAAE,IAAKO,GACpBC,EAAA,KAAC,MAAA,CAEC,UAAWC,EACT,cAAcd,CAAI,MAAMA,CAAI,GAC5BF,EAAkB,eAAiB,EACrC,EAEA,SAAA,CAAAa,EAAA,IAACI,EAAA,CACC,YAAa,IAAMN,EAAQG,EAAO,CAAC,EACnC,WAAY,IAAOd,EAAkBW,EAAQ,IAAI,EAAI,KACrD,YAAa,IAAOX,EAAkBS,EAAYK,EAAO,CAAC,EAAI,KAC9D,UAAWE,EACT,cAAcd,CAAI,MAAMA,CAAI,GAC5BC,GAAeW,EAAO,EAAI,kBAAoB,GAC9C,CAACX,GAAeJ,GAAUe,EAAO,EAAI,kBAAoB,GACzD,CAACX,GAAeJ,EAASe,EAAO,EAAI,gBAAkB,EACxD,CAAA,CACF,QACC,OAAK,CAAA,UAAW,cAAcZ,CAAI,MAAMI,CAAQ,mBAC/C,SAAAO,EAAA,IAACI,EAAA,CACC,YAAa,IAAMN,EAAQG,EAAO,EAAG,EACrC,WAAY,IAAOd,EAAkBW,EAAQ,IAAI,EAAI,KACrD,YAAa,IACXX,EAAkBS,EAAYK,EAAO,EAAG,EAAI,KAE9C,UAAWE,EACT,cAAcd,CAAI,MAAMA,CAAI,GAC5BC,GAAeW,EAAO,GAAM,kBAAoB,GAChD,CAACX,GAAeJ,GAAUe,EAAO,GAAM,kBAAoB,GAC3D,CAACX,GAAeJ,EAASe,EAAO,GAAM,gBAAkB,EAC1D,CAAA,CAAA,EAEJ,CAAA,CAAA,EA/BK,QAAQA,CAAI,EAiCpB,CAAA,CACH,CAAA,CAEJ"}