{"version":3,"sources":["../src/segmented-control.tsx"],"sourcesContent":["import type {\n  CSSUIObject,\n  FC,\n  HTMLProps,\n  HTMLUIProps,\n  PropGetter,\n  RequiredPropGetter,\n  ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport type {\n  ChangeEvent,\n  ChangeEventHandler,\n  FocusEventHandler,\n  ReactElement,\n} from \"react\"\nimport {\n  forwardRef,\n  omitThemeProps,\n  ui,\n  useComponentMultiStyle,\n} from \"@yamada-ui/core\"\nimport { LayoutGroup, motion } from \"@yamada-ui/motion\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport { createDescendant } from \"@yamada-ui/use-descendant\"\nimport { trackFocusVisible } from \"@yamada-ui/use-focus-visible\"\nimport {\n  ariaAttr,\n  createContext,\n  cx,\n  dataAttr,\n  getValidChildren,\n  handlerAll,\n  mergeRefs,\n  useCallbackRef,\n  useMounted,\n} from \"@yamada-ui/utils\"\nimport { useCallback, useEffect, useId, useRef, useState } from \"react\"\n\nexport interface SegmentedControlItem extends SegmentedControlButtonProps {\n  label?: string\n}\n\nconst { DescendantsContextProvider, useDescendant, useDescendants } =\n  createDescendant<HTMLButtonElement>()\n\ninterface SegmentedControlContext {\n  styles: { [key: string]: CSSUIObject | undefined }\n  value: string\n  getInputProps: RequiredPropGetter<\n    { index: number } & HTMLProps<\"input\">,\n    HTMLProps<\"input\">\n  >\n  getLabelProps: RequiredPropGetter<\n    {\n      index: number\n      value: string\n      disabled?: boolean\n      readOnly?: boolean\n    } & HTMLProps<\"label\">,\n    HTMLProps<\"label\">\n  >\n}\n\nconst [SegmentedControlProvider, useSegmentedControl] =\n  createContext<SegmentedControlContext>({\n    name: \"SegmentedControlContext\",\n    errorMessage: `useSegmentedControl returned is 'undefined'. Seems you forgot to wrap the components in \"<SegmentedControl />\"`,\n  })\n\ninterface SegmentedControlOptions {\n  /**\n   * The HTML `name` attribute used for forms.\n   */\n  name?: string\n  /**\n   * The initial value of the segmented control.\n   */\n  defaultValue?: string\n  /**\n   * If `true`, the segmented control will be disabled.\n   *\n   * @default false\n   */\n  disabled?: boolean\n  /**\n   * If `true`, the segmented control will be disabled.\n   *\n   * @default false\n   *\n   * @deprecated Use `disabled` instead.\n   */\n  isDisabled?: boolean\n  /**\n   * If `true`, the segmented control will be readonly.\n   *\n   * @default false\n   *\n   * @deprecated Use `readOnly` instead.\n   */\n  isReadOnly?: boolean\n  /**\n   * If provided, generate segmented control buttons but based on items.\n   *\n   * @default '[]'\n   */\n  items?: SegmentedControlItem[]\n  /**\n   * If `true`, the segmented control will be readonly.\n   *\n   * @default false\n   */\n  readOnly?: boolean\n  /**\n   * The value of the segmented control.\n   */\n  value?: string\n  /**\n   * The callback fired when any children radio is checked or unchecked.\n   */\n  onChange?: (value: string) => void\n}\n\nexport interface SegmentedControlProps\n  extends Omit<HTMLUIProps, \"defaultValue\" | \"onChange\" | \"value\">,\n    ThemeProps<\"SegmentedControl\">,\n    SegmentedControlOptions {}\n\n/**\n * `SegmentedControl` is a component used for allowing users to select one option from multiple choices.\n *\n * @see Docs https://yamada-ui.com/components/forms/segmented-control\n */\nexport const SegmentedControl = forwardRef<SegmentedControlProps, \"div\">(\n  (props, ref) => {\n    const [styles, mergedProps] = useComponentMultiStyle(\n      \"SegmentedControl\",\n      props,\n    )\n    const uuid = useId()\n    const {\n      id = uuid,\n      name = `segmented-control-${uuid}`,\n      className,\n      children,\n      defaultValue,\n      isDisabled,\n      disabled = isDisabled,\n      isReadOnly,\n      items = [],\n      readOnly = isReadOnly,\n      value: valueProp,\n      onChange: onChangeProp,\n      ...rest\n    } = omitThemeProps(mergedProps)\n    const containerRef = useRef<HTMLDivElement>(null)\n    const descendants = useDescendants()\n    const [focusedIndex, setFocusedIndex] = useState<number>(-1)\n    const [focusVisible, setFocusVisible] = useState<boolean>(false)\n    const onChangeRef = useCallbackRef(onChangeProp)\n    const [value, setValue] = useControllableState({\n      defaultValue,\n      value: valueProp,\n      onChange: onChangeRef,\n    })\n\n    const onChange = useCallback(\n      (ev: ChangeEvent<HTMLInputElement>) => {\n        if (disabled || readOnly) {\n          ev.preventDefault()\n\n          return\n        }\n\n        setValue(ev.target.value)\n      },\n      [disabled, readOnly, setValue],\n    )\n\n    const onFocus = useCallback(\n      (index: number, skip: boolean) => {\n        if (disabled) return\n\n        if (skip) {\n          const next = descendants.enabledNextValue(index)\n\n          if (next) setFocusedIndex(next.index)\n        } else {\n          setFocusedIndex(index)\n        }\n      },\n      [descendants, disabled],\n    )\n\n    const onBlur = useCallback(() => setFocusedIndex(-1), [])\n\n    const getContainerProps: PropGetter = useCallback(\n      (props = {}, ref = null) => ({\n        \"aria-disabled\": ariaAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        role: \"radiogroup\",\n        ...rest,\n        ...props,\n        id,\n        ref: mergeRefs(containerRef, ref),\n        onBlur: handlerAll(props.onBlur, onBlur),\n      }),\n      [id, disabled, readOnly, onBlur, rest],\n    )\n\n    const getInputProps: RequiredPropGetter<\n      { index: number } & HTMLProps<\"input\">,\n      HTMLUIProps<\"input\">\n    > = useCallback(\n      ({ index, ...props }, ref = null) => {\n        const trulyDisabled = props.disabled ?? disabled\n        const trulyReadOnly = props.readOnly ?? readOnly\n        const checked = props.value === value\n\n        return {\n          ...props,\n          id: `${id}-${index}`,\n          ref,\n          type: \"radio\",\n          name,\n          style: {\n            border: \"0px\",\n            clip: \"rect(0px, 0px, 0px, 0px)\",\n            height: \"1px\",\n            margin: \"-1px\",\n            overflow: \"hidden\",\n            padding: \"0px\",\n            position: \"absolute\",\n            whiteSpace: \"nowrap\",\n            width: \"1px\",\n          },\n          \"aria-disabled\": ariaAttr(trulyDisabled),\n          \"data-checked\": dataAttr(checked),\n          \"data-focus\": dataAttr(index === focusedIndex),\n          \"data-readonly\": dataAttr(trulyReadOnly),\n          checked,\n          disabled: trulyDisabled || trulyReadOnly,\n          readOnly: trulyReadOnly,\n          onChange: handlerAll(props.onChange, (ev) =>\n            !trulyDisabled && !trulyReadOnly\n              ? onChange(ev as ChangeEvent<HTMLInputElement>)\n              : {},\n          ),\n        }\n      },\n      [disabled, readOnly, value, id, name, focusedIndex, onChange],\n    )\n\n    const getLabelProps: RequiredPropGetter<\n      {\n        index: number\n        value: string\n        disabled?: boolean\n        readOnly?: boolean\n      } & HTMLProps<\"label\">,\n      HTMLProps<\"label\">\n    > = useCallback(\n      ({ index, ...props }, ref = null) => {\n        const trulyDisabled = props.disabled ?? disabled\n        const trulyReadOnly = props.readOnly ?? readOnly\n        const checked = props.value === value\n        const focused = index === focusedIndex\n\n        return {\n          ...props,\n          ref,\n          \"aria-disabled\": ariaAttr(trulyDisabled),\n          \"data-checked\": dataAttr(checked),\n          \"data-focus\": dataAttr(focused),\n          \"data-focus-visible\": dataAttr(focused && focusVisible),\n          \"data-readonly\": dataAttr(trulyReadOnly),\n          onFocus: handlerAll(\n            props.onFocus as unknown as FocusEventHandler<HTMLLabelElement>,\n            () => onFocus(index, trulyDisabled || trulyReadOnly || false),\n          ),\n          ...(trulyDisabled || trulyReadOnly\n            ? {\n                _active: {},\n                _focus: {},\n                _focusVisible: {},\n                _hover: {},\n                _invalid: {},\n              }\n            : {}),\n        }\n      },\n      [focusedIndex, disabled, readOnly, focusVisible, onFocus, value],\n    )\n\n    useEffect(() => {\n      return trackFocusVisible(setFocusVisible)\n    }, [])\n\n    const css: CSSUIObject = {\n      alignItems: \"center\",\n      display: \"inline-flex\",\n      ...styles.container,\n    }\n\n    const validChildren = getValidChildren(children)\n    let computedChildren: ReactElement[] = []\n\n    if (!validChildren.length && items.length) {\n      computedChildren = items.map(({ label, value, ...props }, i) => (\n        <SegmentedControlButton key={i} value={value} {...props}>\n          {label}\n        </SegmentedControlButton>\n      ))\n    } else {\n      computedChildren = validChildren\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (value == null && defaultValue == null) {\n      for (const child of computedChildren) {\n        if (child.type !== SegmentedControlButton)\n          if (\n            (child.type as any).displayName !==\n            SegmentedControlButton.displayName\n          )\n            continue\n\n        const value = child.props.value\n\n        setValue(value)\n\n        break\n      }\n    }\n\n    return (\n      <DescendantsContextProvider value={descendants}>\n        <SegmentedControlProvider\n          value={{ styles, value, getInputProps, getLabelProps }}\n        >\n          <LayoutGroup id={id}>\n            <ui.div\n              {...getContainerProps({}, ref)}\n              className={cx(\"ui-segmented-control\", className)}\n              __css={css}\n            >\n              {computedChildren}\n            </ui.div>\n          </LayoutGroup>\n        </SegmentedControlProvider>\n      </DescendantsContextProvider>\n    )\n  },\n)\n\nSegmentedControl.displayName = \"SegmentedControl\"\nSegmentedControl.__ui__ = \"SegmentedControl\"\n\ninterface SegmentedControlButtonOptions {\n  /**\n   * The value of the segmented control button.\n   */\n  value: string\n  /**\n   * Props for motion component.\n   */\n  motionProps?: MotionProps\n  /**\n   * The callback fired when any children radio is checked or unchecked.\n   */\n  onChange?: ChangeEventHandler<HTMLInputElement>\n}\n\nexport interface SegmentedControlButtonProps\n  extends Omit<HTMLUIProps<\"label\">, \"onChange\">,\n    Pick<\n      SegmentedControlProps,\n      \"disabled\" | \"isDisabled\" | \"isReadOnly\" | \"readOnly\"\n    >,\n    SegmentedControlButtonOptions {}\n\nexport const SegmentedControlButton = forwardRef<\n  SegmentedControlButtonProps,\n  \"input\"\n>(\n  (\n    {\n      className,\n      children,\n      isDisabled,\n      disabled = isDisabled,\n      isReadOnly,\n      readOnly = isReadOnly,\n      value,\n      motionProps,\n      onChange,\n      ...rest\n    },\n    ref,\n  ) => {\n    const [, mounted] = useMounted({ rerender: true })\n    const {\n      styles,\n      value: selectedValue,\n      getInputProps,\n      getLabelProps,\n    } = useSegmentedControl()\n    const { index, register } = useDescendant({\n      disabled: disabled || readOnly,\n    })\n    const props = {\n      disabled,\n      index,\n      readOnly,\n      value,\n    }\n    const css: CSSUIObject = {\n      alignItems: \"center\",\n      cursor: \"pointer\",\n      display: \"inline-flex\",\n      flex: \"1 1 0%\",\n      justifyContent: \"center\",\n      position: \"relative\",\n      ...styles.button,\n    }\n    const selected = value === selectedValue\n\n    return (\n      <ui.label\n        {...getLabelProps(props)}\n        className={cx(\"ui-segmented-control__button\", className)}\n        __css={css}\n        {...rest}\n      >\n        <ui.input\n          {...getInputProps({ onChange, ...props }, mergeRefs(register, ref))}\n        />\n        {selected && mounted ? (\n          <SegmentedControlCursor {...motionProps} />\n        ) : null}\n        <ui.span zIndex=\"1\">{children}</ui.span>\n      </ui.label>\n    )\n  },\n)\n\nSegmentedControlButton.displayName = \"SegmentedControlButton\"\nSegmentedControlButton.__ui__ = \"SegmentedControlButton\"\n\ninterface SegmentedControlCursorProps extends MotionProps {\n  className?: string\n}\n\nconst SegmentedControlCursor: FC<SegmentedControlCursorProps> = ({\n  className,\n  transition,\n  ...rest\n}) => {\n  const { styles } = useSegmentedControl()\n\n  const css: CSSUIObject = {\n    h: \"100%\",\n    position: \"absolute\",\n    w: \"100%\",\n    ...styles.cursor,\n  }\n\n  return (\n    <motion.div\n      className={cx(\"ui-segmented-control__cursor\", className)}\n      layoutDependency={false}\n      layoutId=\"cursor\"\n      transition={{\n        type: \"spring\",\n        bounce: 0.15,\n        duration: 0.4,\n        ...transition,\n      }}\n      __css={css}\n      {...rest}\n    />\n  )\n}\n\nSegmentedControlCursor.displayName = \"SegmentedControlCursor\"\nSegmentedControlCursor.__ui__ = \"SegmentedControlCursor\"\n"],"mappings":"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","names":["props","ref","value"]}