{"version":3,"file":"ExpandingText-OVJIC5_0.js","sources":["../../../app/javascript/components/ui/ExpandingText.tsx"],"sourcesContent":["/* eslint-disable react/no-danger */\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport classNames from \"lib/classNames\";\nimport { useCallback, useMemo, useState } from \"react\";\n\ntype ExpandingTextProps = {\n text: string;\n lines: number;\n className?: string;\n isTextExpandedFromOutside?: boolean;\n};\n\nconst CHAR_PER_LINE = 45 * 2;\n\n// line-clamp-1 line-clamp-2 line-clamp-3 line-clamp-4 line-clamp-5 line-clamp-6\nexport default function ExpandingText({\n text = \"\",\n lines = 3,\n className = \"\",\n isTextExpandedFromOutside = false,\n}: ExpandingTextProps) {\n const [isExpanded, setExpanded] = useState(\n isTextExpandedFromOutside || text.length < CHAR_PER_LINE * lines\n );\n\n const htmlText = useMemo(() => {\n return (text || \"\")\n .replaceAll(\"\\n\\n\", \"
\")\n .replaceAll(\"\\r\\n\\r\\n\", \"
\")\n .replaceAll(\"\\r\\n\", \"
\")\n .replaceAll(\"\\n\", \"
\");\n }, [text]);\n\n const toggleExpanded = useCallback(() => {\n setExpanded((e) => !e);\n }, []);\n\n if (!text || text.length === 0) {\n return <>>;\n }\n\n return (\n