import { _ as _define_property } from "@swc/helpers/_/_define_property";
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
import { _ as _type_of } from "@swc/helpers/_/_type_of";
import React, { useCallback } from "react";
import classNames from "classnames";
import { View } from "@tarojs/components";
import { usePropsValue } from "../../hooks/use-props-value";
import { mergeProps } from "../../utils/merge-props";
var defaultProps = {
    options: [],
    onChange: function(value) {}
};
export var Segmented = function(props) {
    var classPrefix = 'nut-segmented';
    var itemClassPrefix = 'nut-segmented-item';
    var mergedProps = mergeProps(defaultProps, props);
    var options = mergedProps.options, onChange = mergedProps.onChange;
    var _usePropsValue = _sliced_to_array(usePropsValue({
        value: mergedProps.value,
        defaultValue: mergedProps.defaultValue,
        finalValue: 0,
        onChange: mergedProps.onChange
    }), 2), value = _usePropsValue[0], setValue = _usePropsValue[1];
    var renderItems = useCallback(function(options, value) {
        return options.map(function(option, index) {
            var optionType = typeof option === "undefined" ? "undefined" : _type_of(option);
            switch(optionType){
                case 'object':
                    // eslint-disable-next-line no-case-declarations
                    var opt = option;
                    var _obj;
                    return /*#__PURE__*/ React.createElement(View, {
                        className: classNames(itemClassPrefix, (_obj = {}, _define_property(_obj, "".concat(itemClassPrefix, "-active"), opt.value === value), _define_property(_obj, "".concat(opt.className), !!opt.className), _obj)),
                        key: opt.value,
                        onClick: function() {
                            if (opt.disabled) return;
                            setValue(option.value);
                        }
                    }, opt.icon ? /*#__PURE__*/ React.createElement(View, {
                        className: "nut-segmented-icon"
                    }, opt.icon) : null, opt.label);
                default:
                    {
                        if (typeof option !== 'string' && typeof option !== 'number') {
                            console.warn('Unsupported option type:', optionType);
                        }
                        return /*#__PURE__*/ React.createElement(View, {
                            className: classNames(itemClassPrefix, _define_property({}, "".concat(itemClassPrefix, "-active"), index === value)),
                            key: option.toString(),
                            onClick: function() {
                                setValue(index);
                            }
                        }, option);
                    }
            }
        });
    }, [
        value
    ]);
    return /*#__PURE__*/ React.createElement(View, {
        className: classNames(classPrefix),
        style: mergedProps.style
    }, renderItems(options, value));
};
