{"version":3,"sources":["../../src/components/CopyToClipboardButton.tsx"],"sourcesContent":["'use client'; // for server side rendering\n\nimport { forwardRef, useState, type ReactNode } from 'react';\nimport { Snackbar, IconButton, styled } from '@mui/material';\nimport { useThemeProps } from '@mui/material/styles';\n\nexport interface CopyToClipboardButtonProps {\n    text?: string;\n    autoHideDuration?: number;\n    buttonContent?: ReactNode; // we recommend '@mui/icons-material/ContentCopy'\n    children: NonNullable<ReactNode>;\n}\n\nconst CopyToClipboardButtonRoot = styled(IconButton, {\n    name: 'MuiCopyToClipboardButton',\n    slot: 'root',\n})({});\n\nexport const CopyToClipboardButton = forwardRef<HTMLButtonElement, CopyToClipboardButtonProps>(\n    function CopyToClipboardButton(inProps, ref) {\n        const props = useThemeProps({ props: inProps, name: 'MuiCopyToClipboardButton' });\n        const { text, autoHideDuration, buttonContent, children } = props;\n        const [open, setOpen] = useState(false);\n        const value = text || JSON.stringify(children);\n        const handleClick = () => {\n            setOpen(true);\n            navigator.clipboard.writeText(value);\n        };\n\n        return (\n            <>\n                {children}\n                <CopyToClipboardButtonRoot\n                    ref={ref}\n                    color=\"primary\"\n                    size=\"small\"\n                    onClick={handleClick}>\n                    {buttonContent || 'Copy'}\n                </CopyToClipboardButtonRoot>\n                <Snackbar\n                    open={open}\n                    onClose={() => {\n                        setOpen(false);\n                    }}\n                    autoHideDuration={autoHideDuration || 2500}\n                    message={`Copied '${value}' to clipboard`}\n                />\n            </>\n        );\n    }\n);\n\nexport default CopyToClipboardButton;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAqD;AACrD,sBAA6C;AAC7C,oBAA8B;AA0BlB;AAjBZ,IAAM,gCAA4B,wBAAO,4BAAY;AAAA,EACjD,MAAM;AAAA,EACN,MAAM;AACV,CAAC,EAAE,CAAC,CAAC;AAEE,IAAM,4BAAwB;AAAA,EACjC,SAASA,uBAAsB,SAAS,KAAK;AACzC,UAAM,YAAQ,6BAAc,EAAE,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAChF,UAAM,EAAE,MAAM,kBAAkB,eAAe,SAAS,IAAI;AAC5D,UAAM,CAAC,MAAM,OAAO,QAAI,uBAAS,KAAK;AACtC,UAAM,QAAQ,QAAQ,KAAK,UAAU,QAAQ;AAC7C,UAAM,cAAc,MAAM;AACtB,cAAQ,IAAI;AACZ,gBAAU,UAAU,UAAU,KAAK;AAAA,IACvC;AAEA,WACI,4EACK;AAAA;AAAA,MACD;AAAA,QAAC;AAAA;AAAA,UACG;AAAA,UACA,OAAM;AAAA,UACN,MAAK;AAAA,UACL,SAAS;AAAA,UACR,2BAAiB;AAAA;AAAA,MACtB;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACG;AAAA,UACA,SAAS,MAAM;AACX,oBAAQ,KAAK;AAAA,UACjB;AAAA,UACA,kBAAkB,oBAAoB;AAAA,UACtC,SAAS,WAAW,KAAK;AAAA;AAAA,MAC7B;AAAA,OACJ;AAAA,EAER;AACJ;AAEA,IAAO,gCAAQ;","names":["CopyToClipboardButton"]}