"use client"; import {forwardRef} from "@nextui-org/system"; import {clsx} from "@nextui-org/shared-utils"; import {Tooltip} from "@nextui-org/tooltip"; import {ReactNode, useCallback, useMemo} from "react"; import {useSnippet, UseSnippetProps} from "./use-snippet"; import {SnippetCopyIcon} from "./snippet-copy-icon"; import {SnippetCheckIcon} from "./snippet-check-icon"; export interface SnippetProps extends Omit {} const Snippet = forwardRef((props, ref) => { const { Component, domRef, children, slots, styles, copied, copyIcon = , checkIcon = , symbolBefore, disableCopy, disableTooltip, hideSymbol, hideCopyButton, tooltipProps, isMultiLine, focusProps, onCopy, getSnippetProps, } = useSnippet({ref, ...props}); const TooltipContent = useCallback( ({children}: {children?: ReactNode}) => {children}, [...Object.values(tooltipProps)], ); const contents = useMemo(() => { if (hideCopyButton) { return null; } const copyButton = ( ); if (disableTooltip) { return copyButton; } return {copyButton}; }, [ slots, styles?.copy, copied, checkIcon, copyIcon, onCopy, TooltipContent, disableCopy, disableTooltip, hideCopyButton, ]); const preContent = useMemo(() => { if (isMultiLine && children && Array.isArray(children)) { return (
{children.map((t, index) => (
              {!hideSymbol && {symbolBefore}}
              {t}
            
))}
); } return (
        {!hideSymbol && {symbolBefore}}
        {children}
      
); }, [children, hideSymbol, isMultiLine, symbolBefore, styles?.pre, slots]); return ( {preContent} {contents} ); }); Snippet.displayName = "NextUI.Snippet"; export default Snippet;