{
  "version": 3,
  "sources": ["../../src/components/copyToClipboard/CopyToClipboardIcon.tsx", "../../src/components/copyToClipboard/styles.ts", "../../src/components/copyToClipboard/index.tsx"],
  "sourcesContent": ["import { motion } from 'framer-motion';\nimport { css, styled } from 'styled-components';\nimport CopyIcon2 from '../../assets/icons/CopyIcon2';\n\nconst IconContainer = styled(motion.div)<{ $clipboard?: boolean }>`\n  transition: all 220ms cubic-bezier(0.175, 0.885, 0.32, 1.1);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  max-width: 24px;\n  svg {\n    display: block;\n  }\n  svg,\n  svg path,\n  svg rect {\n    transition: inherit;\n  }\n  svg path:first-child {\n    transform-origin: 50% 50%;\n    fill: var(--pcm-body-background);\n    stroke: var(--pcm-body-color-secondary);\n  }\n  svg rect {\n    transform-origin: 53% 63%;\n    fill: var(--pcm-body-background);\n    stroke: var(--pcm-body-color-secondary);\n  }\n  svg path:last-child {\n    opacity: 0;\n    stroke: #fff !important;\n    transform: translate(11.75px, 10px) rotate(90deg) scale(0.6);\n  }\n  ${(props) =>\n    props.$clipboard\n      ? css`\n          svg {\n            transition-delay: 0ms;\n            path:first-child {\n              opacity: 0;\n              transform: rotate(-90deg) scale(0.2);\n            }\n            rect {\n              rx: 10px;\n              fill: var(--pcm-accent-color);\n              stroke: var(--pcm-accent-color);\n              transform: rotate(-90deg) scale(1.45);\n            }\n            path:last-child {\n              transition-delay: 100ms;\n              opacity: 1;\n              transform: translate(7.75px, 9.5px);\n            }\n          }\n        `\n      : css`\n          &:hover {\n          }\n          &:hover:active {\n          }\n        `}\n`;\n\nconst CopyToClipboardIcon = ({ copied, small }: { copied?: boolean; small?: boolean }) => (\n  <IconContainer $clipboard={copied}>\n    <CopyIcon2\n      style={{\n        transform: small ? 'scale(1)' : 'translateX(3px) scale(1.5)',\n        opacity: small || copied ? 1 : 0.6,\n      }}\n    />\n  </IconContainer>\n);\n\nexport default CopyToClipboardIcon;\n", "import { css, styled } from 'styled-components';\n\nexport const Container = styled.div<{ $disabled?: boolean }>`\n  transition: all 220ms cubic-bezier(0.175, 0.885, 0.32, 1.1);\n  cursor: pointer;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n\n  ${(props) =>\n    props.$disabled\n      ? css`\n          cursor: not-allowed;\n          opacity: 0.4;\n        `\n      : css`\n          &:hover {\n          }\n        `}\n`;\n\nexport const OffsetContainer = styled.div`\n  display: flex;\n  gap: 4px;\n  position: relative;\n  transition: inherit;\n  align-items: center;\n  /* svg {\n    position: absolute;\n    display: block;\n    top: -2px;\n    margin: 0;\n    margin-left: 4px;\n  } */\n`;\n", "import React, { useState } from 'react';\nimport Button from '../button';\nimport CopyToClipboardIcon from './CopyToClipboardIcon';\nimport { Container, OffsetContainer } from './styles';\n\nconst CopyToClipboard: React.FC<{\n  string?: string;\n  children?: React.ReactNode;\n  variant?: 'button';\n}> = ({ string, children, variant }) => {\n  const [clipboard, setClipboard] = useState(false);\n  const [className, setClassName] = useState('copied-0');\n  let timeout: NodeJS.Timeout;\n\n  function copyToClipboard(str) {\n    if (navigator.clipboard && window.isSecureContext) {\n      return navigator.clipboard\n        .writeText(str)\n        .then(() => {\n          console.log('Text copied to clipboard');\n        })\n        .catch((err) => {\n          console.error('Failed to copy text: ', err);\n        });\n    } else {\n      // Fallback \u65B9\u6848\n      const textArea = document.createElement('textarea');\n      textArea.value = str;\n      // \u4F7F textArea \u4E0D\u53EF\u89C1\n      textArea.style.position = 'fixed';\n      textArea.style.left = '-999999px';\n      textArea.style.top = '-999999px';\n      document.body.appendChild(textArea);\n      textArea.focus();\n      textArea.select();\n\n      return new Promise((res, rej) => {\n        // \u5BF9\u4E8E\u65E7\u7248\u6D4F\u89C8\u5668\n        try {\n          document.execCommand('copy');\n          console.log('Text copied to clipboard');\n          document.body.removeChild(textArea);\n          res(true);\n        } catch (err) {\n          console.error('Failed to copy text: ', err);\n          document.body.removeChild(textArea);\n          rej(err);\n        }\n      });\n    }\n  }\n\n  const onCopy = () => {\n    if (!string) return;\n    const str = string.trim();\n    copyToClipboard(str);\n    setClipboard(true);\n    setClassName('copied');\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      setClipboard(false);\n      setClassName('copied-0');\n    }, 1000);\n  };\n\n  if (variant === 'button')\n    return (\n      <Button disabled={!string} onClick={onCopy} className={className}>\n        <div\n          style={{\n            display: 'flex',\n            gap: '8px',\n            alignItems: 'center',\n            overflow: 'hidden',\n          }}\n        >\n          <div\n            style={{\n              width: '16px',\n            }}\n          >\n            <CopyToClipboardIcon copied={clipboard} />\n          </div>\n          {children}\n        </div>\n      </Button>\n    );\n\n  return (\n    <Container onClick={onCopy} $disabled={!string} className={className}>\n      <OffsetContainer>\n        {children as any}\n        <div\n          style={{\n            display: 'flex',\n            alignItems: 'center',\n            overflow: 'hidden',\n          }}\n        >\n          <CopyToClipboardIcon copied={clipboard} small />\n        </div>\n      </OffsetContainer>\n    </Container>\n  );\n};\n\nexport default CopyToClipboard;\n"],
  "mappings": "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",
  "names": ["css", "styled", "jsx"]
}
