{"version":3,"sources":["../src/checkbox.tsx"],"sourcesContent":["import { callAll, cx } from \"@chakra-ui/shared-utils\"\nimport {\n  HTMLChakraProps,\n  PropsOf,\n  SystemStyleObject,\n  ThemingProps,\n  chakra,\n  forwardRef,\n  keyframes,\n  omitThemingProps,\n  useMultiStyleConfig,\n} from \"@chakra-ui/system\"\nimport { cloneElement, useMemo } from \"react\"\nimport { useCheckboxGroupContext } from \"./checkbox-context\"\nimport { CheckboxIcon } from \"./checkbox-icon\"\nimport { CheckboxOptions, UseCheckboxProps } from \"./checkbox-types\"\nimport { useCheckbox } from \"./use-checkbox\"\nimport { useInitialAnimationState } from \"./use-initial-animation-state\"\n\nconst controlStyles: SystemStyleObject = {\n  display: \"inline-flex\",\n  alignItems: \"center\",\n  justifyContent: \"center\",\n  verticalAlign: \"top\",\n  userSelect: \"none\",\n  flexShrink: 0,\n}\n\nconst rootStyles: SystemStyleObject = {\n  cursor: \"pointer\",\n  display: \"inline-flex\",\n  alignItems: \"center\",\n  verticalAlign: \"top\",\n  position: \"relative\",\n}\n\nconst checkAnim = keyframes({\n  from: {\n    opacity: 0,\n    strokeDashoffset: 16,\n    transform: \"scale(0.95)\",\n  },\n  to: {\n    opacity: 1,\n    strokeDashoffset: 0,\n    transform: \"scale(1)\",\n  },\n})\n\nconst indeterminateOpacityAnim = keyframes({\n  from: {\n    opacity: 0,\n  },\n  to: {\n    opacity: 1,\n  },\n})\nconst indeterminateScaleAnim = keyframes({\n  from: {\n    transform: \"scaleX(0.65)\",\n  },\n  to: {\n    transform: \"scaleX(1)\",\n  },\n})\n\ntype CheckboxControlProps = Omit<HTMLChakraProps<\"div\">, keyof UseCheckboxProps>\n\ntype BaseInputProps = Pick<\n  PropsOf<\"input\">,\n  \"onBlur\" | \"checked\" | \"defaultChecked\"\n>\n\nexport interface CheckboxProps\n  extends CheckboxControlProps,\n    BaseInputProps,\n    ThemingProps<\"Checkbox\">,\n    UseCheckboxProps,\n    CheckboxOptions {}\n\n/**\n * Checkbox\n *\n * React component used in forms when a user needs to select\n * multiple values from several options.\n *\n * @see Docs https://chakra-ui.com/checkbox\n * @see WAI-ARIA https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/\n */\nexport const Checkbox = forwardRef<CheckboxProps, \"input\">(function Checkbox(\n  props,\n  ref,\n) {\n  const group = useCheckboxGroupContext()\n\n  const mergedProps = { ...group, ...props } as CheckboxProps\n  const styles = useMultiStyleConfig(\"Checkbox\", mergedProps)\n\n  const ownProps = omitThemingProps(props)\n\n  const {\n    spacing = \"0.5rem\",\n    className,\n    children,\n    iconColor,\n    iconSize,\n    icon = <CheckboxIcon />,\n    isChecked: isCheckedProp,\n    isDisabled = group?.isDisabled,\n    onChange: onChangeProp,\n    inputProps,\n    ...rest\n  } = ownProps\n\n  let isChecked = isCheckedProp\n  if (group?.value && ownProps.value) {\n    isChecked = group.value.includes(ownProps.value)\n  }\n\n  let onChange = onChangeProp\n  if (group?.onChange && ownProps.value) {\n    onChange = callAll(group.onChange, onChangeProp)\n  }\n\n  const {\n    state,\n    getInputProps,\n    getCheckboxProps,\n    getLabelProps,\n    getRootProps,\n  } = useCheckbox({\n    ...rest,\n    isDisabled,\n    isChecked,\n    onChange,\n  })\n\n  const shouldAnimate = useInitialAnimationState(state.isChecked)\n\n  const iconStyles: SystemStyleObject = useMemo(\n    () => ({\n      animation: !shouldAnimate\n        ? undefined\n        : state.isIndeterminate\n        ? `${indeterminateOpacityAnim} 20ms linear, ${indeterminateScaleAnim} 200ms linear`\n        : `${checkAnim} 200ms linear`,\n      fontSize: iconSize,\n      color: iconColor,\n      ...styles.icon,\n    }),\n    [iconColor, iconSize, shouldAnimate, state.isIndeterminate, styles.icon],\n  )\n\n  const clonedIcon = cloneElement(icon, {\n    __css: iconStyles,\n    isIndeterminate: state.isIndeterminate,\n    isChecked: state.isChecked,\n  })\n\n  return (\n    <chakra.label\n      __css={{ ...rootStyles, ...styles.container }}\n      className={cx(\"chakra-checkbox\", className)}\n      {...getRootProps()}\n    >\n      <input\n        className=\"chakra-checkbox__input\"\n        {...getInputProps(inputProps, ref)}\n      />\n      <chakra.span\n        __css={{ ...controlStyles, ...styles.control }}\n        className=\"chakra-checkbox__control\"\n        {...getCheckboxProps()}\n      >\n        {clonedIcon}\n      </chakra.span>\n      {children && (\n        <chakra.span\n          className=\"chakra-checkbox__label\"\n          {...getLabelProps()}\n          __css={{\n            marginStart: spacing,\n            ...styles.label,\n          }}\n        >\n          {children}\n        </chakra.span>\n      )}\n    </chakra.label>\n  )\n})\n\nCheckbox.displayName = \"Checkbox\"\n"],"mappings":"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","names":["Checkbox"]}