{"version":3,"file":"Button.BvmUwMid.mjs","names":[],"sources":["https:/asset.29cm.co.kr/contents/framer/hooks/useCreateIsomorphicAppSchemeLink.js","https:/asset.29cm.co.kr/contents/framer/utils/getAnchorTarget.js","https:/asset.29cm.co.kr/contents/framer/components/systems/Button/Button.utils.js","https:/asset.29cm.co.kr/contents/framer/components/systems/Button/Button.js"],"sourcesContent":["import { useDeviceInfo } from \"./useDeviceInfo.js\";\nconst useCreateIsomorphicAppSchemeLink = (url) => {\n  const {\n    isWebview\n  } = useDeviceInfo();\n  return isWebview && url ? `app29cm://web/${url}` : url;\n};\nexport {\n  useCreateIsomorphicAppSchemeLink\n};\n","import { isServer } from \"./context.js\";\nconst getAnchorTarget = (url) => {\n  if (isServer()) {\n    return \"_self\";\n  }\n  return normalizeURL(url) === normalizeURL(window.location.href) ? \"_self\" : \"_blank\";\n};\nconst normalizeURL = (url) => {\n  const hasOrigin = !url.startsWith(\"/\");\n  try {\n    const {\n      origin,\n      pathname\n    } = new URL(hasOrigin ? url : `${window.location.origin}${url}`);\n    return `${origin}${pathname}`;\n  } catch (error) {\n    return \"\";\n  }\n};\nexport {\n  getAnchorTarget\n};\n","import { getAnchorTarget } from \"../../../utils/getAnchorTarget.js\";\nconst reshapeProps = (props) => {\n  const {\n    url,\n    onTap,\n    prefixIcon,\n    postfixIcon,\n    fillIcon,\n    ...rest\n  } = props;\n  const disabled = rest.variant === \"disabled\";\n  return {\n    as: url ? \"a\" : \"button\",\n    href: url,\n    target: url ? getAnchorTarget(url) : \"_self\",\n    disabled,\n    onClick: onTap,\n    ...toPropsWithIcon(fillIcon, prefixIcon, postfixIcon),\n    ...rest\n  };\n};\nconst toPropsWithIcon = (fill, prefixIcon, postfixIcon) => {\n  if (!postfixIcon) {\n    return {\n      prefixIcon: toIconOptions(fill, prefixIcon)\n    };\n  }\n  return {\n    postfixIcon: toIconOptions(fill, postfixIcon)\n  };\n};\nconst toIconOptions = (fill, icon) => {\n  if (icon && typeof icon === \"string\") {\n    return {\n      type: icon,\n      fill\n    };\n  }\n  return void 0;\n};\nexport {\n  reshapeProps\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { ButtonVariant, ButtonTheme, ButtonSize, UrlType } from \"../../@shared/Button/Button.types.js\";\nimport { useCreateIsomorphicAppSchemeLink } from \"../../../hooks/useCreateIsomorphicAppSchemeLink.js\";\nimport { Button as Default } from \"../../@shared/Button/Button.js\";\nimport { PREFIX_ICON_OPTIONS, POSTFIX_ICON_OPTIONS } from \"./Button.constants.js\";\nimport { reshapeProps } from \"./Button.utils.js\";\nconst FramerButton = (props) => {\n  const url = useCreateIsomorphicAppSchemeLink(props.url);\n  const {\n    text,\n    ...rest\n  } = reshapeProps({\n    ...props,\n    url: props.urlType === UrlType.ONELINK ? props.url : url\n  });\n  return /* @__PURE__ */ jsx(Default, { ...rest, children: text });\n};\naddPropertyControls(FramerButton, {\n  variant: {\n    type: ControlType.Enum,\n    title: \"변형\",\n    options: [ButtonVariant.PRIMARY, ButtonVariant.SECONDARY, ButtonVariant.TERTIARY, ButtonVariant.CUSTOM, ButtonVariant.DISABLED],\n    optionTitles: [\"primary\", \"secondary\", \"tertiary\", \"custom\", \"disabled\"]\n  },\n  theme: {\n    type: ControlType.Enum,\n    title: \"테마\",\n    options: [ButtonTheme.LIGHT, ButtonTheme.DARK],\n    optionTitles: [\"light\", \"dark\"],\n    defaultValue: ButtonTheme.LIGHT,\n    displaySegmentedControl: true\n  },\n  backgroundColor: {\n    hidden: ({\n      variant\n    }) => variant !== ButtonVariant.CUSTOM,\n    type: ControlType.Color,\n    title: \"배경 색상\",\n    optional: true\n  },\n  color: {\n    hidden: ({\n      variant\n    }) => variant !== ButtonVariant.CUSTOM,\n    type: ControlType.Color,\n    title: \"텍스트 색상\",\n    optional: true\n  },\n  size: {\n    type: ControlType.Enum,\n    title: \"크기\",\n    options: [ButtonSize.LARGE, ButtonSize.MEDIUM, ButtonSize.SMALL, ButtonSize.X_SMALL],\n    optionTitles: [\"large\", \"medium\", \"small\", \"xSmall\"],\n    defaultValue: ButtonSize.MEDIUM\n  },\n  fill: {\n    type: ControlType.Boolean,\n    title: \"반응형 너비\",\n    defaultValue: false\n  },\n  text: {\n    type: ControlType.String,\n    title: \"텍스트\",\n    defaultValue: \"텍스트\"\n  },\n  prefixIcon: {\n    hidden: ({\n      postfixIcon\n    }) => Boolean(postfixIcon),\n    type: ControlType.Enum,\n    title: \"좌측 아이콘\",\n    options: [void 0, ...PREFIX_ICON_OPTIONS],\n    optionTitles: [\"선택 안 함\", ...PREFIX_ICON_OPTIONS]\n  },\n  postfixIcon: {\n    hidden: ({\n      prefixIcon\n    }) => Boolean(prefixIcon),\n    type: ControlType.Enum,\n    title: \"우측 아이콘\",\n    options: [void 0, ...POSTFIX_ICON_OPTIONS],\n    optionTitles: [\"선택 안 함\", ...POSTFIX_ICON_OPTIONS]\n  },\n  fillIcon: {\n    type: ControlType.Boolean,\n    title: \"아이콘 채우기\",\n    defaultValue: false\n  },\n  url: {\n    hidden: ({\n      variant\n    }) => variant === ButtonVariant.DISABLED,\n    type: ControlType.Link,\n    title: \"URL\"\n  },\n  urlType: {\n    type: ControlType.Enum,\n    title: \"URL 타입\",\n    options: [UrlType.DEFAULT, UrlType.ONELINK],\n    optionTitles: [\"기본\", \"OneLink\"],\n    defaultValue: UrlType.DEFAULT,\n    description: \"onelink 타입을 선택하면 deeplink 변환없이 해당 url을 그대로 사용합니다.\"\n  },\n  onTap: {\n    hidden: ({\n      variant\n    }) => variant === ButtonVariant.DISABLED,\n    type: ControlType.EventHandler\n  }\n});\nexport {\n  FramerButton\n};\n"],"mappings":"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"}