{"version":3,"sources":["../../../src/Tooltip/TooltipContent/TooltipContent.tsx","../../../src/utilities/Absolute/Absolute.tsx","../../../src/utilities/Absolute/Absolute.hooks.ts","../../../src/utilities/Clay/Clay.tsx","../../../src/utilities/Flex/Flex.tsx","../../../src/utilities/Portal/Portal.tsx","../../../src/Typography/Typography.tsx","../../../src/Tooltip/Tooltip.provider.tsx","../../../src/Tooltip/TooltipContent/TooltipContent.utils.ts"],"names":["XClose","vars","cloneElement","isValidElement","useEffect","useState","useAbsolute","to","position","align","setDomRect","callback","x","height","y","width","style","fixedProperty","unFixedProperty","fixedAxisValue","fixedRelativeValue","alignAxisValue","alignRelativeValue","Absolute","children","offsetX","offsetY","autoMinWidth","floatStyle","__spreadProps","__spreadValues","forwardRef","jsx","Clay","_a","ref","_b","className","_hover","_active","_after","_before","_focus","size","shape","sx","as","native","props","__objRest","ClayNameSpace","_Flex","Flex","_FlexCenter","FlexCenter","_FlexColumn","FlexColumn","FlexNameSpace","createPortal","Portal","container","absoluteProps","classNames","_Typography","semanticToken","variant","colorToken","whiteSpace","numOfLine","textAlign","Typography","useCallbackRef","createContext","useContext","useMemo","TooltipContext","useTooltipContext","context","calculatePosition","hasArrow","jsxs","TooltipContent","description","hasCloseButton","label","portalRef","isOpen","setOff"],"mappings":"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","sourcesContent":["import { XClose } from \"@imwebme/clay-icons\";\nimport { vars } from \"@imwebme/clay-token\";\nimport { Clay, Flex, Typography } from \"../..\";\nimport { Portal } from \"../../utilities/Portal\";\nimport { useTooltipContext } from \"../Tooltip.provider\";\nimport type { TooltipContentProps } from \"./TooltipContent.types\";\nimport { calculatePosition } from \"./TooltipContent.utils\";\n\nexport const TooltipContent = ({\n  children,\n  description,\n  hasArrow,\n  hasCloseButton,\n  label,\n  offsetX,\n  offsetY,\n  position,\n  sx,\n  className,\n}: TooltipContentProps) => {\n  const { portalRef, isOpen, setOff } = useTooltipContext();\n\n  return isOpen ? (\n    <Portal container={portalRef}>\n      <Clay\n        className={className}\n        position=\"absolute\"\n        padding={description ? \"12px 16px\" : \"6px 8px\"}\n        boxShadow={vars.dropShadow.layer}\n        borderRadius={vars.rounded.medium}\n        backgroundColor={vars.semantic.color.surface}\n        cursor=\"default\"\n        sx={{\n          ...calculatePosition({ position, offsetY, offsetX, hasArrow }),\n          ...sx,\n        }}\n      >\n        {hasCloseButton && (\n          <Clay\n            position=\"absolute\"\n            top=\"8px\"\n            right=\"8px\"\n            display=\"flex\"\n            cursor=\"pointer\"\n            native={{\n              onClick: setOff,\n            }}\n          >\n            <XClose />\n          </Clay>\n        )}\n\n        <Flex.Column gap=\"8px\" flex={1} alignItems=\"flex-start\">\n          {label && (\n            <Typography variant=\"label-small-bold\" whiteSpace=\"pre\">\n              {label}\n            </Typography>\n          )}\n\n          {description && (\n            <Typography variant=\"body-small\" colorToken=\"textSub\" textAlign=\"start\">\n              {description}\n            </Typography>\n          )}\n        </Flex.Column>\n\n        {children}\n      </Clay>\n    </Portal>\n  ) : null;\n};\n","import { cloneElement, isValidElement } from \"react\";\nimport { useAbsolute } from \"./Absolute.hooks\";\nimport type { AbsoluteProps } from \"./Absolute.types\";\n\n/**\n * children 요소를 `to` props로 전달받은 요소를 기준으로 띄우는 역할입니다.\n *\n * 기본 position 이 `absolute` 로 설정되어 있어, 부모 요소에 영향을 받습니다.\n *\n * 만약 부모 요소와 관계 없이 화면에서 자유롭게 위치를 설정하고 싶다면, `Portal.Absolute` 또는 `Portal`과 함께 사용해주세요\n *\n * > Docs의 예시는 ref가 깨져서 `show code` 용으로만 확인해주시면 됩니다.\n */\nexport const Absolute = ({\n  to,\n  children,\n  position = \"bottom\",\n  align = \"start\",\n  offsetX = \"0px\",\n  offsetY = \"0px\",\n  autoMinWidth = false,\n}: AbsoluteProps) => {\n  const floatStyle = useAbsolute({ to, position, align });\n\n  if (!floatStyle || !isValidElement<HTMLElement>(children)) return null;\n\n  const floated = cloneElement(children, {\n    style: {\n      ...children.props.style,\n      position: \"fixed\",\n      minWidth: autoMinWidth ? \"auto\" : \"max-content\",\n      top: \"0\",\n      left: \"0\",\n      zIndex: \"var(--clay-zIndex-modal)\",\n      transform: `translate(calc(${floatStyle.computedX} + ${offsetX}), calc(${floatStyle.computedY} + ${offsetY}))`,\n    },\n  });\n\n  return floated;\n};\n","import { useEffect, useState } from \"react\";\nimport type { AbsoluteProps } from \"./Absolute.types\";\n\nexport const useAbsolute = ({\n  to,\n  position,\n  align,\n}: Pick<AbsoluteProps, \"align\" | \"position\" | \"to\">): {\n  computedX: string;\n  computedY: string;\n} | null => {\n  const [, setDomRect] = useState<undefined | DOMRect>();\n\n  useEffect(() => {\n    const callback = () => {\n      if (to) setDomRect(to.getBoundingClientRect());\n    };\n\n    window.addEventListener(\"scroll\", callback, { passive: true, capture: false });\n\n    return () => {\n      window.removeEventListener(\"scroll\", callback);\n    };\n  }, [to]);\n\n  if (!to) return null;\n\n  const { x, height, y, width } = to.getBoundingClientRect();\n\n  const style = {\n    computedY: \"\",\n    computedX: \"\",\n  };\n\n  let fixedProperty: \"computedY\" | \"computedX\" = \"computedY\";\n  let unFixedProperty: \"computedY\" | \"computedX\" = \"computedX\";\n  let fixedAxisValue = y;\n  let fixedRelativeValue = height;\n  let alignAxisValue = x;\n  let alignRelativeValue = width;\n\n  if (position === \"left\" || position === \"right\") {\n    fixedProperty = \"computedX\";\n    unFixedProperty = \"computedY\";\n    fixedAxisValue = x;\n    fixedRelativeValue = width;\n    alignAxisValue = y;\n    alignRelativeValue = height;\n  }\n\n  if (position === \"left\" || position === \"top\")\n    style[fixedProperty] = `calc(-100% + ${fixedAxisValue}px)`;\n  else style[fixedProperty] = `${fixedAxisValue + fixedRelativeValue}px`;\n\n  if (align === \"start\") {\n    style[unFixedProperty] = `${alignAxisValue}px`;\n  }\n\n  if (align === \"center\") {\n    style[unFixedProperty] = `calc(${alignAxisValue + alignRelativeValue / 2}px - 50%)`;\n  }\n\n  if (align === \"end\") {\n    style[unFixedProperty] = `calc(${alignAxisValue + alignRelativeValue}px - 100%)`;\n  }\n\n  return style;\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { vars } from \"@imwebme/clay-token\";\nimport type { ComponentPropsWithRef, ElementType, ReactElement } from \"react\";\nimport { forwardRef } from \"react\";\nimport type { ClayProps } from \"./Clay.types\";\n\nexport type ClayComponent = <C extends ElementType = \"div\">(\n  props: ClayProps<C> & {\n    ref?: ComponentPropsWithRef<C>[\"ref\"];\n  },\n) => ReactElement | null;\n\nconst Clay: ClayComponent = forwardRef(\n  <E extends ElementType>(\n    {\n      children,\n      className,\n      _hover,\n      _active,\n      _after,\n      _before,\n      _focus,\n      size,\n      width,\n      height,\n      shape,\n      sx,\n      as,\n      native,\n      ...props\n    }: ClayProps<E>,\n    ref: ComponentPropsWithRef<E>[\"ref\"],\n  ) => {\n    const Element = as || \"div\";\n\n    return (\n      <Element\n        ref={ref}\n        className={className}\n        css={{\n          width: size || width,\n          height: size || height,\n          ...(shape === \"circle\" && {\n            borderRadius: vars.rounded.full,\n          }),\n          \"&:hover\": _hover,\n          \"&:active\": _active,\n          \"&:after\": _after,\n          \"&:before\": _before,\n          \"&:focus\": _focus,\n          ...props,\n          ...sx,\n        }}\n        {...native}\n      >\n        {children}\n      </Element>\n    );\n  },\n);\n\nconst ClayNameSpace = Object.assign(Clay, { displayName: \"Clay\" });\n\nexport { ClayNameSpace as Clay };\n","import type { ComponentPropsWithRef, ElementType } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Clay } from \"../Clay\";\nimport type { ClayComponent, ClayProps } from \"../Clay/Clay.types\";\n\nconst _Flex: ClayComponent = forwardRef(\n  <Element extends ElementType>(\n    props: ClayProps<Element>,\n    ref: ComponentPropsWithRef<Element>[\"ref\"],\n  ) => <Clay ref={ref} display=\"flex\" {...props} />,\n);\n\nconst Flex = Object.assign(_Flex, { displayName: \"Flex\" });\n\nconst _FlexCenter: ClayComponent = forwardRef(\n  <Element extends ElementType>(\n    props: ClayProps<Element>,\n    ref: ComponentPropsWithRef<Element>[\"ref\"],\n  ) => <Flex ref={ref} alignItems=\"center\" justifyContent=\"center\" {...props} />,\n);\n\nconst FlexCenter = Object.assign(_FlexCenter, { displayName: \"Flex.Center\" });\n\nconst _FlexColumn: ClayComponent = forwardRef(\n  <Element extends ElementType>(\n    { as = \"div\" as any, ...props }: ClayProps<Element>,\n    ref: ComponentPropsWithRef<Element>[\"ref\"],\n  ) => <Flex ref={ref} as={as} flexDirection=\"column\" {...props} />,\n);\n\nconst FlexColumn = Object.assign(_FlexColumn, { displayName: \"Flex.Column\" });\n\n/**\n * @deprecated Use `Flex.Column` instead\n */\nexport const Stack = FlexColumn;\n\nconst FlexNameSpace = Object.assign(Flex, { Center: FlexCenter, Column: FlexColumn });\n\nexport { FlexNameSpace as Flex };\n","import { isValidElement } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { AbsoluteProps } from \"../Absolute\";\nimport { Absolute } from \"../Absolute\";\nimport type { PortalProps } from \"./Portal.types\";\n\nexport const Portal = ({ children, container = globalThis?.document?.body }: PortalProps) => {\n  if (!container || !isValidElement(children)) return null;\n\n  return createPortal(children, container);\n};\n\nPortal.Absolute = ({ children, ...absoluteProps }: AbsoluteProps) => (\n  <Portal>\n    <Absolute {...absoluteProps}>{children}</Absolute>\n  </Portal>\n);\n","/** @jsxImportSource @emotion/react */\n\nimport { classNames, vars } from \"@imwebme/clay-token\";\nimport type { ElementType, Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport type { TypographyProps } from \"./Typography.types\";\n\n/**\n * token은 두 가지 방법으로 넣어줄 수 있습니다. semanticToken, variant\n * 값은 body-medium이 default 입니다.\n */\nconst _Typography = <Element extends ElementType>(\n  {\n    as,\n    semanticToken,\n    variant = \"body-medium\",\n    className = \"\",\n    colorToken = \"text\",\n    children,\n    whiteSpace,\n    numOfLine,\n    sx,\n    textAlign,\n    native,\n  }: TypographyProps<Element>,\n  ref: Ref<HTMLElement>,\n) => {\n  const Element = as || \"p\";\n\n  return (\n    <Element\n      className={`${classNames.typography[semanticToken || variant]} ${className}`}\n      ref={ref as any}\n      css={{\n        color: vars.semantic.color[colorToken],\n        ...(numOfLine && {\n          display: \"-webkit-box\",\n          overflow: \"hidden\",\n          textOverflow: \"ellipsis\",\n          WebkitBoxOrient: \"vertical\",\n          WebkitLineClamp: numOfLine,\n        }),\n        whiteSpace,\n        textAlign,\n        ...sx,\n      }}\n      {...native}\n    >\n      {children}\n    </Element>\n  );\n};\n\nexport const Typography = forwardRef(_Typography);\n\nTypography.displayName = \"Typography\";\n","import { useCallbackRef } from \"@imwebme/clay-hooks\";\nimport type { PropsWithChildren } from \"react\";\nimport { createContext, useContext, useMemo, useState } from \"react\";\nimport type { Nullable } from \"../types\";\n\nconst TooltipContext = createContext<\n  | {\n      isOpen: boolean;\n      toggle: VoidFunction;\n      setOff: VoidFunction;\n      portalRef: Nullable<HTMLElement>;\n      setPortalRef: (ref: HTMLElement | null) => void;\n    }\n  | undefined\n>(undefined);\n\nexport const TooltipProvider = ({\n  children,\n  toggle,\n  isOpen,\n  setOff,\n  onClose,\n}: PropsWithChildren<{\n  isOpen: boolean;\n  toggle: VoidFunction;\n  setOff: VoidFunction;\n  onClose?: VoidFunction;\n}>) => {\n  const [portalRef, setPortalRef] = useState<Nullable<HTMLElement>>(null);\n\n  const setOffProps = useCallbackRef(() => {\n    setOff();\n    onClose?.();\n  });\n\n  const memoContextValue = useMemo(() => {\n    return {\n      isOpen,\n      toggle,\n      setOff: setOffProps,\n      portalRef,\n      setPortalRef,\n    };\n  }, [isOpen, portalRef, setOffProps, toggle]);\n\n  return <TooltipContext.Provider value={memoContextValue}>{children}</TooltipContext.Provider>;\n};\n\nexport const useTooltipContext = () => {\n  const context = useContext(TooltipContext);\n\n  if (context === undefined) {\n    throw new Error(\"useTooltipContext must be used within a TooltipProvider\");\n  }\n\n  return context;\n};\n","import type { CSSObject } from \"@emotion/react\";\nimport { vars } from \"@imwebme/clay-token\";\nimport type { TooltipContentProps } from \"./TooltipContent.types\";\n\nexport const calculatePosition = ({\n  position,\n  offsetY = \"4px\",\n  offsetX = \"0px\",\n  hasArrow,\n}: Pick<TooltipContentProps, \"hasArrow\" | \"offsetX\" | \"offsetY\" | \"position\">): CSSObject => {\n  switch (position) {\n    case \"top\":\n      return {\n        top: `calc(-${offsetY} ${hasArrow ? \"- 6px\" : \"\"} - 4px)`,\n        left: \"50%\",\n        transform: \"translate(-50%, -100%)\",\n        \"&:after\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          bottom: \"-5px\",\n          left: \"50%\",\n          transform: \"translateX(-50%)\",\n          borderTop: `solid 6px ${vars.semantic.color.surface}`,\n          borderLeft: \"solid 6px transparent\",\n          borderRight: \"solid 6px transparent\",\n        },\n        \"&:before\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          bottom: \"-5.1px\",\n          left: \"50%\",\n          transform: \"translateX(-50%)\",\n          borderTop: \"solid 6.1px rgba(75, 81, 91, 0.03)\",\n          borderLeft: \"solid 6.1px transparent\",\n          borderRight: \"solid 6.1px transparent\",\n        },\n      };\n\n    case \"bottom\":\n      return {\n        bottom: `calc(-${offsetY} ${hasArrow ? \"- 6px\" : \"\"} - 4px)`,\n        left: \"50%\",\n        transform: \"translate(-50%, 100%)\",\n        \"&:after\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          top: \"-5px\",\n          left: \"50%\",\n          transform: \"translateX(-50%)\",\n          borderBottom: `solid 6px ${vars.semantic.color.surface}`,\n          borderLeft: \"solid 6px transparent\",\n          borderRight: \"solid 6px transparent\",\n        },\n        \"&:before\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          top: \"-5.1px\",\n          left: \"50%\",\n          transform: \"translateX(-50%)\",\n          borderBottom: \"solid 6.1px rgba(75, 81, 91, 0.03)\",\n          borderLeft: \"solid 6.1px transparent\",\n          borderRight: \"solid 6.1px transparent\",\n        },\n      };\n\n    case \"top-right\":\n      return {\n        top: `calc(-${offsetY} ${hasArrow ? \"- 6px\" : \"\"} - 4px)`,\n        right: `calc(${offsetX} + 15px)`,\n        transform: \"translate(100%, -100%)\",\n        \"&:after\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          bottom: \"-5px\",\n          left: \"15px\",\n          transform: \"translateX(-50%)\",\n          borderTop: `solid 6px ${vars.semantic.color.surface}`,\n          borderLeft: \"solid 6px transparent\",\n          borderRight: \"solid 6px transparent\",\n        },\n        \"&:before\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          bottom: \"-5.1px\",\n          left: \"15px\",\n          transform: \"translateX(-50%)\",\n          borderTop: \"solid 6.1px rgba(75, 81, 91, 0.03)\",\n          borderLeft: \"solid 6.1px transparent\",\n          borderRight: \"solid 6.1px transparent\",\n        },\n      };\n\n    case \"bottom-right\":\n      return {\n        bottom: `calc(-${offsetY} ${hasArrow ? \"- 6px\" : \"\"} - 4px)`,\n        right: 0,\n        transform: \"translate(0, 100%)\",\n        \"&:after\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          top: \"-5px\",\n          right: 0,\n          transform: \"translateX(-50%)\",\n          borderBottom: `solid 6px ${vars.semantic.color.surface}`,\n          borderLeft: \"solid 6px transparent\",\n          borderRight: \"solid 6px transparent\",\n        },\n        \"&:before\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          top: \"-5.1px\",\n          right: 0,\n          transform: \"translateX(-50%)\",\n          borderBottom: \"solid 6.1px rgba(75, 81, 91, 0.03)\",\n          borderLeft: \"solid 6.1px transparent\",\n          borderRight: \"solid 6.1px transparent\",\n        },\n      };\n\n    case \"left\":\n      return {\n        top: \"50%\",\n        transform: \"translate(-100%,-50%)\",\n        left: `calc(-${offsetX} ${hasArrow ? \"- 6px\" : \"\"} - 4px)`,\n        \"&:after\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          right: \"-5px\",\n          top: \"50%\",\n          transform: \"translateY(-50%)\",\n          borderBottom: \"solid 6px transparent\",\n          borderTop: \"solid 6px transparent\",\n          borderLeft: `solid 6px ${vars.semantic.color.surface}`,\n        },\n        \"&:before\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          right: \"-5.1px\",\n          top: \"50%\",\n          transform: \"translateY(-50%)\",\n          borderBottom: \"solid 6.1px transparent\",\n          borderTop: \"solid 6.1px transparent\",\n          borderLeft: \"solid 6.1px rgba(75, 81, 91, 0.03)\",\n        },\n      };\n\n    // right\n    default:\n      return {\n        top: \"50%\",\n        transform: \"translate(100%,-50%)\",\n        right: `calc(-${offsetX} ${hasArrow ? \"- 6px\" : \"\"} - 4px)`,\n        \"&:after\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          left: \"-5px\",\n          top: \"50%\",\n          transform: \"translateY(-50%)\",\n          borderBottom: \"solid 6px transparent\",\n          borderTop: \"solid 6px transparent\",\n          borderRight: `solid 6px ${vars.semantic.color.surface}`,\n        },\n        \"&:before\": {\n          display: hasArrow ? \"block\" : \"none\",\n          content: '\"\"',\n          position: \"absolute\",\n          left: \"-5.1px\",\n          top: \"50%\",\n          transform: \"translateY(-50%)\",\n          borderBottom: \"solid 6.1px transparent\",\n          borderTop: \"solid 6.1px transparent\",\n          borderRight: \"solid 6.1px rgba(75, 81, 91, 0.03)\",\n        },\n      };\n  }\n};\n"]}