{"version":3,"file":"BookLayout-CN321sUy.js","sources":["../../../node_modules/d3-array/src/max.js","../../../app/javascript/features/books/components/RatingsGraph.tsx","../../../app/javascript/features/books/components/BookRatingDetails.tsx","../../../app/javascript/features/books/components/BookHeader.tsx","../../../app/javascript/features/books/components/BookTabs.tsx","../../../app/javascript/features/books/layouts/BookLayout/BookLayout.tsx"],"sourcesContent":["export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","import { scaleBand, scaleLinear } from \"d3-scale\";\nimport { max } from \"d3-array\";\nimport { colors } from \"constants/tailwind\";\nimport pluralize from \"lib/pluralize\";\nimport { BookSerializersRatingsDistribution } from \"types/serializers\";\n\nconst ratings = [0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5];\n\nexport default function RatingsGraph({\n ratingsDistribution,\n rating,\n}: {\n ratingsDistribution: BookSerializersRatingsDistribution[];\n rating: number;\n}) {\n const roundedRating = Math.round(rating);\n\n const counts = ratings.map((countRating) => {\n return {\n rating: countRating,\n count: ratingsDistribution\n .filter((r) => r.rating === countRating)\n .reduce((i, r) => r.count + i, 0),\n };\n });\n\n const width = 329;\n const height = 48;\n const marginTop = 0;\n const marginRight = 0;\n const marginBottom = 5;\n const marginLeft = 0;\n\n // Declare the x (horizontal position) scale.\n const x = scaleBand(ratings, [marginLeft, width - marginRight]).padding(0.1);\n\n // Declare the y (vertical position) scale.\n const y = scaleLinear([0, max(counts, (d) => d.count)], [height - marginBottom, marginTop]);\n\n // Return the SVG element.\n return (\n
\n
\n