{"version":3,"file":"HighlightArea-Cl0GvIvT.cjs","names":[],"sources":["../src/Components/Elements/HighlightArea/index.tsx"],"sourcesContent":["import type { NumberValue } from 'd3-scale';\r\nimport { motion } from 'motion/react';\r\n\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport type { AnimateDataType } from '@/Types';\r\n\r\ninterface Props {\r\n  areaSettings: {\r\n    coordinates: (Date | null | number)[];\r\n    style?: React.CSSProperties;\r\n    className?: string;\r\n    color?: string;\r\n    strokeWidth?: number;\r\n  }[];\r\n  width: number;\r\n  height: number;\r\n  scale: (value: Date | NumberValue) => number;\r\n  animate: AnimateDataType;\r\n  isInView: boolean;\r\n}\r\n\r\nexport function HighlightArea(props: Props) {\r\n  const { areaSettings, width, height, scale, animate, isInView } = props;\r\n  return (\r\n    <>\r\n      {areaSettings.map((d, i) => (\r\n        // biome-ignore lint/suspicious/noArrayIndexKey: index is the unique identifier\r\n        <motion.g key={i}>\r\n          {d.coordinates[0] === null && d.coordinates[1] === null ? null : (\r\n            <motion.g>\r\n              <motion.rect\r\n                style={{\r\n                  fill: d.color || Colors.light.grays['gray-300'],\r\n                  strokeWidth: d.strokeWidth,\r\n                  ...(d.style || {}),\r\n                }}\r\n                className={d.className}\r\n                y={0}\r\n                height={height}\r\n                variants={{\r\n                  initial: {\r\n                    width: 0,\r\n                    x: d.coordinates[0] ? scale(d.coordinates[0]) : 0,\r\n                    opacity: 1,\r\n                  },\r\n                  whileInView: {\r\n                    width: d.coordinates[1]\r\n                      ? scale(d.coordinates[1]) - (d.coordinates[0] ? scale(d.coordinates[0]) : 0)\r\n                      : width - (d.coordinates[0] ? scale(d.coordinates[0]) : 0),\r\n                    x: d.coordinates[0] ? scale(d.coordinates[0]) : 0,\r\n                    opacity: 1,\r\n                    transition: { duration: animate.duration },\r\n                  },\r\n                }}\r\n                initial='initial'\r\n                animate={isInView ? 'whileInView' : 'initial'}\r\n                exit={{ opacity: 0, width: 0, transition: { duration: animate.duration } }}\r\n              />\r\n            </motion.g>\r\n          )}\r\n        </motion.g>\r\n      ))}\r\n    </>\r\n  );\r\n}\r\n\r\ninterface ScatterPlotProps {\r\n  areaSettings: {\r\n    coordinates: (Date | null | number)[];\r\n    style?: React.CSSProperties;\r\n    className?: string;\r\n    color?: string;\r\n    strokeWidth?: number;\r\n  }[];\r\n  width: number;\r\n  height: number;\r\n  scaleX: (value: Date | NumberValue) => number;\r\n  scaleY: (value: Date | NumberValue) => number;\r\n  animate: AnimateDataType;\r\n  isInView: boolean;\r\n}\r\n\r\nexport function HighlightAreaForScatterPlot(props: ScatterPlotProps) {\r\n  const { areaSettings, width, height, scaleX, scaleY, animate, isInView } = props;\r\n  return (\r\n    <>\r\n      {areaSettings.map((d, i) => (\r\n        // biome-ignore lint/suspicious/noArrayIndexKey: index is the unique identifier\r\n        <motion.g key={`highlight_area_${i}`}>\r\n          {d.coordinates.filter((el) => el === null).length === 4 ? null : (\r\n            <motion.g>\r\n              <motion.rect\r\n                style={{\r\n                  fill: d.color || Colors.light.grays['gray-300'],\r\n                  strokeWidth: d.strokeWidth,\r\n                  ...(d.style || {}),\r\n                }}\r\n                className={d.className}\r\n                variants={{\r\n                  initial: {\r\n                    x: d.coordinates[0] ? scaleX(d.coordinates[0] as number) : 0,\r\n                    width: 0,\r\n                    y: d.coordinates[3] ? scaleY(d.coordinates[3] as number) : 0,\r\n                    height: 0,\r\n                  },\r\n                  whileInView: {\r\n                    x: d.coordinates[0] ? scaleX(d.coordinates[0] as number) : 0,\r\n                    width: d.coordinates[1]\r\n                      ? scaleX(d.coordinates[1] as number) -\r\n                        (d.coordinates[0] ? scaleX(d.coordinates[0] as number) : 0)\r\n                      : width - (d.coordinates[0] ? scaleX(d.coordinates[0] as number) : 0),\r\n                    y: d.coordinates[3] ? scaleY(d.coordinates[3] as number) : 0,\r\n                    height:\r\n                      d.coordinates[2] !== null\r\n                        ? scaleY(d.coordinates[2] as number) -\r\n                          (d.coordinates[3] ? scaleY(d.coordinates[3] as number) : 0)\r\n                        : height -\r\n                          (d.coordinates[3] ? height - scaleY(d.coordinates[3] as number) : 0),\r\n                    transition: { duration: animate.duration },\r\n                  },\r\n                }}\r\n                initial='initial'\r\n                animate={isInView ? 'whileInView' : 'initial'}\r\n                exit={{\r\n                  opacity: 0,\r\n                  width: 0,\r\n                  height: 0,\r\n                  transition: { duration: animate.duration },\r\n                }}\r\n              />\r\n            </motion.g>\r\n          )}\r\n        </motion.g>\r\n      ))}\r\n    </>\r\n  );\r\n}\r\n"],"mappings":"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"}