{"version":3,"sources":["../../../src/Select/theme/Select.Input.tsx","../../../src/utilities/Clay/Clay.tsx","../../../src/utilities/Flex/Flex.tsx","../../../src/Label/Label.tsx","../../../src/Typography/Typography.tsx","../../../src/Select/Select.provider.tsx","../../../src/Select/theme/Select.tags.tsx","../../../src/Select/theme/SelectTheme.css.ts"],"names":["vars","forwardRef","jsx","Clay","_a","ref","_b","children","className","_hover","_active","_after","_before","_focus","size","width","height","shape","sx","as","native","props","__objRest","__spreadProps","__spreadValues","ClayNameSpace","_Flex","Flex","_FlexCenter","FlexCenter","_FlexColumn","FlexColumn","FlexNameSpace","jsxs","_Label","type","text","bold","Typography","Label","classNames","_Typography","semanticToken","variant","colorToken","whiteSpace","numOfLine","textAlign","createContext","useContext","useMemo","useState","SelectStateContext","SelectOpenToggleContext","SelectOffContext","SelectPortalContext","useSelectState","useSelectToggle","useSelectPortal","useCallback","css","multiSelectCSS","selectTagCSS","SelectTags","tags","setValues","onClickTag","tag","tempTags","index","_tag","RemovableTag","onClick","event","SelectInputWrapper","label","labelProps","isDisabled","isTagInput","isOpen","toggle","setPortalRf","SelectInput","value","placeholder","onChange","SelectMultiInput","values","restProps"],"mappings":"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","sourcesContent":["/** @jsxImportSource @emotion/react */\n\nimport type { CSSObject } from \"@emotion/react\";\nimport { vars } from \"@imwebme/clay-token\";\nimport type { ChangeEventHandler, PropsWithChildren } from \"react\";\nimport type { LabelProps } from \"../..\";\nimport { Clay, Flex, Label, Typography } from \"../..\";\nimport { useSelectPortal, useSelectState, useSelectToggle } from \"../Select.provider\";\nimport { SelectTags } from \"./Select.tags\";\nimport { multiSelectCSS } from \"./SelectTheme.css\";\n\nexport type SelectInputProps = {\n  label?: string;\n  labelProps?: Omit<LabelProps<\"label\">, \"text\">;\n  value?: string;\n  onChange?: ChangeEventHandler<HTMLInputElement>;\n  placeholder?: string;\n  isDisabled?: boolean;\n  sx?: CSSObject;\n};\n\nexport const SelectInputWrapper = ({\n  label,\n  labelProps,\n  children,\n  isDisabled,\n  isTagInput,\n  sx,\n}: PropsWithChildren<SelectInputProps> & { isTagInput?: boolean }) => {\n  const { isOpen } = useSelectState();\n  const toggle = useSelectToggle();\n  const setPortalRf = useSelectPortal();\n\n  return (\n    <Flex.Column ref={setPortalRf} gap={vars.spacing[15]} sx={sx}>\n      {label && <Label text={label} {...labelProps} />}\n\n      <Flex\n        as=\"button\"\n        alignItems=\"center\"\n        position=\"relative\"\n        css={multiSelectCSS}\n        native={{\n          onClick: () => (isDisabled ? null : toggle()),\n          type: \"button\",\n          disabled: isDisabled,\n        }}\n        overflow=\"hidden\"\n        cursor={isDisabled ? \"not-allowed\" : \"pointer\"}\n        color={vars.semantic.color[isDisabled ? \"textDisabled\" : \"text\"]}\n      >\n        {children}\n\n        <Flex position=\"absolute\" height=\"100%\" right={0}>\n          {isTagInput && (\n            <Clay\n              width=\"8px\"\n              background=\"var(--semantic-gradient-dark-fade-left, linear-gradient(270deg, #FFF 0%, rgba(255, 255, 255, 0.95) 25%, rgba(255, 255, 255, 0.85) 41.02%, rgba(255, 255, 255, 0.78) 50.13%, rgba(255, 255, 255, 0.65) 61.75%, rgba(255, 255, 255, 0.45) 73.87%, rgba(255, 255, 255, 0.25) 86.25%, rgba(255, 255, 255, 0.00) 100%))\"\n            />\n          )}\n\n          <Flex alignItems=\"center\" backgroundColor=\"inherit\" paddingRight={vars.spacing[3]}>\n            {/* ChevronDown */}\n            <svg\n              width=\"16\"\n              height=\"16\"\n              viewBox=\"0 0 24 24\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              css={{\n                transform: `rotate(${isOpen ? 180 : 0}deg)`,\n              }}\n            >\n              <path\n                d=\"M6 9L12 15L18 9\"\n                stroke={vars.semantic.color[isDisabled ? \"iconDisabled\" : \"icon\"]}\n                strokeWidth=\"1.2\"\n                vectorEffect=\"non-scaling-stroke\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n              />\n            </svg>\n          </Flex>\n        </Flex>\n      </Flex>\n    </Flex.Column>\n  );\n};\n\nexport const SelectInput = ({\n  value,\n  placeholder,\n  label,\n  labelProps,\n  onChange,\n  isDisabled,\n  sx,\n}: SelectInputProps) => {\n  return (\n    <SelectInputWrapper label={label} labelProps={labelProps} isDisabled={isDisabled} sx={sx}>\n      <input\n        readOnly\n        value={value}\n        placeholder={placeholder}\n        disabled={isDisabled}\n        onChange={onChange}\n        css={{\n          width: \"100%\",\n          height: \"100%\",\n          outline: \"none\",\n          cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n          backgroundColor: \"unset\",\n          ...vars.semantic.typography[\"label-medium\"],\n        }}\n      />\n    </SelectInputWrapper>\n  );\n};\n\nexport type SelectMultiInputProps = {\n  values?: string[];\n  setValues?: (values: string[]) => void;\n} & Omit<SelectInputProps, \"value\" | \"onChange\">;\n\nexport const SelectMultiInput = ({\n  values,\n  placeholder,\n  setValues,\n  ...restProps\n}: SelectMultiInputProps) => {\n  return (\n    <SelectInputWrapper {...restProps}>\n      {values && values.length > 0 ? (\n        <SelectTags tags={values} setValues={setValues} />\n      ) : (\n        <Typography colorToken=\"textSub\">{placeholder}</Typography>\n      )}\n    </SelectInputWrapper>\n  );\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","/** @jsxImportSource @emotion/react */\n\nimport { vars } from \"@imwebme/clay-token\";\nimport type { ElementType, Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Typography } from \"..\";\nimport type { LabelProps } from \"./Label.types\";\n\nconst _Label = <Element extends ElementType>(\n  { type = \"primary\", className, text, bold = true, sx, as, children }: LabelProps<Element>,\n  ref: Ref<HTMLElement>,\n) => {\n  const Element = as || \"label\";\n\n  return (\n    <Element\n      ref={ref as any}\n      className={className}\n      css={{\n        display: \"flex\",\n        gap: vars.spacing[1],\n        alignItems: \"center\",\n        sx,\n      }}\n    >\n      <Typography\n        variant={bold ? \"label-medium-bold\" : \"label-medium\"}\n        colorToken={type === \"primary\" ? \"text\" : \"textSub\"}\n      >\n        {text}\n      </Typography>\n\n      {children}\n    </Element>\n  );\n};\n\nexport const Label = forwardRef(_Label);\n\nLabel.displayName = \"Label\";\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 type { PropsWithChildren } from \"react\";\nimport { createContext, useContext, useMemo, useState } from \"react\";\nimport type { Nullable, StateSetter } from \"../types\";\n\ntype SelectState = {\n  isOpen: boolean;\n  portalRef: null | HTMLElement;\n  closeOnSelect: boolean;\n};\n\nconst SelectStateContext = createContext<SelectState>({\n  isOpen: false,\n  portalRef: null,\n  closeOnSelect: true,\n});\nconst SelectOpenToggleContext = createContext<VoidFunction>(() => null);\nconst SelectOffContext = createContext<VoidFunction>(() => null);\nconst SelectPortalContext = createContext<StateSetter<Nullable<HTMLElement>>>(() => null);\n\nexport const SelectProvider = ({\n  children,\n  toggleOpen,\n  isOpen,\n  setOff,\n  closeOnSelect,\n}: PropsWithChildren<{\n  isOpen: boolean;\n  closeOnSelect: boolean;\n  toggleOpen: VoidFunction;\n  setOff: VoidFunction;\n}>) => {\n  const [portalRef, setPortalRef] = useState<Nullable<HTMLElement>>(null);\n\n  const portalState = useMemo<SelectState>(\n    () => ({\n      isOpen,\n      portalRef,\n      closeOnSelect,\n    }),\n    [isOpen, portalRef, closeOnSelect],\n  );\n\n  return (\n    <SelectOffContext.Provider value={setOff}>\n      <SelectOpenToggleContext.Provider value={toggleOpen}>\n        <SelectStateContext.Provider value={portalState}>\n          <SelectPortalContext.Provider value={setPortalRef}>\n            {children}\n          </SelectPortalContext.Provider>\n        </SelectStateContext.Provider>\n      </SelectOpenToggleContext.Provider>\n    </SelectOffContext.Provider>\n  );\n};\n\nexport const useSelectState = () => useContext(SelectStateContext);\nexport const useSelectToggle = () => useContext(SelectOpenToggleContext);\nexport const useSelectOff = () => useContext(SelectOffContext);\nexport const useSelectPortal = () => useContext(SelectPortalContext);\n","/** @jsxImportSource @emotion/react */\n\nimport { vars } from \"@imwebme/clay-token\";\nimport { useCallback } from \"react\";\nimport { Flex, Typography } from \"../..\";\nimport { selectTagCSS } from \"./SelectTheme.css\";\n\nexport const SelectTags = ({\n  tags,\n  setValues,\n}: {\n  tags: string[];\n  setValues?: (values: string[]) => void;\n}) => {\n  const onClickTag = useCallback(\n    (tag: string) => {\n      const tempTags = [...tags];\n      const index = tempTags.findIndex((_tag) => _tag === tag);\n\n      tempTags.splice(index, 1);\n\n      setValues?.(tempTags);\n    },\n    [setValues, tags],\n  );\n\n  return (\n    <Flex\n      gap={vars.spacing[1]}\n      overflowX=\"scroll\"\n      sx={{\n        \"&::-webkit-scrollbar\": {\n          display: \"none\",\n        },\n      }}\n    >\n      {tags.map((tag) => (\n        <RemovableTag key={tag} tag={tag} onClick={onClickTag} />\n      ))}\n    </Flex>\n  );\n};\n\nconst RemovableTag = ({ tag, onClick }: { tag: string; onClick: (value: string) => void }) => {\n  return (\n    <Flex\n      css={selectTagCSS}\n      native={{\n        onClick: (event) => {\n          event.stopPropagation();\n          onClick(tag);\n        },\n      }}\n    >\n      <Typography variant=\"label-small\" colorToken=\"textSub\">\n        {tag}\n      </Typography>\n\n      {/* X (icon) */}\n      <svg\n        width=\"16\"\n        height=\"16\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"clay-tag-button\"\n        color={vars.semantic.color.iconSub}\n      >\n        <path\n          d=\"M17 7L7 17M7 7L17 17\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.2\"\n          vectorEffect=\"non-scaling-stroke\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        />\n      </svg>\n    </Flex>\n  );\n};\n","import { css } from \"@emotion/react\";\nimport { vars } from \"@imwebme/clay-token\";\n\nexport const multiSelectCSS = css({\n  height: \"40px\",\n  padding: `0 ${vars.spacing[3]}`,\n\n  outlineWidth: \"1px\",\n  outlineStyle: \"solid\",\n  outlineOffset: \"-1px\",\n\n  outlineColor: vars.semantic.color.border,\n\n  borderRadius: vars.rounded.medium,\n\n  backgroundColor: vars.semantic.color.surface,\n\n  \"&:not(:has(input:disabled), :disabled):hover\": {\n    outlineColor: vars.semantic.color.borderHover,\n  },\n\n  \"&:not(:has(input:disabled)):focus, &:has(input:focus)\": {\n    outlineColor: vars.semantic.color.focus,\n  },\n\n  \"&:has(input:disabled)\": {\n    backgroundColor: vars.semantic.color.fieldDisabled,\n    outlineColor: \"transparent\",\n  },\n\n  \"&:disabled\": {\n    backgroundColor: vars.semantic.color.fieldDisabled,\n    outlineColor: \"transparent\",\n  },\n});\n\nexport const selectTagCSS = css({\n  flex: \"none\",\n\n  gap: vars.spacing[1],\n  alignItems: \"center\",\n\n  paddingLeft: vars.spacing[2],\n  paddingTop: vars.spacing[15],\n  paddingBottom: vars.spacing[15],\n  paddingRight: vars.spacing[1],\n\n  backgroundColor: vars.semantic.color.surfaceSub,\n\n  borderRadius: vars.rounded.full,\n\n  \"&:hover\": {\n    backgroundColor: vars.semantic.color.actionSecondaryHover,\n\n    \".clay-tag-button\": {\n      color: vars.semantic.color.iconCritical,\n    },\n  },\n\n  \"&:active\": {\n    backgroundColor: vars.semantic.color.actionSecondaryPressed,\n  },\n});\n"]}